love-0.9.1/0000755000000000000000000000000012316602462012466 5ustar00rootroot00000000000000love-0.9.1/configure0000755000000000000000000246663612316602301014414 0ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for love 0.9.1. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='love' PACKAGE_TARNAME='love' PACKAGE_VERSION='0.9.1' PACKAGE_STRING='love 0.9.1' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="src/love.cpp" ac_default_prefix=/usr # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS LOVE_SUFFIX LOVE_LIBRARY_UTF8_FALSE LOVE_LIBRARY_UTF8_TRUE LOVE_LIBRARY_NOISE1234_FALSE LOVE_LIBRARY_NOISE1234_TRUE LOVE_LIBRARY_LUASOCKET_FALSE LOVE_LIBRARY_LUASOCKET_TRUE LOVE_LIBRARY_ENET_FALSE LOVE_LIBRARY_ENET_TRUE LOVE_LIBRARY_DDSPARSE_FALSE LOVE_LIBRARY_DDSPARSE_TRUE LOVE_LIBRARY_WUFF_FALSE LOVE_LIBRARY_WUFF_TRUE LOVE_LIBRARY_BOX2D_FALSE LOVE_LIBRARY_BOX2D_TRUE LOVE_IMPLEMENTATION_WINDOW_SDL_FALSE LOVE_IMPLEMENTATION_WINDOW_SDL_TRUE LOVE_MODULE_WINDOW_FALSE LOVE_MODULE_WINDOW_TRUE LOVE_IMPLEMENTATION_TIMER_SDL_FALSE LOVE_IMPLEMENTATION_TIMER_SDL_TRUE LOVE_MODULE_TIMER_FALSE LOVE_MODULE_TIMER_TRUE LOVE_IMPLEMENTATION_THREAD_SDL_FALSE LOVE_IMPLEMENTATION_THREAD_SDL_TRUE LOVE_MODULE_THREAD_FALSE LOVE_MODULE_THREAD_TRUE LOVE_IMPLEMENTATION_SYSTEM_SDL_FALSE LOVE_IMPLEMENTATION_SYSTEM_SDL_TRUE LOVE_MODULE_SYSTEM_FALSE LOVE_MODULE_SYSTEM_TRUE LOVE_IMPLEMENTATION_SOUND_LULLABY_FALSE LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE LOVE_MODULE_SOUND_FALSE LOVE_MODULE_SOUND_TRUE LOVE_IMPLEMENTATION_PHYSICS_BOX2D_FALSE LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE LOVE_MODULE_PHYSICS_FALSE LOVE_MODULE_PHYSICS_TRUE LOVE_IMPLEMENTATION_MOUSE_SDL_FALSE LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE LOVE_MODULE_MOUSE_FALSE LOVE_MODULE_MOUSE_TRUE LOVE_MODULE_MATH_FALSE LOVE_MODULE_MATH_TRUE LOVE_MODULE_LOVE_FALSE LOVE_MODULE_LOVE_TRUE LOVE_IMPLEMENTATION_KEYBOARD_SDL_FALSE LOVE_IMPLEMENTATION_KEYBOARD_SDL_TRUE LOVE_MODULE_KEYBOARD_FALSE LOVE_MODULE_KEYBOARD_TRUE LOVE_IMPLEMENTATION_JOYSTICK_SDL_FALSE LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE LOVE_MODULE_JOYSTICK_FALSE LOVE_MODULE_JOYSTICK_TRUE LOVE_IMPLEMENTATION_IMAGE_MAGPIE_FALSE LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE LOVE_MODULE_IMAGE_FALSE LOVE_MODULE_IMAGE_TRUE LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_FALSE LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE LOVE_MODULE_GRAPHICS_FALSE LOVE_MODULE_GRAPHICS_TRUE LOVE_IMPLEMENTATION_FONT_FREETYPE_FALSE LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE LOVE_MODULE_FONT_FALSE LOVE_MODULE_FONT_TRUE LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_FALSE LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE LOVE_MODULE_FILESYSTEM_FALSE LOVE_MODULE_FILESYSTEM_TRUE LOVE_IMPLEMENTATION_EVENT_SDL_FALSE LOVE_IMPLEMENTATION_EVENT_SDL_TRUE LOVE_MODULE_EVENT_FALSE LOVE_MODULE_EVENT_TRUE LOVE_IMPLEMENTATION_AUDIO_OPENAL_FALSE LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE LOVE_IMPLEMENTATION_AUDIO_NULL_FALSE LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE LOVE_MODULE_AUDIO_FALSE LOVE_MODULE_AUDIO_TRUE LOVE_INCLUDES LUA_EXECUTABLE LOVE_TARGET_OSX_FALSE LOVE_TARGET_OSX_TRUE LOVE_NOMPG123_FALSE LOVE_NOMPG123_TRUE LOVE_BUILD_EXE_FALSE LOVE_BUILD_EXE_TRUE FILE_OFFSET vorbisfile_LIBS vorbisfile_CFLAGS libmodplug_LIBS libmodplug_CFLAGS devil_LIBS devil_CFLAGS openal_LIBS openal_CFLAGS freetype2_LIBS freetype2_CFLAGS lua_LIBS lua_CFLAGS SDL2_CONFIG SDL_LIBS SDL_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG ac_ct_OBJCXX OBJCXXFLAGS OBJCXX CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC ac_ct_AR AR AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock enable_osx with_lua with_luaversion with_sdl_prefix with_sdl_exec_prefix enable_sdltest enable_mpg123 enable_gme enable_exe enable_module_audio enable_implementation_audio_null enable_implementation_audio_openal enable_module_event enable_implementation_event_sdl enable_module_filesystem enable_implementation_filesystem_physfs enable_module_font enable_implementation_font_freetype enable_module_graphics enable_implementation_graphics_opengl enable_module_image enable_implementation_image_magpie enable_module_joystick enable_implementation_joystick_sdl enable_module_keyboard enable_implementation_keyboard_sdl enable_module_love enable_module_math enable_module_mouse enable_implementation_mouse_sdl enable_module_physics enable_implementation_physics_box2d enable_module_sound enable_implementation_sound_lullaby enable_module_system enable_implementation_system_sdl enable_module_thread enable_implementation_thread_sdl enable_module_timer enable_implementation_timer_sdl enable_module_window enable_implementation_window_sdl enable_library_Box2D enable_library_Wuff enable_library_ddsparse enable_library_enet enable_library_luasocket enable_library_noise1234 enable_library_utf8 ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC CXXCPP OBJCXX OBJCXXFLAGS PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR SDL_CFLAGS SDL_LIBS lua_CFLAGS lua_LIBS freetype2_CFLAGS freetype2_LIBS openal_CFLAGS openal_LIBS devil_CFLAGS devil_LIBS libmodplug_CFLAGS libmodplug_LIBS vorbisfile_CFLAGS vorbisfile_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures love 0.9.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/love] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of love 0.9.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: `make V=1') --disable-silent-rules verbose build output (undo: `make V=0') --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-osx Compile platform-specific files for OSX --disable-sdltest Do not try to compile and run a test SDL program --disable-mpg123 Disable mp3 support, for patent-free builds --enable-gme Enable GME support, for more chiptuney goodness --disable-exe Disable building of executable launcher --disable-module-audio Turn off module love.audio --disable-implementation-audio-null Turn off implementation love.audio.null --disable-implementation-audio-openal Turn off implementation love.audio.openal --disable-module-event Turn off module love.event --disable-implementation-event-sdl Turn off implementation love.event.sdl --disable-module-filesystem Turn off module love.filesystem --disable-implementation-filesystem-physfs Turn off implementation love.filesystem.physfs --disable-module-font Turn off module love.font --disable-implementation-font-freetype Turn off implementation love.font.freetype --disable-module-graphics Turn off module love.graphics --disable-implementation-graphics-opengl Turn off implementation love.graphics.opengl --disable-module-image Turn off module love.image --disable-implementation-image-magpie Turn off implementation love.image.magpie --disable-module-joystick Turn off module love.joystick --disable-implementation-joystick-sdl Turn off implementation love.joystick.sdl --disable-module-keyboard Turn off module love.keyboard --disable-implementation-keyboard-sdl Turn off implementation love.keyboard.sdl --disable-module-love Turn off module love.love --disable-module-math Turn off module love.math --disable-module-mouse Turn off module love.mouse --disable-implementation-mouse-sdl Turn off implementation love.mouse.sdl --disable-module-physics Turn off module love.physics --disable-implementation-physics-box2d Turn off implementation love.physics.box2d --disable-module-sound Turn off module love.sound --disable-implementation-sound-lullaby Turn off implementation love.sound.lullaby --disable-module-system Turn off module love.system --disable-implementation-system-sdl Turn off implementation love.system.sdl --disable-module-thread Turn off module love.thread --disable-implementation-thread-sdl Turn off implementation love.thread.sdl --disable-module-timer Turn off module love.timer --disable-implementation-timer-sdl Turn off implementation love.timer.sdl --disable-module-window Turn off module love.window --disable-implementation-window-sdl Turn off implementation love.window.sdl --disable-library-Box2D Turn off library love.Box2D --disable-library-Wuff Turn off library love.Wuff --disable-library-ddsparse Turn off library love.ddsparse --disable-library-enet Turn off library love.enet --disable-library-luasocket Turn off library love.luasocket --disable-library-noise1234 Turn off library love.noise1234 --disable-library-utf8 Turn off library love.utf8 Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-lua Select the lua implementation --with-luaversion Select the lua version --with-sdl-prefix=PFX Prefix where SDL is installed (optional) --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor OBJCXX Objective C++ compiler command OBJCXXFLAGS Objective C++ compiler flags PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path SDL_CFLAGS C compiler flags for SDL, overriding pkg-config SDL_LIBS linker flags for SDL, overriding pkg-config lua_CFLAGS C compiler flags for lua, overriding pkg-config lua_LIBS linker flags for lua, overriding pkg-config freetype2_CFLAGS C compiler flags for freetype2, overriding pkg-config freetype2_LIBS linker flags for freetype2, overriding pkg-config openal_CFLAGS C compiler flags for openal, overriding pkg-config openal_LIBS linker flags for openal, overriding pkg-config devil_CFLAGS C compiler flags for devil, overriding pkg-config devil_LIBS linker flags for devil, overriding pkg-config libmodplug_CFLAGS C compiler flags for libmodplug, overriding pkg-config libmodplug_LIBS linker flags for libmodplug, overriding pkg-config vorbisfile_CFLAGS C compiler flags for vorbisfile, overriding pkg-config vorbisfile_LIBS linker flags for vorbisfile, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF love configure 0.9.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_objcxx_try_compile LINENO # ------------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_objcxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_objcxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_objcxx_try_compile # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_run # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel # ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES # --------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_cxx_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_type cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by love $as_me 0.9.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" ac_aux_dir= for ac_dir in platform/unix "$srcdir"/platform/unix; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in platform/unix \"$srcdir\"/platform/unix" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='love' VERSION='0.9.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 $as_echo_n "checking how to create a ustar tar archive... " >&6; } # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar plaintar pax cpio none' _am_tools=${am_cv_prog_tar_ustar-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x ustar -w "$$tardir"' am__tar_='pax -L -x ustar -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H ustar -L' am__tar_='find "$tardir" -print | cpio -o -H ustar -L' am__untar='cpio -i -H ustar -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_ustar}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -rf conftest.dir if test -s conftest.tar; then { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir if ${am_cv_prog_tar_ustar+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_prog_tar_ustar=$_am_tool fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 $as_echo "$am_cv_prog_tar_ustar" >&6; } # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi if test -n "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} { $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 $as_echo_n "checking the archiver ($AR) interface... " >&6; } if ${am_cv_ar_interface+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_ar_interface=ar cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int some_variable = 0; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 $as_echo "$am_cv_ar_interface" >&6; } case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) as_fn_error $? "could not determine $AR interface" "$LINENO" 5 ;; esac case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ac_config_commands="$ac_config_commands libtool" # Only expand once: ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; linux* | k*bsd*-gnu | gnu*) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed ac_ext=mm ac_cpp='$OBJCXXCPP $CPPFLAGS' ac_compile='$OBJCXX -c $OBJCXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$OBJCXX -o conftest$ac_exeext $OBJCXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_objcxx_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in g++ objc++ objcxx c++ CXX do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJCXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJCXX"; then ac_cv_prog_OBJCXX="$OBJCXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJCXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJCXX=$ac_cv_prog_OBJCXX if test -n "$OBJCXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCXX" >&5 $as_echo "$OBJCXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$OBJCXX" && break done fi if test -z "$OBJCXX"; then ac_ct_OBJCXX=$OBJCXX for ac_prog in g++ objc++ objcxx c++ CXX do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJCXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJCXX"; then ac_cv_prog_ac_ct_OBJCXX="$ac_ct_OBJCXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJCXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJCXX=$ac_cv_prog_ac_ct_OBJCXX if test -n "$ac_ct_OBJCXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJCXX" >&5 $as_echo "$ac_ct_OBJCXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_OBJCXX" && break done if test "x$ac_ct_OBJCXX" = x; then OBJCXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJCXX=$ac_ct_OBJCXX fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for Objective C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Objective C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU Objective C++ compiler... " >&6; } if ${ac_cv_objcxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_objcxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_objcxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objcxx_compiler_gnu" >&5 $as_echo "$ac_cv_objcxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GOBJCXX=yes else GOBJCXX= fi ac_test_OBJCXXFLAGS=${OBJCXXFLAGS+set} ac_save_OBJCXXFLAGS=$OBJCXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $OBJCXX accepts -g" >&5 $as_echo_n "checking whether $OBJCXX accepts -g... " >&6; } if ${ac_cv_prog_objcxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_objcxx_werror_flag=$ac_objcxx_werror_flag ac_objcxx_werror_flag=yes ac_cv_prog_objcxx_g=no OBJCXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_objcxx_try_compile "$LINENO"; then : ac_cv_prog_objcxx_g=yes else OBJCXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_objcxx_try_compile "$LINENO"; then : else ac_objcxx_werror_flag=$ac_save_objcxx_werror_flag OBJCXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_objcxx_try_compile "$LINENO"; then : ac_cv_prog_objcxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_objcxx_werror_flag=$ac_save_objcx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_objcxx_g" >&5 $as_echo "$ac_cv_prog_objcxx_g" >&6; } if test "$ac_test_OBJCXXFLAGS" = set; then OBJCXXFLAGS=$ac_save_OBJCXXFLAGS elif test $ac_cv_prog_objcxx_g = yes; then if test "$GOBJCXX" = yes; then OBJCXXFLAGS="-g -O2" else OBJCXXFLAGS="-g" fi else if test "$GOBJCXX" = yes; then OBJCXXFLAGS="-O2" else OBJCXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu includes= # C++11 support cxx11name="no" # WARNING: NOT REENTRANT aclove_cxx_flag_test_save_cflags="$CXXFLAGS" CXXFLAGS="-std=c++0x" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports flag -std=c++0x" >&5 $as_echo_n "checking whether $CXX supports flag -std=c++0x... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; cxx11name="c++0x" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$aclove_cxx_flag_test_save_cflags" # WARNING: NOT REENTRANT aclove_cxx_flag_test_save_cflags="$CXXFLAGS" CXXFLAGS="-std=c++11" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports flag -std=c++11" >&5 $as_echo_n "checking whether $CXX supports flag -std=c++11... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; cxx11name="c++11" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$aclove_cxx_flag_test_save_cflags" if test "x$cxx11name" = xno; then : as_fn_error $? "LÖVE needs a C++ compiler with C++11 support" "$LINENO" 5 else CXXFLAGS="$CXXFLAGS -std=$cxx11name" fi # Allow people on OSX to use autotools, they need their platform files # Check whether --enable-osx was given. if test "${enable_osx+set}" = set; then : enableval=$enable_osx; else enable_osx=no fi if test "x$enable_osx" = xno; then : else #else ac_cv_search_glLoadIdentity="-framework OpenGL" LDFLAGS="${LDFLAGS} -framework CoreFoundation -framework Cocoa" CPPFLAGS="${CPPFLAGS} -I../platform/macosx" fi # --with-lua and --with-luaversion # Check whether --with-lua was given. if test "${with_lua+set}" = set; then : withval=$with_lua; else with_lua=luajit fi # Check whether --with-luaversion was given. if test "${with_luaversion+set}" = set; then : withval=$with_luaversion; else with_luaversion=5.1 fi # pkg-config libraries if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # Check whether --with-sdl-prefix was given. if test "${with_sdl_prefix+set}" = set; then : withval=$with_sdl_prefix; sdl_prefix="$withval" else sdl_prefix="" fi # Check whether --with-sdl-exec-prefix was given. if test "${with_sdl_exec_prefix+set}" = set; then : withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" else sdl_exec_prefix="" fi # Check whether --enable-sdltest was given. if test "${enable_sdltest+set}" = set; then : enableval=$enable_sdltest; else enable_sdltest=yes fi min_sdl_version=2.0.0 if test "x$sdl_prefix$sdl_exec_prefix" = x ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL" >&5 $as_echo_n "checking for SDL... " >&6; } if test -n "$SDL_CFLAGS"; then pkg_cv_SDL_CFLAGS="$SDL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl2 >= \$min_sdl_version\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl2 >= $min_sdl_version") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SDL_CFLAGS=`$PKG_CONFIG --cflags "sdl2 >= $min_sdl_version" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$SDL_LIBS"; then pkg_cv_SDL_LIBS="$SDL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl2 >= \$min_sdl_version\""; } >&5 ($PKG_CONFIG --exists --print-errors "sdl2 >= $min_sdl_version") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_SDL_LIBS=`$PKG_CONFIG --libs "sdl2 >= $min_sdl_version" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then SDL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "sdl2 >= $min_sdl_version" 2>&1` else SDL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "sdl2 >= $min_sdl_version" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$SDL_PKG_ERRORS" >&5 sdl_pc=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } sdl_pc=no else SDL_CFLAGS=$pkg_cv_SDL_CFLAGS SDL_LIBS=$pkg_cv_SDL_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } sdl_pc=yes fi else sdl_pc=no if test x$sdl_exec_prefix != x ; then sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" if test x${SDL2_CONFIG+set} != xset ; then SDL2_CONFIG=$sdl_exec_prefix/bin/sdl2-config fi fi if test x$sdl_prefix != x ; then sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" if test x${SDL2_CONFIG+set} != xset ; then SDL2_CONFIG=$sdl_prefix/bin/sdl2-config fi fi fi if test "x$sdl_pc" = xyes ; then no_sdl="" SDL2_CONFIG="pkg-config sdl2" else as_save_PATH="$PATH" if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi # Extract the first word of "sdl2-config", so it can be a program name with args. set dummy sdl2-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SDL2_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $SDL2_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_SDL2_CONFIG="$SDL2_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SDL2_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SDL2_CONFIG" && ac_cv_path_SDL2_CONFIG="no" ;; esac fi SDL2_CONFIG=$ac_cv_path_SDL2_CONFIG if test -n "$SDL2_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL2_CONFIG" >&5 $as_echo "$SDL2_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi PATH="$as_save_PATH" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL - version >= $min_sdl_version" >&5 $as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } no_sdl="" if test "$SDL2_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL2_CONFIG $sdl_config_args --cflags` SDL_LIBS=`$SDL2_CONFIG $sdl_config_args --libs` sdl_major_version=`$SDL2_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` sdl_minor_version=`$SDL2_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` sdl_micro_version=`$SDL2_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" rm -f conf.sdltest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl2-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl2-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl2-config was wrong, set the environment variable SDL2_CONFIG\n"); printf("*** to point to the correct copy of sdl2-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else no_sdl=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$no_sdl" = x ; then : else if test "$SDL2_CONFIG" = "no" ; then echo "*** The sdl2-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL2_CONFIG environment variable to the" echo "*** full path to sdl2-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main int main () { return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl2-config script: $SDL2_CONFIG" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" as_fn_error $? "LÖVE needs \"SDL 2\", please install \"SDL 2\" with development files and try again" "$LINENO" 5 fi rm -f conf.sdltest pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lua" >&5 $as_echo_n "checking for lua... " >&6; } if test -n "$lua_CFLAGS"; then pkg_cv_lua_CFLAGS="$lua_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\${with_lua}\${with_luaversion}\""; } >&5 ($PKG_CONFIG --exists --print-errors "${with_lua}${with_luaversion}") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_lua_CFLAGS=`$PKG_CONFIG --cflags "${with_lua}${with_luaversion}" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$lua_LIBS"; then pkg_cv_lua_LIBS="$lua_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\${with_lua}\${with_luaversion}\""; } >&5 ($PKG_CONFIG --exists --print-errors "${with_lua}${with_luaversion}") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_lua_LIBS=`$PKG_CONFIG --libs "${with_lua}${with_luaversion}" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then lua_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "${with_lua}${with_luaversion}" 2>&1` else lua_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "${with_lua}${with_luaversion}" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$lua_PKG_ERRORS" >&5 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lua" >&5 $as_echo_n "checking for lua... " >&6; } if test -n "$lua_CFLAGS"; then pkg_cv_lua_CFLAGS="$lua_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\${with_lua}\""; } >&5 ($PKG_CONFIG --exists --print-errors "${with_lua}") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_lua_CFLAGS=`$PKG_CONFIG --cflags "${with_lua}" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$lua_LIBS"; then pkg_cv_lua_LIBS="$lua_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\${with_lua}\""; } >&5 ($PKG_CONFIG --exists --print-errors "${with_lua}") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_lua_LIBS=`$PKG_CONFIG --libs "${with_lua}" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then lua_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "${with_lua}" 2>&1` else lua_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "${with_lua}" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$lua_PKG_ERRORS" >&5 lua_found=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } lua_found=no else lua_CFLAGS=$pkg_cv_lua_CFLAGS lua_LIBS=$pkg_cv_lua_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } lua_found=yes fi elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lua" >&5 $as_echo_n "checking for lua... " >&6; } if test -n "$lua_CFLAGS"; then pkg_cv_lua_CFLAGS="$lua_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\${with_lua}\""; } >&5 ($PKG_CONFIG --exists --print-errors "${with_lua}") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_lua_CFLAGS=`$PKG_CONFIG --cflags "${with_lua}" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$lua_LIBS"; then pkg_cv_lua_LIBS="$lua_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\${with_lua}\""; } >&5 ($PKG_CONFIG --exists --print-errors "${with_lua}") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_lua_LIBS=`$PKG_CONFIG --libs "${with_lua}" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then lua_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "${with_lua}" 2>&1` else lua_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "${with_lua}" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$lua_PKG_ERRORS" >&5 lua_found=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } lua_found=no else lua_CFLAGS=$pkg_cv_lua_CFLAGS lua_LIBS=$pkg_cv_lua_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } lua_found=yes fi else lua_CFLAGS=$pkg_cv_lua_CFLAGS lua_LIBS=$pkg_cv_lua_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } lua_found=yes fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype2" >&5 $as_echo_n "checking for freetype2... " >&6; } if test -n "$freetype2_CFLAGS"; then pkg_cv_freetype2_CFLAGS="$freetype2_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_freetype2_CFLAGS=`$PKG_CONFIG --cflags "freetype2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$freetype2_LIBS"; then pkg_cv_freetype2_LIBS="$freetype2_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5 ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_freetype2_LIBS=`$PKG_CONFIG --libs "freetype2" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then freetype2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "freetype2" 2>&1` else freetype2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "freetype2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$freetype2_PKG_ERRORS" >&5 as_fn_error $? "LÖVE needs \"FreeType2\", please install \"FreeType2\" with development files and try again" "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "LÖVE needs \"FreeType2\", please install \"FreeType2\" with development files and try again" "$LINENO" 5 else freetype2_CFLAGS=$pkg_cv_freetype2_CFLAGS freetype2_LIBS=$pkg_cv_freetype2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openal" >&5 $as_echo_n "checking for openal... " >&6; } if test -n "$openal_CFLAGS"; then pkg_cv_openal_CFLAGS="$openal_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openal\""; } >&5 ($PKG_CONFIG --exists --print-errors "openal") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_openal_CFLAGS=`$PKG_CONFIG --cflags "openal" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$openal_LIBS"; then pkg_cv_openal_LIBS="$openal_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openal\""; } >&5 ($PKG_CONFIG --exists --print-errors "openal") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_openal_LIBS=`$PKG_CONFIG --libs "openal" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then openal_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openal" 2>&1` else openal_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openal" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$openal_PKG_ERRORS" >&5 as_fn_error $? "LÖVE needs \"OpenAL\", please install \"OpenAL\" with development files and try again" "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "LÖVE needs \"OpenAL\", please install \"OpenAL\" with development files and try again" "$LINENO" 5 else openal_CFLAGS=$pkg_cv_openal_CFLAGS openal_LIBS=$pkg_cv_openal_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for devil" >&5 $as_echo_n "checking for devil... " >&6; } if test -n "$devil_CFLAGS"; then pkg_cv_devil_CFLAGS="$devil_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"IL\""; } >&5 ($PKG_CONFIG --exists --print-errors "IL") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_devil_CFLAGS=`$PKG_CONFIG --cflags "IL" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$devil_LIBS"; then pkg_cv_devil_LIBS="$devil_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"IL\""; } >&5 ($PKG_CONFIG --exists --print-errors "IL") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_devil_LIBS=`$PKG_CONFIG --libs "IL" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then devil_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "IL" 2>&1` else devil_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "IL" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$devil_PKG_ERRORS" >&5 as_fn_error $? "LÖVE needs \"DevIL\", please install \"DevIL\" with development files and try again" "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "LÖVE needs \"DevIL\", please install \"DevIL\" with development files and try again" "$LINENO" 5 else devil_CFLAGS=$pkg_cv_devil_CFLAGS devil_LIBS=$pkg_cv_devil_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libmodplug" >&5 $as_echo_n "checking for libmodplug... " >&6; } if test -n "$libmodplug_CFLAGS"; then pkg_cv_libmodplug_CFLAGS="$libmodplug_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmodplug\""; } >&5 ($PKG_CONFIG --exists --print-errors "libmodplug") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_libmodplug_CFLAGS=`$PKG_CONFIG --cflags "libmodplug" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$libmodplug_LIBS"; then pkg_cv_libmodplug_LIBS="$libmodplug_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libmodplug\""; } >&5 ($PKG_CONFIG --exists --print-errors "libmodplug") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_libmodplug_LIBS=`$PKG_CONFIG --libs "libmodplug" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then libmodplug_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libmodplug" 2>&1` else libmodplug_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libmodplug" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$libmodplug_PKG_ERRORS" >&5 as_fn_error $? "LÖVE needs \"libmodplug\", please install \"libmodplug\" with development files and try again" "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "LÖVE needs \"libmodplug\", please install \"libmodplug\" with development files and try again" "$LINENO" 5 else libmodplug_CFLAGS=$pkg_cv_libmodplug_CFLAGS libmodplug_LIBS=$pkg_cv_libmodplug_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vorbisfile" >&5 $as_echo_n "checking for vorbisfile... " >&6; } if test -n "$vorbisfile_CFLAGS"; then pkg_cv_vorbisfile_CFLAGS="$vorbisfile_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisfile\""; } >&5 ($PKG_CONFIG --exists --print-errors "vorbisfile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_vorbisfile_CFLAGS=`$PKG_CONFIG --cflags "vorbisfile" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$vorbisfile_LIBS"; then pkg_cv_vorbisfile_LIBS="$vorbisfile_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisfile\""; } >&5 ($PKG_CONFIG --exists --print-errors "vorbisfile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_vorbisfile_LIBS=`$PKG_CONFIG --libs "vorbisfile" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then vorbisfile_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "vorbisfile" 2>&1` else vorbisfile_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "vorbisfile" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$vorbisfile_PKG_ERRORS" >&5 as_fn_error $? "LÖVE needs \"libvorbis and libvorbisfile\", please install \"libvorbis and libvorbisfile\" with development files and try again" "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "LÖVE needs \"libvorbis and libvorbisfile\", please install \"libvorbis and libvorbisfile\" with development files and try again" "$LINENO" 5 else vorbisfile_CFLAGS=$pkg_cv_vorbisfile_CFLAGS vorbisfile_LIBS=$pkg_cv_vorbisfile_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi # Other libraries { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sqrt" >&5 $as_echo_n "checking for library containing sqrt... " >&6; } if ${ac_cv_search_sqrt+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sqrt (); int main () { return sqrt (); ; return 0; } _ACEOF for ac_lib in '' m; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_sqrt=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_sqrt+:} false; then : break fi done if ${ac_cv_search_sqrt+:} false; then : else ac_cv_search_sqrt=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sqrt" >&5 $as_echo "$ac_cv_search_sqrt" >&6; } ac_res=$ac_cv_search_sqrt if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "LÖVE needs \"the C math library\", please install \"the C math library\" with development files and try again" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing PHYSFS_init" >&5 $as_echo_n "checking for library containing PHYSFS_init... " >&6; } if ${ac_cv_search_PHYSFS_init+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char PHYSFS_init (); int main () { return PHYSFS_init (); ; return 0; } _ACEOF for ac_lib in '' physfs; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_PHYSFS_init=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_PHYSFS_init+:} false; then : break fi done if ${ac_cv_search_PHYSFS_init+:} false; then : else ac_cv_search_PHYSFS_init=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_PHYSFS_init" >&5 $as_echo "$ac_cv_search_PHYSFS_init" >&6; } ac_res=$ac_cv_search_PHYSFS_init if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "LÖVE needs \"PhysicsFS\", please install \"PhysicsFS\" with development files and try again" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing glLoadIdentity" >&5 $as_echo_n "checking for library containing glLoadIdentity... " >&6; } if ${ac_cv_search_glLoadIdentity+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char glLoadIdentity (); int main () { return glLoadIdentity (); ; return 0; } _ACEOF for ac_lib in '' GL; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_glLoadIdentity=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_glLoadIdentity+:} false; then : break fi done if ${ac_cv_search_glLoadIdentity+:} false; then : else ac_cv_search_glLoadIdentity=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_glLoadIdentity" >&5 $as_echo "$ac_cv_search_glLoadIdentity" >&6; } ac_res=$ac_cv_search_glLoadIdentity if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "LÖVE needs \"OpenGL\", please install \"OpenGL\" with development files and try again" "$LINENO" 5 fi # Lua, treated seperately because of --with-lua if test "x$with_luaversion" = x5.2; then : luatest=lua_version else luatest=lua_pcall fi # use lua_version for 5.2 if test "x$lua_found" = xyes; then : #if luaheaders_found=yes { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ${luatest}" >&5 $as_echo_n "checking for library containing ${luatest}... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lua_LIBS}" >&5 $as_echo "${lua_LIBS}" >&6; } else #else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find pkg-config definition for ${with_lua}${with_luaversion} or ${with_lua}, falling back to manual detection" >&5 $as_echo "$as_me: WARNING: Could not find pkg-config definition for ${with_lua}${with_luaversion} or ${with_lua}, falling back to manual detection" >&2;} as_ac_Search=`$as_echo "ac_cv_search_$luatest" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing $luatest" >&5 $as_echo_n "checking for library containing $luatest... " >&6; } if eval \${$as_ac_Search+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $luatest (); int main () { return $luatest (); ; return 0; } _ACEOF for ac_lib in '' "${with_lua}${with_luaversion}" "${with_lua}"; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : eval "$as_ac_Search=\$ac_res" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if eval \${$as_ac_Search+:} false; then : break fi done if eval \${$as_ac_Search+:} false; then : else eval "$as_ac_Search=no" fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi eval ac_res=\$$as_ac_Search { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval ac_res=\$$as_ac_Search if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "LÖVE needs \"$with_lua\", please install \"$with_lua\" with development files and try again" "$LINENO" 5 fi luaheaders_found=no as_ac_Header=`$as_echo "ac_cv_header_"${with_lua}${with_luaversion}/lua.h"" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" ""${with_lua}${with_luaversion}/lua.h"" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}${with_luaversion}" fi as_ac_Header=`$as_echo "ac_cv_header_"${with_lua}/lua.h"" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" ""${with_lua}/lua.h"" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}" fi fi if test "x$luaheaders_found" = xyes; then : else #else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not locate lua headers for ${with_lua}${with_luaversion} or ${with_lua}, you probably need to specify them with CPPFLAGS" >&5 $as_echo "$as_me: WARNING: Could not locate lua headers for ${with_lua}${with_luaversion} or ${with_lua}, you probably need to specify them with CPPFLAGS" >&2;} fi # mpg123, treated seperately because it can be disabled (default on) # also not pkg-config because of the FILE_OFFSET_BITS.. bit # Check whether --enable-mpg123 was given. if test "${enable_mpg123+set}" = set; then : enableval=$enable_mpg123; else enable_mpg123=yes fi if test "x$enable_mpg123" = xno; then : $as_echo "#define LOVE_NOMPG123 /**/" >>confdefs.h else # else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing mpg123_open_feed" >&5 $as_echo_n "checking for library containing mpg123_open_feed... " >&6; } if ${ac_cv_search_mpg123_open_feed+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char mpg123_open_feed (); int main () { return mpg123_open_feed (); ; return 0; } _ACEOF for ac_lib in '' mpg123; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_mpg123_open_feed=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_mpg123_open_feed+:} false; then : break fi done if ${ac_cv_search_mpg123_open_feed+:} false; then : else ac_cv_search_mpg123_open_feed=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_mpg123_open_feed" >&5 $as_echo "$ac_cv_search_mpg123_open_feed" >&6; } ac_res=$ac_cv_search_mpg123_open_feed if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "LÖVE needs \"libmpg123\", please install \"libmpg123\" with development files and try again" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing mpg123_seek_64" >&5 $as_echo_n "checking for library containing mpg123_seek_64... " >&6; } if ${ac_cv_search_mpg123_seek_64+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char mpg123_seek_64 (); int main () { return mpg123_seek_64 (); ; return 0; } _ACEOF for ac_lib in '' mpg123; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_mpg123_seek_64=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_mpg123_seek_64+:} false; then : break fi done if ${ac_cv_search_mpg123_seek_64+:} false; then : else ac_cv_search_mpg123_seek_64=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_mpg123_seek_64" >&5 $as_echo "$ac_cv_search_mpg123_seek_64" >&6; } ac_res=$ac_cv_search_mpg123_seek_64 if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" FILE_OFFSET=-D_FILE_OFFSET_BITS=64 fi fi # GME, treated seperately because it can be enabled (default off) # Check whether --enable-gme was given. if test "${enable_gme+set}" = set; then : enableval=$enable_gme; else enable_gme=no fi if test "x$enable_gme" = xyes; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gme_open_data" >&5 $as_echo_n "checking for library containing gme_open_data... " >&6; } if ${ac_cv_search_gme_open_data+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gme_open_data (); int main () { return gme_open_data (); ; return 0; } _ACEOF for ac_lib in '' gme; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_search_gme_open_data=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_gme_open_data+:} false; then : break fi done if ${ac_cv_search_gme_open_data+:} false; then : else ac_cv_search_gme_open_data=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gme_open_data" >&5 $as_echo "$ac_cv_search_gme_open_data" >&6; } ac_res=$ac_cv_search_gme_open_data if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else as_fn_error $? "LÖVE needs \"gme\", please install \"gme\" with development files and try again" "$LINENO" 5 fi $as_echo "#define LOVE_SUPPORT_GME /**/" >>confdefs.h ac_fn_cxx_check_header_mongrel "$LINENO" "gme/gme.h" "ac_cv_header_gme_gme_h" "$ac_includes_default" if test "x$ac_cv_header_gme_gme_h" = xyes; then : includes="$includes -I/usr/include/gme" fi fi # libenet check for socklen_t ac_fn_cxx_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "#include #include " if test "x$ac_cv_type_socklen_t" = xyes; then : $as_echo "#define HAS_SOCKLEN_T 1" >>confdefs.h fi # Optionally build the executable (default on) # Check whether --enable-exe was given. if test "${enable_exe+set}" = set; then : enableval=$enable_exe; else enable_exe=yes fi if test "x$enable_exe" = xno; then : else #else $as_echo "#define LOVE_BUILD_EXE /**/" >>confdefs.h fi if test "x$enable_exe" != xno; then LOVE_BUILD_EXE_TRUE= LOVE_BUILD_EXE_FALSE='#' else LOVE_BUILD_EXE_TRUE='#' LOVE_BUILD_EXE_FALSE= fi if test "x$enable_mpg123" = xno; then LOVE_NOMPG123_TRUE= LOVE_NOMPG123_FALSE='#' else LOVE_NOMPG123_TRUE='#' LOVE_NOMPG123_FALSE= fi if test "x$enable_osx" != xno; then LOVE_TARGET_OSX_TRUE= LOVE_TARGET_OSX_FALSE='#' else LOVE_TARGET_OSX_TRUE='#' LOVE_TARGET_OSX_FALSE= fi # Automatic script file rebuilding for ac_prog in "${with_lua}${with_luaversion}" "${with_lua}" "lua" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LUA_EXECUTABLE+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LUA_EXECUTABLE"; then ac_cv_prog_LUA_EXECUTABLE="$LUA_EXECUTABLE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LUA_EXECUTABLE="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LUA_EXECUTABLE=$ac_cv_prog_LUA_EXECUTABLE if test -n "$LUA_EXECUTABLE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LUA_EXECUTABLE" >&5 $as_echo "$LUA_EXECUTABLE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LUA_EXECUTABLE" && break done test -n "$LUA_EXECUTABLE" || LUA_EXECUTABLE=":" if test "x$LUA_EXECUTABLE" = x:; then : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Did not find a lua executable, you may need to update the scripts manually if you change them" >&5 $as_echo "$as_me: WARNING: Did not find a lua executable, you may need to update the scripts manually if you change them" >&2;} fi # Set our includes as automake variable LOVE_INCLUDES="$includes" # Check whether --enable-module-audio was given. if test "${enable_module_audio+set}" = set; then : enableval=$enable_module_audio; else enable_audio=true fi if test x"$enable_audio" = xtrue; then $as_echo "#define LOVE_ENABLE_AUDIO /**/" >>confdefs.h fi if test x$enable_audio = xtrue; then LOVE_MODULE_AUDIO_TRUE= LOVE_MODULE_AUDIO_FALSE='#' else LOVE_MODULE_AUDIO_TRUE='#' LOVE_MODULE_AUDIO_FALSE= fi # Check whether --enable-implementation-audio-null was given. if test "${enable_implementation_audio_null+set}" = set; then : enableval=$enable_implementation_audio_null; else enable_audio_null=true fi if test x"$enable_audio_null" = xtrue; then $as_echo "#define LOVE_ENABLE_AUDIO_NULL /**/" >>confdefs.h fi if test x$enable_audio_null = xtrue; then LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE= LOVE_IMPLEMENTATION_AUDIO_NULL_FALSE='#' else LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE='#' LOVE_IMPLEMENTATION_AUDIO_NULL_FALSE= fi # Check whether --enable-implementation-audio-openal was given. if test "${enable_implementation_audio_openal+set}" = set; then : enableval=$enable_implementation_audio_openal; else enable_audio_openal=true fi if test x"$enable_audio_openal" = xtrue; then $as_echo "#define LOVE_ENABLE_AUDIO_OPENAL /**/" >>confdefs.h fi if test x$enable_audio_openal = xtrue; then LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE= LOVE_IMPLEMENTATION_AUDIO_OPENAL_FALSE='#' else LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE='#' LOVE_IMPLEMENTATION_AUDIO_OPENAL_FALSE= fi # Check whether --enable-module-event was given. if test "${enable_module_event+set}" = set; then : enableval=$enable_module_event; else enable_event=true fi if test x"$enable_event" = xtrue; then $as_echo "#define LOVE_ENABLE_EVENT /**/" >>confdefs.h fi if test x$enable_event = xtrue; then LOVE_MODULE_EVENT_TRUE= LOVE_MODULE_EVENT_FALSE='#' else LOVE_MODULE_EVENT_TRUE='#' LOVE_MODULE_EVENT_FALSE= fi # Check whether --enable-implementation-event-sdl was given. if test "${enable_implementation_event_sdl+set}" = set; then : enableval=$enable_implementation_event_sdl; else enable_event_sdl=true fi if test x"$enable_event_sdl" = xtrue; then $as_echo "#define LOVE_ENABLE_EVENT_SDL /**/" >>confdefs.h fi if test x$enable_event_sdl = xtrue; then LOVE_IMPLEMENTATION_EVENT_SDL_TRUE= LOVE_IMPLEMENTATION_EVENT_SDL_FALSE='#' else LOVE_IMPLEMENTATION_EVENT_SDL_TRUE='#' LOVE_IMPLEMENTATION_EVENT_SDL_FALSE= fi # Check whether --enable-module-filesystem was given. if test "${enable_module_filesystem+set}" = set; then : enableval=$enable_module_filesystem; else enable_filesystem=true fi if test x"$enable_filesystem" = xtrue; then $as_echo "#define LOVE_ENABLE_FILESYSTEM /**/" >>confdefs.h fi if test x$enable_filesystem = xtrue; then LOVE_MODULE_FILESYSTEM_TRUE= LOVE_MODULE_FILESYSTEM_FALSE='#' else LOVE_MODULE_FILESYSTEM_TRUE='#' LOVE_MODULE_FILESYSTEM_FALSE= fi # Check whether --enable-implementation-filesystem-physfs was given. if test "${enable_implementation_filesystem_physfs+set}" = set; then : enableval=$enable_implementation_filesystem_physfs; else enable_filesystem_physfs=true fi if test x"$enable_filesystem_physfs" = xtrue; then $as_echo "#define LOVE_ENABLE_FILESYSTEM_PHYSFS /**/" >>confdefs.h fi if test x$enable_filesystem_physfs = xtrue; then LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE= LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_FALSE='#' else LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE='#' LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_FALSE= fi # Check whether --enable-module-font was given. if test "${enable_module_font+set}" = set; then : enableval=$enable_module_font; else enable_font=true fi if test x"$enable_font" = xtrue; then $as_echo "#define LOVE_ENABLE_FONT /**/" >>confdefs.h fi if test x$enable_font = xtrue; then LOVE_MODULE_FONT_TRUE= LOVE_MODULE_FONT_FALSE='#' else LOVE_MODULE_FONT_TRUE='#' LOVE_MODULE_FONT_FALSE= fi # Check whether --enable-implementation-font-freetype was given. if test "${enable_implementation_font_freetype+set}" = set; then : enableval=$enable_implementation_font_freetype; else enable_font_freetype=true fi if test x"$enable_font_freetype" = xtrue; then $as_echo "#define LOVE_ENABLE_FONT_FREETYPE /**/" >>confdefs.h fi if test x$enable_font_freetype = xtrue; then LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE= LOVE_IMPLEMENTATION_FONT_FREETYPE_FALSE='#' else LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE='#' LOVE_IMPLEMENTATION_FONT_FREETYPE_FALSE= fi # Check whether --enable-module-graphics was given. if test "${enable_module_graphics+set}" = set; then : enableval=$enable_module_graphics; else enable_graphics=true fi if test x"$enable_graphics" = xtrue; then $as_echo "#define LOVE_ENABLE_GRAPHICS /**/" >>confdefs.h fi if test x$enable_graphics = xtrue; then LOVE_MODULE_GRAPHICS_TRUE= LOVE_MODULE_GRAPHICS_FALSE='#' else LOVE_MODULE_GRAPHICS_TRUE='#' LOVE_MODULE_GRAPHICS_FALSE= fi # Check whether --enable-implementation-graphics-opengl was given. if test "${enable_implementation_graphics_opengl+set}" = set; then : enableval=$enable_implementation_graphics_opengl; else enable_graphics_opengl=true fi if test x"$enable_graphics_opengl" = xtrue; then $as_echo "#define LOVE_ENABLE_GRAPHICS_OPENGL /**/" >>confdefs.h fi if test x$enable_graphics_opengl = xtrue; then LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE= LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_FALSE='#' else LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE='#' LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_FALSE= fi # Check whether --enable-module-image was given. if test "${enable_module_image+set}" = set; then : enableval=$enable_module_image; else enable_image=true fi if test x"$enable_image" = xtrue; then $as_echo "#define LOVE_ENABLE_IMAGE /**/" >>confdefs.h fi if test x$enable_image = xtrue; then LOVE_MODULE_IMAGE_TRUE= LOVE_MODULE_IMAGE_FALSE='#' else LOVE_MODULE_IMAGE_TRUE='#' LOVE_MODULE_IMAGE_FALSE= fi # Check whether --enable-implementation-image-magpie was given. if test "${enable_implementation_image_magpie+set}" = set; then : enableval=$enable_implementation_image_magpie; else enable_image_magpie=true fi if test x"$enable_image_magpie" = xtrue; then $as_echo "#define LOVE_ENABLE_IMAGE_MAGPIE /**/" >>confdefs.h fi if test x$enable_image_magpie = xtrue; then LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE= LOVE_IMPLEMENTATION_IMAGE_MAGPIE_FALSE='#' else LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE='#' LOVE_IMPLEMENTATION_IMAGE_MAGPIE_FALSE= fi # Check whether --enable-module-joystick was given. if test "${enable_module_joystick+set}" = set; then : enableval=$enable_module_joystick; else enable_joystick=true fi if test x"$enable_joystick" = xtrue; then $as_echo "#define LOVE_ENABLE_JOYSTICK /**/" >>confdefs.h fi if test x$enable_joystick = xtrue; then LOVE_MODULE_JOYSTICK_TRUE= LOVE_MODULE_JOYSTICK_FALSE='#' else LOVE_MODULE_JOYSTICK_TRUE='#' LOVE_MODULE_JOYSTICK_FALSE= fi # Check whether --enable-implementation-joystick-sdl was given. if test "${enable_implementation_joystick_sdl+set}" = set; then : enableval=$enable_implementation_joystick_sdl; else enable_joystick_sdl=true fi if test x"$enable_joystick_sdl" = xtrue; then $as_echo "#define LOVE_ENABLE_JOYSTICK_SDL /**/" >>confdefs.h fi if test x$enable_joystick_sdl = xtrue; then LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE= LOVE_IMPLEMENTATION_JOYSTICK_SDL_FALSE='#' else LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE='#' LOVE_IMPLEMENTATION_JOYSTICK_SDL_FALSE= fi # Check whether --enable-module-keyboard was given. if test "${enable_module_keyboard+set}" = set; then : enableval=$enable_module_keyboard; else enable_keyboard=true fi if test x"$enable_keyboard" = xtrue; then $as_echo "#define LOVE_ENABLE_KEYBOARD /**/" >>confdefs.h fi if test x$enable_keyboard = xtrue; then LOVE_MODULE_KEYBOARD_TRUE= LOVE_MODULE_KEYBOARD_FALSE='#' else LOVE_MODULE_KEYBOARD_TRUE='#' LOVE_MODULE_KEYBOARD_FALSE= fi # Check whether --enable-implementation-keyboard-sdl was given. if test "${enable_implementation_keyboard_sdl+set}" = set; then : enableval=$enable_implementation_keyboard_sdl; else enable_keyboard_sdl=true fi if test x"$enable_keyboard_sdl" = xtrue; then $as_echo "#define LOVE_ENABLE_KEYBOARD_SDL /**/" >>confdefs.h fi if test x$enable_keyboard_sdl = xtrue; then LOVE_IMPLEMENTATION_KEYBOARD_SDL_TRUE= LOVE_IMPLEMENTATION_KEYBOARD_SDL_FALSE='#' else LOVE_IMPLEMENTATION_KEYBOARD_SDL_TRUE='#' LOVE_IMPLEMENTATION_KEYBOARD_SDL_FALSE= fi # Check whether --enable-module-love was given. if test "${enable_module_love+set}" = set; then : enableval=$enable_module_love; else enable_love=true fi if test x"$enable_love" = xtrue; then $as_echo "#define LOVE_ENABLE_LOVE /**/" >>confdefs.h fi if test x$enable_love = xtrue; then LOVE_MODULE_LOVE_TRUE= LOVE_MODULE_LOVE_FALSE='#' else LOVE_MODULE_LOVE_TRUE='#' LOVE_MODULE_LOVE_FALSE= fi # Check whether --enable-module-math was given. if test "${enable_module_math+set}" = set; then : enableval=$enable_module_math; else enable_math=true fi if test x"$enable_math" = xtrue; then $as_echo "#define LOVE_ENABLE_MATH /**/" >>confdefs.h fi if test x$enable_math = xtrue; then LOVE_MODULE_MATH_TRUE= LOVE_MODULE_MATH_FALSE='#' else LOVE_MODULE_MATH_TRUE='#' LOVE_MODULE_MATH_FALSE= fi # Check whether --enable-module-mouse was given. if test "${enable_module_mouse+set}" = set; then : enableval=$enable_module_mouse; else enable_mouse=true fi if test x"$enable_mouse" = xtrue; then $as_echo "#define LOVE_ENABLE_MOUSE /**/" >>confdefs.h fi if test x$enable_mouse = xtrue; then LOVE_MODULE_MOUSE_TRUE= LOVE_MODULE_MOUSE_FALSE='#' else LOVE_MODULE_MOUSE_TRUE='#' LOVE_MODULE_MOUSE_FALSE= fi # Check whether --enable-implementation-mouse-sdl was given. if test "${enable_implementation_mouse_sdl+set}" = set; then : enableval=$enable_implementation_mouse_sdl; else enable_mouse_sdl=true fi if test x"$enable_mouse_sdl" = xtrue; then $as_echo "#define LOVE_ENABLE_MOUSE_SDL /**/" >>confdefs.h fi if test x$enable_mouse_sdl = xtrue; then LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE= LOVE_IMPLEMENTATION_MOUSE_SDL_FALSE='#' else LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE='#' LOVE_IMPLEMENTATION_MOUSE_SDL_FALSE= fi # Check whether --enable-module-physics was given. if test "${enable_module_physics+set}" = set; then : enableval=$enable_module_physics; else enable_physics=true fi if test x"$enable_physics" = xtrue; then $as_echo "#define LOVE_ENABLE_PHYSICS /**/" >>confdefs.h fi if test x$enable_physics = xtrue; then LOVE_MODULE_PHYSICS_TRUE= LOVE_MODULE_PHYSICS_FALSE='#' else LOVE_MODULE_PHYSICS_TRUE='#' LOVE_MODULE_PHYSICS_FALSE= fi # Check whether --enable-implementation-physics-box2d was given. if test "${enable_implementation_physics_box2d+set}" = set; then : enableval=$enable_implementation_physics_box2d; else enable_physics_box2d=true fi if test x"$enable_physics_box2d" = xtrue; then $as_echo "#define LOVE_ENABLE_PHYSICS_BOX2D /**/" >>confdefs.h fi if test x$enable_physics_box2d = xtrue; then LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE= LOVE_IMPLEMENTATION_PHYSICS_BOX2D_FALSE='#' else LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE='#' LOVE_IMPLEMENTATION_PHYSICS_BOX2D_FALSE= fi # Check whether --enable-module-sound was given. if test "${enable_module_sound+set}" = set; then : enableval=$enable_module_sound; else enable_sound=true fi if test x"$enable_sound" = xtrue; then $as_echo "#define LOVE_ENABLE_SOUND /**/" >>confdefs.h fi if test x$enable_sound = xtrue; then LOVE_MODULE_SOUND_TRUE= LOVE_MODULE_SOUND_FALSE='#' else LOVE_MODULE_SOUND_TRUE='#' LOVE_MODULE_SOUND_FALSE= fi # Check whether --enable-implementation-sound-lullaby was given. if test "${enable_implementation_sound_lullaby+set}" = set; then : enableval=$enable_implementation_sound_lullaby; else enable_sound_lullaby=true fi if test x"$enable_sound_lullaby" = xtrue; then $as_echo "#define LOVE_ENABLE_SOUND_LULLABY /**/" >>confdefs.h fi if test x$enable_sound_lullaby = xtrue; then LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE= LOVE_IMPLEMENTATION_SOUND_LULLABY_FALSE='#' else LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE='#' LOVE_IMPLEMENTATION_SOUND_LULLABY_FALSE= fi # Check whether --enable-module-system was given. if test "${enable_module_system+set}" = set; then : enableval=$enable_module_system; else enable_system=true fi if test x"$enable_system" = xtrue; then $as_echo "#define LOVE_ENABLE_SYSTEM /**/" >>confdefs.h fi if test x$enable_system = xtrue; then LOVE_MODULE_SYSTEM_TRUE= LOVE_MODULE_SYSTEM_FALSE='#' else LOVE_MODULE_SYSTEM_TRUE='#' LOVE_MODULE_SYSTEM_FALSE= fi # Check whether --enable-implementation-system-sdl was given. if test "${enable_implementation_system_sdl+set}" = set; then : enableval=$enable_implementation_system_sdl; else enable_system_sdl=true fi if test x"$enable_system_sdl" = xtrue; then $as_echo "#define LOVE_ENABLE_SYSTEM_SDL /**/" >>confdefs.h fi if test x$enable_system_sdl = xtrue; then LOVE_IMPLEMENTATION_SYSTEM_SDL_TRUE= LOVE_IMPLEMENTATION_SYSTEM_SDL_FALSE='#' else LOVE_IMPLEMENTATION_SYSTEM_SDL_TRUE='#' LOVE_IMPLEMENTATION_SYSTEM_SDL_FALSE= fi # Check whether --enable-module-thread was given. if test "${enable_module_thread+set}" = set; then : enableval=$enable_module_thread; else enable_thread=true fi if test x"$enable_thread" = xtrue; then $as_echo "#define LOVE_ENABLE_THREAD /**/" >>confdefs.h fi if test x$enable_thread = xtrue; then LOVE_MODULE_THREAD_TRUE= LOVE_MODULE_THREAD_FALSE='#' else LOVE_MODULE_THREAD_TRUE='#' LOVE_MODULE_THREAD_FALSE= fi # Check whether --enable-implementation-thread-sdl was given. if test "${enable_implementation_thread_sdl+set}" = set; then : enableval=$enable_implementation_thread_sdl; else enable_thread_sdl=true fi if test x"$enable_thread_sdl" = xtrue; then $as_echo "#define LOVE_ENABLE_THREAD_SDL /**/" >>confdefs.h fi if test x$enable_thread_sdl = xtrue; then LOVE_IMPLEMENTATION_THREAD_SDL_TRUE= LOVE_IMPLEMENTATION_THREAD_SDL_FALSE='#' else LOVE_IMPLEMENTATION_THREAD_SDL_TRUE='#' LOVE_IMPLEMENTATION_THREAD_SDL_FALSE= fi # Check whether --enable-module-timer was given. if test "${enable_module_timer+set}" = set; then : enableval=$enable_module_timer; else enable_timer=true fi if test x"$enable_timer" = xtrue; then $as_echo "#define LOVE_ENABLE_TIMER /**/" >>confdefs.h fi if test x$enable_timer = xtrue; then LOVE_MODULE_TIMER_TRUE= LOVE_MODULE_TIMER_FALSE='#' else LOVE_MODULE_TIMER_TRUE='#' LOVE_MODULE_TIMER_FALSE= fi # Check whether --enable-implementation-timer-sdl was given. if test "${enable_implementation_timer_sdl+set}" = set; then : enableval=$enable_implementation_timer_sdl; else enable_timer_sdl=true fi if test x"$enable_timer_sdl" = xtrue; then $as_echo "#define LOVE_ENABLE_TIMER_SDL /**/" >>confdefs.h fi if test x$enable_timer_sdl = xtrue; then LOVE_IMPLEMENTATION_TIMER_SDL_TRUE= LOVE_IMPLEMENTATION_TIMER_SDL_FALSE='#' else LOVE_IMPLEMENTATION_TIMER_SDL_TRUE='#' LOVE_IMPLEMENTATION_TIMER_SDL_FALSE= fi # Check whether --enable-module-window was given. if test "${enable_module_window+set}" = set; then : enableval=$enable_module_window; else enable_window=true fi if test x"$enable_window" = xtrue; then $as_echo "#define LOVE_ENABLE_WINDOW /**/" >>confdefs.h fi if test x$enable_window = xtrue; then LOVE_MODULE_WINDOW_TRUE= LOVE_MODULE_WINDOW_FALSE='#' else LOVE_MODULE_WINDOW_TRUE='#' LOVE_MODULE_WINDOW_FALSE= fi # Check whether --enable-implementation-window-sdl was given. if test "${enable_implementation_window_sdl+set}" = set; then : enableval=$enable_implementation_window_sdl; else enable_window_sdl=true fi if test x"$enable_window_sdl" = xtrue; then $as_echo "#define LOVE_ENABLE_WINDOW_SDL /**/" >>confdefs.h fi if test x$enable_window_sdl = xtrue; then LOVE_IMPLEMENTATION_WINDOW_SDL_TRUE= LOVE_IMPLEMENTATION_WINDOW_SDL_FALSE='#' else LOVE_IMPLEMENTATION_WINDOW_SDL_TRUE='#' LOVE_IMPLEMENTATION_WINDOW_SDL_FALSE= fi # Check whether --enable-library-Box2D was given. if test "${enable_library_Box2D+set}" = set; then : enableval=$enable_library_Box2D; else enable_Box2D=true fi if test x"$enable_Box2D" = xtrue; then $as_echo "#define LOVE_ENABLE_BOX2D /**/" >>confdefs.h fi if test x$enable_Box2D = xtrue; then LOVE_LIBRARY_BOX2D_TRUE= LOVE_LIBRARY_BOX2D_FALSE='#' else LOVE_LIBRARY_BOX2D_TRUE='#' LOVE_LIBRARY_BOX2D_FALSE= fi # Check whether --enable-library-Wuff was given. if test "${enable_library_Wuff+set}" = set; then : enableval=$enable_library_Wuff; else enable_Wuff=true fi if test x"$enable_Wuff" = xtrue; then $as_echo "#define LOVE_ENABLE_WUFF /**/" >>confdefs.h fi if test x$enable_Wuff = xtrue; then LOVE_LIBRARY_WUFF_TRUE= LOVE_LIBRARY_WUFF_FALSE='#' else LOVE_LIBRARY_WUFF_TRUE='#' LOVE_LIBRARY_WUFF_FALSE= fi # Check whether --enable-library-ddsparse was given. if test "${enable_library_ddsparse+set}" = set; then : enableval=$enable_library_ddsparse; else enable_ddsparse=true fi if test x"$enable_ddsparse" = xtrue; then $as_echo "#define LOVE_ENABLE_DDSPARSE /**/" >>confdefs.h fi if test x$enable_ddsparse = xtrue; then LOVE_LIBRARY_DDSPARSE_TRUE= LOVE_LIBRARY_DDSPARSE_FALSE='#' else LOVE_LIBRARY_DDSPARSE_TRUE='#' LOVE_LIBRARY_DDSPARSE_FALSE= fi # Check whether --enable-library-enet was given. if test "${enable_library_enet+set}" = set; then : enableval=$enable_library_enet; else enable_enet=true fi if test x"$enable_enet" = xtrue; then $as_echo "#define LOVE_ENABLE_ENET /**/" >>confdefs.h fi if test x$enable_enet = xtrue; then LOVE_LIBRARY_ENET_TRUE= LOVE_LIBRARY_ENET_FALSE='#' else LOVE_LIBRARY_ENET_TRUE='#' LOVE_LIBRARY_ENET_FALSE= fi # Check whether --enable-library-luasocket was given. if test "${enable_library_luasocket+set}" = set; then : enableval=$enable_library_luasocket; else enable_luasocket=true fi if test x"$enable_luasocket" = xtrue; then $as_echo "#define LOVE_ENABLE_LUASOCKET /**/" >>confdefs.h fi if test x$enable_luasocket = xtrue; then LOVE_LIBRARY_LUASOCKET_TRUE= LOVE_LIBRARY_LUASOCKET_FALSE='#' else LOVE_LIBRARY_LUASOCKET_TRUE='#' LOVE_LIBRARY_LUASOCKET_FALSE= fi # Check whether --enable-library-noise1234 was given. if test "${enable_library_noise1234+set}" = set; then : enableval=$enable_library_noise1234; else enable_noise1234=true fi if test x"$enable_noise1234" = xtrue; then $as_echo "#define LOVE_ENABLE_NOISE1234 /**/" >>confdefs.h fi if test x$enable_noise1234 = xtrue; then LOVE_LIBRARY_NOISE1234_TRUE= LOVE_LIBRARY_NOISE1234_FALSE='#' else LOVE_LIBRARY_NOISE1234_TRUE='#' LOVE_LIBRARY_NOISE1234_FALSE= fi # Check whether --enable-library-utf8 was given. if test "${enable_library_utf8+set}" = set; then : enableval=$enable_library_utf8; else enable_utf8=true fi if test x"$enable_utf8" = xtrue; then $as_echo "#define LOVE_ENABLE_UTF8 /**/" >>confdefs.h fi if test x$enable_utf8 = xtrue; then LOVE_LIBRARY_UTF8_TRUE= LOVE_LIBRARY_UTF8_FALSE='#' else LOVE_LIBRARY_UTF8_TRUE='#' LOVE_LIBRARY_UTF8_FALSE= fi ac_config_files="$ac_config_files Makefile src/Makefile platform/unix/debian/control platform/unix/debian/changelog platform/unix/debian/rules" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_BUILD_EXE_TRUE}" && test -z "${LOVE_BUILD_EXE_FALSE}"; then as_fn_error $? "conditional \"LOVE_BUILD_EXE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_NOMPG123_TRUE}" && test -z "${LOVE_NOMPG123_FALSE}"; then as_fn_error $? "conditional \"LOVE_NOMPG123\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_TARGET_OSX_TRUE}" && test -z "${LOVE_TARGET_OSX_FALSE}"; then as_fn_error $? "conditional \"LOVE_TARGET_OSX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_AUDIO_TRUE}" && test -z "${LOVE_MODULE_AUDIO_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_AUDIO\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_AUDIO_NULL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_AUDIO_NULL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_AUDIO_OPENAL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_AUDIO_OPENAL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_EVENT_TRUE}" && test -z "${LOVE_MODULE_EVENT_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_EVENT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_EVENT_SDL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_EVENT_SDL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_EVENT_SDL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_FILESYSTEM_TRUE}" && test -z "${LOVE_MODULE_FILESYSTEM_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_FILESYSTEM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE}" && test -z "${LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_FONT_TRUE}" && test -z "${LOVE_MODULE_FONT_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_FONT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE}" && test -z "${LOVE_IMPLEMENTATION_FONT_FREETYPE_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_FONT_FREETYPE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_GRAPHICS_TRUE}" && test -z "${LOVE_MODULE_GRAPHICS_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_GRAPHICS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_GRAPHICS_OPENGL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_IMAGE_TRUE}" && test -z "${LOVE_MODULE_IMAGE_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_IMAGE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE}" && test -z "${LOVE_IMPLEMENTATION_IMAGE_MAGPIE_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_IMAGE_MAGPIE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_JOYSTICK_TRUE}" && test -z "${LOVE_MODULE_JOYSTICK_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_JOYSTICK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_JOYSTICK_SDL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_JOYSTICK_SDL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_KEYBOARD_TRUE}" && test -z "${LOVE_MODULE_KEYBOARD_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_KEYBOARD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_KEYBOARD_SDL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_KEYBOARD_SDL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_KEYBOARD_SDL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_LOVE_TRUE}" && test -z "${LOVE_MODULE_LOVE_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_LOVE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_MATH_TRUE}" && test -z "${LOVE_MODULE_MATH_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_MATH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_MOUSE_TRUE}" && test -z "${LOVE_MODULE_MOUSE_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_MOUSE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_MOUSE_SDL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_MOUSE_SDL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_PHYSICS_TRUE}" && test -z "${LOVE_MODULE_PHYSICS_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_PHYSICS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE}" && test -z "${LOVE_IMPLEMENTATION_PHYSICS_BOX2D_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_PHYSICS_BOX2D\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_SOUND_TRUE}" && test -z "${LOVE_MODULE_SOUND_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_SOUND\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE}" && test -z "${LOVE_IMPLEMENTATION_SOUND_LULLABY_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_SOUND_LULLABY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_SYSTEM_TRUE}" && test -z "${LOVE_MODULE_SYSTEM_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_SYSTEM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_SYSTEM_SDL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_SYSTEM_SDL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_SYSTEM_SDL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_THREAD_TRUE}" && test -z "${LOVE_MODULE_THREAD_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_THREAD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_THREAD_SDL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_THREAD_SDL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_THREAD_SDL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_TIMER_TRUE}" && test -z "${LOVE_MODULE_TIMER_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_TIMER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_TIMER_SDL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_TIMER_SDL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_TIMER_SDL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_MODULE_WINDOW_TRUE}" && test -z "${LOVE_MODULE_WINDOW_FALSE}"; then as_fn_error $? "conditional \"LOVE_MODULE_WINDOW\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_IMPLEMENTATION_WINDOW_SDL_TRUE}" && test -z "${LOVE_IMPLEMENTATION_WINDOW_SDL_FALSE}"; then as_fn_error $? "conditional \"LOVE_IMPLEMENTATION_WINDOW_SDL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_LIBRARY_BOX2D_TRUE}" && test -z "${LOVE_LIBRARY_BOX2D_FALSE}"; then as_fn_error $? "conditional \"LOVE_LIBRARY_BOX2D\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_LIBRARY_WUFF_TRUE}" && test -z "${LOVE_LIBRARY_WUFF_FALSE}"; then as_fn_error $? "conditional \"LOVE_LIBRARY_WUFF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_LIBRARY_DDSPARSE_TRUE}" && test -z "${LOVE_LIBRARY_DDSPARSE_FALSE}"; then as_fn_error $? "conditional \"LOVE_LIBRARY_DDSPARSE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_LIBRARY_ENET_TRUE}" && test -z "${LOVE_LIBRARY_ENET_FALSE}"; then as_fn_error $? "conditional \"LOVE_LIBRARY_ENET\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_LIBRARY_LUASOCKET_TRUE}" && test -z "${LOVE_LIBRARY_LUASOCKET_FALSE}"; then as_fn_error $? "conditional \"LOVE_LIBRARY_LUASOCKET\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_LIBRARY_NOISE1234_TRUE}" && test -z "${LOVE_LIBRARY_NOISE1234_FALSE}"; then as_fn_error $? "conditional \"LOVE_LIBRARY_NOISE1234\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LOVE_LIBRARY_UTF8_TRUE}" && test -z "${LOVE_LIBRARY_UTF8_FALSE}"; then as_fn_error $? "conditional \"LOVE_LIBRARY_UTF8\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by love $as_me 0.9.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ love config.status 0.9.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "platform/unix/debian/control") CONFIG_FILES="$CONFIG_FILES platform/unix/debian/control" ;; "platform/unix/debian/changelog") CONFIG_FILES="$CONFIG_FILES platform/unix/debian/changelog" ;; "platform/unix/debian/rules") CONFIG_FILES="$CONFIG_FILES platform/unix/debian/rules" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi chmod 755 platform/unix/debian/rules love-0.9.1/readme.md0000644000000000000000000000425512316602166014254 0ustar00rootroot00000000000000LÖVE is an *awesome* framework you can use to make 2D games in Lua. It's free, open-source, and works on Windows, Mac OS X and Linux. Documentation ------------- We use our [wiki][wiki] for documentation. If you need further help, feel free to ask on our [forums][forums], and last but not least there's the irc channel [#love on OFTC][irc]. Compilation ----------- ###Windows Follow the instructions at the [megasource][megasource] repository page. ###*nix Run `platform/unix/automagic` from the repository root, then run ./configure and make. $ platform/unix/automagic $ ./configure $ make ###Mac OS X Download the required frameworks from [here][dependencies] and place them in `/Library/Frameworks/`. Then use the Xcode project found at `platform/macosx/love.xcodeproj`. Repository information ---------------------- We use the 'default' branch for development, and therefore it should not be considered stable. Also used is the 'minor' branch, which is used for features in the next minor version and it is not our development target (which would be the next revision). (Version numbers formatted major.minor.revision.) We tag all our releases (since we started using mercurial), and have binary downloads available for them. Builds ------ Releases are found in the 'downloads' section on bitbucket, are linked on [the site][site], and there's a ppa for ubuntu, [ppa:bartbes/love-stable][stableppa]. There are also unstable/nightly builds: - Most can be found [here][builds]. - For ubuntu linux they are in [ppa:bartbes/love-unstable][unstableppa] - For arch linux there's [love-hg][aur] in the AUR. Dependencies ------------ - SDL2 - OpenGL - OpenAL - Lua / LuaJIT / LLVM-lua - DevIL with MNG and TIFF - FreeType - PhysicsFS - ModPlug - mpg123 - Vorbisfile [site]: http://love2d.org [wiki]: http://love2d.org/wiki [forums]: http://love2d.org/forums [irc]: irc://irc.oftc.net/love [dependencies]: http://love2d.org/sdk [megasource]: https://bitbucket.org/rude/megasource [builds]: http://love2d.org/builds [stableppa]: https://launchpad.net/~bartbes/+archive/love-stable [unstableppa]: https://launchpad.net/~bartbes/+archive/love-unstable [aur]: http://aur.archlinux.org/packages.php?ID=35279 love-0.9.1/aclocal.m40000644000000000000000000130111012316602300014312 0ustar00rootroot00000000000000# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsdelf*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='NetBSD ld.elf_so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; linux* | k*bsd*-gnu | gnu*) _LT_TAGVAR(link_all_deplibs, $1)=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # Configure paths for SDL # Sam Lantinga 9/21/99 # stolen from Manish Singh # stolen back from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor # serial 1 dnl AM_PATH_SDL2([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS dnl AC_DEFUN([AM_PATH_SDL2], [dnl dnl Get the cflags and libraries from the sdl2-config script dnl AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], sdl_prefix="$withval", sdl_prefix="") AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], sdl_exec_prefix="$withval", sdl_exec_prefix="") AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], , enable_sdltest=yes) min_sdl_version=ifelse([$1], ,2.0.0,$1) if test "x$sdl_prefix$sdl_exec_prefix" = x ; then PKG_CHECK_MODULES([SDL], [sdl2 >= $min_sdl_version], [sdl_pc=yes], [sdl_pc=no]) else sdl_pc=no if test x$sdl_exec_prefix != x ; then sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" if test x${SDL2_CONFIG+set} != xset ; then SDL2_CONFIG=$sdl_exec_prefix/bin/sdl2-config fi fi if test x$sdl_prefix != x ; then sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" if test x${SDL2_CONFIG+set} != xset ; then SDL2_CONFIG=$sdl_prefix/bin/sdl2-config fi fi fi if test "x$sdl_pc" = xyes ; then no_sdl="" SDL2_CONFIG="pkg-config sdl2" else as_save_PATH="$PATH" if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi AC_PATH_PROG(SDL2_CONFIG, sdl2-config, no, [$PATH]) PATH="$as_save_PATH" AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) no_sdl="" if test "$SDL2_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL2_CONFIG $sdl_config_args --cflags` SDL_LIBS=`$SDL2_CONFIG $sdl_config_args --libs` sdl_major_version=`$SDL2_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` sdl_minor_version=`$SDL2_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` sdl_micro_version=`$SDL2_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" dnl dnl Now check if the installed SDL is sufficiently new. (Also sanity dnl checks the results of sdl2-config to some extent dnl rm -f conf.sdltest AC_TRY_RUN([ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl2-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl2-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl2-config was wrong, set the environment variable SDL2_CONFIG\n"); printf("*** to point to the correct copy of sdl2-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } ],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) fi fi if test "x$no_sdl" = x ; then ifelse([$2], , :, [$2]) else if test "$SDL2_CONFIG" = "no" ; then echo "*** The sdl2-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL2_CONFIG environment variable to the" echo "*** full path to sdl2-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" AC_TRY_LINK([ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl2-config script: $SDL2_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) rm -f conf.sdltest ]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Copyright (C) 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_AR([ACT-IF-FAIL]) # ------------------------- # Try to determine the archiver interface, and trigger the ar-lib wrapper # if it is needed. If the detection of archiver interface fails, run # ACT-IF-FAIL (default is to abort configure with a proper error message). AC_DEFUN([AM_PROG_AR], [AC_BEFORE([$0], [LT_INIT])dnl AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([ar-lib])dnl AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) : ${AR=ar} AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], [am_cv_ar_interface=ar AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a ]) ]) case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) m4_default([$1], [AC_MSG_ERROR([could not determine $AR interface])]) ;; esac AC_SUBST([AR])dnl ]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2009, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # (`yes' being less verbose, `no' or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [ --enable-silent-rules less verbose build output (undo: `make V=1') --disable-silent-rules verbose build output (undo: `make V=0')]) case $enable_silent_rules in yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few `make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using `$V' instead of `$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR love-0.9.1/changes.txt0000644000000000000000000010154012316602166014641 0ustar00rootroot00000000000000LOVE 0.9.1 [Baby Inspector] --------------------------- Released: N/A * Added Source:clone. * Added ParticleSystem:clone. * Added ParticleSystem:moveTo, has smoother emitter movement compared to setPosition. * Added ParticleSystem:setRelativeRotation. * Added love.graphics.setWireframe for debugging. * Added Mesh:setDrawRange and Mesh:getDrawRange. * Added CircleShape:getPoint and CircleShape:setPoint. * Added Mesh/SpriteBatch/ParticleSystem:setTexture, accepts Canvases and Images. * Added high-dpi window support for Retina displays in OS X, via the 'highdpi' window flag. * Added love.window.getPixelScale. * Added love.graphics.getSystemLimit. * Added antialiasing support to Canvases. * Added Canvas:getFSAA. * Added 'love_ScreenSize' built-in variable in shaders. * Added love.getVersion. * Added support for gamma-correct rendering. * Added love.graphics.isSupported("srgb"). * Added love.math.gammaToLinear and love.math.linearToGamma. * Added RandomGenerator:getState and RandomGenerator:setState. * Added Body:setUserData and Body:getUserData. * Added some missing obscure key constants. * Added optional callback function argument to love.filesystem.getDirectoryItems. * Deprecated Mesh/SpriteBatch/ParticleSystem:setImage. * Deprecated love.graphics.getMaxImageSize and love.graphics.getMaxPointSize. * Fixed love.graphics.scale with negative values causing incorrect line widths. * Fixed Joystick:isDown using 0-based button index arguments. * Fixed Source:setPitch to error when infinity or NaN is given. * Fixed love.graphics.setCanvas() to restore the proper viewport and scissor rectangles. * Fixed TrueType font glyphs which request a monochrome bitmap pixel mode. * Fixed love.graphics.reset causing crashes when called in between love.graphics.push/pop. * Fixed tab characters ("\t") to display properly with love.graphics.print. * Fixed World:getBodyList and World:getJointList causing hard crashes. * Fixed loading BC4 compressed textures. * Fixed SoundData objects being initialized with garbage values. * Fixed 8-bit SoundData samples when used in love.audio Sources. * Updated the error text for love.filesystem’s module searchers when require fails. * Updated the love.filesystem module searchers to be tried after package.preload instead of before. * Updated love.graphics.newParticleSystem, newSpriteBatch, and newMesh to accept Canvases. * Updated Canvas drawing code, texture coordinates are no longer flipped vertically. * Updated Canvas:renderTo to work properly if a Canvas is currently active. * Updated ParticleSystem:setEmissionRate to accept non-integer numbers. * Updated Source:play to return a boolean indicating success. * Updated t.console in conf.lua to create the console before modules are loaded in Windows. * Updated Mesh vertex maps (index buffers) to use less space in VRAM. * Updated love.graphics.newMesh and Mesh:setVertices to default the UV parameters to 0,0. * Updated Fixture:set/getUserData to work in Coroutines. * Updated fullscreen-desktop and resizable window modes in OS X to use Mac OS 10.7's fullscreen Spaces. * Updated love.filesystem's C library loader to look in paths added via love.filesystem.mount, in Fused mode. * Updated the default love.run code to make initial love.math.random calls more random. LOVE 0.9.0 [Baby Inspector] --------------------------- Released: 2013-12-13 * Added better multiplayer networking support via ENet. * Added --fused command line argument, to simulate fusing. * Added liblove. * Added the ability to have exit values. * Added exit value of 1 in case of error by default. * Added basic support for the file:// uri scheme. * Added love.filesystem.isFused. * Added love.filesystem.getIdentity. * Added love.filesystem.append. * Added love.filesystem.getSize. * Added love.filesystem.mount and love.filesystem.unmount. * Added optional file search order parameter to love.filesystem.setIdentity. * Added File:isOpen and File:getMode. * Added Fie:setBuffer, File:getBuffer, and File:flush. * Added textinput event for unicode text input. * Added love.keyboard.setTextInput and love.keyboard.hasTextInput. * Added previously internal Rasterizer and GlyphData object methods. * Added support for UTF-8 ImageFonts. * Added Font:getAscent/getDescent/getBaseline. * Added Font:setFilter/getFilter. * Added Font:hasGlyphs. * Added angle, scale, and shear parameters to love.graphics.printf. * Added HDR canvas support. * Added mipmapping support (has isSupported test). * Added vertex shader support. * Added boolean support to Shader:send. * Added Canvas:getPixel. * Added blend mode "replace". * Added line join modes. * Added Mesh objects, allowing for arbitrary textured polygons. * Added multiple render target support to love.graphics.setCanvas. * Added love.graphics.setColorMask. * Added love.graphics.origin. * Added love.graphics.getRendererInfo. * Added love.graphics.getMaxImageSize. * Added SpriteBatch:getCount and SpriteBatch:getBufferSize. * Added SpriteBatch:getColor. * Added ParticleSystem:emit. * Added ParticleSystem:setInsertMode and ParticleSystem:getInsertMode. * Added many ParticleSystem getter methods. * Added DXT compressed texture support via love.image.newCompressedData. * Added love.image.isCompressed and Image:isCompressed. * Added Image/Canvas/ImageData:getDimensions. * Added anisotropic filtering support for Images, Canvases, and Fonts. * Added Image:refresh. * Added Image:getData. * Added SoundData:getDuration and SoundData:getSampleCount. * Added Source:isPlaying. * Added Source:setRelative and Source:isRelative. * Added Source:setCone and Source:getCone. * Added Source:getChannels. * Added new Channels API for love.thread. * Added limited table support to Channel:push. * Added Thread:getError. * Added Thread:isRunning. * Added threaderror event. * Added love.math module. * Added a platform-independent (good) random implementation to love.math. * Added RandomGenerator objects. * Added BezierCurve objects. * Added love.math.triangulate and love.math.isConvex. * Added love.math.noise. * Added love.timer.getAverageDelta. * Added Data:getString. * Added Contact:getChildren. * Added love.system module. * Added love.system.getClipboardText and love.system.setClipboardText. * Added love.system.getOS and love.system.getProcessorCount. * Added love.window module. * Added love.window.isVisible. * Added flags to love.window.setMode. * Added monitor choosing support to love.window.setMode. * Added support for resizable, borderless, and non-centered windows. * Added support for "fullscreen-desktop" mode. * Added window resize and visible events. * Added love.window.getDimensions. * Added love.window.getIcon. * Added t.window.icon to love.conf. * Added love.mousefocus and love.window.hasMouseFocus. * Added custom hardware cursors via love.mouse.newCursor. * Added love.mouse.setX/setY. * Added Joystick objects. * Added love.joystick.getJoystick. * Added joystick connect and disconnect events. * Added joystickaxis and joystickhat events. * Added unified Gamepad API for joysticks which have a similar layout to the Xbox controller. * Added joystick vibration support, works with most common gamepads. * OPTIONAL: Added support for Game Music Emu. * Fixed fused mode in OS X. * Fixed printing to the console in Windows before love.load is called. * Fixed the default love.run to not include the time taken by love.load in the first frame's dt. * Fixed the error screen not always appearing until the next input event. * Fixed love.event.clear. * Fixed love.mouse.setPosition when called in love.load. * Fixed scaling in several love.physics functions. * Fixed Box2D exception in World:update. * Fixed many uncaught Box2D / love.physics exceptions for Bodies and Joints. * Fixed ChainShape:getPoints running out of Lua stack space and crashing. * Fixed File:read reading past end of file. * Fixed love.filesystem.setIdentity not removing read access from old directories. * Fixed possible memory leak in utf-8 decoder. * Fixed spacing for the last character in an ImageFont. * Fixed line wrapping in love.graphics.printf. * Fixed love.graphics.printf to error if the wrap limit is negative. * Fixed love.graphics.print truncating strings with embedded zeros. * Fixed crashes with font drawing on some ATI cards. * Fixed artifacts when drawing lines at huge scale. * Fixed Fonts and Canvases ignoring default image filter. * Fixed scissor boxes when a canvas is set after love.graphics.setScissor is called. * Fixed love.graphics.getLineWidth returning incorrect values. * Fixed love.graphics.getColor on some Windows systems. * Fixed alpha blend mode. * Fixed multiplicative blend mode. * Fixed love.graphics.getPointStyle. * Fixed line numbers in shader errors. * Fixed Shader:send with Images and Canvases failing sometimes. * Fixed Shader:send to keep a reference to sent Images and Canvases. * Fixed crash when binding SpriteBatches multiple times. * Fixed SpriteBatches with more than 16,384 sprites. * Fixed particle draw order for ParticleSystems. * Fixed ParticleSystem:setSizes resetting the size variation. * Fixed the graphics viewport not matching the window size when using an unsupported fullscreen mode. * Fixed getMode and friends returning wrong values when using desktop size. * Fixed keyrepeat settings being lost after (indirect) setMode. * Fixed the icon being reset after setMode. * Fixed memory leak in the mp3 decoder. * Fixed sound issues with some versions of OpenAL soft, by enabling direct channels. * Fixed 'random' hangs in audio. * Fixed love.sound.newDecoder not accepting FileData. * Fixed case (in)sensitivity of sound file extension parsing. * Fixed looping support in tracker music formats. * Fixed skipping/looping issues when playing streaming audio Sources. * Fixed race condition in Source:play. * Fixed WAVE sound playback. * Moved love's startup to modules/love. * Moved window-related functions from love.graphics to love.window. * Renamed love's boot script to 'love.boot', which can be required. * Renamed love.filesystem.mkdir to love.filesystem.createDirectory. * Renamed love.filesystem.enumerate to love.filesystem.getDirectoryItems. * Renamed World:setAllowSleeping to World:setSleepingAllowed. * Renamed ChainShape:setPrevVertex to ChainShape:setPreviousVertex. * Renamed Joint:enableMotor to Joint:setMotorEnabled. * Renamed Joint:enableLimit and Joint:isLimitEnabled to Joint:setLimitsEnabled and Joint:hasLimitsEnabled. * Renamed t.screen to t.window in love.conf. * Renamed love.graphics.setCaption to love.window.setTitle. * Renamed PixelEffect to Shader (but now with vertex shaders). * Renamed love.graphics.setDefaultImageFilter to love.graphics.setDefaultFilter. * Renamed ParticleSystem:setSprite to ParticleSystem:setImage. * Renamed ParticleSystem:setGravity to ParticleSystem:setLinearAcceleration. * Renamed ParticleSystem:setLifetime/setParticleLife to setEmitter/ParticleLifetime. * Renamed ParticleSystem:count and all getNum* functions to get*Count. * Renamed Source:setDistance to Source:setAttenuationDistances. * Renamed SoundData:getBits and Decoder:getBits to SoundData:getBitDepth and Decoder:getBitDepth. * Renamed love.mouse.setGrab to love.mouse.setGrabbed. * Removed release mode. * Removed love.keyboard.getKeyRepeat (see love.keyboard.hasKeyRepeat). * Removed the unicode argument from love.keypressed (see love.textinput). * Removed love.graphics.drawTest. * Removed love.graphics.quad/triangle. * Removed love.graphics.setColorMode. * Removed love.graphics.newStencil. * Removed love.graphics.setLine/setPoint. * Removed love.graphics.drawq (functionality is merged into love.graphics.draw). * Removed SpriteBatch:addq/setq (functionality is merged into SpriteBatch:add/set). * Removed Quad:flip. * Removed ParticleSystem:isFull/isEmpty. * Removed ParticleSystem:getX/getY. * Removed love.graphics.checkMode. * Removed love.joystick.open and friends. * Removed love.joystick module functions which operated on individual joysticks (see Joystick objects). * Removed joystick ball support. * Removed thread names. * Removed old thread messaging API (see Channels). * Removed love.timer.getMicroTime. * Updated functions which return love objects to re-use the Lua-side object instead of always recreating it. * Updated the windows console, it now tries to re-use an active one first. * Updated error handling, error handlers now get resolved when the error occurs. * Updated order of sleep/present in love.run (now draws, *then* sleeps). * Updated love.filesystem to try to create the appdata directory if it doesn't exist yet. * Updated the default filesystem identity to omit file extension. * Updated love.filesystem.newFile to optionally open the file. * Updated most love.filesystem functions to return nil, error on internal failure. * Updated love.keyboard.setKeyRepeat to take a boolean argument instead of numbers. * Updated love.keypressed's second argument to be a boolean indicating key repeat. * Updated keyboard key constants for some more modern keyboard keys. * Updated window code to use adaptive vsync when available, if vsync is enabled. * updated love.graphics.print's x and y arguments to default to 0. * Updated the setFilter and setWrap methods, the second argument is now optional. * Updated Font and ParticleSystem rendering code, now more performant. * Updated SpriteBatch code, now more performant when adding/setting and (un)binding. * Updated Canvas code to support more systems. * Updated Canvas:getImageData and love.graphics.newScreenshot to be more efficient. * Updated love.graphics.newScreenshot to create a fully opaque image by default. * Updated error messages when sending bad values to Shaders. * Updated love.graphics.newParticleSystem to have a default buffer size of 1000. * Updated ImageData:setPixel to accept a table and default to 255 alpha. * Updated ImageData:mapPixel, is now more efficient and accepts optional x,y,w,h arguments. * Updated love.image memory handling, improves errors and thread-safety. * Updated all love object constructors to optionally accept FileData if they accept a filename. * Updated allocation for SoundData, it's more efficient and less wasteful. * Updated SoundData:set/getSample to error for invalid samples. * Updated Source:set* functions to default z to 0. * Updated Source:seek to error for negative offsets. * Updated Thread:start to accept arguments which get passed to the thread. * Updated love.timer.getFPS to be microsecond-accurate. * Updated love.timer.getTime to be microsecond-accurate and monotonic. * Updated Box2D to version 2.3.0. LOVE 0.8.0 [Rubber Piggy] ------------------------- Released: 2012-04-02 * Added release error screen. * Added alpha to love.graphics.setBackgroundColor. * Added Canvas:clear(r, g, b, a). * Added Canvas support to love.graphics.drawq. * Added Canvas:getWidth and Canvas:getHeight. * Added love.graphics.arc. * Added seek and tell to Source objects. * Added color interpolation to ParticleSystem. * Added automatic PO2 padding for systems not supporting the OpenGL extension. * Added UTF-8 support for fonts. * Added Box2D error handling for some commonly failing functions. * Added ability for fused release games to have their write dir in appdata. * Added shear transformation to drawing functions. * Added origin to font printing. * Added love.graphics.getMode. * Added per-sprite colors on SpriteBatches. * Added PixelEffects. * Added love.graphics.isSupported. * Added love.graphics.getCanvas. * Added love.event.quit. * Added stencil masks. * Added alternative SpriteBatch provider, it should work everywhere now. * Added a loader for binary modules. * Added Thread:getKeys. * Added option of fractions for Quads. * Added PNG, JPEG and GIF support to ImageData:encode. * Added 64-bit support for Mac OS X. * Added premultiplied blending mode. * Added functions to set/get default image filter modes. * Added SpriteBatch:set. * Added new events system, with support for custom events and long event names. * Added sound attenuation by distance. * Added SpriteBatch:getImage. * Added combine color mode. * Added automatic random seeding to love.run. * Added support for the subtract BlendMode on older graphics cards. * Added love._os field, which contains the OS the game is running on. * Fixed wrapping for single words. * Fixed tracebacks not showing filenames. * Fixed love.graphics.push/pop capable of causing overflows/underflows. * Fixed setScissor on Canvases. * Fixed several issues with audio, e.g. clicks and pops in mp3s. * Fixed crashes when bodies were destroyed during collisions. * Fixed bound SpriteBatches corrupting when drawing. * Fixed thread-safety issues with ImageData. * Fixed memory leaks in audio sources. * Fixed thread's set (previously send) accidentally changing the type. * Fixed SoundData allocating the wrong number of samples. * Fixed SpriteBatch support on Intel cards. * Fixed love.filesystem.lines() leaking. * Fixed most leaking on unclosed File objects. * Fixed crashes when operating on non-existent files. * Fixed a bug where empty files on windows would never reach eof. * Fixed crash when SoundData runs out of memory. * Fixed ordering of loaders, love should have priority over lua. * Fixed several miscellaneous memory leaks. * Fixed a few cases where strings with \0 in them would not be stored correctly. * Fixed love's startup time being in the first dt. * Fixed internal string conversions, they are faster now. * Fixed (bad) performance of ImageData:paste. * Fixed love.graphics.toggleFullscreen not maintaining graphics state. * Renamed SpriteBatch's lock/unlock to bind/unbind. * Renamed Framebuffer to Canvas. * Renamed love.thread.send/receive to set/get. * Renamed love.graphics.setRenderTarget to setCanvas. * Removed canvas auto-clearing. * Removed EncodedImageData. * Removed old syntax for require (with extension). * Removed love.graphics.setFont([file], [size]). * Removed Thread:kill. * Updated love.joystick to be 1-indexed. * Updated Sources to update more cleanly and control more intuitively. * Updated font engine. * Updated line drawing to a custom system. * Updated love.timer.sleep to use seconds, like the rest of love. * Updated love.timer to be more accurate. * Updated love.graphics.circle to have max(10, r) as default for segments. * Updated ImageData:encode to write to files directly. * Updated version compatibility system to actually do something. * Updated love.run's order, events are checked just before update. * Updated Box2D to version 2.2.1. LOVE 0.7.2 [Game Slave] ----------------------- Released: 2011-05-04 * Added Framebuffer:get/setWrap. * Added love.event.clear. * Added support for any number of arguments to love.keyboard.isDown, love.mouse.isDown and love.joystick.isDown. * Added SpriteBatch:setImage(). * Fixed fused games not working. * Fixed ParticleSystem:setSize ignoring the variation argument. * Fixed some file-opening exceptions not being caught. * Fixed files loaded by libmodplug being too loud. * Fixed paths with periods in them not working. * Fixed love.graphics.getBlendMode not detecting subtractive and multiplicative blend modes. * Fixed crash when there was no memory available for newImageData(w, h). * Updated PhysicsFS version to 2.0.2 on Windows * Updated OpenAL Soft version to 1.13 on Windows * Updated libmodplug version to 0.8.8.1 on Windows * Updated FreeType version to 2.4.4 on Windows * Updated libmpg123 version to 1.13.2 on Windows * Windows binary no longer depends on VC2005 runtime. * Windows binary no longer depends on SSE2 support. LOVE 0.7.1 [Game Slave] ----------------------- Released: 2011-02-14 * Added source:isPaused() * Added error when initial window can't be created. * Added framebuffer filter modes. * Added love.filesystem.getLastModified. * Added filter modes for ImageFonts. * Added dead key support by using "unknown" key with correct unicode value. * Added 0 width and height in love.conf. (for current desktop resolution) * Added alpha support when encoding TGA images. * Fixed a lot of bugs regarding zero characters in threads. * Fixed handling of a directory named "love" in current directory. * Fixed a few unhandled errors in setScissor. * Fixed a bug where old physics callbacks were never dereferenced. * Fixed loss of mouse visibility settings on setMode. * Fixed creation of a framebuffer unbinding current framebuffer. * Fixed several race conditions in love.thread. * Fixed 'love .', so it won't use lovedir/. as save dir. * Fixed setLineHeight. * Fixed extended ascii and ImageFonts. * Fixed printf's line wrapping. * Fixed crash when playing sounds. * Fixed playback of mp3s with arbitrary sample rates. * Fixed handling of negative indices in love.joystick. * Fixed toggleFullscreen. * Fixed unexpected behaviour with hash tables to love.graphics.line. * Fixed mouse coordinates being capped after setMode. * Fixed setFont's error handling on a non-existant file. * Fixed issue where Windows builds would hard crash on Lua errors * Removed custom sample rates for Decoders. LOVE 0.7.0 [Game Slave] ----------------------- Released: 2010-12-05 * Added love.thread. * Added love.font. * Added love.graphics.Framebuffer. * Added Source:play, Source:pause, etc. * Added Source:isStatic(). * Added get/setPosition, get/setVelocity, and get/setDirection to Source. * Added get/setGroupIndex to CircleShape and PolygonShape. * Added Font:getWrap. * Added identity field to love.conf. * Added love.quit callback. * Added love.focus callback. * Added extra meter parameter to love.physics.newWorld. * Added love.graphics.setIcon. * Added way to make the window desktop resolution. * Added subtractive and multiplicative blend modes. * Added body:getAllowSleeping. * Added shape:getBody. * Added love.filesystem.FileData for public usage. * Added base64 support for love.filesystem.FileData. * Added table support for love.graphics.setColor and love.graphics.setBackgroundColor. * Added love.graphics.hasFocus(). * Added ?/init.lua to the loader. * Fixed the debug module not being an upvalue of the error handlers. (you can now override debug) * Fixed some cases when love.audio.pause and friends, were acting on everything, not just the passed Source. * Fixed setFixedRotation enabling other flags. * Fixed a bug in the loader (for require). * Fixed ParticleSystem::setSprite not retaining the new image. * Fixed setMode removing images settings (wrapping, filters). * Fixed shape:getBody, it's now exposed for LÖVE usage. * Fixed DistanceJoint:getType() returning "circle" - it now returns "distance". * Fixed SpriteBatches being unaffected by setColor * Fixed the audio bug. * Fixed invalid FSAA values crashing LÖVE. * Fixed a bunch of compiler warnings. * Fixed OS X not properly using UTIs for .love files. * Fixed the modplug decoder not properly handeling files that fail to load. * Fixed a memory leak in setFont. * Fixed bug where errors in threads wouldn't get picked up by demand. * Fixed part of the bug with newlines when scaling text (rotating still messes up the lines). * Fixed the bug where newImageFont would try to created ImageData out of ImageData. * Fixed error handler not resetting the blend mode. * Changed fonts, they're now po2 safe. * Changed the traceback in the error screen. * Changed font origin to top-left. * Changed linux save dir location to obey to Freedesktop.org's XDG specs. (~/.local/share/love by default.) * Removed font functions from love.graphics. * Removed love.physics.newWorld(w, h). Use love.physics.newWorld(x1, y1, x2, y2) instead. LOVE 0.6.2 [Jiggly Juice] ------------------------- Released: 2010-03-06 * Fixed a bug causing ImageFonts to cut off some pixels. * Fixed a bug where filled rectangles were too small. * Fixed a bug in Image:setFilter where it would switch the parameters. * Fixed a bug in ImageRasterizer where it wasn't using the data. * Image filter and wrap modes now use string constants as well. * Fixed double-transform bug in SpriteBatch. * Errors are reported on stdout again. * Another fix for the icons on ubuntu. LOVE 0.6.1 [Jiggly Juice] ------------------------- Released: 2010-02-07 * Added Shape:setGroupIndex and getGroupIndex. * Added Body:setFixedRotation and Body:getFixedRotation. * Added Body:setInertia. * Added CircleShape:getLocalCenter and CircleShape:getWorldCenter. * Added icons and file associations for the debs. * Added the demos folder to the Mac OS X DMG. * It's now possible to run a .love from Resources in Mac OS X, thanks to Steve Johnson. * Fixed a bug with multiple Sources on the same Music. * Fixed a bug so the mouse doesn't get crippled when the keyboard is disabled. * Fixed a bug where love.graphics.rectangle drew a too large rectangle. * Fixed a bug where memory wouldn't be released correctly. * Fixed epic physics typo (getRestituion->getRestitution). * Fixed crash on opening non-existent image. * The error screen redraws when an event occurs. * The default love.run() now gracefully handles disabled modules. * The debian packages should now successfully include icons, file associations, etc, and should give the correct architecture. * Added support for drawing polylines to love.graphics.line - the syntax is the same as love.graphics.polygon. * Removed Music and Sound. There are now only sources. * Improved the stability of love.audio/love.sound. LOVE 0.6.0 [Jiggly Juice] ------------------------- Released: 2009-12-24 * Lost track of 0.6.0 changes a long while ago. Don't trust the list below. * Added love.graphics.print()/printf(). * Added unicode-translated parameter to love.keypressed(). * Added love.event. * Added love.filesystem.setIdentity(). * Added OpenAL dependency. * Fixed love.fileystem problems with internal \0 in strings. * Fixed love.filesystem.mkdir/remove not working when write directory not set. * Fixed position of Window. * Changed parameter order of draws(). * Changed origin for images to top-left. * Changed love.filesystem.open to accept mode (removed from love.filesystem.newFile). * Changed love.filesystem.read() which now returns two parameters (data, length). * Changed love.filesystem.write() which now takes up to four parameters (file, data, length, mode). * Changed default color mode to "modulate". * Changed name of love.color_normal to "replace". * Changed name of love.blend_normal to "alpha". * Changed the conf file format. * Removed Color object. * Removed Animation. * Removed several constants. * Removed love.graphics.draw() for strings. * Removed love.system. * Removed SWIG. * Removed boost. * Removed SDL_mixer. LOVE 0.5.0 [Salted Nuts] ------------------------ Released: 2009-01-02 * Added love.joystick. * Added network support via LuaSocket. * Added support for loading of appended .love-file. * Added love.filesystem.lines(). * Added a loader function to enable use of normal require(). * Added love.filesystem.load(). * Added love.filesystem.getSaveDirectory() * Added love.filesystem.getWorkingDirectory() * Added optional explicit destruction of Box2D objects. * Added shape:testSegment(). * Added love.graphics.screenshot() (.bmp only). * Added default size (12) to font-related functions. * Added love.graphics.setFont( filename, size ) * Added love.graphics.setLineStippe and related functions. * Added love.graphics.setPointSize and related functions. * Changed love.filesystem.read() to accept file name. * Changed love.filesystem.write() to accept file name. * Changed love.graphics.triangle() to accept CCW and CW ordering. * Fixed love.graphics.read adding bogus characters at the end of string. * Fixed epic swigfusion bug. * Fixed love.graphics.getFont so it returns nil if no font is present. * Fixed bug where love.graphics.getBlendMode() always returns blend_normal. * Fixed bug which caused error screen to be scissored (when enabled). * Fixed Body:setAngle to accept degrees like everything else. * Cleaned up love::File and love_physfs. * Cleaned up love::Reference so it stores its reference in _G. LOVE 0.4.0 [Taco Beam] ---------------------- Released: 2008-08-29 * Added love.physics. (YES!) * Added love.audio.setMode(). * Added love.audio.setChannels(). * Added love.graphics.polygon(). * Added love.graphics.setScissor() and love.graphics.getScissor() to handle scissoring the graphical area. * Fixed missing constants related to image optimization. * Fixed memory leak related to love::File (thanks amnesiasoft!). LOVE 0.3.2 [Lemony Fresh] ------------------------- Released: 2008-07-04 * Added love.graphics.rectangle() * Added love.graphics.setLineWidth() * Added love.graphics.setLineStyle() * Added love.graphics.getLineWidth() * Added love.graphics.getLineStyle() * Added love.mouse.getPosition() * Added love.audio_loop * Added love.timer.getTime() * Changed love.graphics.quad() to accept CCW and CW ordering. * Fixed default color mode bug. * Fixed line width being applied unnecessarily. * Fixed line width bug related to fullscreen toggle. * Fixed music not looping. LOVE 0.3.1 [Space Meat] ----------------------- Released: 2008-06-21 * Fixed segfault related to graphics. * Fixed wait-forever bug related to audio. * Fixed error reporting not working across modules. * Fixed bug where games with a trailing "/" would not start. * Fixed bug which caused love.timer.sleep to delay for (way) too long. LOVE 0.3.0 [Mutant Vermin] -------------------------- Released: 2008-06-17 * Added ParticleSystem. * Added visual error reporting. * Added love.system for game control needs. * Added input grabbing. * Added functions in love.graphics for display management. * Added love.graphics.point(). * Added functions in love.graphics for getting current color, font, etc. * Added love.filesystem.enumerate() for getting folder contents. * Added functions for setting the window caption. * Added version checking. An error occurs if the game is incompatible. * Fixed print() :) * Removed all keyboard shortcuts. * Save folders are now created only if required. * On Windows, the new save location is %APPDATA%\LOVE\game LOVE 0.2.1 [Impending Doom] --------------------------- Released: 2008-03-29 * Added many functions in love.filesystem. * Added a dedicated save-folder for each game. * Added timer.sleep. * Added line heights to font objects. * Added love.graphics.getWidth/getHeight. * Added scaling and rotation for text. * Added variable spacing to ImageFont. * Added support for variable line quality when drawing primitives. * Added several functions for drawing sections of images. (love.graphics.draws) * Added image optimization function and padding function. * Added love.graphics.getWidth/Height. * Split devices up into actual SWIG-modules. This means that: - Functions are used like this: love.graphics.draw, not love.graphics:draw - love.objects is no more. Objects are created by an appropriate device. * How you draw primitives has been altered. * draw(string, x, y, wrap, align) has become drawf(string, x, y, wrap, align) * Changed getFps to getFPS. * Escape is no more ... enter: Alt+F4. * love.filesystem.include has been renamed to love.filesystem.require. * ImageFonts now consider the spacing as well as the glyph size. * Fixed a massive ImageFont bug which resulted in float-positioning failure. * Fixed a bug when loading fonts where the specified size doesn't represent the true size of the font. * Updated DevIL to version 1.6.8-rc2 (Windows) * Updated FreeType to freetype-2.3.5-1 (Windows) * Updated Lua to 5.1.3 (Windows) * Updated SDL to 1.2.13 (Windows) * Removed boost::filesystem. LOVE 0.2.0 [Mini-Moose] ----------------------- Released: 2008-02-06 * Added ImageFont * Added Animation * Added text formatting functions * Added setCenter for Image and Animation. * Added methods for rendering of scaled/rotated sprites. * Added the drawing of basic shapes. * Added default font and embedded resources. * Added Ctrl+R for reload. * Added blending and color modes. * Fixed memory usage of Graphics. * Fixed a bug where the set text color would change the color of any images rendered. * Fixed CWD bug. * Fixed titlebar. Game title is now displayed. LOVE 0.1.1 [Santa-Power] ------------------------ Initial release! Released: 2008-01-13 * Image loading and rendering. * Sound loading and playing. * Font loading and rendering. * Lua-scriptable games. * Config files. * Stuff is loadable from archive files. * Keyboard, mouse, display, timer, etc. (Basic devices). love-0.9.1/configure-modules.ac0000644000000000000000000003260212316602275016427 0ustar00rootroot00000000000000AC_ARG_ENABLE([module-audio], [ --disable-module-audio Turn off module love.audio], [], [enable_audio=true]) AH_TEMPLATE([LOVE_ENABLE_AUDIO], []) if test x"$enable_audio" = xtrue; then AC_DEFINE([LOVE_ENABLE_AUDIO], []) fi AM_CONDITIONAL([LOVE_MODULE_AUDIO], [test x$enable_audio = xtrue]) AC_ARG_ENABLE([implementation-audio-null], [ --disable-implementation-audio-null Turn off implementation love.audio.null], [], [enable_audio_null=true]) AH_TEMPLATE([LOVE_ENABLE_AUDIO_NULL], []) if test x"$enable_audio_null" = xtrue; then AC_DEFINE([LOVE_ENABLE_AUDIO_NULL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_AUDIO_NULL], [test x$enable_audio_null = xtrue]) AC_ARG_ENABLE([implementation-audio-openal], [ --disable-implementation-audio-openal Turn off implementation love.audio.openal], [], [enable_audio_openal=true]) AH_TEMPLATE([LOVE_ENABLE_AUDIO_OPENAL], []) if test x"$enable_audio_openal" = xtrue; then AC_DEFINE([LOVE_ENABLE_AUDIO_OPENAL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_AUDIO_OPENAL], [test x$enable_audio_openal = xtrue]) AC_ARG_ENABLE([module-event], [ --disable-module-event Turn off module love.event], [], [enable_event=true]) AH_TEMPLATE([LOVE_ENABLE_EVENT], []) if test x"$enable_event" = xtrue; then AC_DEFINE([LOVE_ENABLE_EVENT], []) fi AM_CONDITIONAL([LOVE_MODULE_EVENT], [test x$enable_event = xtrue]) AC_ARG_ENABLE([implementation-event-sdl], [ --disable-implementation-event-sdl Turn off implementation love.event.sdl], [], [enable_event_sdl=true]) AH_TEMPLATE([LOVE_ENABLE_EVENT_SDL], []) if test x"$enable_event_sdl" = xtrue; then AC_DEFINE([LOVE_ENABLE_EVENT_SDL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_EVENT_SDL], [test x$enable_event_sdl = xtrue]) AC_ARG_ENABLE([module-filesystem], [ --disable-module-filesystem Turn off module love.filesystem], [], [enable_filesystem=true]) AH_TEMPLATE([LOVE_ENABLE_FILESYSTEM], []) if test x"$enable_filesystem" = xtrue; then AC_DEFINE([LOVE_ENABLE_FILESYSTEM], []) fi AM_CONDITIONAL([LOVE_MODULE_FILESYSTEM], [test x$enable_filesystem = xtrue]) AC_ARG_ENABLE([implementation-filesystem-physfs], [ --disable-implementation-filesystem-physfs Turn off implementation love.filesystem.physfs], [], [enable_filesystem_physfs=true]) AH_TEMPLATE([LOVE_ENABLE_FILESYSTEM_PHYSFS], []) if test x"$enable_filesystem_physfs" = xtrue; then AC_DEFINE([LOVE_ENABLE_FILESYSTEM_PHYSFS], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS], [test x$enable_filesystem_physfs = xtrue]) AC_ARG_ENABLE([module-font], [ --disable-module-font Turn off module love.font], [], [enable_font=true]) AH_TEMPLATE([LOVE_ENABLE_FONT], []) if test x"$enable_font" = xtrue; then AC_DEFINE([LOVE_ENABLE_FONT], []) fi AM_CONDITIONAL([LOVE_MODULE_FONT], [test x$enable_font = xtrue]) AC_ARG_ENABLE([implementation-font-freetype], [ --disable-implementation-font-freetype Turn off implementation love.font.freetype], [], [enable_font_freetype=true]) AH_TEMPLATE([LOVE_ENABLE_FONT_FREETYPE], []) if test x"$enable_font_freetype" = xtrue; then AC_DEFINE([LOVE_ENABLE_FONT_FREETYPE], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_FONT_FREETYPE], [test x$enable_font_freetype = xtrue]) AC_ARG_ENABLE([module-graphics], [ --disable-module-graphics Turn off module love.graphics], [], [enable_graphics=true]) AH_TEMPLATE([LOVE_ENABLE_GRAPHICS], []) if test x"$enable_graphics" = xtrue; then AC_DEFINE([LOVE_ENABLE_GRAPHICS], []) fi AM_CONDITIONAL([LOVE_MODULE_GRAPHICS], [test x$enable_graphics = xtrue]) AC_ARG_ENABLE([implementation-graphics-opengl], [ --disable-implementation-graphics-opengl Turn off implementation love.graphics.opengl], [], [enable_graphics_opengl=true]) AH_TEMPLATE([LOVE_ENABLE_GRAPHICS_OPENGL], []) if test x"$enable_graphics_opengl" = xtrue; then AC_DEFINE([LOVE_ENABLE_GRAPHICS_OPENGL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_GRAPHICS_OPENGL], [test x$enable_graphics_opengl = xtrue]) AC_ARG_ENABLE([module-image], [ --disable-module-image Turn off module love.image], [], [enable_image=true]) AH_TEMPLATE([LOVE_ENABLE_IMAGE], []) if test x"$enable_image" = xtrue; then AC_DEFINE([LOVE_ENABLE_IMAGE], []) fi AM_CONDITIONAL([LOVE_MODULE_IMAGE], [test x$enable_image = xtrue]) AC_ARG_ENABLE([implementation-image-magpie], [ --disable-implementation-image-magpie Turn off implementation love.image.magpie], [], [enable_image_magpie=true]) AH_TEMPLATE([LOVE_ENABLE_IMAGE_MAGPIE], []) if test x"$enable_image_magpie" = xtrue; then AC_DEFINE([LOVE_ENABLE_IMAGE_MAGPIE], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_IMAGE_MAGPIE], [test x$enable_image_magpie = xtrue]) AC_ARG_ENABLE([module-joystick], [ --disable-module-joystick Turn off module love.joystick], [], [enable_joystick=true]) AH_TEMPLATE([LOVE_ENABLE_JOYSTICK], []) if test x"$enable_joystick" = xtrue; then AC_DEFINE([LOVE_ENABLE_JOYSTICK], []) fi AM_CONDITIONAL([LOVE_MODULE_JOYSTICK], [test x$enable_joystick = xtrue]) AC_ARG_ENABLE([implementation-joystick-sdl], [ --disable-implementation-joystick-sdl Turn off implementation love.joystick.sdl], [], [enable_joystick_sdl=true]) AH_TEMPLATE([LOVE_ENABLE_JOYSTICK_SDL], []) if test x"$enable_joystick_sdl" = xtrue; then AC_DEFINE([LOVE_ENABLE_JOYSTICK_SDL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_JOYSTICK_SDL], [test x$enable_joystick_sdl = xtrue]) AC_ARG_ENABLE([module-keyboard], [ --disable-module-keyboard Turn off module love.keyboard], [], [enable_keyboard=true]) AH_TEMPLATE([LOVE_ENABLE_KEYBOARD], []) if test x"$enable_keyboard" = xtrue; then AC_DEFINE([LOVE_ENABLE_KEYBOARD], []) fi AM_CONDITIONAL([LOVE_MODULE_KEYBOARD], [test x$enable_keyboard = xtrue]) AC_ARG_ENABLE([implementation-keyboard-sdl], [ --disable-implementation-keyboard-sdl Turn off implementation love.keyboard.sdl], [], [enable_keyboard_sdl=true]) AH_TEMPLATE([LOVE_ENABLE_KEYBOARD_SDL], []) if test x"$enable_keyboard_sdl" = xtrue; then AC_DEFINE([LOVE_ENABLE_KEYBOARD_SDL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_KEYBOARD_SDL], [test x$enable_keyboard_sdl = xtrue]) AC_ARG_ENABLE([module-love], [ --disable-module-love Turn off module love.love], [], [enable_love=true]) AH_TEMPLATE([LOVE_ENABLE_LOVE], []) if test x"$enable_love" = xtrue; then AC_DEFINE([LOVE_ENABLE_LOVE], []) fi AM_CONDITIONAL([LOVE_MODULE_LOVE], [test x$enable_love = xtrue]) AC_ARG_ENABLE([module-math], [ --disable-module-math Turn off module love.math], [], [enable_math=true]) AH_TEMPLATE([LOVE_ENABLE_MATH], []) if test x"$enable_math" = xtrue; then AC_DEFINE([LOVE_ENABLE_MATH], []) fi AM_CONDITIONAL([LOVE_MODULE_MATH], [test x$enable_math = xtrue]) AC_ARG_ENABLE([module-mouse], [ --disable-module-mouse Turn off module love.mouse], [], [enable_mouse=true]) AH_TEMPLATE([LOVE_ENABLE_MOUSE], []) if test x"$enable_mouse" = xtrue; then AC_DEFINE([LOVE_ENABLE_MOUSE], []) fi AM_CONDITIONAL([LOVE_MODULE_MOUSE], [test x$enable_mouse = xtrue]) AC_ARG_ENABLE([implementation-mouse-sdl], [ --disable-implementation-mouse-sdl Turn off implementation love.mouse.sdl], [], [enable_mouse_sdl=true]) AH_TEMPLATE([LOVE_ENABLE_MOUSE_SDL], []) if test x"$enable_mouse_sdl" = xtrue; then AC_DEFINE([LOVE_ENABLE_MOUSE_SDL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_MOUSE_SDL], [test x$enable_mouse_sdl = xtrue]) AC_ARG_ENABLE([module-physics], [ --disable-module-physics Turn off module love.physics], [], [enable_physics=true]) AH_TEMPLATE([LOVE_ENABLE_PHYSICS], []) if test x"$enable_physics" = xtrue; then AC_DEFINE([LOVE_ENABLE_PHYSICS], []) fi AM_CONDITIONAL([LOVE_MODULE_PHYSICS], [test x$enable_physics = xtrue]) AC_ARG_ENABLE([implementation-physics-box2d], [ --disable-implementation-physics-box2d Turn off implementation love.physics.box2d], [], [enable_physics_box2d=true]) AH_TEMPLATE([LOVE_ENABLE_PHYSICS_BOX2D], []) if test x"$enable_physics_box2d" = xtrue; then AC_DEFINE([LOVE_ENABLE_PHYSICS_BOX2D], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_PHYSICS_BOX2D], [test x$enable_physics_box2d = xtrue]) AC_ARG_ENABLE([module-sound], [ --disable-module-sound Turn off module love.sound], [], [enable_sound=true]) AH_TEMPLATE([LOVE_ENABLE_SOUND], []) if test x"$enable_sound" = xtrue; then AC_DEFINE([LOVE_ENABLE_SOUND], []) fi AM_CONDITIONAL([LOVE_MODULE_SOUND], [test x$enable_sound = xtrue]) AC_ARG_ENABLE([implementation-sound-lullaby], [ --disable-implementation-sound-lullaby Turn off implementation love.sound.lullaby], [], [enable_sound_lullaby=true]) AH_TEMPLATE([LOVE_ENABLE_SOUND_LULLABY], []) if test x"$enable_sound_lullaby" = xtrue; then AC_DEFINE([LOVE_ENABLE_SOUND_LULLABY], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_SOUND_LULLABY], [test x$enable_sound_lullaby = xtrue]) AC_ARG_ENABLE([module-system], [ --disable-module-system Turn off module love.system], [], [enable_system=true]) AH_TEMPLATE([LOVE_ENABLE_SYSTEM], []) if test x"$enable_system" = xtrue; then AC_DEFINE([LOVE_ENABLE_SYSTEM], []) fi AM_CONDITIONAL([LOVE_MODULE_SYSTEM], [test x$enable_system = xtrue]) AC_ARG_ENABLE([implementation-system-sdl], [ --disable-implementation-system-sdl Turn off implementation love.system.sdl], [], [enable_system_sdl=true]) AH_TEMPLATE([LOVE_ENABLE_SYSTEM_SDL], []) if test x"$enable_system_sdl" = xtrue; then AC_DEFINE([LOVE_ENABLE_SYSTEM_SDL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_SYSTEM_SDL], [test x$enable_system_sdl = xtrue]) AC_ARG_ENABLE([module-thread], [ --disable-module-thread Turn off module love.thread], [], [enable_thread=true]) AH_TEMPLATE([LOVE_ENABLE_THREAD], []) if test x"$enable_thread" = xtrue; then AC_DEFINE([LOVE_ENABLE_THREAD], []) fi AM_CONDITIONAL([LOVE_MODULE_THREAD], [test x$enable_thread = xtrue]) AC_ARG_ENABLE([implementation-thread-sdl], [ --disable-implementation-thread-sdl Turn off implementation love.thread.sdl], [], [enable_thread_sdl=true]) AH_TEMPLATE([LOVE_ENABLE_THREAD_SDL], []) if test x"$enable_thread_sdl" = xtrue; then AC_DEFINE([LOVE_ENABLE_THREAD_SDL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_THREAD_SDL], [test x$enable_thread_sdl = xtrue]) AC_ARG_ENABLE([module-timer], [ --disable-module-timer Turn off module love.timer], [], [enable_timer=true]) AH_TEMPLATE([LOVE_ENABLE_TIMER], []) if test x"$enable_timer" = xtrue; then AC_DEFINE([LOVE_ENABLE_TIMER], []) fi AM_CONDITIONAL([LOVE_MODULE_TIMER], [test x$enable_timer = xtrue]) AC_ARG_ENABLE([implementation-timer-sdl], [ --disable-implementation-timer-sdl Turn off implementation love.timer.sdl], [], [enable_timer_sdl=true]) AH_TEMPLATE([LOVE_ENABLE_TIMER_SDL], []) if test x"$enable_timer_sdl" = xtrue; then AC_DEFINE([LOVE_ENABLE_TIMER_SDL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_TIMER_SDL], [test x$enable_timer_sdl = xtrue]) AC_ARG_ENABLE([module-window], [ --disable-module-window Turn off module love.window], [], [enable_window=true]) AH_TEMPLATE([LOVE_ENABLE_WINDOW], []) if test x"$enable_window" = xtrue; then AC_DEFINE([LOVE_ENABLE_WINDOW], []) fi AM_CONDITIONAL([LOVE_MODULE_WINDOW], [test x$enable_window = xtrue]) AC_ARG_ENABLE([implementation-window-sdl], [ --disable-implementation-window-sdl Turn off implementation love.window.sdl], [], [enable_window_sdl=true]) AH_TEMPLATE([LOVE_ENABLE_WINDOW_SDL], []) if test x"$enable_window_sdl" = xtrue; then AC_DEFINE([LOVE_ENABLE_WINDOW_SDL], []) fi AM_CONDITIONAL([LOVE_IMPLEMENTATION_WINDOW_SDL], [test x$enable_window_sdl = xtrue]) AC_ARG_ENABLE([library-Box2D], [ --disable-library-Box2D Turn off library love.Box2D], [], [enable_Box2D=true]) AH_TEMPLATE([LOVE_ENABLE_BOX2D], []) if test x"$enable_Box2D" = xtrue; then AC_DEFINE([LOVE_ENABLE_BOX2D], []) fi AM_CONDITIONAL([LOVE_LIBRARY_BOX2D], [test x$enable_Box2D = xtrue]) AC_ARG_ENABLE([library-Wuff], [ --disable-library-Wuff Turn off library love.Wuff], [], [enable_Wuff=true]) AH_TEMPLATE([LOVE_ENABLE_WUFF], []) if test x"$enable_Wuff" = xtrue; then AC_DEFINE([LOVE_ENABLE_WUFF], []) fi AM_CONDITIONAL([LOVE_LIBRARY_WUFF], [test x$enable_Wuff = xtrue]) AC_ARG_ENABLE([library-ddsparse], [ --disable-library-ddsparse Turn off library love.ddsparse], [], [enable_ddsparse=true]) AH_TEMPLATE([LOVE_ENABLE_DDSPARSE], []) if test x"$enable_ddsparse" = xtrue; then AC_DEFINE([LOVE_ENABLE_DDSPARSE], []) fi AM_CONDITIONAL([LOVE_LIBRARY_DDSPARSE], [test x$enable_ddsparse = xtrue]) AC_ARG_ENABLE([library-enet], [ --disable-library-enet Turn off library love.enet], [], [enable_enet=true]) AH_TEMPLATE([LOVE_ENABLE_ENET], []) if test x"$enable_enet" = xtrue; then AC_DEFINE([LOVE_ENABLE_ENET], []) fi AM_CONDITIONAL([LOVE_LIBRARY_ENET], [test x$enable_enet = xtrue]) AC_ARG_ENABLE([library-luasocket], [ --disable-library-luasocket Turn off library love.luasocket], [], [enable_luasocket=true]) AH_TEMPLATE([LOVE_ENABLE_LUASOCKET], []) if test x"$enable_luasocket" = xtrue; then AC_DEFINE([LOVE_ENABLE_LUASOCKET], []) fi AM_CONDITIONAL([LOVE_LIBRARY_LUASOCKET], [test x$enable_luasocket = xtrue]) AC_ARG_ENABLE([library-noise1234], [ --disable-library-noise1234 Turn off library love.noise1234], [], [enable_noise1234=true]) AH_TEMPLATE([LOVE_ENABLE_NOISE1234], []) if test x"$enable_noise1234" = xtrue; then AC_DEFINE([LOVE_ENABLE_NOISE1234], []) fi AM_CONDITIONAL([LOVE_LIBRARY_NOISE1234], [test x$enable_noise1234 = xtrue]) AC_ARG_ENABLE([library-utf8], [ --disable-library-utf8 Turn off library love.utf8], [], [enable_utf8=true]) AH_TEMPLATE([LOVE_ENABLE_UTF8], []) if test x"$enable_utf8" = xtrue; then AC_DEFINE([LOVE_ENABLE_UTF8], []) fi AM_CONDITIONAL([LOVE_LIBRARY_UTF8], [test x$enable_utf8 = xtrue]) AC_SUBST([LOVE_SUFFIX], []) love-0.9.1/Makefile.am0000644000000000000000000000136212316602274014525 0ustar00rootroot00000000000000ACLOCAL_AMFLAGS = -I platform/unix/m4 SUBDIRS = src EXTRA_DIST = changes.txt license.txt readme.md \ platform/unix/love.desktop.in dist_man1_MANS = platform/unix/love.1 applicationsdir=$(datarootdir)/applications mimeinfodir=$(datarootdir)/mime/packages pixmapsdir=$(datarootdir)/pixmaps mimeiconsdir=$(datarootdir)/icons/hicolor/scalable/mimetypes applications_DATA = platform/unix/love.desktop dist_mimeinfo_DATA = platform/unix/love.xml dist_pixmaps_DATA = platform/unix/love.svg dist_mimeicons_DATA = platform/unix/application-x-love-game.svg platform/unix/love.desktop: platform/unix/love.desktop.in $(MKDIR_P) platform/unix rm -f $@ $@.tmp $(SED) \ -e "s|@bindir[@]|$(bindir)|" \ ${srcdir}/$@.in > $@.tmp chmod a-w $@.tmp mv $@.tmp $@ love-0.9.1/platform/0000755000000000000000000000000012316602462014312 5ustar00rootroot00000000000000love-0.9.1/platform/unix/0000755000000000000000000000000012316602462015275 5ustar00rootroot00000000000000love-0.9.1/platform/unix/install-sh0000755000000000000000000003325612316602350017306 0ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for `test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: love-0.9.1/platform/unix/application-x-love-game.svg0000644000000000000000000030405312316602350022441 0ustar00rootroot00000000000000 love-0.9.1/platform/unix/love.10000644000000000000000000000362112316602350016322 0ustar00rootroot00000000000000.\" (c) 2008-2011 Miriam Ruiz .\" (c) 2013 Bart van Strien .\" .\" This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damagesarising from the use of this software. .\" .\" Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: .\" .\" 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. .\" .\" 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. .\" .\" 3. This notice may not be removed or altered from any source distribution. .\" .\" Modifications: .\" - Update version to 0.9 and remove reference to doc dir .\" - Add fused and version flags .TH "LÖVE" "1" "0.9" "" "" .SH "NAME" love \- 2D game development framework .SH "SYNOPSIS" .B love [--fused] <\fIgame.love\fR> .PP .B love --version .PP .SH "DESCRIPTION" LÖVE was created to be a user\-friendly engine in which simple (or complicated) games could be made without having extensive knowledge of system or graphics functions and without having to dedicate time towards developing the same engine features time and time again. .P Developed with cross\-platform implementation in mind, it utilizes the latest open source libraries to deliver a similar game experience, independent of operating system. By relying on the Lua scripting language for game\-specific programming, it allows even the novice game creator to quickly and efficiently develop an idea into a fully working game. .SH "SEE ALSO" You can find more information at \fIhttp://love2d.org/\fR love-0.9.1/platform/unix/love.xml0000644000000000000000000000036212316602350016761 0ustar00rootroot00000000000000 LÖVE game love-0.9.1/platform/unix/ltmain.sh0000644000000000000000000105204412316602350017117 0ustar00rootroot00000000000000 # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.2ubuntu1 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . # GNU libtool home page: . # General help using GNU software: . PROGRAM=libtool PACKAGE=libtool VERSION="2.4.2 Debian-2.4.2-1.2ubuntu1" TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS%" test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; *) func_fatal_configuration "$modename: unknown library version type \`$version_type'" ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 love-0.9.1/platform/unix/love.desktop.in0000644000000000000000000000033012316602350020232 0ustar00rootroot00000000000000[Desktop Entry] Name=LÖVE Comment=The unquestionably awesome 2D game engine MimeType=application/x-love-game; Exec=@bindir@/love Type=Application Categories=Development;Game; Terminal=false Icon=love NoDisplay=true love-0.9.1/platform/unix/config.guess0000755000000000000000000012743212316602350017622 0ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-02-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-gnueabi else echo ${UNAME_MACHINE}-unknown-linux-gnueabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: love-0.9.1/platform/unix/ar-lib0000755000000000000000000001330312316602350016365 0ustar00rootroot00000000000000#! /bin/sh # Wrapper for Microsoft lib.exe me=ar-lib scriptversion=2012-03-01.08; # UTC # Copyright (C) 2010, 2012 Free Software Foundation, Inc. # Written by Peter Rosin . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # func_error message func_error () { echo "$me: $1" 1>&2 exit 1 } file_conv= # func_file_conv build_file # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv in mingw) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin) file=`cygpath -m "$file" || echo "$file"` ;; wine) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_at_file at_file operation archive # Iterate over all members in AT_FILE performing OPERATION on ARCHIVE # for each of them. # When interpreting the content of the @FILE, do NOT use func_file_conv, # since the user would need to supply preconverted file names to # binutils ar, at least for MinGW. func_at_file () { operation=$2 archive=$3 at_file_contents=`cat "$1"` eval set x "$at_file_contents" shift for member do $AR -NOLOGO $operation:"$member" "$archive" || exit $? done } case $1 in '') func_error "no command. Try '$0 --help' for more information." ;; -h | --h*) cat < Build-Depends: debhelper (>= 9), autotools-dev, pkg-config, libdevil-dev, libfreetype6-dev, libluajit-5.1-dev, libphysfs-dev, libsdl2-dev (>= 2.0.0), libopenal-dev, libogg-dev, libvorbis-dev, libflac-dev, libflac++-dev, libmodplug-dev, libmpg123-dev, libmng-dev Standards-Version: 3.9.3 Homepage: http://love2d.org Package: liblove@LOVE_SUFFIX@ Architecture: any Multi-Arch: same Pre-Depends: ${misc:Pre-Depends} Depends: ${misc:Depends}, ${shlibs:Depends}, libdevil1c2, libmng1, libfreetype6, libgl1-mesa-glx, libluajit-5.1-2, libphysfs-1.0-0, libsdl2-2.0-0 (>= 2.0.0), libopenal1, libogg0, libvorbis0a, libvorbisfile3, libmodplug1, libmpg123-0 Description: LOVE is a free 2D game engine which enables easy game creation in Lua. Package: love@LOVE_SUFFIX@ Architecture: any Multi-Arch: same Depends: ${misc:Depends}, liblove@LOVE_SUFFIX@ (= ${binary:Version}) Description: LOVE is a free 2D game engine which enables easy game creation in Lua. Package: love@LOVE_SUFFIX@-dbg Priority: extra Section: debug Architecture: any Multi-Arch: same Depends: ${misc:Depends}, love@LOVE_SUFFIX@ (= ${binary:Version}), Description: LOVE is a free 2D game engine which enables easy game creation in Lua. love-0.9.1/platform/unix/debian/changelog.in0000644000000000000000000000024312316602350020771 0ustar00rootroot00000000000000love@LOVE_SUFFIX@ (0.9.0~ppatest5) precise; urgency=medium * Upstream testing release -- Bart van Strien Sat, 2 Nov 2013 16:23:40 +0100 love-0.9.1/platform/unix/depcomp0000755000000000000000000005064312316602350016656 0ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2012-03-27.16; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # A tabulation character. tab=' ' # A newline character. nl=' ' if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' "$nl" < "$tmpdepfile" | ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependent.h'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. # However on # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\': # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... # tcc 0.9.26 (FIXME still under development at the moment of writing) # will emit a similar output, but also prepend the continuation lines # with horizontal tabulation characters. "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form 'foo.o: dependent.h', # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ < "$tmpdepfile" > "$depfile" sed ' s/[ '"$tab"'][ '"$tab"']*/ /g s/^ *// s/ *\\*$// s/^[^:]*: *// /^$/d /:$/d s/$/ :/ ' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test "$stat" = 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' "$nl" < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: love-0.9.1/platform/unix/missing0000755000000000000000000002415212316602350016674 0ustar00rootroot00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2012-01-06.13; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: love-0.9.1/platform/unix/config.sub0000755000000000000000000010532712316602350017264 0ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-04-18' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i386-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: love-0.9.1/platform/unix/love.svg0000644000000000000000000030573212316602350016771 0ustar00rootroot00000000000000 love-0.9.1/platform/macosx/0000755000000000000000000000000012316602463015605 5ustar00rootroot00000000000000love-0.9.1/platform/macosx/OSX.mm0000644000000000000000000000364412316602166016620 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #import "OSX.h" #import #include namespace love { namespace osx { std::string getLoveInResources() { std::string path; @autoreleasepool { // check to see if there are any .love files in Resources - props to stevejohnson/diordna NSArray *lovePaths = [[NSBundle mainBundle] pathsForResourcesOfType:@"love" inDirectory:nil]; if ([lovePaths count] > 0) { NSString *firstLovePath = [lovePaths objectAtIndex:0]; path = std::string([firstLovePath UTF8String]); } } return path; } std::string checkDropEvents() { std::string dropstr; SDL_Event event; bool initvideo = SDL_WasInit(SDL_INIT_VIDEO) != 0; if (!initvideo) SDL_InitSubSystem(SDL_INIT_VIDEO); SDL_PumpEvents(); if (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_DROPFILE, SDL_DROPFILE) > 0) { if (event.type == SDL_DROPFILE) { dropstr = std::string(event.drop.file); SDL_free(event.drop.file); } } if (!initvideo) SDL_QuitSubSystem(SDL_INIT_VIDEO); return dropstr; } } // osx } // love love-0.9.1/platform/macosx/OSX.h0000644000000000000000000000256712316602166016441 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_OSX_H #define LOVE_OSX_H #include namespace love { namespace osx { /** * Returns the filepath of the first detected love file in the Resources folder * in love.app. * Returns an empty string if no love file is found. **/ std::string getLoveInResources(); /** * Checks for drop-file events. Returns the filepath if an event occurred, or * an empty string otherwise. **/ std::string checkDropEvents(); } // osx } // love #endif // LOVE_OSX_H love-0.9.1/config.h.in0000644000000000000000000000706512316602462014521 0ustar00rootroot00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Define if socklen_t exists. */ #undef HAS_SOCKLEN_T /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Skip building launcher */ #undef LOVE_BUILD_EXE /* */ #undef LOVE_ENABLE_AUDIO /* */ #undef LOVE_ENABLE_AUDIO_NULL /* */ #undef LOVE_ENABLE_AUDIO_OPENAL /* */ #undef LOVE_ENABLE_BOX2D /* */ #undef LOVE_ENABLE_DDSPARSE /* */ #undef LOVE_ENABLE_ENET /* */ #undef LOVE_ENABLE_EVENT /* */ #undef LOVE_ENABLE_EVENT_SDL /* */ #undef LOVE_ENABLE_FILESYSTEM /* */ #undef LOVE_ENABLE_FILESYSTEM_PHYSFS /* */ #undef LOVE_ENABLE_FONT /* */ #undef LOVE_ENABLE_FONT_FREETYPE /* */ #undef LOVE_ENABLE_GRAPHICS /* */ #undef LOVE_ENABLE_GRAPHICS_OPENGL /* */ #undef LOVE_ENABLE_IMAGE /* */ #undef LOVE_ENABLE_IMAGE_MAGPIE /* */ #undef LOVE_ENABLE_JOYSTICK /* */ #undef LOVE_ENABLE_JOYSTICK_SDL /* */ #undef LOVE_ENABLE_KEYBOARD /* */ #undef LOVE_ENABLE_KEYBOARD_SDL /* */ #undef LOVE_ENABLE_LOVE /* */ #undef LOVE_ENABLE_LUASOCKET /* */ #undef LOVE_ENABLE_MATH /* */ #undef LOVE_ENABLE_MOUSE /* */ #undef LOVE_ENABLE_MOUSE_SDL /* */ #undef LOVE_ENABLE_NOISE1234 /* */ #undef LOVE_ENABLE_PHYSICS /* */ #undef LOVE_ENABLE_PHYSICS_BOX2D /* */ #undef LOVE_ENABLE_SOUND /* */ #undef LOVE_ENABLE_SOUND_LULLABY /* */ #undef LOVE_ENABLE_SYSTEM /* */ #undef LOVE_ENABLE_SYSTEM_SDL /* */ #undef LOVE_ENABLE_THREAD /* */ #undef LOVE_ENABLE_THREAD_SDL /* */ #undef LOVE_ENABLE_TIMER /* */ #undef LOVE_ENABLE_TIMER_SDL /* */ #undef LOVE_ENABLE_UTF8 /* */ #undef LOVE_ENABLE_WINDOW /* */ #undef LOVE_ENABLE_WINDOW_SDL /* */ #undef LOVE_ENABLE_WUFF /* Build without mpg123 */ #undef LOVE_NOMPG123 /* Enable gme */ #undef LOVE_SUPPORT_GME /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif love-0.9.1/configure.ac0000644000000000000000000001373612316602274014767 0ustar00rootroot00000000000000AC_INIT([love], [0.9.1]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_AUX_DIR([platform/unix]) AC_CONFIG_MACRO_DIR([platform/unix/m4]) AC_CONFIG_SRCDIR([src/love.cpp]) AM_INIT_AUTOMAKE([foreign -Wall foreign tar-ustar silent-rules]) AM_SILENT_RULES AC_PREFIX_DEFAULT([/usr]) m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) AC_PROG_LIBTOOL AC_PROG_CC AC_PROG_CXX AC_PROG_SED AC_PROG_MKDIR_P AC_PROG_OBJCXX AC_C_BIGENDIAN AC_LANG([C++]) includes= AC_DEFUN([ACLOVE_CXX_FLAG_TEST], # WARNING: NOT REENTRANT [aclove_cxx_flag_test_save_cflags="$CXXFLAGS" CXXFLAGS="$1" AC_MSG_CHECKING([whether $CXX supports flag $1]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes])]; $2, [AC_MSG_RESULT([no]); $3]) CXXFLAGS="$aclove_cxx_flag_test_save_cflags"]) AC_DEFUN([LOVE_MSG_ERROR], [AC_MSG_ERROR([LÖVE needs "$1"[,] please install "$1" with development files and try again])]) # C++11 support cxx11name="no" ACLOVE_CXX_FLAG_TEST([-std=c++0x], cxx11name="c++0x", []) ACLOVE_CXX_FLAG_TEST([-std=c++11], cxx11name="c++11", []) AS_VAR_IF([cxx11name], [no], AC_MSG_ERROR([LÖVE needs a C++ compiler with C++11 support]), CXXFLAGS="$CXXFLAGS -std=$cxx11name") # Allow people on OSX to use autotools, they need their platform files AC_ARG_ENABLE([osx], AC_HELP_STRING([--enable-osx], [Compile platform-specific files for OSX]), [], [enable_osx=no]) AS_VAR_IF([enable_osx], [no], [], #else ac_cv_search_glLoadIdentity="-framework OpenGL" AC_SUBST([LDFLAGS], ["${LDFLAGS} -framework CoreFoundation -framework Cocoa"]) AC_SUBST([CPPFLAGS], ["${CPPFLAGS} -I../platform/macosx"])) # --with-lua and --with-luaversion AC_ARG_WITH([lua], [AS_HELP_STRING([--with-lua], [Select the lua implementation])], [], [with_lua=luajit]) AC_ARG_WITH([luaversion], [AS_HELP_STRING([--with-luaversion], [Select the lua version])], [], [with_luaversion=5.1]) # pkg-config libraries AM_PATH_SDL2([], [], [LOVE_MSG_ERROR([SDL 2])]) PKG_CHECK_MODULES([lua], [${with_lua}${with_luaversion}], [lua_found=yes], [PKG_CHECK_MODULES([lua], [${with_lua}], [lua_found=yes], [lua_found=no])]) PKG_CHECK_MODULES([freetype2], [freetype2], [], [LOVE_MSG_ERROR([FreeType2])]) PKG_CHECK_MODULES([openal], [openal], [], [LOVE_MSG_ERROR([OpenAL])]) PKG_CHECK_MODULES([devil], [IL], [], [LOVE_MSG_ERROR([DevIL])]) PKG_CHECK_MODULES([libmodplug], [libmodplug], [], [LOVE_MSG_ERROR([libmodplug])]) PKG_CHECK_MODULES([vorbisfile], [vorbisfile], [], [LOVE_MSG_ERROR([libvorbis and libvorbisfile])]) # Other libraries AC_SEARCH_LIBS([sqrt], [m], [], [LOVE_MSG_ERROR([the C math library])]) AC_SEARCH_LIBS([PHYSFS_init], [physfs], [], [LOVE_MSG_ERROR([PhysicsFS])]) AC_SEARCH_LIBS([glLoadIdentity], [GL], [], [LOVE_MSG_ERROR([OpenGL])]) # Lua, treated seperately because of --with-lua AS_VAR_IF([with_luaversion], [5.2], [luatest=lua_version], [luatest=lua_pcall]) # use lua_version for 5.2 AS_VAR_IF([lua_found], [yes], #if [ luaheaders_found=yes AC_MSG_CHECKING([for library containing ${luatest}]) AC_MSG_RESULT([${lua_LIBS}])], #else [ AC_MSG_WARN([Could not find pkg-config definition for ${with_lua}${with_luaversion} or ${with_lua}, falling back to manual detection]) AC_SEARCH_LIBS([$luatest], ["${with_lua}${with_luaversion}" "${with_lua}"], [], [LOVE_MSG_ERROR([$with_lua])]) luaheaders_found=no AC_CHECK_HEADER(["${with_lua}${with_luaversion}/lua.h"], [luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}${with_luaversion}"], []) AC_CHECK_HEADER(["${with_lua}/lua.h"], [luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}"], [])]) AS_VAR_IF([luaheaders_found], [yes], [], #else [ AC_MSG_WARN([Could not locate lua headers for ${with_lua}${with_luaversion} or ${with_lua}, you probably need to specify them with CPPFLAGS])]) # mpg123, treated seperately because it can be disabled (default on) # also not pkg-config because of the FILE_OFFSET_BITS.. bit AC_ARG_ENABLE([mpg123], AC_HELP_STRING([--disable-mpg123], [Disable mp3 support, for patent-free builds]), [], [enable_mpg123=yes]) AS_VAR_IF([enable_mpg123], [no], AC_DEFINE([LOVE_NOMPG123], [], [Build without mpg123]), # else AC_SEARCH_LIBS([mpg123_open_feed], [mpg123], [], [LOVE_MSG_ERROR([libmpg123])]) AC_SEARCH_LIBS([mpg123_seek_64], [mpg123], AC_SUBST([FILE_OFFSET],[-D_FILE_OFFSET_BITS=64]), AC_SUBST([FILE_OFFSET],[]))) # GME, treated seperately because it can be enabled (default off) AC_ARG_ENABLE([gme], AC_HELP_STRING([--enable-gme], [Enable GME support, for more chiptuney goodness]), [], [enable_gme=no]) AS_VAR_IF([enable_gme], [yes], AC_SEARCH_LIBS([gme_open_data], [gme], [], [LOVE_MSG_ERROR([gme])]) AC_DEFINE([LOVE_SUPPORT_GME], [], [Enable gme]) AC_CHECK_HEADER([gme/gme.h], [includes="$includes -I/usr/include/gme"], [])) # libenet check for socklen_t AC_CHECK_TYPE([socklen_t], [AC_DEFINE([HAS_SOCKLEN_T], [1], [Define if socklen_t exists.] )], , #include #include ) # Optionally build the executable (default on) AC_ARG_ENABLE([exe], AC_HELP_STRING([--disable-exe], [Disable building of executable launcher]), [], [enable_exe=yes]) AS_VAR_IF([enable_exe], [no], [], #else AC_DEFINE([LOVE_BUILD_EXE], [], [Skip building launcher])) AM_CONDITIONAL([LOVE_BUILD_EXE], [test "x$enable_exe" != xno]) AM_CONDITIONAL([LOVE_NOMPG123], [test "x$enable_mpg123" = xno]) AM_CONDITIONAL([LOVE_TARGET_OSX], [test "x$enable_osx" != xno]) # Automatic script file rebuilding AC_CHECK_PROGS([LUA_EXECUTABLE], ["${with_lua}${with_luaversion}" "${with_lua}" "lua"], [:]) AS_VAR_IF([LUA_EXECUTABLE], [:], [AC_MSG_WARN([Did not find a lua executable, you may need to update the scripts manually if you change them])], []) # Set our includes as automake variable AC_SUBST([LOVE_INCLUDES], ["$includes"]) m4_include([configure-modules.ac]) AC_CONFIG_FILES([ Makefile src/Makefile platform/unix/debian/control platform/unix/debian/changelog platform/unix/debian/rules ]) AC_OUTPUT chmod 755 platform/unix/debian/rules love-0.9.1/Makefile.in0000644000000000000000000010307112316602302014526 0ustar00rootroot00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = $(am__configure_deps) $(dist_man1_MANS) \ $(dist_mimeicons_DATA) $(dist_mimeinfo_DATA) \ $(dist_pixmaps_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure \ $(top_srcdir)/platform/unix/debian/changelog.in \ $(top_srcdir)/platform/unix/debian/control.in \ $(top_srcdir)/platform/unix/debian/rules.in \ platform/unix/ar-lib platform/unix/config.guess \ platform/unix/config.sub platform/unix/depcomp \ platform/unix/install-sh platform/unix/ltmain.sh \ platform/unix/missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure-modules.ac \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = platform/unix/debian/control \ platform/unix/debian/changelog platform/unix/debian/rules CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" \ "$(DESTDIR)$(applicationsdir)" "$(DESTDIR)$(mimeiconsdir)" \ "$(DESTDIR)$(mimeinfodir)" "$(DESTDIR)$(pixmapsdir)" NROFF = nroff MANS = $(dist_man1_MANS) DATA = $(applications_DATA) $(dist_mimeicons_DATA) \ $(dist_mimeinfo_DATA) $(dist_pixmaps_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILE_OFFSET = @FILE_OFFSET@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOVE_INCLUDES = @LOVE_INCLUDES@ LOVE_SUFFIX = @LOVE_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ LUA_EXECUTABLE = @LUA_EXECUTABLE@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJCXX = @OBJCXX@ OBJCXXFLAGS = @OBJCXXFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SDL2_CONFIG = @SDL2_CONFIG@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_OBJCXX = @ac_ct_OBJCXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ devil_CFLAGS = @devil_CFLAGS@ devil_LIBS = @devil_LIBS@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ freetype2_CFLAGS = @freetype2_CFLAGS@ freetype2_LIBS = @freetype2_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libmodplug_CFLAGS = @libmodplug_CFLAGS@ libmodplug_LIBS = @libmodplug_LIBS@ localedir = @localedir@ localstatedir = @localstatedir@ lua_CFLAGS = @lua_CFLAGS@ lua_LIBS = @lua_LIBS@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ openal_CFLAGS = @openal_CFLAGS@ openal_LIBS = @openal_LIBS@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vorbisfile_CFLAGS = @vorbisfile_CFLAGS@ vorbisfile_LIBS = @vorbisfile_LIBS@ ACLOCAL_AMFLAGS = -I platform/unix/m4 SUBDIRS = src EXTRA_DIST = changes.txt license.txt readme.md \ platform/unix/love.desktop.in dist_man1_MANS = platform/unix/love.1 applicationsdir = $(datarootdir)/applications mimeinfodir = $(datarootdir)/mime/packages pixmapsdir = $(datarootdir)/pixmaps mimeiconsdir = $(datarootdir)/icons/hicolor/scalable/mimetypes applications_DATA = platform/unix/love.desktop dist_mimeinfo_DATA = platform/unix/love.xml dist_pixmaps_DATA = platform/unix/love.svg dist_mimeicons_DATA = platform/unix/application-x-love-game.svg all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 platform/unix/debian/control: $(top_builddir)/config.status $(top_srcdir)/platform/unix/debian/control.in cd $(top_builddir) && $(SHELL) ./config.status $@ platform/unix/debian/changelog: $(top_builddir)/config.status $(top_srcdir)/platform/unix/debian/changelog.in cd $(top_builddir) && $(SHELL) ./config.status $@ platform/unix/debian/rules: $(top_builddir)/config.status $(top_srcdir)/platform/unix/debian/rules.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-man1: $(dist_man1_MANS) @$(NORMAL_INSTALL) @list1='$(dist_man1_MANS)'; \ list2=''; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-applicationsDATA: $(applications_DATA) @$(NORMAL_INSTALL) @list='$(applications_DATA)'; test -n "$(applicationsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(applicationsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(applicationsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(applicationsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(applicationsdir)" || exit $$?; \ done uninstall-applicationsDATA: @$(NORMAL_UNINSTALL) @list='$(applications_DATA)'; test -n "$(applicationsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(applicationsdir)'; $(am__uninstall_files_from_dir) install-dist_mimeiconsDATA: $(dist_mimeicons_DATA) @$(NORMAL_INSTALL) @list='$(dist_mimeicons_DATA)'; test -n "$(mimeiconsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(mimeiconsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(mimeiconsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mimeiconsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(mimeiconsdir)" || exit $$?; \ done uninstall-dist_mimeiconsDATA: @$(NORMAL_UNINSTALL) @list='$(dist_mimeicons_DATA)'; test -n "$(mimeiconsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(mimeiconsdir)'; $(am__uninstall_files_from_dir) install-dist_mimeinfoDATA: $(dist_mimeinfo_DATA) @$(NORMAL_INSTALL) @list='$(dist_mimeinfo_DATA)'; test -n "$(mimeinfodir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(mimeinfodir)'"; \ $(MKDIR_P) "$(DESTDIR)$(mimeinfodir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mimeinfodir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(mimeinfodir)" || exit $$?; \ done uninstall-dist_mimeinfoDATA: @$(NORMAL_UNINSTALL) @list='$(dist_mimeinfo_DATA)'; test -n "$(mimeinfodir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(mimeinfodir)'; $(am__uninstall_files_from_dir) install-dist_pixmapsDATA: $(dist_pixmaps_DATA) @$(NORMAL_INSTALL) @list='$(dist_pixmaps_DATA)'; test -n "$(pixmapsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pixmapsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pixmapsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pixmapsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pixmapsdir)" || exit $$?; \ done uninstall-dist_pixmapsDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pixmaps_DATA)'; test -n "$(pixmapsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pixmapsdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(MANS) $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(applicationsdir)" "$(DESTDIR)$(mimeiconsdir)" "$(DESTDIR)$(mimeinfodir)" "$(DESTDIR)$(pixmapsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-applicationsDATA install-dist_mimeiconsDATA \ install-dist_mimeinfoDATA install-dist_pixmapsDATA install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-applicationsDATA uninstall-dist_mimeiconsDATA \ uninstall-dist_mimeinfoDATA uninstall-dist_pixmapsDATA \ uninstall-man uninstall-man: uninstall-man1 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-applicationsDATA install-data \ install-data-am install-dist_mimeiconsDATA \ install-dist_mimeinfoDATA install-dist_pixmapsDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-applicationsDATA \ uninstall-dist_mimeiconsDATA uninstall-dist_mimeinfoDATA \ uninstall-dist_pixmapsDATA uninstall-man uninstall-man1 platform/unix/love.desktop: platform/unix/love.desktop.in $(MKDIR_P) platform/unix rm -f $@ $@.tmp $(SED) \ -e "s|@bindir[@]|$(bindir)|" \ ${srcdir}/$@.in > $@.tmp chmod a-w $@.tmp mv $@.tmp $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: love-0.9.1/src/0000755000000000000000000000000012316602463013256 5ustar00rootroot00000000000000love-0.9.1/src/common/0000755000000000000000000000000012316602462014545 5ustar00rootroot00000000000000love-0.9.1/src/common/Module.cpp0000644000000000000000000000540112316602166016477 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "Module.h" #include "Exception.h" // std #include #include #include namespace { typedef std::map ModuleRegistry; // The registry must be dynamically managed, because some modules // (the math module) are static globals that are not guaranteed to // be destroyed before other static globals. ModuleRegistry *registry = nullptr; ModuleRegistry ®istryInstance() { if (!registry) registry = new ModuleRegistry; return *registry; } void freeEmptyRegistry() { if (registry && registry->empty()) { delete registry; registry = nullptr; } } } // anonymous namespace namespace love { Module::~Module() { ModuleRegistry ®istry = registryInstance(); // We can't use the overridden Module::getName() in this destructor. for (auto it = registry.begin(); it != registry.end(); ++it) { if (it->second == this) { registry.erase(it); break; } } freeEmptyRegistry(); } void Module::registerInstance(Module *instance) { if (instance == nullptr) throw Exception("Module instance is null"); std::string name(instance->getName()); ModuleRegistry ®istry = registryInstance(); auto it = registry.find(name); if (it != registry.end()) { if (it->second == instance) return; throw Exception("Module %s already registered!", instance->getName()); } registry.insert(make_pair(name, instance)); } Module *Module::getInstance(const std::string &name) { ModuleRegistry ®istry = registryInstance(); auto it = registry.find(name); if (registry.end() == it) return nullptr; return it->second; } Module *Module::findInstance(const std::string &name) { ModuleRegistry ®istry = registryInstance(); for (auto it = registry.begin(); it != registry.end(); ++it) { if (it->first.find(name) == 0) return it->second; } return nullptr; } } // love love-0.9.1/src/common/runtime.cpp0000644000000000000000000004342612316602166016746 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "config.h" #include "runtime.h" // LOVE #include "Module.h" #include "Object.h" #include "Reference.h" #include "StringMap.h" #include // C++ #include #include #include namespace love { static thread::Mutex *gcmutex = 0; void *_gcmutex = 0; /** * Called when an object is collected. The object is released * once in this function, possibly deleting it. **/ static int w__gc(lua_State *L) { if (!gcmutex) { gcmutex = thread::newMutex(); _gcmutex = (void *) gcmutex; } Proxy *p = (Proxy *)lua_touserdata(L, 1); Object *t = (Object *)p->data; thread::Lock lock(gcmutex); int numretains = p->retains; if (numretains >= 0) numretains = std::min(numretains, t->getReferenceCount()); for (int i = numretains; i > 0; i--) t->release(); // Signal that this Proxy is dead. p->retains = -1; return 0; } static int w__tostring(lua_State *L) { lua_pushvalue(L, lua_upvalueindex(1)); return 1; } static int w__typeOf(lua_State *L) { Proxy *p = (Proxy *)lua_touserdata(L, 1); Type t = luax_type(L, 2); luax_pushboolean(L, p->flags[t]); return 1; } static int w__eq(lua_State *L) { Proxy *p1 = (Proxy *)lua_touserdata(L, 1); Proxy *p2 = (Proxy *)lua_touserdata(L, 2); luax_pushboolean(L, p1->data == p2->data); return 1; } Reference *luax_refif(lua_State *L, int type) { Reference *r = 0; // Create a reference only if the test succeeds. if (lua_type(L, -1) == type) r = new Reference(L); else // Pop the value even if it fails (but also if it succeeds). lua_pop(L, 1); return r; } void luax_printstack(lua_State *L) { for (int i = 1; i<=lua_gettop(L); i++) { std::cout << i << " - " << luaL_typename(L, i) << std::endl; } } bool luax_toboolean(lua_State *L, int idx) { return (lua_toboolean(L, idx) != 0); } void luax_pushboolean(lua_State *L, bool b) { lua_pushboolean(L, b ? 1 : 0); } bool luax_optboolean(lua_State *L, int idx, bool b) { if (lua_isboolean(L, idx) == 1) return (lua_toboolean(L, idx) == 1 ? true : false); return b; } std::string luax_tostring(lua_State *L, int idx) { size_t len; const char *str = lua_tolstring(L, idx, &len); return std::string(str, len); } std::string luax_checkstring(lua_State *L, int idx) { size_t len; const char *str = luaL_checklstring(L, idx, &len); return std::string(str, len); } void luax_pushstring(lua_State *L, const std::string &str) { lua_pushlstring(L, str.data(), str.size()); } bool luax_boolflag(lua_State *L, int table_index, const char *key, bool defaultValue) { lua_getfield(L, table_index, key); bool retval; if (lua_isnoneornil(L, -1)) retval = defaultValue; else retval = lua_toboolean(L, -1); lua_pop(L, 1); return retval; } int luax_intflag(lua_State *L, int table_index, const char *key, int defaultValue) { lua_getfield(L, table_index, key); int retval; if (!lua_isnumber(L, -1)) retval = defaultValue; else retval = (int) lua_tointeger(L, -1); lua_pop(L, 1); return retval; } int luax_assert_argc(lua_State *L, int min) { int argc = lua_gettop(L); if (argc < min) return luaL_error(L, "Incorrect number of arguments. Got [%d], expected at least [%d]", argc, min); return 0; } int luax_assert_argc(lua_State *L, int min, int max) { int argc = lua_gettop(L); if (argc < min || argc > max) return luaL_error(L, "Incorrect number of arguments. Got [%d], expected [%d-%d]", argc, min, max); return 0; } int luax_assert_function(lua_State *L, int idx) { if (!lua_isfunction(L, idx)) return luaL_error(L, "Argument must be of type \"function\"."); return 0; } int luax_assert_nilerror(lua_State *L, int idx) { if (lua_isnoneornil(L, idx)) { if (lua_isstring(L, idx + 1)) return luaL_error(L, lua_tostring(L, idx + 1)); else return luaL_error(L, "assertion failed!"); } return 0; } void luax_setfuncs(lua_State *L, const luaL_Reg *l) { if (l == 0) return; for (; l->name != 0; l++) { lua_pushcfunction(L, l->func); lua_setfield(L, -2, l->name); } } int luax_register_module(lua_State *L, const WrappedModule &m) { // Put a reference to the C++ module in Lua. luax_insistregistry(L, REGISTRY_MODULES); Proxy *p = (Proxy *)lua_newuserdata(L, sizeof(Proxy)); p->retains = 1; p->data = m.module; p->flags = m.flags; luaL_newmetatable(L, m.module->getName()); lua_pushvalue(L, -1); lua_setfield(L, -2, "__index"); lua_pushcfunction(L, w__gc); lua_setfield(L, -2, "__gc"); lua_setmetatable(L, -2); lua_setfield(L, -2, m.name); // _modules[name] = proxy lua_pop(L, 1); // Gets the love table. luax_insistglobal(L, "love"); // Create new table for module. lua_newtable(L); // Register all the functions. if (m.functions != 0) luax_setfuncs(L, m.functions); // Register types. if (m.types != 0) for (const lua_CFunction *t = m.types; *t != 0; t++) (*t)(L); lua_pushvalue(L, -1); lua_setfield(L, -3, m.name); // love.graphics = table lua_remove(L, -2); // love // Register module instance Module::registerInstance(m.module); return 1; } int luax_preload(lua_State *L, lua_CFunction f, const char *name) { lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); lua_pushcfunction(L, f); lua_setfield(L, -2, name); lua_pop(L, 2); return 0; } int luax_register_type(lua_State *L, const char *tname, const luaL_Reg *f) { // Verify that this type name has a matching Type ID and type name mapping. love::Type ltype; if (!love::getType(tname, ltype)) printf("Missing type entry for type name: %s\n", tname); // Get the place for storing and re-using instantiated love types. luax_getregistry(L, REGISTRY_TYPES); // Create registry._lovetypes if it doesn't exist yet. if (!lua_istable(L, -1)) { lua_newtable(L); lua_replace(L, -2); // Create a metatable. lua_newtable(L); // metatable.__mode = "v". Weak userdata values. lua_pushliteral(L, "v"); lua_setfield(L, -2, "__mode"); // setmetatable(newtable, metatable) lua_setmetatable(L, -2); // registry._lovetypes = newtable lua_setfield(L, LUA_REGISTRYINDEX, "_lovetypes"); } else lua_pop(L, 1); luaL_newmetatable(L, tname); // m.__index = m lua_pushvalue(L, -1); lua_setfield(L, -2, "__index"); // setup gc lua_pushcfunction(L, w__gc); lua_setfield(L, -2, "__gc"); // Add equality lua_pushcfunction(L, w__eq); lua_setfield(L, -2, "__eq"); // Add tostring function. lua_pushstring(L, tname); lua_pushcclosure(L, w__tostring, 1); lua_setfield(L, -2, "__tostring"); // Add tostring to as type() as well. lua_pushstring(L, tname); lua_pushcclosure(L, w__tostring, 1); lua_setfield(L, -2, "type"); // Add typeOf lua_pushcfunction(L, w__typeOf); lua_setfield(L, -2, "typeOf"); if (f != 0) luax_setfuncs(L, f); lua_pop(L, 1); // Pops metatable. return 0; } int luax_table_insert(lua_State *L, int tindex, int vindex, int pos) { if (tindex < 0) tindex = lua_gettop(L)+1+tindex; if (vindex < 0) vindex = lua_gettop(L)+1+vindex; if (pos == -1) { lua_pushvalue(L, vindex); lua_rawseti(L, tindex, lua_objlen(L, tindex)+1); return 0; } else if (pos < 0) pos = lua_objlen(L, tindex)+1+pos; for (int i = lua_objlen(L, tindex)+1; i > pos; i--) { lua_rawgeti(L, tindex, i-1); lua_rawseti(L, tindex, i); } lua_pushvalue(L, vindex); lua_rawseti(L, tindex, pos); return 0; } int luax_register_searcher(lua_State *L, lua_CFunction f, int pos) { // Add the package loader to the package.loaders table. lua_getglobal(L, "package"); if (lua_isnil(L, -1)) return luaL_error(L, "Can't register searcher: package table does not exist."); lua_getfield(L, -1, "loaders"); // Lua 5.2 renamed package.loaders to package.searchers. if (lua_isnil(L, -1)) { lua_pop(L, 1); lua_getfield(L, -1, "searchers"); } if (lua_isnil(L, -1)) return luaL_error(L, "Can't register searcher: package.loaders table does not exist."); lua_pushcfunction(L, f); luax_table_insert(L, -2, -1, pos); lua_pop(L, 3); return 0; } void luax_rawnewtype(lua_State *L, const char *name, bits flags, love::Object *data, bool own) { Proxy *u = (Proxy *)lua_newuserdata(L, sizeof(Proxy)); u->data = (void *) data; u->flags = flags; u->retains = own ? 1 : 0; luaL_newmetatable(L, name); lua_setmetatable(L, -2); } void luax_pushtype(lua_State *L, const char *name, bits flags, love::Object *data, bool own) { // Fetch the registry table of instantiated types. luax_getregistry(L, REGISTRY_TYPES); // The table might not exist - it should be insisted in luax_register_type. if (!lua_istable(L, -1)) { lua_pop(L, 1); return luax_rawnewtype(L, name, flags, data, own); } // Get the value of lovetypes[data] on the stack. lua_pushlightuserdata(L, (void *) data); lua_gettable(L, -2); // If the Proxy userdata isn't in the instantiated types table yet, add it. if (lua_type(L, -1) != LUA_TUSERDATA) { lua_pop(L, 1); luax_rawnewtype(L, name, flags, data, own); lua_pushlightuserdata(L, (void *) data); lua_pushvalue(L, -2); // lovetypes[data] = Proxy. lua_settable(L, -4); // Remove the lovetypes table from the stack. lua_remove(L, -2); // The Proxy userdata remains at the top of the stack. return; } // Remove the lovetypes table from the stack. lua_remove(L, -2); // If the object should be released on GC and we already have a stored // Proxy, we should tell the Proxy that the object was retained again. if (own) { Proxy *p = (Proxy *) lua_touserdata(L, -1); thread::EmptyLock lock; if (gcmutex) lock.setLock(gcmutex); if (p->retains >= 0) ++(p->retains); } // Keep the Proxy userdata on the stack. } bool luax_istype(lua_State *L, int idx, love::bits type) { if (lua_type(L, idx) != LUA_TUSERDATA) return false; return ((((Proxy *)lua_touserdata(L, idx))->flags & type) == type); } int luax_getfunction(lua_State *L, const char *mod, const char *fn) { lua_getglobal(L, "love"); if (lua_isnil(L, -1)) return luaL_error(L, "Could not find global love!"); lua_getfield(L, -1, mod); if (lua_isnil(L, -1)) return luaL_error(L, "Could not find love.%s!", mod); lua_getfield(L, -1, fn); if (lua_isnil(L, -1)) return luaL_error(L, "Could not find love.%s.%s!", mod, fn); lua_remove(L, -2); // remove mod lua_remove(L, -2); // remove fn return 0; } int luax_convobj(lua_State *L, int idx, const char *mod, const char *fn) { // Convert string to a file. luax_getfunction(L, mod, fn); lua_pushvalue(L, idx); // The initial argument. lua_call(L, 1, 2); // Call the function, one arg, one return value (plus optional errstring.) luax_assert_nilerror(L, -2); // Make sure the function returned something. lua_pop(L, 1); // Pop the second return value now that we don't need it. lua_replace(L, idx); // Replace the initial argument with the new object. return 0; } int luax_convobj(lua_State *L, int idxs[], int n, const char *mod, const char *fn) { luax_getfunction(L, mod, fn); for (int i = 0; i < n; i++) { lua_pushvalue(L, idxs[i]); // The arguments. } lua_call(L, n, 2); // Call the function, n args, one return value (plus optional errstring.) luax_assert_nilerror(L, -2); // Make sure the function returned something. lua_pop(L, 1); // Pop the second return value now that we don't need it. lua_replace(L, idxs[0]); // Replace the initial argument with the new object. return 0; } int luax_pconvobj(lua_State *L, int idx, const char *mod, const char *fn) { // Convert string to a file. luax_getfunction(L, mod, fn); lua_pushvalue(L, idx); // The initial argument. int ret = lua_pcall(L, 1, 1, 0); // Call the function, one arg, one return value. if (ret == 0) lua_replace(L, idx); // Replace the initial argument with the new object. return ret; } int luax_pconvobj(lua_State *L, int idxs[], int n, const char *mod, const char *fn) { luax_getfunction(L, mod, fn); for (int i = 0; i < n; i++) { lua_pushvalue(L, idxs[i]); // The arguments. } int ret = lua_pcall(L, n, 1, 0); // Call the function, n args, one return value. if (ret == 0) lua_replace(L, idxs[0]); // Replace the initial argument with the new object. return ret; } int luax_insist(lua_State *L, int idx, const char *k) { // Convert to absolute index if necessary. if (idx < 0 && idx > LUA_REGISTRYINDEX) idx = lua_gettop(L) + ++idx; lua_getfield(L, idx, k); // Create if necessary. if (!lua_istable(L, -1)) { lua_pop(L, 1); // Pop the non-table. lua_newtable(L); lua_pushvalue(L, -1); // Duplicate the table to leave on top. lua_setfield(L, idx, k); // lua_stack[idx][k] = lua_stack[-1] (table) } return 1; } int luax_insistglobal(lua_State *L, const char *k) { lua_getglobal(L, k); if (!lua_istable(L, -1)) { lua_pop(L, 1); // Pop the non-table. lua_newtable(L); lua_pushvalue(L, -1); lua_setglobal(L, k); } return 1; } int luax_insistlove(lua_State *L, const char *k) { luax_insistglobal(L, "love"); luax_insist(L, -1, k); // The love table should be replaced with the top stack // item. Only the reqested table should remain on the stack. lua_replace(L, -2); return 1; } int luax_getlove(lua_State *L, const char *k) { lua_getglobal(L, "love"); if (!lua_isnil(L, -1)) { lua_getfield(L, -1, k); lua_replace(L, -2); } return 1; } int luax_insistregistry(lua_State *L, Registry r) { switch (r) { case REGISTRY_GC: return luax_insistlove(L, "_gc"); case REGISTRY_MODULES: return luax_insistlove(L, "_modules"); case REGISTRY_TYPES: return luax_insist(L, LUA_REGISTRYINDEX, "_lovetypes"); default: return luaL_error(L, "Attempted to use invalid registry."); } } int luax_getregistry(lua_State *L, Registry r) { switch (r) { case REGISTRY_GC: return luax_getlove(L, "_gc"); case REGISTRY_MODULES: return luax_getlove(L, "_modules"); case REGISTRY_TYPES: lua_getfield(L, LUA_REGISTRYINDEX, "_lovetypes"); return 1; default: return luaL_error(L, "Attempted to use invalid registry."); } } extern "C" int luax_typerror(lua_State *L, int narg, const char *tname) { int argtype = lua_type(L, narg); const char *argtname = 0; // We want to use the love type name for userdata, if possible. if (argtype == LUA_TUSERDATA && luaL_getmetafield(L, narg, "__tostring") != 0) { lua_pushvalue(L, narg); if (lua_pcall(L, 1, 1, 0) == 0 && lua_type(L, -1) == LUA_TSTRING) { argtname = lua_tostring(L, -1); // Non-love userdata might have a tostring metamethod which doesn't // describe its type, so we only use __tostring for love types. love::Type t; if (!love::getType(argtname, t)) argtname = 0; } } if (argtname == 0) argtname = lua_typename(L, argtype); const char *msg = lua_pushfstring(L, "%s expected, got %s", tname, argtname); return luaL_argerror(L, narg, msg); } StringMap::Entry typeEntries[] = { {"Invalid", INVALID_ID}, {"Object", OBJECT_ID}, {"Data", DATA_ID}, {"Module", MODULE_ID}, // Filesystem {"File", FILESYSTEM_FILE_ID}, {"FileData", FILESYSTEM_FILE_DATA_ID}, // Font {"GlyphData", FONT_GLYPH_DATA_ID}, {"Rasterizer", FONT_RASTERIZER_ID}, // Graphics {"Drawable", GRAPHICS_DRAWABLE_ID}, {"Texture", GRAPHICS_TEXTURE_ID}, {"Image", GRAPHICS_IMAGE_ID}, {"Quad", GRAPHICS_QUAD_ID}, {"Font", GRAPHICS_FONT_ID}, {"ParticleSystem", GRAPHICS_PARTICLE_SYSTEM_ID}, {"SpriteBatch", GRAPHICS_SPRITE_BATCH_ID}, {"Canvas", GRAPHICS_CANVAS_ID}, {"Shader", GRAPHICS_SHADER_ID}, {"Mesh", GRAPHICS_MESH_ID}, // Image {"ImageData", IMAGE_IMAGE_DATA_ID}, {"CompressedData", IMAGE_COMPRESSED_DATA_ID}, // Joystick {"Joystick", JOYSTICK_JOYSTICK_ID}, // Math {"RandomGenerator", MATH_RANDOM_GENERATOR_ID}, {"BezierCurve", MATH_BEZIER_CURVE_ID}, // Audio {"Source", AUDIO_SOURCE_ID}, // Sound {"SoundData", SOUND_SOUND_DATA_ID}, {"Decoder", SOUND_DECODER_ID}, // Mouse {"Cursor", MOUSE_CURSOR_ID}, // Physics {"World", PHYSICS_WORLD_ID}, {"Contact", PHYSICS_CONTACT_ID}, {"Body", PHYSICS_BODY_ID}, {"Fixture", PHYSICS_FIXTURE_ID}, {"Shape", PHYSICS_SHAPE_ID}, {"CircleShape", PHYSICS_CIRCLE_SHAPE_ID}, {"PolygonShape", PHYSICS_POLYGON_SHAPE_ID}, {"EdgeShape", PHYSICS_EDGE_SHAPE_ID}, {"ChainShape", PHYSICS_CHAIN_SHAPE_ID}, {"Joint", PHYSICS_JOINT_ID}, {"MouseJoint", PHYSICS_MOUSE_JOINT_ID}, {"DistanceJoint", PHYSICS_DISTANCE_JOINT_ID}, {"PrismaticJoint", PHYSICS_PRISMATIC_JOINT_ID}, {"RevoluteJoint", PHYSICS_REVOLUTE_JOINT_ID}, {"PulleyJoint", PHYSICS_PULLEY_JOINT_ID}, {"GearJoint", PHYSICS_GEAR_JOINT_ID}, {"FrictionJoint", PHYSICS_FRICTION_JOINT_ID}, {"WeldJoint", PHYSICS_WELD_JOINT_ID}, {"RopeJoint", PHYSICS_ROPE_JOINT_ID}, {"WheelJoint", PHYSICS_WHEEL_JOINT_ID}, {"MotorJoint", PHYSICS_MOTOR_JOINT_ID}, // Thread {"Thread", THREAD_THREAD_ID}, {"Channel", THREAD_CHANNEL_ID}, // The modules themselves. Only add abstracted modules here. {"filesystem", MODULE_FILESYSTEM_ID}, {"graphics", MODULE_GRAPHICS_ID}, {"image", MODULE_IMAGE_ID}, {"sound", MODULE_SOUND_ID}, }; StringMap types(typeEntries, sizeof(typeEntries)); bool getType(const char *in, love::Type &out) { return types.find(in, out); } bool getType(love::Type in, const char *&out) { return types.find(in, out); } Type luax_type(lua_State *L, int idx) { Type t = INVALID_ID; types.find(luaL_checkstring(L, idx), t); return t; } } // love love-0.9.1/src/common/utf8.cpp0000755000000000000000000000400212316602166016137 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "utf8.h" #ifdef LOVE_WINDOWS namespace love { std::string to_utf8(LPCWSTR wstr) { size_t wide_len = wcslen(wstr)+1; // Get size in UTF-8. int utf8_size = WideCharToMultiByte(CP_UTF8, 0, wstr, wide_len, 0, 0, 0, 0); char *utf8_str = new char[utf8_size]; // Convert to UTF-8. int ok = WideCharToMultiByte(CP_UTF8, 0, wstr, wide_len, utf8_str, utf8_size, 0, 0); std::string ret; if (ok) ret = utf8_str; delete[] utf8_str; return ret; } std::wstring to_widestr(const std::string &str) { if (str.empty()) return std::wstring(); int wide_size = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), (int) str.length(), nullptr, 0); if (wide_size == 0) return std::wstring(); std::wstring widestr; widestr.resize(wide_size); int ok = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), (int) str.length(), &widestr[0], widestr.length()); if (!ok) return std::wstring(); return widestr; } void replace_char(std::string &str, char find, char replace) { int length = str.length(); for (int i = 0; i> 4); out[1] = (char)(in[1] << 4 | in[2] >> 2); out[2] = (char)(((in[2] << 6) & 0xc0) | in[3]); } char *b64_decode(const char *src, int slen, int &size) { size = (slen / 4) * 3; char *dst = new char[size]; char *d = dst; char in[4] = {0}, out[3], v; int i, len, pos = 0; while (pos <= slen) { for (len = 0, i = 0; i < 4 && pos <= slen; i++) { v = 0; while (pos <= slen && v == 0) { v = src[pos++]; v = (char)((v < 43 || v > 122) ? 0 : cd64[v - 43]); if (v) v = (char)((v == '$') ? 0 : v - 61); } if (pos <= slen) { len++; if (v) in[i] = (char)(v - 1); } else in[i] = 0; } if (len) { b64_decode_block(in, out); for (i = 0; i < len - 1; i++) *(d++) = out[i]; } } return dst; } } // love love-0.9.1/src/common/Data.h0000644000000000000000000000276112316602166015576 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_DATA_H #define LOVE_DATA_H // LOVE #include "config.h" #include "Object.h" // C #include namespace love { /** * This class is a simple abstraction over all objects which contain data. **/ class Data : public Object { public: /** * Destructor. **/ virtual ~Data() {} /** * Gets a pointer to the data. This pointer will obviously not * be valid if the Data object is destroyed. **/ virtual void *getData() const = 0 ; /** * Gets the size of the Data in bytes. **/ virtual size_t getSize() const = 0; }; // Data } // love #endif // LOVE_DATA_H love-0.9.1/src/common/StringMap.h0000644000000000000000000000571712316602166016635 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_STRING_MAP_H #define LOVE_STRING_MAP_H #include "Exception.h" namespace love { template class StringMap { public: struct Entry { const char *key; T value; }; StringMap(Entry *entries, unsigned num) { for (unsigned i = 0; i < SIZE; ++i) reverse[i] = 0; unsigned n = num/sizeof(Entry); for (unsigned i = 0; i < n; ++i) { add(entries[i].key, entries[i].value); } } bool streq(const char *a, const char *b) { while (*a != 0 && *b != 0) { if (*a != *b) return false; ++a; ++b; } return (*a == 0 && *b == 0); } bool find(const char *key, T &t) { unsigned str_hash = djb2(key); for (unsigned i = 0; i < MAX; ++i) { unsigned str_i = (str_hash + i) % MAX; if (!records[str_i].set) return false; if (streq(records[str_i].key, key)) { t = records[str_i].value; return true; } } return false; } bool find(T key, const char *&str) { unsigned index = (unsigned)key; if (index >= SIZE) return false; if (reverse[index] != 0) { str = reverse[index]; return true; } else { return false; } } bool add(const char *key, T value) { unsigned str_hash = djb2(key); bool inserted = false; for (unsigned i = 0; i < MAX; ++i) { unsigned str_i = (str_hash + i) % MAX; if (!records[str_i].set) { inserted = true; records[str_i].set = true; records[str_i].key = key; records[str_i].value = value; break; } } unsigned index = (unsigned)value; if (index >= SIZE) { printf("\nConstant %s out of bounds with %i!\n", key, index); return false; } reverse[index] = key; return inserted; } unsigned djb2(const char *key) { unsigned hash = 5381; int c; while ((c = *key++)) hash = ((hash << 5) + hash) + c; return hash; } private: struct Record { const char *key; T value; bool set; Record() : set(false) {} }; const static unsigned MAX = SIZE*2; Record records[MAX]; const char *reverse[SIZE]; }; // StringMap } // love #endif // LOVE_STRING_MAP_H love-0.9.1/src/common/Matrix.cpp0000644000000000000000000001177212316602166016526 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Matrix.h" // STD #include // memcpy #include namespace love { // | e0 e4 e8 e12 | // | e1 e5 e9 e13 | // | e2 e6 e10 e14 | // | e3 e7 e11 e15 | Matrix::Matrix() { setIdentity(); } Matrix::~Matrix() { } // | e0 e4 e8 e12 | // | e1 e5 e9 e13 | // | e2 e6 e10 e14 | // | e3 e7 e11 e15 | // | e0 e4 e8 e12 | // | e1 e5 e9 e13 | // | e2 e6 e10 e14 | // | e3 e7 e11 e15 | Matrix Matrix::operator * (const Matrix &m) const { Matrix t; t.e[0] = (e[0]*m.e[0]) + (e[4]*m.e[1]) + (e[8]*m.e[2]) + (e[12]*m.e[3]); t.e[4] = (e[0]*m.e[4]) + (e[4]*m.e[5]) + (e[8]*m.e[6]) + (e[12]*m.e[7]); t.e[8] = (e[0]*m.e[8]) + (e[4]*m.e[9]) + (e[8]*m.e[10]) + (e[12]*m.e[11]); t.e[12] = (e[0]*m.e[12]) + (e[4]*m.e[13]) + (e[8]*m.e[14]) + (e[12]*m.e[15]); t.e[1] = (e[1]*m.e[0]) + (e[5]*m.e[1]) + (e[9]*m.e[2]) + (e[13]*m.e[3]); t.e[5] = (e[1]*m.e[4]) + (e[5]*m.e[5]) + (e[9]*m.e[6]) + (e[13]*m.e[7]); t.e[9] = (e[1]*m.e[8]) + (e[5]*m.e[9]) + (e[9]*m.e[10]) + (e[13]*m.e[11]); t.e[13] = (e[1]*m.e[12]) + (e[5]*m.e[13]) + (e[9]*m.e[14]) + (e[13]*m.e[15]); t.e[2] = (e[2]*m.e[0]) + (e[6]*m.e[1]) + (e[10]*m.e[2]) + (e[14]*m.e[3]); t.e[6] = (e[2]*m.e[4]) + (e[6]*m.e[5]) + (e[10]*m.e[6]) + (e[14]*m.e[7]); t.e[10] = (e[2]*m.e[8]) + (e[6]*m.e[9]) + (e[10]*m.e[10]) + (e[14]*m.e[11]); t.e[14] = (e[2]*m.e[12]) + (e[6]*m.e[13]) + (e[10]*m.e[14]) + (e[14]*m.e[15]); t.e[3] = (e[3]*m.e[0]) + (e[7]*m.e[1]) + (e[11]*m.e[2]) + (e[15]*m.e[3]); t.e[7] = (e[3]*m.e[4]) + (e[7]*m.e[5]) + (e[11]*m.e[6]) + (e[15]*m.e[7]); t.e[11] = (e[3]*m.e[8]) + (e[7]*m.e[9]) + (e[11]*m.e[10]) + (e[15]*m.e[11]); t.e[15] = (e[3]*m.e[12]) + (e[7]*m.e[13]) + (e[11]*m.e[14]) + (e[15]*m.e[15]); return t; } void Matrix::operator *= (const Matrix &m) { Matrix t = (*this) * m; memcpy((void *)this->e, (void *)t.e, sizeof(float)*16); } const float *Matrix::getElements() const { return e; } void Matrix::setIdentity() { memset(e, 0, sizeof(float)*16); e[0] = e[5] = e[10] = e[15] = 1; } void Matrix::setTranslation(float x, float y) { setIdentity(); e[12] = x; e[13] = y; } void Matrix::setRotation(float rad) { setIdentity(); float c = cosf(rad), s = sinf(rad); e[0] = c; e[4] = -s; e[1] = s; e[5] = c; } void Matrix::setScale(float sx, float sy) { setIdentity(); e[0] = sx; e[5] = sy; } void Matrix::setShear(float kx, float ky) { setIdentity(); e[1] = ky; e[4] = kx; } void Matrix::setTransformation(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { memset(e, 0, sizeof(float)*16); // zero out matrix float c = cosf(angle), s = sinf(angle); // matrix multiplication carried out on paper: // |1 x| |c -s | |sx | | 1 ky | |1 -ox| // | 1 y| |s c | | sy | |kx 1 | | 1 -oy| // | 1 | | 1 | | 1 | | 1 | | 1 | // | 1| | 1| | 1| | 1| | 1 | // move rotate scale skew origin e[10] = e[15] = 1.0f; e[0] = c * sx - ky * s * sy; // = a e[1] = s * sx + ky * c * sy; // = b e[4] = kx * c * sx - s * sy; // = c e[5] = kx * s * sx + c * sy; // = d e[12] = x - ox * e[0] - oy * e[4]; e[13] = y - ox * e[1] - oy * e[5]; } void Matrix::translate(float x, float y) { Matrix t; t.setTranslation(x, y); this->operator *=(t); } void Matrix::rotate(float rad) { Matrix t; t.setRotation(rad); this->operator *=(t); } void Matrix::scale(float sx, float sy) { Matrix t; t.setScale(sx, sy); this->operator *=(t); } void Matrix::shear(float kx, float ky) { Matrix t; t.setShear(kx,ky); this->operator *=(t); } // | x | // | y | // | 0 | // | 1 | // | e0 e4 e8 e12 | // | e1 e5 e9 e13 | // | e2 e6 e10 e14 | // | e3 e7 e11 e15 | void Matrix::transform(Vertex *dst, const Vertex *src, int size) const { for (int i = 0; irelease(); } private: AutoRelease() {} Object *object; }; // AutoRelease private: // The reference count. int count; }; // Object } // love #endif // LOVE_OBJECT_H love-0.9.1/src/common/Memoizer.cpp0000644000000000000000000000244312316602166017044 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Memoizer.h" #include namespace love { std::map Memoizer::objectMap; void Memoizer::add(void *key, void *val) { objectMap[key] = val; } void Memoizer::remove(void *key) { objectMap.erase(key); } void *Memoizer::find(void *key) { auto it = objectMap.find(key); if (it != objectMap.end()) return it->second; else return nullptr; } } // love love-0.9.1/src/common/int.h0000644000000000000000000000352412316602166015515 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_INT_H #define LOVE_INT_H #include "common/config.h" #ifndef LOVE_WINDOWS #include #endif #define LOVE_INT8_MAX 0x7F #define LOVE_UINT8_MAX 0xFF #define LOVE_INT16_MAX 0x7FFF #define LOVE_UINT16_MAX 0xFFFF #define LOVE_INT32_MAX 0x7FFFFFFF #define LOVE_UINT32_MAX 0xFFFFFFFF #define LOVE_INT64_MAX 0x7FFFFFFFFFFFFFFF #define LOVE_UINT64_MAX 0xFFFFFFFFFFFFFFFF namespace love { // Blame Microsoft #ifdef LOVE_WINDOWS typedef __int8 int8; typedef unsigned __int8 uint8; typedef __int16 int16; typedef unsigned __int16 uint16; typedef __int32 int32; typedef unsigned __int32 uint32; typedef __int64 int64; typedef unsigned __int64 uint64; #else // LOVE_WINDOWS typedef int8_t int8; typedef uint8_t uint8; typedef int16_t int16; typedef uint16_t uint16; typedef int32_t int32; typedef uint32_t uint32; typedef int64_t int64; typedef uint64_t uint64; #endif // LOVE_WINDOWS } // love #endif // LOVE_INT_H love-0.9.1/src/common/Exception.cpp0000644000000000000000000000366112316602166017216 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Exception.h" #include "common/config.h" #include namespace love { Exception::Exception(const char *fmt, ...) { va_list args; int size_buffer = 256, size_out; char *buffer; while (true) { buffer = new char[size_buffer]; memset(buffer, 0, size_buffer); va_start(args, fmt); size_out = vsnprintf(buffer, size_buffer, fmt, args); va_end(args); // see http://perfec.to/vsnprintf/pasprintf.c // if size_out ... // == -1 --> output was truncated // == size_buffer --> output was truncated // == size_buffer-1 --> ambiguous, /may/ have been truncated // > size_buffer --> output was truncated, and size_out // bytes would have been written if (size_out == size_buffer || size_out == -1 || size_out == size_buffer-1) size_buffer *= 2; else if (size_out > size_buffer) size_buffer = size_out + 2; // to avoid the ambiguous case else break; delete[] buffer; } message = std::string(buffer); delete[] buffer; } } love-0.9.1/src/common/Variant.h0000644000000000000000000000363512316602166016332 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_VARIANT_H #define LOVE_VARIANT_H #include "common/runtime.h" #include "common/Object.h" #include #include #include namespace love { class Variant : public love::Object { public: Variant(); Variant(bool boolean); Variant(double number); Variant(const char *string, size_t len); Variant(char c); Variant(void *userdata); Variant(love::Type udatatype, void *userdata); Variant(std::vector > *table); virtual ~Variant(); static Variant *fromLua(lua_State *L, int n, bool allowTables = true); void toLua(lua_State *L); private: enum Type { UNKNOWN = 0, BOOLEAN, NUMBER, CHARACTER, STRING, LUSERDATA, FUSERDATA, NIL, TABLE } type; union { bool boolean; char character; double number; struct { const char *str; size_t len; } string; void *userdata; std::vector > *table; } data; love::Type udatatype; bits flags; }; // Variant } // love #endif // LOVE_VARIANT_H love-0.9.1/src/common/b64.h0000644000000000000000000000252612316602166015317 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "config.h" #ifndef LOVE_B64_H #define LOVE_B64_H namespace love { /** * Decode base64 encoded data. * * @param src The string containing the base64 data. * @param slen The length of the string. * @param size The size of the binary data is stored here. * @return A chunk of memory containing the binary data (allocated with new[]). */ char *b64_decode(const char *src, int slen, int &size); } // love #endif // LOVE_B64_H love-0.9.1/src/common/Memoizer.h0000644000000000000000000000233612316602166016512 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MEMOIZER_H #define LOVE_MEMOIZER_H #include namespace love { class Memoizer { public: static void add(void *key, void *val); static void remove(void *key); static void *find(void *key); private: static std::map objectMap; }; // Memoizer } // love #endif // LOVE_MEMOIZER_H love-0.9.1/src/common/EnumMap.h0000644000000000000000000000373012316602166016264 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_ENUM_MAP_H #define LOVE_ENUM_MAP_H #include "Exception.h" namespace love { template class EnumMap { public: struct Entry { T t; U u; }; EnumMap(Entry *entries, unsigned size) { unsigned n = size/sizeof(Entry); for (unsigned i = 0; iL = L; luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME); lua_insert(L, -2); // Move reference table behind value. idx = luaL_ref(L, -2); lua_pop(L, 1); } void Reference::unref() { if (idx != LUA_REFNIL) { luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME); luaL_unref(L, -1, idx); lua_pop(L, 1); idx = LUA_REFNIL; } } void Reference::push(lua_State *newL) { if (idx != LUA_REFNIL) { luax_insist(newL, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME); lua_rawgeti(newL, -1, idx); lua_remove(newL, -2); } else lua_pushnil(newL); } void Reference::push() { push(L); } lua_State *Reference::getL() const { return L; } void Reference::setL(lua_State *newL) { L = newL; } } // love love-0.9.1/src/common/types.h0000644000000000000000000001560612316602166016073 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_TYPES_H #define LOVE_TYPES_H // STD #include namespace love { enum Type { INVALID_ID = 0, // Cross-module types. OBJECT_ID, DATA_ID, MODULE_ID, // Filesystem. FILESYSTEM_FILE_ID, FILESYSTEM_FILE_DATA_ID, // Font FONT_GLYPH_DATA_ID, FONT_RASTERIZER_ID, // Graphics GRAPHICS_DRAWABLE_ID, GRAPHICS_TEXTURE_ID, GRAPHICS_IMAGE_ID, GRAPHICS_QUAD_ID, GRAPHICS_FONT_ID, GRAPHICS_PARTICLE_SYSTEM_ID, GRAPHICS_SPRITE_BATCH_ID, GRAPHICS_CANVAS_ID, GRAPHICS_SHADER_ID, GRAPHICS_MESH_ID, // Image IMAGE_IMAGE_DATA_ID, IMAGE_COMPRESSED_DATA_ID, // Joystick JOYSTICK_JOYSTICK_ID, // Math MATH_RANDOM_GENERATOR_ID, MATH_BEZIER_CURVE_ID, // Audio AUDIO_SOURCE_ID, // Sound SOUND_SOUND_DATA_ID, SOUND_DECODER_ID, // Mouse MOUSE_CURSOR_ID, // Physics PHYSICS_WORLD_ID, PHYSICS_CONTACT_ID, PHYSICS_BODY_ID, PHYSICS_FIXTURE_ID, PHYSICS_SHAPE_ID, PHYSICS_CIRCLE_SHAPE_ID, PHYSICS_POLYGON_SHAPE_ID, PHYSICS_EDGE_SHAPE_ID, PHYSICS_CHAIN_SHAPE_ID, PHYSICS_JOINT_ID, PHYSICS_MOUSE_JOINT_ID, PHYSICS_DISTANCE_JOINT_ID, PHYSICS_PRISMATIC_JOINT_ID, PHYSICS_REVOLUTE_JOINT_ID, PHYSICS_PULLEY_JOINT_ID, PHYSICS_GEAR_JOINT_ID, PHYSICS_FRICTION_JOINT_ID, PHYSICS_WELD_JOINT_ID, PHYSICS_ROPE_JOINT_ID, PHYSICS_WHEEL_JOINT_ID, PHYSICS_MOTOR_JOINT_ID, // Thread THREAD_THREAD_ID, THREAD_CHANNEL_ID, // The modules themselves. Only add abstracted modules here. MODULE_FILESYSTEM_ID, MODULE_GRAPHICS_ID, MODULE_IMAGE_ID, MODULE_SOUND_ID, // Count the number of bits needed. TYPE_MAX_ENUM }; typedef std::bitset bits; const bits INVALID_T = bits(1) << INVALID_ID; const bits OBJECT_T = bits(1) << OBJECT_ID; const bits DATA_T = (bits(1) << DATA_ID) | OBJECT_T; const bits MODULE_T = (bits(1) << MODULE_ID) | OBJECT_T; // Filesystem. const bits FILESYSTEM_FILE_T = (bits(1) << FILESYSTEM_FILE_ID) | OBJECT_T; const bits FILESYSTEM_FILE_DATA_T = (bits(1) << FILESYSTEM_FILE_DATA_ID) | DATA_T; const bits FONT_GLYPH_DATA_T = (bits(1) << FONT_GLYPH_DATA_ID) | DATA_T; const bits FONT_RASTERIZER_T = (bits(1) << FONT_RASTERIZER_ID) | OBJECT_T; // Graphics. const bits GRAPHICS_DRAWABLE_T = (bits(1) << GRAPHICS_DRAWABLE_ID) | OBJECT_T; const bits GRAPHICS_TEXTURE_T = (bits(1) << GRAPHICS_TEXTURE_ID) | GRAPHICS_DRAWABLE_T; const bits GRAPHICS_IMAGE_T = (bits(1) << GRAPHICS_IMAGE_ID) | GRAPHICS_TEXTURE_T; const bits GRAPHICS_QUAD_T = (bits(1) << GRAPHICS_QUAD_ID) | OBJECT_T; const bits GRAPHICS_FONT_T = (bits(1) << GRAPHICS_FONT_ID) | OBJECT_T; const bits GRAPHICS_PARTICLE_SYSTEM_T = (bits(1) << GRAPHICS_PARTICLE_SYSTEM_ID) | GRAPHICS_DRAWABLE_T; const bits GRAPHICS_SPRITE_BATCH_T = (bits(1) << GRAPHICS_SPRITE_BATCH_ID) | GRAPHICS_DRAWABLE_T; const bits GRAPHICS_CANVAS_T = (bits(1) << GRAPHICS_CANVAS_ID) | GRAPHICS_TEXTURE_T; const bits GRAPHICS_SHADER_T = (bits(1) << GRAPHICS_SHADER_ID) | OBJECT_T; const bits GRAPHICS_MESH_T = (bits(1) << GRAPHICS_MESH_ID) | GRAPHICS_DRAWABLE_T; // Image. const bits IMAGE_IMAGE_DATA_T = (bits(1) << IMAGE_IMAGE_DATA_ID) | DATA_T; const bits IMAGE_COMPRESSED_DATA_T = (bits(1) << IMAGE_COMPRESSED_DATA_ID) | DATA_T; // Joystick. const bits JOYSTICK_JOYSTICK_T = (bits(1) << JOYSTICK_JOYSTICK_ID) | OBJECT_T; // Math. const bits MATH_RANDOM_GENERATOR_T = (bits(1) << MATH_RANDOM_GENERATOR_ID) | OBJECT_T; const bits MATH_BEZIER_CURVE_T = (bits(1) << MATH_BEZIER_CURVE_ID) | OBJECT_T; // Audio. const bits AUDIO_SOURCE_T = (bits(1) << AUDIO_SOURCE_ID) | OBJECT_T; // Sound. const bits SOUND_SOUND_DATA_T = (bits(1) << SOUND_SOUND_DATA_ID) | DATA_T; const bits SOUND_DECODER_T = bits(1) << SOUND_DECODER_ID; // Mouse. const bits MOUSE_CURSOR_T = (bits(1) << MOUSE_CURSOR_ID) | OBJECT_T; // Physics. const bits PHYSICS_WORLD_T = (bits(1) << PHYSICS_WORLD_ID) | OBJECT_T; const bits PHYSICS_CONTACT_T = (bits(1) << PHYSICS_CONTACT_ID) | OBJECT_T; const bits PHYSICS_BODY_T = (bits(1) << PHYSICS_BODY_ID) | OBJECT_T; const bits PHYSICS_FIXTURE_T = (bits(1) << PHYSICS_FIXTURE_ID) | OBJECT_T; const bits PHYSICS_SHAPE_T = (bits(1) << PHYSICS_SHAPE_ID) | OBJECT_T; const bits PHYSICS_CIRCLE_SHAPE_T = (bits(1) << PHYSICS_CIRCLE_SHAPE_ID) | PHYSICS_SHAPE_T; const bits PHYSICS_POLYGON_SHAPE_T = (bits(1) << PHYSICS_POLYGON_SHAPE_ID) | PHYSICS_SHAPE_T; const bits PHYSICS_EDGE_SHAPE_T = (bits(1) << PHYSICS_EDGE_SHAPE_ID) | PHYSICS_SHAPE_T; const bits PHYSICS_CHAIN_SHAPE_T = (bits(1) << PHYSICS_CHAIN_SHAPE_ID) | PHYSICS_SHAPE_T; const bits PHYSICS_JOINT_T = (bits(1) << PHYSICS_JOINT_ID) | OBJECT_T; const bits PHYSICS_MOUSE_JOINT_T = (bits(1) << PHYSICS_MOUSE_JOINT_ID) | PHYSICS_JOINT_T; const bits PHYSICS_DISTANCE_JOINT_T = (bits(1) << PHYSICS_DISTANCE_JOINT_ID) | PHYSICS_JOINT_T; const bits PHYSICS_PRISMATIC_JOINT_T = (bits(1) << PHYSICS_PRISMATIC_JOINT_ID) | PHYSICS_JOINT_T; const bits PHYSICS_REVOLUTE_JOINT_T = (bits(1) << PHYSICS_REVOLUTE_JOINT_ID) | PHYSICS_JOINT_T; const bits PHYSICS_PULLEY_JOINT_T = (bits(1) << PHYSICS_PULLEY_JOINT_ID) | PHYSICS_JOINT_T; const bits PHYSICS_GEAR_JOINT_T = (bits(1) << PHYSICS_GEAR_JOINT_ID) | PHYSICS_JOINT_T; const bits PHYSICS_FRICTION_JOINT_T = (bits(1) << PHYSICS_FRICTION_JOINT_ID) | PHYSICS_JOINT_T; const bits PHYSICS_WELD_JOINT_T = (bits(1) << PHYSICS_WELD_JOINT_ID) | PHYSICS_JOINT_T; const bits PHYSICS_ROPE_JOINT_T = (bits(1) << PHYSICS_ROPE_JOINT_ID) | PHYSICS_JOINT_T; const bits PHYSICS_WHEEL_JOINT_T = (bits(1) << PHYSICS_WHEEL_JOINT_ID) | PHYSICS_JOINT_T; const bits PHYSICS_MOTOR_JOINT_T = (bits(1) << PHYSICS_MOTOR_JOINT_ID) | PHYSICS_JOINT_T; // Thread. const bits THREAD_THREAD_T = (bits(1) << THREAD_THREAD_ID) | OBJECT_T; const bits THREAD_CHANNEL_T = (bits(1) << THREAD_CHANNEL_ID) | OBJECT_T; // Modules. const bits MODULE_FILESYSTEM_T = (bits(1) << MODULE_FILESYSTEM_ID) | MODULE_T; const bits MODULE_GRAPHICS_T = (bits(1) << MODULE_GRAPHICS_ID) | MODULE_T; const bits MODULE_IMAGE_T = (bits(1) << MODULE_IMAGE_ID) | MODULE_T; const bits MODULE_SOUND_T = (bits(1) << MODULE_SOUND_ID) | MODULE_T; bool getType(const char *in, Type &out); bool getType(Type in, const char *&out); } // love #endif // LOVE_TYPES_H love-0.9.1/src/common/Vector.h0000644000000000000000000001455412316602166016172 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_VECTOR_H #define LOVE_VECTOR_H // STD #include // LOVE #include "Matrix.h" namespace love { /** * 2D Vector class. * * @author Anders Ruud * @date 2006-05-13 **/ class Vector { public: // The components. float x, y; /** * Creates a new (1,1) Vector. **/ Vector(); /** * Creates a new Vector. * @param x The x position/dimension. * @param y The y position/dimension. **/ Vector(float x, float y); /** * Gets the length of the Vector. * @return The length of the Vector. * * This method requires sqrtf() and should be used * carefully. **/ float getLength() const; /** * Normalizes the Vector. * @param length Desired length of the vector. * @return The old length of the Vector. **/ float normalize(float length = 1.0); /** * Gets a vector perpendicular to the Vector. * To get the true (normalized) normal, use v.getNormal(1.0f / v.getLength()) * @return A normal to the Vector. **/ Vector getNormal() const; /** * Gets a vector perpendicular to the Vector. * To get the true (normalized) normal, use v.getNormal(1.0f / v.getLength()) * @param scale factor to apply. * @return A normal to the Vector. **/ Vector getNormal(float scale) const; /** * Adds a Vector to this Vector. * @param v The Vector we want to add to this Vector. * @return The resulting Vector. **/ Vector operator + (const Vector &v) const; /** * Substracts a Vector to this Vector. * @param v The Vector we want to subtract to this Vector. * @return The resulting Vector. **/ Vector operator - (const Vector &v) const; /** * Resizes a Vector by a scalar. * @param s The scalar with which to resize the Vector. * @return The resulting Vector. **/ Vector operator * (float s) const; /** * Resizes a Vector by a scalar. * @param s The scalar with which to resize the Vector. * @return The resulting Vector. **/ Vector operator / (float s) const; /** * Reverses the Vector. * @return The reversed Vector. **/ Vector operator - () const; /** * Adds a Vector to this Vector, and also saves changes in the first Vector. * @param v The Vector we want to add to this Vector. **/ void operator += (const Vector &v); /** * Subtracts a Vector to this Vector, and also saves changes in the first Vector. * @param v The Vector we want to subtract to this Vector. **/ void operator -= (const Vector &v); /** * Resizes the Vector, and also saves changes in the first Vector. * @param s The scalar by which we want to resize the Vector. **/ void operator *= (float s); /** * Resizes the Vector, and also saves changes in the first Vector. * @param s The scalar by which we want to resize the Vector. **/ void operator /= (float s); /** * Calculates the dot product of two Vectors. * @return The dot product of the two Vectors. **/ float operator * (const Vector &v) const; /** * Calculates the cross product of two Vectors. * @return The cross product of the two Vectors. **/ float operator ^ (const Vector &v) const; bool operator == (const Vector &v) const; bool operator < (const Vector &v) const; /** * Gets the x value of the Vector. * @return The x value of the Vector. **/ float getX() const; /** * Gets the x value of the Vector. * @return The x value of the Vector. **/ float getY() const; /** * Sets the x value of the Vector. * @param x The x value of the Vector. **/ void setX(float x); /** * Sets the x value of the Vector. * @param y The x value of the Vector. **/ void setY(float y); }; inline float Vector::getLength() const { return sqrtf(x*x + y*y); } inline Vector Vector::getNormal() const { return Vector(-y, x); } inline Vector Vector::getNormal(float scale) const { return Vector(-y * scale, x * scale); } inline float Vector::normalize(float length) { float length_current = getLength(); if (length_current > 0) (*this) *= length / length_current; return length_current; } /** * Inline methods must have body in header. **/ inline Vector::Vector() { x = 1; y = 1; } inline Vector::Vector(float x, float y) { this->x = x; this->y = y; } inline Vector Vector::operator + (const Vector &v) const { return Vector(x + v.x, y + v.y); } inline Vector Vector::operator - (const Vector &v) const { return Vector(x - v.getX(), y - v.getY()); } inline Vector Vector::operator * (float s) const { return Vector(x*s, y*s); } inline Vector Vector::operator / (float s) const { return Vector(x/s, y/s); } inline Vector Vector::operator - () const { return Vector(-x, -y); } inline void Vector::operator += (const Vector &v) { x += v.getX(); y += v.getY(); } inline void Vector::operator -= (const Vector &v) { x -= v.getX(); y -= v.getY(); } inline void Vector::operator *= (float s) { x *= s; y *= s; } inline void Vector::operator /= (float s) { x /= s; y /= s; } inline float Vector::operator * (const Vector &v) const { return x * v.getX() + y * v.getY(); } inline float Vector::operator ^ (const Vector &v) const { return x * v.getY() - y * v.getX(); } inline bool Vector::operator == (const Vector &v) const { return getLength() == v.getLength(); } inline bool Vector::operator < (const Vector &v) const { return getLength() < v.getLength(); } /** * Accessor methods **/ inline float Vector::getX() const { return x; } inline float Vector::getY() const { return y; } inline void Vector::setX(float x) { this->x = x; } inline void Vector::setY(float y) { this->y = y; } } //love #endif// LOVE_VECTOR_H love-0.9.1/src/common/version.h0000644000000000000000000000237112316602166016407 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_VERSION_H #define LOVE_VERSION_H namespace love { // Version stuff. const int VERSION_MAJOR = 0; const int VERSION_MINOR = 9; const int VERSION_REV = 1; const char *VERSION = "0.9.1"; const char *VERSION_COMPATIBILITY[] = { VERSION, "0.9.0", 0 }; const char *VERSION_CODENAME = "Baby Inspector"; } // love #endif // LOVE_VERSION_H love-0.9.1/src/common/Matrix.h0000644000000000000000000001036112316602166016164 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MATRIX_H #define LOVE_MATRIX_H // LOVE #include "math.h" namespace love { /** * This class is the basis for all transformations in LOVE. Althought not * really needed for 2D, it contains 4x4 elements to be compatible with * OpenGL without conversions. **/ class Matrix { public: /** * Creates a new identity matrix. **/ Matrix(); /** * Destructor. **/ ~Matrix(); /** * Multiplies this Matrix with another Matrix, changing neither. * @param m The Matrix to multiply with this Matrix. * @return The combined matrix. **/ Matrix operator * (const Matrix &m) const; /** * Multiplies a Matrix into this Matrix. * @param m The Matrix to combine into this Matrix. **/ void operator *= (const Matrix &m); /** * Gets a pointer to the 16 array elements. * @return The array elements. **/ const float *getElements() const; /** * Resets this Matrix to the identity matrix. **/ void setIdentity(); /** * Resets this Matrix to a translation. * @param x Translation along x-axis. * @param y Translation along y-axis. **/ void setTranslation(float x, float y); /** * Resets this Matrix to a rotation. * @param r The angle in radians. **/ void setRotation(float r); /** * Resets this Matrix to a scale transformation. * @param sx Scale factor along the x-axis. * @param sy Scale factor along the y-axis. **/ void setScale(float sx, float sy); /** * Resets this Matrix to a shear transformation. * @param kx Shear along x-axis. * @param ky Shear along y-axis. **/ void setShear(float kx, float ky); /** * Creates a transformation with a certain position, orientation, scale * and offset. Perfect for Drawables -- what a coincidence! * * @param x The translation along the x-axis. * @param y The translation along the y-axis. * @param angle The rotation (rad) around the center with offset (ox,oy). * @param sx Scale along x-axis. * @param sy Scale along y-axis. * @param ox The offset for rotation along the x-axis. * @param oy The offset for rotation along the y-axis. * @param kx Shear along x-axis * @param ky Shear along y-axis **/ void setTransformation(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky); /** * Multiplies this Matrix with a translation. * @param x Translation along x-axis. * @param y Translation along y-axis. **/ void translate(float x, float y); /** * Multiplies this Matrix with a rotation. * @param r Angle in radians. **/ void rotate(float r); /** * Multiplies this Matrix with a scale transformation. * @param sx Scale factor along the x-axis. * @param sy Scale factor along the y-axis. **/ void scale(float sx, float sy); /** * Multiplies this Matrix with a shear transformation. * @param kx Shear along the x-axis. * @param ky Shear along the y-axis. **/ void shear(float kx, float ky); /** * Transforms an array of vertices by this Matrix. The sources and * destination arrays may be the same. * * @param dst Storage for the transformed vertices. * @param src The source vertices. * @param size The number of vertices. **/ void transform(Vertex *dst, const Vertex *src, int size) const; private: /** * | e0 e4 e8 e12 | * | e1 e5 e9 e13 | * | e2 e6 e10 e14 | * | e3 e7 e11 e15 | **/ float e[16]; }; // Matrix } //love #endif// LOVE_MATRIX_H love-0.9.1/src/common/delay.cpp0000644000000000000000000000202512316602166016347 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "delay.h" #include namespace love { void delay(unsigned int ms) { SDL_Delay(ms); } } // love love-0.9.1/src/common/Reference.h0000644000000000000000000000460412316602166016621 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_REFERENCE_H #define LOVE_REFERENCE_H // LOVE #include "runtime.h" namespace love { /** * This class wraps the reference functionality built into * Lua, which allows C++ code to refer to Lua variables. **/ class Reference { public: /** * Creates the reference object, but does not create * the actual reference. **/ Reference(); /** * Creates the object and a reference to the value * on the top of the stack. **/ Reference(lua_State *L); /** * Deletes the reference, if any. **/ virtual ~Reference(); /** * Creates a reference to the value on the * top of the stack. **/ void ref(lua_State *L); /** * Unrefs the reference, if any. **/ void unref(); /** * Pushes the referred value onto the stack of a different coroutine * in the same main Lua state. * THIS SHOULD NOT BE USED FOR DIFFERENT LUA STATES (created with * luaL_newstate)! Only with different coroutines! **/ void push(lua_State *newL); /** * Pushes the referred value onto the stack. **/ void push(); /** * Gets the Lua state associated with this * reference. **/ lua_State *getL() const; /** * Associates a new Lua state with this reference. * THIS IS DANGEROUS! It is only designed to be * used with different coroutines from the same * main Lua state! **/ void setL(lua_State *newL); private: // The Lua state in which the reference resides. lua_State *L; // Index to the Lua reference. int idx; }; } // love #endif // LOVE_REFERENCE_H love-0.9.1/src/common/wrap_Data.cpp0000644000000000000000000000331012316602166017151 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Data.h" namespace love { Data *luax_checkdata(lua_State *L, int idx) { return luax_checktype(L, idx, "Data", DATA_T); } int w_Data_getString(lua_State *L) { Data *t = luax_checkdata(L, 1); lua_pushlstring(L, (const char *) t->getData(), t->getSize()); return 1; } int w_Data_getPointer(lua_State *L) { Data *t = luax_checkdata(L, 1); lua_pushlightuserdata(L, t->getData()); return 1; } int w_Data_getSize(lua_State *L) { Data *t = luax_checkdata(L, 1); lua_pushnumber(L, (lua_Number) t->getSize()); return 1; } const luaL_Reg w_Data_functions[] = { { "getString", w_Data_getString }, { "getPointer", w_Data_getPointer }, { "getSize", w_Data_getSize }, { 0, 0 } }; int w_Data_open(lua_State *L) { luax_register_type(L, "Data", w_Data_functions); return 0; } } // love love-0.9.1/src/common/Variant.cpp0000644000000000000000000001232712316602166016663 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Variant.h" #include "common/StringMap.h" namespace love { extern StringMap types; static love::Type extractudatatype(lua_State *L, int idx) { Type t = INVALID_ID; if (!lua_isuserdata(L, idx)) return t; if (luaL_getmetafield(L, idx, "__tostring") == 0) return t; lua_pushvalue(L, idx); int result = lua_pcall(L, 1, 1, 0); if (result == 0) types.find(lua_tostring(L, -1), t); if (result == 0 || result == LUA_ERRRUN) lua_pop(L, 1); return t; } static inline void delete_table(std::vector > *table) { while (!table->empty()) { std::pair &kv = table->back(); kv.first->release(); kv.second->release(); table->pop_back(); } delete table; } Variant::Variant() : type(NIL) , data() { } Variant::Variant(bool boolean) : type(BOOLEAN) { data.boolean = boolean; } Variant::Variant(double number) : type(NUMBER) { data.number = number; } Variant::Variant(const char *string, size_t len) : type(STRING) { char *buf = new char[len+1]; memset(buf, 0, len+1); memcpy(buf, string, len); data.string.str = buf; data.string.len = len; } Variant::Variant(char c) : type(CHARACTER) { data.character = c; } Variant::Variant(void *userdata) : type(LUSERDATA) { data.userdata = userdata; } Variant::Variant(love::Type udatatype, void *userdata) : type(FUSERDATA) , udatatype(udatatype) { if (udatatype != INVALID_ID) { Proxy *p = (Proxy *) userdata; flags = p->flags; data.userdata = p->data; ((love::Object *) data.userdata)->retain(); } else data.userdata = userdata; } // Variant gets ownership of the vector. Variant::Variant(std::vector > *table) : type(TABLE) { data.table = table; } Variant::~Variant() { switch (type) { case STRING: delete[] data.string.str; break; case FUSERDATA: ((love::Object *) data.userdata)->release(); break; case TABLE: delete_table(data.table); default: break; } } Variant *Variant::fromLua(lua_State *L, int n, bool allowTables) { Variant *v = NULL; size_t len; const char *str; if (n < 0) // Fix the stack position, we might modify it later n += lua_gettop(L) + 1; switch (lua_type(L, n)) { case LUA_TBOOLEAN: v = new Variant(luax_toboolean(L, n)); break; case LUA_TNUMBER: v = new Variant(lua_tonumber(L, n)); break; case LUA_TSTRING: str = lua_tolstring(L, n, &len); v = new Variant(str, len); break; case LUA_TLIGHTUSERDATA: v = new Variant(lua_touserdata(L, n)); break; case LUA_TUSERDATA: v = new Variant(extractudatatype(L, n), lua_touserdata(L, n)); break; case LUA_TNIL: v = new Variant(); break; case LUA_TTABLE: if (allowTables) { bool success = true; std::vector > *table = new std::vector >(); lua_pushnil(L); while (lua_next(L, n)) { Variant *key = fromLua(L, -2, false); if (!key) { success = false; lua_pop(L, 2); break; } Variant *value = fromLua(L, -1, false); if (!value) { delete key; success = false; lua_pop(L, 2); break; } table->push_back(std::make_pair(key, value)); lua_pop(L, 1); } if (success) v = new Variant(table); else delete_table(table); } break; } return v; } void Variant::toLua(lua_State *L) { switch (type) { case BOOLEAN: lua_pushboolean(L, data.boolean); break; case CHARACTER: lua_pushlstring(L, &data.character, 1); break; case NUMBER: lua_pushnumber(L, data.number); break; case STRING: lua_pushlstring(L, data.string.str, data.string.len); break; case LUSERDATA: lua_pushlightuserdata(L, data.userdata); break; case FUSERDATA: if (udatatype != INVALID_ID) { const char *name = NULL; love::types.find(udatatype, name); ((love::Object *) data.userdata)->retain(); luax_pushtype(L, name, flags, (love::Object *) data.userdata); } else lua_pushlightuserdata(L, data.userdata); // I know this is not the same // sadly, however, it's the most // I can do (at the moment). break; case TABLE: lua_newtable(L); for (size_t i = 0; i < data.table->size(); ++i) { std::pair &kv = data.table->at(i); kv.first->toLua(L); kv.second->toLua(L); lua_settable(L, -3); } break; case NIL: default: lua_pushnil(L); break; } } } // love love-0.9.1/src/common/Vector.cpp0000644000000000000000000000174112316602166016517 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Vector.h" namespace love { // Implementation in header. } love-0.9.1/src/common/runtime.h0000644000000000000000000003640612316602166016413 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_RUNTIME_H #define LOVE_RUNTIME_H // LOVE #include "types.h" #include "Object.h" // Lua extern "C" { #define LUA_COMPAT_ALL #include #include #include } namespace love { // Forward declarations. class Module; class Reference; // Exposed mutex of the GC extern void *_gcmutex; /** * Registries represent special tables which can be accessed with * luax_insistregistry and luax_getregistry. **/ enum Registry { REGISTRY_GC = 1, REGISTRY_MODULES, REGISTRY_TYPES }; /** * This structure wraps all Lua-exposed objects. It exists in the * Lua state as a full userdata (so we can catch __gc "events"), * though the Object it refers to is light userdata in the sense * that it is not allocated by the Lua VM. **/ struct Proxy { // Holds type information (see types.h). bits flags; // The light userdata (pointer to the love::Object). void *data; // The number of times release() should be called on GC. int retains; }; /** * A Module with Lua wrapper functions and other data. **/ struct WrappedModule { // The module containing the functions. Module *module; // The name for the table to put the functions in, without the 'love'-prefix. const char *name; // The type flags of this module. love::bits flags; // The functions of the module (last element {0,0}). const luaL_Reg *functions; // A list of functions which expose the types of the modules (last element 0). const lua_CFunction *types; }; /** * Returns a reference to the top stack element (-1) if the value * is of the specified type. If the value is incorrect, zero is returned. * * In any case, the top stack element is popped, regardless of its type. **/ Reference *luax_refif(lua_State *L, int type); /** * Prints the current contents of the stack. Only useful for debugging. * @param L The Lua state. **/ void luax_printstack(lua_State *L); /** * Converts the value at idx to a bool. It follow the same rules * as lua_toboolean, but returns a bool instead of an int. * @param L The Lua state. * @param idx The index on the Lua stack. * @return True if the value evaluates to true, false otherwise. **/ bool luax_toboolean(lua_State *L, int idx); /** * Pushes a bool onto the stack. It's the same as lua_pushboolean, * but with bool instead of int. * @param L The Lua state. * @param b The bool to push. **/ void luax_pushboolean(lua_State *L, bool b); /** * Converts the value at idx to a bool, or if not present, b is returned. * @param L The Lua state. * @param idx The index of the Lua stack. * @param b The value to return if no value exist at the specified index. * @return True if the value evaluates to true, false otherwise. **/ bool luax_optboolean(lua_State *L, int idx, bool b); /** * Converts the value at idx to a std::string. It takes care of the string * size and possible embedded nulls. * @param L The Lua state. * @param idx The index on the Lua stack. * @return Copy of the string at the specified index. **/ std::string luax_tostring(lua_State *L, int idx); /** * Converts the value at idx to a std::string. It takes care of the string * size and possible embedded nulls. * @param L The Lua state. * @param idx The index on the Lua stack. * @return Copy of the string at the specified index. **/ std::string luax_checkstring(lua_State *L, int idx); /** * Pushes a std::string onto the stack. It uses the length of the string * for lua_pushlstring's len argument. * @param L The Lua state. * @param str The string to push. **/ void luax_pushstring(lua_State *L, const std::string &str); bool luax_boolflag(lua_State *L, int table_index, const char *key, bool defaultValue); int luax_intflag(lua_State *L, int table_index, const char *key, int defaultValue); /** * Convert the value at the specified index to an Lua number, and then * convert to a float. * * @param L The Lua state. * @param idx The index on the stack. */ inline float luax_tofloat(lua_State *L, int idx) { return static_cast(lua_tonumber(L, idx)); } /** * Like luax_tofloat, but checks that the value is a number. * * @see luax_tofloat */ inline float luax_checkfloat(lua_State *L, int idx) { return static_cast(luaL_checknumber(L, idx)); } /** * Require at least 'min' number of items on the stack. * @param L The Lua state. * @param min The minimum number of items on the stack. * @return Zero if conditions are met, otherwise a Lua error (longjmp). **/ int luax_assert_argc(lua_State *L, int min); /** * Require at least 'min', but more than 'max' items on the stack. * @param L The Lua state. * @param min The minimum number of items on the stack. * @param max The maximum number of items on the stack. * @return Zero if conditions are met, otherwise a Lua error (longjmp). **/ int luax_assert_argc(lua_State *L, int min, int max); /** * Require that the value at idx is a function. * @param L The Lua state. *@param idx The index on the stack. **/ int luax_assert_function(lua_State *L, int idx); /** * Require that the value at idx is not nil. If it is, the function throws an * error using an optional error string at idx+1. * @param L The Lua state. * @param idx The index on the stack. **/ int luax_assert_nilerror(lua_State *L, int idx); /** * Registers all functions in the array l (see luaL_Reg) into the table at the * top of the stack. * Similar to Lua 5.2's luaL_setfuncs without the upvalues, and to Lua 5.1's * luaL_register without the library name. **/ void luax_setfuncs(lua_State *L, const luaL_Reg *l); /** * Register a module in the love table. The love table will be created if it does not exist. * @param L The Lua state. **/ int luax_register_module(lua_State *L, const WrappedModule &m); /** * Inserts a module with 'name' into the package.preloaded table. * @param f The function to be called when the module is opened. * @param name The name of the module, with 'love'-prefix, for instance 'love.graphics'. **/ int luax_preload(lua_State *L, lua_CFunction f, const char *name); /** * Register a new type. * @param tname The name of the type. This must not conflict with other type names, * even from other modules. * @param f The list of member functions for the type. **/ int luax_register_type(lua_State *L, const char *tname, const luaL_Reg *f = 0); /** * Do a table.insert from C * @param L the state * @param tindex the stack index of the table * @param vindex the stack index of the value * @param pos the position to insert it in **/ int luax_table_insert(lua_State *L, int tindex, int vindex, int pos = -1); /** * Register a new searcher function for package.loaders. This can for instance enable * loading of files through love.filesystem using standard require. * @param L The Lua state. * @param f The searcher function. * @param pos The position to insert the loader in. **/ int luax_register_searcher(lua_State *L, lua_CFunction f, int pos = -1); /** * Pushes a Lua representation of the given object onto the stack, creating and * storing the Lua representation in a weak table if it doesn't exist yet. * @param L The Lua state. * @param name The name of the type. This must match the name used with luax_register_type. * @param flags The type information of the object. * @param data The pointer to the actual object. * @param own Set this to true (default) if the object should be released upon garbage collection. **/ void luax_pushtype(lua_State *L, const char *name, bits flags, love::Object *data, bool own = true); /** * Creates a new Lua representation of the given object *without* checking if it * exists yet, and *without* storing it in a weak table. * This should only be used when performance is an extreme concern and the * object is not ever expected to be pushed to Lua again, as it prevents the * Lua-side objects from working in all cases when used as keys in tables. * @param L The Lua state. * @param name The name of the type. This must match the name used with luax_register_type. * @param flags The type information of the object. * @param data The pointer to the actual object. * @param own Set this to true (default) if the object should be released upon garbage collection. **/ void luax_rawnewtype(lua_State *L, const char *name, bits flags, love::Object *data, bool own = true); /** * Checks whether the value at idx is a certain type. * @param L The Lua state. * @param idx The index on the stack. * @param type The type to check for. * @return True if the value is Proxy of the specified type, false otherwise. **/ bool luax_istype(lua_State *L, int idx, love::bits type); /** * Gets the function love.module.function and puts it on top of the stack (alone). If the * love table, the module, or the function does not exist, an error is returned. * @return An error if nonexistent, or 1 if successful. **/ int luax_getfunction(lua_State *L, const char *module, const char *function); /** * Converts an object into another object by the specified function love.module.function. * The conversion function must accept a single object of the relevant type as a parameter, * and returnone value. If the function does not exist (see luax_getfunction), an error is returned. * * Note that the initial object at idx is replaced by the new object. * * @param L The Lua state. * @param idx The index on the stack. * @param module The module in the love table. * @param function The function in the module. **/ int luax_convobj(lua_State *L, int idx, const char *module, const char *function); /** * Converts an object into another object by the specified function love.module.function. * The conversion function must accept a single object of the relevant type as its first parameter, * and return one value. If the function does not exist (see luax_getfunction), an error is returned. * * Note that the initial object at idx is replaced by the new object. * * @param L The Lua state. * @param idxs An array of indices on the stack. * @param n How many arguments are being passed. * @param module The module in the love table. * @param function The function in the module. **/ int luax_convobj(lua_State *L, int idxs[], int n, const char *module, const char *function); // pcall versions of the above int luax_pconvobj(lua_State *L, int idx, const char *module, const char *function); int luax_pconvobj(lua_State *L, int idxs[], int n, const char *module, const char *function); /** * 'Insist' that a table 'k' exists in the table at idx. Insistence involves that the * table (k) is created if it does not exist in the table at idx. The table at idx must * pre-exist, however. Also note that if the a non-table value exists at the specified * location, it will be overwritten with a new table. The insisted table, and only the * insisted table, will be placed on top of the stack. * * @param idx The index on the stack containing a table. * @param k The name of the table we are insisting exist. **/ int luax_insist(lua_State *L, int idx, const char *k); /** * Insist that a global table 'k' exists. See luax_insist. * @param k The name of the table we are insisting exist. **/ int luax_insistglobal(lua_State *L, const char *k); /** * Insists that a table 'k' exists inside the 'love' table. See luax_insist. * @param k The name of the table we are insisting exist. **/ int luax_insistlove(lua_State *L, const char *k); /** * Pushes the table 'k' in the love table onto the stack. Pushes nil if the * table doesn't exist. * @param k The name of the table we want to get. **/ int luax_getlove(lua_State *L, const char *k); /** * Gets (creates if needed) the specified Registry, and pushes it into the * stack. * @param L The Lua state. * @param r The Registry to get. **/ int luax_insistregistry(lua_State *L, Registry r); /** * Gets the specified Registry, and pushes it onto the stack. Pushes nil if the * registry hasn't been created (see luax_insistregistry.) * @param L The Lua state. * @param r The Registry to get. **/ int luax_getregistry(lua_State *L, Registry r); extern "C" { // Also called from luasocket int luax_typerror(lua_State *L, int narg, const char *tname); } /** * Like luax_totype, but causes an error if the value at idx is not Proxy, * or is not the specified type. * @param L The Lua state. * @param idx The index on the stack. * @param name The name of the type. * @param type The type bit. **/ template T *luax_checktype(lua_State *L, int idx, const char *name, love::bits type) { if (lua_type(L, idx) != LUA_TUSERDATA) luax_typerror(L, idx, name); Proxy *u = (Proxy *)lua_touserdata(L, idx); if ((u->flags & type) != type) luax_typerror(L, idx, name); return (T *)u->data; } template T *luax_getmodule(lua_State *L, const char *k, love::bits type) { luax_insistregistry(L, REGISTRY_MODULES); lua_getfield(L, -1, k); if (!lua_isuserdata(L, -1)) luaL_error(L, "Tried to get nonexistant module %s.", k); Proxy *u = (Proxy *)lua_touserdata(L, -1); if ((u->flags & type) != type) luaL_error(L, "Incorrect module %s", k); lua_pop(L, 2); return (T *)u->data; } template T *luax_optmodule(lua_State *L, const char *k, love::bits type) { luax_insistregistry(L, REGISTRY_MODULES); lua_getfield(L, -1, k); if (!lua_isuserdata(L, -1)) { lua_pop(L, 2); return 0; } Proxy *u = (Proxy *)lua_touserdata(L, -1); if ((u->flags & type) != type) luaL_error(L, "Incorrect module %s", k); lua_pop(L, 2); return (T *) u->data; } /** * Converts the value at idx to the specified type without checking that * this conversion is valid. If the type has been previously verified with * luax_istype, then this can be safely used. Otherwise, use luax_checktype. * @param L The Lua state. * @param idx The index on the stack. * @param name The name of the type. * @param type The type bit. **/ template T *luax_totype(lua_State *L, int idx, const char * /* name */, love::bits /* type */) { return (T *)(((Proxy *)lua_touserdata(L, idx))->data); } Type luax_type(lua_State *L, int idx); /** * Macro for converting a LOVE exception into a Lua error. * lua_error (and luaL_error) cannot be called from inside the exception handler * because they use longjmp, which causes undefined behaviour when the * destructor of the exception would have been called. **/ #define EXCEPT_GUARD(A) \ { \ bool should_error = false; \ try { A } \ catch (love::Exception &e) \ { \ should_error = true; \ lua_pushstring(L, e.what()); \ } \ if (should_error) \ return luaL_error(L, "%s", lua_tostring(L, -1)); \ } } // love #endif // LOVE_RUNTIME_H love-0.9.1/src/common/delay.h0000644000000000000000000000202712316602166016016 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef DELAY_H_ #define DELAY_H_ namespace love { void delay(unsigned int ms); } // namespace love #endif // DELAY_H_ love-0.9.1/src/common/Module.h0000644000000000000000000000440212316602166016144 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MODULE_H #define LOVE_MODULE_H // LOVE #include "Exception.h" #include "Object.h" namespace love { /** * Abstract superclass for all modules. **/ class Module : public Object { public: /** * Destructor. **/ virtual ~Module(); /** * Gets the name of the module. This is used in case of errors * and other messages. * * @return The full name of the module, eg. love.graphics.opengl. **/ virtual const char *getName() const = 0; /** * Add module to internal registry. To be used /only/ in * runtime.cpp:luax_register_module() * @param instance The module instance. */ static void registerInstance(Module *instance); /** * Retrieve module instance from internal registry. May return NULL * if module not registered. * @param name The full name of the module. * @return Module instance or NULL if the module is not registered. */ static Module *getInstance(const std::string &name); /** * Find the first module instance from the internal registry whose name * starts with the supplied name. May return NULL if module is not * registered or the supplied name is not part of any module name. * @param name The partial name of the module. * @return Module instance or NULL if the module is not registered. **/ static Module *findInstance(const std::string &name); }; // Module } // love #endif // LOVE_MODULE_H love-0.9.1/src/common/math.h0000644000000000000000000000516712316602166015661 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MATH_H #define LOVE_MATH_H #include // for CHAR_BIT #include // for rand() and RAND_MAX /* Definitions of useful mathematical constants * M_E - e * M_LOG2E - log2(e) * M_LOG10E - log10(e) * M_LN2 - ln(2) * M_LN10 - ln(10) * M_PI - pi * M_PI_2 - pi/2 * M_PI_4 - pi/4 * M_1_PI - 1/pi * M_2_PI - 2/pi * M_2_SQRTPI - 2/sqrt(pi) * M_SQRT2 - sqrt(2) * M_SQRT1_2 - 1/sqrt(2) */ #define LOVE_M_E 2.71828182845904523536 #define LOVE_M_LOG2E 1.44269504088896340736 #define LOVE_M_LOG10E 0.434294481903251827651 #define LOVE_M_LN2 0.693147180559945309417 #define LOVE_M_LN10 2.30258509299404568402 #define LOVE_M_PI 3.14159265358979323846 #define LOVE_M_PI_2 1.57079632679489661923 #define LOVE_M_PI_4 0.785398163397448309616 #define LOVE_M_1_PI 0.318309886183790671538 #define LOVE_M_2_PI 0.636619772367581343076 #define LOVE_M_2_SQRTPI 1.12837916709551257390 #define LOVE_M_SQRT2 1.41421356237309504880 #define LOVE_M_SQRT1_2 0.707106781186547524401 #define LOVE_M_TORAD (float)(LOVE_M_PI/180.0) #define LOVE_M_TODEG (float)(180.0/LOVE_M_PI) #define LOVE_TORAD(x) (float)(x*LOVE_M_TORAD) #define LOVE_TODEG(x) (float)(x*LOVE_M_TODEG) namespace love { struct Vertex { float x, y; float s, t; unsigned char r, g, b, a; }; struct Triangle { Triangle(const Vertex &x, const Vertex &y, const Vertex &z) : a(x), b(y), c(z) {} Vertex a, b, c; }; inline int next_p2(int x) { x += (x == 0); x--; for (unsigned int i = 1; i < sizeof(int)*CHAR_BIT; i <<= 1) x |= x >> i; return ++x; } inline float next_p2(float x) { return static_cast(next_p2(static_cast(x))); } } // love #endif // LOVE_MATH_H love-0.9.1/src/common/config.h0000644000000000000000000000700112316602166016162 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_CONFIG_H #define LOVE_CONFIG_H // Platform stuff. #if defined(WIN32) || defined(_WIN32) # define LOVE_WINDOWS 1 #endif #if defined(linux) || defined(__linux) || defined(__linux__) # define LOVE_LINUX 1 #endif #if defined(__APPLE__) # define LOVE_MACOSX 1 # include #endif // Endianness. #if defined(__i386__) || defined(__i386) # define LOVE_LITTLE_ENDIAN 1 #endif #if defined(__ppc__) || defined(__ppc) || defined(__powerpc__) || defined(__powerpc) # define LOVE_BIG_ENDIAN 1 #endif // Warnings. #ifndef _CRT_SECURE_NO_WARNINGS # define _CRT_SECURE_NO_WARNINGS #endif // Preferably, and ironically, this macro should go unused. #ifndef LOVE_UNUSED # define LOVE_UNUSED(x) (void)sizeof(x) #endif #ifndef LOVE_BUILD # define LOVE_BUILD # define LOVE_BUILD_STANDALONE # define LOVE_BUILD_EXE //# define LOVE_BUILD_DLL #endif // DLL-stuff. #ifdef LOVE_WINDOWS # define LOVE_EXPORT __declspec(dllexport) #else # define LOVE_EXPORT #endif #if defined(LOVE_WINDOWS) # define LOVE_LEGENDARY_UTF8_ARGV_HACK # define LOVE_LEGENDARY_CONSOLE_IO_HACK # define NOMINMAX #endif #if defined(LOVE_MACOSX) # define LOVE_LEGENDARY_APP_ARGV_HACK #endif // Autotools config.h #ifdef HAVE_CONFIG_H # include <../config.h> # undef VERSION # ifdef WORDS_BIGENDIAN # undef LOVE_LITTLE_ENDIAN # define LOVE_BIG_ENDIAN 1 # else # undef LOVE_BIG_ENDIAN # define LOVE_LITTLE_ENDIAN 1 # endif #else # define LOVE_ENABLE_AUDIO # define LOVE_ENABLE_AUDIO_NULL # define LOVE_ENABLE_AUDIO_OPENAL # define LOVE_ENABLE_BOX2D # define LOVE_ENABLE_DDSPARSE # define LOVE_ENABLE_ENET # define LOVE_ENABLE_EVENT # define LOVE_ENABLE_EVENT_SDL # define LOVE_ENABLE_FILESYSTEM # define LOVE_ENABLE_FILESYSTEM_PHYSFS # define LOVE_ENABLE_FONT # define LOVE_ENABLE_FONT_FREETYPE # define LOVE_ENABLE_GRAPHICS # define LOVE_ENABLE_GRAPHICS_OPENGL # define LOVE_ENABLE_IMAGE # define LOVE_ENABLE_IMAGE_MAGPIE # define LOVE_ENABLE_JOYSTICK # define LOVE_ENABLE_JOYSTICK_SDL # define LOVE_ENABLE_KEYBOARD # define LOVE_ENABLE_KEYBOARD_SDL # define LOVE_ENABLE_LOVE # define LOVE_ENABLE_LUASOCKET # define LOVE_ENABLE_MATH # define LOVE_ENABLE_MOUSE # define LOVE_ENABLE_MOUSE_SDL # define LOVE_ENABLE_NOISE1234 # define LOVE_ENABLE_PHYSICS # define LOVE_ENABLE_PHYSICS_BOX2D # define LOVE_ENABLE_SOUND # define LOVE_ENABLE_SOUND_LULLABY # define LOVE_ENABLE_SYSTEM # define LOVE_ENABLE_SYSTEM_SDL # define LOVE_ENABLE_THREAD # define LOVE_ENABLE_THREAD_SDL # define LOVE_ENABLE_TIMER # define LOVE_ENABLE_TIMER_SDL # define LOVE_ENABLE_UTF8 # define LOVE_ENABLE_WINDOW # define LOVE_ENABLE_WINDOW_SDL # define LOVE_ENABLE_WUFF #endif #endif // LOVE_CONFIG_H love-0.9.1/src/common/Exception.h0000644000000000000000000000335312316602166016661 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_EXCEPTION_H #define LOVE_EXCEPTION_H #include #include // vararg #include // vsnprintf #include // strncpy #include namespace love { /** * A convenient vararg-enabled exception class. **/ class Exception : public std::exception { public: /** * Creates a new Exception according to printf-rules. * * See: http://www.cplusplus.com/reference/clibrary/cstdio/printf/ * * @param fmt The format string (see printf). **/ Exception(const char *fmt, ...); virtual ~Exception() throw() {} /** * Returns a string containing reason for the exception. * @return A description of the exception. **/ inline virtual const char *what() const throw() { return message.c_str(); } private: std::string message; }; // Exception } // love #endif // LOVE_EXCEPTION_H love-0.9.1/src/common/utf8.h0000755000000000000000000000316412316602166015614 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "config.h" #ifdef LOVE_WINDOWS #include #include namespace love { /** * Convert the wide string to a UTF-8 encoded string. * @param wstr The wide-char string. * @return A UTF-8 string. **/ std::string to_utf8(LPCWSTR wstr); /** * Convert a UTF-8 encoded string to a wide string. * @param str The UTF-8 string. * @return A wide string. **/ std::wstring to_widestr(const std::string &str); /** * Replace all occurences of 'find' with 'replace' in a string. * @param str The string to modify. * @param find The character to match. * @param replace The character to replace matches. **/ void replace_char(std::string &str, char find, char replace); } // love #endif // LOVE_WINDOWS love-0.9.1/src/scripts/0000755000000000000000000000000012316602462014744 5ustar00rootroot00000000000000love-0.9.1/src/scripts/boot.lua.h0000644000000000000000000166010612316602166016653 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ namespace love { // [boot.lua] const unsigned char boot_lua[] = { 0x2d, 0x2d, 0x5b, 0x5b, 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x2d, 0x32, 0x30, 0x31, 0x34, 0x20, 0x4c, 0x4f, 0x56, 0x45, 0x20, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x54, 0x65, 0x61, 0x6d, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x27, 0x61, 0x73, 0x2d, 0x69, 0x73, 0x27, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x0a, 0x77, 0x61, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x79, 0x2e, 0x20, 0x20, 0x49, 0x6e, 0x20, 0x6e, 0x6f, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x20, 0x62, 0x65, 0x20, 0x68, 0x65, 0x6c, 0x64, 0x20, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x61, 0x72, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x79, 0x6f, 0x6e, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x70, 0x75, 0x72, 0x70, 0x6f, 0x73, 0x65, 0x2c, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x69, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x69, 0x74, 0x0a, 0x66, 0x72, 0x65, 0x65, 0x6c, 0x79, 0x2c, 0x20, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0a, 0x31, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6d, 0x69, 0x73, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x3b, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x0a, 0x20, 0x20, 0x20, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x77, 0x72, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x61, 0x70, 0x70, 0x72, 0x65, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x32, 0x2e, 0x20, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x6c, 0x79, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x73, 0x75, 0x63, 0x68, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x6d, 0x69, 0x73, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x33, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x2d, 0x2d, 0x5d, 0x5d, 0x0a, 0x2d, 0x2d, 0x20, 0x4d, 0x61, 0x6b, 0x65, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x2e, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x20, 0x3d, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x22, 0x6c, 0x6f, 0x76, 0x65, 0x22, 0x29, 0x0a, 0x2d, 0x2d, 0x20, 0x55, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x73, 0x65, 0x74, 0x75, 0x70, 0x3a, 0x0a, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x2d, 0x2d, 0x20, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x5c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x2f, 0x2e, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x28, 0x70, 0x29, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62, 0x28, 0x70, 0x2c, 0x20, 0x22, 0x5c, 0x5c, 0x22, 0x2c, 0x20, 0x22, 0x2f, 0x22, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x2d, 0x2d, 0x20, 0x4d, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x2d, 0x2d, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x65, 0x6e, 0x64, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x28, 0x70, 0x29, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x73, 0x75, 0x62, 0x28, 0x70, 0x2c, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x6c, 0x65, 0x6e, 0x28, 0x70, 0x29, 0x2d, 0x31, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x22, 0x2f, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x20, 0x2e, 0x2e, 0x20, 0x22, 0x2f, 0x22, 0x0a, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x70, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x2d, 0x2d, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x2e, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x61, 0x62, 0x73, 0x28, 0x70, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x28, 0x70, 0x29, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x50, 0x61, 0x74, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x22, 0x2f, 0x22, 0x2e, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x69, 0x6e, 0x64, 0x28, 0x74, 0x6d, 0x70, 0x2c, 0x20, 0x22, 0x2f, 0x22, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x50, 0x61, 0x74, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x6c, 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6e, 0x2e, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x69, 0x6e, 0x64, 0x28, 0x74, 0x6d, 0x70, 0x2c, 0x20, 0x22, 0x25, 0x61, 0x3a, 0x22, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x2d, 0x2d, 0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x67, 0x65, 0x74, 0x66, 0x75, 0x6c, 0x6c, 0x28, 0x70, 0x29, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x61, 0x62, 0x73, 0x28, 0x70, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x28, 0x70, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x77, 0x64, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x67, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x28, 0x29, 0x0a, 0x09, 0x63, 0x77, 0x64, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x28, 0x63, 0x77, 0x64, 0x29, 0x0a, 0x09, 0x63, 0x77, 0x64, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x65, 0x6e, 0x64, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x28, 0x63, 0x77, 0x64, 0x29, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x3d, 0x20, 0x63, 0x77, 0x64, 0x20, 0x2e, 0x2e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x73, 0x6c, 0x61, 0x73, 0x68, 0x65, 0x73, 0x28, 0x70, 0x29, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x2f, 0x2e, 0x2c, 0x20, 0x69, 0x66, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x28, 0x2e, 0x2d, 0x29, 0x2f, 0x25, 0x2e, 0x24, 0x22, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x2d, 0x2d, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x66, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x6c, 0x65, 0x61, 0x66, 0x28, 0x70, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x31, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x70, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x61, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x61, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x69, 0x6e, 0x64, 0x28, 0x70, 0x2c, 0x20, 0x22, 0x2f, 0x22, 0x2c, 0x20, 0x61, 0x2b, 0x31, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x61, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x73, 0x75, 0x62, 0x28, 0x70, 0x2c, 0x20, 0x61, 0x2b, 0x31, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x2d, 0x2d, 0x20, 0x46, 0x69, 0x6e, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x0a, 0x2d, 0x2d, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x79, 0x70, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x22, 0x6c, 0x75, 0x61, 0x35, 0x2e, 0x31, 0x2e, 0x65, 0x78, 0x65, 0x22, 0x2e, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x77, 0x28, 0x61, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x68, 0x75, 0x67, 0x65, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x76, 0x20, 0x69, 0x6e, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x28, 0x61, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6b, 0x20, 0x3c, 0x20, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6d, 0x20, 0x3d, 0x20, 0x6b, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x5b, 0x6d, 0x5d, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x30, 0x20, 0x7d, 0x2c, 0x0a, 0x09, 0x66, 0x75, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x7b, 0x61, 0x20, 0x3d, 0x20, 0x30, 0x20, 0x7d, 0x2c, 0x0a, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x6d, 0x2c, 0x20, 0x69, 0x29, 0x0a, 0x09, 0x6d, 0x2e, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6d, 0x2e, 0x61, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6d, 0x2e, 0x61, 0x72, 0x67, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x6a, 0x3d, 0x69, 0x2c, 0x69, 0x2b, 0x6d, 0x2e, 0x61, 0x2d, 0x31, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x28, 0x6d, 0x2e, 0x61, 0x72, 0x67, 0x2c, 0x20, 0x61, 0x72, 0x67, 0x5b, 0x6a, 0x5d, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x20, 0x3d, 0x20, 0x6a, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x69, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x28, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x61, 0x72, 0x67, 0x63, 0x20, 0x3d, 0x20, 0x23, 0x61, 0x72, 0x67, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x3d, 0x31, 0x2c, 0x61, 0x72, 0x67, 0x63, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x4c, 0x6f, 0x6f, 0x6b, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x2c, 0x20, 0x65, 0x2c, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x66, 0x69, 0x6e, 0x64, 0x28, 0x61, 0x72, 0x67, 0x5b, 0x69, 0x5d, 0x2c, 0x20, 0x22, 0x25, 0x2d, 0x25, 0x2d, 0x28, 0x2e, 0x2b, 0x29, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6d, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5b, 0x6d, 0x5d, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5b, 0x6d, 0x5d, 0x2c, 0x20, 0x69, 0x2b, 0x31, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x69, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2c, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x30, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x28, 0x29, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x2e, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x74, 0x6d, 0x65, 0x74, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, 0x7b, 0x0a, 0x09, 0x09, 0x6b, 0x65, 0x79, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x62, 0x2c, 0x20, 0x75, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x28, 0x62, 0x2c, 0x20, 0x75, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6b, 0x65, 0x79, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x62, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x28, 0x62, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x74, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x28, 0x74, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x74, 0x65, 0x78, 0x74, 0x65, 0x64, 0x69, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x74, 0x2c, 0x73, 0x2c, 0x6c, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x65, 0x64, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x65, 0x64, 0x69, 0x74, 0x28, 0x74, 0x2c, 0x73, 0x2c, 0x6c, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x78, 0x2c, 0x79, 0x2c, 0x62, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x28, 0x78, 0x2c, 0x79, 0x2c, 0x62, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x78, 0x2c, 0x79, 0x2c, 0x62, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x28, 0x78, 0x2c, 0x79, 0x2c, 0x62, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6a, 0x2c, 0x62, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x28, 0x6a, 0x2c, 0x62, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6a, 0x2c, 0x62, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x28, 0x6a, 0x2c, 0x62, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x61, 0x78, 0x69, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6a, 0x2c, 0x61, 0x2c, 0x76, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x61, 0x78, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x61, 0x78, 0x69, 0x73, 0x28, 0x6a, 0x2c, 0x61, 0x2c, 0x76, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x68, 0x61, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6a, 0x2c, 0x68, 0x2c, 0x76, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x68, 0x61, 0x74, 0x28, 0x6a, 0x2c, 0x68, 0x2c, 0x76, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x61, 0x64, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6a, 0x2c, 0x62, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x61, 0x64, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x61, 0x64, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x28, 0x6a, 0x2c, 0x62, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x61, 0x64, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6a, 0x2c, 0x62, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x61, 0x64, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x61, 0x64, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x28, 0x6a, 0x2c, 0x62, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x61, 0x64, 0x61, 0x78, 0x69, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6a, 0x2c, 0x61, 0x2c, 0x76, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x61, 0x64, 0x61, 0x78, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x70, 0x61, 0x64, 0x61, 0x78, 0x69, 0x73, 0x28, 0x6a, 0x2c, 0x61, 0x2c, 0x76, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x6a, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x61, 0x64, 0x64, 0x65, 0x64, 0x28, 0x6a, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x6a, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x28, 0x6a, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x66, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x28, 0x66, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x66, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x28, 0x66, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x76, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x28, 0x76, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x71, 0x75, 0x69, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x74, 0x2c, 0x20, 0x65, 0x72, 0x72, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x74, 0x2c, 0x20, 0x65, 0x72, 0x72, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x77, 0x2c, 0x20, 0x68, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x77, 0x2c, 0x20, 0x68, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x7d, 0x2c, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x5f, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x73, 0x65, 0x6c, 0x66, 0x2c, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x2c, 0x0a, 0x09, 0x7d, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x72, 0x69, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x73, 0x29, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x22, 0x25, 0x25, 0x25, 0x78, 0x25, 0x78, 0x22, 0x2c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x73, 0x74, 0x72, 0x29, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x63, 0x68, 0x61, 0x72, 0x28, 0x74, 0x6f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x28, 0x73, 0x74, 0x72, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x32, 0x29, 0x2c, 0x20, 0x31, 0x36, 0x29, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6e, 0x6f, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x2d, 0x2d, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x6e, 0x2e, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x6c, 0x79, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2e, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x22, 0x6c, 0x6f, 0x76, 0x65, 0x22, 0x29, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x22, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x22, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x28, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x61, 0x72, 0x67, 0x30, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x77, 0x28, 0x61, 0x72, 0x67, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x69, 0x6e, 0x69, 0x74, 0x28, 0x61, 0x72, 0x67, 0x30, 0x29, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x49, 0x73, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x6f, 0x73, 0x65, 0x20, 0x66, 0x61, 0x6e, 0x63, 0x79, 0x20, 0x22, 0x66, 0x75, 0x73, 0x65, 0x64, 0x22, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x3f, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x61, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x20, 0x61, 0x72, 0x67, 0x30, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x66, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x66, 0x75, 0x73, 0x65, 0x64, 0x2e, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x69, 0x73, 0x5f, 0x66, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x73, 0x65, 0x74, 0x46, 0x75, 0x73, 0x65, 0x64, 0x28, 0x69, 0x73, 0x5f, 0x66, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x22, 0x22, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x73, 0x65, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x5b, 0x31, 0x5d, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6e, 0x6f, 0x75, 0x72, 0x69, 0x20, 0x3d, 0x20, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x5b, 0x31, 0x5d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x75, 0x72, 0x69, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x31, 0x2c, 0x20, 0x37, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x2f, 0x2f, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6e, 0x6f, 0x75, 0x72, 0x69, 0x20, 0x3d, 0x20, 0x75, 0x72, 0x69, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x6e, 0x6f, 0x75, 0x72, 0x69, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x38, 0x29, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x67, 0x65, 0x74, 0x66, 0x75, 0x6c, 0x6c, 0x28, 0x6e, 0x6f, 0x75, 0x72, 0x69, 0x29, 0x0a, 0x09, 0x09, 0x63, 0x61, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2c, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x2e, 0x6c, 0x6f, 0x76, 0x65, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x77, 0x2e, 0x0a, 0x09, 0x09, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x6c, 0x65, 0x61, 0x66, 0x28, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x29, 0x0a, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x65, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x77, 0x2e, 0x0a, 0x09, 0x09, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x70, 0x61, 0x74, 0x68, 0x2e, 0x6c, 0x65, 0x61, 0x66, 0x28, 0x61, 0x72, 0x67, 0x30, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x22, 0x5e, 0x28, 0x5b, 0x25, 0x2e, 0x5d, 0x2b, 0x29, 0x22, 0x2c, 0x20, 0x22, 0x22, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x70, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x22, 0x2e, 0x22, 0x27, 0x73, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x22, 0x25, 0x2e, 0x28, 0x5b, 0x5e, 0x25, 0x2e, 0x5d, 0x2b, 0x29, 0x24, 0x22, 0x2c, 0x20, 0x22, 0x22, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x70, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x22, 0x25, 0x2e, 0x22, 0x2c, 0x20, 0x22, 0x5f, 0x22, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x22, 0x2e, 0x22, 0x27, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x22, 0x5f, 0x22, 0x0a, 0x09, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x23, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x22, 0x6c, 0x6f, 0x76, 0x65, 0x67, 0x61, 0x6d, 0x65, 0x22, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x2e, 0x6c, 0x75, 0x61, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x65, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x76, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x2e, 0x29, 0x0a, 0x09, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x73, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2c, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x63, 0x61, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x28, 0x22, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x6c, 0x75, 0x61, 0x22, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x28, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x2e, 0x6c, 0x75, 0x61, 0x22, 0x29, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6e, 0x6f, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6e, 0x6f, 0x67, 0x61, 0x6d, 0x65, 0x28, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x69, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x4e, 0x4f, 0x54, 0x45, 0x3a, 0x20, 0x41, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x4e, 0x4f, 0x54, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x69, 0x74, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x2c, 0x20, 0x73, 0x65, 0x65, 0x20, 0x62, 0x65, 0x6c, 0x6f, 0x77, 0x2e, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x22, 0x55, 0x6e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x64, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x0a, 0x09, 0x09, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x38, 0x30, 0x30, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x36, 0x30, 0x30, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x6d, 0x69, 0x6e, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x31, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x6d, 0x69, 0x6e, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x31, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x20, 0x22, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x3d, 0x20, 0x31, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x73, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x68, 0x69, 0x67, 0x68, 0x64, 0x70, 0x69, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x72, 0x67, 0x62, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x7d, 0x2c, 0x0a, 0x09, 0x09, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x6d, 0x61, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x73, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x7d, 0x2c, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x2d, 0x2d, 0x20, 0x4f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x2e, 0x0a, 0x09, 0x09, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x0a, 0x09, 0x7d, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x49, 0x66, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x2c, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x69, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x20, 0x69, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x28, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x2e, 0x6c, 0x75, 0x61, 0x22, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x22, 0x63, 0x6f, 0x6e, 0x66, 0x22, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x59, 0x65, 0x73, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x2e, 0x6c, 0x75, 0x61, 0x20, 0x6d, 0x69, 0x67, 0x68, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x77, 0x61, 0x79, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x2c, 0x20, 0x73, 0x6f, 0x20, 0x77, 0x65, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x74, 0x20, 0x61, 0x6e, 0x79, 0x77, 0x61, 0x79, 0x2e, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x6b, 0x2c, 0x20, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x2c, 0x20, 0x63, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6f, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x65, 0x72, 0x72, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x72, 0x67, 0x2e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x2e, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x63, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x20, 0x68, 0x61, 0x63, 0x6b, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x63, 0x2e, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x28, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x47, 0x65, 0x74, 0x73, 0x20, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x20, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x6b, 0x2c, 0x76, 0x20, 0x69, 0x6e, 0x20, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x7b, 0x0a, 0x09, 0x09, 0x22, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x66, 0x6f, 0x6e, 0x74, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x6d, 0x61, 0x74, 0x68, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x22, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x73, 0x22, 0x2c, 0x0a, 0x09, 0x7d, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x63, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x5b, 0x76, 0x5d, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x22, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x76, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x28, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x53, 0x65, 0x74, 0x75, 0x70, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x68, 0x65, 0x72, 0x65, 0x2e, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x28, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x0a, 0x09, 0x09, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x66, 0x75, 0x6c, 0x6c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x75, 0x6c, 0x6c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x66, 0x75, 0x6c, 0x6c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x73, 0x79, 0x6e, 0x63, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x76, 0x73, 0x79, 0x6e, 0x63, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x73, 0x61, 0x61, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x66, 0x73, 0x61, 0x61, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x6d, 0x69, 0x6e, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x6d, 0x69, 0x6e, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x6d, 0x69, 0x6e, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x6d, 0x69, 0x6e, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x68, 0x69, 0x67, 0x68, 0x64, 0x70, 0x69, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x68, 0x69, 0x67, 0x68, 0x64, 0x70, 0x69, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x72, 0x67, 0x62, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x72, 0x67, 0x62, 0x2c, 0x0a, 0x09, 0x09, 0x7d, 0x29, 0x2c, 0x20, 0x22, 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x28, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x63, 0x2e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x69, 0x63, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x22, 0x49, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x69, 0x63, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x2c, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x21, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x49, 0x63, 0x6f, 0x6e, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x6e, 0x65, 0x77, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x28, 0x63, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x69, 0x63, 0x6f, 0x6e, 0x29, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x4f, 0x75, 0x72, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x70, 0x2c, 0x20, 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x74, 0x61, 0x6b, 0x65, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x28, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x73, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x28, 0x63, 0x2e, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x67, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x28, 0x29, 0x2c, 0x20, 0x63, 0x2e, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x28, 0x22, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x6c, 0x75, 0x61, 0x22, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x28, 0x22, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x28, 0x22, 0x4e, 0x6f, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x75, 0x6e, 0x5c, 0x6e, 0x59, 0x6f, 0x75, 0x72, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6c, 0x79, 0x5c, 0x6e, 0x4d, 0x61, 0x6b, 0x65, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x6c, 0x75, 0x61, 0x20, 0x69, 0x73, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x70, 0x20, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x7a, 0x69, 0x70, 0x22, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x63, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x74, 0x6f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x63, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x29, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x2c, 0x20, 0x76, 0x20, 0x69, 0x6e, 0x20, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x63, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x76, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x09, 0x09, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x2c, 0x20, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x63, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x5e, 0x28, 0x25, 0x64, 0x2b, 0x29, 0x25, 0x2e, 0x28, 0x25, 0x64, 0x2b, 0x29, 0x25, 0x2e, 0x28, 0x25, 0x64, 0x2b, 0x29, 0x24, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x6f, 0x74, 0x20, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x28, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x20, 0x7e, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x20, 0x7e, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x73, 0x67, 0x20, 0x3d, 0x20, 0x22, 0x54, 0x68, 0x69, 0x73, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x4c, 0xc3, 0x96, 0x56, 0x45, 0x2e, 0x5c, 0x6e, 0x22, 0x2e, 0x2e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x22, 0x49, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x22, 0x2e, 0x2e, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x2e, 0x22, 0x29, 0x2e, 0x22, 0x0a, 0x09, 0x09, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x61, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x69, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x61, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x3d, 0x20, 0x63, 0x61, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x69, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x63, 0x61, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x38, 0x39, 0x2c, 0x20, 0x31, 0x35, 0x37, 0x2c, 0x20, 0x32, 0x32, 0x30, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x28, 0x29, 0x20, 0x3c, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x2b, 0x20, 0x34, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x75, 0x6d, 0x70, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x6d, 0x73, 0x67, 0x2c, 0x20, 0x37, 0x30, 0x2c, 0x20, 0x37, 0x30, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x28, 0x31, 0x2f, 0x32, 0x30, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x28, 0x29, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x73, 0x65, 0x74, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x65, 0x65, 0x64, 0x28, 0x6f, 0x73, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x28, 0x29, 0x29, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x3d, 0x31, 0x2c, 0x33, 0x20, 0x64, 0x6f, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x28, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x75, 0x6d, 0x70, 0x28, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x28, 0x61, 0x72, 0x67, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x57, 0x65, 0x20, 0x64, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x27, 0x73, 0x20, 0x64, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x74, 0x61, 0x6b, 0x65, 0x6e, 0x20, 0x62, 0x79, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x28, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x4d, 0x61, 0x69, 0x6e, 0x20, 0x6c, 0x6f, 0x6f, 0x70, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x75, 0x6d, 0x70, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x2c, 0x61, 0x2c, 0x62, 0x2c, 0x63, 0x2c, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x6f, 0x6c, 0x6c, 0x28, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x71, 0x75, 0x69, 0x74, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x71, 0x75, 0x69, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x71, 0x75, 0x69, 0x74, 0x28, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x73, 0x74, 0x6f, 0x70, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x5b, 0x65, 0x5d, 0x28, 0x61, 0x2c, 0x62, 0x2c, 0x63, 0x2c, 0x64, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x64, 0x74, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x27, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x73, 0x74, 0x65, 0x70, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x64, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x67, 0x65, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x43, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x72, 0x61, 0x77, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x28, 0x64, 0x74, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x2d, 0x2d, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x30, 0x20, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x69, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x28, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x28, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x2d, 0x2d, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x2e, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6e, 0x6f, 0x67, 0x61, 0x6d, 0x65, 0x28, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x61, 0x62, 0x79, 0x5f, 0x70, 0x6e, 0x67, 0x20, 0x3d, 0x0a, 0x09, 0x22, 0x69, 0x56, 0x42, 0x4f, 0x52, 0x77, 0x30, 0x4b, 0x47, 0x67, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x4e, 0x53, 0x55, 0x68, 0x45, 0x55, 0x67, 0x41, 0x41, 0x41, 0x49, 0x41, 0x41, 0x41, 0x41, 0x43, 0x41, 0x43, 0x41, 0x59, 0x41, 0x41, 0x41, 0x44, 0x44, 0x50, 0x6d, 0x48, 0x4c, 0x41, 0x41, 0x41, 0x4c, 0x31, 0x6b, 0x6c, 0x45, 0x51, 0x56, 0x52, 0x34, 0x6e, 0x4f, 0x32, 0x64, 0x65, 0x5a, 0x41, 0x55, 0x31, 0x52, 0x33, 0x48, 0x50, 0x7a, 0x33, 0x58, 0x5c, 0x0a, 0x09, 0x33, 0x72, 0x75, 0x7a, 0x75, 0x79, 0x77, 0x45, 0x58, 0x5a, 0x56, 0x4c, 0x42, 0x4a, 0x48, 0x41, 0x69, 0x6c, 0x66, 0x55, 0x70, 0x41, 0x51, 0x4e, 0x47, 0x6f, 0x31, 0x52, 0x50, 0x44, 0x41, 0x78, 0x4b, 0x69, 0x61, 0x4b, 0x6b, 0x70, 0x51, 0x48, 0x6c, 0x5a, 0x42, 0x4b, 0x68, 0x54, 0x49, 0x52, 0x6a, 0x53, 0x61, 0x57, 0x6c, 0x43, 0x6d, 0x72, 0x72, 0x43, 0x4a, 0x42, 0x44, 0x52, 0x37, 0x52, 0x61, 0x4d, 0x53, 0x55, 0x42, 0x78, 0x36, 0x78, 0x5c, 0x0a, 0x09, 0x45, 0x6c, 0x6d, 0x68, 0x43, 0x49, 0x6f, 0x67, 0x69, 0x38, 0x64, 0x4b, 0x46, 0x45, 0x51, 0x45, 0x59, 0x57, 0x47, 0x58, 0x76, 0x61, 0x2b, 0x5a, 0x6e, 0x75, 0x6e, 0x70, 0x2f, 0x4e, 0x47, 0x7a, 0x62, 0x4f, 0x2f, 0x73, 0x7a, 0x75, 0x77, 0x63, 0x2f, 0x58, 0x5a, 0x33, 0x39, 0x72, 0x31, 0x50, 0x31, 0x64, 0x54, 0x32, 0x64, 0x72, 0x2f, 0x2b, 0x39, 0x61, 0x2f, 0x37, 0x66, 0x66, 0x76, 0x31, 0x75, 0x35, 0x39, 0x6d, 0x6d, 0x69, 0x59, 0x4b, 0x5c, 0x0a, 0x09, 0x65, 0x58, 0x45, 0x4e, 0x74, 0x77, 0x4f, 0x4b, 0x34, 0x55, 0x55, 0x4a, 0x51, 0x48, 0x4b, 0x55, 0x41, 0x43, 0x52, 0x48, 0x43, 0x55, 0x42, 0x79, 0x6c, 0x41, 0x41, 0x6b, 0x52, 0x77, 0x6c, 0x41, 0x63, 0x70, 0x51, 0x41, 0x4a, 0x45, 0x63, 0x4a, 0x51, 0x48, 0x4b, 0x55, 0x41, 0x43, 0x52, 0x48, 0x43, 0x55, 0x42, 0x79, 0x6c, 0x41, 0x41, 0x6b, 0x52, 0x77, 0x6c, 0x41, 0x63, 0x70, 0x51, 0x41, 0x4a, 0x45, 0x63, 0x4a, 0x51, 0x48, 0x4b, 0x55, 0x5c, 0x0a, 0x09, 0x41, 0x43, 0x52, 0x48, 0x43, 0x55, 0x42, 0x79, 0x6c, 0x41, 0x41, 0x6b, 0x52, 0x77, 0x6c, 0x41, 0x63, 0x70, 0x51, 0x41, 0x4a, 0x45, 0x63, 0x4a, 0x51, 0x48, 0x4b, 0x55, 0x41, 0x43, 0x52, 0x48, 0x43, 0x55, 0x42, 0x79, 0x6c, 0x41, 0x41, 0x6b, 0x52, 0x77, 0x6c, 0x41, 0x63, 0x70, 0x51, 0x41, 0x4a, 0x45, 0x63, 0x4a, 0x51, 0x48, 0x4b, 0x55, 0x41, 0x43, 0x52, 0x48, 0x43, 0x55, 0x42, 0x79, 0x6c, 0x41, 0x41, 0x6b, 0x52, 0x77, 0x6c, 0x41, 0x5c, 0x0a, 0x09, 0x63, 0x6a, 0x7a, 0x44, 0x37, 0x55, 0x43, 0x32, 0x59, 0x4e, 0x52, 0x57, 0x4f, 0x32, 0x4c, 0x48, 0x50, 0x57, 0x4f, 0x75, 0x49, 0x33, 0x61, 0x63, 0x77, 0x6c, 0x45, 0x42, 0x61, 0x4a, 0x72, 0x6d, 0x70, 0x4c, 0x6b, 0x52, 0x51, 0x2f, 0x69, 0x54, 0x39, 0x54, 0x32, 0x62, 0x6c, 0x77, 0x42, 0x58, 0x41, 0x4d, 0x63, 0x41, 0x54, 0x77, 0x4c, 0x2f, 0x69, 0x4f, 0x36, 0x76, 0x41, 0x4a, 0x34, 0x47, 0x4c, 0x67, 0x51, 0x2b, 0x41, 0x33, 0x34, 0x41, 0x5c, 0x0a, 0x09, 0x37, 0x41, 0x49, 0x6d, 0x41, 0x39, 0x63, 0x43, 0x52, 0x63, 0x41, 0x7a, 0x77, 0x45, 0x64, 0x4f, 0x50, 0x43, 0x4d, 0x6e, 0x35, 0x33, 0x52, 0x51, 0x4b, 0x55, 0x44, 0x79, 0x33, 0x41, 0x4b, 0x73, 0x74, 0x76, 0x33, 0x2f, 0x70, 0x47, 0x33, 0x37, 0x61, 0x65, 0x43, 0x69, 0x36, 0x50, 0x59, 0x30, 0x34, 0x46, 0x74, 0x41, 0x45, 0x50, 0x67, 0x59, 0x79, 0x49, 0x76, 0x75, 0x72, 0x77, 0x4b, 0x2b, 0x4b, 0x39, 0x62, 0x46, 0x31, 0x46, 0x45, 0x43, 0x5c, 0x0a, 0x09, 0x47, 0x41, 0x54, 0x62, 0x32, 0x33, 0x2b, 0x62, 0x62, 0x58, 0x63, 0x6a, 0x38, 0x48, 0x4a, 0x30, 0x65, 0x79, 0x47, 0x39, 0x6b, 0x51, 0x39, 0x51, 0x43, 0x7a, 0x77, 0x48, 0x2f, 0x49, 0x6e, 0x65, 0x79, 0x41, 0x64, 0x34, 0x54, 0x5a, 0x43, 0x4c, 0x47, 0x61, 0x45, 0x79, 0x67, 0x63, 0x6c, 0x78, 0x4f, 0x6a, 0x44, 0x54, 0x39, 0x76, 0x2b, 0x7a, 0x57, 0x47, 0x39, 0x34, 0x4d, 0x66, 0x42, 0x77, 0x54, 0x4e, 0x67, 0x6c, 0x77, 0x44, 0x6a, 0x67, 0x5c, 0x0a, 0x09, 0x5a, 0x74, 0x75, 0x2b, 0x52, 0x75, 0x41, 0x78, 0x6b, 0x51, 0x36, 0x6d, 0x69, 0x30, 0x6f, 0x42, 0x45, 0x6d, 0x42, 0x37, 0x2b, 0x32, 0x2b, 0x4b, 0x4f, 0x66, 0x52, 0x34, 0x39, 0x4f, 0x38, 0x39, 0x77, 0x48, 0x6a, 0x62, 0x2f, 0x6a, 0x58, 0x41, 0x4a, 0x75, 0x44, 0x76, 0x51, 0x4b, 0x35, 0x74, 0x2f, 0x2b, 0x2b, 0x41, 0x4c, 0x67, 0x45, 0x75, 0x5a, 0x6f, 0x7a, 0x6d, 0x5a, 0x49, 0x5a, 0x69, 0x74, 0x47, 0x55, 0x43, 0x6f, 0x77, 0x4c, 0x49, 0x5c, 0x0a, 0x09, 0x42, 0x77, 0x35, 0x68, 0x5a, 0x65, 0x51, 0x41, 0x74, 0x6d, 0x47, 0x6c, 0x43, 0x46, 0x4f, 0x78, 0x6b, 0x76, 0x75, 0x65, 0x6c, 0x36, 0x67, 0x4e, 0x6d, 0x49, 0x4c, 0x31, 0x72, 0x58, 0x2f, 0x4c, 0x5a, 0x71, 0x59, 0x6d, 0x47, 0x74, 0x37, 0x77, 0x6e, 0x44, 0x4c, 0x50, 0x45, 0x62, 0x2b, 0x79, 0x4d, 0x68, 0x4e, 0x6f, 0x65, 0x35, 0x75, 0x79, 0x6a, 0x61, 0x76, 0x6f, 0x6a, 0x58, 0x7a, 0x6f, 0x66, 0x66, 0x76, 0x76, 0x70, 0x65, 0x2f, 0x7a, 0x5c, 0x0a, 0x09, 0x75, 0x78, 0x38, 0x49, 0x41, 0x33, 0x2b, 0x31, 0x37, 0x64, 0x4f, 0x42, 0x47, 0x77, 0x45, 0x44, 0x42, 0x6e, 0x38, 0x47, 0x54, 0x67, 0x6b, 0x6b, 0x46, 0x59, 0x51, 0x4c, 0x49, 0x4f, 0x61, 0x6d, 0x35, 0x77, 0x49, 0x6e, 0x70, 0x47, 0x6d, 0x71, 0x6d, 0x4f, 0x48, 0x4a, 0x73, 0x39, 0x78, 0x75, 0x32, 0x77, 0x34, 0x42, 0x70, 0x63, 0x42, 0x39, 0x57, 0x4a, 0x6d, 0x2f, 0x48, 0x6a, 0x6f, 0x42, 0x44, 0x61, 0x67, 0x47, 0x4b, 0x6d, 0x33, 0x37, 0x5c, 0x0a, 0x09, 0x58, 0x77, 0x46, 0x4f, 0x6a, 0x66, 0x37, 0x73, 0x6d, 0x45, 0x41, 0x72, 0x30, 0x41, 0x45, 0x30, 0x41, 0x51, 0x65, 0x41, 0x77, 0x37, 0x45, 0x43, 0x47, 0x51, 0x70, 0x42, 0x43, 0x50, 0x38, 0x45, 0x52, 0x47, 0x39, 0x4b, 0x77, 0x38, 0x6f, 0x73, 0x33, 0x65, 0x48, 0x59, 0x78, 0x55, 0x59, 0x66, 0x72, 0x63, 0x41, 0x48, 0x77, 0x48, 0x2b, 0x77, 0x53, 0x68, 0x46, 0x37, 0x65, 0x77, 0x37, 0x45, 0x43, 0x73, 0x48, 0x52, 0x4f, 0x42, 0x4d, 0x70, 0x5c, 0x0a, 0x09, 0x41, 0x4a, 0x75, 0x69, 0x56, 0x77, 0x42, 0x33, 0x4f, 0x33, 0x61, 0x68, 0x30, 0x55, 0x38, 0x45, 0x36, 0x31, 0x4f, 0x79, 0x6c, 0x47, 0x6a, 0x6d, 0x30, 0x53, 0x34, 0x43, 0x4a, 0x2b, 0x4e, 0x73, 0x4b, 0x4a, 0x4c, 0x55, 0x4b, 0x75, 0x43, 0x75, 0x49, 0x62, 0x6a, 0x4f, 0x61, 0x4d, 0x49, 0x46, 0x4c, 0x4d, 0x61, 0x71, 0x4f, 0x33, 0x43, 0x4c, 0x76, 0x70, 0x41, 0x51, 0x62, 0x47, 0x2f, 0x2f, 0x63, 0x67, 0x54, 0x66, 0x78, 0x43, 0x68, 0x6d, 0x5c, 0x0a, 0x09, 0x4c, 0x6c, 0x59, 0x6d, 0x56, 0x42, 0x69, 0x69, 0x55, 0x34, 0x41, 0x53, 0x59, 0x49, 0x48, 0x67, 0x61, 0x34, 0x78, 0x32, 0x7a, 0x68, 0x64, 0x70, 0x58, 0x4c, 0x51, 0x41, 0x76, 0x6f, 0x31, 0x36, 0x2b, 0x7a, 0x4f, 0x6c, 0x63, 0x76, 0x41, 0x67, 0x36, 0x53, 0x4f, 0x36, 0x47, 0x48, 0x68, 0x61, 0x4d, 0x6f, 0x47, 0x4f, 0x4e, 0x4c, 0x66, 0x79, 0x35, 0x71, 0x61, 0x74, 0x62, 0x4b, 0x37, 0x35, 0x6c, 0x4c, 0x71, 0x47, 0x4a, 0x67, 0x4b, 0x36, 0x5c, 0x0a, 0x09, 0x7a, 0x74, 0x67, 0x79, 0x50, 0x37, 0x4f, 0x6e, 0x54, 0x65, 0x62, 0x43, 0x63, 0x2b, 0x59, 0x77, 0x59, 0x38, 0x6f, 0x45, 0x77, 0x57, 0x36, 0x4b, 0x34, 0x55, 0x68, 0x7a, 0x4b, 0x32, 0x39, 0x73, 0x66, 0x4a, 0x39, 0x33, 0x50, 0x39, 0x7a, 0x4a, 0x77, 0x66, 0x70, 0x47, 0x39, 0x46, 0x43, 0x59, 0x69, 0x72, 0x49, 0x53, 0x71, 0x71, 0x5a, 0x50, 0x59, 0x66, 0x34, 0x35, 0x63, 0x35, 0x67, 0x78, 0x4f, 0x61, 0x6b, 0x53, 0x73, 0x53, 0x37, 0x53, 0x5c, 0x0a, 0x09, 0x52, 0x32, 0x47, 0x6c, 0x67, 0x47, 0x67, 0x65, 0x59, 0x44, 0x56, 0x57, 0x4b, 0x39, 0x71, 0x41, 0x68, 0x4d, 0x4a, 0x68, 0x56, 0x6a, 0x32, 0x33, 0x6a, 0x69, 0x64, 0x65, 0x65, 0x6f, 0x76, 0x75, 0x59, 0x50, 0x7a, 0x37, 0x6e, 0x48, 0x66, 0x6d, 0x62, 0x4f, 0x36, 0x36, 0x39, 0x56, 0x71, 0x4f, 0x48, 0x54, 0x66, 0x47, 0x4d, 0x56, 0x39, 0x46, 0x6f, 0x6f, 0x66, 0x43, 0x50, 0x50, 0x4c, 0x73, 0x79, 0x7a, 0x7a, 0x31, 0x79, 0x72, 0x38, 0x4a, 0x5c, 0x0a, 0x09, 0x36, 0x71, 0x47, 0x34, 0x34, 0x63, 0x34, 0x2f, 0x71, 0x34, 0x72, 0x66, 0x4c, 0x76, 0x6b, 0x78, 0x34, 0x79, 0x76, 0x4b, 0x45, 0x70, 0x6c, 0x37, 0x42, 0x62, 0x67, 0x38, 0x57, 0x30, 0x73, 0x42, 0x68, 0x66, 0x45, 0x4f, 0x64, 0x48, 0x52, 0x31, 0x73, 0x32, 0x6a, 0x35, 0x53, 0x6c, 0x59, 0x39, 0x76, 0x79, 0x35, 0x68, 0x35, 0x41, 0x4f, 0x73, 0x33, 0x37, 0x4b, 0x44, 0x42, 0x58, 0x66, 0x65, 0x77, 0x34, 0x65, 0x66, 0x37, 0x58, 0x48, 0x63, 0x5c, 0x0a, 0x09, 0x51, 0x61, 0x64, 0x70, 0x37, 0x2b, 0x7a, 0x6d, 0x68, 0x74, 0x38, 0x38, 0x79, 0x4b, 0x4e, 0x72, 0x33, 0x30, 0x67, 0x59, 0x2b, 0x51, 0x42, 0x76, 0x76, 0x31, 0x66, 0x44, 0x67, 0x6a, 0x74, 0x57, 0x55, 0x4c, 0x74, 0x37, 0x62, 0x36, 0x4a, 0x67, 0x63, 0x5a, 0x2b, 0x68, 0x45, 0x34, 0x67, 0x57, 0x67, 0x44, 0x2f, 0x65, 0x67, 0x57, 0x55, 0x72, 0x48, 0x2b, 0x57, 0x44, 0x32, 0x6c, 0x31, 0x4a, 0x47, 0x32, 0x70, 0x74, 0x37, 0x2b, 0x53, 0x57, 0x5c, 0x0a, 0x09, 0x75, 0x78, 0x2b, 0x6d, 0x72, 0x71, 0x48, 0x4a, 0x45, 0x63, 0x64, 0x45, 0x59, 0x4a, 0x6f, 0x6d, 0x53, 0x78, 0x39, 0x59, 0x52, 0x63, 0x33, 0x4f, 0x33, 0x55, 0x6d, 0x66, 0x30, 0x39, 0x7a, 0x57, 0x77, 0x65, 0x4b, 0x37, 0x48, 0x36, 0x61, 0x68, 0x71, 0x54, 0x56, 0x65, 0x6b, 0x48, 0x47, 0x4f, 0x4f, 0x42, 0x65, 0x48, 0x6f, 0x53, 0x67, 0x46, 0x39, 0x4f, 0x4f, 0x74, 0x54, 0x64, 0x75, 0x6f, 0x66, 0x76, 0x2f, 0x44, 0x6c, 0x49, 0x32, 0x31, 0x5c, 0x0a, 0x09, 0x74, 0x48, 0x65, 0x77, 0x63, 0x73, 0x33, 0x61, 0x6a, 0x4a, 0x30, 0x53, 0x78, 0x65, 0x73, 0x62, 0x33, 0x32, 0x66, 0x54, 0x39, 0x74, 0x71, 0x55, 0x7a, 0x32, 0x74, 0x73, 0x61, 0x57, 0x50, 0x6c, 0x45, 0x33, 0x48, 0x76, 0x71, 0x77, 0x4c, 0x45, 0x74, 0x61, 0x55, 0x4d, 0x69, 0x77, 0x42, 0x57, 0x76, 0x2f, 0x42, 0x36, 0x32, 0x67, 0x5a, 0x66, 0x33, 0x37, 0x69, 0x46, 0x2f, 0x59, 0x63, 0x61, 0x30, 0x6a, 0x35, 0x66, 0x4a, 0x4a, 0x6e, 0x63, 0x5c, 0x0a, 0x09, 0x31, 0x36, 0x76, 0x56, 0x37, 0x33, 0x4b, 0x77, 0x6f, 0x58, 0x47, 0x67, 0x51, 0x78, 0x55, 0x49, 0x6a, 0x43, 0x66, 0x52, 0x41, 0x69, 0x69, 0x4e, 0x33, 0x56, 0x48, 0x58, 0x30, 0x45, 0x54, 0x74, 0x46, 0x31, 0x39, 0x6c, 0x5a, 0x48, 0x54, 0x39, 0x6c, 0x68, 0x30, 0x5a, 0x6e, 0x53, 0x2b, 0x43, 0x66, 0x58, 0x58, 0x31, 0x66, 0x4c, 0x37, 0x33, 0x36, 0x37, 0x54, 0x50, 0x4e, 0x30, 0x32, 0x54, 0x64, 0x77, 0x5a, 0x4f, 0x46, 0x56, 0x31, 0x41, 0x5c, 0x0a, 0x09, 0x65, 0x64, 0x71, 0x47, 0x42, 0x30, 0x47, 0x49, 0x41, 0x47, 0x7a, 0x4a, 0x56, 0x55, 0x58, 0x73, 0x73, 0x53, 0x2f, 0x32, 0x31, 0x32, 0x56, 0x73, 0x66, 0x34, 0x38, 0x44, 0x4e, 0x70, 0x78, 0x6d, 0x37, 0x34, 0x48, 0x44, 0x47, 0x64, 0x76, 0x59, 0x76, 0x65, 0x39, 0x67, 0x76, 0x45, 0x4e, 0x78, 0x38, 0x31, 0x4b, 0x5a, 0x49, 0x6a, 0x49, 0x46, 0x38, 0x41, 0x4f, 0x2b, 0x32, 0x4a, 0x33, 0x74, 0x6e, 0x5a, 0x6c, 0x33, 0x6a, 0x47, 0x6c, 0x70, 0x5c, 0x0a, 0x09, 0x37, 0x38, 0x7a, 0x59, 0x68, 0x74, 0x4f, 0x30, 0x74, 0x48, 0x64, 0x6b, 0x62, 0x4b, 0x4d, 0x74, 0x2f, 0x72, 0x50, 0x4a, 0x53, 0x67, 0x45, 0x4d, 0x6d, 0x48, 0x73, 0x74, 0x39, 0x78, 0x64, 0x6e, 0x62, 0x4c, 0x69, 0x69, 0x64, 0x4d, 0x43, 0x73, 0x78, 0x62, 0x41, 0x79, 0x78, 0x67, 0x47, 0x66, 0x45, 0x74, 0x78, 0x58, 0x76, 0x30, 0x2b, 0x70, 0x55, 0x34, 0x67, 0x55, 0x77, 0x4e, 0x69, 0x42, 0x64, 0x70, 0x34, 0x30, 0x6f, 0x52, 0x4b, 0x33, 0x5c, 0x0a, 0x09, 0x4f, 0x37, 0x50, 0x4c, 0x7a, 0x6a, 0x67, 0x78, 0x33, 0x54, 0x34, 0x6c, 0x34, 0x70, 0x67, 0x32, 0x38, 0x54, 0x68, 0x63, 0x47, 0x58, 0x61, 0x4a, 0x4f, 0x7a, 0x6c, 0x2b, 0x7a, 0x61, 0x41, 0x66, 0x78, 0x4a, 0x51, 0x45, 0x48, 0x4b, 0x38, 0x4b, 0x74, 0x6a, 0x6b, 0x35, 0x66, 0x71, 0x44, 0x6a, 0x4a, 0x55, 0x55, 0x46, 0x6e, 0x48, 0x76, 0x71, 0x4b, 0x57, 0x7a, 0x59, 0x2b, 0x6c, 0x46, 0x61, 0x39, 0x6e, 0x4e, 0x38, 0x58, 0x75, 0x61, 0x64, 0x5c, 0x0a, 0x09, 0x4d, 0x54, 0x75, 0x6c, 0x63, 0x77, 0x34, 0x32, 0x4e, 0x4c, 0x4c, 0x70, 0x67, 0x30, 0x2f, 0x34, 0x71, 0x71, 0x36, 0x65, 0x6c, 0x72, 0x59, 0x4f, 0x75, 0x67, 0x4a, 0x42, 0x79, 0x35, 0x62, 0x58, 0x69, 0x38, 0x75, 0x6c, 0x55, 0x5a, 0x43, 0x66, 0x52, 0x32, 0x6c, 0x78, 0x49, 0x65, 0x50, 0x4b, 0x53, 0x7a, 0x6c, 0x2b, 0x2f, 0x46, 0x69, 0x6d, 0x54, 0x54, 0x79, 0x4f, 0x6f, 0x6f, 0x4b, 0x38, 0x51, 0x61, 0x7a, 0x32, 0x70, 0x61, 0x79, 0x6b, 0x5c, 0x0a, 0x09, 0x69, 0x4c, 0x4f, 0x72, 0x54, 0x6b, 0x36, 0x72, 0x47, 0x41, 0x69, 0x51, 0x6c, 0x2b, 0x50, 0x6a, 0x76, 0x4e, 0x4e, 0x6e, 0x78, 0x54, 0x73, 0x38, 0x43, 0x2f, 0x67, 0x6e, 0x59, 0x44, 0x67, 0x74, 0x41, 0x6b, 0x63, 0x46, 0x59, 0x48, 0x4e, 0x75, 0x46, 0x76, 0x31, 0x37, 0x30, 0x68, 0x37, 0x6c, 0x7a, 0x75, 0x73, 0x75, 0x5a, 0x2b, 0x4f, 0x32, 0x6a, 0x39, 0x4f, 0x71, 0x30, 0x76, 0x7a, 0x70, 0x67, 0x67, 0x73, 0x70, 0x4b, 0x53, 0x70, 0x49, 0x5c, 0x0a, 0x09, 0x4f, 0x6e, 0x77, 0x6f, 0x48, 0x4f, 0x62, 0x79, 0x32, 0x31, 0x66, 0x51, 0x6d, 0x6b, 0x4b, 0x2b, 0x51, 0x64, 0x4d, 0x30, 0x4c, 0x6a, 0x33, 0x76, 0x4c, 0x46, 0x59, 0x75, 0x57, 0x35, 0x79, 0x53, 0x62, 0x33, 0x64, 0x63, 0x74, 0x79, 0x42, 0x74, 0x41, 0x64, 0x78, 0x38, 0x31, 0x66, 0x63, 0x53, 0x69, 0x57, 0x34, 0x35, 0x63, 0x41, 0x50, 0x77, 0x4b, 0x2b, 0x42, 0x35, 0x6f, 0x37, 0x62, 0x61, 0x73, 0x53, 0x46, 0x6d, 0x6a, 0x6e, 0x30, 0x43, 0x5c, 0x0a, 0x09, 0x62, 0x47, 0x50, 0x6e, 0x48, 0x73, 0x44, 0x71, 0x43, 0x54, 0x73, 0x2f, 0x58, 0x74, 0x67, 0x5a, 0x55, 0x79, 0x5a, 0x77, 0x36, 0x38, 0x4a, 0x4c, 0x55, 0x72, 0x37, 0x47, 0x39, 0x45, 0x6e, 0x48, 0x73, 0x2b, 0x53, 0x48, 0x33, 0x30, 0x2f, 0x70, 0x6e, 0x4b, 0x62, 0x57, 0x39, 0x70, 0x51, 0x69, 0x48, 0x36, 0x77, 0x69, 0x32, 0x61, 0x76, 0x56, 0x37, 0x31, 0x4c, 0x66, 0x31, 0x4a, 0x4c, 0x53, 0x65, 0x62, 0x4e, 0x4f, 0x6d, 0x73, 0x54, 0x4e, 0x5c, 0x0a, 0x09, 0x56, 0x31, 0x34, 0x30, 0x65, 0x4d, 0x41, 0x59, 0x5a, 0x6b, 0x36, 0x64, 0x79, 0x4f, 0x4b, 0x72, 0x4c, 0x68, 0x34, 0x73, 0x57, 0x43, 0x58, 0x57, 0x61, 0x4b, 0x51, 0x4a, 0x4b, 0x56, 0x38, 0x67, 0x41, 0x55, 0x37, 0x6e, 0x41, 0x61, 0x34, 0x44, 0x66, 0x6f, 0x33, 0x56, 0x42, 0x7a, 0x41, 0x68, 0x53, 0x36, 0x39, 0x66, 0x77, 0x45, 0x31, 0x58, 0x4a, 0x50, 0x2b, 0x77, 0x5a, 0x6b, 0x36, 0x64, 0x79, 0x4a, 0x72, 0x37, 0x66, 0x6b, 0x6d, 0x75, 0x5c, 0x0a, 0x09, 0x72, 0x31, 0x2f, 0x42, 0x49, 0x69, 0x48, 0x6a, 0x79, 0x6b, 0x75, 0x70, 0x54, 0x4b, 0x4d, 0x52, 0x36, 0x5a, 0x69, 0x78, 0x35, 0x57, 0x6c, 0x6c, 0x4e, 0x70, 0x66, 0x39, 0x35, 0x47, 0x6f, 0x57, 0x58, 0x5a, 0x62, 0x38, 0x43, 0x4c, 0x43, 0x71, 0x61, 0x5a, 0x4e, 0x35, 0x64, 0x4d, 0x56, 0x53, 0x63, 0x6e, 0x7a, 0x65, 0x5a, 0x49, 0x4c, 0x6e, 0x41, 0x41, 0x2b, 0x6c, 0x37, 0x46, 0x51, 0x43, 0x48, 0x47, 0x73, 0x4e, 0x6a, 0x4b, 0x59, 0x41, 0x5c, 0x0a, 0x09, 0x37, 0x77, 0x46, 0x6e, 0x70, 0x6e, 0x4c, 0x65, 0x66, 0x32, 0x74, 0x71, 0x57, 0x62, 0x6c, 0x6d, 0x4c, 0x54, 0x76, 0x33, 0x37, 0x42, 0x76, 0x77, 0x75, 0x4c, 0x2b, 0x6f, 0x6b, 0x4d, 0x56, 0x58, 0x58, 0x38, 0x79, 0x69, 0x79, 0x79, 0x37, 0x41, 0x36, 0x30, 0x6e, 0x76, 0x69, 0x2f, 0x57, 0x76, 0x54, 0x56, 0x75, 0x35, 0x38, 0x34, 0x39, 0x2f, 0x54, 0x6a, 0x71, 0x38, 0x53, 0x39, 0x4e, 0x59, 0x76, 0x57, 0x49, 0x70, 0x33, 0x7a, 0x6c, 0x74, 0x5c, 0x0a, 0x09, 0x35, 0x75, 0x43, 0x42, 0x34, 0x37, 0x42, 0x78, 0x32, 0x38, 0x63, 0x38, 0x39, 0x4f, 0x53, 0x4c, 0x2f, 0x4f, 0x2f, 0x4c, 0x2f, 0x51, 0x4d, 0x65, 0x39, 0x78, 0x63, 0x56, 0x73, 0x75, 0x53, 0x61, 0x53, 0x37, 0x6a, 0x2b, 0x30, 0x67, 0x76, 0x77, 0x65, 0x46, 0x4c, 0x71, 0x4d, 0x74, 0x45, 0x4e, 0x35, 0x44, 0x76, 0x31, 0x43, 0x58, 0x42, 0x61, 0x41, 0x44, 0x71, 0x51, 0x6c, 0x4a, 0x52, 0x6a, 0x32, 0x62, 0x6c, 0x6e, 0x48, 0x35, 0x74, 0x33, 0x5c, 0x0a, 0x09, 0x66, 0x45, 0x70, 0x64, 0x66, 0x52, 0x4e, 0x36, 0x4b, 0x4d, 0x53, 0x59, 0x30, 0x68, 0x4b, 0x71, 0x70, 0x6b, 0x2f, 0x6d, 0x7a, 0x47, 0x39, 0x4f, 0x78, 0x2b, 0x66, 0x4e, 0x50, 0x4b, 0x76, 0x79, 0x7a, 0x4c, 0x71, 0x33, 0x2b, 0x63, 0x4e, 0x6a, 0x7a, 0x32, 0x45, 0x59, 0x6b, 0x59, 0x54, 0x68, 0x78, 0x70, 0x62, 0x35, 0x75, 0x66, 0x66, 0x32, 0x52, 0x63, 0x77, 0x39, 0x49, 0x32, 0x36, 0x47, 0x4c, 0x47, 0x6c, 0x4d, 0x30, 0x32, 0x54, 0x6e, 0x5c, 0x0a, 0x09, 0x6e, 0x76, 0x31, 0x73, 0x72, 0x71, 0x6e, 0x6c, 0x30, 0x4a, 0x46, 0x6d, 0x39, 0x46, 0x43, 0x49, 0x69, 0x6a, 0x49, 0x2f, 0x73, 0x36, 0x64, 0x4e, 0x79, 0x76, 0x53, 0x2b, 0x74, 0x4a, 0x45, 0x71, 0x67, 0x42, 0x47, 0x39, 0x46, 0x76, 0x32, 0x65, 0x72, 0x2b, 0x74, 0x34, 0x2f, 0x4d, 0x55, 0x33, 0x57, 0x62, 0x39, 0x6c, 0x42, 0x38, 0x31, 0x74, 0x76, 0x52, 0x55, 0x33, 0x65, 0x62, 0x6b, 0x35, 0x7a, 0x44, 0x70, 0x70, 0x45, 0x76, 0x50, 0x50, 0x5c, 0x0a, 0x09, 0x6e, 0x73, 0x4f, 0x56, 0x38, 0x38, 0x39, 0x4e, 0x2b, 0x54, 0x4d, 0x7a, 0x78, 0x4f, 0x77, 0x43, 0x70, 0x6f, 0x35, 0x55, 0x41, 0x65, 0x77, 0x44, 0x6a, 0x6e, 0x50, 0x45, 0x6f, 0x47, 0x43, 0x4f, 0x4e, 0x4c, 0x63, 0x53, 0x31, 0x45, 0x50, 0x6b, 0x35, 0x76, 0x67, 0x63, 0x71, 0x5a, 0x77, 0x61, 0x51, 0x6d, 0x34, 0x45, 0x6e, 0x68, 0x70, 0x78, 0x70, 0x59, 0x41, 0x6f, 0x54, 0x7a, 0x6c, 0x73, 0x54, 0x78, 0x68, 0x6a, 0x53, 0x6b, 0x73, 0x34, 0x5c, 0x0a, 0x09, 0x64, 0x74, 0x79, 0x59, 0x62, 0x49, 0x72, 0x38, 0x49, 0x50, 0x41, 0x4c, 0x48, 0x48, 0x37, 0x47, 0x54, 0x6c, 0x63, 0x45, 0x2f, 0x52, 0x35, 0x72, 0x54, 0x50, 0x7a, 0x50, 0x36, 0x54, 0x73, 0x32, 0x58, 0x70, 0x45, 0x5a, 0x6e, 0x77, 0x49, 0x58, 0x41, 0x48, 0x58, 0x67, 0x37, 0x44, 0x51, 0x7a, 0x54, 0x71, 0x63, 0x41, 0x4f, 0x72, 0x43, 0x4d, 0x4a, 0x44, 0x75, 0x44, 0x4b, 0x70, 0x4a, 0x6d, 0x46, 0x39, 0x48, 0x49, 0x64, 0x33, 0x71, 0x38, 0x5c, 0x0a, 0x09, 0x6f, 0x47, 0x4d, 0x43, 0x63, 0x4d, 0x2b, 0x59, 0x61, 0x33, 0x63, 0x75, 0x61, 0x39, 0x4c, 0x56, 0x62, 0x45, 0x4c, 0x45, 0x59, 0x46, 0x46, 0x52, 0x6a, 0x55, 0x48, 0x43, 0x6d, 0x69, 0x38, 0x6c, 0x4a, 0x53, 0x6a, 0x4b, 0x73, 0x42, 0x4a, 0x41, 0x64, 0x74, 0x41, 0x74, 0x79, 0x72, 0x44, 0x6a, 0x41, 0x6a, 0x41, 0x30, 0x4e, 0x79, 0x67, 0x42, 0x4f, 0x45, 0x33, 0x32, 0x43, 0x43, 0x44, 0x67, 0x4b, 0x79, 0x62, 0x6f, 0x7a, 0x5a, 0x38, 0x51, 0x5c, 0x0a, 0x09, 0x30, 0x64, 0x54, 0x38, 0x55, 0x77, 0x34, 0x69, 0x37, 0x42, 0x50, 0x67, 0x65, 0x48, 0x2b, 0x41, 0x7a, 0x6c, 0x77, 0x2f, 0x59, 0x58, 0x66, 0x75, 0x54, 0x4e, 0x32, 0x54, 0x69, 0x79, 0x2f, 0x63, 0x54, 0x55, 0x36, 0x6f, 0x4d, 0x2f, 0x72, 0x72, 0x77, 0x6d, 0x73, 0x45, 0x6e, 0x4c, 0x36, 0x63, 0x4c, 0x41, 0x6a, 0x72, 0x42, 0x75, 0x32, 0x34, 0x41, 0x41, 0x4c, 0x65, 0x59, 0x69, 0x49, 0x75, 0x64, 0x77, 0x65, 0x41, 0x37, 0x73, 0x6c, 0x48, 0x5c, 0x0a, 0x09, 0x39, 0x2b, 0x54, 0x54, 0x6e, 0x6d, 0x66, 0x31, 0x44, 0x58, 0x57, 0x5a, 0x42, 0x72, 0x35, 0x51, 0x46, 0x7a, 0x6e, 0x68, 0x4c, 0x6e, 0x4a, 0x43, 0x6e, 0x66, 0x6a, 0x43, 0x58, 0x58, 0x67, 0x4d, 0x6f, 0x55, 0x50, 0x66, 0x52, 0x67, 0x73, 0x62, 0x75, 0x6e, 0x4c, 0x45, 0x64, 0x49, 0x4e, 0x7a, 0x58, 0x41, 0x41, 0x52, 0x6c, 0x78, 0x75, 0x73, 0x5a, 0x73, 0x76, 0x2b, 0x78, 0x7a, 0x51, 0x33, 0x41, 0x56, 0x38, 0x52, 0x41, 0x56, 0x2f, 0x76, 0x5c, 0x0a, 0x09, 0x6e, 0x45, 0x75, 0x75, 0x53, 0x42, 0x68, 0x66, 0x75, 0x4e, 0x76, 0x32, 0x36, 0x38, 0x4a, 0x72, 0x42, 0x4e, 0x48, 0x4d, 0x78, 0x49, 0x30, 0x32, 0x32, 0x59, 0x6a, 0x68, 0x38, 0x68, 0x44, 0x52, 0x50, 0x45, 0x52, 0x63, 0x48, 0x69, 0x4b, 0x61, 0x47, 0x38, 0x50, 0x6c, 0x4a, 0x71, 0x4b, 0x35, 0x69, 0x66, 0x54, 0x38, 0x31, 0x54, 0x79, 0x39, 0x32, 0x30, 0x66, 0x33, 0x75, 0x55, 0x30, 0x30, 0x7a, 0x5a, 0x38, 0x58, 0x6a, 0x44, 0x74, 0x79, 0x5c, 0x0a, 0x09, 0x4b, 0x43, 0x4f, 0x47, 0x66, 0x5a, 0x37, 0x41, 0x69, 0x4d, 0x76, 0x54, 0x54, 0x78, 0x51, 0x41, 0x48, 0x6b, 0x50, 0x48, 0x61, 0x77, 0x54, 0x77, 0x47, 0x67, 0x45, 0x38, 0x68, 0x6f, 0x37, 0x62, 0x43, 0x4f, 0x47, 0x4a, 0x36, 0x48, 0x67, 0x4d, 0x48, 0x5a, 0x63, 0x5a, 0x52, 0x6e, 0x4e, 0x77, 0x67, 0x47, 0x53, 0x6d, 0x68, 0x4e, 0x30, 0x2b, 0x51, 0x75, 0x35, 0x63, 0x77, 0x6d, 0x34, 0x66, 0x68, 0x73, 0x73, 0x62, 0x2f, 0x56, 0x6b, 0x52, 0x5c, 0x0a, 0x09, 0x33, 0x52, 0x50, 0x70, 0x68, 0x69, 0x76, 0x39, 0x6c, 0x6a, 0x39, 0x67, 0x59, 0x57, 0x64, 0x4f, 0x71, 0x5a, 0x43, 0x5a, 0x52, 0x6b, 0x55, 0x4a, 0x6f, 0x44, 0x6c, 0x54, 0x41, 0x32, 0x47, 0x33, 0x6a, 0x37, 0x44, 0x62, 0x52, 0x33, 0x65, 0x63, 0x4f, 0x69, 0x58, 0x4e, 0x6a, 0x4b, 0x43, 0x6c, 0x30, 0x50, 0x69, 0x6f, 0x6d, 0x5a, 0x45, 0x2b, 0x6f, 0x6e, 0x47, 0x5a, 0x52, 0x6d, 0x4a, 0x62, 0x70, 0x6f, 0x6b, 0x72, 0x51, 0x53, 0x6f, 0x55, 0x5c, 0x0a, 0x09, 0x63, 0x62, 0x6b, 0x78, 0x30, 0x51, 0x69, 0x35, 0x63, 0x34, 0x69, 0x6b, 0x48, 0x37, 0x6e, 0x4a, 0x55, 0x6f, 0x57, 0x67, 0x4f, 0x52, 0x68, 0x46, 0x65, 0x66, 0x36, 0x6c, 0x49, 0x4c, 0x74, 0x48, 0x4d, 0x54, 0x56, 0x58, 0x61, 0x6d, 0x33, 0x50, 0x57, 0x6c, 0x62, 0x50, 0x55, 0x31, 0x45, 0x30, 0x65, 0x4a, 0x44, 0x30, 0x45, 0x46, 0x56, 0x57, 0x57, 0x79, 0x66, 0x49, 0x72, 0x71, 0x77, 0x63, 0x45, 0x47, 0x56, 0x59, 0x6c, 0x41, 0x42, 0x71, 0x5c, 0x0a, 0x09, 0x67, 0x41, 0x32, 0x43, 0x62, 0x4d, 0x76, 0x49, 0x64, 0x6c, 0x47, 0x47, 0x48, 0x52, 0x66, 0x41, 0x6c, 0x4c, 0x46, 0x48, 0x4b, 0x77, 0x47, 0x58, 0x4f, 0x32, 0x31, 0x62, 0x59, 0x6f, 0x53, 0x39, 0x54, 0x43, 0x4b, 0x72, 0x36, 0x7a, 0x59, 0x44, 0x4c, 0x77, 0x69, 0x30, 0x4c, 0x77, 0x73, 0x6d, 0x73, 0x46, 0x47, 0x55, 0x63, 0x53, 0x45, 0x43, 0x73, 0x4b, 0x55, 0x43, 0x74, 0x77, 0x46, 0x48, 0x52, 0x46, 0x78, 0x44, 0x49, 0x72, 0x59, 0x44, 0x5c, 0x0a, 0x09, 0x39, 0x61, 0x4b, 0x4d, 0x69, 0x36, 0x36, 0x77, 0x62, 0x79, 0x44, 0x42, 0x4a, 0x46, 0x47, 0x4b, 0x70, 0x48, 0x67, 0x4e, 0x2b, 0x72, 0x78, 0x55, 0x6a, 0x69, 0x4a, 0x4d, 0x41, 0x44, 0x61, 0x48, 0x58, 0x77, 0x49, 0x65, 0x46, 0x48, 0x57, 0x64, 0x55, 0x59, 0x36, 0x42, 0x34, 0x48, 0x36, 0x57, 0x51, 0x6c, 0x4f, 0x41, 0x6d, 0x41, 0x7a, 0x68, 0x79, 0x4a, 0x33, 0x63, 0x5a, 0x2b, 0x54, 0x79, 0x4f, 0x49, 0x4c, 0x72, 0x56, 0x49, 0x61, 0x71, 0x5c, 0x0a, 0x09, 0x7a, 0x64, 0x59, 0x41, 0x66, 0x6f, 0x51, 0x31, 0x61, 0x62, 0x52, 0x71, 0x2f, 0x55, 0x6d, 0x4f, 0x74, 0x56, 0x69, 0x39, 0x67, 0x49, 0x55, 0x6c, 0x2f, 0x7a, 0x41, 0x45, 0x41, 0x72, 0x41, 0x35, 0x62, 0x32, 0x43, 0x74, 0x71, 0x6e, 0x45, 0x69, 0x38, 0x42, 0x63, 0x45, 0x64, 0x6e, 0x4c, 0x49, 0x59, 0x68, 0x71, 0x42, 0x52, 0x37, 0x42, 0x47, 0x56, 0x79, 0x39, 0x6b, 0x43, 0x4e, 0x59, 0x5a, 0x47, 0x74, 0x49, 0x31, 0x67, 0x33, 0x62, 0x58, 0x5c, 0x0a, 0x09, 0x39, 0x78, 0x6c, 0x74, 0x57, 0x77, 0x70, 0x63, 0x44, 0x56, 0x79, 0x44, 0x4e, 0x53, 0x76, 0x32, 0x36, 0x46, 0x70, 0x77, 0x4b, 0x48, 0x6b, 0x61, 0x73, 0x47, 0x70, 0x4f, 0x31, 0x77, 0x4a, 0x76, 0x59, 0x36, 0x31, 0x4b, 0x41, 0x73, 0x52, 0x2f, 0x38, 0x37, 0x4e, 0x6d, 0x77, 0x59, 0x68, 0x34, 0x32, 0x49, 0x56, 0x51, 0x45, 0x47, 0x6a, 0x45, 0x33, 0x33, 0x56, 0x34, 0x56, 0x64, 0x42, 0x62, 0x38, 0x4c, 0x4d, 0x75, 0x58, 0x77, 0x6b, 0x42, 0x5c, 0x0a, 0x09, 0x58, 0x7a, 0x47, 0x6a, 0x76, 0x54, 0x65, 0x52, 0x68, 0x74, 0x6c, 0x67, 0x6f, 0x72, 0x32, 0x49, 0x4e, 0x65, 0x6e, 0x44, 0x4f, 0x30, 0x54, 0x58, 0x46, 0x4f, 0x70, 0x68, 0x73, 0x43, 0x51, 0x2f, 0x4b, 0x78, 0x65, 0x4e, 0x73, 0x6d, 0x4f, 0x2f, 0x51, 0x62, 0x33, 0x32, 0x48, 0x56, 0x78, 0x6d, 0x52, 0x50, 0x65, 0x47, 0x41, 0x78, 0x52, 0x32, 0x4e, 0x32, 0x4b, 0x69, 0x45, 0x66, 0x51, 0x57, 0x48, 0x47, 0x30, 0x69, 0x44, 0x6e, 0x6f, 0x4b, 0x5c, 0x0a, 0x09, 0x4d, 0x45, 0x66, 0x42, 0x61, 0x6d, 0x54, 0x65, 0x63, 0x49, 0x42, 0x38, 0x76, 0x59, 0x58, 0x38, 0x59, 0x43, 0x75, 0x2b, 0x63, 0x50, 0x63, 0x31, 0x6a, 0x59, 0x57, 0x56, 0x31, 0x52, 0x31, 0x35, 0x76, 0x63, 0x50, 0x57, 0x52, 0x58, 0x37, 0x6e, 0x45, 0x7a, 0x48, 0x73, 0x2f, 0x51, 0x47, 0x69, 0x54, 0x61, 0x35, 0x48, 0x35, 0x31, 0x62, 0x56, 0x4d, 0x4d, 0x6b, 0x4e, 0x64, 0x5a, 0x41, 0x62, 0x36, 0x6f, 0x44, 0x4f, 0x4f, 0x6b, 0x78, 0x4e, 0x5c, 0x0a, 0x09, 0x51, 0x2f, 0x66, 0x6b, 0x30, 0x31, 0x49, 0x77, 0x2f, 0x6d, 0x2f, 0x64, 0x76, 0x75, 0x4a, 0x43, 0x34, 0x47, 0x77, 0x45, 0x54, 0x35, 0x2f, 0x71, 0x46, 0x4c, 0x6c, 0x36, 0x4f, 0x2f, 0x6c, 0x36, 0x4b, 0x2f, 0x6e, 0x42, 0x56, 0x6a, 0x78, 0x47, 0x6e, 0x32, 0x35, 0x39, 0x2b, 0x38, 0x76, 0x62, 0x39, 0x2f, 0x4f, 0x4e, 0x45, 0x36, 0x59, 0x4d, 0x6c, 0x32, 0x74, 0x48, 0x47, 0x58, 0x59, 0x42, 0x52, 0x46, 0x6d, 0x4c, 0x4e, 0x61, 0x79, 0x73, 0x5c, 0x0a, 0x09, 0x33, 0x32, 0x75, 0x67, 0x6d, 0x61, 0x61, 0x5a, 0x45, 0x2b, 0x71, 0x38, 0x4e, 0x30, 0x66, 0x76, 0x57, 0x4b, 0x46, 0x37, 0x38, 0x6a, 0x42, 0x63, 0x58, 0x6f, 0x42, 0x6a, 0x73, 0x65, 0x59, 0x68, 0x6d, 0x42, 0x50, 0x39, 0x7a, 0x57, 0x5a, 0x6b, 0x69, 0x43, 0x4b, 0x51, 0x70, 0x37, 0x64, 0x36, 0x43, 0x77, 0x49, 0x74, 0x37, 0x6e, 0x79, 0x39, 0x46, 0x56, 0x63, 0x6b, 0x50, 0x46, 0x43, 0x59, 0x44, 0x63, 0x44, 0x75, 0x56, 0x50, 0x6f, 0x79, 0x5c, 0x0a, 0x09, 0x69, 0x47, 0x54, 0x59, 0x46, 0x34, 0x36, 0x30, 0x7a, 0x53, 0x74, 0x55, 0x68, 0x62, 0x58, 0x65, 0x37, 0x72, 0x6c, 0x59, 0x77, 0x6a, 0x79, 0x45, 0x74, 0x51, 0x44, 0x6a, 0x49, 0x31, 0x69, 0x72, 0x61, 0x65, 0x45, 0x35, 0x5a, 0x56, 0x35, 0x73, 0x52, 0x74, 0x4a, 0x4f, 0x47, 0x54, 0x41, 0x64, 0x4f, 0x42, 0x6c, 0x72, 0x55, 0x63, 0x64, 0x4b, 0x4c, 0x4b, 0x45, 0x63, 0x45, 0x39, 0x30, 0x65, 0x73, 0x4a, 0x74, 0x61, 0x6d, 0x68, 0x68, 0x59, 0x5c, 0x0a, 0x09, 0x51, 0x37, 0x57, 0x2b, 0x77, 0x68, 0x6f, 0x52, 0x2f, 0x54, 0x6e, 0x57, 0x67, 0x70, 0x4c, 0x56, 0x45, 0x2b, 0x71, 0x33, 0x50, 0x30, 0x44, 0x66, 0x64, 0x59, 0x62, 0x74, 0x31, 0x41, 0x43, 0x58, 0x41, 0x67, 0x63, 0x79, 0x47, 0x65, 0x57, 0x54, 0x39, 0x5a, 0x6e, 0x41, 0x57, 0x47, 0x4a, 0x6d, 0x76, 0x76, 0x4a, 0x67, 0x72, 0x5a, 0x72, 0x56, 0x70, 0x7a, 0x74, 0x4f, 0x6f, 0x67, 0x65, 0x57, 0x51, 0x42, 0x52, 0x32, 0x43, 0x72, 0x46, 0x6d, 0x5c, 0x0a, 0x09, 0x4c, 0x69, 0x32, 0x33, 0x2f, 0x66, 0x78, 0x59, 0x67, 0x31, 0x69, 0x4c, 0x67, 0x49, 0x4c, 0x6f, 0x64, 0x73, 0x2f, 0x30, 0x37, 0x47, 0x31, 0x59, 0x53, 0x37, 0x6e, 0x56, 0x59, 0x2b, 0x58, 0x55, 0x44, 0x30, 0x64, 0x2f, 0x44, 0x56, 0x6a, 0x74, 0x47, 0x2f, 0x30, 0x65, 0x6e, 0x4c, 0x2b, 0x7a, 0x44, 0x6e, 0x39, 0x6e, 0x6e, 0x51, 0x39, 0x72, 0x6c, 0x62, 0x51, 0x62, 0x73, 0x57, 0x5a, 0x4b, 0x36, 0x77, 0x53, 0x32, 0x59, 0x69, 0x30, 0x66, 0x5c, 0x0a, 0x09, 0x2f, 0x7a, 0x54, 0x52, 0x58, 0x50, 0x36, 0x6f, 0x46, 0x45, 0x43, 0x6d, 0x32, 0x43, 0x61, 0x61, 0x41, 0x70, 0x77, 0x62, 0x42, 0x66, 0x74, 0x46, 0x67, 0x35, 0x67, 0x4f, 0x6c, 0x5a, 0x4d, 0x72, 0x2b, 0x76, 0x62, 0x55, 0x6a, 0x66, 0x55, 0x2f, 0x48, 0x6b, 0x36, 0x4f, 0x37, 0x73, 0x32, 0x55, 0x45, 0x53, 0x55, 0x41, 0x78, 0x64, 0x41, 0x7a, 0x75, 0x67, 0x76, 0x63, 0x69, 0x6b, 0x46, 0x52, 0x41, 0x70, 0x41, 0x63, 0x4a, 0x51, 0x44, 0x4a, 0x5c, 0x0a, 0x09, 0x55, 0x51, 0x4b, 0x51, 0x48, 0x43, 0x55, 0x41, 0x79, 0x56, 0x45, 0x43, 0x6b, 0x42, 0x77, 0x6c, 0x41, 0x4d, 0x6c, 0x52, 0x41, 0x70, 0x41, 0x63, 0x4a, 0x51, 0x44, 0x4a, 0x55, 0x51, 0x4b, 0x51, 0x48, 0x43, 0x55, 0x41, 0x79, 0x56, 0x45, 0x43, 0x6b, 0x42, 0x77, 0x6c, 0x41, 0x4d, 0x6c, 0x52, 0x41, 0x70, 0x41, 0x63, 0x4a, 0x51, 0x44, 0x4a, 0x55, 0x51, 0x4b, 0x51, 0x48, 0x43, 0x55, 0x41, 0x79, 0x56, 0x45, 0x43, 0x6b, 0x42, 0x77, 0x6c, 0x5c, 0x0a, 0x09, 0x41, 0x4d, 0x6c, 0x52, 0x41, 0x70, 0x41, 0x63, 0x4a, 0x51, 0x44, 0x4a, 0x55, 0x51, 0x4b, 0x51, 0x48, 0x43, 0x55, 0x41, 0x79, 0x56, 0x45, 0x43, 0x6b, 0x42, 0x77, 0x6c, 0x41, 0x4d, 0x6c, 0x52, 0x41, 0x70, 0x41, 0x63, 0x4a, 0x51, 0x44, 0x4a, 0x55, 0x51, 0x4b, 0x51, 0x48, 0x43, 0x55, 0x41, 0x79, 0x56, 0x45, 0x43, 0x6b, 0x4a, 0x7a, 0x2f, 0x41, 0x37, 0x77, 0x33, 0x68, 0x35, 0x77, 0x31, 0x62, 0x6c, 0x36, 0x41, 0x41, 0x41, 0x41, 0x41, 0x5c, 0x0a, 0x09, 0x41, 0x45, 0x6c, 0x46, 0x54, 0x6b, 0x53, 0x75, 0x51, 0x6d, 0x43, 0x43, 0x5c, 0x0a, 0x09, 0x22, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x70, 0x6e, 0x67, 0x20, 0x3d, 0x0a, 0x09, 0x22, 0x69, 0x56, 0x42, 0x4f, 0x52, 0x77, 0x30, 0x4b, 0x47, 0x67, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x4e, 0x53, 0x55, 0x68, 0x45, 0x55, 0x67, 0x41, 0x41, 0x41, 0x67, 0x41, 0x41, 0x41, 0x41, 0x49, 0x41, 0x43, 0x41, 0x59, 0x41, 0x41, 0x41, 0x44, 0x30, 0x65, 0x4e, 0x54, 0x36, 0x41, 0x41, 0x41, 0x67, 0x41, 0x45, 0x6c, 0x45, 0x51, 0x56, 0x52, 0x34, 0x6e, 0x4f, 0x33, 0x64, 0x65, 0x5a, 0x52, 0x65, 0x64, 0x5a, 0x33, 0x6e, 0x38, 0x58, 0x63, 0x71, 0x5c, 0x0a, 0x09, 0x53, 0x55, 0x57, 0x54, 0x6b, 0x41, 0x55, 0x54, 0x49, 0x4c, 0x49, 0x4a, 0x52, 0x43, 0x56, 0x73, 0x41, 0x72, 0x49, 0x6f, 0x71, 0x43, 0x6a, 0x64, 0x49, 0x4c, 0x59, 0x47, 0x48, 0x52, 0x5a, 0x62, 0x41, 0x52, 0x63, 0x34, 0x4d, 0x77, 0x67, 0x32, 0x67, 0x69, 0x6a, 0x30, 0x64, 0x47, 0x50, 0x50, 0x61, 0x62, 0x46, 0x48, 0x50, 0x45, 0x64, 0x45, 0x46, 0x42, 0x64, 0x55, 0x5a, 0x68, 0x6f, 0x50, 0x41, 0x71, 0x32, 0x79, 0x71, 0x4b, 0x67, 0x6a, 0x5c, 0x0a, 0x09, 0x41, 0x72, 0x49, 0x70, 0x74, 0x69, 0x41, 0x43, 0x43, 0x67, 0x46, 0x55, 0x61, 0x43, 0x55, 0x43, 0x67, 0x59, 0x51, 0x6c, 0x4f, 0x34, 0x5a, 0x51, 0x71, 0x66, 0x6e, 0x6a, 0x57, 0x30, 0x55, 0x71, 0x53, 0x53, 0x33, 0x50, 0x63, 0x75, 0x2f, 0x39, 0x33, 0x65, 0x58, 0x39, 0x4f, 0x75, 0x63, 0x35, 0x57, 0x61, 0x72, 0x79, 0x33, 0x45, 0x2f, 0x51, 0x33, 0x4f, 0x2f, 0x33, 0x2b, 0x66, 0x37, 0x75, 0x2f, 0x64, 0x31, 0x78, 0x2f, 0x66, 0x33, 0x39, 0x5c, 0x0a, 0x09, 0x53, 0x43, 0x71, 0x74, 0x38, 0x63, 0x44, 0x73, 0x49, 0x61, 0x39, 0x5a, 0x77, 0x4f, 0x62, 0x41, 0x54, 0x47, 0x41, 0x36, 0x4d, 0x41, 0x50, 0x59, 0x44, 0x48, 0x6a, 0x70, 0x77, 0x49, 0x38, 0x76, 0x47, 0x66, 0x4c, 0x7a, 0x43, 0x51, 0x50, 0x66, 0x4e, 0x39, 0x54, 0x67, 0x31, 0x34, 0x64, 0x36, 0x44, 0x76, 0x6a, 0x72, 0x52, 0x72, 0x2f, 0x33, 0x4c, 0x50, 0x41, 0x43, 0x73, 0x47, 0x4c, 0x49, 0x31, 0x77, 0x64, 0x2f, 0x76, 0x67, 0x4a, 0x59, 0x5c, 0x0a, 0x09, 0x43, 0x69, 0x77, 0x62, 0x2b, 0x4c, 0x35, 0x6e, 0x67, 0x4b, 0x65, 0x41, 0x4a, 0x55, 0x4e, 0x65, 0x66, 0x52, 0x33, 0x2f, 0x6a, 0x53, 0x55, 0x56, 0x59, 0x70, 0x77, 0x4e, 0x67, 0x4a, 0x54, 0x4d, 0x44, 0x47, 0x43, 0x37, 0x67, 0x64, 0x65, 0x32, 0x77, 0x44, 0x59, 0x44, 0x50, 0x32, 0x34, 0x4e, 0x62, 0x4d, 0x48, 0x36, 0x6f, 0x74, 0x2b, 0x54, 0x4b, 0x6d, 0x43, 0x48, 0x2b, 0x6f, 0x48, 0x46, 0x52, 0x43, 0x4f, 0x77, 0x47, 0x48, 0x67, 0x4d, 0x5c, 0x0a, 0x09, 0x2b, 0x41, 0x76, 0x77, 0x36, 0x4d, 0x43, 0x50, 0x43, 0x77, 0x64, 0x2b, 0x66, 0x44, 0x5a, 0x56, 0x51, 0x45, 0x6b, 0x32, 0x41, 0x46, 0x4b, 0x65, 0x78, 0x68, 0x46, 0x46, 0x66, 0x65, 0x36, 0x51, 0x31, 0x34, 0x34, 0x44, 0x50, 0x2b, 0x35, 0x45, 0x66, 0x45, 0x70, 0x76, 0x73, 0x68, 0x58, 0x41, 0x77, 0x30, 0x4e, 0x65, 0x44, 0x77, 0x31, 0x35, 0x50, 0x55, 0x6f, 0x30, 0x45, 0x70, 0x4a, 0x79, 0x59, 0x67, 0x4d, 0x67, 0x64, 0x61, 0x38, 0x48, 0x5c, 0x0a, 0x09, 0x65, 0x41, 0x57, 0x77, 0x43, 0x37, 0x41, 0x72, 0x4d, 0x41, 0x2f, 0x59, 0x44, 0x64, 0x67, 0x5a, 0x6d, 0x4a, 0x49, 0x75, 0x56, 0x71, 0x57, 0x74, 0x41, 0x68, 0x34, 0x45, 0x37, 0x67, 0x4d, 0x65, 0x41, 0x42, 0x59, 0x41, 0x39, 0x77, 0x4e, 0x2f, 0x42, 0x74, 0x61, 0x6c, 0x69, 0x79, 0x58, 0x56, 0x68, 0x77, 0x32, 0x41, 0x31, 0x4a, 0x35, 0x65, 0x6f, 0x72, 0x6a, 0x76, 0x42, 0x65, 0x77, 0x4e, 0x37, 0x41, 0x6e, 0x73, 0x41, 0x55, 0x78, 0x4e, 0x5c, 0x0a, 0x09, 0x47, 0x61, 0x70, 0x42, 0x56, 0x67, 0x4b, 0x2f, 0x41, 0x2b, 0x34, 0x42, 0x37, 0x67, 0x62, 0x75, 0x49, 0x70, 0x71, 0x45, 0x35, 0x31, 0x4f, 0x47, 0x6b, 0x71, 0x72, 0x49, 0x42, 0x6b, 0x41, 0x61, 0x57, 0x51, 0x2f, 0x78, 0x4b, 0x66, 0x35, 0x31, 0x77, 0x50, 0x37, 0x41, 0x66, 0x73, 0x51, 0x6e, 0x2f, 0x49, 0x6b, 0x70, 0x51, 0x32, 0x6b, 0x54, 0x61, 0x34, 0x6e, 0x70, 0x77, 0x4f, 0x30, 0x44, 0x72, 0x31, 0x38, 0x52, 0x30, 0x77, 0x4d, 0x6e, 0x5c, 0x0a, 0x09, 0x42, 0x64, 0x49, 0x6f, 0x62, 0x41, 0x43, 0x6b, 0x39, 0x61, 0x59, 0x43, 0x42, 0x77, 0x42, 0x76, 0x49, 0x49, 0x72, 0x2b, 0x66, 0x73, 0x53, 0x56, 0x39, 0x71, 0x71, 0x65, 0x5a, 0x63, 0x41, 0x64, 0x52, 0x45, 0x50, 0x77, 0x43, 0x2b, 0x41, 0x32, 0x59, 0x6e, 0x6f, 0x67, 0x61, 0x59, 0x41, 0x4e, 0x67, 0x4a, 0x70, 0x73, 0x42, 0x76, 0x42, 0x47, 0x34, 0x45, 0x30, 0x44, 0x72, 0x37, 0x32, 0x4a, 0x57, 0x2b, 0x64, 0x55, 0x50, 0x79, 0x38, 0x51, 0x5c, 0x0a, 0x09, 0x79, 0x77, 0x57, 0x33, 0x44, 0x72, 0x78, 0x2b, 0x54, 0x74, 0x7a, 0x4b, 0x4b, 0x44, 0x57, 0x57, 0x44, 0x59, 0x43, 0x61, 0x70, 0x4a, 0x66, 0x34, 0x64, 0x50, 0x2b, 0x33, 0x77, 0x43, 0x46, 0x45, 0x77, 0x61, 0x2f, 0x61, 0x4c, 0x58, 0x62, 0x4b, 0x78, 0x6a, 0x71, 0x69, 0x49, 0x62, 0x67, 0x65, 0x75, 0x49, 0x47, 0x59, 0x45, 0x4b, 0x78, 0x4a, 0x6d, 0x6b, 0x67, 0x71, 0x6d, 0x41, 0x32, 0x41, 0x36, 0x6d, 0x35, 0x6e, 0x34, 0x47, 0x31, 0x45, 0x5c, 0x0a, 0x09, 0x77, 0x54, 0x38, 0x49, 0x6d, 0x4a, 0x77, 0x32, 0x6a, 0x6b, 0x70, 0x71, 0x4e, 0x58, 0x41, 0x4c, 0x30, 0x52, 0x42, 0x63, 0x53, 0x39, 0x78, 0x35, 0x49, 0x4e, 0x57, 0x61, 0x44, 0x59, 0x44, 0x71, 0x70, 0x70, 0x63, 0x6f, 0x39, 0x47, 0x38, 0x48, 0x33, 0x6b, 0x48, 0x63, 0x62, 0x79, 0x2b, 0x31, 0x36, 0x32, 0x48, 0x67, 0x78, 0x38, 0x43, 0x50, 0x69, 0x4d, 0x62, 0x41, 0x75, 0x77, 0x78, 0x55, 0x4f, 0x7a, 0x59, 0x41, 0x71, 0x6f, 0x4f, 0x5a, 0x5c, 0x0a, 0x09, 0x77, 0x4f, 0x48, 0x41, 0x66, 0x4f, 0x42, 0x51, 0x33, 0x47, 0x42, 0x48, 0x32, 0x56, 0x6f, 0x4a, 0x2f, 0x42, 0x54, 0x34, 0x49, 0x58, 0x41, 0x4e, 0x37, 0x6d, 0x43, 0x6f, 0x6d, 0x72, 0x41, 0x42, 0x55, 0x46, 0x58, 0x4e, 0x41, 0x74, 0x34, 0x46, 0x48, 0x41, 0x48, 0x38, 0x44, 0x66, 0x48, 0x4a, 0x58, 0x38, 0x72, 0x62, 0x57, 0x75, 0x41, 0x6d, 0x34, 0x41, 0x72, 0x67, 0x2b, 0x38, 0x51, 0x7a, 0x45, 0x4b, 0x52, 0x4b, 0x73, 0x67, 0x46, 0x51, 0x5c, 0x0a, 0x09, 0x6c, 0x62, 0x77, 0x4d, 0x65, 0x44, 0x64, 0x77, 0x46, 0x44, 0x48, 0x6d, 0x48, 0x35, 0x38, 0x32, 0x6a, 0x68, 0x71, 0x75, 0x6a, 0x31, 0x67, 0x65, 0x75, 0x42, 0x4c, 0x34, 0x4c, 0x76, 0x42, 0x30, 0x32, 0x6a, 0x68, 0x53, 0x65, 0x32, 0x77, 0x41, 0x56, 0x48, 0x5a, 0x54, 0x67, 0x48, 0x63, 0x43, 0x78, 0x78, 0x44, 0x6a, 0x66, 0x54, 0x66, 0x68, 0x55, 0x52, 0x6d, 0x74, 0x42, 0x61, 0x34, 0x44, 0x4c, 0x69, 0x65, 0x57, 0x43, 0x64, 0x78, 0x7a, 0x5c, 0x0a, 0x09, 0x51, 0x4b, 0x56, 0x6e, 0x41, 0x36, 0x41, 0x79, 0x47, 0x67, 0x2b, 0x38, 0x46, 0x54, 0x69, 0x57, 0x4b, 0x50, 0x37, 0x75, 0x70, 0x36, 0x38, 0x71, 0x57, 0x51, 0x58, 0x38, 0x41, 0x4c, 0x69, 0x4d, 0x75, 0x48, 0x62, 0x41, 0x52, 0x79, 0x4f, 0x72, 0x6c, 0x47, 0x77, 0x41, 0x56, 0x43, 0x59, 0x37, 0x41, 0x52, 0x38, 0x45, 0x54, 0x67, 0x42, 0x65, 0x6e, 0x6a, 0x61, 0x4b, 0x6c, 0x49, 0x6e, 0x48, 0x67, 0x59, 0x73, 0x48, 0x58, 0x67, 0x38, 0x6e, 0x5c, 0x0a, 0x09, 0x7a, 0x69, 0x4a, 0x74, 0x77, 0x41, 0x5a, 0x41, 0x71, 0x55, 0x30, 0x42, 0x6a, 0x67, 0x61, 0x4f, 0x4a, 0x33, 0x62, 0x6c, 0x47, 0x35, 0x63, 0x32, 0x6a, 0x70, 0x53, 0x4c, 0x66, 0x6d, 0x4c, 0x33, 0x77, 0x59, 0x75, 0x4a, 0x43, 0x77, 0x68, 0x58, 0x70, 0x59, 0x30, 0x6a, 0x32, 0x51, 0x41, 0x6f, 0x6e, 0x56, 0x32, 0x41, 0x6b, 0x34, 0x44, 0x33, 0x34, 0x33, 0x37, 0x37, 0x61, 0x70, 0x5a, 0x6c, 0x77, 0x43, 0x58, 0x41, 0x31, 0x34, 0x69, 0x48, 0x5c, 0x0a, 0x09, 0x47, 0x45, 0x6c, 0x4a, 0x32, 0x41, 0x43, 0x6f, 0x53, 0x4a, 0x4f, 0x49, 0x32, 0x2f, 0x5a, 0x4f, 0x49, 0x76, 0x62, 0x65, 0x6c, 0x35, 0x72, 0x75, 0x56, 0x71, 0x49, 0x52, 0x75, 0x42, 0x71, 0x33, 0x49, 0x6c, 0x62, 0x42, 0x62, 0x41, 0x42, 0x55, 0x68, 0x4b, 0x32, 0x41, 0x44, 0x77, 0x4d, 0x6e, 0x41, 0x6c, 0x73, 0x6d, 0x7a, 0x69, 0x4b, 0x56, 0x30, 0x5a, 0x50, 0x41, 0x4e, 0x34, 0x43, 0x76, 0x41, 0x6b, 0x38, 0x6b, 0x7a, 0x71, 0x4b, 0x47, 0x5c, 0x0a, 0x09, 0x73, 0x41, 0x46, 0x51, 0x6e, 0x76, 0x59, 0x47, 0x54, 0x67, 0x50, 0x2b, 0x6e, 0x76, 0x6a, 0x30, 0x4c, 0x32, 0x6c, 0x30, 0x61, 0x34, 0x44, 0x76, 0x41, 0x46, 0x38, 0x6b, 0x48, 0x6c, 0x59, 0x6b, 0x35, 0x63, 0x59, 0x47, 0x51, 0x46, 0x6e, 0x72, 0x49, 0x62, 0x62, 0x6b, 0x50, 0x5a, 0x33, 0x59, 0x72, 0x45, 0x64, 0x53, 0x5a, 0x32, 0x34, 0x42, 0x7a, 0x69, 0x65, 0x32, 0x49, 0x46, 0x36, 0x58, 0x4f, 0x49, 0x74, 0x71, 0x79, 0x41, 0x5a, 0x41, 0x5c, 0x0a, 0x09, 0x57, 0x65, 0x6b, 0x6c, 0x37, 0x74, 0x73, 0x2f, 0x45, 0x35, 0x69, 0x58, 0x4f, 0x49, 0x74, 0x55, 0x4a, 0x77, 0x38, 0x41, 0x35, 0x78, 0x4c, 0x37, 0x43, 0x76, 0x68, 0x51, 0x49, 0x6d, 0x58, 0x47, 0x42, 0x6b, 0x44, 0x64, 0x32, 0x67, 0x7a, 0x34, 0x48, 0x38, 0x51, 0x6e, 0x2f, 0x6d, 0x30, 0x53, 0x5a, 0x35, 0x48, 0x71, 0x37, 0x46, 0x46, 0x69, 0x49, 0x6e, 0x41, 0x52, 0x73, 0x43, 0x4a, 0x78, 0x46, 0x74, 0x57, 0x41, 0x44, 0x59, 0x41, 0x36, 0x5c, 0x0a, 0x09, 0x4e, 0x52, 0x33, 0x34, 0x4b, 0x48, 0x41, 0x71, 0x73, 0x48, 0x6e, 0x69, 0x4c, 0x46, 0x4b, 0x54, 0x50, 0x41, 0x4e, 0x63, 0x51, 0x46, 0x77, 0x6e, 0x73, 0x44, 0x52, 0x78, 0x46, 0x6c, 0x57, 0x59, 0x44, 0x59, 0x44, 0x61, 0x4e, 0x5a, 0x4f, 0x34, 0x73, 0x4f, 0x38, 0x30, 0x59, 0x45, 0x62, 0x69, 0x4c, 0x46, 0x4b, 0x54, 0x4c, 0x53, 0x57, 0x61, 0x67, 0x43, 0x2f, 0x69, 0x49, 0x34, 0x72, 0x56, 0x41, 0x52, 0x73, 0x41, 0x74, 0x57, 0x6f, 0x6d, 0x5c, 0x0a, 0x09, 0x4d, 0x65, 0x59, 0x2f, 0x46, 0x54, 0x66, 0x75, 0x6b, 0x63, 0x70, 0x6b, 0x47, 0x54, 0x45, 0x52, 0x2b, 0x41, 0x49, 0x78, 0x48, 0x5a, 0x42, 0x61, 0x59, 0x67, 0x4f, 0x67, 0x73, 0x55, 0x77, 0x6c, 0x52, 0x76, 0x30, 0x66, 0x78, 0x30, 0x2f, 0x38, 0x55, 0x70, 0x6b, 0x74, 0x42, 0x63, 0x34, 0x6a, 0x47, 0x67, 0x47, 0x66, 0x52, 0x71, 0x67, 0x78, 0x32, 0x51, 0x42, 0x6f, 0x4a, 0x4c, 0x33, 0x45, 0x6a, 0x6e, 0x31, 0x6e, 0x34, 0x65, 0x59, 0x39, 0x5c, 0x0a, 0x09, 0x55, 0x70, 0x55, 0x73, 0x42, 0x6a, 0x35, 0x4e, 0x37, 0x44, 0x44, 0x6f, 0x58, 0x51, 0x4d, 0x61, 0x6b, 0x51, 0x32, 0x41, 0x4e, 0x74, 0x59, 0x44, 0x76, 0x41, 0x38, 0x34, 0x47, 0x39, 0x67, 0x2b, 0x63, 0x52, 0x5a, 0x4a, 0x6e, 0x58, 0x73, 0x45, 0x2b, 0x43, 0x54, 0x78, 0x33, 0x41, 0x48, 0x33, 0x45, 0x64, 0x41, 0x6d, 0x62, 0x41, 0x41, 0x30, 0x31, 0x47, 0x48, 0x41, 0x5a, 0x34, 0x41, 0x39, 0x55, 0x77, 0x65, 0x52, 0x6c, 0x4a, 0x6c, 0x37, 0x5c, 0x0a, 0x09, 0x67, 0x58, 0x38, 0x45, 0x72, 0x6b, 0x30, 0x64, 0x52, 0x4f, 0x56, 0x69, 0x41, 0x79, 0x43, 0x49, 0x4a, 0x2f, 0x4f, 0x64, 0x52, 0x7a, 0x51, 0x41, 0x6b, 0x75, 0x72, 0x70, 0x57, 0x75, 0x4a, 0x61, 0x48, 0x70, 0x39, 0x41, 0x4b, 0x43, 0x44, 0x47, 0x76, 0x57, 0x71, 0x75, 0x4f, 0x63, 0x42, 0x58, 0x67, 0x4e, 0x39, 0x69, 0x38, 0x5a, 0x66, 0x71, 0x37, 0x6a, 0x44, 0x69, 0x33, 0x2f, 0x72, 0x58, 0x69, 0x58, 0x2f, 0x37, 0x61, 0x6a, 0x67, 0x6e, 0x5c, 0x0a, 0x09, 0x41, 0x4d, 0x30, 0x30, 0x67, 0x62, 0x69, 0x64, 0x37, 0x33, 0x2f, 0x68, 0x6c, 0x66, 0x31, 0x53, 0x45, 0x79, 0x30, 0x44, 0x2f, 0x6f, 0x33, 0x59, 0x51, 0x2b, 0x43, 0x46, 0x78, 0x46, 0x6d, 0x55, 0x69, 0x41, 0x31, 0x41, 0x38, 0x78, 0x77, 0x4d, 0x66, 0x49, 0x6b, 0x59, 0x2b, 0x30, 0x74, 0x71, 0x74, 0x76, 0x75, 0x4a, 0x44, 0x77, 0x4d, 0x2f, 0x53, 0x78, 0x31, 0x45, 0x78, 0x58, 0x4d, 0x4a, 0x6f, 0x44, 0x6d, 0x32, 0x41, 0x36, 0x34, 0x67, 0x5c, 0x0a, 0x09, 0x2f, 0x71, 0x46, 0x62, 0x2f, 0x43, 0x56, 0x42, 0x6e, 0x41, 0x74, 0x75, 0x41, 0x4b, 0x34, 0x6b, 0x7a, 0x68, 0x46, 0x71, 0x45, 0x42, 0x75, 0x41, 0x2b, 0x70, 0x73, 0x41, 0x66, 0x49, 0x78, 0x34, 0x6f, 0x74, 0x68, 0x52, 0x69, 0x62, 0x4e, 0x49, 0x4b, 0x71, 0x63, 0x6a, 0x69, 0x58, 0x50, 0x45, 0x78, 0x34, 0x6c, 0x7a, 0x68, 0x68, 0x72, 0x41, 0x4a, 0x59, 0x42, 0x36, 0x65, 0x77, 0x33, 0x77, 0x66, 0x34, 0x42, 0x39, 0x55, 0x67, 0x65, 0x52, 0x5c, 0x0a, 0x09, 0x56, 0x42, 0x6c, 0x33, 0x45, 0x6b, 0x2f, 0x34, 0x76, 0x43, 0x64, 0x31, 0x45, 0x4f, 0x58, 0x4c, 0x43, 0x55, 0x41, 0x39, 0x76, 0x52, 0x51, 0x34, 0x68, 0x2f, 0x69, 0x48, 0x62, 0x50, 0x47, 0x58, 0x31, 0x49, 0x35, 0x39, 0x67, 0x46, 0x38, 0x54, 0x65, 0x34, 0x4b, 0x38, 0x4e, 0x48, 0x45, 0x57, 0x35, 0x63, 0x67, 0x4a, 0x51, 0x50, 0x32, 0x38, 0x6d, 0x62, 0x6a, 0x4e, 0x35, 0x31, 0x57, 0x4a, 0x63, 0x30, 0x69, 0x71, 0x76, 0x6a, 0x38, 0x41, 0x5c, 0x0a, 0x09, 0x48, 0x77, 0x4a, 0x75, 0x54, 0x70, 0x78, 0x44, 0x4f, 0x58, 0x41, 0x43, 0x55, 0x42, 0x38, 0x7a, 0x67, 0x49, 0x75, 0x41, 0x47, 0x37, 0x48, 0x34, 0x53, 0x38, 0x72, 0x47, 0x71, 0x34, 0x68, 0x7a, 0x79, 0x6b, 0x56, 0x34, 0x79, 0x33, 0x44, 0x74, 0x4f, 0x41, 0x47, 0x6f, 0x68, 0x79, 0x4f, 0x49, 0x57, 0x2f, 0x74, 0x65, 0x6e, 0x6a, 0x71, 0x49, 0x70, 0x4e, 0x70, 0x61, 0x42, 0x4a, 0x77, 0x43, 0x58, 0x4a, 0x30, 0x36, 0x69, 0x4c, 0x4a, 0x68, 0x5c, 0x0a, 0x09, 0x41, 0x31, 0x42, 0x74, 0x67, 0x7a, 0x76, 0x35, 0x2f, 0x62, 0x66, 0x55, 0x51, 0x53, 0x51, 0x31, 0x78, 0x76, 0x65, 0x42, 0x44, 0x78, 0x4d, 0x4e, 0x67, 0x53, 0x72, 0x4d, 0x42, 0x71, 0x43, 0x36, 0x6a, 0x67, 0x49, 0x75, 0x42, 0x47, 0x61, 0x6c, 0x44, 0x69, 0x4b, 0x70, 0x63, 0x5a, 0x34, 0x43, 0x54, 0x69, 0x62, 0x32, 0x44, 0x31, 0x42, 0x46, 0x65, 0x51, 0x31, 0x41, 0x39, 0x55, 0x77, 0x6e, 0x48, 0x75, 0x39, 0x35, 0x42, 0x52, 0x5a, 0x2f, 0x5c, 0x0a, 0x09, 0x53, 0x57, 0x6e, 0x4d, 0x49, 0x73, 0x35, 0x42, 0x6c, 0x78, 0x44, 0x6e, 0x4a, 0x46, 0x57, 0x51, 0x45, 0x34, 0x42, 0x71, 0x65, 0x51, 0x74, 0x77, 0x4d, 0x62, 0x42, 0x39, 0x36, 0x69, 0x43, 0x53, 0x4e, 0x47, 0x41, 0x68, 0x38, 0x45, 0x48, 0x67, 0x70, 0x73, 0x51, 0x35, 0x31, 0x43, 0x59, 0x6e, 0x41, 0x4e, 0x55, 0x77, 0x45, 0x66, 0x67, 0x73, 0x73, 0x57, 0x57, 0x6e, 0x78, 0x56, 0x39, 0x53, 0x6d, 0x57, 0x78, 0x48, 0x6e, 0x4a, 0x73, 0x2b, 0x5c, 0x0a, 0x09, 0x53, 0x35, 0x79, 0x72, 0x56, 0x42, 0x46, 0x4f, 0x41, 0x4d, 0x70, 0x76, 0x4a, 0x2b, 0x41, 0x2f, 0x67, 0x48, 0x31, 0x54, 0x42, 0x35, 0x47, 0x6b, 0x4d, 0x66, 0x77, 0x61, 0x65, 0x43, 0x2f, 0x77, 0x63, 0x4f, 0x6f, 0x67, 0x47, 0x70, 0x73, 0x54, 0x67, 0x48, 0x49, 0x37, 0x42, 0x72, 0x67, 0x4c, 0x69, 0x37, 0x2b, 0x6b, 0x61, 0x74, 0x69, 0x58, 0x4f, 0x47, 0x63, 0x64, 0x6b, 0x7a, 0x71, 0x49, 0x78, 0x6d, 0x59, 0x44, 0x55, 0x45, 0x35, 0x54, 0x5c, 0x0a, 0x09, 0x67, 0x57, 0x38, 0x43, 0x6c, 0x77, 0x48, 0x54, 0x30, 0x6b, 0x61, 0x52, 0x70, 0x4c, 0x5a, 0x4d, 0x49, 0x38, 0x35, 0x64, 0x33, 0x79, 0x54, 0x4f, 0x5a, 0x53, 0x6f, 0x70, 0x6c, 0x77, 0x44, 0x4b, 0x5a, 0x78, 0x36, 0x78, 0x30, 0x63, 0x62, 0x4f, 0x71, 0x59, 0x4e, 0x49, 0x55, 0x70, 0x63, 0x65, 0x4a, 0x4a, 0x34, 0x30, 0x65, 0x48, 0x2f, 0x71, 0x49, 0x4e, 0x71, 0x55, 0x45, 0x34, 0x42, 0x79, 0x4f, 0x52, 0x61, 0x34, 0x41, 0x34, 0x75, 0x2f, 0x5c, 0x0a, 0x09, 0x70, 0x48, 0x72, 0x59, 0x47, 0x62, 0x69, 0x64, 0x4f, 0x4c, 0x65, 0x70, 0x5a, 0x47, 0x77, 0x41, 0x79, 0x6d, 0x45, 0x53, 0x73, 0x61, 0x50, 0x66, 0x70, 0x54, 0x67, 0x79, 0x6b, 0x31, 0x51, 0x76, 0x55, 0x34, 0x6c, 0x7a, 0x32, 0x31, 0x65, 0x49, 0x63, 0x35, 0x31, 0x4b, 0x77, 0x69, 0x57, 0x41, 0x39, 0x4c, 0x59, 0x6e, 0x64, 0x74, 0x50, 0x79, 0x73, 0x62, 0x32, 0x53, 0x36, 0x75, 0x35, 0x4f, 0x59, 0x68, 0x66, 0x54, 0x52, 0x31, 0x49, 0x48, 0x5c, 0x0a, 0x09, 0x6b, 0x52, 0x4f, 0x41, 0x31, 0x41, 0x34, 0x69, 0x62, 0x70, 0x75, 0x78, 0x2b, 0x45, 0x74, 0x71, 0x67, 0x6e, 0x32, 0x49, 0x63, 0x39, 0x35, 0x42, 0x71, 0x59, 0x50, 0x49, 0x42, 0x69, 0x43, 0x6c, 0x55, 0x34, 0x44, 0x72, 0x67, 0x64, 0x6d, 0x70, 0x67, 0x30, 0x68, 0x53, 0x67, 0x57, 0x59, 0x54, 0x35, 0x37, 0x36, 0x50, 0x70, 0x41, 0x37, 0x53, 0x64, 0x43, 0x34, 0x42, 0x46, 0x47, 0x38, 0x53, 0x38, 0x52, 0x43, 0x66, 0x34, 0x31, 0x4d, 0x48, 0x5c, 0x0a, 0x09, 0x6b, 0x61, 0x54, 0x45, 0x4c, 0x69, 0x59, 0x65, 0x4b, 0x72, 0x51, 0x6d, 0x64, 0x5a, 0x41, 0x6d, 0x73, 0x67, 0x45, 0x6f, 0x31, 0x6c, 0x62, 0x41, 0x39, 0x34, 0x44, 0x58, 0x70, 0x51, 0x34, 0x69, 0x53, 0x53, 0x58, 0x78, 0x4b, 0x2b, 0x4b, 0x52, 0x35, 0x6b, 0x2b, 0x6b, 0x44, 0x74, 0x49, 0x30, 0x4e, 0x67, 0x44, 0x46, 0x32, 0x51, 0x58, 0x34, 0x45, 0x62, 0x42, 0x44, 0x36, 0x69, 0x43, 0x53, 0x56, 0x44, 0x4a, 0x2f, 0x41, 0x75, 0x59, 0x44, 0x5c, 0x0a, 0x09, 0x43, 0x31, 0x49, 0x48, 0x61, 0x52, 0x4b, 0x76, 0x41, 0x53, 0x6a, 0x47, 0x57, 0x34, 0x42, 0x66, 0x59, 0x50, 0x47, 0x58, 0x70, 0x4f, 0x48, 0x73, 0x41, 0x50, 0x77, 0x63, 0x4f, 0x44, 0x68, 0x31, 0x6b, 0x43, 0x61, 0x78, 0x41, 0x63, 0x6a, 0x66, 0x42, 0x34, 0x42, 0x72, 0x67, 0x5a, 0x6d, 0x70, 0x67, 0x30, 0x68, 0x53, 0x69, 0x63, 0x30, 0x45, 0x66, 0x6b, 0x4b, 0x63, 0x4d, 0x31, 0x55, 0x41, 0x47, 0x34, 0x44, 0x38, 0x6a, 0x41, 0x4d, 0x2b, 0x5c, 0x0a, 0x09, 0x53, 0x56, 0x7a, 0x6b, 0x30, 0x70, 0x73, 0x32, 0x69, 0x69, 0x52, 0x56, 0x51, 0x69, 0x39, 0x78, 0x7a, 0x76, 0x77, 0x6b, 0x63, 0x51, 0x35, 0x56, 0x6a, 0x72, 0x77, 0x47, 0x49, 0x42, 0x2b, 0x39, 0x77, 0x45, 0x58, 0x41, 0x2b, 0x31, 0x4d, 0x48, 0x6b, 0x61, 0x53, 0x4b, 0x2b, 0x68, 0x62, 0x77, 0x33, 0x34, 0x48, 0x6e, 0x55, 0x77, 0x65, 0x70, 0x4b, 0x78, 0x75, 0x41, 0x37, 0x4d, 0x30, 0x45, 0x72, 0x69, 0x4c, 0x57, 0x2f, 0x53, 0x56, 0x4a, 0x5c, 0x0a, 0x09, 0x6e, 0x62, 0x73, 0x5a, 0x4f, 0x41, 0x4a, 0x34, 0x4e, 0x6e, 0x47, 0x4f, 0x57, 0x72, 0x49, 0x42, 0x79, 0x4e, 0x59, 0x4f, 0x77, 0x49, 0x2b, 0x4a, 0x4a, 0x2f, 0x70, 0x4a, 0x6b, 0x72, 0x72, 0x33, 0x41, 0x50, 0x42, 0x32, 0x34, 0x6b, 0x34, 0x42, 0x5a, 0x63, 0x68, 0x72, 0x41, 0x4c, 0x4c, 0x7a, 0x57, 0x75, 0x41, 0x2f, 0x73, 0x66, 0x68, 0x4c, 0x55, 0x70, 0x62, 0x6d, 0x45, 0x65, 0x64, 0x57, 0x74, 0x30, 0x7a, 0x50, 0x6d, 0x41, 0x31, 0x41, 0x5c, 0x0a, 0x09, 0x4e, 0x74, 0x34, 0x4d, 0x33, 0x41, 0x68, 0x73, 0x6d, 0x54, 0x69, 0x48, 0x4a, 0x4e, 0x58, 0x52, 0x6c, 0x73, 0x44, 0x50, 0x69, 0x48, 0x4f, 0x74, 0x4d, 0x6d, 0x49, 0x44, 0x30, 0x4c, 0x33, 0x35, 0x77, 0x50, 0x38, 0x44, 0x70, 0x71, 0x55, 0x4f, 0x49, 0x6b, 0x6b, 0x31, 0x4e, 0x6f, 0x32, 0x34, 0x54, 0x58, 0x42, 0x2b, 0x36, 0x69, 0x42, 0x31, 0x59, 0x51, 0x50, 0x51, 0x6e, 0x57, 0x4f, 0x42, 0x71, 0x34, 0x47, 0x58, 0x70, 0x67, 0x34, 0x69, 0x5c, 0x0a, 0x09, 0x53, 0x51, 0x33, 0x77, 0x45, 0x75, 0x4b, 0x63, 0x65, 0x31, 0x7a, 0x71, 0x49, 0x48, 0x56, 0x67, 0x41, 0x39, 0x43, 0x35, 0x66, 0x79, 0x42, 0x75, 0x55, 0x35, 0x6d, 0x51, 0x4f, 0x6f, 0x67, 0x6b, 0x4e, 0x63, 0x67, 0x45, 0x34, 0x42, 0x4c, 0x69, 0x48, 0x4b, 0x77, 0x75, 0x32, 0x41, 0x42, 0x30, 0x35, 0x75, 0x50, 0x41, 0x6c, 0x33, 0x47, 0x6a, 0x43, 0x6b, 0x6c, 0x4b, 0x59, 0x52, 0x78, 0x78, 0x44, 0x6a, 0x34, 0x6a, 0x64, 0x5a, 0x41, 0x71, 0x5c, 0x0a, 0x09, 0x73, 0x77, 0x46, 0x6f, 0x33, 0x7a, 0x38, 0x44, 0x6e, 0x30, 0x73, 0x64, 0x51, 0x70, 0x4c, 0x45, 0x75, 0x63, 0x51, 0x35, 0x57, 0x52, 0x32, 0x77, 0x41, 0x57, 0x6a, 0x50, 0x76, 0x77, 0x4c, 0x6e, 0x70, 0x41, 0x34, 0x68, 0x53, 0x58, 0x72, 0x52, 0x4f, 0x63, 0x44, 0x5a, 0x71, 0x55, 0x4e, 0x55, 0x6b, 0x52, 0x73, 0x42, 0x74, 0x65, 0x34, 0x63, 0x37, 0x44, 0x51, 0x6c, 0x71, 0x61, 0x77, 0x2b, 0x41, 0x35, 0x79, 0x56, 0x4f, 0x6b, 0x53, 0x56, 0x5c, 0x0a, 0x09, 0x4f, 0x41, 0x46, 0x6f, 0x7a, 0x61, 0x65, 0x78, 0x2b, 0x45, 0x74, 0x53, 0x6d, 0x66, 0x30, 0x7a, 0x63, 0x61, 0x35, 0x57, 0x69, 0x32, 0x77, 0x41, 0x78, 0x76, 0x61, 0x76, 0x32, 0x46, 0x56, 0x4b, 0x55, 0x68, 0x57, 0x63, 0x52, 0x54, 0x78, 0x4a, 0x55, 0x43, 0x31, 0x77, 0x43, 0x57, 0x42, 0x30, 0x5a, 0x32, 0x46, 0x48, 0x4b, 0x55, 0x6c, 0x56, 0x38, 0x77, 0x6d, 0x38, 0x58, 0x6d, 0x74, 0x4d, 0x4e, 0x67, 0x41, 0x6a, 0x2b, 0x78, 0x68, 0x77, 0x5c, 0x0a, 0x09, 0x58, 0x75, 0x6f, 0x51, 0x6b, 0x71, 0x53, 0x4f, 0x6e, 0x49, 0x48, 0x6e, 0x38, 0x46, 0x48, 0x5a, 0x41, 0x41, 0x7a, 0x76, 0x48, 0x34, 0x68, 0x37, 0x54, 0x43, 0x56, 0x4a, 0x31, 0x58, 0x55, 0x4b, 0x38, 0x4a, 0x58, 0x55, 0x49, 0x63, 0x72, 0x4b, 0x42, 0x6d, 0x42, 0x54, 0x78, 0x78, 0x49, 0x37, 0x2f, 0x4c, 0x6e, 0x4a, 0x6a, 0x79, 0x52, 0x56, 0x57, 0x7a, 0x2f, 0x77, 0x50, 0x75, 0x43, 0x79, 0x31, 0x45, 0x48, 0x4b, 0x79, 0x41, 0x5a, 0x67, 0x5c, 0x0a, 0x09, 0x51, 0x34, 0x63, 0x44, 0x56, 0x2b, 0x48, 0x32, 0x76, 0x70, 0x4a, 0x55, 0x46, 0x79, 0x38, 0x41, 0x52, 0x77, 0x4c, 0x58, 0x70, 0x41, 0x35, 0x53, 0x4e, 0x6a, 0x59, 0x41, 0x36, 0x78, 0x30, 0x4d, 0x2f, 0x42, 0x43, 0x59, 0x6e, 0x44, 0x71, 0x49, 0x4a, 0x43, 0x6c, 0x54, 0x71, 0x34, 0x6d, 0x6e, 0x43, 0x4e, 0x36, 0x59, 0x4f, 0x6b, 0x69, 0x5a, 0x32, 0x41, 0x43, 0x45, 0x66, 0x59, 0x48, 0x72, 0x67, 0x65, 0x6d, 0x70, 0x67, 0x30, 0x69, 0x53, 0x5c, 0x0a, 0x09, 0x63, 0x72, 0x45, 0x4d, 0x4f, 0x42, 0x53, 0x34, 0x49, 0x33, 0x57, 0x51, 0x73, 0x72, 0x41, 0x42, 0x67, 0x4c, 0x6e, 0x41, 0x4c, 0x34, 0x48, 0x5a, 0x71, 0x59, 0x4e, 0x49, 0x6b, 0x6e, 0x4b, 0x31, 0x42, 0x44, 0x67, 0x41, 0x65, 0x43, 0x68, 0x31, 0x6b, 0x44, 0x4a, 0x6f, 0x2b, 0x6b, 0x5a, 0x41, 0x73, 0x34, 0x47, 0x66, 0x59, 0x50, 0x47, 0x58, 0x70, 0x43, 0x62, 0x77, 0x6e, 0x44, 0x39, 0x45, 0x6b, 0x78, 0x75, 0x41, 0x79, 0x63, 0x53, 0x61, 0x5c, 0x0a, 0x09, 0x2f, 0x39, 0x7a, 0x55, 0x51, 0x53, 0x52, 0x4a, 0x68, 0x5a, 0x6d, 0x4c, 0x31, 0x33, 0x73, 0x42, 0x7a, 0x57, 0x30, 0x41, 0x78, 0x67, 0x50, 0x2f, 0x41, 0x65, 0x79, 0x66, 0x4f, 0x6f, 0x67, 0x6b, 0x71, 0x58, 0x44, 0x37, 0x45, 0x7a, 0x56, 0x67, 0x66, 0x4f, 0x6f, 0x67, 0x4b, 0x54, 0x57, 0x31, 0x41, 0x66, 0x67, 0x53, 0x63, 0x63, 0x75, 0x66, 0x4a, 0x4b, 0x6d, 0x5a, 0x44, 0x69, 0x64, 0x71, 0x51, 0x57, 0x4d, 0x31, 0x73, 0x51, 0x45, 0x34, 0x5c, 0x0a, 0x09, 0x48, 0x54, 0x67, 0x35, 0x64, 0x51, 0x68, 0x4a, 0x55, 0x6e, 0x49, 0x6e, 0x45, 0x39, 0x75, 0x2b, 0x4e, 0x31, 0x4c, 0x54, 0x37, 0x67, 0x49, 0x34, 0x48, 0x4c, 0x69, 0x61, 0x68, 0x6f, 0x39, 0x39, 0x4a, 0x45, 0x6b, 0x76, 0x36, 0x67, 0x4f, 0x4f, 0x6f, 0x49, 0x45, 0x62, 0x42, 0x54, 0x57, 0x70, 0x41, 0x64, 0x67, 0x64, 0x75, 0x41, 0x33, 0x59, 0x4c, 0x48, 0x55, 0x51, 0x53, 0x56, 0x4b, 0x70, 0x72, 0x43, 0x52, 0x75, 0x44, 0x37, 0x77, 0x33, 0x5c, 0x0a, 0x09, 0x64, 0x5a, 0x41, 0x69, 0x4e, 0x61, 0x55, 0x42, 0x32, 0x41, 0x72, 0x34, 0x4e, 0x62, 0x42, 0x4e, 0x36, 0x69, 0x43, 0x53, 0x70, 0x46, 0x4a, 0x36, 0x46, 0x4e, 0x67, 0x50, 0x57, 0x4a, 0x51, 0x36, 0x53, 0x46, 0x47, 0x61, 0x63, 0x41, 0x31, 0x41, 0x4c, 0x2f, 0x41, 0x39, 0x4c, 0x50, 0x36, 0x53, 0x70, 0x4a, 0x46, 0x74, 0x51, 0x39, 0x53, 0x4b, 0x33, 0x74, 0x52, 0x42, 0x69, 0x74, 0x4b, 0x45, 0x42, 0x75, 0x42, 0x43, 0x34, 0x48, 0x57, 0x70, 0x5c, 0x0a, 0x09, 0x51, 0x30, 0x69, 0x53, 0x53, 0x6d, 0x39, 0x2f, 0x6f, 0x6d, 0x59, 0x30, 0x51, 0x74, 0x30, 0x62, 0x67, 0x49, 0x38, 0x41, 0x4a, 0x36, 0x51, 0x4f, 0x49, 0x55, 0x6d, 0x71, 0x6a, 0x42, 0x4f, 0x49, 0x32, 0x6c, 0x46, 0x37, 0x64, 0x62, 0x34, 0x47, 0x34, 0x43, 0x44, 0x67, 0x4f, 0x68, 0x6f, 0x30, 0x7a, 0x70, 0x45, 0x6b, 0x5a, 0x65, 0x4a, 0x35, 0x34, 0x73, 0x46, 0x42, 0x74, 0x36, 0x51, 0x4f, 0x6b, 0x71, 0x65, 0x36, 0x4e, 0x67, 0x44, 0x62, 0x5c, 0x0a, 0x09, 0x41, 0x72, 0x2f, 0x42, 0x2f, 0x5a, 0x34, 0x6c, 0x53, 0x5a, 0x31, 0x5a, 0x41, 0x75, 0x77, 0x44, 0x4c, 0x45, 0x77, 0x64, 0x4a, 0x43, 0x39, 0x31, 0x58, 0x41, 0x4c, 0x6f, 0x42, 0x61, 0x37, 0x43, 0x34, 0x69, 0x39, 0x4a, 0x36, 0x74, 0x78, 0x73, 0x34, 0x45, 0x70, 0x71, 0x50, 0x45, 0x57, 0x75, 0x59, 0x77, 0x4e, 0x77, 0x50, 0x72, 0x42, 0x76, 0x36, 0x68, 0x43, 0x53, 0x70, 0x4d, 0x72, 0x62, 0x6c, 0x36, 0x67, 0x70, 0x74, 0x56, 0x53, 0x33, 0x5c, 0x0a, 0x09, 0x4a, 0x59, 0x44, 0x33, 0x41, 0x70, 0x65, 0x6e, 0x44, 0x69, 0x46, 0x4a, 0x71, 0x70, 0x56, 0x6a, 0x69, 0x49, 0x63, 0x48, 0x31, 0x55, 0x71, 0x64, 0x47, 0x6f, 0x42, 0x35, 0x77, 0x42, 0x33, 0x41, 0x31, 0x4e, 0x52, 0x42, 0x4a, 0x45, 0x6d, 0x31, 0x73, 0x6f, 0x71, 0x59, 0x42, 0x6a, 0x79, 0x51, 0x4f, 0x6b, 0x69, 0x57, 0x36, 0x72, 0x49, 0x45, 0x4d, 0x49, 0x56, 0x59, 0x39, 0x37, 0x66, 0x34, 0x53, 0x35, 0x4b, 0x79, 0x56, 0x73, 0x73, 0x61, 0x5c, 0x0a, 0x09, 0x55, 0x35, 0x63, 0x47, 0x34, 0x4d, 0x76, 0x45, 0x42, 0x45, 0x43, 0x53, 0x70, 0x44, 0x7a, 0x4d, 0x6f, 0x32, 0x61, 0x50, 0x44, 0x36, 0x37, 0x44, 0x45, 0x73, 0x41, 0x78, 0x77, 0x47, 0x57, 0x70, 0x51, 0x30, 0x69, 0x53, 0x47, 0x75, 0x45, 0x34, 0x61, 0x6c, 0x4a, 0x7a, 0x71, 0x74, 0x34, 0x41, 0x37, 0x41, 0x54, 0x63, 0x42, 0x55, 0x78, 0x4c, 0x48, 0x55, 0x53, 0x53, 0x31, 0x41, 0x6a, 0x4c, 0x67, 0x62, 0x32, 0x42, 0x68, 0x31, 0x4d, 0x48, 0x5c, 0x0a, 0x09, 0x36, 0x56, 0x61, 0x56, 0x6c, 0x77, 0x42, 0x36, 0x69, 0x61, 0x73, 0x79, 0x4c, 0x66, 0x36, 0x53, 0x70, 0x4b, 0x4a, 0x4d, 0x41, 0x37, 0x35, 0x4e, 0x44, 0x66, 0x59, 0x48, 0x71, 0x48, 0x49, 0x44, 0x38, 0x4c, 0x2f, 0x78, 0x66, 0x6e, 0x39, 0x4a, 0x55, 0x76, 0x48, 0x32, 0x49, 0x57, 0x70, 0x51, 0x70, 0x56, 0x56, 0x31, 0x43, 0x65, 0x41, 0x74, 0x77, 0x41, 0x31, 0x55, 0x75, 0x34, 0x47, 0x52, 0x4a, 0x46, 0x56, 0x58, 0x50, 0x2f, 0x41, 0x33, 0x5c, 0x0a, 0x09, 0x77, 0x45, 0x32, 0x70, 0x67, 0x33, 0x53, 0x71, 0x69, 0x67, 0x33, 0x41, 0x44, 0x4f, 0x43, 0x33, 0x77, 0x48, 0x61, 0x70, 0x67, 0x30, 0x69, 0x53, 0x47, 0x6d, 0x30, 0x68, 0x38, 0x42, 0x70, 0x67, 0x61, 0x65, 0x6f, 0x67, 0x6e, 0x61, 0x6a, 0x69, 0x4a, 0x2b, 0x67, 0x4c, 0x73, 0x50, 0x68, 0x4c, 0x6b, 0x74, 0x4c, 0x62, 0x6a, 0x71, 0x68, 0x4a, 0x6c, 0x56, 0x53, 0x31, 0x43, 0x63, 0x42, 0x52, 0x77, 0x42, 0x57, 0x70, 0x51, 0x30, 0x69, 0x53, 0x5c, 0x0a, 0x09, 0x4e, 0x4d, 0x54, 0x52, 0x78, 0x49, 0x4f, 0x44, 0x4b, 0x71, 0x56, 0x4b, 0x44, 0x63, 0x41, 0x63, 0x34, 0x46, 0x37, 0x67, 0x5a, 0x61, 0x6d, 0x44, 0x53, 0x4a, 0x49, 0x30, 0x78, 0x4e, 0x50, 0x41, 0x37, 0x73, 0x43, 0x69, 0x31, 0x45, 0x48, 0x61, 0x55, 0x61, 0x55, 0x6c, 0x67, 0x4b, 0x39, 0x6a, 0x38, 0x5a, 0x63, 0x6b, 0x6c, 0x63, 0x2f, 0x4c, 0x69, 0x42, 0x70, 0x56, 0x4b, 0x56, 0x56, 0x70, 0x41, 0x4e, 0x34, 0x44, 0x7a, 0x45, 0x38, 0x64, 0x5c, 0x0a, 0x09, 0x51, 0x70, 0x4b, 0x6b, 0x45, 0x63, 0x77, 0x6e, 0x64, 0x71, 0x61, 0x74, 0x6a, 0x43, 0x6f, 0x73, 0x41, 0x57, 0x77, 0x42, 0x4c, 0x41, 0x42, 0x6d, 0x70, 0x51, 0x34, 0x69, 0x53, 0x64, 0x49, 0x6f, 0x6e, 0x67, 0x4a, 0x32, 0x42, 0x52, 0x61, 0x6e, 0x44, 0x74, 0x4b, 0x4b, 0x4b, 0x6b, 0x77, 0x41, 0x76, 0x6f, 0x4c, 0x46, 0x58, 0x35, 0x4a, 0x55, 0x66, 0x72, 0x4f, 0x49, 0x6d, 0x6c, 0x55, 0x4a, 0x5a, 0x57, 0x38, 0x41, 0x6a, 0x68, 0x70, 0x34, 0x5c, 0x0a, 0x09, 0x53, 0x5a, 0x4a, 0x55, 0x42, 0x5a, 0x57, 0x70, 0x57, 0x32, 0x56, 0x65, 0x41, 0x70, 0x67, 0x42, 0x33, 0x45, 0x39, 0x63, 0x2f, 0x53, 0x39, 0x4a, 0x55, 0x6c, 0x55, 0x73, 0x41, 0x6e, 0x61, 0x68, 0x35, 0x42, 0x73, 0x45, 0x6c, 0x58, 0x6b, 0x43, 0x63, 0x41, 0x34, 0x57, 0x66, 0x30, 0x6c, 0x53, 0x39, 0x63, 0x77, 0x42, 0x50, 0x70, 0x4d, 0x36, 0x78, 0x46, 0x6a, 0x4b, 0x4f, 0x67, 0x46, 0x34, 0x50, 0x66, 0x41, 0x4c, 0x79, 0x74, 0x32, 0x67, 0x5c, 0x0a, 0x09, 0x53, 0x4a, 0x49, 0x30, 0x6b, 0x6e, 0x58, 0x41, 0x47, 0x34, 0x46, 0x66, 0x70, 0x67, 0x34, 0x79, 0x6b, 0x6a, 0x49, 0x32, 0x41, 0x42, 0x4f, 0x42, 0x4f, 0x34, 0x45, 0x39, 0x55, 0x67, 0x65, 0x52, 0x4a, 0x4b, 0x6b, 0x4c, 0x76, 0x79, 0x4f, 0x65, 0x48, 0x4c, 0x67, 0x32, 0x64, 0x5a, 0x44, 0x68, 0x6c, 0x50, 0x45, 0x54, 0x39, 0x75, 0x6c, 0x59, 0x2f, 0x43, 0x56, 0x4a, 0x31, 0x62, 0x63, 0x48, 0x38, 0x4c, 0x48, 0x55, 0x49, 0x55, 0x5a, 0x53, 0x5c, 0x0a, 0x09, 0x74, 0x67, 0x6e, 0x41, 0x64, 0x73, 0x41, 0x44, 0x77, 0x4f, 0x54, 0x55, 0x51, 0x53, 0x52, 0x4a, 0x79, 0x73, 0x42, 0x71, 0x59, 0x42, 0x37, 0x78, 0x35, 0x4d, 0x42, 0x53, 0x4b, 0x64, 0x73, 0x45, 0x34, 0x48, 0x4e, 0x59, 0x2f, 0x43, 0x56, 0x4a, 0x39, 0x54, 0x47, 0x5a, 0x71, 0x47, 0x32, 0x6c, 0x55, 0x36, 0x59, 0x4a, 0x77, 0x46, 0x75, 0x41, 0x47, 0x31, 0x4f, 0x48, 0x6b, 0x43, 0x51, 0x70, 0x42, 0x34, 0x63, 0x41, 0x4e, 0x36, 0x51, 0x4f, 0x5c, 0x0a, 0x09, 0x4d, 0x56, 0x52, 0x5a, 0x47, 0x6f, 0x43, 0x4a, 0x77, 0x44, 0x33, 0x45, 0x66, 0x5a, 0x4f, 0x53, 0x4a, 0x4e, 0x58, 0x4e, 0x67, 0x38, 0x51, 0x31, 0x41, 0x61, 0x57, 0x35, 0x49, 0x4c, 0x41, 0x73, 0x53, 0x77, 0x43, 0x6e, 0x59, 0x76, 0x47, 0x58, 0x4a, 0x4e, 0x58, 0x58, 0x7a, 0x6b, 0x53, 0x74, 0x4b, 0x34, 0x30, 0x79, 0x54, 0x41, 0x43, 0x32, 0x42, 0x50, 0x34, 0x41, 0x54, 0x45, 0x73, 0x64, 0x52, 0x4a, 0x4b, 0x6b, 0x48, 0x43, 0x30, 0x48, 0x5c, 0x0a, 0x09, 0x58, 0x67, 0x30, 0x38, 0x6b, 0x54, 0x6f, 0x49, 0x6c, 0x47, 0x4d, 0x43, 0x63, 0x44, 0x59, 0x57, 0x66, 0x30, 0x6c, 0x53, 0x2f, 0x55, 0x30, 0x6a, 0x61, 0x6c, 0x34, 0x70, 0x70, 0x4a, 0x34, 0x41, 0x37, 0x45, 0x71, 0x73, 0x2f, 0x55, 0x39, 0x49, 0x47, 0x55, 0x4b, 0x53, 0x70, 0x49, 0x4c, 0x30, 0x41, 0x58, 0x73, 0x43, 0x39, 0x36, 0x55, 0x4f, 0x6b, 0x6e, 0x6f, 0x43, 0x38, 0x44, 0x6b, 0x73, 0x2f, 0x70, 0x4b, 0x6b, 0x35, 0x68, 0x67, 0x50, 0x5c, 0x0a, 0x09, 0x6e, 0x4a, 0x73, 0x36, 0x42, 0x4b, 0x52, 0x74, 0x41, 0x41, 0x34, 0x42, 0x44, 0x6b, 0x74, 0x34, 0x66, 0x45, 0x6d, 0x53, 0x55, 0x6a, 0x67, 0x4d, 0x65, 0x47, 0x76, 0x71, 0x45, 0x4b, 0x6d, 0x57, 0x41, 0x4d, 0x59, 0x44, 0x64, 0x77, 0x4f, 0x37, 0x70, 0x7a, 0x69, 0x34, 0x4a, 0x45, 0x6d, 0x4a, 0x33, 0x55, 0x63, 0x73, 0x42, 0x66, 0x53, 0x6c, 0x43, 0x70, 0x42, 0x71, 0x41, 0x76, 0x41, 0x2b, 0x4c, 0x50, 0x36, 0x53, 0x70, 0x4f, 0x62, 0x61, 0x5c, 0x0a, 0x09, 0x6a, 0x61, 0x69, 0x46, 0x79, 0x61, 0x53, 0x59, 0x41, 0x45, 0x77, 0x43, 0x66, 0x67, 0x39, 0x73, 0x58, 0x2f, 0x53, 0x42, 0x4a, 0x55, 0x6b, 0x71, 0x6b, 0x55, 0x65, 0x49, 0x32, 0x77, 0x4c, 0x58, 0x70, 0x44, 0x68, 0x34, 0x69, 0x67, 0x6e, 0x41, 0x69, 0x56, 0x6a, 0x38, 0x4a, 0x55, 0x6e, 0x61, 0x48, 0x6a, 0x67, 0x70, 0x31, 0x63, 0x47, 0x4c, 0x6e, 0x67, 0x42, 0x4d, 0x41, 0x52, 0x34, 0x6d, 0x4e, 0x76, 0x2b, 0x52, 0x4a, 0x4b, 0x6e, 0x70, 0x5c, 0x0a, 0x09, 0x46, 0x67, 0x4e, 0x7a, 0x67, 0x52, 0x56, 0x46, 0x48, 0x37, 0x6a, 0x6f, 0x43, 0x63, 0x42, 0x48, 0x73, 0x66, 0x68, 0x4c, 0x6b, 0x6a, 0x52, 0x6f, 0x43, 0x2b, 0x43, 0x30, 0x46, 0x41, 0x63, 0x75, 0x63, 0x67, 0x49, 0x77, 0x45, 0x2f, 0x67, 0x54, 0x4d, 0x4c, 0x32, 0x6f, 0x41, 0x30, 0x71, 0x53, 0x56, 0x41, 0x48, 0x4c, 0x67, 0x42, 0x32, 0x41, 0x5a, 0x34, 0x73, 0x38, 0x61, 0x4a, 0x45, 0x54, 0x67, 0x4e, 0x4f, 0x78, 0x2b, 0x45, 0x75, 0x53, 0x5c, 0x0a, 0x09, 0x74, 0x4c, 0x48, 0x70, 0x77, 0x4d, 0x65, 0x4b, 0x50, 0x6d, 0x68, 0x52, 0x45, 0x34, 0x41, 0x5a, 0x77, 0x4a, 0x2b, 0x78, 0x41, 0x5a, 0x41, 0x6b, 0x61, 0x54, 0x69, 0x46, 0x54, 0x77, 0x47, 0x4b, 0x6d, 0x67, 0x42, 0x38, 0x46, 0x49, 0x75, 0x2f, 0x4a, 0x45, 0x6b, 0x6a, 0x6d, 0x55, 0x37, 0x55, 0x79, 0x73, 0x49, 0x55, 0x4d, 0x51, 0x47, 0x59, 0x51, 0x61, 0x7a, 0x39, 0x7a, 0x38, 0x6a, 0x37, 0x51, 0x4a, 0x49, 0x6b, 0x56, 0x64, 0x67, 0x79, 0x5c, 0x0a, 0x09, 0x34, 0x42, 0x58, 0x41, 0x30, 0x69, 0x49, 0x4f, 0x56, 0x73, 0x51, 0x45, 0x34, 0x44, 0x51, 0x73, 0x2f, 0x70, 0x49, 0x6b, 0x6a, 0x57, 0x55, 0x36, 0x63, 0x62, 0x31, 0x63, 0x49, 0x66, 0x4b, 0x65, 0x41, 0x45, 0x77, 0x46, 0x46, 0x68, 0x4a, 0x33, 0x41, 0x45, 0x69, 0x53, 0x70, 0x4e, 0x45, 0x74, 0x42, 0x62, 0x59, 0x46, 0x56, 0x75, 0x5a, 0x39, 0x6f, 0x4c, 0x77, 0x6e, 0x41, 0x43, 0x64, 0x69, 0x38, 0x5a, 0x63, 0x6b, 0x71, 0x56, 0x55, 0x7a, 0x5c, 0x0a, 0x09, 0x67, 0x41, 0x38, 0x56, 0x63, 0x61, 0x41, 0x38, 0x4a, 0x77, 0x43, 0x39, 0x78, 0x4b, 0x35, 0x2f, 0x32, 0x2b, 0x52, 0x31, 0x41, 0x45, 0x6d, 0x53, 0x61, 0x75, 0x67, 0x78, 0x59, 0x45, 0x66, 0x67, 0x2b, 0x54, 0x77, 0x50, 0x6b, 0x75, 0x63, 0x45, 0x34, 0x46, 0x67, 0x73, 0x2f, 0x70, 0x49, 0x6b, 0x74, 0x57, 0x74, 0x72, 0x34, 0x4c, 0x69, 0x38, 0x44, 0x35, 0x4c, 0x58, 0x42, 0x4b, 0x43, 0x48, 0x65, 0x4e, 0x62, 0x78, 0x76, 0x44, 0x7a, 0x65, 0x5c, 0x0a, 0x09, 0x58, 0x4a, 0x4b, 0x6b, 0x6d, 0x6e, 0x73, 0x51, 0x32, 0x42, 0x56, 0x59, 0x6c, 0x39, 0x63, 0x42, 0x38, 0x70, 0x6f, 0x41, 0x7a, 0x4d, 0x66, 0x69, 0x4c, 0x30, 0x6c, 0x53, 0x70, 0x33, 0x59, 0x6d, 0x61, 0x6d, 0x6c, 0x75, 0x38, 0x6d, 0x6f, 0x41, 0x43, 0x74, 0x33, 0x4d, 0x51, 0x4a, 0x4b, 0x6b, 0x47, 0x73, 0x71, 0x31, 0x6c, 0x75, 0x61, 0x78, 0x42, 0x4c, 0x41, 0x58, 0x63, 0x46, 0x66, 0x57, 0x62, 0x79, 0x70, 0x4a, 0x55, 0x67, 0x50, 0x74, 0x5c, 0x0a, 0x09, 0x44, 0x64, 0x79, 0x64, 0x78, 0x78, 0x76, 0x6e, 0x4d, 0x51, 0x48, 0x77, 0x30, 0x37, 0x38, 0x6b, 0x53, 0x64, 0x6e, 0x49, 0x72, 0x61, 0x5a, 0x6d, 0x50, 0x51, 0x47, 0x59, 0x51, 0x7a, 0x7a, 0x30, 0x70, 0x7a, 0x66, 0x4c, 0x4e, 0x35, 0x55, 0x6b, 0x71, 0x61, 0x47, 0x65, 0x4a, 0x37, 0x59, 0x48, 0x58, 0x70, 0x54, 0x31, 0x47, 0x32, 0x63, 0x39, 0x41, 0x66, 0x67, 0x77, 0x46, 0x6e, 0x39, 0x4a, 0x6b, 0x72, 0x4c, 0x53, 0x53, 0x39, 0x54, 0x57, 0x5c, 0x0a, 0x09, 0x7a, 0x47, 0x55, 0x35, 0x41, 0x65, 0x67, 0x46, 0x48, 0x67, 0x56, 0x6d, 0x5a, 0x2f, 0x57, 0x47, 0x6b, 0x69, 0x53, 0x4a, 0x4a, 0x63, 0x53, 0x2b, 0x4f, 0x70, 0x6c, 0x75, 0x44, 0x4a, 0x54, 0x6c, 0x42, 0x4f, 0x42, 0x49, 0x4c, 0x50, 0x36, 0x53, 0x4a, 0x47, 0x56, 0x74, 0x4e, 0x6c, 0x46, 0x6a, 0x4d, 0x35, 0x56, 0x6c, 0x41, 0x33, 0x42, 0x53, 0x68, 0x75, 0x38, 0x6c, 0x53, 0x5a, 0x4c, 0x57, 0x4f, 0x7a, 0x6e, 0x72, 0x4e, 0x38, 0x78, 0x71, 0x5c, 0x0a, 0x09, 0x43, 0x57, 0x41, 0x58, 0x59, 0x45, 0x45, 0x57, 0x62, 0x79, 0x52, 0x4a, 0x6b, 0x6f, 0x61, 0x31, 0x47, 0x78, 0x6e, 0x57, 0x32, 0x71, 0x77, 0x6d, 0x41, 0x4a, 0x6c, 0x33, 0x4a, 0x70, 0x49, 0x6b, 0x61, 0x51, 0x4f, 0x5a, 0x54, 0x74, 0x71, 0x7a, 0x6d, 0x41, 0x42, 0x4d, 0x49, 0x53, 0x37, 0x2b, 0x6d, 0x39, 0x46, 0x39, 0x48, 0x45, 0x6d, 0x53, 0x4e, 0x49, 0x4b, 0x6c, 0x77, 0x4c, 0x62, 0x41, 0x79, 0x69, 0x7a, 0x65, 0x4c, 0x49, 0x73, 0x4a, 0x5c, 0x0a, 0x09, 0x77, 0x4e, 0x46, 0x59, 0x2f, 0x43, 0x56, 0x4a, 0x79, 0x74, 0x73, 0x4d, 0x6f, 0x75, 0x5a, 0x6d, 0x49, 0x6f, 0x73, 0x47, 0x34, 0x50, 0x67, 0x4d, 0x33, 0x6b, 0x4f, 0x53, 0x4a, 0x49, 0x33, 0x74, 0x68, 0x4b, 0x7a, 0x65, 0x71, 0x4e, 0x73, 0x6c, 0x67, 0x46, 0x63, 0x43, 0x76, 0x77, 0x66, 0x47, 0x5a, 0x52, 0x4e, 0x48, 0x6b, 0x69, 0x53, 0x4e, 0x6f, 0x68, 0x39, 0x34, 0x4e, 0x66, 0x44, 0x48, 0x62, 0x74, 0x2b, 0x6f, 0x32, 0x77, 0x6e, 0x41, 0x5c, 0x0a, 0x09, 0x42, 0x37, 0x48, 0x34, 0x53, 0x35, 0x4a, 0x55, 0x6c, 0x48, 0x46, 0x45, 0x37, 0x65, 0x33, 0x2b, 0x6a, 0x62, 0x71, 0x59, 0x41, 0x50, 0x51, 0x41, 0x6a, 0x78, 0x43, 0x37, 0x45, 0x30, 0x6d, 0x53, 0x70, 0x47, 0x49, 0x38, 0x42, 0x6d, 0x77, 0x50, 0x39, 0x48, 0x58, 0x7a, 0x4a, 0x74, 0x31, 0x4d, 0x41, 0x41, 0x37, 0x42, 0x34, 0x69, 0x39, 0x4a, 0x55, 0x74, 0x47, 0x32, 0x42, 0x67, 0x37, 0x74, 0x39, 0x6b, 0x32, 0x36, 0x61, 0x51, 0x44, 0x65, 0x5c, 0x0a, 0x09, 0x33, 0x2b, 0x33, 0x42, 0x4a, 0x55, 0x6c, 0x53, 0x52, 0x34, 0x37, 0x72, 0x39, 0x67, 0x30, 0x36, 0x58, 0x51, 0x4b, 0x59, 0x41, 0x6a, 0x77, 0x35, 0x38, 0x4b, 0x4d, 0x6b, 0x53, 0x53, 0x72, 0x57, 0x4b, 0x6d, 0x44, 0x4c, 0x67, 0x52, 0x38, 0x37, 0x30, 0x75, 0x6b, 0x45, 0x34, 0x4a, 0x31, 0x59, 0x2f, 0x43, 0x56, 0x4a, 0x53, 0x6d, 0x55, 0x4b, 0x55, 0x59, 0x73, 0x37, 0x31, 0x6d, 0x6b, 0x44, 0x63, 0x45, 0x77, 0x33, 0x42, 0x35, 0x55, 0x6b, 0x5c, 0x0a, 0x09, 0x53, 0x56, 0x33, 0x72, 0x71, 0x68, 0x5a, 0x33, 0x73, 0x67, 0x51, 0x77, 0x43, 0x33, 0x67, 0x63, 0x6d, 0x4e, 0x6a, 0x4e, 0x67, 0x53, 0x56, 0x4a, 0x55, 0x6c, 0x66, 0x57, 0x41, 0x69, 0x38, 0x48, 0x6e, 0x75, 0x72, 0x6b, 0x44, 0x33, 0x63, 0x79, 0x41, 0x54, 0x67, 0x61, 0x69, 0x37, 0x38, 0x6b, 0x53, 0x61, 0x6c, 0x4e, 0x70, 0x49, 0x75, 0x74, 0x67, 0x54, 0x74, 0x70, 0x41, 0x49, 0x37, 0x71, 0x39, 0x47, 0x43, 0x53, 0x4a, 0x43, 0x6c, 0x54, 0x5c, 0x0a, 0x09, 0x48, 0x64, 0x66, 0x6b, 0x64, 0x70, 0x63, 0x41, 0x5a, 0x67, 0x4f, 0x4c, 0x67, 0x50, 0x47, 0x64, 0x48, 0x6c, 0x43, 0x53, 0x4a, 0x47, 0x57, 0x6d, 0x44, 0x35, 0x67, 0x44, 0x4c, 0x47, 0x6e, 0x33, 0x44, 0x37, 0x59, 0x37, 0x41, 0x54, 0x67, 0x63, 0x69, 0x37, 0x38, 0x6b, 0x53, 0x57, 0x55, 0x78, 0x6e, 0x67, 0x37, 0x76, 0x42, 0x6d, 0x69, 0x33, 0x41, 0x58, 0x44, 0x38, 0x4c, 0x30, 0x6c, 0x53, 0x75, 0x52, 0x7a, 0x5a, 0x79, 0x52, 0x39, 0x71, 0x5c, 0x0a, 0x09, 0x5a, 0x77, 0x6c, 0x67, 0x42, 0x72, 0x48, 0x35, 0x54, 0x32, 0x38, 0x6e, 0x42, 0x35, 0x49, 0x6b, 0x53, 0x62, 0x6c, 0x59, 0x43, 0x32, 0x77, 0x42, 0x4c, 0x47, 0x33, 0x6e, 0x44, 0x37, 0x55, 0x7a, 0x41, 0x5a, 0x69, 0x50, 0x78, 0x56, 0x2b, 0x53, 0x70, 0x4c, 0x4b, 0x5a, 0x53, 0x43, 0x7a, 0x52, 0x74, 0x36, 0x58, 0x64, 0x42, 0x6b, 0x43, 0x53, 0x4a, 0x4a, 0x56, 0x50, 0x32, 0x7a, 0x57, 0x36, 0x31, 0x53, 0x57, 0x41, 0x53, 0x63, 0x54, 0x34, 0x5c, 0x0a, 0x09, 0x66, 0x33, 0x71, 0x37, 0x42, 0x35, 0x41, 0x6b, 0x53, 0x62, 0x6c, 0x62, 0x53, 0x57, 0x7a, 0x55, 0x74, 0x36, 0x62, 0x56, 0x50, 0x39, 0x44, 0x71, 0x42, 0x4f, 0x41, 0x67, 0x4c, 0x50, 0x36, 0x53, 0x4a, 0x4a, 0x58, 0x56, 0x56, 0x4b, 0x4a, 0x57, 0x74, 0x36, 0x7a, 0x56, 0x42, 0x75, 0x44, 0x74, 0x37, 0x57, 0x65, 0x52, 0x4a, 0x45, 0x6b, 0x46, 0x61, 0x71, 0x74, 0x57, 0x74, 0x37, 0x6f, 0x45, 0x38, 0x42, 0x43, 0x77, 0x55, 0x30, 0x64, 0x78, 0x5c, 0x0a, 0x09, 0x4a, 0x45, 0x6c, 0x53, 0x45, 0x52, 0x34, 0x47, 0x35, 0x72, 0x62, 0x36, 0x7a, 0x61, 0x31, 0x4d, 0x41, 0x48, 0x62, 0x47, 0x34, 0x69, 0x39, 0x4a, 0x55, 0x74, 0x6e, 0x74, 0x42, 0x4f, 0x7a, 0x61, 0x36, 0x6a, 0x65, 0x33, 0x30, 0x67, 0x43, 0x38, 0x72, 0x66, 0x4d, 0x73, 0x6b, 0x69, 0x53, 0x70, 0x51, 0x47, 0x39, 0x74, 0x39, 0x52, 0x74, 0x62, 0x61, 0x51, 0x41, 0x4f, 0x36, 0x53, 0x4b, 0x49, 0x4a, 0x45, 0x6b, 0x71, 0x54, 0x73, 0x73, 0x31, 0x5c, 0x0a, 0x09, 0x65, 0x36, 0x78, 0x72, 0x41, 0x43, 0x59, 0x42, 0x54, 0x77, 0x4e, 0x54, 0x75, 0x6b, 0x30, 0x6b, 0x53, 0x5a, 0x4a, 0x79, 0x39, 0x78, 0x77, 0x77, 0x6b, 0x78, 0x5a, 0x75, 0x42, 0x78, 0x78, 0x72, 0x41, 0x76, 0x42, 0x36, 0x4c, 0x50, 0x36, 0x53, 0x4a, 0x46, 0x58, 0x46, 0x53, 0x34, 0x45, 0x44, 0x57, 0x2f, 0x6e, 0x47, 0x73, 0x52, 0x71, 0x41, 0x51, 0x37, 0x76, 0x50, 0x49, 0x6b, 0x6d, 0x53, 0x43, 0x74, 0x54, 0x53, 0x4d, 0x73, 0x42, 0x59, 0x5c, 0x0a, 0x09, 0x44, 0x59, 0x44, 0x72, 0x2f, 0x35, 0x49, 0x6b, 0x56, 0x55, 0x74, 0x4c, 0x74, 0x58, 0x75, 0x30, 0x61, 0x77, 0x42, 0x6d, 0x45, 0x4f, 0x76, 0x2f, 0x37, 0x54, 0x34, 0x79, 0x57, 0x4a, 0x49, 0x6b, 0x70, 0x62, 0x4f, 0x4f, 0x32, 0x42, 0x62, 0x34, 0x32, 0x64, 0x47, 0x2b, 0x61, 0x62, 0x54, 0x69, 0x66, 0x75, 0x41, 0x59, 0x58, 0x35, 0x63, 0x6b, 0x53, 0x65, 0x58, 0x54, 0x41, 0x37, 0x79, 0x68, 0x6c, 0x57, 0x38, 0x61, 0x53, 0x56, 0x74, 0x37, 0x5c, 0x0a, 0x09, 0x43, 0x6b, 0x75, 0x53, 0x70, 0x4e, 0x4a, 0x34, 0x30, 0x31, 0x6a, 0x66, 0x4d, 0x46, 0x6f, 0x44, 0x4d, 0x4f, 0x59, 0x66, 0x6c, 0x69, 0x52, 0x4a, 0x70, 0x54, 0x52, 0x6d, 0x44, 0x52, 0x2f, 0x70, 0x47, 0x6f, 0x43, 0x70, 0x78, 0x4e, 0x72, 0x42, 0x68, 0x4b, 0x77, 0x54, 0x53, 0x5a, 0x4b, 0x6b, 0x33, 0x4c, 0x30, 0x41, 0x62, 0x41, 0x36, 0x73, 0x47, 0x4f, 0x6b, 0x62, 0x52, 0x70, 0x6f, 0x41, 0x48, 0x49, 0x6a, 0x46, 0x58, 0x35, 0x4b, 0x6b, 0x5c, 0x0a, 0x09, 0x71, 0x70, 0x6f, 0x41, 0x48, 0x44, 0x44, 0x61, 0x4e, 0x34, 0x7a, 0x55, 0x41, 0x49, 0x7a, 0x36, 0x68, 0x79, 0x52, 0x4a, 0x55, 0x75, 0x6c, 0x31, 0x31, 0x41, 0x43, 0x38, 0x50, 0x6f, 0x63, 0x67, 0x6b, 0x69, 0x53, 0x70, 0x4f, 0x4b, 0x50, 0x57, 0x38, 0x75, 0x47, 0x75, 0x41, 0x65, 0x67, 0x42, 0x6e, 0x67, 0x47, 0x6d, 0x35, 0x35, 0x56, 0x49, 0x6b, 0x69, 0x54, 0x6c, 0x62, 0x68, 0x6c, 0x78, 0x48, 0x63, 0x43, 0x36, 0x34, 0x62, 0x34, 0x34, 0x5c, 0x0a, 0x09, 0x33, 0x41, 0x52, 0x67, 0x48, 0x68, 0x5a, 0x2f, 0x53, 0x5a, 0x4b, 0x71, 0x62, 0x6a, 0x70, 0x52, 0x30, 0x34, 0x63, 0x31, 0x58, 0x41, 0x4f, 0x77, 0x58, 0x33, 0x35, 0x5a, 0x4a, 0x45, 0x6c, 0x53, 0x67, 0x56, 0x34, 0x33, 0x30, 0x68, 0x65, 0x47, 0x61, 0x77, 0x44, 0x32, 0x7a, 0x7a, 0x47, 0x49, 0x4a, 0x45, 0x6b, 0x71, 0x7a, 0x72, 0x34, 0x6a, 0x66, 0x63, 0x45, 0x4a, 0x67, 0x43, 0x52, 0x4a, 0x39, 0x54, 0x58, 0x69, 0x68, 0x2f, 0x71, 0x4e, 0x5c, 0x0a, 0x09, 0x4c, 0x77, 0x4b, 0x63, 0x52, 0x47, 0x77, 0x61, 0x4d, 0x44, 0x48, 0x76, 0x52, 0x4a, 0x49, 0x6b, 0x4b, 0x58, 0x64, 0x72, 0x67, 0x63, 0x32, 0x41, 0x4e, 0x52, 0x74, 0x2f, 0x59, 0x65, 0x4d, 0x4a, 0x77, 0x4b, 0x35, 0x59, 0x2f, 0x43, 0x56, 0x4a, 0x71, 0x6f, 0x75, 0x4a, 0x77, 0x47, 0x37, 0x44, 0x66, 0x57, 0x48, 0x6a, 0x42, 0x6d, 0x43, 0x76, 0x2f, 0x4c, 0x4e, 0x49, 0x6b, 0x71, 0x51, 0x43, 0x44, 0x56, 0x76, 0x62, 0x62, 0x51, 0x41, 0x6b, 0x5c, 0x0a, 0x09, 0x53, 0x61, 0x6f, 0x33, 0x47, 0x77, 0x42, 0x4a, 0x6b, 0x68, 0x70, 0x6f, 0x37, 0x2b, 0x46, 0x2b, 0x63, 0x2b, 0x68, 0x46, 0x67, 0x44, 0x33, 0x41, 0x63, 0x6d, 0x42, 0x4b, 0x55, 0x59, 0x6b, 0x6b, 0x53, 0x56, 0x4c, 0x75, 0x56, 0x67, 0x48, 0x54, 0x32, 0x47, 0x68, 0x48, 0x77, 0x4b, 0x45, 0x54, 0x67, 0x42, 0x32, 0x78, 0x2b, 0x45, 0x75, 0x53, 0x56, 0x44, 0x64, 0x54, 0x67, 0x42, 0x30, 0x32, 0x2f, 0x73, 0x32, 0x68, 0x44, 0x63, 0x43, 0x75, 0x5c, 0x0a, 0x09, 0x78, 0x57, 0x57, 0x52, 0x4a, 0x45, 0x6b, 0x46, 0x32, 0x6d, 0x58, 0x6a, 0x33, 0x78, 0x6a, 0x61, 0x41, 0x41, 0x78, 0x37, 0x6d, 0x34, 0x41, 0x6b, 0x53, 0x61, 0x71, 0x38, 0x54, 0x54, 0x37, 0x6b, 0x44, 0x32, 0x30, 0x41, 0x4e, 0x75, 0x6b, 0x4f, 0x4a, 0x45, 0x6c, 0x53, 0x4c, 0x59, 0x7a, 0x61, 0x41, 0x49, 0x7a, 0x34, 0x78, 0x43, 0x42, 0x4a, 0x6b, 0x6c, 0x52, 0x70, 0x6d, 0x33, 0x7a, 0x49, 0x48, 0x37, 0x77, 0x4c, 0x6f, 0x49, 0x66, 0x59, 0x5c, 0x0a, 0x09, 0x41, 0x6e, 0x68, 0x79, 0x30, 0x59, 0x6b, 0x6b, 0x53, 0x56, 0x4c, 0x75, 0x56, 0x68, 0x4e, 0x62, 0x41, 0x72, 0x39, 0x34, 0x4a, 0x38, 0x44, 0x67, 0x42, 0x47, 0x42, 0x72, 0x4c, 0x50, 0x36, 0x53, 0x4a, 0x4e, 0x58, 0x56, 0x5a, 0x47, 0x44, 0x62, 0x6f, 0x62, 0x38, 0x78, 0x32, 0x41, 0x44, 0x73, 0x56, 0x48, 0x77, 0x57, 0x53, 0x5a, 0x4a, 0x55, 0x6f, 0x41, 0x31, 0x71, 0x2f, 0x57, 0x41, 0x44, 0x38, 0x4b, 0x6f, 0x45, 0x51, 0x53, 0x52, 0x4a, 0x5c, 0x0a, 0x09, 0x55, 0x6e, 0x48, 0x6d, 0x44, 0x76, 0x33, 0x46, 0x59, 0x41, 0x4f, 0x77, 0x59, 0x34, 0x49, 0x67, 0x6b, 0x69, 0x53, 0x70, 0x4f, 0x4d, 0x4d, 0x32, 0x41, 0x48, 0x4f, 0x48, 0x2b, 0x55, 0x5a, 0x4a, 0x6b, 0x6c, 0x51, 0x66, 0x4e, 0x67, 0x43, 0x53, 0x4a, 0x44, 0x58, 0x51, 0x42, 0x74, 0x63, 0x41, 0x44, 0x4e, 0x34, 0x47, 0x75, 0x4a, 0x79, 0x34, 0x50, 0x55, 0x43, 0x53, 0x4a, 0x4e, 0x58, 0x54, 0x4b, 0x6d, 0x44, 0x71, 0x34, 0x43, 0x39, 0x36, 0x5c, 0x0a, 0x09, 0x67, 0x4a, 0x6c, 0x59, 0x2f, 0x43, 0x56, 0x4a, 0x71, 0x72, 0x73, 0x70, 0x77, 0x4f, 0x61, 0x44, 0x76, 0x2b, 0x68, 0x68, 0x6f, 0x2f, 0x73, 0x43, 0x4a, 0x55, 0x6c, 0x53, 0x62, 0x62, 0x31, 0x59, 0x38, 0x32, 0x30, 0x41, 0x4a, 0x45, 0x6c, 0x71, 0x44, 0x68, 0x73, 0x41, 0x53, 0x5a, 0x49, 0x61, 0x61, 0x4c, 0x76, 0x42, 0x6e, 0x2f, 0x51, 0x4d, 0x2f, 0x59, 0x55, 0x6b, 0x53, 0x61, 0x71, 0x31, 0x62, 0x51, 0x5a, 0x2f, 0x30, 0x6a, 0x50, 0x30, 0x5c, 0x0a, 0x09, 0x46, 0x35, 0x49, 0x6b, 0x71, 0x64, 0x59, 0x32, 0x6d, 0x41, 0x44, 0x4d, 0x53, 0x52, 0x68, 0x45, 0x6b, 0x69, 0x51, 0x56, 0x5a, 0x36, 0x76, 0x42, 0x6e, 0x2f, 0x51, 0x41, 0x57, 0x79, 0x51, 0x4d, 0x49, 0x6b, 0x6d, 0x53, 0x69, 0x72, 0x50, 0x6c, 0x34, 0x45, 0x39, 0x36, 0x47, 0x4e, 0x49, 0x4e, 0x53, 0x4a, 0x4b, 0x6b, 0x57, 0x6e, 0x76, 0x78, 0x51, 0x2f, 0x2b, 0x34, 0x2f, 0x76, 0x37, 0x2b, 0x50, 0x74, 0x5a, 0x76, 0x43, 0x53, 0x78, 0x4a, 0x5c, 0x0a, 0x09, 0x6b, 0x75, 0x70, 0x72, 0x48, 0x64, 0x41, 0x4c, 0x39, 0x50, 0x56, 0x67, 0x38, 0x5a, 0x63, 0x6b, 0x71, 0x53, 0x6c, 0x36, 0x67, 0x46, 0x6d, 0x44, 0x50, 0x35, 0x45, 0x6b, 0x53, 0x63, 0x30, 0x78, 0x42, 0x32, 0x77, 0x41, 0x4a, 0x45, 0x6c, 0x71, 0x47, 0x69, 0x63, 0x41, 0x6b, 0x69, 0x51, 0x31, 0x30, 0x41, 0x79, 0x77, 0x41, 0x5a, 0x41, 0x6b, 0x71, 0x57, 0x6c, 0x73, 0x41, 0x43, 0x52, 0x4a, 0x61, 0x69, 0x41, 0x62, 0x41, 0x45, 0x6d, 0x53, 0x5c, 0x0a, 0x09, 0x47, 0x73, 0x67, 0x47, 0x51, 0x4a, 0x4b, 0x6b, 0x42, 0x72, 0x49, 0x42, 0x6b, 0x43, 0x53, 0x70, 0x67, 0x57, 0x77, 0x41, 0x4a, 0x45, 0x6c, 0x71, 0x6f, 0x47, 0x6c, 0x67, 0x41, 0x79, 0x42, 0x4a, 0x55, 0x74, 0x4e, 0x4d, 0x41, 0x68, 0x73, 0x41, 0x53, 0x5a, 0x4b, 0x61, 0x5a, 0x6a, 0x4c, 0x59, 0x41, 0x45, 0x69, 0x53, 0x31, 0x44, 0x52, 0x54, 0x77, 0x51, 0x5a, 0x41, 0x6b, 0x71, 0x53, 0x6d, 0x63, 0x51, 0x6c, 0x41, 0x6b, 0x71, 0x51, 0x47, 0x5c, 0x0a, 0x09, 0x6d, 0x67, 0x49, 0x32, 0x41, 0x4a, 0x49, 0x6b, 0x4e, 0x59, 0x30, 0x4e, 0x67, 0x43, 0x52, 0x4a, 0x44, 0x54, 0x51, 0x42, 0x62, 0x41, 0x41, 0x6b, 0x53, 0x57, 0x6f, 0x6b, 0x47, 0x77, 0x42, 0x4a, 0x6b, 0x68, 0x72, 0x49, 0x42, 0x6b, 0x43, 0x53, 0x70, 0x47, 0x62, 0x70, 0x42, 0x52, 0x6a, 0x58, 0x33, 0x39, 0x2f, 0x66, 0x6e, 0x7a, 0x71, 0x4a, 0x4a, 0x45, 0x6b, 0x71, 0x31, 0x44, 0x67, 0x6e, 0x41, 0x4a, 0x49, 0x6b, 0x4e, 0x5a, 0x41, 0x4e, 0x5c, 0x0a, 0x09, 0x67, 0x43, 0x52, 0x4a, 0x44, 0x57, 0x51, 0x44, 0x49, 0x45, 0x6c, 0x53, 0x41, 0x39, 0x6b, 0x41, 0x53, 0x4a, 0x4c, 0x55, 0x4c, 0x4d, 0x2b, 0x42, 0x44, 0x59, 0x41, 0x6b, 0x53, 0x55, 0x33, 0x7a, 0x50, 0x4e, 0x67, 0x41, 0x53, 0x4a, 0x4c, 0x55, 0x53, 0x44, 0x59, 0x41, 0x6b, 0x69, 0x51, 0x31, 0x6b, 0x41, 0x32, 0x41, 0x4a, 0x45, 0x6e, 0x4e, 0x38, 0x67, 0x4c, 0x59, 0x41, 0x45, 0x69, 0x53, 0x31, 0x44, 0x53, 0x72, 0x77, 0x41, 0x5a, 0x41, 0x5c, 0x0a, 0x09, 0x6b, 0x71, 0x53, 0x6d, 0x73, 0x51, 0x47, 0x51, 0x4a, 0x4b, 0x6d, 0x42, 0x31, 0x6f, 0x41, 0x4e, 0x67, 0x43, 0x52, 0x4a, 0x54, 0x62, 0x4d, 0x53, 0x62, 0x41, 0x41, 0x6b, 0x53, 0x57, 0x71, 0x61, 0x31, 0x57, 0x41, 0x44, 0x49, 0x45, 0x6c, 0x53, 0x30, 0x37, 0x67, 0x45, 0x49, 0x45, 0x6c, 0x53, 0x41, 0x79, 0x30, 0x48, 0x47, 0x77, 0x42, 0x4a, 0x6b, 0x70, 0x70, 0x6d, 0x4b, 0x64, 0x67, 0x41, 0x53, 0x4a, 0x4c, 0x55, 0x4e, 0x44, 0x59, 0x41, 0x5c, 0x0a, 0x09, 0x6b, 0x69, 0x51, 0x31, 0x6b, 0x41, 0x32, 0x41, 0x4a, 0x45, 0x6b, 0x4e, 0x5a, 0x41, 0x4d, 0x67, 0x53, 0x56, 0x49, 0x44, 0x32, 0x51, 0x42, 0x49, 0x6b, 0x74, 0x52, 0x41, 0x4e, 0x67, 0x43, 0x53, 0x4a, 0x44, 0x58, 0x51, 0x55, 0x32, 0x41, 0x44, 0x49, 0x45, 0x6c, 0x53, 0x30, 0x7a, 0x77, 0x42, 0x4d, 0x4b, 0x36, 0x2f, 0x76, 0x37, 0x38, 0x50, 0x47, 0x77, 0x46, 0x4a, 0x6b, 0x70, 0x70, 0x67, 0x48, 0x64, 0x41, 0x4c, 0x39, 0x50, 0x55, 0x77, 0x5c, 0x0a, 0x09, 0x4d, 0x41, 0x71, 0x51, 0x4a, 0x45, 0x6d, 0x31, 0x39, 0x78, 0x54, 0x51, 0x42, 0x2f, 0x48, 0x4a, 0x2f, 0x38, 0x6d, 0x30, 0x57, 0x53, 0x52, 0x4a, 0x55, 0x6b, 0x45, 0x57, 0x44, 0x2f, 0x37, 0x45, 0x42, 0x6b, 0x43, 0x53, 0x70, 0x4f, 0x5a, 0x34, 0x73, 0x65, 0x62, 0x33, 0x41, 0x49, 0x73, 0x53, 0x42, 0x70, 0x45, 0x6b, 0x53, 0x63, 0x56, 0x35, 0x59, 0x76, 0x41, 0x6e, 0x50, 0x63, 0x43, 0x6a, 0x43, 0x59, 0x4e, 0x49, 0x6b, 0x71, 0x54, 0x69, 0x5c, 0x0a, 0x09, 0x4c, 0x42, 0x7a, 0x38, 0x53, 0x63, 0x2f, 0x51, 0x58, 0x30, 0x69, 0x53, 0x70, 0x46, 0x70, 0x37, 0x38, 0x55, 0x4f, 0x2f, 0x45, 0x77, 0x42, 0x4a, 0x6b, 0x70, 0x72, 0x44, 0x43, 0x59, 0x41, 0x6b, 0x53, 0x51, 0x32, 0x30, 0x77, 0x51, 0x54, 0x67, 0x4c, 0x77, 0x6d, 0x44, 0x53, 0x4a, 0x4b, 0x6b, 0x34, 0x72, 0x7a, 0x34, 0x6f, 0x58, 0x39, 0x63, 0x66, 0x33, 0x38, 0x2f, 0x77, 0x48, 0x4a, 0x67, 0x73, 0x32, 0x52, 0x78, 0x4a, 0x45, 0x6c, 0x53, 0x5c, 0x0a, 0x09, 0x33, 0x6c, 0x59, 0x42, 0x55, 0x77, 0x64, 0x2f, 0x4d, 0x62, 0x67, 0x46, 0x38, 0x4a, 0x2b, 0x54, 0x52, 0x4a, 0x45, 0x6b, 0x53, 0x55, 0x56, 0x35, 0x65, 0x4f, 0x67, 0x76, 0x42, 0x68, 0x75, 0x41, 0x2f, 0x30, 0x6f, 0x51, 0x52, 0x4a, 0x49, 0x6b, 0x46, 0x57, 0x66, 0x59, 0x42, 0x75, 0x44, 0x68, 0x59, 0x62, 0x35, 0x52, 0x6b, 0x69, 0x54, 0x56, 0x78, 0x30, 0x4e, 0x44, 0x66, 0x32, 0x45, 0x44, 0x49, 0x45, 0x6c, 0x53, 0x4d, 0x77, 0x7a, 0x62, 0x5c, 0x0a, 0x09, 0x41, 0x50, 0x77, 0x78, 0x51, 0x52, 0x42, 0x4a, 0x6b, 0x6c, 0x53, 0x63, 0x59, 0x52, 0x75, 0x41, 0x50, 0x79, 0x51, 0x49, 0x49, 0x6b, 0x6d, 0x53, 0x69, 0x72, 0x50, 0x42, 0x74, 0x48, 0x2f, 0x77, 0x4e, 0x73, 0x41, 0x65, 0x59, 0x41, 0x55, 0x77, 0x4f, 0x55, 0x55, 0x69, 0x53, 0x5a, 0x4b, 0x55, 0x71, 0x39, 0x58, 0x45, 0x37, 0x66, 0x37, 0x72, 0x42, 0x6e, 0x39, 0x6a, 0x63, 0x41, 0x4b, 0x77, 0x44, 0x76, 0x68, 0x39, 0x69, 0x6b, 0x53, 0x53, 0x5c, 0x0a, 0x09, 0x4a, 0x43, 0x6c, 0x33, 0x44, 0x7a, 0x4b, 0x6b, 0x2b, 0x4d, 0x50, 0x36, 0x42, 0x67, 0x44, 0x67, 0x67, 0x57, 0x4b, 0x7a, 0x53, 0x4a, 0x4b, 0x6b, 0x67, 0x74, 0x79, 0x2f, 0x38, 0x57, 0x2f, 0x30, 0x6a, 0x50, 0x5a, 0x46, 0x53, 0x5a, 0x4a, 0x55, 0x43, 0x77, 0x73, 0x32, 0x2f, 0x6f, 0x32, 0x65, 0x30, 0x62, 0x34, 0x6f, 0x53, 0x5a, 0x4a, 0x71, 0x59, 0x64, 0x51, 0x4a, 0x77, 0x48, 0x30, 0x46, 0x42, 0x70, 0x45, 0x6b, 0x53, 0x63, 0x58, 0x5a, 0x5c, 0x0a, 0x09, 0x35, 0x45, 0x50, 0x2b, 0x34, 0x46, 0x30, 0x41, 0x45, 0x4d, 0x33, 0x41, 0x63, 0x6d, 0x42, 0x4b, 0x6b, 0x59, 0x6b, 0x6b, 0x53, 0x56, 0x4b, 0x75, 0x4e, 0x72, 0x6b, 0x44, 0x41, 0x44, 0x61, 0x63, 0x41, 0x4b, 0x77, 0x44, 0x66, 0x6c, 0x74, 0x6b, 0x49, 0x6b, 0x6d, 0x53, 0x6c, 0x4c, 0x76, 0x66, 0x73, 0x56, 0x48, 0x78, 0x68, 0x77, 0x30, 0x62, 0x41, 0x49, 0x43, 0x37, 0x69, 0x38, 0x6b, 0x69, 0x53, 0x5a, 0x49, 0x4b, 0x63, 0x74, 0x64, 0x77, 0x5c, 0x0a, 0x09, 0x76, 0x32, 0x6b, 0x44, 0x49, 0x45, 0x6c, 0x53, 0x76, 0x51, 0x31, 0x62, 0x32, 0x32, 0x30, 0x41, 0x4a, 0x45, 0x6d, 0x71, 0x74, 0x33, 0x75, 0x47, 0x2b, 0x38, 0x32, 0x68, 0x46, 0x77, 0x45, 0x43, 0x54, 0x43, 0x4b, 0x32, 0x42, 0x4a, 0x35, 0x59, 0x52, 0x43, 0x4a, 0x4a, 0x6b, 0x70, 0x53, 0x72, 0x74, 0x63, 0x51, 0x46, 0x67, 0x47, 0x73, 0x32, 0x2f, 0x73, 0x4c, 0x47, 0x45, 0x34, 0x41, 0x31, 0x65, 0x44, 0x75, 0x67, 0x4a, 0x45, 0x6c, 0x31, 0x5c, 0x0a, 0x09, 0x73, 0x59, 0x42, 0x68, 0x69, 0x6a, 0x39, 0x73, 0x32, 0x67, 0x41, 0x41, 0x33, 0x4a, 0x46, 0x76, 0x46, 0x6b, 0x6d, 0x53, 0x56, 0x4a, 0x42, 0x66, 0x6a, 0x2f, 0x51, 0x46, 0x47, 0x77, 0x42, 0x4a, 0x6b, 0x75, 0x72, 0x72, 0x39, 0x70, 0x47, 0x2b, 0x4d, 0x46, 0x77, 0x44, 0x4d, 0x4f, 0x49, 0x33, 0x53, 0x35, 0x4b, 0x6b, 0x53, 0x76, 0x6e, 0x56, 0x53, 0x46, 0x2f, 0x59, 0x2b, 0x43, 0x4a, 0x41, 0x69, 0x4b, 0x62, 0x67, 0x47, 0x57, 0x42, 0x36, 0x5c, 0x0a, 0x09, 0x6e, 0x6f, 0x6b, 0x6b, 0x53, 0x56, 0x4b, 0x75, 0x6c, 0x67, 0x47, 0x62, 0x4d, 0x38, 0x77, 0x6d, 0x51, 0x44, 0x44, 0x38, 0x42, 0x47, 0x41, 0x64, 0x4c, 0x67, 0x4e, 0x49, 0x6b, 0x6c, 0x52, 0x31, 0x64, 0x7a, 0x42, 0x43, 0x38, 0x59, 0x66, 0x68, 0x47, 0x77, 0x41, 0x59, 0x5a, 0x57, 0x51, 0x67, 0x53, 0x5a, 0x49, 0x71, 0x59, 0x64, 0x52, 0x61, 0x50, 0x6c, 0x49, 0x44, 0x63, 0x46, 0x73, 0x4f, 0x51, 0x53, 0x52, 0x4a, 0x55, 0x6e, 0x46, 0x47, 0x5c, 0x0a, 0x09, 0x72, 0x65, 0x58, 0x44, 0x58, 0x51, 0x4d, 0x41, 0x73, 0x57, 0x6e, 0x41, 0x4d, 0x38, 0x43, 0x45, 0x50, 0x42, 0x4a, 0x4a, 0x6b, 0x71, 0x52, 0x63, 0x39, 0x51, 0x45, 0x7a, 0x69, 0x63, 0x33, 0x39, 0x68, 0x6a, 0x58, 0x53, 0x42, 0x47, 0x41, 0x46, 0x49, 0x7a, 0x77, 0x38, 0x51, 0x4a, 0x49, 0x6b, 0x6c, 0x64, 0x35, 0x64, 0x6a, 0x46, 0x4c, 0x38, 0x59, 0x65, 0x51, 0x47, 0x41, 0x4f, 0x44, 0x57, 0x62, 0x4c, 0x4e, 0x49, 0x6b, 0x71, 0x53, 0x43, 0x5c, 0x0a, 0x09, 0x33, 0x44, 0x4c, 0x57, 0x4e, 0x34, 0x7a, 0x57, 0x41, 0x49, 0x7a, 0x35, 0x68, 0x79, 0x56, 0x4a, 0x55, 0x69, 0x6d, 0x4e, 0x2b, 0x53, 0x46, 0x2b, 0x70, 0x47, 0x73, 0x41, 0x41, 0x47, 0x59, 0x41, 0x54, 0x7a, 0x4e, 0x36, 0x6b, 0x79, 0x42, 0x4a, 0x6b, 0x73, 0x70, 0x6c, 0x48, 0x54, 0x41, 0x4c, 0x65, 0x48, 0x61, 0x30, 0x62, 0x78, 0x71, 0x74, 0x75, 0x43, 0x2f, 0x46, 0x36, 0x77, 0x41, 0x6b, 0x53, 0x61, 0x71, 0x61, 0x75, 0x78, 0x6d, 0x6a, 0x5c, 0x0a, 0x09, 0x2b, 0x4d, 0x50, 0x59, 0x6e, 0x2b, 0x36, 0x76, 0x7a, 0x79, 0x61, 0x4c, 0x4a, 0x45, 0x6b, 0x71, 0x79, 0x41, 0x32, 0x74, 0x66, 0x4a, 0x4d, 0x4e, 0x67, 0x43, 0x52, 0x4a, 0x39, 0x64, 0x4a, 0x53, 0x37, 0x52, 0x37, 0x74, 0x47, 0x67, 0x43, 0x41, 0x53, 0x63, 0x52, 0x2b, 0x41, 0x4a, 0x4f, 0x7a, 0x53, 0x43, 0x52, 0x4a, 0x6b, 0x6e, 0x4c, 0x31, 0x48, 0x48, 0x48, 0x2f, 0x2f, 0x35, 0x71, 0x78, 0x76, 0x6e, 0x47, 0x73, 0x43, 0x63, 0x41, 0x61, 0x5c, 0x0a, 0x09, 0x76, 0x42, 0x74, 0x41, 0x6b, 0x71, 0x53, 0x71, 0x75, 0x49, 0x55, 0x57, 0x69, 0x6a, 0x2b, 0x30, 0x64, 0x6f, 0x57, 0x2f, 0x79, 0x77, 0x43, 0x53, 0x4a, 0x46, 0x56, 0x44, 0x79, 0x7a, 0x57, 0x37, 0x6c, 0x51, 0x62, 0x67, 0x4a, 0x31, 0x30, 0x45, 0x6b, 0x53, 0x52, 0x4a, 0x78, 0x57, 0x6d, 0x35, 0x41, 0x52, 0x6a, 0x72, 0x47, 0x6f, 0x42, 0x42, 0x44, 0x77, 0x45, 0x37, 0x64, 0x52, 0x78, 0x48, 0x6b, 0x69, 0x54, 0x6c, 0x37, 0x57, 0x46, 0x67, 0x5c, 0x0a, 0x09, 0x62, 0x71, 0x76, 0x66, 0x33, 0x4f, 0x6f, 0x6d, 0x50, 0x7a, 0x2f, 0x75, 0x4c, 0x49, 0x73, 0x6b, 0x53, 0x53, 0x70, 0x49, 0x57, 0x37, 0x58, 0x61, 0x42, 0x6b, 0x43, 0x53, 0x70, 0x48, 0x70, 0x6f, 0x71, 0x31, 0x61, 0x33, 0x75, 0x67, 0x51, 0x77, 0x43, 0x58, 0x67, 0x4b, 0x6d, 0x4e, 0x70, 0x4a, 0x49, 0x6b, 0x6d, 0x53, 0x6c, 0x4b, 0x75, 0x56, 0x78, 0x50, 0x61, 0x2f, 0x4c, 0x64, 0x30, 0x42, 0x41, 0x4b, 0x31, 0x50, 0x41, 0x4e, 0x62, 0x67, 0x5c, 0x0a, 0x09, 0x78, 0x59, 0x43, 0x53, 0x4a, 0x4a, 0x58, 0x56, 0x64, 0x62, 0x52, 0x52, 0x2f, 0x4b, 0x47, 0x39, 0x42, 0x2f, 0x33, 0x38, 0x71, 0x4c, 0x30, 0x73, 0x6b, 0x69, 0x53, 0x70, 0x49, 0x44, 0x39, 0x6f, 0x39, 0x77, 0x2b, 0x30, 0x75, 0x67, 0x51, 0x41, 0x38, 0x58, 0x54, 0x41, 0x78, 0x63, 0x44, 0x45, 0x64, 0x67, 0x38, 0x69, 0x53, 0x5a, 0x4a, 0x79, 0x73, 0x78, 0x62, 0x59, 0x6b, 0x68, 0x59, 0x65, 0x41, 0x44, 0x52, 0x55, 0x4f, 0x78, 0x4f, 0x41, 0x5c, 0x0a, 0x09, 0x70, 0x63, 0x44, 0x50, 0x32, 0x6e, 0x6c, 0x7a, 0x53, 0x5a, 0x4b, 0x55, 0x75, 0x78, 0x74, 0x70, 0x73, 0x2f, 0x68, 0x44, 0x65, 0x77, 0x30, 0x41, 0x77, 0x46, 0x58, 0x74, 0x48, 0x6b, 0x43, 0x53, 0x4a, 0x4f, 0x57, 0x71, 0x6f, 0x39, 0x72, 0x63, 0x7a, 0x68, 0x49, 0x41, 0x77, 0x47, 0x78, 0x67, 0x45, 0x54, 0x43, 0x2b, 0x6b, 0x34, 0x4e, 0x4a, 0x6b, 0x71, 0x52, 0x4d, 0x39, 0x51, 0x46, 0x7a, 0x67, 0x43, 0x58, 0x74, 0x2f, 0x73, 0x46, 0x32, 0x5c, 0x0a, 0x09, 0x4a, 0x77, 0x42, 0x4c, 0x38, 0x4f, 0x46, 0x41, 0x6b, 0x69, 0x53, 0x56, 0x78, 0x61, 0x31, 0x30, 0x55, 0x50, 0x79, 0x68, 0x2f, 0x51, 0x59, 0x41, 0x34, 0x4d, 0x70, 0x4f, 0x44, 0x69, 0x52, 0x4a, 0x6b, 0x6a, 0x4a, 0x33, 0x52, 0x61, 0x64, 0x2f, 0x73, 0x4e, 0x30, 0x6c, 0x41, 0x49, 0x69, 0x4e, 0x42, 0x68, 0x37, 0x48, 0x75, 0x77, 0x45, 0x6b, 0x53, 0x55, 0x70, 0x70, 0x4c, 0x66, 0x42, 0x79, 0x59, 0x71, 0x4f, 0x2b, 0x74, 0x6e, 0x55, 0x79, 0x5c, 0x0a, 0x09, 0x41, 0x58, 0x69, 0x4b, 0x32, 0x48, 0x42, 0x41, 0x6b, 0x69, 0x53, 0x6c, 0x63, 0x78, 0x30, 0x64, 0x46, 0x6e, 0x2f, 0x6f, 0x72, 0x41, 0x45, 0x41, 0x75, 0x4c, 0x7a, 0x54, 0x41, 0x30, 0x71, 0x53, 0x70, 0x45, 0x78, 0x30, 0x56, 0x59, 0x73, 0x37, 0x57, 0x51, 0x49, 0x41, 0x6d, 0x41, 0x49, 0x38, 0x4f, 0x66, 0x43, 0x6a, 0x4a, 0x45, 0x6b, 0x71, 0x31, 0x69, 0x70, 0x69, 0x38, 0x35, 0x39, 0x56, 0x6e, 0x62, 0x35, 0x42, 0x70, 0x78, 0x4f, 0x41, 0x5c, 0x0a, 0x09, 0x56, 0x58, 0x53, 0x77, 0x37, 0x61, 0x41, 0x6b, 0x53, 0x63, 0x72, 0x45, 0x44, 0x2b, 0x69, 0x69, 0x2b, 0x45, 0x50, 0x6e, 0x44, 0x51, 0x44, 0x41, 0x70, 0x64, 0x30, 0x63, 0x57, 0x4a, 0x49, 0x6b, 0x64, 0x61, 0x7a, 0x72, 0x47, 0x74, 0x7a, 0x70, 0x45, 0x67, 0x42, 0x45, 0x38, 0x2f, 0x41, 0x49, 0x73, 0x45, 0x32, 0x33, 0x49, 0x53, 0x52, 0x4a, 0x55, 0x73, 0x73, 0x65, 0x41, 0x37, 0x59, 0x6e, 0x4e, 0x67, 0x48, 0x71, 0x57, 0x44, 0x63, 0x54, 0x5c, 0x0a, 0x09, 0x67, 0x48, 0x58, 0x41, 0x4a, 0x64, 0x30, 0x63, 0x58, 0x4a, 0x49, 0x6b, 0x74, 0x65, 0x31, 0x62, 0x64, 0x46, 0x6e, 0x38, 0x6f, 0x62, 0x73, 0x4a, 0x41, 0x4d, 0x41, 0x72, 0x67, 0x64, 0x38, 0x44, 0x34, 0x37, 0x6f, 0x4e, 0x49, 0x6b, 0x6d, 0x53, 0x78, 0x74, 0x51, 0x50, 0x76, 0x42, 0x72, 0x34, 0x59, 0x37, 0x64, 0x76, 0x31, 0x4d, 0x30, 0x45, 0x67, 0x49, 0x45, 0x41, 0x74, 0x33, 0x55, 0x62, 0x51, 0x70, 0x49, 0x6b, 0x74, 0x65, 0x51, 0x32, 0x5c, 0x0a, 0x09, 0x4d, 0x69, 0x6a, 0x2b, 0x30, 0x48, 0x30, 0x44, 0x41, 0x48, 0x42, 0x78, 0x42, 0x75, 0x38, 0x68, 0x53, 0x5a, 0x4c, 0x47, 0x39, 0x73, 0x32, 0x73, 0x33, 0x71, 0x6a, 0x62, 0x4a, 0x51, 0x43, 0x41, 0x71, 0x63, 0x43, 0x6a, 0x77, 0x50, 0x54, 0x75, 0x34, 0x30, 0x69, 0x53, 0x70, 0x42, 0x45, 0x73, 0x49, 0x79, 0x36, 0x38, 0x58, 0x35, 0x6e, 0x46, 0x6d, 0x32, 0x55, 0x78, 0x41, 0x56, 0x68, 0x4a, 0x58, 0x4a, 0x41, 0x67, 0x53, 0x5a, 0x4c, 0x79, 0x5c, 0x0a, 0x09, 0x63, 0x79, 0x6b, 0x5a, 0x46, 0x58, 0x2f, 0x49, 0x5a, 0x67, 0x49, 0x41, 0x73, 0x43, 0x74, 0x77, 0x58, 0x78, 0x5a, 0x76, 0x4a, 0x45, 0x6d, 0x53, 0x68, 0x72, 0x55, 0x62, 0x73, 0x43, 0x43, 0x72, 0x4e, 0x38, 0x74, 0x69, 0x41, 0x67, 0x41, 0x52, 0x36, 0x4f, 0x63, 0x5a, 0x76, 0x5a, 0x63, 0x6b, 0x53, 0x64, 0x72, 0x51, 0x7a, 0x38, 0x6d, 0x77, 0x2b, 0x45, 0x4e, 0x32, 0x44, 0x51, 0x44, 0x41, 0x68, 0x52, 0x6d, 0x2b, 0x6c, 0x79, 0x52, 0x4a, 0x5c, 0x0a, 0x09, 0x57, 0x75, 0x39, 0x72, 0x57, 0x62, 0x39, 0x68, 0x56, 0x6b, 0x73, 0x41, 0x41, 0x4c, 0x33, 0x45, 0x78, 0x59, 0x43, 0x7a, 0x73, 0x33, 0x70, 0x44, 0x53, 0x5a, 0x4c, 0x45, 0x45, 0x75, 0x4c, 0x69, 0x76, 0x2b, 0x65, 0x7a, 0x66, 0x4e, 0x4d, 0x73, 0x4a, 0x77, 0x44, 0x50, 0x41, 0x31, 0x2f, 0x50, 0x38, 0x50, 0x30, 0x6b, 0x53, 0x56, 0x4c, 0x55, 0x31, 0x6b, 0x79, 0x4c, 0x50, 0x32, 0x51, 0x37, 0x41, 0x51, 0x43, 0x59, 0x41, 0x2f, 0x79, 0x5a, 0x5c, 0x0a, 0x09, 0x6d, 0x41, 0x5a, 0x49, 0x6b, 0x71, 0x54, 0x75, 0x50, 0x41, 0x2b, 0x38, 0x41, 0x6c, 0x69, 0x55, 0x39, 0x52, 0x74, 0x6e, 0x4f, 0x51, 0x47, 0x41, 0x43, 0x50, 0x6a, 0x74, 0x6a, 0x4e, 0x39, 0x54, 0x6b, 0x71, 0x53, 0x6d, 0x2b, 0x6a, 0x59, 0x35, 0x46, 0x48, 0x2f, 0x49, 0x66, 0x67, 0x49, 0x41, 0x73, 0x42, 0x64, 0x77, 0x56, 0x39, 0x5a, 0x76, 0x4b, 0x6b, 0x6c, 0x53, 0x41, 0x2b, 0x30, 0x4e, 0x33, 0x4a, 0x33, 0x48, 0x47, 0x32, 0x63, 0x39, 0x5c, 0x0a, 0x09, 0x41, 0x59, 0x41, 0x49, 0x65, 0x6e, 0x4d, 0x4f, 0x37, 0x79, 0x74, 0x4a, 0x55, 0x70, 0x50, 0x63, 0x54, 0x45, 0x37, 0x46, 0x48, 0x2f, 0x4a, 0x70, 0x41, 0x41, 0x43, 0x2b, 0x6b, 0x4e, 0x50, 0x37, 0x53, 0x70, 0x4c, 0x55, 0x46, 0x46, 0x2f, 0x4d, 0x38, 0x38, 0x33, 0x7a, 0x57, 0x41, 0x4b, 0x41, 0x61, 0x43, 0x77, 0x57, 0x41, 0x44, 0x76, 0x6e, 0x38, 0x65, 0x61, 0x53, 0x4a, 0x4e, 0x58, 0x63, 0x37, 0x34, 0x46, 0x64, 0x67, 0x48, 0x56, 0x35, 0x5c, 0x0a, 0x09, 0x48, 0x53, 0x43, 0x76, 0x43, 0x63, 0x41, 0x36, 0x34, 0x4e, 0x79, 0x63, 0x33, 0x6c, 0x75, 0x53, 0x70, 0x4c, 0x6f, 0x37, 0x6c, 0x78, 0x79, 0x4c, 0x50, 0x2b, 0x51, 0x33, 0x41, 0x59, 0x43, 0x34, 0x46, 0x66, 0x43, 0x2f, 0x67, 0x4b, 0x33, 0x7a, 0x4f, 0x6f, 0x41, 0x6b, 0x53, 0x54, 0x58, 0x30, 0x4f, 0x4c, 0x41, 0x44, 0x4f, 0x64, 0x7a, 0x37, 0x50, 0x31, 0x52, 0x65, 0x45, 0x77, 0x43, 0x49, 0x34, 0x4f, 0x66, 0x6e, 0x2b, 0x50, 0x36, 0x53, 0x5c, 0x0a, 0x09, 0x4a, 0x4e, 0x58, 0x52, 0x2b, 0x65, 0x52, 0x63, 0x2f, 0x43, 0x48, 0x66, 0x43, 0x51, 0x44, 0x41, 0x56, 0x47, 0x41, 0x68, 0x4d, 0x44, 0x50, 0x50, 0x67, 0x30, 0x69, 0x53, 0x56, 0x42, 0x4e, 0x4c, 0x67, 0x57, 0x33, 0x4a, 0x38, 0x4c, 0x47, 0x2f, 0x49, 0x38, 0x6c, 0x7a, 0x41, 0x67, 0x44, 0x78, 0x46, 0x38, 0x6a, 0x31, 0x4b, 0x6b, 0x5a, 0x4a, 0x6b, 0x6d, 0x72, 0x6b, 0x41, 0x67, 0x6f, 0x6f, 0x2f, 0x70, 0x44, 0x2f, 0x42, 0x41, 0x42, 0x67, 0x5c, 0x0a, 0x09, 0x42, 0x76, 0x43, 0x6e, 0x67, 0x52, 0x38, 0x6c, 0x53, 0x64, 0x4c, 0x77, 0x6c, 0x68, 0x46, 0x72, 0x2f, 0x38, 0x38, 0x57, 0x63, 0x62, 0x43, 0x38, 0x4a, 0x77, 0x41, 0x51, 0x34, 0x34, 0x77, 0x4c, 0x43, 0x6a, 0x69, 0x4f, 0x4a, 0x45, 0x6c, 0x56, 0x64, 0x67, 0x45, 0x46, 0x46, 0x58, 0x38, 0x6f, 0x5a, 0x67, 0x49, 0x41, 0x63, 0x51, 0x33, 0x41, 0x6e, 0x34, 0x44, 0x70, 0x52, 0x52, 0x78, 0x4d, 0x6b, 0x71, 0x53, 0x4b, 0x57, 0x55, 0x34, 0x38, 0x5c, 0x0a, 0x09, 0x39, 0x4b, 0x65, 0x77, 0x42, 0x71, 0x43, 0x49, 0x43, 0x51, 0x44, 0x45, 0x58, 0x2b, 0x68, 0x4c, 0x42, 0x52, 0x31, 0x4c, 0x6b, 0x71, 0x53, 0x71, 0x4b, 0x66, 0x54, 0x54, 0x50, 0x78, 0x51, 0x33, 0x41, 0x51, 0x44, 0x59, 0x6e, 0x4a, 0x67, 0x43, 0x54, 0x43, 0x76, 0x71, 0x67, 0x4a, 0x49, 0x6b, 0x56, 0x63, 0x42, 0x79, 0x59, 0x75, 0x33, 0x2f, 0x6d, 0x53, 0x49, 0x50, 0x57, 0x74, 0x51, 0x45, 0x41, 0x4f, 0x49, 0x76, 0x64, 0x6c, 0x36, 0x42, 0x5c, 0x0a, 0x09, 0x78, 0x35, 0x4d, 0x6b, 0x71, 0x51, 0x72, 0x4f, 0x6f, 0x2b, 0x44, 0x69, 0x44, 0x38, 0x56, 0x4f, 0x41, 0x41, 0x41, 0x32, 0x41, 0x78, 0x34, 0x43, 0x74, 0x69, 0x6a, 0x79, 0x6f, 0x4a, 0x49, 0x6b, 0x6c, 0x64, 0x52, 0x69, 0x59, 0x43, 0x36, 0x77, 0x6f, 0x75, 0x67, 0x44, 0x46, 0x7a, 0x6b, 0x42, 0x67, 0x50, 0x67, 0x4c, 0x6e, 0x6c, 0x50, 0x77, 0x4d, 0x53, 0x56, 0x4a, 0x4b, 0x71, 0x74, 0x7a, 0x53, 0x46, 0x44, 0x38, 0x6f, 0x66, 0x67, 0x4a, 0x5c, 0x0a, 0x09, 0x41, 0x4d, 0x41, 0x6b, 0x34, 0x69, 0x6c, 0x48, 0x32, 0x78, 0x64, 0x39, 0x59, 0x45, 0x6d, 0x53, 0x53, 0x75, 0x51, 0x52, 0x34, 0x4e, 0x58, 0x41, 0x6d, 0x68, 0x51, 0x48, 0x4c, 0x33, 0x6f, 0x43, 0x41, 0x50, 0x45, 0x58, 0x2f, 0x57, 0x53, 0x43, 0x34, 0x30, 0x71, 0x53, 0x56, 0x43, 0x61, 0x66, 0x4a, 0x46, 0x48, 0x78, 0x68, 0x7a, 0x51, 0x54, 0x41, 0x49, 0x44, 0x78, 0x77, 0x4e, 0x33, 0x41, 0x37, 0x69, 0x6b, 0x4f, 0x4c, 0x6b, 0x6c, 0x53, 0x5c, 0x0a, 0x09, 0x59, 0x76, 0x63, 0x42, 0x65, 0x77, 0x4a, 0x39, 0x71, 0x51, 0x4b, 0x6b, 0x6d, 0x41, 0x42, 0x41, 0x2f, 0x49, 0x58, 0x50, 0x53, 0x48, 0x52, 0x73, 0x53, 0x5a, 0x4a, 0x53, 0x4f, 0x35, 0x4f, 0x45, 0x78, 0x52, 0x2f, 0x53, 0x4e, 0x51, 0x41, 0x41, 0x31, 0x77, 0x48, 0x58, 0x4a, 0x6a, 0x79, 0x2b, 0x4a, 0x45, 0x6b, 0x70, 0x2f, 0x4a, 0x51, 0x53, 0x31, 0x4c, 0x39, 0x55, 0x53, 0x77, 0x43, 0x44, 0x64, 0x67, 0x56, 0x2b, 0x53, 0x79, 0x77, 0x4a, 0x5c, 0x0a, 0x09, 0x53, 0x4a, 0x4a, 0x55, 0x64, 0x33, 0x33, 0x41, 0x58, 0x73, 0x43, 0x39, 0x71, 0x59, 0x4f, 0x6b, 0x6e, 0x41, 0x41, 0x41, 0x4c, 0x41, 0x44, 0x2b, 0x62, 0x2b, 0x49, 0x4d, 0x6b, 0x69, 0x51, 0x56, 0x35, 0x64, 0x38, 0x70, 0x51, 0x66, 0x47, 0x48, 0x39, 0x42, 0x4d, 0x41, 0x67, 0x43, 0x32, 0x42, 0x50, 0x2b, 0x41, 0x57, 0x77, 0x5a, 0x4b, 0x6b, 0x65, 0x6c, 0x74, 0x4f, 0x33, 0x50, 0x62, 0x33, 0x52, 0x4f, 0x6f, 0x67, 0x6b, 0x48, 0x34, 0x43, 0x5c, 0x0a, 0x09, 0x41, 0x50, 0x41, 0x6b, 0x38, 0x4b, 0x6e, 0x55, 0x49, 0x53, 0x52, 0x4a, 0x79, 0x74, 0x6d, 0x6e, 0x4b, 0x45, 0x6e, 0x78, 0x68, 0x33, 0x4a, 0x4d, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x72, 0x38, 0x44, 0x64, 0x6b, 0x34, 0x64, 0x52, 0x4a, 0x4b, 0x6b, 0x48, 0x44, 0x77, 0x49, 0x37, 0x41, 0x47, 0x73, 0x54, 0x52, 0x31, 0x6b, 0x55, 0x42, 0x6b, 0x6d, 0x41, 0x42, 0x44, 0x2f, 0x51, 0x55, 0x35, 0x4e, 0x48, 0x55, 0x4b, 0x53, 0x70, 0x4a, 0x79, 0x63, 0x5c, 0x0a, 0x09, 0x52, 0x6f, 0x6d, 0x4b, 0x50, 0x35, 0x53, 0x6e, 0x41, 0x51, 0x43, 0x34, 0x48, 0x72, 0x67, 0x69, 0x64, 0x51, 0x68, 0x4a, 0x6b, 0x6a, 0x4a, 0x32, 0x4e, 0x58, 0x48, 0x72, 0x65, 0x36, 0x6d, 0x55, 0x5a, 0x51, 0x6c, 0x67, 0x30, 0x48, 0x62, 0x41, 0x41, 0x38, 0x44, 0x6b, 0x31, 0x45, 0x45, 0x6b, 0x53, 0x63, 0x72, 0x41, 0x61, 0x6d, 0x41, 0x65, 0x73, 0x44, 0x42, 0x31, 0x6b, 0x49, 0x32, 0x56, 0x61, 0x51, 0x49, 0x41, 0x38, 0x52, 0x2f, 0x49, 0x5c, 0x0a, 0x09, 0x43, 0x77, 0x49, 0x6c, 0x53, 0x58, 0x58, 0x78, 0x62, 0x35, 0x53, 0x77, 0x2b, 0x45, 0x50, 0x35, 0x4a, 0x67, 0x41, 0x51, 0x46, 0x77, 0x54, 0x2b, 0x42, 0x70, 0x38, 0x54, 0x49, 0x45, 0x6d, 0x71, 0x74, 0x6e, 0x75, 0x42, 0x31, 0x31, 0x4b, 0x79, 0x74, 0x66, 0x39, 0x42, 0x5a, 0x5a, 0x73, 0x41, 0x51, 0x50, 0x79, 0x48, 0x4f, 0x67, 0x6c, 0x59, 0x6c, 0x7a, 0x71, 0x49, 0x4a, 0x45, 0x6b, 0x64, 0x36, 0x69, 0x64, 0x71, 0x57, 0x53, 0x6d, 0x4c, 0x5c, 0x0a, 0x09, 0x50, 0x35, 0x53, 0x7a, 0x41, 0x51, 0x44, 0x34, 0x4a, 0x58, 0x42, 0x52, 0x36, 0x68, 0x43, 0x53, 0x4a, 0x48, 0x58, 0x6f, 0x47, 0x30, 0x51, 0x74, 0x4b, 0x36, 0x30, 0x79, 0x4c, 0x67, 0x45, 0x4d, 0x6d, 0x6b, 0x46, 0x63, 0x45, 0x4c, 0x68, 0x56, 0x36, 0x69, 0x43, 0x53, 0x4a, 0x4c, 0x58, 0x68, 0x53, 0x57, 0x4a, 0x66, 0x6d, 0x36, 0x57, 0x70, 0x67, 0x34, 0x79, 0x6d, 0x72, 0x42, 0x4d, 0x41, 0x69, 0x50, 0x39, 0x77, 0x48, 0x30, 0x6b, 0x64, 0x5c, 0x0a, 0x09, 0x51, 0x70, 0x4b, 0x6b, 0x4e, 0x70, 0x31, 0x43, 0x79, 0x59, 0x73, 0x2f, 0x6c, 0x4c, 0x73, 0x42, 0x41, 0x4c, 0x68, 0x79, 0x34, 0x43, 0x56, 0x4a, 0x55, 0x68, 0x56, 0x55, 0x70, 0x6d, 0x36, 0x56, 0x65, 0x51, 0x6c, 0x67, 0x30, 0x42, 0x62, 0x45, 0x55, 0x77, 0x4e, 0x6e, 0x70, 0x51, 0x34, 0x69, 0x53, 0x64, 0x49, 0x6f, 0x6e, 0x69, 0x48, 0x75, 0x2b, 0x56, 0x2b, 0x63, 0x4f, 0x6b, 0x67, 0x72, 0x79, 0x6a, 0x34, 0x42, 0x67, 0x50, 0x67, 0x50, 0x5c, 0x0a, 0x09, 0x65, 0x58, 0x72, 0x71, 0x45, 0x4a, 0x49, 0x6b, 0x6a, 0x65, 0x45, 0x30, 0x4b, 0x6c, 0x4c, 0x38, 0x6f, 0x52, 0x6f, 0x54, 0x67, 0x45, 0x48, 0x58, 0x41, 0x50, 0x4e, 0x54, 0x68, 0x35, 0x41, 0x6b, 0x61, 0x52, 0x67, 0x2f, 0x42, 0x41, 0x35, 0x50, 0x48, 0x61, 0x49, 0x64, 0x56, 0x57, 0x6f, 0x41, 0x35, 0x67, 0x44, 0x33, 0x41, 0x5a, 0x75, 0x6e, 0x44, 0x69, 0x4a, 0x4a, 0x30, 0x68, 0x44, 0x50, 0x41, 0x4c, 0x73, 0x42, 0x69, 0x31, 0x49, 0x48, 0x5c, 0x0a, 0x09, 0x61, 0x55, 0x63, 0x56, 0x6c, 0x67, 0x41, 0x47, 0x4c, 0x53, 0x49, 0x32, 0x56, 0x5a, 0x41, 0x6b, 0x71, 0x55, 0x78, 0x4f, 0x6f, 0x6d, 0x4c, 0x46, 0x48, 0x36, 0x72, 0x56, 0x41, 0x45, 0x41, 0x38, 0x4c, 0x66, 0x42, 0x62, 0x71, 0x55, 0x4e, 0x49, 0x6b, 0x6a, 0x54, 0x67, 0x55, 0x69, 0x72, 0x36, 0x4a, 0x4e, 0x73, 0x71, 0x4c, 0x51, 0x45, 0x4d, 0x6d, 0x67, 0x48, 0x38, 0x6c, 0x6e, 0x68, 0x79, 0x6f, 0x43, 0x52, 0x4a, 0x71, 0x66, 0x77, 0x46, 0x5c, 0x0a, 0x09, 0x32, 0x49, 0x4d, 0x4b, 0x33, 0x50, 0x4d, 0x2f, 0x6e, 0x4b, 0x70, 0x4e, 0x41, 0x43, 0x44, 0x2b, 0x51, 0x33, 0x2b, 0x51, 0x32, 0x47, 0x64, 0x5a, 0x6b, 0x71, 0x51, 0x55, 0x2b, 0x6f, 0x6c, 0x61, 0x56, 0x4d, 0x6e, 0x69, 0x44, 0x39, 0x56, 0x73, 0x41, 0x41, 0x42, 0x75, 0x41, 0x73, 0x35, 0x4c, 0x48, 0x55, 0x4b, 0x53, 0x31, 0x46, 0x69, 0x66, 0x42, 0x32, 0x35, 0x4d, 0x48, 0x61, 0x49, 0x62, 0x56, 0x56, 0x77, 0x43, 0x47, 0x4e, 0x51, 0x4c, 0x5c, 0x0a, 0x09, 0x33, 0x41, 0x62, 0x73, 0x6b, 0x7a, 0x71, 0x49, 0x4a, 0x4b, 0x6c, 0x52, 0x37, 0x67, 0x51, 0x4f, 0x42, 0x4a, 0x35, 0x50, 0x48, 0x61, 0x51, 0x62, 0x56, 0x57, 0x34, 0x41, 0x41, 0x4f, 0x59, 0x43, 0x64, 0x77, 0x47, 0x62, 0x70, 0x51, 0x34, 0x69, 0x53, 0x57, 0x71, 0x45, 0x46, 0x63, 0x44, 0x65, 0x77, 0x45, 0x4f, 0x70, 0x67, 0x33, 0x53, 0x72, 0x71, 0x6b, 0x73, 0x41, 0x67, 0x78, 0x34, 0x43, 0x54, 0x6b, 0x34, 0x64, 0x51, 0x70, 0x4c, 0x55, 0x5c, 0x0a, 0x09, 0x47, 0x43, 0x64, 0x54, 0x67, 0x2b, 0x49, 0x50, 0x31, 0x57, 0x38, 0x41, 0x41, 0x43, 0x34, 0x44, 0x4c, 0x6b, 0x6b, 0x64, 0x51, 0x70, 0x4a, 0x55, 0x65, 0x39, 0x38, 0x69, 0x61, 0x6b, 0x34, 0x74, 0x56, 0x48, 0x30, 0x4a, 0x59, 0x4e, 0x42, 0x55, 0x34, 0x41, 0x37, 0x69, 0x49, 0x51, 0x79, 0x53, 0x4a, 0x47, 0x58, 0x74, 0x51, 0x57, 0x42, 0x66, 0x59, 0x47, 0x58, 0x71, 0x49, 0x46, 0x6d, 0x70, 0x77, 0x77, 0x51, 0x41, 0x34, 0x6e, 0x2b, 0x51, 0x5c, 0x0a, 0x09, 0x6f, 0x34, 0x42, 0x56, 0x71, 0x59, 0x4e, 0x49, 0x6b, 0x6d, 0x70, 0x6e, 0x46, 0x58, 0x41, 0x6b, 0x4e, 0x53, 0x72, 0x2b, 0x55, 0x4a, 0x38, 0x47, 0x41, 0x4f, 0x42, 0x2b, 0x34, 0x4d, 0x54, 0x55, 0x49, 0x53, 0x52, 0x4a, 0x74, 0x66, 0x4d, 0x68, 0x6f, 0x73, 0x62, 0x55, 0x53, 0x70, 0x30, 0x61, 0x41, 0x49, 0x44, 0x4c, 0x67, 0x61, 0x2b, 0x6d, 0x44, 0x69, 0x46, 0x4a, 0x71, 0x6f, 0x30, 0x4c, 0x71, 0x64, 0x47, 0x36, 0x2f, 0x31, 0x42, 0x31, 0x5c, 0x0a, 0x09, 0x75, 0x51, 0x5a, 0x67, 0x4b, 0x50, 0x63, 0x48, 0x6b, 0x43, 0x52, 0x6c, 0x6f, 0x52, 0x62, 0x33, 0x2b, 0x34, 0x2b, 0x6b, 0x6a, 0x67, 0x30, 0x41, 0x78, 0x48, 0x4d, 0x43, 0x37, 0x67, 0x52, 0x6d, 0x70, 0x77, 0x34, 0x69, 0x53, 0x61, 0x71, 0x6b, 0x4a, 0x63, 0x51, 0x48, 0x79, 0x59, 0x57, 0x70, 0x67, 0x2b, 0x53, 0x6c, 0x62, 0x6b, 0x73, 0x41, 0x67, 0x78, 0x59, 0x43, 0x52, 0x77, 0x4e, 0x72, 0x55, 0x77, 0x65, 0x52, 0x4a, 0x46, 0x58, 0x4f, 0x5c, 0x0a, 0x09, 0x57, 0x75, 0x44, 0x64, 0x31, 0x4c, 0x6a, 0x34, 0x51, 0x33, 0x30, 0x62, 0x41, 0x49, 0x42, 0x62, 0x67, 0x49, 0x2b, 0x6e, 0x44, 0x69, 0x46, 0x4a, 0x71, 0x70, 0x77, 0x7a, 0x67, 0x4a, 0x74, 0x54, 0x68, 0x38, 0x68, 0x62, 0x58, 0x5a, 0x63, 0x41, 0x68, 0x76, 0x70, 0x33, 0x34, 0x50, 0x6a, 0x55, 0x49, 0x53, 0x52, 0x4a, 0x6c, 0x58, 0x41, 0x78, 0x63, 0x45, 0x4c, 0x71, 0x45, 0x45, 0x56, 0x6f, 0x51, 0x67, 0x50, 0x51, 0x43, 0x39, 0x77, 0x4b, 0x5c, 0x0a, 0x09, 0x37, 0x4a, 0x38, 0x36, 0x69, 0x43, 0x53, 0x70, 0x31, 0x47, 0x34, 0x48, 0x33, 0x6b, 0x52, 0x4e, 0x4c, 0x2f, 0x72, 0x62, 0x57, 0x42, 0x4d, 0x61, 0x41, 0x49, 0x41, 0x35, 0x78, 0x45, 0x36, 0x42, 0x32, 0x36, 0x51, 0x4f, 0x49, 0x6b, 0x6b, 0x71, 0x70, 0x55, 0x65, 0x4a, 0x44, 0x34, 0x71, 0x50, 0x70, 0x77, 0x35, 0x53, 0x6c, 0x44, 0x70, 0x66, 0x41, 0x7a, 0x44, 0x55, 0x49, 0x75, 0x44, 0x76, 0x71, 0x4e, 0x6b, 0x75, 0x54, 0x70, 0x4b, 0x6b, 0x5c, 0x0a, 0x09, 0x54, 0x4b, 0x77, 0x69, 0x61, 0x6b, 0x52, 0x6a, 0x69, 0x6a, 0x38, 0x30, 0x70, 0x77, 0x45, 0x41, 0x75, 0x42, 0x63, 0x34, 0x46, 0x75, 0x68, 0x4c, 0x48, 0x55, 0x53, 0x53, 0x56, 0x42, 0x70, 0x39, 0x77, 0x44, 0x46, 0x45, 0x6a, 0x57, 0x69, 0x55, 0x4a, 0x6a, 0x55, 0x41, 0x41, 0x4e, 0x63, 0x41, 0x2f, 0x7a, 0x4e, 0x31, 0x43, 0x45, 0x6c, 0x53, 0x61, 0x66, 0x77, 0x54, 0x55, 0x52, 0x73, 0x61, 0x70, 0x79, 0x6e, 0x58, 0x41, 0x47, 0x7a, 0x73, 0x5c, 0x0a, 0x09, 0x71, 0x38, 0x51, 0x7a, 0x6e, 0x53, 0x56, 0x4a, 0x7a, 0x58, 0x55, 0x68, 0x38, 0x4f, 0x48, 0x55, 0x49, 0x56, 0x4a, 0x70, 0x61, 0x67, 0x4d, 0x77, 0x48, 0x72, 0x67, 0x61, 0x4f, 0x44, 0x78, 0x31, 0x45, 0x45, 0x6c, 0x53, 0x45, 0x74, 0x63, 0x41, 0x52, 0x39, 0x44, 0x67, 0x5a, 0x65, 0x47, 0x6d, 0x4e, 0x67, 0x41, 0x41, 0x6b, 0x34, 0x45, 0x62, 0x38, 0x66, 0x5a, 0x41, 0x53, 0x57, 0x71, 0x61, 0x32, 0x34, 0x47, 0x44, 0x67, 0x64, 0x57, 0x70, 0x5c, 0x0a, 0x09, 0x67, 0x36, 0x54, 0x55, 0x35, 0x41, 0x59, 0x41, 0x34, 0x6c, 0x6b, 0x42, 0x76, 0x77, 0x54, 0x6d, 0x70, 0x67, 0x34, 0x69, 0x53, 0x53, 0x72, 0x45, 0x51, 0x38, 0x41, 0x42, 0x78, 0x46, 0x37, 0x2f, 0x6a, 0x64, 0x61, 0x30, 0x69, 0x77, 0x41, 0x33, 0x74, 0x67, 0x52, 0x34, 0x47, 0x2f, 0x34, 0x66, 0x51, 0x5a, 0x4b, 0x61, 0x77, 0x48, 0x50, 0x2b, 0x45, 0x45, 0x31, 0x76, 0x41, 0x43, 0x43, 0x36, 0x77, 0x58, 0x63, 0x41, 0x79, 0x31, 0x49, 0x48, 0x5c, 0x0a, 0x09, 0x6b, 0x53, 0x54, 0x6c, 0x5a, 0x68, 0x6b, 0x77, 0x6e, 0x7a, 0x6a, 0x6e, 0x43, 0x78, 0x75, 0x41, 0x51, 0x58, 0x63, 0x51, 0x46, 0x34, 0x4d, 0x38, 0x6c, 0x7a, 0x71, 0x49, 0x4a, 0x43, 0x6c, 0x7a, 0x66, 0x79, 0x58, 0x4f, 0x38, 0x62, 0x65, 0x6e, 0x44, 0x6c, 0x49, 0x6d, 0x4e, 0x67, 0x44, 0x72, 0x33, 0x51, 0x69, 0x38, 0x68, 0x77, 0x5a, 0x66, 0x45, 0x53, 0x70, 0x4a, 0x4e, 0x64, 0x51, 0x48, 0x2f, 0x44, 0x31, 0x78, 0x6a, 0x74, 0x63, 0x51, 0x5c, 0x0a, 0x09, 0x4e, 0x67, 0x41, 0x62, 0x75, 0x67, 0x62, 0x34, 0x41, 0x4e, 0x44, 0x6f, 0x4b, 0x79, 0x4d, 0x6c, 0x71, 0x53, 0x62, 0x36, 0x69, 0x58, 0x4e, 0x36, 0x49, 0x7a, 0x66, 0x36, 0x47, 0x59, 0x73, 0x4e, 0x77, 0x4b, 0x59, 0x75, 0x41, 0x30, 0x35, 0x4e, 0x48, 0x55, 0x4b, 0x53, 0x31, 0x4c, 0x56, 0x54, 0x69, 0x58, 0x4f, 0x36, 0x68, 0x6d, 0x45, 0x44, 0x4d, 0x4c, 0x77, 0x76, 0x41, 0x32, 0x65, 0x6d, 0x44, 0x69, 0x46, 0x4a, 0x36, 0x74, 0x69, 0x5a, 0x5c, 0x0a, 0x09, 0x78, 0x4c, 0x6c, 0x63, 0x49, 0x37, 0x41, 0x42, 0x47, 0x4e, 0x6e, 0x6e, 0x67, 0x45, 0x2b, 0x6b, 0x44, 0x69, 0x46, 0x4a, 0x61, 0x74, 0x75, 0x2f, 0x45, 0x4f, 0x64, 0x77, 0x6a, 0x63, 0x49, 0x47, 0x59, 0x48, 0x54, 0x6e, 0x41, 0x47, 0x65, 0x6e, 0x44, 0x69, 0x46, 0x4a, 0x61, 0x74, 0x6e, 0x5a, 0x77, 0x4b, 0x64, 0x54, 0x68, 0x36, 0x69, 0x43, 0x70, 0x75, 0x38, 0x45, 0x32, 0x4b, 0x70, 0x50, 0x41, 0x32, 0x65, 0x6c, 0x44, 0x69, 0x46, 0x4a, 0x5c, 0x0a, 0x09, 0x47, 0x74, 0x56, 0x6e, 0x38, 0x46, 0x7a, 0x64, 0x4d, 0x69, 0x63, 0x41, 0x72, 0x66, 0x6b, 0x45, 0x38, 0x58, 0x38, 0x73, 0x53, 0x56, 0x49, 0x35, 0x57, 0x66, 0x7a, 0x62, 0x5a, 0x41, 0x50, 0x51, 0x75, 0x72, 0x4e, 0x77, 0x4f, 0x55, 0x43, 0x53, 0x79, 0x75, 0x68, 0x54, 0x57, 0x50, 0x7a, 0x62, 0x35, 0x68, 0x4a, 0x41, 0x2b, 0x2f, 0x36, 0x5a, 0x75, 0x44, 0x5a, 0x41, 0x6b, 0x70, 0x54, 0x65, 0x4a, 0x2f, 0x43, 0x63, 0x33, 0x42, 0x45, 0x62, 0x5c, 0x0a, 0x09, 0x67, 0x4d, 0x36, 0x63, 0x43, 0x58, 0x77, 0x32, 0x64, 0x51, 0x68, 0x4a, 0x61, 0x72, 0x68, 0x2f, 0x42, 0x4d, 0x35, 0x4e, 0x48, 0x61, 0x4b, 0x71, 0x62, 0x41, 0x41, 0x36, 0x64, 0x77, 0x70, 0x77, 0x41, 0x54, 0x41, 0x75, 0x64, 0x52, 0x42, 0x4a, 0x61, 0x70, 0x68, 0x2b, 0x59, 0x70, 0x4d, 0x66, 0x37, 0x2f, 0x50, 0x76, 0x67, 0x67, 0x31, 0x41, 0x64, 0x34, 0x34, 0x44, 0x4c, 0x67, 0x59, 0x6d, 0x70, 0x41, 0x34, 0x69, 0x53, 0x51, 0x33, 0x78, 0x5c, 0x0a, 0x09, 0x41, 0x6e, 0x41, 0x38, 0x63, 0x47, 0x6e, 0x71, 0x49, 0x46, 0x56, 0x6e, 0x41, 0x39, 0x43, 0x39, 0x77, 0x34, 0x48, 0x76, 0x41, 0x43, 0x39, 0x4a, 0x48, 0x55, 0x53, 0x53, 0x61, 0x75, 0x36, 0x76, 0x78, 0x49, 0x4e, 0x39, 0x33, 0x4e, 0x73, 0x2f, 0x41, 0x7a, 0x59, 0x41, 0x32, 0x58, 0x67, 0x7a, 0x38, 0x58, 0x2f, 0x49, 0x7a, 0x52, 0x4c, 0x6e, 0x6b, 0x4b, 0x53, 0x36, 0x57, 0x6b, 0x46, 0x38, 0x34, 0x4c, 0x6f, 0x35, 0x63, 0x59, 0x37, 0x61, 0x5c, 0x0a, 0x09, 0x73, 0x41, 0x48, 0x49, 0x7a, 0x6a, 0x37, 0x41, 0x6a, 0x34, 0x45, 0x74, 0x55, 0x67, 0x65, 0x52, 0x70, 0x4a, 0x70, 0x5a, 0x41, 0x76, 0x77, 0x64, 0x63, 0x47, 0x66, 0x71, 0x49, 0x48, 0x56, 0x69, 0x41, 0x35, 0x43, 0x74, 0x75, 0x63, 0x42, 0x50, 0x42, 0x6e, 0x36, 0x55, 0x4a, 0x48, 0x58, 0x76, 0x49, 0x65, 0x42, 0x74, 0x41, 0x7a, 0x38, 0x71, 0x51, 0x32, 0x34, 0x45, 0x6c, 0x4b, 0x32, 0x48, 0x67, 0x41, 0x4f, 0x41, 0x4f, 0x31, 0x49, 0x48, 0x5c, 0x0a, 0x09, 0x6b, 0x61, 0x51, 0x61, 0x75, 0x41, 0x4d, 0x34, 0x45, 0x49, 0x74, 0x2f, 0x4c, 0x6d, 0x77, 0x41, 0x73, 0x72, 0x63, 0x45, 0x4f, 0x42, 0x6a, 0x34, 0x55, 0x65, 0x6f, 0x67, 0x6b, 0x6c, 0x52, 0x68, 0x50, 0x38, 0x4c, 0x4d, 0x37, 0x4a, 0x45, 0x41, 0x41, 0x41, 0x61, 0x70, 0x53, 0x55, 0x52, 0x42, 0x56, 0x43, 0x62, 0x4f, 0x70, 0x59, 0x74, 0x54, 0x42, 0x36, 0x6b, 0x72, 0x47, 0x34, 0x42, 0x38, 0x72, 0x41, 0x4c, 0x65, 0x42, 0x56, 0x79, 0x55, 0x5c, 0x0a, 0x09, 0x4f, 0x6f, 0x67, 0x6b, 0x56, 0x64, 0x42, 0x46, 0x77, 0x44, 0x75, 0x4a, 0x63, 0x36, 0x6c, 0x79, 0x59, 0x67, 0x4f, 0x51, 0x6e, 0x7a, 0x37, 0x67, 0x52, 0x4f, 0x43, 0x4d, 0x67, 0x5a, 0x39, 0x4c, 0x6b, 0x6b, 0x62, 0x58, 0x52, 0x2b, 0x79, 0x30, 0x65, 0x69, 0x4b, 0x65, 0x4e, 0x33, 0x50, 0x6e, 0x52, 0x59, 0x44, 0x46, 0x6d, 0x41, 0x39, 0x63, 0x44, 0x6b, 0x78, 0x4e, 0x48, 0x55, 0x53, 0x53, 0x53, 0x6d, 0x6f, 0x6c, 0x63, 0x41, 0x7a, 0x77, 0x5c, 0x0a, 0x09, 0x77, 0x39, 0x52, 0x42, 0x6d, 0x73, 0x49, 0x47, 0x6f, 0x44, 0x68, 0x37, 0x45, 0x76, 0x2f, 0x48, 0x33, 0x69, 0x5a, 0x31, 0x45, 0x45, 0x6b, 0x71, 0x6d, 0x55, 0x65, 0x4a, 0x44, 0x30, 0x72, 0x33, 0x70, 0x41, 0x37, 0x53, 0x4a, 0x43, 0x34, 0x42, 0x46, 0x4f, 0x63, 0x65, 0x59, 0x46, 0x2f, 0x67, 0x39, 0x74, 0x52, 0x42, 0x4a, 0x4b, 0x6c, 0x45, 0x62, 0x67, 0x66, 0x32, 0x77, 0x2b, 0x4a, 0x66, 0x4f, 0x42, 0x75, 0x41, 0x59, 0x6a, 0x31, 0x42, 0x5c, 0x0a, 0x09, 0x37, 0x42, 0x70, 0x34, 0x63, 0x65, 0x49, 0x63, 0x6b, 0x6c, 0x51, 0x47, 0x33, 0x79, 0x54, 0x4f, 0x69, 0x59, 0x76, 0x53, 0x78, 0x6d, 0x67, 0x6d, 0x47, 0x34, 0x44, 0x69, 0x2f, 0x52, 0x55, 0x34, 0x67, 0x58, 0x69, 0x53, 0x31, 0x51, 0x75, 0x4a, 0x73, 0x30, 0x68, 0x53, 0x43, 0x69, 0x38, 0x51, 0x35, 0x38, 0x44, 0x6a, 0x69, 0x58, 0x4f, 0x69, 0x45, 0x76, 0x41, 0x61, 0x67, 0x4c, 0x54, 0x65, 0x44, 0x48, 0x77, 0x58, 0x6d, 0x4a, 0x30, 0x34, 0x5c, 0x0a, 0x09, 0x68, 0x79, 0x51, 0x56, 0x5a, 0x51, 0x6e, 0x78, 0x51, 0x4a, 0x2b, 0x62, 0x55, 0x67, 0x64, 0x70, 0x4f, 0x68, 0x75, 0x41, 0x39, 0x4c, 0x59, 0x48, 0x72, 0x69, 0x53, 0x65, 0x4a, 0x53, 0x42, 0x4a, 0x64, 0x58, 0x59, 0x6e, 0x63, 0x42, 0x54, 0x77, 0x53, 0x4f, 0x6f, 0x67, 0x63, 0x67, 0x6d, 0x67, 0x44, 0x42, 0x34, 0x42, 0x33, 0x67, 0x42, 0x38, 0x4c, 0x58, 0x55, 0x51, 0x53, 0x63, 0x72, 0x52, 0x31, 0x34, 0x6c, 0x7a, 0x6e, 0x63, 0x57, 0x2f, 0x5c, 0x0a, 0x09, 0x4a, 0x4a, 0x77, 0x41, 0x6c, 0x4d, 0x75, 0x78, 0x52, 0x43, 0x50, 0x67, 0x66, 0x67, 0x47, 0x53, 0x36, 0x6d, 0x49, 0x6c, 0x63, 0x42, 0x4a, 0x77, 0x57, 0x65, 0x6f, 0x67, 0x32, 0x70, 0x41, 0x4e, 0x51, 0x50, 0x6e, 0x73, 0x53, 0x69, 0x77, 0x4a, 0x37, 0x4a, 0x77, 0x36, 0x69, 0x43, 0x52, 0x31, 0x36, 0x55, 0x48, 0x67, 0x61, 0x4f, 0x43, 0x2b, 0x31, 0x45, 0x47, 0x30, 0x4b, 0x5a, 0x63, 0x41, 0x79, 0x6d, 0x63, 0x42, 0x73, 0x56, 0x2f, 0x41, 0x5c, 0x0a, 0x09, 0x4a, 0x61, 0x6d, 0x44, 0x53, 0x46, 0x49, 0x58, 0x4c, 0x69, 0x48, 0x4f, 0x5a, 0x52, 0x62, 0x2f, 0x6b, 0x72, 0x49, 0x42, 0x4b, 0x4b, 0x65, 0x56, 0x77, 0x41, 0x65, 0x41, 0x39, 0x77, 0x48, 0x4c, 0x45, 0x32, 0x65, 0x52, 0x70, 0x48, 0x61, 0x73, 0x41, 0x4e, 0x35, 0x50, 0x6e, 0x4d, 0x4e, 0x57, 0x4a, 0x73, 0x36, 0x69, 0x55, 0x62, 0x67, 0x45, 0x55, 0x48, 0x36, 0x76, 0x4a, 0x4a, 0x34, 0x6a, 0x34, 0x46, 0x30, 0x43, 0x6b, 0x73, 0x72, 0x75, 0x5c, 0x0a, 0x09, 0x54, 0x6d, 0x49, 0x2f, 0x2f, 0x7a, 0x2b, 0x6d, 0x44, 0x71, 0x4b, 0x78, 0x4f, 0x51, 0x45, 0x6f, 0x76, 0x7a, 0x38, 0x43, 0x42, 0x77, 0x4c, 0x6e, 0x41, 0x58, 0x5a, 0x72, 0x6b, 0x73, 0x71, 0x6f, 0x6e, 0x7a, 0x68, 0x48, 0x48, 0x59, 0x6a, 0x46, 0x76, 0x7a, 0x4b, 0x63, 0x41, 0x46, 0x54, 0x4c, 0x77, 0x63, 0x54, 0x57, 0x6d, 0x64, 0x73, 0x6d, 0x7a, 0x69, 0x46, 0x4a, 0x67, 0x2f, 0x35, 0x43, 0x37, 0x4f, 0x6a, 0x33, 0x73, 0x39, 0x52, 0x42, 0x5c, 0x0a, 0x09, 0x31, 0x42, 0x34, 0x6e, 0x41, 0x4e, 0x56, 0x79, 0x49, 0x37, 0x41, 0x37, 0x63, 0x47, 0x6e, 0x71, 0x49, 0x4a, 0x4a, 0x45, 0x33, 0x4e, 0x71, 0x33, 0x42, 0x78, 0x62, 0x2f, 0x53, 0x6e, 0x49, 0x43, 0x55, 0x46, 0x31, 0x48, 0x41, 0x78, 0x63, 0x43, 0x4c, 0x30, 0x73, 0x64, 0x52, 0x46, 0x4c, 0x6a, 0x50, 0x45, 0x50, 0x63, 0x32, 0x33, 0x39, 0x46, 0x36, 0x69, 0x44, 0x71, 0x6e, 0x41, 0x31, 0x41, 0x74, 0x63, 0x30, 0x68, 0x64, 0x74, 0x65, 0x61, 0x5c, 0x0a, 0x09, 0x6e, 0x7a, 0x71, 0x49, 0x70, 0x4d, 0x62, 0x34, 0x49, 0x66, 0x41, 0x68, 0x66, 0x49, 0x4a, 0x66, 0x35, 0x62, 0x6b, 0x45, 0x55, 0x47, 0x32, 0x4c, 0x67, 0x4d, 0x4f, 0x4a, 0x48, 0x51, 0x53, 0x66, 0x54, 0x70, 0x78, 0x46, 0x55, 0x72, 0x30, 0x39, 0x54, 0x5a, 0x78, 0x72, 0x44, 0x73, 0x66, 0x69, 0x58, 0x77, 0x74, 0x4f, 0x41, 0x4f, 0x70, 0x6a, 0x43, 0x2b, 0x44, 0x4c, 0x78, 0x4e, 0x4b, 0x41, 0x4a, 0x47, 0x58, 0x70, 0x53, 0x75, 0x41, 0x55, 0x5c, 0x0a, 0x09, 0x34, 0x4d, 0x6e, 0x55, 0x51, 0x5a, 0x51, 0x64, 0x4a, 0x77, 0x44, 0x31, 0x73, 0x52, 0x68, 0x34, 0x4e, 0x2f, 0x47, 0x6b, 0x72, 0x53, 0x63, 0x53, 0x5a, 0x35, 0x46, 0x55, 0x44, 0x30, 0x38, 0x51, 0x35, 0x35, 0x53, 0x6a, 0x73, 0x66, 0x6a, 0x58, 0x6a, 0x67, 0x31, 0x41, 0x2f, 0x56, 0x77, 0x46, 0x7a, 0x43, 0x4d, 0x65, 0x4b, 0x72, 0x51, 0x75, 0x63, 0x52, 0x5a, 0x4a, 0x31, 0x62, 0x53, 0x4f, 0x75, 0x4c, 0x35, 0x6f, 0x48, 0x6e, 0x46, 0x4f, 0x5c, 0x0a, 0x09, 0x55, 0x51, 0x32, 0x35, 0x42, 0x46, 0x42, 0x76, 0x72, 0x79, 0x66, 0x2b, 0x45, 0x65, 0x2b, 0x65, 0x4f, 0x6f, 0x69, 0x6b, 0x79, 0x72, 0x67, 0x58, 0x4f, 0x42, 0x6d, 0x34, 0x4c, 0x58, 0x55, 0x51, 0x35, 0x63, 0x73, 0x4a, 0x51, 0x4c, 0x33, 0x39, 0x4a, 0x37, 0x41, 0x33, 0x38, 0x45, 0x2f, 0x41, 0x36, 0x73, 0x52, 0x5a, 0x4a, 0x4a, 0x58, 0x62, 0x63, 0x38, 0x53, 0x35, 0x34, 0x72, 0x56, 0x59, 0x2f, 0x42, 0x76, 0x42, 0x43, 0x55, 0x42, 0x7a, 0x5c, 0x0a, 0x09, 0x62, 0x41, 0x65, 0x63, 0x44, 0x78, 0x79, 0x52, 0x4f, 0x6f, 0x69, 0x6b, 0x30, 0x76, 0x6b, 0x65, 0x38, 0x46, 0x46, 0x67, 0x59, 0x65, 0x6f, 0x67, 0x4b, 0x6f, 0x34, 0x4e, 0x51, 0x50, 0x50, 0x38, 0x4c, 0x66, 0x42, 0x46, 0x59, 0x4a, 0x66, 0x55, 0x51, 0x53, 0x51, 0x6c, 0x64, 0x7a, 0x39, 0x52, 0x2b, 0x4b, 0x39, 0x50, 0x48, 0x55, 0x54, 0x46, 0x63, 0x77, 0x6d, 0x67, 0x65, 0x57, 0x34, 0x41, 0x58, 0x67, 0x4f, 0x63, 0x41, 0x53, 0x78, 0x4c, 0x5c, 0x0a, 0x09, 0x6e, 0x45, 0x56, 0x53, 0x47, 0x73, 0x75, 0x4a, 0x63, 0x38, 0x42, 0x65, 0x57, 0x50, 0x77, 0x62, 0x79, 0x77, 0x6c, 0x41, 0x73, 0x38, 0x30, 0x42, 0x7a, 0x69, 0x59, 0x65, 0x35, 0x44, 0x45, 0x68, 0x63, 0x52, 0x5a, 0x4a, 0x2b, 0x58, 0x73, 0x42, 0x75, 0x41, 0x54, 0x34, 0x46, 0x39, 0x7a, 0x4d, 0x70, 0x2f, 0x46, 0x73, 0x41, 0x41, 0x53, 0x78, 0x48, 0x48, 0x41, 0x65, 0x63, 0x46, 0x6a, 0x71, 0x49, 0x4a, 0x4a, 0x79, 0x63, 0x79, 0x33, 0x77, 0x5c, 0x0a, 0x09, 0x63, 0x57, 0x4c, 0x73, 0x4c, 0x37, 0x6b, 0x45, 0x49, 0x43, 0x42, 0x4f, 0x43, 0x47, 0x38, 0x62, 0x65, 0x4e, 0x32, 0x58, 0x4f, 0x49, 0x75, 0x6b, 0x62, 0x41, 0x33, 0x39, 0x39, 0x32, 0x33, 0x78, 0x31, 0x34, 0x74, 0x73, 0x41, 0x44, 0x54, 0x55, 0x74, 0x63, 0x54, 0x31, 0x41, 0x63, 0x66, 0x6a, 0x31, 0x63, 0x42, 0x53, 0x31, 0x53, 0x30, 0x6b, 0x2f, 0x69, 0x32, 0x2f, 0x68, 0x76, 0x69, 0x33, 0x4c, 0x57, 0x33, 0x41, 0x4a, 0x51, 0x43, 0x4e, 0x5c, 0x0a, 0x09, 0x70, 0x4a, 0x64, 0x34, 0x33, 0x4f, 0x63, 0x6e, 0x69, 0x4f, 0x63, 0x4d, 0x53, 0x4b, 0x71, 0x47, 0x4a, 0x63, 0x43, 0x6e, 0x69, 0x63, 0x65, 0x46, 0x50, 0x35, 0x38, 0x34, 0x69, 0x30, 0x72, 0x4d, 0x42, 0x6b, 0x42, 0x6a, 0x6d, 0x51, 0x71, 0x63, 0x54, 0x71, 0x77, 0x64, 0x54, 0x6b, 0x2b, 0x63, 0x52, 0x64, 0x4c, 0x49, 0x6c, 0x68, 0x48, 0x58, 0x38, 0x70, 0x77, 0x50, 0x72, 0x45, 0x79, 0x63, 0x52, 0x52, 0x56, 0x67, 0x41, 0x36, 0x42, 0x57, 0x5c, 0x0a, 0x09, 0x62, 0x55, 0x37, 0x63, 0x4c, 0x33, 0x77, 0x61, 0x4d, 0x43, 0x31, 0x78, 0x46, 0x6b, 0x6e, 0x72, 0x72, 0x51, 0x41, 0x75, 0x41, 0x44, 0x34, 0x50, 0x50, 0x4a, 0x4d, 0x34, 0x69, 0x79, 0x72, 0x45, 0x42, 0x6b, 0x44, 0x74, 0x6d, 0x73, 0x6e, 0x36, 0x52, 0x73, 0x43, 0x4a, 0x67, 0x4a, 0x54, 0x4f, 0x63, 0x75, 0x49, 0x52, 0x34, 0x4a, 0x38, 0x48, 0x6e, 0x6b, 0x36, 0x63, 0x52, 0x52, 0x56, 0x6b, 0x41, 0x36, 0x42, 0x4f, 0x7a, 0x53, 0x43, 0x61, 0x5c, 0x0a, 0x09, 0x67, 0x4e, 0x4f, 0x49, 0x70, 0x6b, 0x42, 0x53, 0x4d, 0x5a, 0x34, 0x46, 0x76, 0x6b, 0x54, 0x73, 0x36, 0x4f, 0x6b, 0x6e, 0x66, 0x6e, 0x58, 0x4d, 0x42, 0x6b, 0x44, 0x64, 0x32, 0x67, 0x77, 0x34, 0x6b, 0x62, 0x68, 0x4f, 0x59, 0x4f, 0x76, 0x45, 0x57, 0x61, 0x51, 0x36, 0x65, 0x34, 0x78, 0x59, 0x33, 0x2f, 0x38, 0x47, 0x4d, 0x66, 0x61, 0x58, 0x75, 0x6d, 0x49, 0x44, 0x6f, 0x4b, 0x7a, 0x30, 0x41, 0x73, 0x63, 0x42, 0x5a, 0x77, 0x49, 0x37, 0x5c, 0x0a, 0x09, 0x4a, 0x38, 0x34, 0x69, 0x31, 0x63, 0x6d, 0x44, 0x77, 0x4c, 0x6e, 0x41, 0x70, 0x58, 0x68, 0x56, 0x76, 0x7a, 0x4a, 0x6b, 0x41, 0x36, 0x43, 0x73, 0x39, 0x51, 0x44, 0x76, 0x4a, 0x4b, 0x34, 0x54, 0x65, 0x46, 0x50, 0x69, 0x4c, 0x46, 0x4b, 0x56, 0x33, 0x51, 0x70, 0x38, 0x41, 0x66, 0x67, 0x42, 0x73, 0x43, 0x35, 0x78, 0x46, 0x74, 0x57, 0x51, 0x44, 0x59, 0x44, 0x79, 0x74, 0x44, 0x64, 0x78, 0x6a, 0x63, 0x42, 0x37, 0x69, 0x41, 0x6d, 0x42, 0x5c, 0x0a, 0x09, 0x70, 0x4e, 0x45, 0x39, 0x44, 0x33, 0x79, 0x48, 0x4b, 0x50, 0x78, 0x33, 0x4a, 0x63, 0x36, 0x69, 0x6d, 0x72, 0x4d, 0x42, 0x55, 0x42, 0x47, 0x32, 0x41, 0x6a, 0x35, 0x4d, 0x58, 0x43, 0x75, 0x77, 0x5a, 0x65, 0x49, 0x73, 0x55, 0x68, 0x6b, 0x39, 0x53, 0x61, 0x7a, 0x74, 0x66, 0x78, 0x56, 0x34, 0x49, 0x6e, 0x45, 0x57, 0x4e, 0x59, 0x51, 0x4e, 0x67, 0x49, 0x6f, 0x30, 0x43, 0x54, 0x69, 0x43, 0x32, 0x47, 0x48, 0x51, 0x35, 0x51, 0x45, 0x4a, 0x5c, 0x0a, 0x09, 0x66, 0x6b, 0x37, 0x73, 0x32, 0x48, 0x63, 0x31, 0x73, 0x43, 0x5a, 0x78, 0x46, 0x6a, 0x57, 0x4d, 0x44, 0x59, 0x42, 0x53, 0x32, 0x5a, 0x56, 0x6f, 0x42, 0x4e, 0x36, 0x48, 0x2b, 0x77, 0x6d, 0x6f, 0x57, 0x5a, 0x59, 0x42, 0x33, 0x77, 0x4b, 0x2b, 0x42, 0x69, 0x78, 0x49, 0x6e, 0x45, 0x55, 0x4e, 0x5a, 0x67, 0x4f, 0x67, 0x31, 0x4b, 0x59, 0x41, 0x52, 0x78, 0x4d, 0x50, 0x4c, 0x58, 0x6b, 0x6a, 0x4d, 0x43, 0x35, 0x74, 0x48, 0x43, 0x6b, 0x58, 0x5c, 0x0a, 0x09, 0x2f, 0x63, 0x53, 0x6e, 0x2f, 0x59, 0x75, 0x42, 0x4b, 0x33, 0x47, 0x72, 0x58, 0x70, 0x57, 0x41, 0x44, 0x59, 0x44, 0x4b, 0x35, 0x46, 0x58, 0x41, 0x43, 0x63, 0x52, 0x55, 0x34, 0x4f, 0x57, 0x4a, 0x73, 0x30, 0x68, 0x5a, 0x65, 0x4a, 0x7a, 0x34, 0x74, 0x50, 0x39, 0x4e, 0x34, 0x6e, 0x59, 0x2b, 0x71, 0x54, 0x52, 0x73, 0x41, 0x46, 0x52, 0x47, 0x34, 0x34, 0x47, 0x33, 0x45, 0x76, 0x73, 0x4b, 0x76, 0x42, 0x4f, 0x59, 0x6e, 0x44, 0x61, 0x4f, 0x5c, 0x0a, 0x09, 0x31, 0x4a, 0x62, 0x56, 0x78, 0x4b, 0x31, 0x37, 0x6c, 0x77, 0x49, 0x2f, 0x42, 0x66, 0x72, 0x53, 0x78, 0x70, 0x47, 0x47, 0x5a, 0x77, 0x4f, 0x67, 0x73, 0x70, 0x74, 0x4b, 0x4e, 0x41, 0x48, 0x76, 0x42, 0x51, 0x34, 0x46, 0x4a, 0x71, 0x61, 0x4e, 0x49, 0x77, 0x31, 0x72, 0x4c, 0x58, 0x41, 0x39, 0x63, 0x44, 0x6c, 0x52, 0x2f, 0x42, 0x33, 0x78, 0x71, 0x2f, 0x52, 0x73, 0x41, 0x46, 0x51, 0x6c, 0x73, 0x34, 0x42, 0x33, 0x44, 0x37, 0x7a, 0x65, 0x5c, 0x0a, 0x09, 0x51, 0x45, 0x77, 0x4b, 0x70, 0x46, 0x54, 0x36, 0x67, 0x46, 0x38, 0x41, 0x33, 0x78, 0x31, 0x34, 0x50, 0x5a, 0x55, 0x32, 0x6a, 0x74, 0x51, 0x65, 0x47, 0x77, 0x42, 0x56, 0x31, 0x52, 0x62, 0x41, 0x75, 0x34, 0x41, 0x6a, 0x67, 0x62, 0x66, 0x67, 0x5a, 0x45, 0x44, 0x46, 0x57, 0x41, 0x76, 0x63, 0x42, 0x46, 0x77, 0x46, 0x66, 0x42, 0x39, 0x59, 0x6e, 0x44, 0x61, 0x4f, 0x31, 0x44, 0x6b, 0x62, 0x41, 0x4e, 0x58, 0x42, 0x54, 0x4f, 0x44, 0x77, 0x5c, 0x0a, 0x09, 0x67, 0x64, 0x65, 0x68, 0x78, 0x4c, 0x4b, 0x42, 0x6c, 0x4a, 0x57, 0x56, 0x77, 0x48, 0x58, 0x41, 0x4e, 0x51, 0x4f, 0x76, 0x5a, 0x39, 0x50, 0x47, 0x6b, 0x62, 0x4a, 0x68, 0x41, 0x36, 0x43, 0x36, 0x36, 0x51, 0x58, 0x65, 0x44, 0x4c, 0x77, 0x44, 0x65, 0x44, 0x75, 0x77, 0x59, 0x39, 0x49, 0x30, 0x71, 0x71, 0x6f, 0x2f, 0x41, 0x54, 0x38, 0x61, 0x65, 0x4e, 0x32, 0x43, 0x6d, 0x2f, 0x53, 0x6f, 0x68, 0x6d, 0x77, 0x41, 0x56, 0x48, 0x65, 0x37, 0x5c, 0x0a, 0x09, 0x41, 0x49, 0x63, 0x42, 0x68, 0x78, 0x43, 0x37, 0x44, 0x33, 0x70, 0x48, 0x67, 0x59, 0x61, 0x7a, 0x6d, 0x72, 0x68, 0x50, 0x2f, 0x7a, 0x72, 0x67, 0x57, 0x75, 0x44, 0x2b, 0x74, 0x48, 0x47, 0x6b, 0x2f, 0x4e, 0x6b, 0x41, 0x71, 0x45, 0x6c, 0x65, 0x41, 0x68, 0x78, 0x41, 0x4e, 0x41, 0x4f, 0x48, 0x41, 0x6e, 0x73, 0x53, 0x54, 0x79, 0x39, 0x55, 0x38, 0x36, 0x77, 0x44, 0x37, 0x69, 0x45, 0x4b, 0x2f, 0x76, 0x58, 0x41, 0x4c, 0x34, 0x47, 0x2f, 0x5c, 0x0a, 0x09, 0x4a, 0x6b, 0x30, 0x6b, 0x46, 0x63, 0x77, 0x47, 0x51, 0x45, 0x30, 0x32, 0x6b, 0x37, 0x69, 0x62, 0x34, 0x43, 0x42, 0x69, 0x4f, 0x72, 0x41, 0x58, 0x4d, 0x43, 0x46, 0x70, 0x49, 0x75, 0x58, 0x6c, 0x42, 0x65, 0x42, 0x75, 0x34, 0x6c, 0x50, 0x2b, 0x7a, 0x63, 0x54, 0x56, 0x2b, 0x36, 0x37, 0x6c, 0x71, 0x39, 0x46, 0x73, 0x41, 0x4b, 0x54, 0x31, 0x4e, 0x69, 0x4d, 0x6d, 0x42, 0x47, 0x38, 0x45, 0x39, 0x67, 0x66, 0x32, 0x78, 0x65, 0x63, 0x55, 0x5c, 0x0a, 0x09, 0x56, 0x4e, 0x56, 0x79, 0x34, 0x41, 0x37, 0x67, 0x64, 0x71, 0x4c, 0x59, 0x33, 0x77, 0x61, 0x73, 0x53, 0x4a, 0x70, 0x49, 0x4b, 0x68, 0x6b, 0x62, 0x41, 0x47, 0x6c, 0x6b, 0x50, 0x63, 0x41, 0x38, 0x6f, 0x68, 0x6c, 0x34, 0x48, 0x62, 0x41, 0x66, 0x63, 0x55, 0x32, 0x42, 0x74, 0x78, 0x79, 0x57, 0x79, 0x77, 0x76, 0x45, 0x51, 0x33, 0x58, 0x75, 0x41, 0x48, 0x34, 0x31, 0x38, 0x4f, 0x50, 0x39, 0x78, 0x4a, 0x68, 0x66, 0x30, 0x67, 0x68, 0x73, 0x5c, 0x0a, 0x09, 0x41, 0x4b, 0x54, 0x32, 0x76, 0x41, 0x54, 0x59, 0x6a, 0x56, 0x67, 0x75, 0x32, 0x42, 0x50, 0x59, 0x47, 0x39, 0x67, 0x44, 0x4c, 0x79, 0x34, 0x73, 0x79, 0x6d, 0x72, 0x67, 0x58, 0x75, 0x41, 0x33, 0x78, 0x42, 0x72, 0x2b, 0x33, 0x63, 0x42, 0x39, 0x75, 0x48, 0x34, 0x76, 0x74, 0x63, 0x30, 0x47, 0x51, 0x4f, 0x72, 0x65, 0x65, 0x47, 0x41, 0x48, 0x59, 0x6a, 0x71, 0x77, 0x43, 0x2f, 0x47, 0x6f, 0x34, 0x33, 0x6b, 0x44, 0x4c, 0x78, 0x75, 0x44, 0x5c, 0x0a, 0x09, 0x7a, 0x71, 0x77, 0x47, 0x48, 0x68, 0x68, 0x34, 0x4c, 0x53, 0x41, 0x2b, 0x30, 0x64, 0x39, 0x50, 0x33, 0x4a, 0x37, 0x6e, 0x33, 0x76, 0x70, 0x53, 0x42, 0x6d, 0x77, 0x41, 0x70, 0x50, 0x7a, 0x30, 0x41, 0x4e, 0x73, 0x43, 0x63, 0x77, 0x64, 0x65, 0x4f, 0x77, 0x37, 0x35, 0x2b, 0x55, 0x37, 0x45, 0x6f, 0x35, 0x43, 0x62, 0x62, 0x44, 0x58, 0x77, 0x30, 0x4d, 0x44, 0x72, 0x34, 0x59, 0x48, 0x58, 0x34, 0x4b, 0x2f, 0x2f, 0x67, 0x69, 0x4e, 0x38, 0x5c, 0x0a, 0x09, 0x4b, 0x56, 0x63, 0x32, 0x41, 0x46, 0x49, 0x36, 0x73, 0x34, 0x42, 0x74, 0x69, 0x43, 0x5a, 0x68, 0x75, 0x34, 0x47, 0x66, 0x62, 0x77, 0x4e, 0x73, 0x54, 0x57, 0x78, 0x31, 0x50, 0x48, 0x76, 0x67, 0x4e, 0x53, 0x35, 0x56, 0x77, 0x41, 0x37, 0x31, 0x41, 0x30, 0x73, 0x47, 0x58, 0x6f, 0x75, 0x42, 0x78, 0x34, 0x42, 0x48, 0x42, 0x31, 0x34, 0x4c, 0x69, 0x65, 0x4c, 0x2b, 0x4b, 0x4f, 0x36, 0x64, 0x4c, 0x79, 0x56, 0x6c, 0x41, 0x79, 0x43, 0x56, 0x5c, 0x0a, 0x09, 0x32, 0x33, 0x67, 0x32, 0x62, 0x41, 0x59, 0x32, 0x42, 0x32, 0x59, 0x4d, 0x38, 0x35, 0x6f, 0x79, 0x38, 0x4a, 0x6f, 0x4d, 0x54, 0x41, 0x4b, 0x6d, 0x45, 0x52, 0x63, 0x72, 0x62, 0x6e, 0x77, 0x58, 0x77, 0x7a, 0x51, 0x32, 0x66, 0x59, 0x68, 0x53, 0x48, 0x33, 0x48, 0x56, 0x2f, 0x46, 0x44, 0x4c, 0x69, 0x48, 0x33, 0x76, 0x6c, 0x78, 0x4f, 0x37, 0x34, 0x4b, 0x30, 0x47, 0x56, 0x67, 0x32, 0x38, 0x6c, 0x67, 0x37, 0x7a, 0x65, 0x6f, 0x62, 0x31, 0x5c, 0x0a, 0x09, 0x52, 0x58, 0x38, 0x4a, 0x63, 0x57, 0x47, 0x65, 0x70, 0x42, 0x4c, 0x37, 0x2f, 0x2b, 0x36, 0x4a, 0x76, 0x53, 0x43, 0x72, 0x32, 0x66, 0x6e, 0x73, 0x41, 0x41, 0x41, 0x41, 0x41, 0x45, 0x6c, 0x46, 0x54, 0x6b, 0x53, 0x75, 0x51, 0x6d, 0x43, 0x43, 0x5c, 0x0a, 0x09, 0x22, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6e, 0x67, 0x20, 0x3d, 0x0a, 0x09, 0x22, 0x69, 0x56, 0x42, 0x4f, 0x52, 0x77, 0x30, 0x4b, 0x47, 0x67, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x4e, 0x53, 0x55, 0x68, 0x45, 0x55, 0x67, 0x41, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x43, 0x41, 0x43, 0x41, 0x59, 0x41, 0x41, 0x41, 0x44, 0x6b, 0x74, 0x62, 0x63, 0x4b, 0x41, 0x41, 0x41, 0x48, 0x48, 0x30, 0x6c, 0x45, 0x51, 0x56, 0x52, 0x34, 0x6e, 0x4f, 0x33, 0x64, 0x79, 0x38, 0x39, 0x63, 0x63, 0x78, 0x7a, 0x48, 0x38, 0x66, 0x66, 0x7a, 0x5c, 0x0a, 0x09, 0x39, 0x46, 0x36, 0x58, 0x58, 0x72, 0x52, 0x39, 0x74, 0x4b, 0x36, 0x6c, 0x4c, 0x58, 0x56, 0x70, 0x56, 0x43, 0x51, 0x6b, 0x4c, 0x68, 0x47, 0x68, 0x49, 0x57, 0x69, 0x49, 0x52, 0x46, 0x30, 0x53, 0x47, 0x34, 0x53, 0x39, 0x68, 0x4a, 0x55, 0x56, 0x47, 0x78, 0x61, 0x57, 0x4e, 0x68, 0x62, 0x2b, 0x41, 0x49, 0x74, 0x4b, 0x42, 0x47, 0x46, 0x68, 0x30, 0x34, 0x55, 0x67, 0x49, 0x69, 0x68, 0x42, 0x56, 0x4a, 0x75, 0x57, 0x74, 0x6d, 0x69, 0x72, 0x5c, 0x0a, 0x09, 0x56, 0x38, 0x56, 0x44, 0x78, 0x2b, 0x4a, 0x33, 0x4a, 0x73, 0x39, 0x30, 0x4f, 0x76, 0x4e, 0x30, 0x66, 0x6d, 0x66, 0x6d, 0x39, 0x46, 0x78, 0x2b, 0x37, 0x31, 0x63, 0x79, 0x65, 0x57, 0x61, 0x65, 0x7a, 0x75, 0x58, 0x62, 0x4e, 0x74, 0x2f, 0x50, 0x37, 0x33, 0x64, 0x2b, 0x35, 0x38, 0x77, 0x35, 0x59, 0x36, 0x31, 0x57, 0x43, 0x30, 0x6c, 0x70, 0x47, 0x69, 0x2b, 0x37, 0x41, 0x45, 0x6e, 0x6c, 0x4d, 0x51, 0x43, 0x6b, 0x68, 0x4d, 0x30, 0x73, 0x5c, 0x0a, 0x09, 0x75, 0x77, 0x44, 0x56, 0x79, 0x36, 0x70, 0x4c, 0x56, 0x30, 0x59, 0x39, 0x2f, 0x38, 0x63, 0x64, 0x32, 0x77, 0x75, 0x71, 0x52, 0x4b, 0x4e, 0x67, 0x41, 0x43, 0x51, 0x71, 0x74, 0x70, 0x47, 0x37, 0x6a, 0x41, 0x45, 0x4c, 0x67, 0x47, 0x58, 0x41, 0x63, 0x6d, 0x41, 0x43, 0x57, 0x4a, 0x49, 0x39, 0x6e, 0x67, 0x43, 0x4f, 0x41, 0x53, 0x38, 0x42, 0x68, 0x34, 0x61, 0x72, 0x55, 0x6b, 0x55, 0x62, 0x63, 0x78, 0x47, 0x77, 0x33, 0x6f, 0x5a, 0x73, 0x5c, 0x0a, 0x09, 0x35, 0x48, 0x48, 0x67, 0x4c, 0x47, 0x41, 0x68, 0x6f, 0x58, 0x47, 0x58, 0x41, 0x59, 0x75, 0x7a, 0x32, 0x33, 0x6b, 0x64, 0x39, 0x78, 0x66, 0x31, 0x75, 0x48, 0x2b, 0x36, 0x7a, 0x63, 0x65, 0x33, 0x67, 0x51, 0x66, 0x42, 0x57, 0x55, 0x43, 0x56, 0x4f, 0x51, 0x4f, 0x6f, 0x67, 0x43, 0x47, 0x62, 0x47, 0x47, 0x41, 0x57, 0x6f, 0x5a, 0x48, 0x50, 0x4a, 0x54, 0x54, 0x75, 0x2b, 0x63, 0x42, 0x46, 0x68, 0x47, 0x5a, 0x74, 0x4e, 0x2b, 0x79, 0x69, 0x5c, 0x0a, 0x09, 0x72, 0x73, 0x66, 0x6e, 0x41, 0x65, 0x63, 0x4d, 0x2b, 0x38, 0x48, 0x54, 0x65, 0x41, 0x42, 0x59, 0x44, 0x33, 0x78, 0x52, 0x34, 0x47, 0x64, 0x6f, 0x53, 0x41, 0x62, 0x41, 0x43, 0x49, 0x31, 0x67, 0x4e, 0x4a, 0x34, 0x4e, 0x7a, 0x41, 0x50, 0x4f, 0x4a, 0x6a, 0x54, 0x70, 0x42, 0x48, 0x41, 0x68, 0x73, 0x4a, 0x4c, 0x51, 0x73, 0x4e, 0x31, 0x4e, 0x33, 0x4c, 0x35, 0x66, 0x31, 0x63, 0x58, 0x63, 0x52, 0x7a, 0x41, 0x41, 0x4b, 0x73, 0x31, 0x4e, 0x5c, 0x0a, 0x09, 0x67, 0x42, 0x36, 0x47, 0x62, 0x4f, 0x51, 0x5a, 0x68, 0x42, 0x46, 0x35, 0x4c, 0x6d, 0x46, 0x55, 0x58, 0x67, 0x41, 0x73, 0x42, 0x56, 0x59, 0x41, 0x6c, 0x77, 0x4b, 0x72, 0x43, 0x56, 0x50, 0x74, 0x37, 0x69, 0x61, 0x65, 0x50, 0x63, 0x79, 0x48, 0x56, 0x74, 0x54, 0x6e, 0x77, 0x41, 0x33, 0x67, 0x5a, 0x6b, 0x42, 0x56, 0x4e, 0x58, 0x6f, 0x47, 0x4d, 0x49, 0x49, 0x52, 0x65, 0x53, 0x61, 0x68, 0x4d, 0x65, 0x63, 0x54, 0x70, 0x74, 0x65, 0x4c, 0x5c, 0x0a, 0x09, 0x43, 0x4b, 0x50, 0x79, 0x4a, 0x63, 0x44, 0x6c, 0x77, 0x46, 0x58, 0x41, 0x42, 0x55, 0x77, 0x31, 0x38, 0x66, 0x78, 0x68, 0x50, 0x72, 0x43, 0x42, 0x31, 0x68, 0x50, 0x2b, 0x48, 0x55, 0x2b, 0x55, 0x58, 0x59, 0x68, 0x36, 0x71, 0x30, 0x30, 0x41, 0x44, 0x4e, 0x48, 0x4d, 0x59, 0x34, 0x52, 0x52, 0x65, 0x53, 0x59, 0x77, 0x68, 0x39, 0x43, 0x6b, 0x43, 0x77, 0x6c, 0x54, 0x36, 0x75, 0x57, 0x45, 0x5a, 0x72, 0x34, 0x43, 0x75, 0x49, 0x59, 0x77, 0x5c, 0x0a, 0x09, 0x31, 0x56, 0x35, 0x4d, 0x47, 0x4d, 0x45, 0x31, 0x76, 0x48, 0x48, 0x43, 0x76, 0x2f, 0x66, 0x52, 0x73, 0x67, 0x74, 0x52, 0x62, 0x36, 0x55, 0x45, 0x77, 0x49, 0x69, 0x61, 0x75, 0x54, 0x33, 0x46, 0x58, 0x6b, 0x69, 0x59, 0x59, 0x69, 0x38, 0x6e, 0x6a, 0x4d, 0x70, 0x58, 0x45, 0x6b, 0x61, 0x65, 0x4b, 0x37, 0x4c, 0x6e, 0x71, 0x6c, 0x79, 0x4c, 0x4d, 0x41, 0x41, 0x71, 0x61, 0x32, 0x51, 0x42, 0x6b, 0x4b, 0x4f, 0x70, 0x78, 0x77, 0x67, 0x6a, 0x5c, 0x0a, 0x09, 0x78, 0x43, 0x7a, 0x43, 0x79, 0x4e, 0x79, 0x39, 0x76, 0x62, 0x77, 0x53, 0x57, 0x41, 0x4e, 0x63, 0x42, 0x36, 0x79, 0x6a, 0x75, 0x67, 0x74, 0x64, 0x6d, 0x74, 0x37, 0x35, 0x77, 0x4b, 0x36, 0x79, 0x69, 0x31, 0x42, 0x76, 0x41, 0x77, 0x66, 0x41, 0x67, 0x41, 0x33, 0x65, 0x58, 0x67, 0x43, 0x62, 0x54, 0x39, 0x6a, 0x46, 0x74, 0x4a, 0x69, 0x70, 0x5a, 0x6c, 0x35, 0x4e, 0x6d, 0x47, 0x62, 0x66, 0x68, 0x4e, 0x76, 0x4b, 0x4b, 0x62, 0x6b, 0x49, 0x5c, 0x0a, 0x09, 0x2b, 0x4b, 0x7a, 0x73, 0x49, 0x74, 0x54, 0x62, 0x51, 0x41, 0x48, 0x51, 0x30, 0x66, 0x79, 0x7a, 0x43, 0x43, 0x76, 0x5a, 0x61, 0x34, 0x43, 0x31, 0x68, 0x42, 0x58, 0x65, 0x56, 0x63, 0x44, 0x46, 0x68, 0x4a, 0x46, 0x62, 0x36, 0x6e, 0x5a, 0x35, 0x32, 0x51, 0x57, 0x6f, 0x76, 0x35, 0x68, 0x4e, 0x67, 0x48, 0x48, 0x67, 0x65, 0x38, 0x4a, 0x6f, 0x4c, 0x67, 0x33, 0x71, 0x36, 0x72, 0x49, 0x4c, 0x55, 0x48, 0x38, 0x78, 0x32, 0x39, 0x57, 0x72, 0x5c, 0x0a, 0x09, 0x73, 0x50, 0x6b, 0x56, 0x62, 0x31, 0x33, 0x5a, 0x42, 0x61, 0x69, 0x2f, 0x6d, 0x41, 0x42, 0x59, 0x58, 0x56, 0x67, 0x56, 0x61, 0x6a, 0x49, 0x44, 0x6f, 0x4d, 0x4a, 0x69, 0x41, 0x6d, 0x43, 0x69, 0x73, 0x43, 0x72, 0x55, 0x5a, 0x44, 0x4e, 0x67, 0x4a, 0x4e, 0x39, 0x33, 0x55, 0x41, 0x46, 0x69, 0x41, 0x73, 0x42, 0x46, 0x50, 0x75, 0x55, 0x31, 0x56, 0x6e, 0x59, 0x42, 0x36, 0x69, 0x30, 0x6d, 0x41, 0x4a, 0x59, 0x55, 0x56, 0x6f, 0x57, 0x61, 0x5c, 0x0a, 0x09, 0x7a, 0x67, 0x43, 0x6f, 0x4b, 0x41, 0x4e, 0x41, 0x5a, 0x34, 0x4a, 0x48, 0x5a, 0x46, 0x5a, 0x55, 0x54, 0x41, 0x43, 0x59, 0x34, 0x73, 0x72, 0x4c, 0x41, 0x4b, 0x67, 0x6f, 0x44, 0x36, 0x2f, 0x56, 0x6d, 0x57, 0x41, 0x41, 0x56, 0x46, 0x52, 0x4d, 0x41, 0x4d, 0x77, 0x70, 0x72, 0x41, 0x6f, 0x31, 0x58, 0x57, 0x32, 0x2b, 0x64, 0x5a, 0x71, 0x61, 0x6d, 0x41, 0x43, 0x59, 0x56, 0x31, 0x67, 0x56, 0x61, 0x6a, 0x71, 0x2f, 0x58, 0x6c, 0x31, 0x52, 0x5c, 0x0a, 0x09, 0x62, 0x67, 0x4c, 0x6f, 0x54, 0x44, 0x41, 0x41, 0x4b, 0x69, 0x6f, 0x6d, 0x41, 0x50, 0x59, 0x58, 0x56, 0x6f, 0x57, 0x61, 0x7a, 0x67, 0x43, 0x6f, 0x71, 0x4a, 0x67, 0x41, 0x32, 0x46, 0x6c, 0x59, 0x46, 0x57, 0x71, 0x36, 0x4a, 0x70, 0x37, 0x76, 0x73, 0x42, 0x46, 0x69, 0x41, 0x6d, 0x42, 0x33, 0x59, 0x56, 0x57, 0x6f, 0x36, 0x53, 0x62, 0x4c, 0x4c, 0x6b, 0x43, 0x39, 0x78, 0x51, 0x54, 0x41, 0x6e, 0x73, 0x4b, 0x71, 0x55, 0x4e, 0x50, 0x39, 0x5c, 0x0a, 0x09, 0x58, 0x58, 0x59, 0x42, 0x36, 0x69, 0x30, 0x6d, 0x41, 0x4c, 0x7a, 0x4d, 0x6b, 0x2f, 0x49, 0x36, 0x58, 0x6e, 0x59, 0x42, 0x36, 0x69, 0x30, 0x6d, 0x41, 0x50, 0x34, 0x6f, 0x72, 0x41, 0x6f, 0x31, 0x6e, 0x59, 0x4e, 0x48, 0x52, 0x52, 0x6b, 0x41, 0x4b, 0x74, 0x70, 0x78, 0x38, 0x4d, 0x49, 0x67, 0x56, 0x52, 0x55, 0x54, 0x41, 0x4d, 0x63, 0x4b, 0x71, 0x30, 0x4a, 0x4e, 0x35, 0x69, 0x6e, 0x42, 0x4b, 0x79, 0x77, 0x6d, 0x41, 0x46, 0x7a, 0x49, 0x5c, 0x0a, 0x09, 0x55, 0x52, 0x35, 0x37, 0x79, 0x79, 0x35, 0x41, 0x2f, 0x63, 0x55, 0x45, 0x67, 0x4c, 0x74, 0x79, 0x6c, 0x49, 0x65, 0x37, 0x6a, 0x79, 0x73, 0x73, 0x4a, 0x67, 0x44, 0x2b, 0x4b, 0x36, 0x77, 0x4b, 0x4e, 0x64, 0x6e, 0x50, 0x5a, 0x52, 0x65, 0x67, 0x2f, 0x6d, 0x49, 0x43, 0x77, 0x4d, 0x73, 0x49, 0x4b, 0x77, 0x2b, 0x50, 0x48, 0x36, 0x6d, 0x77, 0x67, 0x51, 0x4b, 0x67, 0x59, 0x77, 0x58, 0x58, 0x68, 0x55, 0x44, 0x46, 0x32, 0x6c, 0x5a, 0x32, 0x5c, 0x0a, 0x09, 0x41, 0x65, 0x6f, 0x76, 0x39, 0x74, 0x75, 0x41, 0x58, 0x78, 0x52, 0x53, 0x68, 0x5a, 0x72, 0x4d, 0x79, 0x34, 0x4a, 0x56, 0x57, 0x47, 0x77, 0x41, 0x62, 0x43, 0x6d, 0x6b, 0x43, 0x6a, 0x58, 0x52, 0x62, 0x38, 0x44, 0x72, 0x77, 0x44, 0x64, 0x6c, 0x46, 0x36, 0x4c, 0x2b, 0x59, 0x73, 0x2f, 0x55, 0x38, 0x6d, 0x55, 0x68, 0x56, 0x61, 0x69, 0x4f, 0x57, 0x6f, 0x51, 0x6d, 0x33, 0x77, 0x6e, 0x73, 0x36, 0x50, 0x6a, 0x35, 0x48, 0x62, 0x43, 0x56, 0x5c, 0x0a, 0x09, 0x6a, 0x74, 0x31, 0x2f, 0x48, 0x67, 0x52, 0x55, 0x58, 0x62, 0x45, 0x42, 0x38, 0x45, 0x4d, 0x68, 0x56, 0x61, 0x67, 0x71, 0x2f, 0x67, 0x4c, 0x32, 0x41, 0x62, 0x38, 0x53, 0x7a, 0x76, 0x2b, 0x77, 0x6a, 0x39, 0x44, 0x6b, 0x76, 0x32, 0x66, 0x33, 0x64, 0x78, 0x4d, 0x61, 0x2b, 0x35, 0x66, 0x73, 0x64, 0x2f, 0x39, 0x4f, 0x39, 0x32, 0x59, 0x32, 0x66, 0x76, 0x58, 0x46, 0x42, 0x73, 0x43, 0x4f, 0x49, 0x6f, 0x72, 0x51, 0x79, 0x4c, 0x55, 0x49, 0x5c, 0x0a, 0x09, 0x68, 0x32, 0x34, 0x66, 0x36, 0x50, 0x72, 0x5a, 0x65, 0x66, 0x38, 0x33, 0x51, 0x6c, 0x50, 0x76, 0x5a, 0x36, 0x72, 0x4a, 0x6f, 0x78, 0x64, 0x35, 0x62, 0x66, 0x4a, 0x36, 0x69, 0x77, 0x32, 0x41, 0x67, 0x39, 0x6c, 0x74, 0x59, 0x51, 0x47, 0x31, 0x36, 0x47, 0x53, 0x48, 0x42, 0x72, 0x6a, 0x39, 0x77, 0x61, 0x6d, 0x4e, 0x66, 0x59, 0x44, 0x77, 0x66, 0x35, 0x53, 0x4c, 0x44, 0x5a, 0x32, 0x57, 0x32, 0x41, 0x42, 0x6f, 0x41, 0x65, 0x38, 0x42, 0x5c, 0x0a, 0x09, 0x6a, 0x78, 0x56, 0x51, 0x53, 0x35, 0x4d, 0x63, 0x34, 0x64, 0x52, 0x6d, 0x50, 0x64, 0x6a, 0x6a, 0x64, 0x2f, 0x31, 0x75, 0x75, 0x52, 0x75, 0x34, 0x7a, 0x55, 0x62, 0x57, 0x49, 0x4d, 0x5a, 0x61, 0x72, 0x63, 0x47, 0x50, 0x37, 0x38, 0x6b, 0x75, 0x38, 0x48, 0x67, 0x66, 0x38, 0x45, 0x35, 0x52, 0x42, 0x56, 0x58, 0x4d, 0x46, 0x6d, 0x41, 0x58, 0x6f, 0x61, 0x48, 0x62, 0x74, 0x38, 0x4f, 0x45, 0x42, 0x6a, 0x33, 0x53, 0x34, 0x39, 0x5a, 0x75, 0x5c, 0x0a, 0x09, 0x34, 0x4b, 0x45, 0x50, 0x6d, 0x72, 0x4b, 0x42, 0x64, 0x53, 0x62, 0x6b, 0x4f, 0x56, 0x2f, 0x37, 0x75, 0x38, 0x41, 0x6e, 0x77, 0x49, 0x30, 0x6a, 0x72, 0x69, 0x57, 0x76, 0x76, 0x77, 0x6b, 0x4e, 0x4f, 0x51, 0x6c, 0x63, 0x4f, 0x4d, 0x4c, 0x33, 0x66, 0x52, 0x6c, 0x34, 0x4d, 0x65, 0x2b, 0x4c, 0x62, 0x57, 0x44, 0x56, 0x51, 0x5a, 0x34, 0x41, 0x61, 0x41, 0x46, 0x33, 0x41, 0x30, 0x38, 0x41, 0x4e, 0x77, 0x43, 0x58, 0x41, 0x57, 0x63, 0x54, 0x5c, 0x0a, 0x09, 0x31, 0x67, 0x58, 0x6d, 0x45, 0x71, 0x34, 0x66, 0x63, 0x47, 0x37, 0x48, 0x38, 0x34, 0x38, 0x41, 0x4a, 0x7a, 0x6f, 0x65, 0x54, 0x78, 0x49, 0x57, 0x6d, 0x37, 0x70, 0x2f, 0x48, 0x73, 0x2b, 0x65, 0x65, 0x35, 0x51, 0x77, 0x79, 0x68, 0x37, 0x4f, 0x37, 0x68, 0x2f, 0x6c, 0x35, 0x42, 0x47, 0x32, 0x2f, 0x62, 0x75, 0x44, 0x68, 0x47, 0x33, 0x65, 0x76, 0x37, 0x4c, 0x33, 0x66, 0x52, 0x35, 0x34, 0x4a, 0x63, 0x66, 0x66, 0x70, 0x35, 0x66, 0x6e, 0x5c, 0x0a, 0x09, 0x67, 0x4e, 0x66, 0x41, 0x52, 0x6c, 0x61, 0x7a, 0x52, 0x57, 0x30, 0x43, 0x51, 0x4b, 0x57, 0x76, 0x38, 0x2f, 0x34, 0x35, 0x63, 0x50, 0x32, 0x51, 0x37, 0x33, 0x45, 0x43, 0x65, 0x41, 0x70, 0x34, 0x45, 0x32, 0x78, 0x2b, 0x4e, 0x56, 0x39, 0x30, 0x41, 0x46, 0x52, 0x4e, 0x46, 0x6b, 0x68, 0x72, 0x67, 0x4f, 0x2b, 0x48, 0x66, 0x4b, 0x74, 0x4a, 0x59, 0x42, 0x4f, 0x77, 0x47, 0x57, 0x78, 0x2b, 0x70, 0x61, 0x45, 0x70, 0x31, 0x32, 0x7a, 0x62, 0x5c, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x72, 0x6a, 0x77, 0x45, 0x62, 0x67, 0x59, 0x2f, 0x41, 0x35, 0x6c, 0x63, 0x36, 0x61, 0x6a, 0x30, 0x44, 0x36, 0x4e, 0x67, 0x63, 0x2b, 0x52, 0x5a, 0x59, 0x6d, 0x2f, 0x4e, 0x74, 0x39, 0x67, 0x50, 0x33, 0x45, 0x68, 0x59, 0x32, 0x62, 0x58, 0x34, 0x6c, 0x70, 0x51, 0x6b, 0x7a, 0x67, 0x47, 0x76, 0x4a, 0x33, 0x2f, 0x79, 0x2f, 0x45, 0x42, 0x59, 0x30, 0x74, 0x34, 0x4c, 0x4e, 0x72, 0x2f, 0x51, 0x30, 0x49, 0x51, 0x41, 0x65, 0x5c, 0x0a, 0x09, 0x7a, 0x66, 0x6d, 0x36, 0x62, 0x63, 0x41, 0x47, 0x34, 0x43, 0x65, 0x77, 0x2b, 0x5a, 0x57, 0x6d, 0x32, 0x6d, 0x34, 0x43, 0x64, 0x45, 0x7a, 0x2f, 0x74, 0x78, 0x46, 0x32, 0x52, 0x63, 0x62, 0x59, 0x43, 0x74, 0x78, 0x46, 0x39, 0x6f, 0x30, 0x31, 0x6d, 0x31, 0x2b, 0x70, 0x71, 0x76, 0x76, 0x6c, 0x77, 0x57, 0x38, 0x6b, 0x76, 0x76, 0x6b, 0x2f, 0x42, 0x6d, 0x37, 0x42, 0x35, 0x70, 0x66, 0x71, 0x47, 0x51, 0x41, 0x64, 0x6f, 0x2f, 0x2f, 0x44, 0x5c, 0x0a, 0x09, 0x6b, 0x53, 0x2f, 0x39, 0x45, 0x4c, 0x69, 0x54, 0x37, 0x45, 0x6f, 0x31, 0x4e, 0x72, 0x39, 0x53, 0x56, 0x38, 0x73, 0x41, 0x79, 0x49, 0x77, 0x44, 0x6a, 0x30, 0x51, 0x38, 0x2f, 0x79, 0x33, 0x67, 0x66, 0x75, 0x42, 0x50, 0x73, 0x50, 0x6b, 0x6c, 0x71, 0x48, 0x63, 0x41, 0x33, 0x41, 0x79, 0x73, 0x47, 0x50, 0x43, 0x35, 0x62, 0x78, 0x41, 0x57, 0x43, 0x2f, 0x38, 0x42, 0x6d, 0x31, 0x39, 0x71, 0x71, 0x31, 0x30, 0x41, 0x64, 0x45, 0x7a, 0x2f, 0x5c, 0x0a, 0x09, 0x42, 0x2f, 0x31, 0x4b, 0x38, 0x71, 0x76, 0x41, 0x4d, 0x32, 0x54, 0x58, 0x4e, 0x62, 0x44, 0x35, 0x70, 0x53, 0x6c, 0x31, 0x33, 0x51, 0x30, 0x34, 0x41, 0x33, 0x68, 0x6f, 0x67, 0x4f, 0x65, 0x39, 0x51, 0x41, 0x67, 0x41, 0x77, 0x4f, 0x61, 0x58, 0x75, 0x74, 0x55, 0x31, 0x41, 0x4f, 0x34, 0x45, 0x6c, 0x6b, 0x37, 0x7a, 0x35, 0x79, 0x65, 0x41, 0x5a, 0x77, 0x6c, 0x54, 0x66, 0x78, 0x74, 0x66, 0x36, 0x71, 0x4e, 0x57, 0x41, 0x54, 0x44, 0x67, 0x5c, 0x0a, 0x09, 0x36, 0x76, 0x38, 0x6b, 0x38, 0x44, 0x68, 0x68, 0x30, 0x63, 0x2f, 0x6d, 0x6c, 0x36, 0x5a, 0x52, 0x71, 0x77, 0x44, 0x49, 0x7a, 0x4b, 0x48, 0x2f, 0x39, 0x50, 0x38, 0x34, 0x38, 0x43, 0x44, 0x77, 0x41, 0x64, 0x6a, 0x38, 0x30, 0x75, 0x6e, 0x55, 0x4d, 0x51, 0x41, 0x32, 0x41, 0x41, 0x74, 0x36, 0x2f, 0x50, 0x34, 0x51, 0x63, 0x41, 0x2f, 0x68, 0x51, 0x42, 0x2b, 0x62, 0x58, 0x78, 0x70, 0x41, 0x62, 0x51, 0x4c, 0x67, 0x4e, 0x4b, 0x76, 0x2f, 0x5c, 0x0a, 0x09, 0x65, 0x77, 0x6e, 0x42, 0x38, 0x44, 0x58, 0x59, 0x2f, 0x4e, 0x4b, 0x67, 0x36, 0x72, 0x59, 0x62, 0x63, 0x42, 0x37, 0x68, 0x59, 0x4a, 0x35, 0x4f, 0x32, 0x34, 0x46, 0x62, 0x73, 0x66, 0x6d, 0x6c, 0x61, 0x48, 0x55, 0x4c, 0x67, 0x49, 0x33, 0x41, 0x57, 0x52, 0x32, 0x50, 0x74, 0x77, 0x4b, 0x33, 0x41, 0x54, 0x2b, 0x43, 0x7a, 0x53, 0x2f, 0x46, 0x71, 0x6b, 0x55, 0x41, 0x39, 0x46, 0x6e, 0x39, 0x2f, 0x78, 0x53, 0x34, 0x48, 0x66, 0x67, 0x5a, 0x5c, 0x0a, 0x09, 0x62, 0x48, 0x34, 0x70, 0x6a, 0x31, 0x6f, 0x45, 0x51, 0x47, 0x59, 0x42, 0x34, 0x63, 0x77, 0x39, 0x45, 0x45, 0x37, 0x64, 0x64, 0x51, 0x66, 0x68, 0x62, 0x44, 0x34, 0x32, 0x76, 0x35, 0x52, 0x54, 0x6e, 0x51, 0x4a, 0x67, 0x49, 0x32, 0x45, 0x58, 0x34, 0x47, 0x62, 0x43, 0x61, 0x76, 0x38, 0x78, 0x73, 0x50, 0x6d, 0x6c, 0x59, 0x56, 0x54, 0x2b, 0x68, 0x43, 0x41, 0x64, 0x30, 0x2f, 0x2f, 0x33, 0x67, 0x54, 0x33, 0x41, 0x30, 0x33, 0x68, 0x63, 0x5c, 0x0a, 0x09, 0x76, 0x7a, 0x51, 0x53, 0x64, 0x5a, 0x6b, 0x42, 0x4c, 0x41, 0x61, 0x2b, 0x41, 0x70, 0x37, 0x45, 0x35, 0x70, 0x64, 0x47, 0x70, 0x69, 0x34, 0x7a, 0x67, 0x44, 0x45, 0x36, 0x72, 0x72, 0x64, 0x6e, 0x38, 0x30, 0x75, 0x6a, 0x55, 0x5a, 0x63, 0x44, 0x67, 0x56, 0x70, 0x67, 0x34, 0x30, 0x75, 0x6a, 0x56, 0x76, 0x6b, 0x5a, 0x67, 0x4b, 0x54, 0x69, 0x31, 0x47, 0x55, 0x4e, 0x51, 0x46, 0x49, 0x42, 0x44, 0x41, 0x41, 0x70, 0x59, 0x51, 0x61, 0x41, 0x5c, 0x0a, 0x09, 0x6c, 0x44, 0x41, 0x44, 0x51, 0x45, 0x71, 0x59, 0x41, 0x53, 0x41, 0x6c, 0x7a, 0x41, 0x43, 0x51, 0x45, 0x6d, 0x59, 0x41, 0x53, 0x41, 0x6b, 0x7a, 0x41, 0x4b, 0x53, 0x45, 0x47, 0x51, 0x42, 0x53, 0x77, 0x67, 0x77, 0x41, 0x4b, 0x57, 0x45, 0x47, 0x67, 0x4a, 0x51, 0x77, 0x41, 0x30, 0x42, 0x4b, 0x6d, 0x41, 0x45, 0x67, 0x4a, 0x63, 0x77, 0x41, 0x6b, 0x42, 0x4a, 0x6d, 0x41, 0x45, 0x67, 0x4a, 0x4d, 0x77, 0x43, 0x6b, 0x68, 0x42, 0x6b, 0x41, 0x5c, 0x0a, 0x09, 0x55, 0x73, 0x49, 0x4d, 0x41, 0x43, 0x6c, 0x68, 0x42, 0x6f, 0x43, 0x55, 0x4d, 0x41, 0x4e, 0x41, 0x53, 0x70, 0x67, 0x42, 0x49, 0x43, 0x58, 0x4d, 0x41, 0x4a, 0x41, 0x53, 0x5a, 0x67, 0x42, 0x49, 0x43, 0x54, 0x4d, 0x41, 0x70, 0x49, 0x51, 0x5a, 0x41, 0x46, 0x4c, 0x43, 0x44, 0x41, 0x41, 0x70, 0x59, 0x51, 0x61, 0x41, 0x6c, 0x44, 0x41, 0x44, 0x51, 0x45, 0x71, 0x59, 0x41, 0x53, 0x41, 0x6c, 0x7a, 0x41, 0x43, 0x51, 0x45, 0x6d, 0x59, 0x41, 0x5c, 0x0a, 0x09, 0x53, 0x41, 0x6b, 0x7a, 0x41, 0x4b, 0x53, 0x45, 0x47, 0x51, 0x42, 0x53, 0x77, 0x67, 0x77, 0x41, 0x4b, 0x57, 0x45, 0x47, 0x67, 0x4a, 0x51, 0x77, 0x41, 0x30, 0x42, 0x4b, 0x6d, 0x41, 0x45, 0x67, 0x4a, 0x63, 0x77, 0x41, 0x6b, 0x42, 0x4a, 0x6d, 0x41, 0x45, 0x67, 0x4a, 0x4d, 0x77, 0x43, 0x6b, 0x68, 0x42, 0x6b, 0x41, 0x55, 0x73, 0x49, 0x4d, 0x41, 0x43, 0x6c, 0x68, 0x42, 0x6f, 0x43, 0x55, 0x4d, 0x41, 0x4e, 0x41, 0x53, 0x70, 0x67, 0x42, 0x5c, 0x0a, 0x09, 0x49, 0x43, 0x58, 0x4d, 0x41, 0x4a, 0x41, 0x53, 0x5a, 0x67, 0x42, 0x49, 0x43, 0x54, 0x4d, 0x41, 0x70, 0x49, 0x51, 0x5a, 0x41, 0x46, 0x4c, 0x43, 0x44, 0x41, 0x41, 0x70, 0x59, 0x66, 0x38, 0x44, 0x63, 0x44, 0x39, 0x39, 0x47, 0x6c, 0x32, 0x37, 0x6b, 0x55, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x41, 0x53, 0x55, 0x56, 0x4f, 0x52, 0x4b, 0x35, 0x43, 0x59, 0x49, 0x49, 0x3d, 0x5c, 0x0a, 0x09, 0x22, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6e, 0x67, 0x20, 0x3d, 0x0a, 0x09, 0x22, 0x69, 0x56, 0x42, 0x4f, 0x52, 0x77, 0x30, 0x4b, 0x47, 0x67, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x4e, 0x53, 0x55, 0x68, 0x45, 0x55, 0x67, 0x41, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x45, 0x41, 0x43, 0x41, 0x59, 0x41, 0x41, 0x41, 0x42, 0x63, 0x63, 0x71, 0x68, 0x6d, 0x41, 0x41, 0x41, 0x67, 0x41, 0x45, 0x6c, 0x45, 0x51, 0x56, 0x52, 0x34, 0x6e, 0x4f, 0x79, 0x39, 0x65, 0x62, 0x77, 0x6c, 0x56, 0x31, 0x55, 0x76, 0x2f, 0x6c, 0x31, 0x56, 0x5c, 0x0a, 0x09, 0x5a, 0x37, 0x68, 0x44, 0x39, 0x37, 0x33, 0x64, 0x6e, 0x52, 0x34, 0x79, 0x64, 0x79, 0x66, 0x64, 0x68, 0x42, 0x41, 0x79, 0x51, 0x42, 0x42, 0x4d, 0x43, 0x43, 0x42, 0x44, 0x6e, 0x67, 0x4a, 0x52, 0x47, 0x63, 0x57, 0x66, 0x54, 0x31, 0x51, 0x45, 0x55, 0x51, 0x48, 0x31, 0x5a, 0x2b, 0x43, 0x4a, 0x67, 0x6b, 0x39, 0x42, 0x48, 0x6a, 0x6a, 0x41, 0x38, 0x34, 0x47, 0x41, 0x54, 0x49, 0x72, 0x54, 0x44, 0x35, 0x2b, 0x6f, 0x50, 0x50, 0x7a, 0x4a, 0x5c, 0x0a, 0x09, 0x45, 0x30, 0x55, 0x68, 0x41, 0x57, 0x51, 0x4d, 0x49, 0x43, 0x52, 0x6b, 0x41, 0x45, 0x4a, 0x43, 0x35, 0x6e, 0x6e, 0x6f, 0x76, 0x74, 0x31, 0x33, 0x50, 0x50, 0x64, 0x55, 0x37, 0x66, 0x66, 0x48, 0x72, 0x72, 0x31, 0x72, 0x72, 0x62, 0x56, 0x58, 0x6e, 0x64, 0x76, 0x45, 0x4f, 0x2f, 0x54, 0x7a, 0x31, 0x75, 0x72, 0x50, 0x37, 0x56, 0x4f, 0x6e, 0x61, 0x67, 0x39, 0x72, 0x72, 0x2b, 0x47, 0x37, 0x31, 0x74, 0x36, 0x31, 0x71, 0x77, 0x34, 0x35, 0x5c, 0x0a, 0x09, 0x35, 0x39, 0x42, 0x53, 0x53, 0x79, 0x31, 0x74, 0x54, 0x73, 0x6f, 0x32, 0x6d, 0x6f, 0x47, 0x57, 0x57, 0x6d, 0x70, 0x70, 0x34, 0x36, 0x67, 0x46, 0x67, 0x4a, 0x5a, 0x61, 0x32, 0x73, 0x54, 0x55, 0x41, 0x6b, 0x42, 0x4c, 0x4c, 0x57, 0x31, 0x69, 0x61, 0x67, 0x47, 0x67, 0x70, 0x5a, 0x59, 0x32, 0x4d, 0x62, 0x55, 0x41, 0x30, 0x46, 0x4a, 0x4c, 0x6d, 0x35, 0x68, 0x61, 0x41, 0x47, 0x69, 0x70, 0x70, 0x55, 0x31, 0x4d, 0x4c, 0x51, 0x43, 0x30, 0x5c, 0x0a, 0x09, 0x31, 0x4e, 0x49, 0x6d, 0x70, 0x68, 0x59, 0x41, 0x57, 0x6d, 0x70, 0x70, 0x45, 0x31, 0x4d, 0x4c, 0x41, 0x43, 0x32, 0x31, 0x74, 0x49, 0x6d, 0x70, 0x42, 0x59, 0x43, 0x57, 0x57, 0x74, 0x72, 0x45, 0x31, 0x41, 0x4a, 0x41, 0x53, 0x79, 0x31, 0x74, 0x59, 0x6d, 0x6f, 0x42, 0x6f, 0x4b, 0x57, 0x57, 0x4e, 0x6a, 0x47, 0x31, 0x41, 0x4e, 0x42, 0x53, 0x53, 0x35, 0x75, 0x59, 0x57, 0x67, 0x42, 0x6f, 0x71, 0x61, 0x56, 0x4e, 0x54, 0x43, 0x30, 0x41, 0x5c, 0x0a, 0x09, 0x74, 0x4e, 0x54, 0x53, 0x4a, 0x71, 0x59, 0x57, 0x41, 0x46, 0x70, 0x71, 0x61, 0x52, 0x4e, 0x54, 0x43, 0x77, 0x41, 0x74, 0x74, 0x62, 0x53, 0x4a, 0x71, 0x51, 0x57, 0x41, 0x6c, 0x6c, 0x72, 0x61, 0x78, 0x4e, 0x51, 0x43, 0x51, 0x45, 0x73, 0x74, 0x62, 0x57, 0x4a, 0x71, 0x41, 0x61, 0x43, 0x6c, 0x6c, 0x6a, 0x59, 0x78, 0x74, 0x51, 0x44, 0x51, 0x55, 0x6b, 0x75, 0x62, 0x6d, 0x46, 0x6f, 0x41, 0x61, 0x4b, 0x6d, 0x6c, 0x54, 0x55, 0x77, 0x74, 0x5c, 0x0a, 0x09, 0x41, 0x4c, 0x54, 0x55, 0x30, 0x69, 0x61, 0x6d, 0x46, 0x67, 0x42, 0x61, 0x61, 0x6d, 0x6b, 0x54, 0x55, 0x77, 0x73, 0x41, 0x4c, 0x62, 0x57, 0x30, 0x69, 0x61, 0x6b, 0x46, 0x67, 0x4a, 0x5a, 0x61, 0x32, 0x73, 0x54, 0x55, 0x41, 0x6b, 0x42, 0x4c, 0x4c, 0x57, 0x31, 0x69, 0x61, 0x67, 0x47, 0x67, 0x70, 0x5a, 0x59, 0x32, 0x4d, 0x62, 0x55, 0x41, 0x30, 0x46, 0x4a, 0x4c, 0x6d, 0x35, 0x68, 0x61, 0x41, 0x47, 0x69, 0x70, 0x70, 0x55, 0x31, 0x4d, 0x5c, 0x0a, 0x09, 0x4c, 0x51, 0x43, 0x30, 0x31, 0x4e, 0x49, 0x6d, 0x70, 0x68, 0x59, 0x41, 0x57, 0x6d, 0x70, 0x70, 0x45, 0x31, 0x4d, 0x4c, 0x41, 0x43, 0x32, 0x31, 0x74, 0x49, 0x6d, 0x70, 0x42, 0x59, 0x43, 0x57, 0x57, 0x74, 0x72, 0x45, 0x31, 0x41, 0x4a, 0x41, 0x53, 0x79, 0x31, 0x74, 0x59, 0x6d, 0x6f, 0x42, 0x6f, 0x4b, 0x57, 0x57, 0x4e, 0x6a, 0x47, 0x31, 0x41, 0x4e, 0x42, 0x53, 0x53, 0x35, 0x75, 0x59, 0x57, 0x67, 0x42, 0x6f, 0x71, 0x61, 0x56, 0x4e, 0x5c, 0x0a, 0x09, 0x54, 0x43, 0x30, 0x41, 0x74, 0x4e, 0x54, 0x53, 0x4a, 0x71, 0x59, 0x57, 0x41, 0x46, 0x70, 0x71, 0x61, 0x52, 0x4e, 0x54, 0x43, 0x77, 0x41, 0x74, 0x74, 0x62, 0x53, 0x4a, 0x71, 0x51, 0x57, 0x41, 0x6c, 0x6c, 0x72, 0x61, 0x78, 0x4e, 0x51, 0x43, 0x51, 0x45, 0x73, 0x74, 0x62, 0x57, 0x4a, 0x71, 0x41, 0x61, 0x43, 0x6c, 0x6c, 0x6a, 0x59, 0x78, 0x74, 0x51, 0x44, 0x51, 0x55, 0x6b, 0x75, 0x62, 0x6d, 0x46, 0x6f, 0x41, 0x61, 0x4b, 0x6d, 0x6c, 0x5c, 0x0a, 0x09, 0x54, 0x55, 0x77, 0x74, 0x41, 0x4c, 0x54, 0x55, 0x30, 0x69, 0x61, 0x6d, 0x46, 0x67, 0x42, 0x61, 0x61, 0x6d, 0x6b, 0x54, 0x55, 0x32, 0x65, 0x6a, 0x47, 0x57, 0x69, 0x70, 0x70, 0x66, 0x38, 0x6f, 0x74, 0x48, 0x2f, 0x66, 0x76, 0x6e, 0x68, 0x4d, 0x49, 0x41, 0x44, 0x41, 0x44, 0x54, 0x66, 0x66, 0x74, 0x45, 0x48, 0x63, 0x48, 0x42, 0x32, 0x31, 0x47, 0x55, 0x42, 0x4c, 0x4c, 0x61, 0x30, 0x75, 0x50, 0x59, 0x74, 0x41, 0x31, 0x77, 0x4f, 0x59, 0x5c, 0x0a, 0x09, 0x33, 0x6d, 0x68, 0x47, 0x6a, 0x6f, 0x5a, 0x61, 0x41, 0x47, 0x69, 0x70, 0x70, 0x56, 0x55, 0x67, 0x46, 0x76, 0x31, 0x2f, 0x79, 0x6a, 0x6e, 0x33, 0x4d, 0x41, 0x43, 0x58, 0x4f, 0x6a, 0x67, 0x63, 0x32, 0x48, 0x66, 0x61, 0x78, 0x6a, 0x46, 0x31, 0x46, 0x4e, 0x51, 0x43, 0x51, 0x45, 0x73, 0x74, 0x72, 0x52, 0x35, 0x31, 0x41, 0x56, 0x77, 0x4d, 0x41, 0x68, 0x7a, 0x63, 0x79, 0x77, 0x6a, 0x55, 0x63, 0x33, 0x41, 0x62, 0x7a, 0x64, 0x4e, 0x49, 0x5c, 0x0a, 0x09, 0x61, 0x67, 0x47, 0x67, 0x70, 0x5a, 0x5a, 0x57, 0x67, 0x78, 0x78, 0x41, 0x6f, 0x4d, 0x66, 0x44, 0x59, 0x57, 0x73, 0x31, 0x2f, 0x39, 0x2f, 0x74, 0x34, 0x48, 0x35, 0x67, 0x6f, 0x39, 0x6c, 0x61, 0x69, 0x56, 0x6f, 0x41, 0x61, 0x4b, 0x6d, 0x6c, 0x56, 0x53, 0x4c, 0x6e, 0x33, 0x4e, 0x4f, 0x4a, 0x71, 0x50, 0x6f, 0x43, 0x45, 0x4f, 0x67, 0x46, 0x63, 0x4d, 0x44, 0x2b, 0x76, 0x66, 0x73, 0x32, 0x6c, 0x4b, 0x39, 0x52, 0x31, 0x41, 0x4a, 0x41, 0x5c, 0x0a, 0x09, 0x53, 0x79, 0x33, 0x39, 0x4f, 0x79, 0x6e, 0x4d, 0x2f, 0x34, 0x6e, 0x6f, 0x6d, 0x63, 0x35, 0x56, 0x4b, 0x62, 0x2f, 0x48, 0x67, 0x52, 0x2b, 0x47, 0x6e, 0x78, 0x59, 0x63, 0x73, 0x39, 0x51, 0x43, 0x51, 0x45, 0x73, 0x74, 0x72, 0x51, 0x59, 0x52, 0x39, 0x6a, 0x75, 0x34, 0x63, 0x79, 0x76, 0x48, 0x42, 0x77, 0x41, 0x34, 0x75, 0x43, 0x6b, 0x69, 0x75, 0x6d, 0x6a, 0x6a, 0x6d, 0x46, 0x71, 0x5a, 0x57, 0x67, 0x42, 0x6f, 0x71, 0x61, 0x56, 0x56, 0x5c, 0x0a, 0x09, 0x49, 0x41, 0x4c, 0x39, 0x69, 0x44, 0x6a, 0x68, 0x34, 0x6c, 0x36, 0x41, 0x5a, 0x38, 0x52, 0x70, 0x77, 0x54, 0x46, 0x49, 0x4c, 0x51, 0x43, 0x30, 0x31, 0x4e, 0x4b, 0x2f, 0x67, 0x30, 0x4c, 0x36, 0x37, 0x2b, 0x42, 0x2b, 0x42, 0x50, 0x42, 0x4f, 0x37, 0x2b, 0x42, 0x41, 0x52, 0x4b, 0x69, 0x6d, 0x41, 0x7a, 0x2f, 0x67, 0x34, 0x4d, 0x51, 0x6d, 0x6f, 0x57, 0x4f, 0x4a, 0x57, 0x67, 0x42, 0x6f, 0x71, 0x61, 0x56, 0x2f, 0x50, 0x35, 0x30, 0x44, 0x5c, 0x0a, 0x09, 0x34, 0x48, 0x77, 0x34, 0x49, 0x4b, 0x34, 0x42, 0x41, 0x4b, 0x67, 0x69, 0x2f, 0x37, 0x6b, 0x41, 0x64, 0x6d, 0x77, 0x51, 0x58, 0x79, 0x74, 0x53, 0x43, 0x77, 0x41, 0x74, 0x74, 0x66, 0x51, 0x51, 0x4b, 0x57, 0x7a, 0x79, 0x49, 0x64, 0x41, 0x76, 0x45, 0x4d, 0x67, 0x37, 0x50, 0x41, 0x48, 0x68, 0x31, 0x72, 0x39, 0x7a, 0x44, 0x67, 0x36, 0x4f, 0x41, 0x44, 0x78, 0x70, 0x77, 0x35, 0x68, 0x63, 0x67, 0x56, 0x6f, 0x41, 0x61, 0x4b, 0x6d, 0x6c, 0x5c, 0x0a, 0x09, 0x68, 0x30, 0x67, 0x4f, 0x44, 0x67, 0x54, 0x61, 0x42, 0x2b, 0x43, 0x6e, 0x6e, 0x58, 0x4d, 0x69, 0x2b, 0x67, 0x4d, 0x41, 0x79, 0x45, 0x38, 0x4a, 0x43, 0x50, 0x52, 0x39, 0x36, 0x38, 0x2f, 0x64, 0x30, 0x56, 0x45, 0x4c, 0x41, 0x43, 0x32, 0x31, 0x39, 0x42, 0x41, 0x6f, 0x52, 0x48, 0x38, 0x48, 0x39, 0x33, 0x62, 0x6e, 0x6e, 0x4c, 0x2f, 0x56, 0x46, 0x39, 0x62, 0x36, 0x2f, 0x45, 0x37, 0x41, 0x63, 0x42, 0x30, 0x41, 0x6e, 0x67, 0x6a, 0x67, 0x5c, 0x0a, 0x09, 0x6d, 0x46, 0x77, 0x48, 0x61, 0x4a, 0x38, 0x47, 0x62, 0x4b, 0x6d, 0x6c, 0x37, 0x34, 0x4c, 0x55, 0x45, 0x33, 0x2b, 0x76, 0x63, 0x6e, 0x41, 0x2f, 0x46, 0x4e, 0x4c, 0x2b, 0x73, 0x41, 0x42, 0x59, 0x58, 0x51, 0x50, 0x67, 0x41, 0x63, 0x44, 0x42, 0x50, 0x52, 0x72, 0x2b, 0x34, 0x61, 0x43, 0x5a, 0x64, 0x57, 0x64, 0x34, 0x42, 0x54, 0x6f, 0x6d, 0x41, 0x4f, 0x44, 0x41, 0x76, 0x74, 0x4f, 0x51, 0x37, 0x4a, 0x6d, 0x32, 0x74, 0x6c, 0x42, 0x54, 0x5c, 0x0a, 0x09, 0x77, 0x7a, 0x57, 0x71, 0x42, 0x51, 0x34, 0x63, 0x2b, 0x34, 0x39, 0x67, 0x74, 0x76, 0x52, 0x2f, 0x4a, 0x37, 0x45, 0x48, 0x65, 0x77, 0x6a, 0x41, 0x71, 0x78, 0x7a, 0x63, 0x57, 0x2b, 0x41, 0x51, 0x37, 0x62, 0x4b, 0x61, 0x45, 0x73, 0x54, 0x79, 0x44, 0x41, 0x77, 0x79, 0x41, 0x45, 0x39, 0x30, 0x63, 0x50, 0x2b, 0x77, 0x6a, 0x75, 0x77, 0x65, 0x46, 0x52, 0x30, 0x54, 0x41, 0x46, 0x41, 0x4a, 0x37, 0x71, 0x63, 0x64, 0x33, 0x48, 0x6b, 0x45, 0x5c, 0x0a, 0x09, 0x6d, 0x6e, 0x56, 0x77, 0x51, 0x79, 0x49, 0x36, 0x37, 0x4a, 0x77, 0x72, 0x51, 0x54, 0x67, 0x45, 0x68, 0x77, 0x4b, 0x45, 0x49, 0x77, 0x52, 0x61, 0x42, 0x6a, 0x44, 0x6e, 0x79, 0x43, 0x33, 0x43, 0x59, 0x52, 0x48, 0x41, 0x50, 0x41, 0x67, 0x44, 0x41, 0x73, 0x30, 0x43, 0x47, 0x41, 0x4b, 0x59, 0x63, 0x58, 0x42, 0x4f, 0x70, 0x31, 0x6f, 0x52, 0x6a, 0x66, 0x6b, 0x63, 0x6a, 0x64, 0x2b, 0x61, 0x64, 0x62, 0x44, 0x50, 0x4b, 0x2b, 0x49, 0x49, 0x5c, 0x0a, 0x09, 0x62, 0x37, 0x55, 0x50, 0x74, 0x4f, 0x44, 0x7a, 0x48, 0x34, 0x30, 0x4d, 0x57, 0x33, 0x6f, 0x34, 0x67, 0x4c, 0x63, 0x36, 0x35, 0x35, 0x35, 0x42, 0x52, 0x48, 0x44, 0x6b, 0x2b, 0x44, 0x56, 0x76, 0x48, 0x79, 0x36, 0x65, 0x34, 0x50, 0x51, 0x45, 0x41, 0x4d, 0x63, 0x63, 0x41, 0x46, 0x43, 0x79, 0x63, 0x4c, 0x48, 0x4f, 0x78, 0x4b, 0x4c, 0x2f, 0x31, 0x51, 0x51, 0x36, 0x4f, 0x36, 0x42, 0x6f, 0x2f, 0x48, 0x54, 0x56, 0x50, 0x56, 0x55, 0x6d, 0x5c, 0x0a, 0x09, 0x57, 0x4c, 0x36, 0x78, 0x49, 0x6a, 0x71, 0x6b, 0x51, 0x31, 0x30, 0x4f, 0x6d, 0x43, 0x48, 0x51, 0x30, 0x4d, 0x48, 0x4e, 0x45, 0x6d, 0x67, 0x41, 0x59, 0x42, 0x37, 0x41, 0x45, 0x6f, 0x41, 0x46, 0x35, 0x39, 0x77, 0x53, 0x43, 0x41, 0x76, 0x68, 0x4f, 0x34, 0x41, 0x6c, 0x41, 0x69, 0x30, 0x34, 0x35, 0x35, 0x61, 0x49, 0x61, 0x41, 0x48, 0x41, 0x77, 0x4d, 0x48, 0x4e, 0x45, 0x79, 0x6a, 0x35, 0x72, 0x4e, 0x70, 0x70, 0x4f, 0x6c, 0x38, 0x34, 0x5c, 0x0a, 0x09, 0x75, 0x43, 0x4d, 0x6a, 0x42, 0x39, 0x73, 0x45, 0x4e, 0x4e, 0x2b, 0x4e, 0x43, 0x69, 0x79, 0x41, 0x4f, 0x6f, 0x70, 0x32, 0x62, 0x37, 0x7a, 0x6c, 0x35, 0x75, 0x2b, 0x69, 0x6b, 0x38, 0x31, 0x4a, 0x30, 0x64, 0x6c, 0x54, 0x65, 0x55, 0x34, 0x41, 0x65, 0x41, 0x61, 0x41, 0x6e, 0x77, 0x54, 0x77, 0x51, 0x2f, 0x34, 0x32, 0x76, 0x33, 0x4a, 0x32, 0x49, 0x4e, 0x37, 0x37, 0x5a, 0x33, 0x62, 0x49, 0x70, 0x77, 0x4b, 0x66, 0x68, 0x73, 0x4f, 0x54, 0x5c, 0x0a, 0x09, 0x69, 0x65, 0x69, 0x59, 0x43, 0x68, 0x49, 0x62, 0x6e, 0x67, 0x46, 0x55, 0x6a, 0x6a, 0x34, 0x4f, 0x34, 0x42, 0x48, 0x63, 0x2b, 0x51, 0x50, 0x46, 0x44, 0x52, 0x57, 0x45, 0x78, 0x75, 0x67, 0x73, 0x36, 0x6e, 0x67, 0x67, 0x6d, 0x4b, 0x36, 0x4f, 0x6a, 0x77, 0x73, 0x4c, 0x4d, 0x6e, 0x79, 0x44, 0x52, 0x75, 0x79, 0x37, 0x61, 0x6a, 0x64, 0x75, 0x33, 0x4b, 0x67, 0x55, 0x79, 0x76, 0x76, 0x6b, 0x51, 0x42, 0x54, 0x36, 0x31, 0x38, 0x44, 0x45, 0x5c, 0x0a, 0x09, 0x41, 0x61, 0x73, 0x61, 0x30, 0x32, 0x45, 0x41, 0x6a, 0x6b, 0x42, 0x7a, 0x41, 0x4a, 0x59, 0x64, 0x33, 0x43, 0x4b, 0x41, 0x52, 0x53, 0x49, 0x61, 0x4f, 0x75, 0x64, 0x6d, 0x71, 0x32, 0x4b, 0x48, 0x4b, 0x6a, 0x5a, 0x6d, 0x51, 0x52, 0x6a, 0x43, 0x59, 0x52, 0x47, 0x45, 0x52, 0x51, 0x42, 0x44, 0x4f, 0x4d, 0x77, 0x53, 0x6b, 0x58, 0x50, 0x4f, 0x7a, 0x56, 0x54, 0x54, 0x6d, 0x79, 0x50, 0x4f, 0x75, 0x51, 0x4b, 0x45, 0x42, 0x51, 0x49, 0x74, 0x5c, 0x0a, 0x09, 0x4f, 0x62, 0x69, 0x43, 0x51, 0x45, 0x65, 0x71, 0x4d, 0x66, 0x74, 0x36, 0x50, 0x68, 0x55, 0x39, 0x41, 0x71, 0x44, 0x77, 0x55, 0x73, 0x42, 0x4d, 0x4e, 0x54, 0x63, 0x64, 0x41, 0x4a, 0x6a, 0x66, 0x76, 0x32, 0x2b, 0x66, 0x6e, 0x51, 0x6d, 0x4e, 0x6f, 0x71, 0x5a, 0x73, 0x36, 0x47, 0x67, 0x79, 0x4a, 0x71, 0x75, 0x4d, 0x63, 0x53, 0x37, 0x4a, 0x71, 0x6f, 0x34, 0x79, 0x47, 0x30, 0x76, 0x4b, 0x41, 0x6e, 0x7a, 0x7a, 0x54, 0x58, 0x4f, 0x2f, 0x5c, 0x0a, 0x09, 0x6d, 0x67, 0x69, 0x36, 0x7a, 0x35, 0x79, 0x49, 0x48, 0x75, 0x36, 0x63, 0x4f, 0x77, 0x2b, 0x45, 0x52, 0x77, 0x48, 0x34, 0x58, 0x67, 0x49, 0x39, 0x33, 0x73, 0x46, 0x31, 0x49, 0x36, 0x39, 0x55, 0x32, 0x30, 0x36, 0x77, 0x70, 0x32, 0x71, 0x75, 0x37, 0x34, 0x2f, 0x44, 0x4e, 0x57, 0x6d, 0x58, 0x6a, 0x79, 0x57, 0x69, 0x33, 0x4d, 0x45, 0x56, 0x4b, 0x34, 0x78, 0x71, 0x58, 0x57, 0x6e, 0x44, 0x41, 0x51, 0x41, 0x41, 0x48, 0x4e, 0x79, 0x35, 0x5c, 0x0a, 0x09, 0x41, 0x48, 0x4c, 0x74, 0x57, 0x41, 0x49, 0x49, 0x6d, 0x50, 0x45, 0x47, 0x4a, 0x56, 0x53, 0x33, 0x57, 0x45, 0x52, 0x62, 0x59, 0x74, 0x73, 0x6c, 0x63, 0x2b, 0x44, 0x51, 0x52, 0x6a, 0x41, 0x51, 0x49, 0x68, 0x4c, 0x4b, 0x45, 0x2f, 0x77, 0x77, 0x42, 0x59, 0x62, 0x76, 0x75, 0x71, 0x77, 0x46, 0x45, 0x75, 0x7a, 0x36, 0x56, 0x46, 0x56, 0x76, 0x6d, 0x6f, 0x69, 0x69, 0x49, 0x58, 0x43, 0x2b, 0x51, 0x31, 0x6b, 0x4f, 0x4c, 0x76, 0x45, 0x38, 0x5c, 0x0a, 0x09, 0x31, 0x58, 0x30, 0x59, 0x73, 0x75, 0x4a, 0x66, 0x61, 0x72, 0x35, 0x49, 0x7a, 0x54, 0x38, 0x44, 0x7a, 0x35, 0x4b, 0x2f, 0x65, 0x51, 0x44, 0x4c, 0x46, 0x65, 0x38, 0x7a, 0x46, 0x63, 0x67, 0x4d, 0x41, 0x63, 0x78, 0x57, 0x35, 0x30, 0x4a, 0x6d, 0x42, 0x43, 0x49, 0x36, 0x41, 0x70, 0x2f, 0x56, 0x6c, 0x41, 0x41, 0x4f, 0x52, 0x2f, 0x6d, 0x68, 0x79, 0x71, 0x44, 0x71, 0x75, 0x65, 0x38, 0x79, 0x67, 0x44, 0x6b, 0x32, 0x4a, 0x6c, 0x2b, 0x65, 0x5c, 0x0a, 0x09, 0x61, 0x76, 0x34, 0x63, 0x33, 0x41, 0x77, 0x41, 0x78, 0x32, 0x51, 0x32, 0x43, 0x32, 0x44, 0x49, 0x39, 0x4c, 0x4c, 0x67, 0x34, 0x4a, 0x59, 0x49, 0x46, 0x4a, 0x32, 0x4c, 0x52, 0x31, 0x48, 0x65, 0x68, 0x34, 0x69, 0x73, 0x77, 0x52, 0x47, 0x42, 0x6a, 0x49, 0x69, 0x6d, 0x74, 0x46, 0x34, 0x71, 0x36, 0x68, 0x4c, 0x52, 0x70, 0x48, 0x4f, 0x75, 0x43, 0x38, 0x49, 0x6b, 0x48, 0x4d, 0x4a, 0x6e, 0x68, 0x34, 0x69, 0x32, 0x4f, 0x4c, 0x68, 0x70, 0x5c, 0x0a, 0x09, 0x45, 0x4c, 0x62, 0x42, 0x34, 0x58, 0x67, 0x69, 0x4f, 0x74, 0x6b, 0x35, 0x64, 0x38, 0x43, 0x52, 0x47, 0x2b, 0x4d, 0x79, 0x35, 0x72, 0x4c, 0x6c, 0x49, 0x4d, 0x41, 0x70, 0x79, 0x6a, 0x36, 0x73, 0x42, 0x7a, 0x68, 0x6d, 0x76, 0x7a, 0x35, 0x34, 0x54, 0x54, 0x69, 0x34, 0x73, 0x77, 0x46, 0x63, 0x6c, 0x53, 0x68, 0x31, 0x41, 0x2b, 0x6d, 0x59, 0x41, 0x41, 0x41, 0x43, 0x50, 0x64, 0x72, 0x42, 0x53, 0x63, 0x56, 0x56, 0x42, 0x6b, 0x62, 0x77, 0x5c, 0x0a, 0x09, 0x38, 0x79, 0x79, 0x52, 0x42, 0x66, 0x41, 0x56, 0x31, 0x31, 0x44, 0x4f, 0x53, 0x4d, 0x6d, 0x34, 0x4d, 0x71, 0x4a, 0x2b, 0x79, 0x48, 0x41, 0x53, 0x64, 0x73, 0x79, 0x56, 0x7a, 0x63, 0x46, 0x43, 0x74, 0x36, 0x4f, 0x7a, 0x42, 0x75, 0x37, 0x63, 0x30, 0x65, 0x47, 0x59, 0x38, 0x79, 0x6d, 0x41, 0x6b, 0x47, 0x4e, 0x4d, 0x6a, 0x54, 0x61, 0x4a, 0x49, 0x69, 0x4c, 0x62, 0x4d, 0x4b, 0x4a, 0x50, 0x35, 0x49, 0x6b, 0x5a, 0x49, 0x73, 0x2b, 0x4b, 0x5c, 0x0a, 0x09, 0x71, 0x74, 0x4d, 0x54, 0x4c, 0x4d, 0x75, 0x5a, 0x44, 0x6d, 0x4d, 0x4c, 0x73, 0x75, 0x64, 0x39, 0x36, 0x50, 0x48, 0x47, 0x66, 0x68, 0x6a, 0x50, 0x6a, 0x52, 0x51, 0x63, 0x6e, 0x35, 0x79, 0x6f, 0x45, 0x39, 0x74, 0x7a, 0x6b, 0x6e, 0x64, 0x72, 0x34, 0x55, 0x7a, 0x49, 0x78, 0x77, 0x42, 0x4a, 0x72, 0x67, 0x50, 0x65, 0x6a, 0x75, 0x57, 0x63, 0x51, 0x52, 0x34, 0x43, 0x51, 0x48, 0x69, 0x36, 0x37, 0x74, 0x49, 0x36, 0x2f, 0x4c, 0x72, 0x6d, 0x5c, 0x0a, 0x09, 0x30, 0x35, 0x79, 0x61, 0x57, 0x76, 0x55, 0x5a, 0x57, 0x46, 0x58, 0x6c, 0x4c, 0x33, 0x44, 0x4f, 0x48, 0x56, 0x4d, 0x41, 0x63, 0x4b, 0x7a, 0x73, 0x41, 0x33, 0x68, 0x4d, 0x6f, 0x32, 0x4b, 0x64, 0x45, 0x77, 0x61, 0x54, 0x4f, 0x42, 0x59, 0x7a, 0x78, 0x48, 0x41, 0x74, 0x52, 0x50, 0x66, 0x34, 0x6a, 0x36, 0x6a, 0x65, 0x6e, 0x56, 0x55, 0x5a, 0x4f, 0x30, 0x2f, 0x6c, 0x51, 0x68, 0x6d, 0x65, 0x50, 0x6e, 0x4c, 0x41, 0x34, 0x55, 0x59, 0x54, 0x5c, 0x0a, 0x09, 0x32, 0x71, 0x6a, 0x42, 0x6e, 0x55, 0x51, 0x36, 0x79, 0x38, 0x63, 0x51, 0x32, 0x6b, 0x73, 0x79, 0x44, 0x4f, 0x35, 0x77, 0x69, 0x70, 0x66, 0x41, 0x44, 0x32, 0x2f, 0x50, 0x6e, 0x42, 0x61, 0x70, 0x4e, 0x68, 0x4d, 0x6e, 0x63, 0x69, 0x78, 0x44, 0x49, 0x6c, 0x6e, 0x4f, 0x64, 0x46, 0x35, 0x31, 0x53, 0x6d, 0x64, 0x5a, 0x6b, 0x5a, 0x63, 0x52, 0x6a, 0x68, 0x39, 0x30, 0x6c, 0x66, 0x42, 0x41, 0x4a, 0x44, 0x36, 0x35, 0x54, 0x43, 0x4c, 0x66, 0x5c, 0x0a, 0x09, 0x59, 0x54, 0x6a, 0x4f, 0x48, 0x6c, 0x2b, 0x55, 0x47, 0x35, 0x4d, 0x72, 0x50, 0x36, 0x65, 0x4c, 0x4a, 0x2b, 0x31, 0x43, 0x32, 0x6c, 0x55, 0x59, 0x53, 0x7a, 0x6a, 0x48, 0x77, 0x59, 0x50, 0x4c, 0x6d, 0x37, 0x66, 0x50, 0x62, 0x55, 0x65, 0x33, 0x41, 0x34, 0x63, 0x34, 0x58, 0x6a, 0x36, 0x2b, 0x61, 0x43, 0x64, 0x65, 0x31, 0x34, 0x39, 0x72, 0x46, 0x4e, 0x34, 0x47, 0x30, 0x59, 0x59, 0x43, 0x77, 0x50, 0x36, 0x39, 0x2b, 0x34, 0x4a, 0x67, 0x5c, 0x0a, 0x09, 0x48, 0x38, 0x55, 0x4e, 0x51, 0x69, 0x4f, 0x31, 0x6e, 0x6d, 0x73, 0x44, 0x38, 0x50, 0x57, 0x43, 0x4d, 0x69, 0x43, 0x6e, 0x44, 0x4f, 0x45, 0x38, 0x4e, 0x78, 0x61, 0x74, 0x4d, 0x4f, 0x34, 0x63, 0x49, 0x6c, 0x56, 0x7a, 0x64, 0x54, 0x62, 0x41, 0x2f, 0x31, 0x6e, 0x54, 0x6b, 0x64, 0x43, 0x58, 0x53, 0x53, 0x77, 0x71, 0x36, 0x4e, 0x52, 0x56, 0x39, 0x4b, 0x76, 0x41, 0x49, 0x2f, 0x4a, 0x4a, 0x63, 0x6c, 0x36, 0x5a, 0x47, 0x44, 0x49, 0x33, 0x5c, 0x0a, 0x09, 0x4e, 0x49, 0x4f, 0x46, 0x43, 0x43, 0x34, 0x75, 0x58, 0x56, 0x63, 0x52, 0x36, 0x61, 0x6e, 0x46, 0x64, 0x2f, 0x68, 0x30, 0x55, 0x70, 0x5a, 0x4a, 0x4f, 0x2b, 0x78, 0x66, 0x34, 0x4a, 0x6c, 0x2f, 0x61, 0x72, 0x43, 0x49, 0x5a, 0x61, 0x6e, 0x75, 0x4a, 0x39, 0x45, 0x50, 0x72, 0x78, 0x4c, 0x30, 0x77, 0x65, 0x71, 0x49, 0x31, 0x4e, 0x2f, 0x56, 0x66, 0x43, 0x62, 0x7a, 0x66, 0x30, 0x69, 0x77, 0x45, 0x39, 0x4d, 0x35, 0x35, 0x61, 0x51, 0x36, 0x5c, 0x0a, 0x09, 0x36, 0x2b, 0x44, 0x50, 0x39, 0x50, 0x4f, 0x4d, 0x69, 0x6f, 0x4d, 0x59, 0x6c, 0x32, 0x47, 0x30, 0x46, 0x2f, 0x6b, 0x79, 0x6b, 0x47, 0x54, 0x73, 0x41, 0x43, 0x34, 0x45, 0x6a, 0x71, 0x30, 0x4e, 0x51, 0x63, 0x64, 0x43, 0x42, 0x74, 0x41, 0x6c, 0x30, 0x4c, 0x6e, 0x68, 0x69, 0x31, 0x43, 0x69, 0x51, 0x32, 0x4a, 0x77, 0x38, 0x53, 0x75, 0x66, 0x4b, 0x72, 0x42, 0x50, 0x45, 0x57, 0x6c, 0x34, 0x55, 0x38, 0x48, 0x51, 0x41, 0x6c, 0x67, 0x77, 0x5c, 0x0a, 0x09, 0x38, 0x49, 0x6a, 0x39, 0x4d, 0x4b, 0x66, 0x56, 0x6b, 0x55, 0x59, 0x72, 0x6c, 0x42, 0x75, 0x63, 0x42, 0x68, 0x49, 0x64, 0x77, 0x51, 0x57, 0x66, 0x53, 0x4e, 0x4e, 0x4a, 0x31, 0x6f, 0x6d, 0x34, 0x72, 0x71, 0x2f, 0x70, 0x71, 0x4b, 0x5a, 0x65, 0x50, 0x70, 0x48, 0x30, 0x41, 0x5a, 0x62, 0x42, 0x61, 0x50, 0x37, 0x46, 0x47, 0x48, 0x6e, 0x55, 0x5a, 0x75, 0x50, 0x6a, 0x52, 0x68, 0x33, 0x54, 0x63, 0x45, 0x73, 0x57, 0x71, 0x41, 0x46, 0x61, 0x5c, 0x0a, 0x09, 0x33, 0x36, 0x45, 0x78, 0x6e, 0x59, 0x7a, 0x78, 0x7a, 0x4f, 0x55, 0x6f, 0x2b, 0x47, 0x54, 0x4f, 0x4c, 0x6b, 0x43, 0x54, 0x5a, 0x57, 0x7a, 0x67, 0x30, 0x79, 0x41, 0x47, 0x32, 0x68, 0x5a, 0x70, 0x2f, 0x69, 0x49, 0x51, 0x36, 0x4c, 0x46, 0x58, 0x4d, 0x74, 0x50, 0x79, 0x31, 0x30, 0x47, 0x47, 0x5a, 0x35, 0x58, 0x57, 0x74, 0x46, 0x4a, 0x6e, 0x6c, 0x68, 0x58, 0x2f, 0x5a, 0x34, 0x4c, 0x38, 0x2b, 0x74, 0x43, 0x78, 0x51, 0x68, 0x73, 0x4f, 0x5c, 0x0a, 0x09, 0x41, 0x45, 0x52, 0x30, 0x46, 0x6f, 0x41, 0x65, 0x52, 0x31, 0x71, 0x4e, 0x77, 0x50, 0x47, 0x37, 0x55, 0x39, 0x45, 0x62, 0x64, 0x70, 0x53, 0x70, 0x47, 0x34, 0x65, 0x4d, 0x53, 0x67, 0x6f, 0x6b, 0x51, 0x76, 0x6d, 0x6f, 0x7a, 0x42, 0x42, 0x6c, 0x2b, 0x48, 0x66, 0x57, 0x70, 0x67, 0x61, 0x6a, 0x6d, 0x4a, 0x30, 0x77, 0x2f, 0x72, 0x67, 0x68, 0x69, 0x58, 0x6f, 0x38, 0x30, 0x33, 0x44, 0x79, 0x47, 0x68, 0x38, 0x6a, 0x6a, 0x31, 0x44, 0x57, 0x5c, 0x0a, 0x09, 0x6d, 0x45, 0x52, 0x62, 0x41, 0x52, 0x51, 0x30, 0x4b, 0x41, 0x5a, 0x5a, 0x61, 0x52, 0x41, 0x4a, 0x78, 0x55, 0x6a, 0x4b, 0x7a, 0x38, 0x71, 0x49, 0x72, 0x49, 0x7a, 0x48, 0x57, 0x76, 0x45, 0x32, 0x2b, 0x57, 0x50, 0x31, 0x72, 0x4f, 0x79, 0x4a, 0x38, 0x38, 0x58, 0x6e, 0x32, 0x61, 0x4a, 0x74, 0x79, 0x34, 0x2b, 0x35, 0x54, 0x74, 0x4b, 0x6e, 0x37, 0x6b, 0x62, 0x79, 0x4a, 0x57, 0x54, 0x4f, 0x2b, 0x2b, 0x54, 0x4f, 0x7a, 0x75, 0x78, 0x44, 0x5c, 0x0a, 0x09, 0x5a, 0x35, 0x41, 0x61, 0x33, 0x45, 0x57, 0x2f, 0x54, 0x75, 0x6f, 0x35, 0x64, 0x73, 0x6d, 0x79, 0x6d, 0x77, 0x70, 0x6f, 0x69, 0x55, 0x44, 0x66, 0x59, 0x34, 0x78, 0x73, 0x77, 0x32, 0x6a, 0x44, 0x41, 0x51, 0x44, 0x41, 0x59, 0x2f, 0x53, 0x4a, 0x42, 0x4d, 0x6c, 0x46, 0x49, 0x47, 0x55, 0x70, 0x71, 0x62, 0x45, 0x34, 0x78, 0x38, 0x76, 0x46, 0x4b, 0x4f, 0x4a, 0x50, 0x4a, 0x4d, 0x71, 0x4a, 0x42, 0x73, 0x6f, 0x4d, 0x51, 0x73, 0x77, 0x2f, 0x5c, 0x0a, 0x09, 0x6b, 0x36, 0x43, 0x56, 0x70, 0x74, 0x30, 0x52, 0x43, 0x49, 0x4b, 0x54, 0x67, 0x4a, 0x49, 0x73, 0x68, 0x6e, 0x38, 0x4b, 0x77, 0x47, 0x46, 0x74, 0x52, 0x6d, 0x66, 0x47, 0x43, 0x69, 0x6d, 0x36, 0x49, 0x6a, 0x30, 0x66, 0x6a, 0x56, 0x47, 0x55, 0x4f, 0x62, 0x49, 0x77, 0x61, 0x4f, 0x59, 0x45, 0x63, 0x53, 0x79, 0x73, 0x54, 0x77, 0x74, 0x38, 0x42, 0x4a, 0x41, 0x5a, 0x36, 0x61, 0x30, 0x41, 0x6d, 0x70, 0x43, 0x57, 0x73, 0x7a, 0x37, 0x45, 0x5c, 0x0a, 0x09, 0x4f, 0x42, 0x76, 0x47, 0x6c, 0x2f, 0x54, 0x4e, 0x6e, 0x5a, 0x47, 0x74, 0x6b, 0x38, 0x54, 0x7a, 0x56, 0x47, 0x64, 0x75, 0x2b, 0x70, 0x6f, 0x59, 0x46, 0x77, 0x50, 0x6b, 0x79, 0x41, 0x75, 0x37, 0x79, 0x36, 0x51, 0x6a, 0x65, 0x7a, 0x49, 0x6d, 0x6c, 0x58, 0x6e, 0x70, 0x31, 0x44, 0x2f, 0x79, 0x45, 0x73, 0x62, 0x49, 0x77, 0x56, 0x6a, 0x5a, 0x5a, 0x4e, 0x56, 0x76, 0x59, 0x75, 0x38, 0x62, 0x53, 0x52, 0x73, 0x4b, 0x41, 0x42, 0x55, 0x79, 0x5c, 0x0a, 0x09, 0x50, 0x74, 0x6f, 0x79, 0x68, 0x71, 0x52, 0x73, 0x70, 0x51, 0x78, 0x52, 0x4c, 0x6a, 0x79, 0x42, 0x52, 0x61, 0x78, 0x4d, 0x51, 0x78, 0x54, 0x57, 0x61, 0x56, 0x72, 0x6f, 0x68, 0x36, 0x4e, 0x32, 0x45, 0x69, 0x30, 0x4e, 0x55, 0x4c, 0x47, 0x69, 0x61, 0x6f, 0x77, 0x55, 0x49, 0x55, 0x58, 0x56, 0x43, 0x35, 0x42, 0x49, 0x4d, 0x78, 0x66, 0x74, 0x38, 0x4c, 0x46, 0x39, 0x66, 0x6e, 0x74, 0x53, 0x70, 0x64, 0x7a, 0x38, 0x75, 0x33, 0x41, 0x6f, 0x5c, 0x0a, 0x09, 0x32, 0x4f, 0x65, 0x44, 0x73, 0x2b, 0x71, 0x73, 0x67, 0x6d, 0x63, 0x50, 0x6e, 0x42, 0x2f, 0x64, 0x68, 0x2b, 0x55, 0x55, 0x79, 0x54, 0x46, 0x7a, 0x51, 0x6e, 0x46, 0x33, 0x77, 0x74, 0x57, 0x4f, 0x31, 0x73, 0x53, 0x72, 0x50, 0x68, 0x66, 0x4c, 0x57, 0x6d, 0x6b, 0x35, 0x61, 0x68, 0x76, 0x67, 0x66, 0x59, 0x6c, 0x78, 0x36, 0x7a, 0x45, 0x5a, 0x55, 0x35, 0x74, 0x51, 0x56, 0x32, 0x53, 0x52, 0x6f, 0x55, 0x2b, 0x64, 0x63, 0x57, 0x71, 0x65, 0x5c, 0x0a, 0x09, 0x2b, 0x54, 0x77, 0x66, 0x74, 0x55, 0x36, 0x74, 0x76, 0x51, 0x63, 0x38, 0x75, 0x41, 0x53, 0x39, 0x56, 0x75, 0x30, 0x38, 0x35, 0x69, 0x69, 0x78, 0x66, 0x56, 0x31, 0x6f, 0x77, 0x77, 0x44, 0x67, 0x77, 0x4c, 0x37, 0x54, 0x51, 0x45, 0x54, 0x49, 0x38, 0x6c, 0x7a, 0x63, 0x41, 0x51, 0x43, 0x51, 0x70, 0x47, 0x49, 0x51, 0x38, 0x70, 0x56, 0x7a, 0x4c, 0x37, 0x37, 0x77, 0x49, 0x71, 0x59, 0x4b, 0x37, 0x42, 0x39, 0x58, 0x4f, 0x6c, 0x2b, 0x77, 0x5c, 0x0a, 0x09, 0x45, 0x61, 0x6b, 0x6f, 0x36, 0x79, 0x51, 0x34, 0x72, 0x70, 0x55, 0x2b, 0x78, 0x37, 0x49, 0x61, 0x4e, 0x4b, 0x69, 0x75, 0x78, 0x39, 0x4e, 0x35, 0x55, 0x51, 0x59, 0x71, 0x4b, 0x68, 0x73, 0x4c, 0x6c, 0x4b, 0x45, 0x4d, 0x42, 0x7a, 0x77, 0x75, 0x41, 0x79, 0x76, 0x36, 0x78, 0x73, 0x6a, 0x45, 0x6f, 0x68, 0x4e, 0x33, 0x6c, 0x67, 0x68, 0x4d, 0x54, 0x48, 0x61, 0x78, 0x72, 0x77, 0x43, 0x69, 0x72, 0x75, 0x5a, 0x66, 0x38, 0x38, 0x36, 0x6a, 0x5c, 0x0a, 0x09, 0x4a, 0x49, 0x2b, 0x65, 0x59, 0x64, 0x77, 0x57, 0x58, 0x36, 0x46, 0x76, 0x6b, 0x65, 0x6f, 0x62, 0x38, 0x6f, 0x78, 0x67, 0x77, 0x52, 0x32, 0x53, 0x6c, 0x50, 0x78, 0x5a, 0x56, 0x73, 0x48, 0x48, 0x70, 0x67, 0x47, 0x66, 0x67, 0x35, 0x61, 0x70, 0x4f, 0x35, 0x34, 0x39, 0x4d, 0x46, 0x6e, 0x7a, 0x64, 0x72, 0x6d, 0x38, 0x6d, 0x6a, 0x49, 0x59, 0x62, 0x6a, 0x4d, 0x63, 0x2b, 0x42, 0x4f, 0x67, 0x67, 0x62, 0x50, 0x47, 0x38, 0x52, 0x67, 0x41, 0x5c, 0x0a, 0x09, 0x78, 0x38, 0x77, 0x50, 0x68, 0x6d, 0x77, 0x59, 0x41, 0x50, 0x54, 0x48, 0x78, 0x75, 0x43, 0x63, 0x79, 0x7a, 0x71, 0x64, 0x2f, 0x44, 0x48, 0x36, 0x31, 0x6b, 0x70, 0x79, 0x37, 0x31, 0x55, 0x5a, 0x6b, 0x33, 0x55, 0x37, 0x43, 0x63, 0x54, 0x2b, 0x55, 0x43, 0x74, 0x48, 0x4b, 0x30, 0x58, 0x55, 0x71, 0x53, 0x2b, 0x6f, 0x72, 0x37, 0x62, 0x79, 0x6d, 0x79, 0x4b, 0x2f, 0x64, 0x70, 0x4c, 0x49, 0x4f, 0x37, 0x76, 0x48, 0x62, 0x68, 0x4c, 0x5a, 0x5c, 0x0a, 0x09, 0x42, 0x73, 0x6a, 0x37, 0x30, 0x30, 0x35, 0x68, 0x70, 0x61, 0x74, 0x52, 0x5a, 0x68, 0x5a, 0x65, 0x4d, 0x61, 0x50, 0x6e, 0x42, 0x69, 0x6d, 0x63, 0x52, 0x64, 0x58, 0x6c, 0x44, 0x69, 0x62, 0x36, 0x61, 0x70, 0x67, 0x53, 0x52, 0x53, 0x63, 0x30, 0x36, 0x70, 0x68, 0x70, 0x73, 0x73, 0x6f, 0x32, 0x65, 0x4e, 0x39, 0x4a, 0x4e, 0x71, 0x68, 0x42, 0x6b, 0x6a, 0x6d, 0x38, 0x75, 0x45, 0x2b, 0x76, 0x6f, 0x7a, 0x62, 0x62, 0x4e, 0x32, 0x44, 0x61, 0x5c, 0x0a, 0x09, 0x6a, 0x62, 0x72, 0x6c, 0x71, 0x6d, 0x32, 0x4d, 0x6a, 0x35, 0x6e, 0x72, 0x6c, 0x73, 0x74, 0x66, 0x67, 0x49, 0x4c, 0x4f, 0x38, 0x4a, 0x69, 0x38, 0x52, 0x4d, 0x5a, 0x43, 0x4f, 0x45, 0x42, 0x68, 0x70, 0x2b, 0x6f, 0x78, 0x51, 0x42, 0x73, 0x47, 0x41, 0x4c, 0x74, 0x33, 0x37, 0x63, 0x54, 0x30, 0x74, 0x6d, 0x31, 0x6e, 0x44, 0x67, 0x61, 0x44, 0x6e, 0x6a, 0x59, 0x49, 0x37, 0x55, 0x6a, 0x56, 0x67, 0x56, 0x51, 0x42, 0x51, 0x32, 0x68, 0x53, 0x5c, 0x0a, 0x09, 0x2f, 0x31, 0x44, 0x4e, 0x42, 0x2f, 0x6e, 0x39, 0x32, 0x61, 0x67, 0x58, 0x53, 0x68, 0x58, 0x4b, 0x69, 0x65, 0x38, 0x37, 0x30, 0x44, 0x77, 0x30, 0x52, 0x52, 0x65, 0x65, 0x65, 0x51, 0x41, 0x53, 0x77, 0x45, 0x51, 0x35, 0x48, 0x68, 0x46, 0x56, 0x57, 0x34, 0x6e, 0x6a, 0x4b, 0x47, 0x42, 0x67, 0x46, 0x78, 0x41, 0x7a, 0x47, 0x61, 0x54, 0x70, 0x4b, 0x75, 0x65, 0x4a, 0x5a, 0x7a, 0x4c, 0x57, 0x37, 0x63, 0x41, 0x49, 0x72, 0x6b, 0x5a, 0x62, 0x5c, 0x0a, 0x09, 0x47, 0x6f, 0x77, 0x30, 0x38, 0x65, 0x75, 0x57, 0x63, 0x77, 0x59, 0x2b, 0x39, 0x51, 0x4a, 0x64, 0x79, 0x47, 0x62, 0x30, 0x75, 0x6f, 0x31, 0x31, 0x53, 0x7a, 0x63, 0x36, 0x75, 0x41, 0x59, 0x4d, 0x7a, 0x6a, 0x73, 0x48, 0x4d, 0x53, 0x34, 0x72, 0x67, 0x72, 0x41, 0x5a, 0x49, 0x52, 0x73, 0x6c, 0x5a, 0x33, 0x45, 0x6e, 0x78, 0x4c, 0x67, 0x74, 0x47, 0x63, 0x64, 0x70, 0x36, 0x45, 0x72, 0x76, 0x4d, 0x62, 0x48, 0x34, 0x34, 0x33, 0x71, 0x6f, 0x5c, 0x0a, 0x09, 0x32, 0x6e, 0x6a, 0x4d, 0x2b, 0x4d, 0x53, 0x45, 0x4b, 0x64, 0x66, 0x31, 0x70, 0x67, 0x30, 0x44, 0x67, 0x4f, 0x50, 0x33, 0x37, 0x4d, 0x48, 0x6a, 0x4c, 0x33, 0x6a, 0x73, 0x43, 0x34, 0x4b, 0x44, 0x38, 0x73, 0x69, 0x67, 0x68, 0x5a, 0x32, 0x67, 0x71, 0x6a, 0x50, 0x53, 0x78, 0x48, 0x68, 0x5a, 0x70, 0x5a, 0x30, 0x6b, 0x32, 0x30, 0x6d, 0x69, 0x6d, 0x72, 0x38, 0x6f, 0x32, 0x32, 0x6c, 0x77, 0x43, 0x6c, 0x48, 0x4e, 0x4d, 0x48, 0x41, 0x4f, 0x5c, 0x0a, 0x09, 0x4c, 0x71, 0x48, 0x50, 0x30, 0x46, 0x36, 0x6f, 0x45, 0x78, 0x79, 0x41, 0x70, 0x36, 0x38, 0x36, 0x6b, 0x77, 0x68, 0x31, 0x4e, 0x53, 0x44, 0x71, 0x4c, 0x43, 0x6e, 0x32, 0x79, 0x65, 0x65, 0x6c, 0x6b, 0x49, 0x62, 0x4c, 0x78, 0x79, 0x53, 0x75, 0x51, 0x78, 0x70, 0x6e, 0x7a, 0x46, 0x67, 0x61, 0x35, 0x72, 0x38, 0x42, 0x52, 0x4d, 0x58, 0x30, 0x78, 0x69, 0x6d, 0x6a, 0x48, 0x78, 0x58, 0x6c, 0x77, 0x58, 0x52, 0x4a, 0x64, 0x63, 0x51, 0x55, 0x5c, 0x0a, 0x09, 0x49, 0x4b, 0x4c, 0x6c, 0x59, 0x30, 0x52, 0x6c, 0x44, 0x57, 0x68, 0x61, 0x6a, 0x70, 0x46, 0x6e, 0x4a, 0x2b, 0x58, 0x43, 0x65, 0x59, 0x33, 0x39, 0x45, 0x64, 0x4d, 0x70, 0x43, 0x78, 0x43, 0x68, 0x72, 0x4a, 0x55, 0x74, 0x68, 0x54, 0x46, 0x70, 0x6e, 0x71, 0x4c, 0x4f, 0x4e, 0x4f, 0x41, 0x59, 0x2b, 0x48, 0x7a, 0x79, 0x33, 0x6c, 0x4f, 0x66, 0x74, 0x48, 0x33, 0x48, 0x39, 0x76, 0x54, 0x43, 0x42, 0x74, 0x43, 0x47, 0x41, 0x63, 0x44, 0x6b, 0x5c, 0x0a, 0x09, 0x35, 0x41, 0x54, 0x4b, 0x30, 0x6a, 0x32, 0x4e, 0x70, 0x37, 0x61, 0x42, 0x74, 0x44, 0x4b, 0x6a, 0x34, 0x54, 0x50, 0x48, 0x35, 0x32, 0x6d, 0x67, 0x46, 0x72, 0x70, 0x49, 0x44, 0x53, 0x73, 0x6e, 0x53, 0x56, 0x4a, 0x78, 0x35, 0x63, 0x79, 0x36, 0x48, 0x2b, 0x46, 0x41, 0x54, 0x72, 0x59, 0x44, 0x79, 0x4f, 0x76, 0x43, 0x55, 0x4e, 0x53, 0x55, 0x77, 0x42, 0x64, 0x4e, 0x39, 0x37, 0x43, 0x48, 0x65, 0x68, 0x62, 0x70, 0x31, 0x44, 0x67, 0x59, 0x5c, 0x0a, 0x09, 0x65, 0x58, 0x4c, 0x64, 0x53, 0x4d, 0x6d, 0x74, 0x7a, 0x49, 0x48, 0x4c, 0x69, 0x6e, 0x39, 0x76, 0x79, 0x6d, 0x51, 0x53, 0x67, 0x41, 0x79, 0x38, 0x73, 0x6b, 0x7a, 0x4b, 0x57, 0x71, 0x77, 0x4d, 0x50, 0x46, 0x6c, 0x5a, 0x56, 0x58, 0x51, 0x4f, 0x35, 0x78, 0x4a, 0x48, 0x45, 0x64, 0x47, 0x2b, 0x47, 0x72, 0x65, 0x51, 0x6e, 0x5a, 0x37, 0x4b, 0x75, 0x56, 0x51, 0x58, 0x69, 0x61, 0x4f, 0x53, 0x4d, 0x55, 0x36, 0x6e, 0x78, 0x68, 0x68, 0x41, 0x5c, 0x0a, 0x09, 0x67, 0x6b, 0x38, 0x56, 0x48, 0x45, 0x52, 0x67, 0x34, 0x58, 0x62, 0x44, 0x36, 0x79, 0x53, 0x41, 0x77, 0x36, 0x35, 0x72, 0x47, 0x65, 0x70, 0x73, 0x63, 0x38, 0x2f, 0x75, 0x33, 0x5a, 0x64, 0x73, 0x32, 0x62, 0x6f, 0x31, 0x6b, 0x66, 0x46, 0x47, 0x30, 0x49, 0x59, 0x42, 0x77, 0x41, 0x4d, 0x50, 0x48, 0x73, 0x53, 0x39, 0x39, 0x39, 0x33, 0x2f, 0x4d, 0x43, 0x73, 0x56, 0x42, 0x6c, 0x43, 0x6e, 0x37, 0x67, 0x68, 0x66, 0x70, 0x62, 0x46, 0x77, 0x5c, 0x0a, 0x09, 0x6c, 0x41, 0x37, 0x31, 0x64, 0x45, 0x53, 0x4c, 0x37, 0x55, 0x42, 0x47, 0x61, 0x2b, 0x36, 0x45, 0x58, 0x4f, 0x47, 0x52, 0x42, 0x37, 0x34, 0x77, 0x78, 0x51, 0x77, 0x6b, 0x39, 0x73, 0x4d, 0x57, 0x7a, 0x54, 0x52, 0x2f, 0x4e, 0x66, 0x74, 0x70, 0x52, 0x4e, 0x66, 0x54, 0x43, 0x6d, 0x73, 0x4f, 0x79, 0x69, 0x6e, 0x4a, 0x51, 0x46, 0x43, 0x50, 0x57, 0x59, 0x39, 0x50, 0x72, 0x4e, 0x34, 0x7a, 0x2b, 0x56, 0x67, 0x72, 0x31, 0x4c, 0x78, 0x2f, 0x5c, 0x0a, 0x09, 0x6b, 0x58, 0x32, 0x6f, 0x73, 0x66, 0x4c, 0x32, 0x6d, 0x79, 0x6a, 0x4b, 0x4d, 0x67, 0x79, 0x66, 0x70, 0x38, 0x54, 0x73, 0x72, 0x67, 0x44, 0x62, 0x44, 0x4a, 0x4f, 0x41, 0x31, 0x4b, 0x6a, 0x73, 0x4c, 0x2b, 0x48, 0x62, 0x41, 0x6a, 0x2f, 0x6d, 0x32, 0x4b, 0x49, 0x65, 0x47, 0x32, 0x76, 0x67, 0x49, 0x2f, 0x52, 0x76, 0x38, 0x52, 0x4c, 0x36, 0x53, 0x71, 0x61, 0x58, 0x50, 0x4e, 0x4e, 0x73, 0x34, 0x44, 0x4f, 0x5a, 0x45, 0x6f, 0x7a, 0x49, 0x5c, 0x0a, 0x09, 0x61, 0x67, 0x38, 0x66, 0x50, 0x6e, 0x4c, 0x6d, 0x31, 0x4d, 0x51, 0x34, 0x33, 0x76, 0x66, 0x37, 0x76, 0x7a, 0x4e, 0x43, 0x73, 0x75, 0x74, 0x44, 0x47, 0x77, 0x49, 0x41, 0x2b, 0x2f, 0x66, 0x74, 0x77, 0x39, 0x61, 0x78, 0x4c, 0x72, 0x35, 0x7a, 0x30, 0x38, 0x33, 0x48, 0x63, 0x61, 0x51, 0x56, 0x45, 0x64, 0x52, 0x4b, 0x38, 0x56, 0x6d, 0x61, 0x5a, 0x74, 0x32, 0x43, 0x53, 0x64, 0x4a, 0x37, 0x6c, 0x52, 0x35, 0x7a, 0x35, 0x2b, 0x4e, 0x52, 0x5c, 0x0a, 0x09, 0x4e, 0x54, 0x71, 0x44, 0x45, 0x51, 0x47, 0x74, 0x61, 0x41, 0x68, 0x41, 0x5a, 0x42, 0x68, 0x4a, 0x4a, 0x48, 0x42, 0x79, 0x47, 0x69, 0x4c, 0x4b, 0x4f, 0x64, 0x6b, 0x47, 0x54, 0x33, 0x48, 0x6a, 0x2b, 0x46, 0x56, 0x47, 0x4a, 0x4d, 0x62, 0x4f, 0x32, 0x68, 0x64, 0x33, 0x51, 0x58, 0x6a, 0x4b, 0x54, 0x61, 0x69, 0x64, 0x55, 0x6f, 0x68, 0x50, 0x4f, 0x70, 0x61, 0x49, 0x75, 0x4e, 0x62, 0x65, 0x41, 0x35, 0x31, 0x47, 0x68, 0x37, 0x6f, 0x71, 0x5c, 0x0a, 0x09, 0x79, 0x6e, 0x46, 0x77, 0x35, 0x65, 0x30, 0x4b, 0x48, 0x61, 0x6b, 0x70, 0x53, 0x42, 0x4b, 0x78, 0x6e, 0x65, 0x4a, 0x42, 0x70, 0x66, 0x58, 0x43, 0x41, 0x63, 0x4d, 0x66, 0x5a, 0x42, 0x43, 0x6f, 0x32, 0x62, 0x5a, 0x33, 0x57, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x4c, 0x59, 0x4e, 0x38, 0x73, 0x4b, 0x64, 0x4a, 0x74, 0x4e, 0x78, 0x39, 0x77, 0x47, 0x64, 0x53, 0x44, 0x67, 0x55, 0x35, 0x52, 0x41, 0x33, 0x37, 0x6e, 0x78, 0x78, 0x69, 0x31, 0x50, 0x5c, 0x0a, 0x09, 0x66, 0x66, 0x78, 0x6a, 0x74, 0x77, 0x2b, 0x47, 0x77, 0x34, 0x53, 0x50, 0x39, 0x61, 0x59, 0x4e, 0x65, 0x78, 0x72, 0x77, 0x63, 0x31, 0x2f, 0x2b, 0x61, 0x76, 0x36, 0x33, 0x66, 0x2f, 0x69, 0x37, 0x4e, 0x2f, 0x55, 0x36, 0x2b, 0x63, 0x50, 0x6d, 0x6c, 0x67, 0x5a, 0x77, 0x5a, 0x58, 0x41, 0x65, 0x59, 0x48, 0x5a, 0x78, 0x4b, 0x5a, 0x59, 0x62, 0x44, 0x6b, 0x76, 0x4d, 0x4c, 0x79, 0x32, 0x68, 0x72, 0x4b, 0x34, 0x76, 0x46, 0x30, 0x4d, 0x4d, 0x5c, 0x0a, 0x09, 0x68, 0x6b, 0x56, 0x30, 0x75, 0x63, 0x48, 0x53, 0x4d, 0x67, 0x5a, 0x46, 0x43, 0x61, 0x72, 0x4f, 0x7a, 0x43, 0x38, 0x73, 0x6f, 0x71, 0x79, 0x55, 0x57, 0x4a, 0x59, 0x6c, 0x35, 0x6c, 0x6c, 0x62, 0x79, 0x38, 0x74, 0x44, 0x4c, 0x43, 0x37, 0x56, 0x33, 0x35, 0x65, 0x57, 0x68, 0x78, 0x67, 0x4d, 0x42, 0x74, 0x47, 0x41, 0x35, 0x75, 0x62, 0x6e, 0x55, 0x52, 0x59, 0x46, 0x6e, 0x41, 0x4f, 0x49, 0x67, 0x45, 0x4d, 0x7a, 0x73, 0x77, 0x67, 0x67, 0x5c, 0x0a, 0x09, 0x50, 0x69, 0x79, 0x47, 0x4f, 0x48, 0x7a, 0x34, 0x63, 0x4b, 0x79, 0x37, 0x75, 0x4c, 0x43, 0x41, 0x75, 0x62, 0x6b, 0x35, 0x4d, 0x61, 0x61, 0x59, 0x68, 0x61, 0x69, 0x35, 0x64, 0x48, 0x52, 0x38, 0x35, 0x70, 0x67, 0x6d, 0x4d, 0x4c, 0x6d, 0x36, 0x72, 0x72, 0x55, 0x49, 0x47, 0x52, 0x32, 0x47, 0x4f, 0x7a, 0x75, 0x59, 0x6f, 0x36, 0x6e, 0x73, 0x77, 0x4a, 0x70, 0x61, 0x4a, 0x53, 0x44, 0x41, 0x48, 0x4a, 0x53, 0x44, 0x56, 0x68, 0x49, 0x74, 0x5c, 0x0a, 0x09, 0x51, 0x33, 0x76, 0x4b, 0x6d, 0x5a, 0x74, 0x41, 0x51, 0x77, 0x41, 0x67, 0x79, 0x51, 0x7a, 0x4e, 0x6b, 0x70, 0x6b, 0x41, 0x4f, 0x44, 0x59, 0x4f, 0x77, 0x5a, 0x2b, 0x65, 0x63, 0x71, 0x68, 0x73, 0x52, 0x54, 0x68, 0x77, 0x77, 0x39, 0x68, 0x45, 0x39, 0x79, 0x34, 0x64, 0x6b, 0x78, 0x36, 0x7a, 0x6d, 0x4a, 0x71, 0x77, 0x65, 0x6a, 0x47, 0x72, 0x41, 0x4e, 0x57, 0x50, 0x62, 0x37, 0x4f, 0x78, 0x43, 0x4f, 0x42, 0x6a, 0x33, 0x34, 0x6b, 0x49, 0x5c, 0x0a, 0x09, 0x77, 0x2b, 0x56, 0x6c, 0x7a, 0x43, 0x30, 0x75, 0x50, 0x64, 0x63, 0x35, 0x39, 0x33, 0x35, 0x73, 0x4d, 0x47, 0x30, 0x59, 0x41, 0x4c, 0x7a, 0x6e, 0x39, 0x5a, 0x63, 0x57, 0x6a, 0x7a, 0x70, 0x74, 0x54, 0x38, 0x38, 0x37, 0x42, 0x67, 0x39, 0x58, 0x4b, 0x6d, 0x77, 0x46, 0x62, 0x2f, 0x52, 0x66, 0x36, 0x6d, 0x76, 0x52, 0x43, 0x49, 0x69, 0x56, 0x55, 0x64, 0x66, 0x6a, 0x74, 0x58, 0x42, 0x4a, 0x61, 0x54, 0x2f, 0x59, 0x62, 0x71, 0x4a, 0x67, 0x5c, 0x0a, 0x09, 0x48, 0x58, 0x31, 0x4a, 0x39, 0x73, 0x66, 0x72, 0x56, 0x39, 0x64, 0x6d, 0x6c, 0x35, 0x59, 0x78, 0x4c, 0x46, 0x7a, 0x73, 0x64, 0x33, 0x5a, 0x68, 0x43, 0x61, 0x56, 0x7a, 0x49, 0x41, 0x4a, 0x4b, 0x42, 0x38, 0x77, 0x74, 0x44, 0x6d, 0x4a, 0x7a, 0x79, 0x38, 0x4d, 0x53, 0x53, 0x38, 0x76, 0x4c, 0x6b, 0x64, 0x76, 0x42, 0x73, 0x4d, 0x44, 0x53, 0x63, 0x68, 0x30, 0x4e, 0x35, 0x68, 0x61, 0x57, 0x55, 0x4a, 0x52, 0x6c, 0x2f, 0x44, 0x36, 0x37, 0x5c, 0x0a, 0x09, 0x34, 0x4e, 0x2f, 0x33, 0x34, 0x65, 0x44, 0x67, 0x53, 0x6f, 0x66, 0x35, 0x78, 0x53, 0x55, 0x51, 0x43, 0x43, 0x57, 0x41, 0x34, 0x58, 0x43, 0x49, 0x70, 0x63, 0x46, 0x79, 0x4c, 0x4c, 0x75, 0x30, 0x50, 0x4d, 0x42, 0x77, 0x57, 0x45, 0x59, 0x6e, 0x6d, 0x56, 0x39, 0x59, 0x51, 0x75, 0x6d, 0x4b, 0x79, 0x4f, 0x37, 0x63, 0x2f, 0x45, 0x4a, 0x31, 0x6a, 0x56, 0x41, 0x55, 0x51, 0x79, 0x77, 0x73, 0x4c, 0x43, 0x49, 0x49, 0x59, 0x6d, 0x6d, 0x77, 0x5c, 0x0a, 0x09, 0x6a, 0x49, 0x58, 0x46, 0x4a, 0x53, 0x38, 0x75, 0x42, 0x38, 0x7a, 0x4e, 0x7a, 0x57, 0x4b, 0x77, 0x58, 0x50, 0x4e, 0x39, 0x38, 0x4d, 0x47, 0x44, 0x63, 0x45, 0x56, 0x52, 0x4f, 0x77, 0x63, 0x48, 0x70, 0x67, 0x42, 0x61, 0x37, 0x42, 0x56, 0x5a, 0x77, 0x68, 0x6b, 0x55, 0x79, 0x49, 0x56, 0x6a, 0x72, 0x6e, 0x4a, 0x72, 0x44, 0x55, 0x4e, 0x48, 0x65, 0x50, 0x35, 0x64, 0x5a, 0x41, 0x6a, 0x47, 0x71, 0x6a, 0x32, 0x72, 0x56, 0x4b, 0x66, 0x37, 0x5c, 0x0a, 0x09, 0x55, 0x65, 0x65, 0x79, 0x54, 0x75, 0x67, 0x76, 0x38, 0x42, 0x55, 0x65, 0x43, 0x37, 0x65, 0x6d, 0x6d, 0x4c, 0x77, 0x74, 0x76, 0x65, 0x61, 0x51, 0x54, 0x41, 0x63, 0x55, 0x6e, 0x32, 0x48, 0x4d, 0x52, 0x2b, 0x59, 0x57, 0x6e, 0x6c, 0x61, 0x57, 0x35, 0x65, 0x59, 0x45, 0x67, 0x42, 0x74, 0x76, 0x76, 0x68, 0x6e, 0x6c, 0x74, 0x5a, 0x39, 0x45, 0x72, 0x66, 0x32, 0x51, 0x39, 0x73, 0x6e, 0x30, 0x71, 0x58, 0x5a, 0x45, 0x46, 0x6a, 0x36, 0x31, 0x5c, 0x0a, 0x09, 0x49, 0x33, 0x4b, 0x41, 0x55, 0x4e, 0x67, 0x68, 0x79, 0x73, 0x58, 0x7a, 0x7a, 0x48, 0x45, 0x70, 0x57, 0x41, 0x59, 0x48, 0x45, 0x46, 0x55, 0x50, 0x71, 0x6a, 0x2f, 0x42, 0x4a, 0x38, 0x58, 0x50, 0x4c, 0x58, 0x33, 0x32, 0x49, 0x37, 0x42, 0x45, 0x32, 0x44, 0x62, 0x5a, 0x5a, 0x30, 0x79, 0x77, 0x44, 0x49, 0x43, 0x42, 0x52, 0x74, 0x49, 0x75, 0x35, 0x30, 0x32, 0x54, 0x41, 0x44, 0x53, 0x53, 0x34, 0x30, 0x37, 0x6b, 0x45, 0x43, 0x4a, 0x61, 0x5c, 0x0a, 0x09, 0x51, 0x33, 0x6b, 0x68, 0x5a, 0x36, 0x4f, 0x74, 0x4f, 0x47, 0x37, 0x64, 0x66, 0x71, 0x79, 0x45, 0x34, 0x62, 0x44, 0x41, 0x37, 0x47, 0x49, 0x4e, 0x50, 0x4d, 0x50, 0x53, 0x59, 0x58, 0x35, 0x70, 0x55, 0x48, 0x58, 0x6c, 0x4d, 0x42, 0x67, 0x36, 0x78, 0x42, 0x54, 0x58, 0x4f, 0x63, 0x77, 0x50, 0x43, 0x78, 0x54, 0x44, 0x49, 0x72, 0x5a, 0x34, 0x5a, 0x4b, 0x48, 0x4f, 0x78, 0x41, 0x72, 0x6e, 0x63, 0x47, 0x52, 0x75, 0x41, 0x56, 0x6e, 0x46, 0x5c, 0x0a, 0x09, 0x77, 0x32, 0x42, 0x59, 0x59, 0x48, 0x46, 0x70, 0x43, 0x5a, 0x52, 0x6c, 0x63, 0x48, 0x42, 0x59, 0x57, 0x68, 0x78, 0x67, 0x75, 0x58, 0x53, 0x67, 0x79, 0x73, 0x46, 0x6d, 0x46, 0x78, 0x61, 0x72, 0x5a, 0x6e, 0x33, 0x36, 0x50, 0x56, 0x64, 0x39, 0x4a, 0x79, 0x49, 0x4d, 0x79, 0x78, 0x49, 0x4c, 0x38, 0x77, 0x74, 0x52, 0x74, 0x6f, 0x50, 0x42, 0x41, 0x45, 0x75, 0x44, 0x49, 0x59, 0x49, 0x65, 0x46, 0x78, 0x65, 0x57, 0x4d, 0x43, 0x79, 0x57, 0x5c, 0x0a, 0x09, 0x34, 0x35, 0x41, 0x50, 0x48, 0x35, 0x36, 0x4e, 0x57, 0x69, 0x2f, 0x4c, 0x45, 0x6f, 0x64, 0x6d, 0x44, 0x6b, 0x57, 0x2b, 0x6c, 0x68, 0x61, 0x58, 0x4d, 0x44, 0x63, 0x37, 0x6d, 0x32, 0x52, 0x67, 0x31, 0x6e, 0x71, 0x41, 0x58, 0x67, 0x67, 0x4d, 0x41, 0x43, 0x4c, 0x71, 0x6b, 0x6f, 0x74, 0x54, 0x6b, 0x41, 0x64, 0x6d, 0x5a, 0x73, 0x37, 0x64, 0x64, 0x38, 0x49, 0x65, 0x62, 0x44, 0x52, 0x74, 0x37, 0x41, 0x74, 0x42, 0x6f, 0x6f, 0x4d, 0x72, 0x5c, 0x0a, 0x09, 0x4a, 0x77, 0x33, 0x61, 0x30, 0x63, 0x36, 0x42, 0x63, 0x4b, 0x34, 0x43, 0x44, 0x65, 0x35, 0x4d, 0x78, 0x4f, 0x71, 0x48, 0x6c, 0x4c, 0x4c, 0x4a, 0x53, 0x65, 0x4b, 0x70, 0x32, 0x6f, 0x46, 0x54, 0x50, 0x6d, 0x53, 0x30, 0x53, 0x48, 0x68, 0x75, 0x41, 0x67, 0x54, 0x6e, 0x6d, 0x72, 0x4d, 0x54, 0x6e, 0x6c, 0x68, 0x77, 0x45, 0x42, 0x44, 0x6a, 0x55, 0x33, 0x30, 0x78, 0x6b, 0x4c, 0x45, 0x64, 0x31, 0x53, 0x41, 0x75, 0x45, 0x33, 0x34, 0x75, 0x5c, 0x0a, 0x09, 0x36, 0x64, 0x73, 0x59, 0x72, 0x35, 0x41, 0x46, 0x42, 0x38, 0x6a, 0x36, 0x4b, 0x77, 0x42, 0x30, 0x38, 0x67, 0x7a, 0x62, 0x74, 0x6f, 0x7a, 0x4a, 0x38, 0x57, 0x38, 0x64, 0x47, 0x79, 0x32, 0x58, 0x55, 0x61, 0x43, 0x55, 0x6b, 0x4f, 0x6f, 0x62, 0x51, 0x4d, 0x4b, 0x4c, 0x47, 0x49, 0x73, 0x78, 0x7a, 0x67, 0x51, 0x55, 0x6d, 0x77, 0x45, 0x74, 0x37, 0x56, 0x36, 0x42, 0x4a, 0x49, 0x44, 0x35, 0x78, 0x57, 0x55, 0x4d, 0x68, 0x76, 0x55, 0x62, 0x5c, 0x0a, 0x09, 0x76, 0x57, 0x61, 0x58, 0x42, 0x69, 0x68, 0x4c, 0x46, 0x35, 0x73, 0x39, 0x73, 0x6a, 0x43, 0x49, 0x2f, 0x52, 0x52, 0x6c, 0x69, 0x59, 0x55, 0x6c, 0x6c, 0x75, 0x55, 0x56, 0x70, 0x63, 0x6a, 0x55, 0x43, 0x44, 0x51, 0x33, 0x58, 0x4b, 0x35, 0x42, 0x63, 0x4b, 0x4e, 0x6f, 0x59, 0x77, 0x46, 0x41, 0x4f, 0x33, 0x77, 0x38, 0x62, 0x36, 0x54, 0x6b, 0x4f, 0x72, 0x6f, 0x35, 0x64, 0x69, 0x30, 0x30, 0x35, 0x69, 0x70, 0x67, 0x69, 0x44, 0x62, 0x63, 0x5c, 0x0a, 0x09, 0x45, 0x47, 0x6d, 0x62, 0x70, 0x68, 0x56, 0x31, 0x41, 0x58, 0x2b, 0x4f, 0x70, 0x62, 0x4f, 0x4e, 0x66, 0x41, 0x53, 0x6e, 0x64, 0x66, 0x77, 0x36, 0x64, 0x36, 0x36, 0x6d, 0x63, 0x52, 0x6e, 0x47, 0x6d, 0x66, 0x43, 0x6c, 0x2b, 0x75, 0x56, 0x6c, 0x74, 0x49, 0x79, 0x73, 0x38, 0x51, 0x6e, 0x6e, 0x45, 0x53, 0x6d, 0x49, 0x71, 0x6b, 0x38, 0x31, 0x50, 0x31, 0x61, 0x6d, 0x45, 0x61, 0x73, 0x62, 0x63, 0x75, 0x4b, 0x4f, 0x71, 0x49, 0x6b, 0x44, 0x5c, 0x0a, 0x09, 0x59, 0x67, 0x52, 0x42, 0x42, 0x73, 0x36, 0x69, 0x4b, 0x65, 0x33, 0x6f, 0x58, 0x41, 0x61, 0x42, 0x48, 0x79, 0x55, 0x66, 0x44, 0x58, 0x44, 0x4f, 0x70, 0x58, 0x71, 0x78, 0x35, 0x41, 0x4e, 0x57, 0x52, 0x76, 0x52, 0x50, 0x71, 0x61, 0x78, 0x5a, 0x6d, 0x59, 0x6d, 0x78, 0x44, 0x69, 0x5a, 0x51, 0x5a, 0x33, 0x6f, 0x52, 0x41, 0x48, 0x6e, 0x39, 0x5a, 0x45, 0x79, 0x47, 0x58, 0x50, 0x7a, 0x59, 0x70, 0x2b, 0x2b, 0x64, 0x6d, 0x55, 0x75, 0x76, 0x5c, 0x0a, 0x09, 0x72, 0x54, 0x4e, 0x74, 0x2f, 0x4e, 0x4f, 0x41, 0x7a, 0x6a, 0x72, 0x68, 0x36, 0x67, 0x73, 0x6d, 0x4f, 0x4b, 0x6a, 0x76, 0x50, 0x45, 0x72, 0x47, 0x36, 0x38, 0x79, 0x6f, 0x2b, 0x58, 0x58, 0x74, 0x65, 0x4e, 0x6f, 0x49, 0x49, 0x6b, 0x2f, 0x42, 0x75, 0x42, 0x73, 0x69, 0x42, 0x4f, 0x64, 0x44, 0x4f, 0x49, 0x65, 0x4b, 0x39, 0x4e, 0x48, 0x6f, 0x64, 0x63, 0x51, 0x33, 0x49, 0x6a, 0x4c, 0x6e, 0x53, 0x7a, 0x75, 0x63, 0x35, 0x54, 0x44, 0x4a, 0x5c, 0x0a, 0x09, 0x64, 0x33, 0x56, 0x4f, 0x31, 0x46, 0x65, 0x66, 0x73, 0x52, 0x2b, 0x64, 0x68, 0x57, 0x6c, 0x67, 0x67, 0x58, 0x49, 0x49, 0x73, 0x50, 0x47, 0x6f, 0x66, 0x70, 0x7a, 0x53, 0x47, 0x79, 0x44, 0x6c, 0x7a, 0x38, 0x48, 0x53, 0x36, 0x6b, 0x75, 0x6d, 0x63, 0x59, 0x62, 0x75, 0x36, 0x4f, 0x68, 0x34, 0x31, 0x74, 0x6b, 0x4c, 0x58, 0x43, 0x72, 0x37, 0x41, 0x4e, 0x68, 0x78, 0x50, 0x4b, 0x78, 0x50, 0x70, 0x38, 0x76, 0x7a, 0x65, 0x73, 0x36, 0x57, 0x5c, 0x0a, 0x09, 0x4e, 0x52, 0x38, 0x7a, 0x31, 0x37, 0x6c, 0x46, 0x50, 0x67, 0x76, 0x64, 0x76, 0x6e, 0x74, 0x36, 0x30, 0x72, 0x36, 0x2b, 0x6a, 0x72, 0x51, 0x68, 0x41, 0x46, 0x42, 0x65, 0x39, 0x79, 0x6c, 0x2f, 0x34, 0x4c, 0x41, 0x72, 0x47, 0x6c, 0x69, 0x6b, 0x59, 0x46, 0x68, 0x4d, 0x75, 0x55, 0x6d, 0x71, 0x48, 0x42, 0x77, 0x62, 0x78, 0x6a, 0x57, 0x4c, 0x48, 0x46, 0x50, 0x63, 0x69, 0x45, 0x78, 0x44, 0x6e, 0x47, 0x38, 0x77, 0x65, 0x74, 0x45, 0x73, 0x5c, 0x0a, 0x09, 0x7a, 0x79, 0x37, 0x59, 0x39, 0x63, 0x43, 0x58, 0x63, 0x4f, 0x51, 0x52, 0x42, 0x74, 0x48, 0x49, 0x41, 0x2b, 0x38, 0x44, 0x6f, 0x39, 0x76, 0x51, 0x77, 0x46, 0x68, 0x66, 0x73, 0x48, 0x6b, 0x4d, 0x55, 0x56, 0x44, 0x49, 0x6b, 0x48, 0x32, 0x4f, 0x54, 0x4d, 0x31, 0x5a, 0x30, 0x30, 0x6b, 0x78, 0x72, 0x53, 0x39, 0x49, 0x47, 0x65, 0x72, 0x49, 0x48, 0x4d, 0x34, 0x6e, 0x71, 0x62, 0x7a, 0x69, 0x79, 0x30, 0x72, 0x7a, 0x4c, 0x64, 0x33, 0x48, 0x5c, 0x0a, 0x09, 0x61, 0x36, 0x78, 0x73, 0x62, 0x4d, 0x59, 0x70, 0x6e, 0x59, 0x6d, 0x43, 0x61, 0x54, 0x75, 0x36, 0x6a, 0x41, 0x42, 0x70, 0x33, 0x54, 0x2f, 0x59, 0x47, 0x42, 0x72, 0x73, 0x68, 0x48, 0x39, 0x33, 0x4f, 0x43, 0x62, 0x32, 0x41, 0x6d, 0x39, 0x63, 0x42, 0x6b, 0x41, 0x30, 0x44, 0x61, 0x49, 0x4a, 0x30, 0x32, 0x69, 0x31, 0x59, 0x2f, 0x50, 0x30, 0x6b, 0x59, 0x4f, 0x44, 0x6b, 0x48, 0x58, 0x34, 0x6f, 0x6f, 0x77, 0x4e, 0x67, 0x4f, 0x30, 0x59, 0x5c, 0x0a, 0x09, 0x52, 0x6b, 0x6a, 0x55, 0x45, 0x56, 0x64, 0x48, 0x68, 0x74, 0x69, 0x75, 0x63, 0x53, 0x36, 0x65, 0x5a, 0x75, 0x41, 0x52, 0x77, 0x43, 0x33, 0x77, 0x49, 0x69, 0x49, 0x4c, 0x34, 0x35, 0x4d, 0x37, 0x67, 0x4a, 0x34, 0x47, 0x69, 0x44, 0x6e, 0x35, 0x55, 0x59, 0x41, 0x58, 0x35, 0x7a, 0x6c, 0x78, 0x49, 0x41, 0x57, 0x30, 0x6e, 0x46, 0x63, 0x6f, 0x65, 0x65, 0x6b, 0x6f, 0x79, 0x79, 0x6b, 0x42, 0x62, 0x41, 0x4e, 0x34, 0x7a, 0x54, 0x48, 0x55, 0x5c, 0x0a, 0x09, 0x70, 0x2b, 0x6f, 0x2b, 0x57, 0x56, 0x6e, 0x64, 0x4c, 0x6e, 0x63, 0x32, 0x72, 0x51, 0x64, 0x72, 0x47, 0x68, 0x54, 0x62, 0x56, 0x33, 0x32, 0x47, 0x73, 0x6b, 0x45, 0x6e, 0x6b, 0x74, 0x48, 0x6d, 0x66, 0x76, 0x6b, 0x35, 0x33, 0x62, 0x62, 0x51, 0x72, 0x52, 0x35, 0x44, 0x51, 0x79, 0x43, 0x53, 0x41, 0x4c, 0x63, 0x46, 0x59, 0x4d, 0x46, 0x77, 0x67, 0x32, 0x69, 0x44, 0x41, 0x4d, 0x41, 0x42, 0x77, 0x44, 0x34, 0x5a, 0x47, 0x56, 0x53, 0x55, 0x5c, 0x0a, 0x09, 0x74, 0x70, 0x51, 0x67, 0x55, 0x6c, 0x47, 0x65, 0x68, 0x6d, 0x6f, 0x48, 0x68, 0x42, 0x31, 0x52, 0x64, 0x48, 0x74, 0x4e, 0x55, 0x34, 0x42, 0x51, 0x33, 0x34, 0x71, 0x71, 0x31, 0x68, 0x77, 0x39, 0x47, 0x70, 0x5a, 0x79, 0x61, 0x6a, 0x46, 0x6b, 0x70, 0x77, 0x78, 0x51, 0x47, 0x58, 0x49, 0x79, 0x39, 0x32, 0x52, 0x64, 0x4a, 0x46, 0x6b, 0x51, 0x30, 0x75, 0x2f, 0x6d, 0x32, 0x42, 0x53, 0x66, 0x76, 0x47, 0x37, 0x53, 0x48, 0x6d, 0x74, 0x54, 0x5c, 0x0a, 0x09, 0x67, 0x34, 0x67, 0x77, 0x63, 0x70, 0x4a, 0x31, 0x4c, 0x48, 0x36, 0x53, 0x39, 0x51, 0x57, 0x6a, 0x6e, 0x42, 0x55, 0x70, 0x56, 0x79, 0x4b, 0x52, 0x7a, 0x75, 0x74, 0x78, 0x4b, 0x54, 0x6c, 0x71, 0x33, 0x69, 0x30, 0x51, 0x31, 0x4b, 0x44, 0x4f, 0x78, 0x78, 0x41, 0x7a, 0x4f, 0x42, 0x58, 0x39, 0x64, 0x5a, 0x51, 0x33, 0x70, 0x32, 0x6b, 0x4b, 0x61, 0x44, 0x52, 0x66, 0x39, 0x65, 0x65, 0x57, 0x6f, 0x78, 0x2f, 0x38, 0x32, 0x74, 0x41, 0x47, 0x5c, 0x0a, 0x09, 0x4c, 0x67, 0x4b, 0x36, 0x30, 0x36, 0x76, 0x50, 0x46, 0x61, 0x4b, 0x46, 0x53, 0x34, 0x57, 0x63, 0x52, 0x47, 0x4e, 0x4b, 0x73, 0x77, 0x62, 0x64, 0x68, 0x6a, 0x79, 0x42, 0x6b, 0x5a, 0x45, 0x74, 0x53, 0x66, 0x63, 0x5a, 0x77, 0x46, 0x44, 0x31, 0x58, 0x39, 0x4b, 0x45, 0x6b, 0x53, 0x48, 0x77, 0x4d, 0x57, 0x6c, 0x6a, 0x6a, 0x45, 0x59, 0x52, 0x32, 0x41, 0x6c, 0x5a, 0x44, 0x6c, 0x49, 0x5a, 0x61, 0x4e, 0x34, 0x41, 0x32, 0x2f, 0x41, 0x69, 0x5c, 0x0a, 0x09, 0x61, 0x4c, 0x6d, 0x61, 0x54, 0x38, 0x32, 0x54, 0x6c, 0x70, 0x2b, 0x4f, 0x6c, 0x4d, 0x6e, 0x69, 0x4a, 0x43, 0x54, 0x49, 0x6a, 0x73, 0x71, 0x45, 0x4c, 0x48, 0x36, 0x45, 0x34, 0x54, 0x4f, 0x65, 0x52, 0x70, 0x49, 0x6c, 0x42, 0x30, 0x73, 0x2b, 0x42, 0x6f, 0x43, 0x62, 0x59, 0x31, 0x50, 0x38, 0x38, 0x4c, 0x46, 0x79, 0x2f, 0x71, 0x33, 0x79, 0x31, 0x68, 0x68, 0x58, 0x6b, 0x68, 0x2f, 0x50, 0x31, 0x71, 0x7a, 0x2b, 0x36, 0x75, 0x75, 0x39, 0x5c, 0x0a, 0x09, 0x78, 0x6d, 0x78, 0x68, 0x6e, 0x57, 0x68, 0x6a, 0x4d, 0x67, 0x41, 0x48, 0x41, 0x48, 0x53, 0x36, 0x76, 0x62, 0x41, 0x54, 0x79, 0x68, 0x69, 0x43, 0x73, 0x2b, 0x62, 0x68, 0x56, 0x6e, 0x53, 0x4d, 0x4b, 0x52, 0x6f, 0x67, 0x6c, 0x47, 0x6d, 0x68, 0x74, 0x35, 0x6d, 0x2b, 0x68, 0x6e, 0x6f, 0x47, 0x6f, 0x6f, 0x76, 0x69, 0x54, 0x56, 0x47, 0x65, 0x32, 0x47, 0x55, 0x56, 0x33, 0x66, 0x6e, 0x31, 0x6b, 0x4d, 0x48, 0x6f, 0x72, 0x45, 0x41, 0x62, 0x5c, 0x0a, 0x09, 0x72, 0x4a, 0x6d, 0x5a, 0x71, 0x4d, 0x69, 0x73, 0x78, 0x38, 0x4a, 0x5a, 0x30, 0x2f, 0x4e, 0x2b, 0x6e, 0x6b, 0x47, 0x6c, 0x68, 0x5a, 0x56, 0x4d, 0x57, 0x43, 0x5a, 0x6b, 0x79, 0x54, 0x36, 0x4d, 0x75, 0x30, 0x6b, 0x47, 0x41, 0x71, 0x68, 0x59, 0x57, 0x52, 0x48, 0x4e, 0x46, 0x57, 0x6d, 0x67, 0x45, 0x57, 0x6b, 0x2f, 0x36, 0x38, 0x64, 0x63, 0x77, 0x41, 0x30, 0x79, 0x30, 0x65, 0x56, 0x34, 0x47, 0x2b, 0x46, 0x69, 0x4f, 0x4f, 0x39, 0x73, 0x5c, 0x0a, 0x09, 0x32, 0x54, 0x56, 0x6c, 0x42, 0x6e, 0x72, 0x38, 0x34, 0x54, 0x77, 0x76, 0x7a, 0x36, 0x64, 0x7a, 0x77, 0x5a, 0x36, 0x43, 0x50, 0x64, 0x52, 0x5a, 0x7a, 0x4e, 0x51, 0x47, 0x2b, 0x2f, 0x38, 0x47, 0x72, 0x67, 0x47, 0x34, 0x4b, 0x67, 0x50, 0x51, 0x63, 0x79, 0x70, 0x5a, 0x70, 0x6a, 0x70, 0x6f, 0x53, 0x4c, 0x64, 0x34, 0x78, 0x4c, 0x49, 0x51, 0x50, 0x79, 0x34, 0x6f, 0x38, 0x6e, 0x50, 0x36, 0x32, 0x43, 0x49, 0x79, 0x6c, 0x47, 0x58, 0x31, 0x5c, 0x0a, 0x09, 0x7a, 0x66, 0x6f, 0x7a, 0x35, 0x35, 0x32, 0x73, 0x72, 0x4a, 0x56, 0x65, 0x78, 0x71, 0x48, 0x70, 0x79, 0x4b, 0x54, 0x4b, 0x63, 0x79, 0x42, 0x4c, 0x30, 0x6b, 0x78, 0x74, 0x6b, 0x44, 0x78, 0x4b, 0x47, 0x76, 0x31, 0x59, 0x36, 0x79, 0x4a, 0x6d, 0x5a, 0x46, 0x65, 0x5a, 0x69, 0x77, 0x57, 0x79, 0x76, 0x46, 0x79, 0x55, 0x43, 0x32, 0x74, 0x44, 0x4f, 0x30, 0x51, 0x43, 0x44, 0x41, 0x5a, 0x77, 0x38, 0x62, 0x61, 0x35, 0x6a, 0x71, 0x55, 0x77, 0x5c, 0x0a, 0x09, 0x5a, 0x42, 0x6b, 0x7a, 0x4b, 0x32, 0x4a, 0x74, 0x72, 0x5a, 0x67, 0x5a, 0x47, 0x74, 0x48, 0x61, 0x79, 0x73, 0x4b, 0x53, 0x39, 0x6c, 0x52, 0x67, 0x69, 0x67, 0x6b, 0x41, 0x41, 0x2f, 0x70, 0x67, 0x4f, 0x31, 0x77, 0x6e, 0x39, 0x52, 0x72, 0x57, 0x75, 0x4e, 0x33, 0x4a, 0x2b, 0x74, 0x46, 0x47, 0x37, 0x67, 0x4d, 0x34, 0x45, 0x59, 0x42, 0x43, 0x34, 0x34, 0x71, 0x73, 0x46, 0x46, 0x4a, 0x2f, 0x4d, 0x6d, 0x45, 0x75, 0x4c, 0x51, 0x39, 0x78, 0x5c, 0x0a, 0x09, 0x33, 0x2b, 0x46, 0x35, 0x50, 0x48, 0x42, 0x6b, 0x48, 0x6f, 0x64, 0x6d, 0x46, 0x33, 0x48, 0x6f, 0x79, 0x42, 0x7a, 0x6d, 0x6c, 0x35, 0x61, 0x77, 0x74, 0x44, 0x7a, 0x45, 0x77, 0x75, 0x49, 0x41, 0x73, 0x77, 0x75, 0x4c, 0x47, 0x41, 0x79, 0x47, 0x47, 0x41, 0x79, 0x58, 0x77, 0x66, 0x66, 0x6f, 0x4c, 0x79, 0x77, 0x75, 0x6f, 0x53, 0x6a, 0x38, 0x78, 0x6f, 0x34, 0x38, 0x7a, 0x7a, 0x45, 0x2b, 0x78, 0x6e, 0x66, 0x76, 0x41, 0x55, 0x53, 0x45, 0x5c, 0x0a, 0x09, 0x79, 0x66, 0x45, 0x78, 0x67, 0x49, 0x41, 0x38, 0x79, 0x7a, 0x44, 0x65, 0x37, 0x77, 0x45, 0x41, 0x2b, 0x74, 0x30, 0x75, 0x4f, 0x74, 0x30, 0x63, 0x6e, 0x62, 0x79, 0x44, 0x69, 0x56, 0x34, 0x58, 0x52, 0x49, 0x53, 0x74, 0x45, 0x2f, 0x36, 0x65, 0x38, 0x48, 0x69, 0x2f, 0x69, 0x30, 0x36, 0x57, 0x6f, 0x64, 0x66, 0x74, 0x6f, 0x4e, 0x66, 0x4a, 0x30, 0x65, 0x39, 0x32, 0x30, 0x4f, 0x74, 0x6b, 0x47, 0x4f, 0x2f, 0x31, 0x30, 0x4d, 0x6e, 0x39, 0x5c, 0x0a, 0x09, 0x6a, 0x73, 0x46, 0x4f, 0x7a, 0x6e, 0x48, 0x58, 0x41, 0x44, 0x32, 0x52, 0x79, 0x6a, 0x4f, 0x6a, 0x34, 0x58, 0x4e, 0x7a, 0x71, 0x36, 0x34, 0x34, 0x48, 0x51, 0x7a, 0x4e, 0x32, 0x57, 0x56, 0x6a, 0x57, 0x7a, 0x78, 0x6a, 0x63, 0x63, 0x70, 0x6f, 0x6c, 0x52, 0x35, 0x30, 0x50, 0x5a, 0x4d, 0x48, 0x42, 0x6e, 0x79, 0x31, 0x49, 0x41, 0x30, 0x6d, 0x58, 0x66, 0x31, 0x42, 0x68, 0x50, 0x6d, 0x6c, 0x5a, 0x51, 0x79, 0x57, 0x43, 0x79, 0x77, 0x4d, 0x5c, 0x0a, 0x09, 0x68, 0x6c, 0x67, 0x75, 0x43, 0x73, 0x77, 0x76, 0x44, 0x56, 0x41, 0x36, 0x59, 0x48, 0x62, 0x52, 0x62, 0x36, 0x36, 0x5a, 0x57, 0x31, 0x78, 0x43, 0x36, 0x59, 0x41, 0x6a, 0x38, 0x34, 0x74, 0x77, 0x7a, 0x75, 0x46, 0x49, 0x74, 0x61, 0x56, 0x35, 0x66, 0x6e, 0x45, 0x51, 0x74, 0x30, 0x51, 0x50, 0x6c, 0x6f, 0x64, 0x77, 0x7a, 0x6d, 0x46, 0x68, 0x30, 0x57, 0x2f, 0x44, 0x39, 0x75, 0x7a, 0x36, 0x54, 0x2f, 0x2b, 0x4d, 0x69, 0x41, 0x65, 0x4c, 0x5c, 0x0a, 0x09, 0x4c, 0x4d, 0x73, 0x78, 0x4d, 0x64, 0x36, 0x76, 0x57, 0x50, 0x50, 0x62, 0x6d, 0x4d, 0x66, 0x37, 0x50, 0x66, 0x52, 0x36, 0x58, 0x59, 0x7a, 0x31, 0x2b, 0x39, 0x67, 0x79, 0x33, 0x6b, 0x65, 0x2f, 0x32, 0x38, 0x56, 0x34, 0x76, 0x34, 0x74, 0x74, 0x57, 0x79, 0x61, 0x77, 0x66, 0x63, 0x73, 0x45, 0x64, 0x6d, 0x77, 0x64, 0x78, 0x2b, 0x37, 0x70, 0x53, 0x66, 0x54, 0x79, 0x54, 0x4e, 0x71, 0x73, 0x6d, 0x48, 0x59, 0x41, 0x69, 0x5a, 0x50, 0x48, 0x5c, 0x0a, 0x09, 0x6f, 0x6b, 0x70, 0x2f, 0x76, 0x73, 0x35, 0x55, 0x49, 0x7a, 0x69, 0x74, 0x45, 0x32, 0x30, 0x6b, 0x41, 0x42, 0x78, 0x76, 0x6e, 0x68, 0x57, 0x6f, 0x37, 0x35, 0x53, 0x64, 0x4f, 0x63, 0x7a, 0x4d, 0x4c, 0x2b, 0x45, 0x72, 0x4e, 0x39, 0x79, 0x42, 0x61, 0x32, 0x36, 0x38, 0x46, 0x54, 0x66, 0x63, 0x65, 0x67, 0x64, 0x75, 0x76, 0x4f, 0x6c, 0x57, 0x33, 0x48, 0x54, 0x54, 0x54, 0x52, 0x67, 0x4f, 0x6c, 0x36, 0x4e, 0x4e, 0x4a, 0x58, 0x76, 0x4e, 0x5c, 0x0a, 0x09, 0x41, 0x61, 0x55, 0x54, 0x75, 0x61, 0x56, 0x54, 0x50, 0x48, 0x52, 0x53, 0x39, 0x52, 0x57, 0x33, 0x63, 0x61, 0x72, 0x67, 0x6e, 0x7a, 0x77, 0x41, 0x34, 0x79, 0x6f, 0x6a, 0x71, 0x73, 0x37, 0x78, 0x65, 0x76, 0x70, 0x68, 0x6e, 0x48, 0x42, 0x74, 0x79, 0x35, 0x61, 0x74, 0x6d, 0x4e, 0x34, 0x32, 0x6a, 0x61, 0x6d, 0x74, 0x57, 0x37, 0x46, 0x39, 0x32, 0x7a, 0x53, 0x6d, 0x70, 0x37, 0x5a, 0x69, 0x65, 0x75, 0x73, 0x55, 0x64, 0x6b, 0x78, 0x76, 0x5c, 0x0a, 0x09, 0x77, 0x61, 0x37, 0x74, 0x57, 0x37, 0x48, 0x6e, 0x75, 0x4f, 0x30, 0x34, 0x59, 0x66, 0x73, 0x57, 0x37, 0x4e, 0x32, 0x35, 0x48, 0x56, 0x73, 0x6e, 0x75, 0x6b, 0x67, 0x4d, 0x7a, 0x5a, 0x77, 0x6a, 0x73, 0x33, 0x4d, 0x38, 0x36, 0x6f, 0x2b, 0x63, 0x72, 0x34, 0x34, 0x67, 0x37, 0x65, 0x6a, 0x4a, 0x66, 0x4e, 0x77, 0x67, 0x55, 0x59, 0x52, 0x77, 0x78, 0x77, 0x4e, 0x48, 0x63, 0x4f, 0x65, 0x44, 0x4d, 0x37, 0x6a, 0x72, 0x67, 0x52, 0x6e, 0x63, 0x5c, 0x0a, 0x09, 0x65, 0x2b, 0x67, 0x49, 0x37, 0x6a, 0x73, 0x34, 0x67, 0x35, 0x6b, 0x6a, 0x63, 0x35, 0x69, 0x5a, 0x6e, 0x63, 0x57, 0x68, 0x51, 0x7a, 0x4f, 0x59, 0x6d, 0x54, 0x6d, 0x43, 0x67, 0x34, 0x63, 0x4f, 0x59, 0x75, 0x62, 0x67, 0x51, 0x51, 0x79, 0x48, 0x42, 0x66, 0x51, 0x65, 0x66, 0x76, 0x36, 0x77, 0x6b, 0x33, 0x34, 0x71, 0x30, 0x48, 0x6f, 0x49, 0x43, 0x57, 0x52, 0x38, 0x52, 0x74, 0x5a, 0x59, 0x75, 0x35, 0x44, 0x62, 0x64, 0x4a, 0x4d, 0x45, 0x5c, 0x0a, 0x09, 0x6f, 0x36, 0x71, 0x72, 0x37, 0x61, 0x54, 0x62, 0x36, 0x32, 0x4c, 0x66, 0x76, 0x74, 0x4e, 0x77, 0x2b, 0x72, 0x35, 0x54, 0x63, 0x57, 0x44, 0x76, 0x53, 0x54, 0x68, 0x6e, 0x2f, 0x36, 0x6e, 0x34, 0x6e, 0x67, 0x4d, 0x6e, 0x59, 0x57, 0x71, 0x38, 0x70, 0x79, 0x49, 0x2b, 0x55, 0x47, 0x38, 0x7a, 0x44, 0x32, 0x30, 0x36, 0x32, 0x59, 0x48, 0x58, 0x31, 0x59, 0x34, 0x56, 0x39, 0x62, 0x44, 0x47, 0x74, 0x48, 0x45, 0x41, 0x51, 0x42, 0x59, 0x41, 0x5c, 0x0a, 0x09, 0x63, 0x43, 0x4f, 0x56, 0x47, 0x63, 0x46, 0x31, 0x74, 0x39, 0x2b, 0x50, 0x39, 0x2f, 0x33, 0x64, 0x5a, 0x66, 0x6a, 0x6e, 0x54, 0x31, 0x77, 0x57, 0x6e, 0x54, 0x31, 0x35, 0x53, 0x6b, 0x73, 0x72, 0x54, 0x54, 0x6c, 0x38, 0x31, 0x4c, 0x65, 0x31, 0x54, 0x39, 0x75, 0x6c, 0x44, 0x35, 0x30, 0x41, 0x7a, 0x50, 0x69, 0x55, 0x51, 0x66, 0x45, 0x2b, 0x4f, 0x59, 0x43, 0x45, 0x2f, 0x64, 0x36, 0x38, 0x37, 0x33, 0x6f, 0x59, 0x33, 0x71, 0x6e, 0x6d, 0x5c, 0x0a, 0x09, 0x5a, 0x6d, 0x63, 0x78, 0x65, 0x2b, 0x51, 0x49, 0x37, 0x6f, 0x68, 0x42, 0x50, 0x6a, 0x58, 0x71, 0x77, 0x4e, 0x2f, 0x70, 0x70, 0x2b, 0x2f, 0x48, 0x67, 0x66, 0x32, 0x6e, 0x34, 0x65, 0x47, 0x6e, 0x6e, 0x59, 0x4c, 0x7a, 0x48, 0x37, 0x59, 0x58, 0x35, 0x35, 0x35, 0x32, 0x41, 0x71, 0x59, 0x6d, 0x2b, 0x6e, 0x57, 0x55, 0x6a, 0x30, 0x42, 0x51, 0x6a, 0x37, 0x64, 0x78, 0x37, 0x55, 0x41, 0x66, 0x43, 0x37, 0x44, 0x6c, 0x57, 0x5a, 0x55, 0x71, 0x5c, 0x0a, 0x09, 0x4c, 0x31, 0x4a, 0x6a, 0x4e, 0x66, 0x37, 0x71, 0x32, 0x71, 0x33, 0x33, 0x48, 0x38, 0x48, 0x58, 0x62, 0x72, 0x67, 0x56, 0x58, 0x37, 0x2f, 0x78, 0x46, 0x74, 0x78, 0x77, 0x30, 0x32, 0x32, 0x34, 0x37, 0x68, 0x76, 0x66, 0x77, 0x71, 0x47, 0x44, 0x42, 0x31, 0x4d, 0x64, 0x4d, 0x54, 0x6c, 0x77, 0x6b, 0x4c, 0x51, 0x65, 0x44, 0x39, 0x62, 0x36, 0x35, 0x49, 0x39, 0x55, 0x57, 0x77, 0x38, 0x49, 0x38, 0x59, 0x65, 0x50, 0x6b, 0x6f, 0x53, 0x48, 0x5c, 0x0a, 0x09, 0x4f, 0x54, 0x49, 0x48, 0x2b, 0x2f, 0x41, 0x41, 0x6b, 0x2b, 0x69, 0x48, 0x62, 0x48, 0x30, 0x50, 0x42, 0x67, 0x4e, 0x63, 0x66, 0x2f, 0x32, 0x33, 0x38, 0x4f, 0x33, 0x72, 0x72, 0x38, 0x63, 0x2f, 0x56, 0x2b, 0x50, 0x6f, 0x64, 0x4c, 0x76, 0x34, 0x34, 0x55, 0x74, 0x2b, 0x41, 0x44, 0x39, 0x39, 0x79, 0x66, 0x66, 0x68, 0x7a, 0x4a, 0x4e, 0x33, 0x53, 0x64, 0x6e, 0x79, 0x44, 0x43, 0x34, 0x42, 0x55, 0x41, 0x63, 0x41, 0x4f, 0x7a, 0x59, 0x36, 0x5c, 0x0a, 0x09, 0x41, 0x36, 0x44, 0x47, 0x46, 0x31, 0x61, 0x75, 0x45, 0x66, 0x6d, 0x48, 0x67, 0x41, 0x41, 0x51, 0x4c, 0x63, 0x4b, 0x35, 0x66, 0x69, 0x33, 0x6b, 0x5a, 0x69, 0x54, 0x38, 0x2f, 0x79, 0x37, 0x37, 0x43, 0x6e, 0x37, 0x6e, 0x44, 0x39, 0x36, 0x54, 0x52, 0x41, 0x6e, 0x74, 0x6d, 0x4e, 0x70, 0x59, 0x77, 0x72, 0x6c, 0x59, 0x4e, 0x70, 0x42, 0x43, 0x2f, 0x4d, 0x5a, 0x4d, 0x67, 0x46, 0x32, 0x33, 0x6a, 0x46, 0x61, 0x30, 0x70, 0x63, 0x70, 0x70, 0x5c, 0x0a, 0x09, 0x59, 0x2b, 0x5a, 0x41, 0x77, 0x68, 0x39, 0x42, 0x74, 0x51, 0x41, 0x69, 0x65, 0x53, 0x38, 0x41, 0x4d, 0x2f, 0x67, 0x38, 0x7a, 0x33, 0x48, 0x52, 0x52, 0x52, 0x66, 0x69, 0x71, 0x52, 0x65, 0x63, 0x6a, 0x30, 0x73, 0x65, 0x2b, 0x77, 0x68, 0x4d, 0x54, 0x2f, 0x53, 0x62, 0x48, 0x5a, 0x6f, 0x7a, 0x79, 0x4e, 0x4e, 0x54, 0x6e, 0x6a, 0x33, 0x6f, 0x7a, 0x4b, 0x42, 0x70, 0x79, 0x6d, 0x58, 0x51, 0x74, 0x2b, 0x39, 0x36, 0x45, 0x42, 0x2f, 0x35, 0x5c, 0x0a, 0x09, 0x33, 0x4a, 0x58, 0x34, 0x78, 0x4b, 0x63, 0x2f, 0x6a, 0x78, 0x74, 0x76, 0x76, 0x4a, 0x47, 0x4a, 0x56, 0x32, 0x56, 0x44, 0x69, 0x72, 0x53, 0x38, 0x77, 0x39, 0x67, 0x54, 0x49, 0x47, 0x7a, 0x49, 0x36, 0x4b, 0x78, 0x48, 0x6a, 0x58, 0x6c, 0x37, 0x31, 0x6a, 0x73, 0x56, 0x45, 0x74, 0x32, 0x6f, 0x36, 0x5a, 0x53, 0x56, 0x46, 0x57, 0x70, 0x64, 0x4e, 0x5a, 0x5a, 0x31, 0x44, 0x72, 0x31, 0x2b, 0x44, 0x37, 0x39, 0x35, 0x36, 0x53, 0x76, 0x77, 0x5c, 0x0a, 0x09, 0x6f, 0x30, 0x38, 0x36, 0x4e, 0x7a, 0x41, 0x39, 0x57, 0x72, 0x61, 0x65, 0x66, 0x67, 0x6e, 0x41, 0x4f, 0x37, 0x4a, 0x48, 0x50, 0x73, 0x57, 0x55, 0x37, 0x33, 0x72, 0x51, 0x52, 0x67, 0x48, 0x41, 0x4e, 0x67, 0x41, 0x48, 0x5a, 0x63, 0x71, 0x6b, 0x30, 0x6c, 0x73, 0x41, 0x49, 0x4f, 0x41, 0x76, 0x50, 0x2f, 0x6b, 0x31, 0x76, 0x50, 0x34, 0x74, 0x62, 0x34, 0x2b, 0x58, 0x6b, 0x6f, 0x6a, 0x4d, 0x49, 0x67, 0x55, 0x79, 0x51, 0x69, 0x66, 0x76, 0x5c, 0x0a, 0x09, 0x56, 0x45, 0x33, 0x4a, 0x6c, 0x31, 0x51, 0x45, 0x63, 0x68, 0x55, 0x79, 0x2b, 0x34, 0x63, 0x34, 0x4b, 0x67, 0x57, 0x79, 0x52, 0x32, 0x2b, 0x72, 0x51, 0x70, 0x42, 0x6e, 0x2f, 0x47, 0x4f, 0x34, 0x46, 0x72, 0x68, 0x6f, 0x49, 0x77, 0x74, 0x39, 0x4e, 0x42, 0x6d, 0x4f, 0x61, 0x6c, 0x56, 0x63, 0x30, 0x38, 0x37, 0x53, 0x39, 0x41, 0x78, 0x39, 0x4f, 0x4c, 0x64, 0x37, 0x7a, 0x78, 0x37, 0x38, 0x2b, 0x69, 0x2b, 0x38, 0x47, 0x4d, 0x39, 0x34, 0x5c, 0x0a, 0x09, 0x7a, 0x42, 0x6c, 0x4b, 0x6a, 0x6a, 0x70, 0x38, 0x73, 0x65, 0x38, 0x36, 0x74, 0x62, 0x65, 0x4d, 0x4e, 0x44, 0x4a, 0x67, 0x4f, 0x2f, 0x37, 0x63, 0x77, 0x67, 0x43, 0x2f, 0x2f, 0x37, 0x63, 0x66, 0x78, 0x77, 0x63, 0x2b, 0x2b, 0x43, 0x46, 0x37, 0x32, 0x73, 0x53, 0x36, 0x74, 0x62, 0x49, 0x71, 0x66, 0x56, 0x36, 0x54, 0x6b, 0x42, 0x2b, 0x41, 0x4c, 0x4d, 0x38, 0x41, 0x45, 0x4d, 0x71, 0x79, 0x41, 0x47, 0x55, 0x5a, 0x71, 0x44, 0x72, 0x6d, 0x5c, 0x0a, 0x09, 0x4d, 0x74, 0x4c, 0x48, 0x38, 0x62, 0x76, 0x6d, 0x6a, 0x34, 0x47, 0x44, 0x2b, 0x56, 0x67, 0x7a, 0x64, 0x33, 0x77, 0x56, 0x52, 0x50, 0x67, 0x34, 0x4c, 0x42, 0x44, 0x4a, 0x73, 0x68, 0x7a, 0x76, 0x65, 0x74, 0x4e, 0x72, 0x38, 0x62, 0x54, 0x7a, 0x54, 0x76, 0x63, 0x64, 0x57, 0x6d, 0x73, 0x6f, 0x38, 0x76, 0x68, 0x31, 0x63, 0x4f, 0x34, 0x4e, 0x6d, 0x77, 0x38, 0x41, 0x69, 0x4d, 0x34, 0x41, 0x33, 0x4c, 0x63, 0x61, 0x6a, 0x62, 0x4b, 0x69, 0x5c, 0x0a, 0x09, 0x47, 0x2b, 0x38, 0x2b, 0x69, 0x47, 0x65, 0x2f, 0x2f, 0x44, 0x56, 0x59, 0x57, 0x6c, 0x77, 0x53, 0x43, 0x75, 0x74, 0x30, 0x75, 0x78, 0x67, 0x66, 0x48, 0x30, 0x65, 0x33, 0x33, 0x30, 0x65, 0x6e, 0x30, 0x30, 0x47, 0x57, 0x35, 0x56, 0x55, 0x7a, 0x4a, 0x52, 0x77, 0x63, 0x79, 0x6d, 0x47, 0x4a, 0x30, 0x76, 0x6c, 0x6e, 0x34, 0x6c, 0x33, 0x70, 0x55, 0x4a, 0x61, 0x46, 0x2f, 0x33, 0x51, 0x46, 0x55, 0x43, 0x6d, 0x75, 0x4c, 0x4d, 0x75, 0x59, 0x5c, 0x0a, 0x09, 0x70, 0x70, 0x57, 0x6c, 0x65, 0x71, 0x74, 0x4c, 0x57, 0x45, 0x43, 0x4b, 0x5a, 0x51, 0x41, 0x51, 0x6f, 0x58, 0x43, 0x6c, 0x47, 0x62, 0x30, 0x41, 0x43, 0x49, 0x4d, 0x4d, 0x31, 0x35, 0x4e, 0x73, 0x41, 0x62, 0x61, 0x54, 0x36, 0x41, 0x79, 0x47, 0x55, 0x31, 0x4e, 0x2f, 0x76, 0x4e, 0x77, 0x62, 0x66, 0x2b, 0x32, 0x58, 0x38, 0x61, 0x4e, 0x50, 0x50, 0x43, 0x39, 0x31, 0x57, 0x4c, 0x46, 0x41, 0x78, 0x52, 0x32, 0x64, 0x5a, 0x77, 0x46, 0x47, 0x5c, 0x0a, 0x09, 0x52, 0x68, 0x41, 0x37, 0x54, 0x35, 0x31, 0x30, 0x66, 0x6e, 0x45, 0x5a, 0x72, 0x33, 0x7a, 0x6e, 0x58, 0x2b, 0x4c, 0x79, 0x79, 0x7a, 0x2b, 0x64, 0x4f, 0x4a, 0x45, 0x46, 0x57, 0x48, 0x6d, 0x65, 0x49, 0x38, 0x74, 0x7a, 0x35, 0x48, 0x6e, 0x4f, 0x6d, 0x69, 0x56, 0x51, 0x52, 0x70, 0x58, 0x63, 0x67, 0x70, 0x4e, 0x35, 0x2f, 0x58, 0x6c, 0x48, 0x4c, 0x79, 0x74, 0x57, 0x58, 0x50, 0x72, 0x4a, 0x77, 0x4c, 0x71, 0x4d, 0x41, 0x67, 0x77, 0x74, 0x5c, 0x0a, 0x09, 0x31, 0x4a, 0x4a, 0x78, 0x5a, 0x53, 0x6e, 0x34, 0x61, 0x5a, 0x7a, 0x69, 0x57, 0x5a, 0x47, 0x2f, 0x61, 0x74, 0x59, 0x4d, 0x49, 0x45, 0x5a, 0x57, 0x78, 0x34, 0x48, 0x6d, 0x78, 0x4a, 0x4e, 0x50, 0x77, 0x74, 0x2b, 0x39, 0x39, 0x54, 0x65, 0x77, 0x77, 0x33, 0x70, 0x51, 0x69, 0x4e, 0x75, 0x35, 0x50, 0x2f, 0x64, 0x4f, 0x77, 0x50, 0x31, 0x69, 0x64, 0x74, 0x62, 0x47, 0x41, 0x63, 0x44, 0x47, 0x72, 0x41, 0x45, 0x34, 0x74, 0x79, 0x4f, 0x39, 0x5c, 0x0a, 0x09, 0x50, 0x5a, 0x4f, 0x6d, 0x73, 0x65, 0x2f, 0x35, 0x75, 0x30, 0x39, 0x67, 0x6b, 0x54, 0x33, 0x72, 0x6a, 0x59, 0x78, 0x77, 0x30, 0x6b, 0x6d, 0x6e, 0x59, 0x48, 0x4c, 0x72, 0x56, 0x70, 0x52, 0x6c, 0x69, 0x62, 0x49, 0x6f, 0x55, 0x4a, 0x51, 0x6c, 0x69, 0x73, 0x49, 0x2f, 0x64, 0x31, 0x34, 0x55, 0x4a, 0x63, 0x70, 0x69, 0x36, 0x43, 0x4e, 0x47, 0x41, 0x5a, 0x54, 0x6b, 0x54, 0x53, 0x52, 0x44, 0x6a, 0x68, 0x49, 0x46, 0x73, 0x6a, 0x4b, 0x4c, 0x5c, 0x0a, 0x09, 0x4c, 0x39, 0x71, 0x67, 0x4c, 0x41, 0x50, 0x4b, 0x45, 0x73, 0x34, 0x42, 0x57, 0x65, 0x61, 0x4e, 0x4c, 0x68, 0x68, 0x67, 0x31, 0x46, 0x57, 0x57, 0x69, 0x65, 0x77, 0x67, 0x42, 0x38, 0x58, 0x4d, 0x67, 0x47, 0x4c, 0x36, 0x55, 0x58, 0x32, 0x72, 0x79, 0x75, 0x72, 0x6e, 0x76, 0x2f, 0x55, 0x4c, 0x50, 0x75, 0x4f, 0x31, 0x59, 0x48, 0x52, 0x55, 0x47, 0x35, 0x57, 0x31, 0x31, 0x6d, 0x43, 0x6d, 0x78, 0x70, 0x42, 0x74, 0x76, 0x66, 0x46, 0x74, 0x5c, 0x0a, 0x09, 0x37, 0x38, 0x56, 0x35, 0x70, 0x2f, 0x38, 0x33, 0x6e, 0x48, 0x6e, 0x79, 0x54, 0x75, 0x6e, 0x6f, 0x6f, 0x78, 0x62, 0x39, 0x43, 0x45, 0x62, 0x32, 0x70, 0x63, 0x76, 0x70, 0x36, 0x51, 0x50, 0x77, 0x2f, 0x6f, 0x39, 0x39, 0x41, 0x5a, 0x64, 0x66, 0x2f, 0x6d, 0x6b, 0x6d, 0x67, 0x37, 0x72, 0x6f, 0x32, 0x4d, 0x51, 0x34, 0x2b, 0x6d, 0x4e, 0x39, 0x39, 0x48, 0x70, 0x6a, 0x79, 0x50, 0x49, 0x4d, 0x57, 0x64, 0x36, 0x42, 0x4b, 0x38, 0x73, 0x49, 0x5c, 0x0a, 0x09, 0x77, 0x4d, 0x34, 0x35, 0x46, 0x50, 0x47, 0x59, 0x41, 0x58, 0x52, 0x31, 0x6a, 0x4e, 0x4a, 0x56, 0x2b, 0x73, 0x68, 0x51, 0x6c, 0x6d, 0x58, 0x4d, 0x41, 0x76, 0x67, 0x6e, 0x38, 0x68, 0x79, 0x75, 0x4b, 0x41, 0x41, 0x69, 0x5a, 0x45, 0x61, 0x6d, 0x46, 0x72, 0x6a, 0x79, 0x2b, 0x6d, 0x43, 0x67, 0x70, 0x4e, 0x63, 0x4d, 0x46, 0x46, 0x43, 0x48, 0x4d, 0x6e, 0x6f, 0x4b, 0x6d, 0x41, 0x42, 0x35, 0x41, 0x41, 0x59, 0x4f, 0x32, 0x6d, 0x78, 0x36, 0x5c, 0x0a, 0x09, 0x65, 0x4f, 0x63, 0x64, 0x64, 0x2b, 0x42, 0x2f, 0x2f, 0x65, 0x74, 0x58, 0x38, 0x64, 0x4a, 0x6e, 0x58, 0x69, 0x67, 0x56, 0x79, 0x51, 0x55, 0x66, 0x32, 0x33, 0x63, 0x37, 0x6a, 0x51, 0x4c, 0x72, 0x53, 0x68, 0x75, 0x31, 0x44, 0x32, 0x41, 0x48, 0x41, 0x4e, 0x53, 0x33, 0x75, 0x78, 0x68, 0x56, 0x33, 0x2b, 0x39, 0x36, 0x63, 0x41, 0x37, 0x2f, 0x38, 0x49, 0x2f, 0x2f, 0x58, 0x4a, 0x33, 0x7a, 0x48, 0x79, 0x65, 0x64, 0x63, 0x69, 0x71, 0x6d, 0x5c, 0x0a, 0x09, 0x64, 0x2b, 0x78, 0x41, 0x6e, 0x75, 0x58, 0x49, 0x73, 0x67, 0x78, 0x5a, 0x37, 0x6a, 0x38, 0x37, 0x48, 0x66, 0x2b, 0x49, 0x5a, 0x70, 0x35, 0x6e, 0x79, 0x4c, 0x49, 0x63, 0x52, 0x4f, 0x51, 0x4e, 0x45, 0x46, 0x6d, 0x4d, 0x4e, 0x6c, 0x6d, 0x65, 0x67, 0x37, 0x49, 0x4d, 0x65, 0x62, 0x68, 0x4f, 0x42, 0x47, 0x52, 0x68, 0x2b, 0x41, 0x35, 0x5a, 0x6c, 0x6f, 0x45, 0x6f, 0x51, 0x7a, 0x44, 0x36, 0x36, 0x45, 0x4d, 0x5a, 0x45, 0x31, 0x47, 0x6f, 0x5c, 0x0a, 0x09, 0x4a, 0x36, 0x4a, 0x4f, 0x7a, 0x58, 0x2b, 0x57, 0x5a, 0x66, 0x35, 0x53, 0x31, 0x4b, 0x2b, 0x2f, 0x48, 0x46, 0x2b, 0x52, 0x35, 0x62, 0x78, 0x44, 0x36, 0x37, 0x66, 0x4a, 0x36, 0x42, 0x51, 0x7a, 0x4c, 0x49, 0x6a, 0x35, 0x4c, 0x6f, 0x31, 0x55, 0x56, 0x43, 0x51, 0x51, 0x44, 0x6b, 0x75, 0x4c, 0x69, 0x2f, 0x6a, 0x6a, 0x6a, 0x31, 0x7a, 0x4f, 0x5a, 0x4f, 0x56, 0x69, 0x64, 0x70, 0x4e, 0x57, 0x71, 0x4a, 0x67, 0x4b, 0x54, 0x69, 0x32, 0x41, 0x5c, 0x0a, 0x09, 0x57, 0x41, 0x4d, 0x4d, 0x41, 0x78, 0x4c, 0x6e, 0x63, 0x50, 0x2f, 0x68, 0x42, 0x62, 0x7a, 0x2f, 0x4c, 0x2f, 0x39, 0x61, 0x39, 0x4e, 0x33, 0x72, 0x39, 0x33, 0x48, 0x69, 0x4b, 0x61, 0x66, 0x69, 0x59, 0x59, 0x38, 0x34, 0x43, 0x36, 0x66, 0x73, 0x4f, 0x77, 0x33, 0x48, 0x37, 0x64, 0x71, 0x44, 0x4c, 0x56, 0x4e, 0x54, 0x36, 0x49, 0x2b, 0x4e, 0x49, 0x38, 0x38, 0x7a, 0x35, 0x4a, 0x6e, 0x58, 0x43, 0x54, 0x49, 0x2f, 0x4a, 0x65, 0x74, 0x6b, 0x5c, 0x0a, 0x09, 0x4f, 0x53, 0x67, 0x6a, 0x45, 0x44, 0x48, 0x64, 0x78, 0x4f, 0x4d, 0x73, 0x79, 0x6a, 0x32, 0x72, 0x35, 0x4d, 0x37, 0x66, 0x4c, 0x78, 0x69, 0x35, 0x79, 0x76, 0x4d, 0x49, 0x64, 0x42, 0x6c, 0x6c, 0x45, 0x54, 0x37, 0x72, 0x4d, 0x58, 0x69, 0x4a, 0x42, 0x64, 0x31, 0x5a, 0x36, 0x30, 0x41, 0x4f, 0x48, 0x70, 0x41, 0x43, 0x43, 0x46, 0x73, 0x4c, 0x79, 0x67, 0x6c, 0x34, 0x4f, 0x79, 0x54, 0x74, 0x78, 0x4f, 0x73, 0x42, 0x47, 0x42, 0x7a, 0x77, 0x5c, 0x0a, 0x09, 0x6a, 0x35, 0x2f, 0x36, 0x66, 0x47, 0x68, 0x41, 0x79, 0x5a, 0x32, 0x56, 0x39, 0x35, 0x6e, 0x41, 0x54, 0x67, 0x50, 0x54, 0x31, 0x35, 0x55, 0x32, 0x42, 0x67, 0x43, 0x49, 0x74, 0x6b, 0x63, 0x44, 0x62, 0x5a, 0x69, 0x44, 0x58, 0x6e, 0x62, 0x6c, 0x74, 0x7a, 0x43, 0x73, 0x49, 0x6a, 0x75, 0x42, 0x30, 0x4f, 0x76, 0x33, 0x73, 0x57, 0x76, 0x6e, 0x62, 0x6e, 0x54, 0x79, 0x48, 0x4a, 0x52, 0x6e, 0x4e, 0x51, 0x68, 0x6b, 0x33, 0x6e, 0x6a, 0x38, 0x5c, 0x0a, 0x09, 0x33, 0x4c, 0x39, 0x79, 0x66, 0x41, 0x34, 0x43, 0x6c, 0x46, 0x55, 0x47, 0x52, 0x2f, 0x35, 0x38, 0x5a, 0x58, 0x43, 0x41, 0x51, 0x30, 0x62, 0x6b, 0x6a, 0x61, 0x6e, 0x53, 0x59, 0x41, 0x30, 0x43, 0x58, 0x6b, 0x4d, 0x4a, 0x43, 0x49, 0x54, 0x37, 0x79, 0x41, 0x77, 0x6f, 0x67, 0x73, 0x46, 0x56, 0x63, 0x63, 0x63, 0x44, 0x6a, 0x54, 0x4c, 0x61, 0x75, 0x48, 0x71, 0x4e, 0x47, 0x67, 0x79, 0x73, 0x39, 0x38, 0x77, 0x6c, 0x61, 0x61, 0x64, 0x4c, 0x5c, 0x0a, 0x09, 0x6a, 0x54, 0x62, 0x55, 0x35, 0x57, 0x44, 0x67, 0x34, 0x50, 0x43, 0x52, 0x66, 0x2f, 0x77, 0x59, 0x37, 0x70, 0x75, 0x5a, 0x6a, 0x37, 0x79, 0x4c, 0x56, 0x44, 0x4e, 0x59, 0x71, 0x4d, 0x34, 0x4f, 0x6e, 0x4a, 0x59, 0x2f, 0x79, 0x38, 0x4a, 0x63, 0x74, 0x50, 0x61, 0x59, 0x75, 0x6e, 0x37, 0x30, 0x69, 0x71, 0x73, 0x78, 0x4e, 0x7a, 0x65, 0x48, 0x38, 0x43, 0x61, 0x65, 0x54, 0x74, 0x37, 0x42, 0x67, 0x54, 0x4d, 0x66, 0x67, 0x65, 0x4e, 0x32, 0x5c, 0x0a, 0x09, 0x37, 0x6b, 0x53, 0x2f, 0x31, 0x30, 0x65, 0x65, 0x2b, 0x56, 0x54, 0x66, 0x79, 0x37, 0x72, 0x53, 0x54, 0x51, 0x55, 0x43, 0x6e, 0x64, 0x79, 0x44, 0x41, 0x49, 0x67, 0x38, 0x43, 0x47, 0x63, 0x77, 0x51, 0x43, 0x43, 0x72, 0x51, 0x4b, 0x44, 0x57, 0x42, 0x35, 0x65, 0x6a, 0x53, 0x46, 0x51, 0x43, 0x43, 0x44, 0x69, 0x48, 0x6e, 0x4f, 0x6c, 0x4d, 0x67, 0x33, 0x4c, 0x51, 0x6e, 0x5a, 0x37, 0x71, 0x36, 0x6a, 0x73, 0x46, 0x31, 0x74, 0x75, 0x54, 0x5c, 0x0a, 0x09, 0x78, 0x52, 0x75, 0x4f, 0x34, 0x65, 0x71, 0x6d, 0x46, 0x51, 0x43, 0x48, 0x4f, 0x69, 0x47, 0x4c, 0x75, 0x4f, 0x61, 0x61, 0x61, 0x33, 0x44, 0x48, 0x67, 0x30, 0x66, 0x53, 0x7a, 0x45, 0x6f, 0x41, 0x43, 0x51, 0x48, 0x4f, 0x6e, 0x58, 0x44, 0x35, 0x6c, 0x36, 0x2f, 0x65, 0x30, 0x4a, 0x38, 0x4a, 0x57, 0x39, 0x63, 0x70, 0x77, 0x49, 0x46, 0x39, 0x70, 0x2b, 0x48, 0x4e, 0x72, 0x33, 0x34, 0x5a, 0x6e, 0x76, 0x33, 0x6b, 0x78, 0x2b, 0x30, 0x51, 0x5c, 0x0a, 0x09, 0x74, 0x30, 0x65, 0x4d, 0x74, 0x50, 0x58, 0x72, 0x33, 0x37, 0x36, 0x35, 0x2b, 0x75, 0x70, 0x54, 0x72, 0x4e, 0x30, 0x6e, 0x6e, 0x49, 0x42, 0x4f, 0x72, 0x34, 0x74, 0x69, 0x4f, 0x41, 0x53, 0x49, 0x4d, 0x4d, 0x51, 0x51, 0x57, 0x53, 0x58, 0x77, 0x34, 0x58, 0x42, 0x59, 0x75, 0x36, 0x4e, 0x7a, 0x79, 0x44, 0x73, 0x35, 0x55, 0x4a, 0x43, 0x66, 0x44, 0x6e, 0x51, 0x79, 0x59, 0x46, 0x68, 0x4e, 0x42, 0x7a, 0x49, 0x2b, 0x48, 0x63, 0x68, 0x52, 0x5c, 0x0a, 0x09, 0x75, 0x67, 0x49, 0x5a, 0x41, 0x53, 0x37, 0x50, 0x66, 0x66, 0x72, 0x75, 0x58, 0x45, 0x77, 0x2f, 0x77, 0x33, 0x76, 0x7a, 0x71, 0x49, 0x6f, 0x45, 0x6c, 0x47, 0x55, 0x2b, 0x39, 0x61, 0x77, 0x6f, 0x69, 0x39, 0x4d, 0x42, 0x50, 0x77, 0x37, 0x76, 0x6e, 0x4e, 0x55, 0x51, 0x73, 0x69, 0x79, 0x75, 0x43, 0x66, 0x67, 0x53, 0x46, 0x52, 0x42, 0x51, 0x48, 0x66, 0x32, 0x54, 0x37, 0x44, 0x44, 0x36, 0x48, 0x67, 0x4d, 0x4b, 0x49, 0x2f, 0x72, 0x72, 0x5c, 0x0a, 0x09, 0x32, 0x31, 0x6e, 0x42, 0x38, 0x46, 0x78, 0x5a, 0x34, 0x76, 0x50, 0x58, 0x33, 0x59, 0x52, 0x6e, 0x58, 0x58, 0x42, 0x57, 0x62, 0x43, 0x75, 0x38, 0x77, 0x65, 0x62, 0x49, 0x34, 0x6c, 0x49, 0x55, 0x38, 0x61, 0x41, 0x6f, 0x6b, 0x52, 0x45, 0x68, 0x4a, 0x7a, 0x2b, 0x32, 0x54, 0x70, 0x5a, 0x6a, 0x76, 0x4e, 0x64, 0x42, 0x76, 0x39, 0x76, 0x42, 0x65, 0x43, 0x39, 0x50, 0x73, 0x37, 0x49, 0x49, 0x46, 0x4d, 0x41, 0x58, 0x76, 0x2f, 0x35, 0x4e, 0x5c, 0x0a, 0x09, 0x6b, 0x66, 0x7a, 0x73, 0x4f, 0x66, 0x45, 0x6b, 0x6a, 0x49, 0x33, 0x31, 0x55, 0x51, 0x78, 0x4c, 0x4f, 0x41, 0x41, 0x35, 0x61, 0x69, 0x63, 0x59, 0x73, 0x6a, 0x66, 0x65, 0x6c, 0x67, 0x43, 0x6f, 0x41, 0x50, 0x49, 0x4d, 0x4b, 0x46, 0x45, 0x41, 0x4a, 0x5a, 0x42, 0x6e, 0x48, 0x52, 0x51, 0x6f, 0x67, 0x44, 0x4c, 0x7a, 0x4a, 0x54, 0x49, 0x67, 0x4b, 0x77, 0x6b, 0x6c, 0x2f, 0x46, 0x54, 0x50, 0x46, 0x62, 0x36, 0x6a, 0x70, 0x75, 0x6b, 0x41, 0x5c, 0x0a, 0x09, 0x34, 0x45, 0x48, 0x41, 0x46, 0x59, 0x55, 0x48, 0x5a, 0x55, 0x42, 0x4e, 0x42, 0x77, 0x49, 0x35, 0x76, 0x39, 0x35, 0x51, 0x51, 0x69, 0x7a, 0x61, 0x36, 0x62, 0x57, 0x4b, 0x78, 0x6b, 0x56, 0x4a, 0x6b, 0x6c, 0x4f, 0x32, 0x65, 0x4d, 0x75, 0x52, 0x74, 0x53, 0x55, 0x57, 0x46, 0x36, 0x76, 0x7a, 0x6c, 0x33, 0x33, 0x31, 0x6d, 0x2f, 0x69, 0x65, 0x68, 0x2b, 0x2b, 0x7a, 0x32, 0x2f, 0x51, 0x4d, 0x6f, 0x48, 0x44, 0x6c, 0x43, 0x54, 0x2f, 0x2f, 0x5c, 0x0a, 0x09, 0x2b, 0x72, 0x66, 0x32, 0x75, 0x74, 0x33, 0x75, 0x6f, 0x4c, 0x6e, 0x67, 0x32, 0x74, 0x4b, 0x36, 0x72, 0x77, 0x47, 0x38, 0x2b, 0x73, 0x33, 0x76, 0x6e, 0x72, 0x35, 0x76, 0x6f, 0x62, 0x6a, 0x6f, 0x39, 0x42, 0x4e, 0x33, 0x6a, 0x79, 0x78, 0x33, 0x31, 0x54, 0x58, 0x58, 0x69, 0x66, 0x6e, 0x56, 0x74, 0x75, 0x30, 0x37, 0x6b, 0x47, 0x55, 0x5a, 0x58, 0x46, 0x68, 0x4d, 0x36, 0x6e, 0x51, 0x77, 0x4a, 0x4b, 0x41, 0x63, 0x46, 0x73, 0x6a, 0x7a, 0x5c, 0x0a, 0x09, 0x48, 0x41, 0x56, 0x38, 0x4f, 0x74, 0x4f, 0x68, 0x4c, 0x6f, 0x62, 0x44, 0x5a, 0x65, 0x52, 0x35, 0x42, 0x72, 0x6a, 0x63, 0x72, 0x78, 0x77, 0x54, 0x49, 0x61, 0x64, 0x71, 0x2f, 0x70, 0x2f, 0x4a, 0x4e, 0x59, 0x48, 0x77, 0x34, 0x6b, 0x35, 0x6b, 0x42, 0x46, 0x63, 0x43, 0x63, 0x4b, 0x55, 0x43, 0x41, 0x59, 0x5a, 0x52, 0x46, 0x56, 0x41, 0x45, 0x79, 0x6f, 0x68, 0x51, 0x4f, 0x68, 0x66, 0x39, 0x75, 0x5a, 0x36, 0x42, 0x2b, 0x68, 0x58, 0x68, 0x5c, 0x0a, 0x09, 0x73, 0x69, 0x79, 0x6b, 0x6b, 0x54, 0x45, 0x67, 0x69, 0x50, 0x65, 0x31, 0x39, 0x5a, 0x30, 0x43, 0x59, 0x76, 0x65, 0x37, 0x41, 0x5a, 0x45, 0x56, 0x57, 0x41, 0x74, 0x61, 0x2f, 0x4e, 0x7a, 0x62, 0x2f, 0x76, 0x53, 0x44, 0x65, 0x50, 0x2b, 0x48, 0x74, 0x75, 0x43, 0x42, 0x42, 0x78, 0x37, 0x45, 0x6f, 0x55, 0x4d, 0x48, 0x73, 0x54, 0x78, 0x59, 0x54, 0x75, 0x65, 0x37, 0x4d, 0x41, 0x79, 0x36, 0x75, 0x6a, 0x34, 0x32, 0x4d, 0x59, 0x62, 0x74, 0x5c, 0x0a, 0x09, 0x32, 0x33, 0x64, 0x67, 0x32, 0x39, 0x51, 0x30, 0x4a, 0x72, 0x64, 0x4f, 0x59, 0x75, 0x65, 0x32, 0x62, 0x54, 0x68, 0x75, 0x2b, 0x7a, 0x53, 0x32, 0x54, 0x57, 0x33, 0x42, 0x72, 0x6d, 0x33, 0x54, 0x2b, 0x4f, 0x49, 0x56, 0x58, 0x78, 0x61, 0x38, 0x37, 0x74, 0x69, 0x31, 0x45, 0x33, 0x6e, 0x65, 0x41, 0x64, 0x77, 0x51, 0x42, 0x47, 0x41, 0x49, 0x6f, 0x45, 0x4d, 0x64, 0x46, 0x45, 0x57, 0x42, 0x54, 0x71, 0x63, 0x54, 0x51, 0x55, 0x41, 0x37, 0x5c, 0x0a, 0x09, 0x56, 0x77, 0x6e, 0x2f, 0x6b, 0x74, 0x49, 0x63, 0x75, 0x51, 0x4b, 0x42, 0x44, 0x46, 0x6c, 0x4a, 0x4b, 0x46, 0x79, 0x42, 0x4c, 0x49, 0x4a, 0x79, 0x79, 0x55, 0x41, 0x67, 0x71, 0x38, 0x62, 0x4f, 0x4d, 0x75, 0x70, 0x71, 0x4c, 0x59, 0x66, 0x72, 0x41, 0x78, 0x41, 0x35, 0x41, 0x44, 0x77, 0x49, 0x5a, 0x48, 0x41, 0x4d, 0x6c, 0x4c, 0x6b, 0x38, 0x68, 0x42, 0x7a, 0x5a, 0x4a, 0x39, 0x65, 0x5a, 0x6c, 0x6e, 0x56, 0x6a, 0x39, 0x6c, 0x44, 0x56, 0x5c, 0x0a, 0x09, 0x65, 0x65, 0x50, 0x2f, 0x65, 0x4a, 0x65, 0x38, 0x48, 0x63, 0x6e, 0x57, 0x45, 0x56, 0x69, 0x62, 0x4f, 0x79, 0x59, 0x6d, 0x4a, 0x30, 0x37, 0x61, 0x73, 0x32, 0x76, 0x6e, 0x54, 0x64, 0x67, 0x67, 0x32, 0x6f, 0x68, 0x46, 0x77, 0x4e, 0x50, 0x65, 0x2f, 0x49, 0x37, 0x33, 0x2f, 0x69, 0x69, 0x41, 0x78, 0x41, 0x43, 0x74, 0x56, 0x7a, 0x41, 0x48, 0x6f, 0x55, 0x31, 0x4f, 0x54, 0x73, 0x62, 0x55, 0x50, 0x73, 0x59, 0x57, 0x6c, 0x32, 0x50, 0x59, 0x5c, 0x0a, 0x09, 0x41, 0x57, 0x68, 0x49, 0x30, 0x51, 0x43, 0x70, 0x4c, 0x4e, 0x48, 0x70, 0x65, 0x42, 0x44, 0x49, 0x34, 0x72, 0x62, 0x4e, 0x49, 0x63, 0x71, 0x69, 0x52, 0x45, 0x61, 0x5a, 0x57, 0x68, 0x67, 0x45, 0x73, 0x72, 0x4b, 0x73, 0x51, 0x43, 0x42, 0x44, 0x6c, 0x6a, 0x6d, 0x55, 0x4d, 0x66, 0x49, 0x51, 0x79, 0x68, 0x41, 0x31, 0x57, 0x43, 0x59, 0x67, 0x72, 0x4d, 0x2b, 0x35, 0x79, 0x75, 0x69, 0x41, 0x65, 0x68, 0x72, 0x67, 0x79, 0x7a, 0x76, 0x34, 0x5c, 0x0a, 0x09, 0x4c, 0x61, 0x63, 0x63, 0x4d, 0x50, 0x51, 0x39, 0x2f, 0x57, 0x67, 0x55, 0x4c, 0x4f, 0x6f, 0x6e, 0x35, 0x34, 0x32, 0x49, 0x4a, 0x51, 0x77, 0x70, 0x6f, 0x41, 0x38, 0x42, 0x64, 0x39, 0x78, 0x2b, 0x75, 0x2b, 0x67, 0x72, 0x72, 0x6a, 0x74, 0x51, 0x65, 0x69, 0x74, 0x52, 0x79, 0x39, 0x76, 0x42, 0x59, 0x57, 0x46, 0x75, 0x41, 0x51, 0x76, 0x7a, 0x64, 0x2b, 0x44, 0x4f, 0x4f, 0x2b, 0x35, 0x49, 0x51, 0x49, 0x50, 0x50, 0x63, 0x51, 0x45, 0x67, 0x5c, 0x0a, 0x09, 0x79, 0x33, 0x4e, 0x4d, 0x62, 0x5a, 0x6e, 0x79, 0x69, 0x33, 0x6f, 0x56, 0x4b, 0x4f, 0x63, 0x41, 0x43, 0x67, 0x4b, 0x79, 0x61, 0x6a, 0x79, 0x64, 0x6a, 0x67, 0x65, 0x44, 0x6f, 0x6d, 0x44, 0x4c, 0x4c, 0x62, 0x33, 0x58, 0x52, 0x38, 0x55, 0x41, 0x41, 0x43, 0x41, 0x41, 0x53, 0x55, 0x52, 0x42, 0x56, 0x42, 0x57, 0x56, 0x5a, 0x51, 0x45, 0x51, 0x6b, 0x47, 0x63, 0x63, 0x42, 0x41, 0x6f, 0x67, 0x49, 0x2b, 0x54, 0x49, 0x55, 0x62, 0x71, 0x79, 0x5c, 0x0a, 0x09, 0x63, 0x6d, 0x35, 0x72, 0x59, 0x52, 0x42, 0x52, 0x48, 0x33, 0x46, 0x68, 0x4d, 0x49, 0x41, 0x41, 0x67, 0x44, 0x4a, 0x4a, 0x73, 0x52, 0x67, 0x6f, 0x46, 0x30, 0x57, 0x4d, 0x36, 0x6e, 0x70, 0x38, 0x34, 0x59, 0x33, 0x47, 0x63, 0x56, 0x46, 0x57, 0x36, 0x53, 0x55, 0x43, 0x41, 0x34, 0x2f, 0x38, 0x31, 0x58, 0x63, 0x4f, 0x47, 0x6f, 0x45, 0x76, 0x6b, 0x62, 0x55, 0x45, 0x55, 0x46, 0x65, 0x73, 0x50, 0x65, 0x75, 0x53, 0x70, 0x2b, 0x38, 0x34, 0x5c, 0x0a, 0x09, 0x64, 0x50, 0x44, 0x67, 0x70, 0x67, 0x4b, 0x41, 0x5a, 0x4b, 0x37, 0x4c, 0x35, 0x38, 0x63, 0x61, 0x5a, 0x59, 0x4d, 0x52, 0x39, 0x2f, 0x70, 0x2b, 0x37, 0x2f, 0x5a, 0x77, 0x47, 0x63, 0x68, 0x7a, 0x78, 0x78, 0x76, 0x43, 0x30, 0x41, 0x31, 0x42, 0x63, 0x41, 0x67, 0x33, 0x6d, 0x68, 0x77, 0x48, 0x67, 0x51, 0x79, 0x41, 0x38, 0x31, 0x66, 0x4b, 0x73, 0x76, 0x52, 0x52, 0x50, 0x30, 0x77, 0x48, 0x4b, 0x49, 0x43, 0x41, 0x58, 0x34, 0x6b, 0x4f, 0x5c, 0x0a, 0x09, 0x36, 0x77, 0x5a, 0x6c, 0x34, 0x65, 0x38, 0x47, 0x79, 0x4c, 0x73, 0x44, 0x6a, 0x47, 0x63, 0x69, 0x63, 0x59, 0x73, 0x77, 0x49, 0x30, 0x4c, 0x68, 0x77, 0x68, 0x52, 0x41, 0x52, 0x64, 0x65, 0x73, 0x76, 0x71, 0x32, 0x6c, 0x6c, 0x53, 0x39, 0x53, 0x66, 0x42, 0x37, 0x52, 0x53, 0x52, 0x70, 0x61, 0x6c, 0x4a, 0x4f, 0x36, 0x68, 0x38, 0x33, 0x4c, 0x57, 0x74, 0x48, 0x4c, 0x4d, 0x6b, 0x35, 0x42, 0x4a, 0x45, 0x45, 0x70, 0x76, 0x74, 0x4b, 0x62, 0x5c, 0x0a, 0x09, 0x38, 0x78, 0x6d, 0x6d, 0x75, 0x48, 0x48, 0x73, 0x2f, 0x6c, 0x79, 0x2f, 0x33, 0x30, 0x65, 0x6e, 0x32, 0x77, 0x48, 0x59, 0x62, 0x31, 0x73, 0x34, 0x35, 0x30, 0x41, 0x75, 0x78, 0x37, 0x42, 0x44, 0x6f, 0x4b, 0x4c, 0x77, 0x30, 0x7a, 0x46, 0x32, 0x2b, 0x79, 0x38, 0x36, 0x54, 0x74, 0x56, 0x57, 0x50, 0x52, 0x30, 0x49, 0x49, 0x4a, 0x42, 0x44, 0x54, 0x67, 0x63, 0x51, 0x49, 0x33, 0x78, 0x39, 0x74, 0x30, 0x62, 0x65, 0x46, 0x59, 0x68, 0x4f, 0x5c, 0x0a, 0x09, 0x47, 0x71, 0x5a, 0x6f, 0x52, 0x4d, 0x69, 0x63, 0x42, 0x77, 0x47, 0x65, 0x6b, 0x51, 0x58, 0x5a, 0x42, 0x50, 0x32, 0x4b, 0x73, 0x55, 0x62, 0x32, 0x35, 0x49, 0x71, 0x2b, 0x30, 0x42, 0x55, 0x6b, 0x43, 0x44, 0x54, 0x75, 0x44, 0x53, 0x42, 0x6d, 0x76, 0x38, 0x61, 0x59, 0x49, 0x36, 0x42, 0x58, 0x31, 0x2f, 0x65, 0x65, 0x73, 0x48, 0x76, 0x48, 0x4a, 0x52, 0x65, 0x63, 0x47, 0x31, 0x38, 0x4d, 0x6b, 0x70, 0x33, 0x31, 0x35, 0x46, 0x52, 0x50, 0x5c, 0x0a, 0x09, 0x61, 0x30, 0x6a, 0x72, 0x41, 0x67, 0x42, 0x68, 0x39, 0x39, 0x39, 0x72, 0x66, 0x76, 0x59, 0x2f, 0x34, 0x33, 0x66, 0x65, 0x39, 0x7a, 0x38, 0x54, 0x77, 0x51, 0x72, 0x44, 0x56, 0x59, 0x49, 0x50, 0x52, 0x74, 0x37, 0x74, 0x64, 0x4e, 0x51, 0x74, 0x61, 0x70, 0x38, 0x4a, 0x4f, 0x44, 0x66, 0x30, 0x36, 0x53, 0x5a, 0x71, 0x4a, 0x52, 0x56, 0x67, 0x6d, 0x55, 0x41, 0x78, 0x46, 0x43, 0x75, 0x64, 0x4a, 0x53, 0x6f, 0x51, 0x71, 0x47, 0x61, 0x4d, 0x5c, 0x0a, 0x09, 0x57, 0x52, 0x61, 0x6d, 0x41, 0x31, 0x52, 0x6e, 0x41, 0x6a, 0x6d, 0x78, 0x39, 0x4a, 0x4e, 0x51, 0x6c, 0x68, 0x6e, 0x43, 0x42, 0x71, 0x49, 0x34, 0x48, 0x65, 0x43, 0x33, 0x43, 0x4a, 0x30, 0x54, 0x74, 0x77, 0x6a, 0x35, 0x32, 0x47, 0x49, 0x66, 0x70, 0x52, 0x46, 0x35, 0x41, 0x68, 0x42, 0x53, 0x62, 0x55, 0x42, 0x38, 0x63, 0x55, 0x2b, 0x73, 0x66, 0x49, 0x50, 0x45, 0x4f, 0x2f, 0x64, 0x35, 0x2b, 0x37, 0x45, 0x39, 0x39, 0x73, 0x6c, 0x54, 0x5c, 0x0a, 0x09, 0x7a, 0x76, 0x35, 0x59, 0x48, 0x35, 0x4e, 0x62, 0x37, 0x48, 0x64, 0x50, 0x50, 0x48, 0x44, 0x2f, 0x2f, 0x61, 0x4c, 0x2f, 0x71, 0x6d, 0x47, 0x70, 0x43, 0x77, 0x64, 0x70, 0x30, 0x4f, 0x51, 0x42, 0x4f, 0x65, 0x2f, 0x6b, 0x6f, 0x69, 0x30, 0x69, 0x2f, 0x36, 0x4d, 0x58, 0x6e, 0x53, 0x7a, 0x48, 0x45, 0x41, 0x36, 0x35, 0x79, 0x31, 0x45, 0x55, 0x66, 0x6f, 0x72, 0x6d, 0x62, 0x2f, 0x4d, 0x42, 0x79, 0x4a, 0x7a, 0x58, 0x67, 0x66, 0x4d, 0x72, 0x5c, 0x0a, 0x09, 0x2f, 0x6f, 0x55, 0x41, 0x67, 0x53, 0x48, 0x4c, 0x42, 0x44, 0x4b, 0x66, 0x6e, 0x59, 0x48, 0x67, 0x73, 0x68, 0x78, 0x55, 0x46, 0x69, 0x4e, 0x76, 0x45, 0x54, 0x72, 0x6e, 0x36, 0x69, 0x6b, 0x61, 0x6b, 0x56, 0x2b, 0x6a, 0x59, 0x51, 0x59, 0x54, 0x73, 0x6a, 0x4d, 0x48, 0x76, 0x37, 0x45, 0x6f, 0x2f, 0x68, 0x41, 0x4e, 0x56, 0x49, 0x51, 0x32, 0x35, 0x4b, 0x74, 0x76, 0x52, 0x59, 0x37, 0x61, 0x72, 0x78, 0x48, 0x4b, 0x62, 0x35, 0x32, 0x61, 0x5c, 0x0a, 0x09, 0x51, 0x71, 0x39, 0x36, 0x65, 0x47, 0x77, 0x55, 0x58, 0x58, 0x44, 0x57, 0x36, 0x54, 0x39, 0x2b, 0x31, 0x69, 0x6d, 0x37, 0x75, 0x67, 0x41, 0x2b, 0x42, 0x65, 0x66, 0x6d, 0x67, 0x36, 0x2b, 0x73, 0x31, 0x2b, 0x61, 0x67, 0x4e, 0x64, 0x38, 0x49, 0x46, 0x4c, 0x66, 0x2b, 0x2b, 0x75, 0x7a, 0x73, 0x50, 0x33, 0x33, 0x39, 0x6c, 0x6e, 0x74, 0x66, 0x2b, 0x6f, 0x34, 0x50, 0x2f, 0x73, 0x4e, 0x7a, 0x51, 0x4a, 0x54, 0x78, 0x4c, 0x5a, 0x37, 0x31, 0x5c, 0x0a, 0x09, 0x73, 0x55, 0x2f, 0x76, 0x50, 0x76, 0x32, 0x76, 0x6e, 0x34, 0x6d, 0x37, 0x37, 0x77, 0x44, 0x67, 0x34, 0x71, 0x63, 0x2f, 0x45, 0x79, 0x42, 0x43, 0x4d, 0x53, 0x78, 0x51, 0x6c, 0x50, 0x34, 0x64, 0x38, 0x30, 0x55, 0x78, 0x39, 0x43, 0x6e, 0x6d, 0x63, 0x42, 0x6c, 0x46, 0x36, 0x66, 0x78, 0x69, 0x59, 0x46, 0x47, 0x69, 0x4b, 0x41, 0x75, 0x55, 0x52, 0x59, 0x48, 0x53, 0x2b, 0x51, 0x30, 0x2f, 0x77, 0x2b, 0x6f, 0x70, 0x77, 0x4c, 0x4a, 0x30, 0x5c, 0x0a, 0x09, 0x4b, 0x41, 0x73, 0x2f, 0x48, 0x58, 0x44, 0x4f, 0x4e, 0x57, 0x77, 0x57, 0x38, 0x6d, 0x35, 0x63, 0x4f, 0x6c, 0x64, 0x46, 0x48, 0x74, 0x38, 0x2f, 0x33, 0x79, 0x63, 0x51, 0x65, 0x41, 0x59, 0x51, 0x6f, 0x30, 0x35, 0x41, 0x70, 0x7a, 0x54, 0x39, 0x5a, 0x4c, 0x49, 0x6f, 0x43, 0x7a, 0x4f, 0x39, 0x4e, 0x39, 0x50, 0x7a, 0x6b, 0x42, 0x6e, 0x6f, 0x6a, 0x45, 0x4a, 0x46, 0x46, 0x31, 0x35, 0x33, 0x2f, 0x2f, 0x34, 0x44, 0x65, 0x4e, 0x4f, 0x6c, 0x5c, 0x0a, 0x09, 0x4c, 0x38, 0x48, 0x55, 0x65, 0x42, 0x38, 0x54, 0x76, 0x51, 0x36, 0x32, 0x6a, 0x50, 0x66, 0x38, 0x63, 0x77, 0x4f, 0x69, 0x59, 0x52, 0x58, 0x68, 0x71, 0x71, 0x59, 0x4f, 0x4c, 0x77, 0x78, 0x77, 0x5a, 0x47, 0x45, 0x4a, 0x63, 0x30, 0x76, 0x4c, 0x6d, 0x46, 0x31, 0x63, 0x78, 0x74, 0x7a, 0x69, 0x49, 0x75, 0x35, 0x35, 0x38, 0x44, 0x41, 0x4f, 0x48, 0x70, 0x37, 0x46, 0x66, 0x51, 0x63, 0x50, 0x34, 0x37, 0x61, 0x37, 0x37, 0x38, 0x56, 0x6c, 0x5c, 0x0a, 0x09, 0x6c, 0x33, 0x30, 0x79, 0x38, 0x6a, 0x43, 0x35, 0x64, 0x51, 0x73, 0x65, 0x2f, 0x38, 0x51, 0x6e, 0x59, 0x31, 0x67, 0x73, 0x6f, 0x79, 0x78, 0x4b, 0x4c, 0x43, 0x38, 0x76, 0x56, 0x2b, 0x6c, 0x2b, 0x67, 0x58, 0x49, 0x34, 0x52, 0x4f, 0x6b, 0x63, 0x68, 0x6d, 0x55, 0x42, 0x4e, 0x79, 0x77, 0x78, 0x4c, 0x50, 0x78, 0x54, 0x65, 0x76, 0x47, 0x36, 0x4b, 0x2f, 0x33, 0x2b, 0x67, 0x4b, 0x48, 0x66, 0x78, 0x31, 0x47, 0x36, 0x61, 0x6d, 0x39, 0x41, 0x5c, 0x0a, 0x09, 0x61, 0x65, 0x38, 0x54, 0x4b, 0x45, 0x72, 0x2f, 0x53, 0x31, 0x42, 0x38, 0x45, 0x62, 0x5a, 0x70, 0x73, 0x78, 0x43, 0x41, 0x4f, 0x6a, 0x75, 0x4c, 0x61, 0x77, 0x4b, 0x57, 0x54, 0x70, 0x77, 0x41, 0x41, 0x53, 0x45, 0x50, 0x61, 0x2b, 0x46, 0x50, 0x5a, 0x51, 0x66, 0x4a, 0x47, 0x67, 0x77, 0x72, 0x51, 0x30, 0x52, 0x34, 0x33, 0x35, 0x74, 0x2f, 0x45, 0x30, 0x39, 0x2b, 0x35, 0x44, 0x34, 0x35, 0x5a, 0x57, 0x78, 0x61, 0x61, 0x50, 0x51, 0x44, 0x5c, 0x0a, 0x09, 0x75, 0x41, 0x64, 0x45, 0x66, 0x77, 0x62, 0x6e, 0x33, 0x67, 0x62, 0x67, 0x62, 0x6d, 0x42, 0x39, 0x51, 0x47, 0x42, 0x4e, 0x4d, 0x77, 0x44, 0x32, 0x76, 0x72, 0x4f, 0x4c, 0x51, 0x66, 0x51, 0x4f, 0x41, 0x47, 0x65, 0x65, 0x75, 0x32, 0x38, 0x33, 0x2f, 0x75, 0x6a, 0x58, 0x58, 0x69, 0x4b, 0x46, 0x59, 0x74, 0x77, 0x4b, 0x66, 0x4d, 0x71, 0x4e, 0x33, 0x38, 0x48, 0x74, 0x74, 0x39, 0x31, 0x57, 0x74, 0x31, 0x57, 0x57, 0x36, 0x49, 0x2b, 0x4e, 0x5c, 0x0a, 0x09, 0x41, 0x53, 0x42, 0x51, 0x45, 0x59, 0x54, 0x61, 0x38, 0x55, 0x61, 0x53, 0x64, 0x77, 0x41, 0x4d, 0x67, 0x55, 0x34, 0x48, 0x42, 0x52, 0x58, 0x41, 0x73, 0x46, 0x4c, 0x51, 0x73, 0x41, 0x41, 0x79, 0x6f, 0x4a, 0x4e, 0x33, 0x4d, 0x43, 0x79, 0x47, 0x79, 0x48, 0x4f, 0x71, 0x68, 0x6a, 0x79, 0x73, 0x70, 0x77, 0x4f, 0x77, 0x46, 0x67, 0x5a, 0x4c, 0x66, 0x33, 0x63, 0x67, 0x70, 0x70, 0x2b, 0x4f, 0x5a, 0x51, 0x4a, 0x68, 0x73, 0x78, 0x44, 0x56, 0x5c, 0x0a, 0x09, 0x55, 0x53, 0x63, 0x59, 0x5a, 0x6b, 0x77, 0x2f, 0x41, 0x5a, 0x46, 0x62, 0x56, 0x6c, 0x59, 0x54, 0x6f, 0x70, 0x63, 0x76, 0x57, 0x68, 0x75, 0x51, 0x54, 0x74, 0x31, 0x44, 0x39, 0x61, 0x5a, 0x64, 0x68, 0x45, 0x30, 0x72, 0x31, 0x69, 0x65, 0x63, 0x73, 0x42, 0x76, 0x6e, 0x6e, 0x38, 0x36, 0x65, 0x73, 0x62, 0x4c, 0x41, 0x6e, 0x61, 0x72, 0x2f, 0x43, 0x45, 0x4c, 0x75, 0x55, 0x78, 0x4e, 0x39, 0x54, 0x45, 0x33, 0x30, 0x55, 0x44, 0x74, 0x4b, 0x5c, 0x0a, 0x09, 0x35, 0x51, 0x6c, 0x56, 0x6d, 0x56, 0x76, 0x75, 0x4f, 0x34, 0x78, 0x50, 0x58, 0x48, 0x5a, 0x35, 0x35, 0x48, 0x6c, 0x35, 0x73, 0x49, 0x78, 0x4f, 0x78, 0x39, 0x39, 0x36, 0x58, 0x63, 0x59, 0x41, 0x48, 0x56, 0x65, 0x62, 0x6b, 0x6c, 0x39, 0x32, 0x4b, 0x5a, 0x44, 0x44, 0x6f, 0x63, 0x7a, 0x39, 0x77, 0x75, 0x42, 0x77, 0x4f, 0x50, 0x53, 0x4c, 0x75, 0x4d, 0x36, 0x42, 0x48, 0x50, 0x6b, 0x73, 0x4c, 0x66, 0x65, 0x72, 0x39, 0x79, 0x69, 0x42, 0x5c, 0x0a, 0x09, 0x67, 0x67, 0x6f, 0x51, 0x73, 0x55, 0x7a, 0x41, 0x5a, 0x55, 0x41, 0x5a, 0x31, 0x67, 0x54, 0x38, 0x59, 0x6d, 0x32, 0x5a, 0x35, 0x30, 0x77, 0x66, 0x4f, 0x68, 0x4e, 0x67, 0x4a, 0x68, 0x57, 0x6d, 0x41, 0x32, 0x4b, 0x4e, 0x68, 0x75, 0x76, 0x45, 0x70, 0x7a, 0x47, 0x55, 0x65, 0x62, 0x73, 0x53, 0x74, 0x77, 0x52, 0x44, 0x39, 0x6f, 0x4d, 0x55, 0x6d, 0x50, 0x6e, 0x55, 0x7a, 0x46, 0x70, 0x41, 0x35, 0x47, 0x56, 0x4f, 0x4f, 0x2f, 0x36, 0x34, 0x5c, 0x0a, 0x09, 0x32, 0x71, 0x62, 0x6a, 0x32, 0x6f, 0x35, 0x4c, 0x51, 0x53, 0x43, 0x63, 0x49, 0x39, 0x6f, 0x44, 0x34, 0x46, 0x64, 0x42, 0x65, 0x44, 0x45, 0x63, 0x6e, 0x67, 0x7a, 0x67, 0x75, 0x6c, 0x52, 0x35, 0x71, 0x30, 0x39, 0x72, 0x74, 0x67, 0x2b, 0x67, 0x76, 0x4f, 0x36, 0x54, 0x71, 0x4b, 0x7a, 0x34, 0x46, 0x30, 0x48, 0x30, 0x4c, 0x77, 0x44, 0x4f, 0x39, 0x46, 0x63, 0x43, 0x68, 0x44, 0x5a, 0x55, 0x72, 0x41, 0x52, 0x79, 0x36, 0x73, 0x6b, 0x6e, 0x5c, 0x0a, 0x09, 0x56, 0x61, 0x58, 0x39, 0x47, 0x73, 0x44, 0x69, 0x34, 0x69, 0x4c, 0x79, 0x50, 0x45, 0x65, 0x33, 0x30, 0x30, 0x48, 0x57, 0x79, 0x64, 0x48, 0x70, 0x64, 0x50, 0x31, 0x47, 0x6b, 0x37, 0x7a, 0x6a, 0x74, 0x77, 0x50, 0x6e, 0x48, 0x57, 0x52, 0x55, 0x33, 0x58, 0x2f, 0x75, 0x31, 0x50, 0x73, 0x41, 0x77, 0x6a, 0x33, 0x70, 0x54, 0x71, 0x63, 0x4c, 0x45, 0x4d, 0x58, 0x4e, 0x51, 0x6d, 0x48, 0x2f, 0x51, 0x45, 0x35, 0x36, 0x73, 0x31, 0x43, 0x31, 0x5c, 0x0a, 0x09, 0x75, 0x53, 0x51, 0x61, 0x55, 0x39, 0x67, 0x50, 0x51, 0x47, 0x79, 0x66, 0x51, 0x48, 0x55, 0x74, 0x4c, 0x41, 0x37, 0x6c, 0x75, 0x56, 0x42, 0x32, 0x32, 0x43, 0x55, 0x51, 0x7a, 0x49, 0x67, 0x62, 0x58, 0x74, 0x79, 0x32, 0x7a, 0x49, 0x79, 0x4d, 0x52, 0x78, 0x43, 0x52, 0x68, 0x6a, 0x73, 0x6e, 0x72, 0x6f, 0x66, 0x79, 0x4f, 0x76, 0x30, 0x4d, 0x49, 0x4c, 0x4a, 0x6a, 0x32, 0x33, 0x51, 0x38, 0x59, 0x7a, 0x71, 0x2f, 0x71, 0x68, 0x64, 0x42, 0x5c, 0x0a, 0x09, 0x49, 0x46, 0x34, 0x4c, 0x58, 0x73, 0x51, 0x69, 0x5a, 0x6a, 0x57, 0x75, 0x48, 0x5a, 0x4e, 0x6a, 0x6b, 0x52, 0x63, 0x43, 0x59, 0x62, 0x43, 0x30, 0x35, 0x4b, 0x63, 0x2b, 0x65, 0x59, 0x35, 0x4f, 0x70, 0x31, 0x64, 0x39, 0x64, 0x76, 0x7a, 0x57, 0x33, 0x38, 0x78, 0x76, 0x2f, 0x38, 0x30, 0x6f, 0x38, 0x7a, 0x72, 0x49, 0x73, 0x2b, 0x70, 0x38, 0x56, 0x6d, 0x33, 0x64, 0x39, 0x76, 0x73, 0x7a, 0x38, 0x6a, 0x78, 0x48, 0x33, 0x76, 0x48, 0x6e, 0x5c, 0x0a, 0x09, 0x63, 0x37, 0x5a, 0x5a, 0x4b, 0x4d, 0x38, 0x36, 0x6c, 0x55, 0x35, 0x79, 0x68, 0x41, 0x31, 0x43, 0x47, 0x63, 0x68, 0x76, 0x49, 0x38, 0x68, 0x71, 0x77, 0x37, 0x48, 0x32, 0x43, 0x55, 0x52, 0x4a, 0x4d, 0x35, 0x33, 0x55, 0x6d, 0x37, 0x63, 0x49, 0x33, 0x50, 0x41, 0x63, 0x6b, 0x4f, 0x67, 0x6a, 0x5a, 0x41, 0x4d, 0x61, 0x6a, 0x44, 0x55, 0x51, 0x38, 0x30, 0x2f, 0x41, 0x36, 0x79, 0x72, 0x63, 0x31, 0x64, 0x6d, 0x39, 0x65, 0x77, 0x2f, 0x32, 0x5c, 0x0a, 0x09, 0x37, 0x70, 0x79, 0x71, 0x5a, 0x53, 0x73, 0x79, 0x41, 0x4f, 0x4d, 0x63, 0x31, 0x34, 0x48, 0x44, 0x4c, 0x68, 0x44, 0x39, 0x41, 0x62, 0x41, 0x2b, 0x4c, 0x77, 0x78, 0x64, 0x45, 0x77, 0x41, 0x6f, 0x72, 0x2f, 0x31, 0x6b, 0x47, 0x4f, 0x64, 0x7a, 0x41, 0x4c, 0x77, 0x64, 0x67, 0x46, 0x2b, 0x36, 0x64, 0x62, 0x55, 0x6a, 0x2b, 0x41, 0x2f, 0x31, 0x79, 0x53, 0x34, 0x64, 0x4f, 0x4f, 0x30, 0x55, 0x41, 0x50, 0x56, 0x43, 0x31, 0x70, 0x48, 0x5a, 0x5c, 0x0a, 0x09, 0x49, 0x33, 0x36, 0x6a, 0x53, 0x54, 0x64, 0x48, 0x4a, 0x38, 0x2b, 0x52, 0x42, 0x65, 0x66, 0x76, 0x64, 0x69, 0x6f, 0x51, 0x79, 0x4a, 0x46, 0x33, 0x4f, 0x76, 0x35, 0x61, 0x74, 0x55, 0x73, 0x77, 0x62, 0x45, 0x7a, 0x78, 0x42, 0x75, 0x64, 0x33, 0x6f, 0x51, 0x48, 0x77, 0x52, 0x70, 0x64, 0x33, 0x34, 0x6c, 0x32, 0x43, 0x75, 0x42, 0x4f, 0x4e, 0x36, 0x73, 0x31, 0x43, 0x65, 0x64, 0x79, 0x51, 0x51, 0x73, 0x6b, 0x4f, 0x4e, 0x54, 0x45, 0x33, 0x5c, 0x0a, 0x09, 0x44, 0x38, 0x61, 0x6e, 0x6c, 0x72, 0x6c, 0x7a, 0x37, 0x73, 0x77, 0x36, 0x6b, 0x6d, 0x54, 0x31, 0x74, 0x62, 0x67, 0x7a, 0x45, 0x48, 0x55, 0x61, 0x47, 0x39, 0x32, 0x4d, 0x7a, 0x55, 0x31, 0x35, 0x2b, 0x57, 0x43, 0x51, 0x76, 0x44, 0x77, 0x41, 0x37, 0x44, 0x73, 0x35, 0x52, 0x48, 0x2b, 0x2b, 0x59, 0x4b, 0x63, 0x7a, 0x45, 0x5a, 0x4c, 0x66, 0x31, 0x56, 0x30, 0x4e, 0x55, 0x54, 0x2b, 0x43, 0x41, 0x62, 0x42, 0x31, 0x76, 0x49, 0x76, 0x39, 0x5c, 0x0a, 0x09, 0x42, 0x77, 0x35, 0x45, 0x6e, 0x54, 0x6a, 0x6e, 0x73, 0x4c, 0x43, 0x34, 0x69, 0x45, 0x34, 0x6c, 0x38, 0x32, 0x36, 0x33, 0x68, 0x37, 0x78, 0x54, 0x67, 0x34, 0x42, 0x33, 0x37, 0x67, 0x35, 0x79, 0x71, 0x6e, 0x59, 0x44, 0x52, 0x6e, 0x44, 0x49, 0x32, 0x41, 0x61, 0x75, 0x43, 0x71, 0x41, 0x5a, 0x43, 0x46, 0x41, 0x45, 0x67, 0x64, 0x72, 0x35, 0x69, 0x51, 0x69, 0x55, 0x5a, 0x38, 0x67, 0x6f, 0x72, 0x39, 0x5a, 0x6f, 0x36, 0x73, 0x31, 0x57, 0x5c, 0x0a, 0x09, 0x4e, 0x51, 0x6a, 0x34, 0x7a, 0x34, 0x7a, 0x72, 0x68, 0x75, 0x6b, 0x6b, 0x49, 0x36, 0x36, 0x66, 0x61, 0x6a, 0x32, 0x6e, 0x4f, 0x67, 0x34, 0x50, 0x47, 0x46, 0x6e, 0x62, 0x74, 0x6d, 0x50, 0x47, 0x35, 0x61, 0x54, 0x73, 0x59, 0x37, 0x70, 0x66, 0x42, 0x61, 0x68, 0x51, 0x68, 0x6f, 0x68, 0x77, 0x33, 0x6a, 0x6d, 0x50, 0x4e, 0x4b, 0x4b, 0x39, 0x5a, 0x66, 0x73, 0x61, 0x42, 0x43, 0x6a, 0x55, 0x75, 0x52, 0x68, 0x45, 0x50, 0x77, 0x69, 0x73, 0x5c, 0x0a, 0x09, 0x50, 0x51, 0x69, 0x73, 0x35, 0x55, 0x37, 0x41, 0x63, 0x54, 0x69, 0x38, 0x79, 0x78, 0x39, 0x57, 0x45, 0x5a, 0x38, 0x50, 0x57, 0x71, 0x53, 0x61, 0x53, 0x4d, 0x36, 0x66, 0x66, 0x75, 0x49, 0x4a, 0x56, 0x54, 0x58, 0x2f, 0x37, 0x35, 0x34, 0x37, 0x37, 0x76, 0x54, 0x4f, 0x54, 0x6a, 0x34, 0x4c, 0x36, 0x48, 0x61, 0x37, 0x79, 0x44, 0x76, 0x42, 0x79, 0x54, 0x50, 0x6b, 0x65, 0x62, 0x66, 0x4b, 0x42, 0x44, 0x78, 0x41, 0x64, 0x44, 0x6f, 0x64, 0x5c, 0x0a, 0x09, 0x55, 0x4d, 0x63, 0x62, 0x56, 0x56, 0x35, 0x46, 0x48, 0x63, 0x6f, 0x38, 0x61, 0x41, 0x42, 0x2b, 0x52, 0x64, 0x6c, 0x48, 0x71, 0x73, 0x6f, 0x49, 0x77, 0x34, 0x37, 0x42, 0x4c, 0x49, 0x43, 0x41, 0x6a, 0x7a, 0x70, 0x41, 0x5a, 0x56, 0x79, 0x5a, 0x4e, 0x4c, 0x71, 0x6a, 0x41, 0x59, 0x45, 0x73, 0x70, 0x76, 0x44, 0x47, 0x6b, 0x6c, 0x47, 0x6d, 0x56, 0x70, 0x79, 0x72, 0x6f, 0x54, 0x76, 0x32, 0x54, 0x34, 0x67, 0x6c, 0x74, 0x46, 0x4c, 0x35, 0x5c, 0x0a, 0x09, 0x63, 0x45, 0x68, 0x62, 0x4f, 0x55, 0x44, 0x73, 0x50, 0x2b, 0x6c, 0x34, 0x33, 0x67, 0x57, 0x59, 0x51, 0x53, 0x6c, 0x79, 0x30, 0x75, 0x6d, 0x4a, 0x41, 0x55, 0x4d, 0x77, 0x52, 0x6d, 0x33, 0x41, 0x52, 0x48, 0x6a, 0x34, 0x77, 0x30, 0x36, 0x76, 0x4d, 0x78, 0x55, 0x69, 0x48, 0x48, 0x7a, 0x77, 0x51, 0x58, 0x51, 0x37, 0x6e, 0x65, 0x6a, 0x30, 0x58, 0x5a, 0x55, 0x4a, 0x35, 0x48, 0x6d, 0x4f, 0x76, 0x4e, 0x76, 0x78, 0x4f, 0x73, 0x68, 0x71, 0x5c, 0x0a, 0x09, 0x52, 0x38, 0x2b, 0x79, 0x76, 0x4d, 0x34, 0x45, 0x34, 0x72, 0x62, 0x75, 0x72, 0x4e, 0x37, 0x4b, 0x6e, 0x58, 0x4d, 0x51, 0x51, 0x41, 0x55, 0x55, 0x55, 0x4e, 0x75, 0x47, 0x4b, 0x62, 0x4b, 0x6e, 0x51, 0x55, 0x43, 0x77, 0x4c, 0x55, 0x43, 0x67, 0x42, 0x6d, 0x54, 0x48, 0x50, 0x6c, 0x30, 0x41, 0x41, 0x53, 0x55, 0x72, 0x6e, 0x64, 0x72, 0x7a, 0x7a, 0x36, 0x41, 0x37, 0x73, 0x5a, 0x5a, 0x54, 0x58, 0x58, 0x76, 0x73, 0x32, 0x51, 0x2b, 0x76, 0x5c, 0x0a, 0x09, 0x5a, 0x53, 0x73, 0x59, 0x43, 0x6e, 0x4b, 0x76, 0x50, 0x76, 0x6e, 0x55, 0x68, 0x4d, 0x76, 0x64, 0x30, 0x35, 0x38, 0x43, 0x57, 0x50, 0x4f, 0x33, 0x42, 0x71, 0x38, 0x64, 0x41, 0x42, 0x43, 0x39, 0x43, 0x45, 0x53, 0x56, 0x52, 0x66, 0x4c, 0x49, 0x77, 0x79, 0x30, 0x65, 0x36, 0x6e, 0x78, 0x4e, 0x46, 0x35, 0x31, 0x39, 0x75, 0x6a, 0x68, 0x31, 0x37, 0x7a, 0x31, 0x33, 0x59, 0x62, 0x67, 0x38, 0x52, 0x4c, 0x66, 0x58, 0x52, 0x5a, 0x62, 0x6c, 0x5c, 0x0a, 0x09, 0x79, 0x4c, 0x50, 0x4d, 0x67, 0x30, 0x43, 0x33, 0x34, 0x36, 0x63, 0x44, 0x48, 0x5a, 0x39, 0x36, 0x78, 0x71, 0x66, 0x50, 0x73, 0x67, 0x79, 0x64, 0x33, 0x45, 0x38, 0x58, 0x59, 0x72, 0x70, 0x5a, 0x58, 0x51, 0x2f, 0x62, 0x68, 0x6e, 0x6b, 0x6d, 0x51, 0x45, 0x54, 0x79, 0x32, 0x59, 0x47, 0x73, 0x33, 0x6e, 0x49, 0x4d, 0x49, 0x4b, 0x61, 0x66, 0x52, 0x35, 0x30, 0x4a, 0x56, 0x4e, 0x2f, 0x7a, 0x4d, 0x4e, 0x38, 0x55, 0x71, 0x61, 0x64, 0x48, 0x5c, 0x0a, 0x09, 0x2b, 0x79, 0x79, 0x58, 0x4b, 0x53, 0x78, 0x69, 0x53, 0x57, 0x5a, 0x6b, 0x6f, 0x6b, 0x35, 0x64, 0x52, 0x70, 0x44, 0x7a, 0x2f, 0x58, 0x37, 0x50, 0x67, 0x5a, 0x50, 0x72, 0x45, 0x34, 0x6d, 0x63, 0x5a, 0x58, 0x6e, 0x47, 0x65, 0x47, 0x71, 0x6f, 0x70, 0x44, 0x49, 0x44, 0x7a, 0x77, 0x77, 0x65, 0x66, 0x65, 0x5a, 0x2b, 0x77, 0x63, 0x75, 0x64, 0x64, 0x39, 0x36, 0x4f, 0x72, 0x41, 0x4c, 0x6a, 0x43, 0x41, 0x49, 0x68, 0x45, 0x2b, 0x68, 0x32, 0x5c, 0x0a, 0x09, 0x34, 0x70, 0x4f, 0x61, 0x49, 0x52, 0x76, 0x4c, 0x71, 0x71, 0x32, 0x2b, 0x6e, 0x64, 0x78, 0x48, 0x38, 0x67, 0x41, 0x53, 0x47, 0x57, 0x55, 0x4d, 0x6f, 0x48, 0x4d, 0x66, 0x36, 0x53, 0x73, 0x51, 0x36, 0x47, 0x53, 0x64, 0x57, 0x68, 0x38, 0x4b, 0x42, 0x4a, 0x44, 0x56, 0x64, 0x79, 0x45, 0x79, 0x49, 0x58, 0x65, 0x53, 0x4d, 0x6d, 0x56, 0x62, 0x75, 0x59, 0x50, 0x42, 0x38, 0x7a, 0x51, 0x2b, 0x57, 0x6d, 0x43, 0x59, 0x58, 0x6a, 0x69, 0x59, 0x5c, 0x0a, 0x09, 0x4f, 0x75, 0x44, 0x54, 0x4d, 0x73, 0x75, 0x63, 0x51, 0x7a, 0x62, 0x33, 0x31, 0x50, 0x50, 0x50, 0x72, 0x47, 0x57, 0x70, 0x4d, 0x39, 0x38, 0x41, 0x74, 0x6b, 0x48, 0x47, 0x73, 0x52, 0x45, 0x6d, 0x66, 0x77, 0x38, 0x51, 0x4f, 0x77, 0x47, 0x38, 0x45, 0x47, 0x74, 0x4d, 0x71, 0x77, 0x34, 0x41, 0x62, 0x4e, 0x58, 0x2f, 0x2b, 0x66, 0x47, 0x6b, 0x4d, 0x69, 0x53, 0x5a, 0x59, 0x33, 0x46, 0x72, 0x72, 0x46, 0x50, 0x4f, 0x66, 0x62, 0x75, 0x6d, 0x5c, 0x0a, 0x09, 0x63, 0x63, 0x34, 0x35, 0x35, 0x38, 0x52, 0x30, 0x6b, 0x30, 0x43, 0x34, 0x39, 0x5a, 0x61, 0x62, 0x30, 0x59, 0x6e, 0x47, 0x31, 0x66, 0x56, 0x70, 0x66, 0x54, 0x55, 0x64, 0x36, 0x46, 0x54, 0x54, 0x67, 0x45, 0x36, 0x6e, 0x4d, 0x73, 0x5a, 0x4f, 0x78, 0x30, 0x65, 0x64, 0x4c, 0x41, 0x4e, 0x31, 0x73, 0x67, 0x6f, 0x63, 0x73, 0x72, 0x68, 0x4f, 0x49, 0x44, 0x4b, 0x42, 0x76, 0x49, 0x4d, 0x38, 0x7a, 0x30, 0x54, 0x71, 0x58, 0x32, 0x63, 0x43, 0x5c, 0x0a, 0x09, 0x46, 0x43, 0x4e, 0x48, 0x76, 0x56, 0x63, 0x64, 0x73, 0x57, 0x37, 0x59, 0x74, 0x77, 0x37, 0x55, 0x69, 0x33, 0x4f, 0x55, 0x79, 0x39, 0x74, 0x6a, 0x50, 0x42, 0x50, 0x67, 0x35, 0x4f, 0x65, 0x67, 0x57, 0x52, 0x31, 0x70, 0x39, 0x42, 0x53, 0x64, 0x71, 0x49, 0x37, 0x32, 0x4d, 0x42, 0x79, 0x66, 0x6c, 0x66, 0x75, 0x65, 0x78, 0x7a, 0x34, 0x47, 0x75, 0x36, 0x62, 0x44, 0x6a, 0x38, 0x30, 0x77, 0x77, 0x30, 0x72, 0x53, 0x65, 0x30, 0x6a, 0x6a, 0x5c, 0x0a, 0x09, 0x69, 0x35, 0x48, 0x65, 0x4b, 0x57, 0x4f, 0x74, 0x79, 0x72, 0x6d, 0x4b, 0x55, 0x77, 0x49, 0x75, 0x4f, 0x75, 0x65, 0x4d, 0x79, 0x49, 0x65, 0x44, 0x77, 0x33, 0x31, 0x33, 0x33, 0x59, 0x58, 0x35, 0x75, 0x56, 0x6d, 0x66, 0x64, 0x59, 0x57, 0x73, 0x4c, 0x4b, 0x34, 0x4a, 0x73, 0x43, 0x79, 0x67, 0x6d, 0x75, 0x76, 0x6e, 0x57, 0x59, 0x5a, 0x4f, 0x4a, 0x36, 0x2f, 0x65, 0x32, 0x79, 0x43, 0x6e, 0x41, 0x33, 0x6b, 0x65, 0x73, 0x72, 0x52, 0x71, 0x5c, 0x0a, 0x09, 0x48, 0x59, 0x65, 0x38, 0x37, 0x42, 0x47, 0x6d, 0x62, 0x6b, 0x51, 0x67, 0x34, 0x69, 0x43, 0x51, 0x65, 0x31, 0x33, 0x6d, 0x51, 0x52, 0x2f, 0x56, 0x73, 0x78, 0x78, 0x42, 0x62, 0x75, 0x77, 0x54, 0x71, 0x45, 0x43, 0x67, 0x47, 0x72, 0x64, 0x66, 0x6f, 0x39, 0x48, 0x36, 0x38, 0x4d, 0x64, 0x5a, 0x6c, 0x72, 0x4d, 0x5a, 0x6c, 0x4a, 0x79, 0x47, 0x38, 0x54, 0x61, 0x54, 0x39, 0x5a, 0x70, 0x4b, 0x52, 0x6b, 0x39, 0x36, 0x34, 0x68, 0x4f, 0x77, 0x5c, 0x0a, 0x09, 0x64, 0x39, 0x63, 0x30, 0x77, 0x44, 0x4b, 0x44, 0x36, 0x50, 0x52, 0x69, 0x76, 0x53, 0x55, 0x63, 0x75, 0x6d, 0x59, 0x64, 0x41, 0x55, 0x2f, 0x56, 0x75, 0x6c, 0x35, 0x74, 0x57, 0x71, 0x73, 0x4d, 0x49, 0x41, 0x50, 0x63, 0x52, 0x66, 0x37, 0x51, 0x70, 0x63, 0x62, 0x47, 0x42, 0x79, 0x31, 0x51, 0x44, 0x2b, 0x42, 0x6f, 0x2b, 0x4c, 0x53, 0x4c, 0x48, 0x6c, 0x63, 0x64, 0x65, 0x69, 0x56, 0x38, 0x38, 0x39, 0x70, 0x72, 0x41, 0x50, 0x67, 0x64, 0x5c, 0x0a, 0x09, 0x5a, 0x67, 0x45, 0x45, 0x38, 0x72, 0x43, 0x77, 0x56, 0x4b, 0x30, 0x4a, 0x2b, 0x4b, 0x67, 0x65, 0x4d, 0x6f, 0x46, 0x4f, 0x7a, 0x41, 0x51, 0x6f, 0x4c, 0x50, 0x37, 0x46, 0x70, 0x77, 0x4c, 0x39, 0x77, 0x71, 0x41, 0x33, 0x51, 0x4c, 0x2f, 0x67, 0x6c, 0x46, 0x56, 0x47, 0x49, 0x68, 0x59, 0x47, 0x77, 0x33, 0x53, 0x41, 0x38, 0x6f, 0x6f, 0x58, 0x44, 0x67, 0x4a, 0x38, 0x59, 0x56, 0x43, 0x6c, 0x69, 0x6a, 0x6f, 0x54, 0x34, 0x47, 0x58, 0x55, 0x5c, 0x0a, 0x09, 0x50, 0x44, 0x7a, 0x4c, 0x63, 0x6e, 0x45, 0x72, 0x74, 0x42, 0x59, 0x48, 0x57, 0x35, 0x6a, 0x69, 0x6e, 0x39, 0x46, 0x67, 0x61, 0x6d, 0x64, 0x38, 0x36, 0x75, 0x4d, 0x65, 0x58, 0x63, 0x75, 0x59, 0x55, 0x35, 0x41, 0x33, 0x31, 0x30, 0x48, 0x73, 0x67, 0x2b, 0x6c, 0x44, 0x52, 0x79, 0x55, 0x64, 0x75, 0x52, 0x78, 0x77, 0x34, 0x50, 0x68, 0x74, 0x65, 0x4e, 0x53, 0x6a, 0x48, 0x69, 0x58, 0x34, 0x75, 0x66, 0x47, 0x47, 0x47, 0x39, 0x44, 0x72, 0x5c, 0x0a, 0x09, 0x64, 0x66, 0x33, 0x36, 0x53, 0x38, 0x67, 0x47, 0x38, 0x68, 0x7a, 0x64, 0x54, 0x72, 0x66, 0x4b, 0x43, 0x4c, 0x70, 0x78, 0x59, 0x62, 0x44, 0x54, 0x37, 0x53, 0x41, 0x6a, 0x42, 0x67, 0x4c, 0x56, 0x4e, 0x43, 0x43, 0x5a, 0x44, 0x72, 0x43, 0x70, 0x67, 0x6e, 0x79, 0x41, 0x4b, 0x43, 0x77, 0x4d, 0x56, 0x69, 0x41, 0x51, 0x73, 0x71, 0x73, 0x34, 0x50, 0x66, 0x4e, 0x33, 0x61, 0x34, 0x51, 0x65, 0x4e, 0x41, 0x68, 0x55, 0x59, 0x36, 0x37, 0x31, 0x5c, 0x0a, 0x09, 0x55, 0x53, 0x2b, 0x76, 0x68, 0x6a, 0x45, 0x46, 0x55, 0x42, 0x62, 0x72, 0x4c, 0x30, 0x7a, 0x57, 0x51, 0x72, 0x77, 0x4d, 0x75, 0x41, 0x6d, 0x45, 0x35, 0x31, 0x78, 0x38, 0x45, 0x63, 0x53, 0x63, 0x54, 0x71, 0x6f, 0x36, 0x36, 0x69, 0x33, 0x52, 0x6b, 0x2f, 0x43, 0x48, 0x57, 0x47, 0x6d, 0x76, 0x76, 0x5a, 0x69, 0x37, 0x65, 0x72, 0x51, 0x32, 0x41, 0x45, 0x44, 0x59, 0x43, 0x77, 0x64, 0x2f, 0x41, 0x39, 0x72, 0x46, 0x2f, 0x39, 0x68, 0x31, 0x5c, 0x0a, 0x09, 0x6c, 0x51, 0x47, 0x49, 0x72, 0x4b, 0x42, 0x47, 0x77, 0x32, 0x64, 0x66, 0x64, 0x42, 0x37, 0x36, 0x2f, 0x62, 0x46, 0x34, 0x65, 0x6d, 0x46, 0x2b, 0x48, 0x74, 0x64, 0x64, 0x65, 0x31, 0x30, 0x56, 0x35, 0x58, 0x4e, 0x30, 0x75, 0x78, 0x31, 0x30, 0x75, 0x7a, 0x31, 0x30, 0x77, 0x6e, 0x53, 0x67, 0x57, 0x68, 0x50, 0x6f, 0x64, 0x50, 0x49, 0x59, 0x67, 0x54, 0x70, 0x64, 0x6e, 0x79, 0x6e, 0x6b, 0x65, 0x59, 0x34, 0x73, 0x58, 0x4b, 0x39, 0x41, 0x5c, 0x0a, 0x09, 0x49, 0x45, 0x51, 0x65, 0x4d, 0x52, 0x33, 0x49, 0x4d, 0x6b, 0x44, 0x4e, 0x4e, 0x65, 0x75, 0x37, 0x41, 0x79, 0x79, 0x79, 0x5a, 0x6d, 0x79, 0x56, 0x4f, 0x56, 0x4d, 0x70, 0x70, 0x77, 0x61, 0x42, 0x53, 0x6f, 0x6c, 0x31, 0x35, 0x4f, 0x48, 0x7a, 0x53, 0x32, 0x39, 0x6b, 0x59, 0x54, 0x6f, 0x51, 0x72, 0x78, 0x45, 0x6c, 0x78, 0x68, 0x55, 0x2b, 0x39, 0x53, 0x37, 0x4b, 0x79, 0x63, 0x6b, 0x4a, 0x2f, 0x4f, 0x43, 0x46, 0x35, 0x36, 0x52, 0x36, 0x5c, 0x0a, 0x09, 0x53, 0x46, 0x61, 0x61, 0x30, 0x33, 0x6d, 0x39, 0x69, 0x46, 0x53, 0x36, 0x44, 0x76, 0x45, 0x79, 0x6e, 0x74, 0x64, 0x6e, 0x58, 0x66, 0x77, 0x6b, 0x77, 0x63, 0x38, 0x33, 0x72, 0x37, 0x6b, 0x61, 0x68, 0x32, 0x64, 0x6d, 0x4a, 0x41, 0x68, 0x55, 0x43, 0x34, 0x4f, 0x64, 0x62, 0x69, 0x39, 0x6d, 0x42, 0x78, 0x59, 0x49, 0x45, 0x46, 0x47, 0x38, 0x6c, 0x56, 0x68, 0x6e, 0x41, 0x33, 0x56, 0x6b, 0x62, 0x31, 0x77, 0x59, 0x44, 0x4a, 0x6c, 0x41, 0x5c, 0x0a, 0x09, 0x58, 0x6a, 0x2f, 0x65, 0x37, 0x66, 0x58, 0x68, 0x6e, 0x58, 0x6f, 0x6b, 0x43, 0x49, 0x54, 0x73, 0x72, 0x4c, 0x70, 0x46, 0x4b, 0x50, 0x50, 0x52, 0x4f, 0x71, 0x72, 0x48, 0x4b, 0x51, 0x55, 0x58, 0x44, 0x64, 0x4e, 0x64, 0x33, 0x48, 0x2f, 0x41, 0x4d, 0x72, 0x2b, 0x7a, 0x7a, 0x7a, 0x6b, 0x62, 0x33, 0x2f, 0x2f, 0x6f, 0x4d, 0x36, 0x41, 0x61, 0x54, 0x57, 0x33, 0x63, 0x6d, 0x6d, 0x4c, 0x5a, 0x30, 0x36, 0x37, 0x6a, 0x45, 0x69, 0x5a, 0x57, 0x5c, 0x0a, 0x09, 0x6d, 0x56, 0x59, 0x66, 0x41, 0x48, 0x78, 0x6b, 0x6e, 0x42, 0x62, 0x7a, 0x53, 0x5a, 0x59, 0x71, 0x65, 0x57, 0x4b, 0x47, 0x79, 0x41, 0x63, 0x65, 0x55, 0x30, 0x35, 0x2f, 0x2f, 0x71, 0x54, 0x6a, 0x70, 0x76, 0x42, 0x6a, 0x7a, 0x33, 0x39, 0x32, 0x76, 0x64, 0x42, 0x43, 0x77, 0x4e, 0x56, 0x66, 0x2f, 0x54, 0x66, 0x4d, 0x7a, 0x42, 0x78, 0x43, 0x6e, 0x6e, 0x65, 0x52, 0x64, 0x37, 0x73, 0x2b, 0x45, 0x2b, 0x6a, 0x32, 0x2f, 0x4a, 0x70, 0x41, 0x5c, 0x0a, 0x09, 0x74, 0x52, 0x62, 0x51, 0x79, 0x61, 0x76, 0x50, 0x63, 0x4b, 0x75, 0x77, 0x30, 0x30, 0x47, 0x6e, 0x4d, 0x71, 0x69, 0x73, 0x57, 0x69, 0x76, 0x67, 0x68, 0x74, 0x66, 0x70, 0x2b, 0x46, 0x64, 0x37, 0x35, 0x39, 0x56, 0x4c, 0x4c, 0x50, 0x49, 0x71, 0x46, 0x59, 0x32, 0x5a, 0x41, 0x49, 0x46, 0x6c, 0x41, 0x74, 0x55, 0x35, 0x49, 0x42, 0x6f, 0x61, 0x77, 0x4e, 0x63, 0x45, 0x58, 0x42, 0x77, 0x57, 0x6f, 0x45, 0x41, 0x67, 0x52, 0x68, 0x36, 0x65, 0x5c, 0x0a, 0x09, 0x42, 0x64, 0x53, 0x66, 0x56, 0x45, 0x57, 0x65, 0x69, 0x49, 0x47, 0x6f, 0x6e, 0x5a, 0x4e, 0x76, 0x65, 0x49, 0x6b, 0x70, 0x61, 0x58, 0x58, 0x74, 0x52, 0x35, 0x2f, 0x37, 0x4c, 0x4f, 0x7a, 0x5a, 0x74, 0x6f, 0x58, 0x4a, 0x47, 0x2f, 0x4b, 0x59, 0x4c, 0x2f, 0x54, 0x70, 0x4e, 0x4c, 0x54, 0x4b, 0x5a, 0x4f, 0x7a, 0x4e, 0x4b, 0x6c, 0x77, 0x76, 0x33, 0x6f, 0x43, 0x66, 0x2b, 0x2f, 0x68, 0x7a, 0x63, 0x4f, 0x72, 0x65, 0x76, 0x57, 0x49, 0x75, 0x5c, 0x0a, 0x09, 0x66, 0x4d, 0x58, 0x6e, 0x50, 0x77, 0x38, 0x43, 0x6f, 0x64, 0x76, 0x31, 0x47, 0x56, 0x61, 0x6e, 0x36, 0x38, 0x47, 0x67, 0x6d, 0x33, 0x66, 0x51, 0x71, 0x62, 0x49, 0x79, 0x6e, 0x51, 0x6e, 0x6b, 0x56, 0x54, 0x59, 0x47, 0x71, 0x6d, 0x2f, 0x4e, 0x69, 0x6b, 0x79, 0x67, 0x41, 0x75, 0x7a, 0x77, 0x58, 0x59, 0x42, 0x41, 0x70, 0x71, 0x63, 0x44, 0x66, 0x6d, 0x6f, 0x58, 0x30, 0x33, 0x7a, 0x6f, 0x57, 0x34, 0x51, 0x79, 0x75, 0x2b, 0x49, 0x4c, 0x5c, 0x0a, 0x09, 0x67, 0x33, 0x6d, 0x79, 0x4e, 0x6c, 0x50, 0x72, 0x78, 0x47, 0x63, 0x4d, 0x4b, 0x53, 0x42, 0x62, 0x49, 0x41, 0x77, 0x48, 0x2f, 0x4f, 0x49, 0x4c, 0x6e, 0x34, 0x4e, 0x65, 0x4a, 0x34, 0x65, 0x77, 0x2b, 0x57, 0x53, 0x36, 0x61, 0x30, 0x79, 0x7a, 0x4c, 0x46, 0x44, 0x32, 0x4e, 0x6e, 0x38, 0x49, 0x61, 0x30, 0x79, 0x72, 0x44, 0x77, 0x42, 0x2b, 0x62, 0x4b, 0x55, 0x2b, 0x45, 0x57, 0x46, 0x52, 0x72, 0x77, 0x45, 0x45, 0x45, 0x6f, 0x41, 0x52, 0x5c, 0x0a, 0x09, 0x71, 0x6a, 0x69, 0x38, 0x39, 0x4a, 0x49, 0x6e, 0x59, 0x50, 0x75, 0x4f, 0x48, 0x53, 0x4a, 0x74, 0x2f, 0x75, 0x54, 0x48, 0x2f, 0x77, 0x55, 0x4c, 0x43, 0x2f, 0x50, 0x6f, 0x56, 0x4b, 0x6c, 0x2b, 0x48, 0x66, 0x45, 0x39, 0x43, 0x47, 0x52, 0x35, 0x57, 0x50, 0x33, 0x50, 0x34, 0x39, 0x32, 0x42, 0x76, 0x4a, 0x6f, 0x75, 0x35, 0x4e, 0x58, 0x37, 0x42, 0x4d, 0x4c, 0x43, 0x59, 0x46, 0x77, 0x54, 0x43, 0x4f, 0x38, 0x51, 0x79, 0x41, 0x67, 0x55, 0x5c, 0x0a, 0x09, 0x4d, 0x67, 0x45, 0x4b, 0x61, 0x77, 0x4a, 0x5a, 0x73, 0x6b, 0x2f, 0x41, 0x41, 0x30, 0x4f, 0x34, 0x4a, 0x56, 0x57, 0x39, 0x58, 0x30, 0x44, 0x73, 0x45, 0x36, 0x69, 0x4e, 0x52, 0x4b, 0x77, 0x4a, 0x78, 0x4d, 0x67, 0x6a, 0x4d, 0x34, 0x48, 0x67, 0x31, 0x41, 0x46, 0x49, 0x39, 0x44, 0x36, 0x42, 0x63, 0x4d, 0x77, 0x58, 0x6e, 0x51, 0x42, 0x67, 0x35, 0x36, 0x35, 0x64, 0x65, 0x4f, 0x6b, 0x6c, 0x54, 0x30, 0x72, 0x58, 0x55, 0x73, 0x51, 0x71, 0x5c, 0x0a, 0x09, 0x50, 0x39, 0x4c, 0x35, 0x66, 0x54, 0x77, 0x30, 0x73, 0x67, 0x44, 0x47, 0x71, 0x39, 0x62, 0x4c, 0x78, 0x46, 0x67, 0x58, 0x4c, 0x33, 0x2f, 0x68, 0x38, 0x78, 0x6d, 0x6d, 0x45, 0x2b, 0x36, 0x39, 0x35, 0x79, 0x35, 0x38, 0x34, 0x58, 0x4f, 0x66, 0x42, 0x5a, 0x43, 0x68, 0x32, 0x2f, 0x56, 0x37, 0x4d, 0x75, 0x70, 0x70, 0x57, 0x67, 0x65, 0x64, 0x76, 0x42, 0x74, 0x54, 0x2f, 0x51, 0x41, 0x43, 0x65, 0x53, 0x64, 0x48, 0x4a, 0x2b, 0x67, 0x6a, 0x5c, 0x0a, 0x09, 0x79, 0x32, 0x4d, 0x57, 0x46, 0x64, 0x63, 0x4d, 0x71, 0x6b, 0x77, 0x67, 0x72, 0x42, 0x30, 0x63, 0x44, 0x51, 0x68, 0x34, 0x55, 0x4b, 0x36, 0x6e, 0x57, 0x68, 0x47, 0x67, 0x72, 0x62, 0x73, 0x44, 0x51, 0x53, 0x63, 0x55, 0x33, 0x67, 0x39, 0x52, 0x54, 0x77, 0x4c, 0x71, 0x6b, 0x64, 0x55, 0x4c, 0x74, 0x51, 0x46, 0x34, 0x2b, 0x5a, 0x6f, 0x41, 0x76, 0x31, 0x50, 0x7a, 0x37, 0x42, 0x2b, 0x2b, 0x42, 0x45, 0x38, 0x35, 0x4a, 0x2f, 0x7a, 0x61, 0x5c, 0x0a, 0x09, 0x6e, 0x51, 0x5a, 0x5a, 0x37, 0x75, 0x54, 0x73, 0x32, 0x4a, 0x4a, 0x35, 0x4f, 0x4f, 0x39, 0x42, 0x35, 0x4b, 0x62, 0x47, 0x4d, 0x71, 0x74, 0x45, 0x2b, 0x65, 0x74, 0x66, 0x2f, 0x2f, 0x70, 0x56, 0x62, 0x64, 0x44, 0x64, 0x64, 0x7a, 0x50, 0x67, 0x67, 0x65, 0x56, 0x56, 0x49, 0x75, 0x6f, 0x49, 0x51, 0x37, 0x4a, 0x41, 0x51, 0x45, 0x38, 0x44, 0x2f, 0x50, 0x48, 0x6b, 0x57, 0x41, 0x2f, 0x62, 0x6a, 0x7a, 0x38, 0x52, 0x6c, 0x33, 0x33, 0x6d, 0x5c, 0x0a, 0x09, 0x69, 0x37, 0x48, 0x6b, 0x63, 0x4c, 0x43, 0x4d, 0x57, 0x32, 0x37, 0x36, 0x44, 0x6e, 0x62, 0x76, 0x33, 0x6f, 0x4d, 0x74, 0x57, 0x36, 0x65, 0x71, 0x64, 0x6c, 0x46, 0x50, 0x4e, 0x79, 0x71, 0x42, 0x65, 0x34, 0x66, 0x78, 0x62, 0x59, 0x56, 0x6e, 0x2b, 0x6f, 0x4e, 0x79, 0x48, 0x4f, 0x72, 0x55, 0x73, 0x48, 0x37, 0x71, 0x69, 0x37, 0x33, 0x6f, 0x6f, 0x7a, 0x70, 0x32, 0x6a, 0x6b, 0x66, 0x72, 0x63, 0x4f, 0x79, 0x64, 0x31, 0x6a, 0x39, 0x41, 0x5c, 0x0a, 0x09, 0x78, 0x4d, 0x63, 0x6b, 0x30, 0x30, 0x33, 0x2b, 0x50, 0x62, 0x79, 0x43, 0x4c, 0x46, 0x42, 0x34, 0x6b, 0x30, 0x33, 0x74, 0x33, 0x4b, 0x7a, 0x39, 0x77, 0x44, 0x59, 0x54, 0x52, 0x57, 0x77, 0x33, 0x66, 0x4b, 0x2f, 0x2b, 0x76, 0x65, 0x6e, 0x56, 0x76, 0x34, 0x42, 0x48, 0x6e, 0x58, 0x36, 0x43, 0x6a, 0x50, 0x5a, 0x31, 0x35, 0x79, 0x49, 0x61, 0x4c, 0x53, 0x30, 0x58, 0x75, 0x50, 0x7a, 0x71, 0x37, 0x2b, 0x44, 0x50, 0x2f, 0x75, 0x6d, 0x7a, 0x5c, 0x0a, 0x09, 0x2b, 0x50, 0x4f, 0x50, 0x66, 0x68, 0x6f, 0x66, 0x2b, 0x75, 0x51, 0x56, 0x2b, 0x4f, 0x71, 0x4e, 0x64, 0x77, 0x4a, 0x35, 0x44, 0x36, 0x66, 0x75, 0x6e, 0x4a, 0x5a, 0x70, 0x72, 0x37, 0x67, 0x4e, 0x4b, 0x50, 0x56, 0x31, 0x35, 0x73, 0x6d, 0x37, 0x38, 0x65, 0x33, 0x37, 0x5a, 0x6e, 0x48, 0x44, 0x6a, 0x64, 0x2b, 0x4a, 0x70, 0x77, 0x38, 0x2b, 0x2b, 0x41, 0x42, 0x6d, 0x5a, 0x6d, 0x5a, 0x77, 0x2f, 0x50, 0x45, 0x6e, 0x6f, 0x74, 0x66, 0x72, 0x5c, 0x0a, 0x09, 0x65, 0x67, 0x6c, 0x56, 0x66, 0x4e, 0x63, 0x6a, 0x35, 0x45, 0x2f, 0x4a, 0x49, 0x55, 0x59, 0x37, 0x79, 0x6f, 0x68, 0x6a, 0x47, 0x67, 0x50, 0x41, 0x71, 0x6b, 0x35, 0x47, 0x6c, 0x54, 0x77, 0x71, 0x4f, 0x56, 0x66, 0x6a, 0x35, 0x32, 0x56, 0x41, 0x74, 0x5a, 0x61, 0x53, 0x36, 0x52, 0x68, 0x62, 0x58, 0x37, 0x47, 0x75, 0x68, 0x65, 0x73, 0x31, 0x4b, 0x4e, 0x65, 0x36, 0x63, 0x47, 0x43, 0x4c, 0x75, 0x45, 0x7a, 0x32, 0x6e, 0x45, 0x34, 0x2f, 0x5c, 0x0a, 0x09, 0x63, 0x41, 0x42, 0x76, 0x76, 0x66, 0x52, 0x46, 0x6d, 0x4f, 0x68, 0x33, 0x70, 0x65, 0x79, 0x31, 0x6a, 0x53, 0x76, 0x62, 0x53, 0x4c, 0x4b, 0x44, 0x64, 0x46, 0x72, 0x77, 0x64, 0x6a, 0x6a, 0x38, 0x47, 0x2b, 0x30, 0x2b, 0x44, 0x57, 0x74, 0x46, 0x61, 0x77, 0x4d, 0x41, 0x52, 0x41, 0x73, 0x67, 0x65, 0x69, 0x57, 0x63, 0x36, 0x39, 0x56, 0x47, 0x79, 0x49, 0x79, 0x49, 0x4b, 0x52, 0x38, 0x49, 0x78, 0x32, 0x42, 0x47, 0x44, 0x49, 0x47, 0x61, 0x5c, 0x0a, 0x09, 0x5a, 0x35, 0x32, 0x79, 0x42, 0x34, 0x66, 0x51, 0x78, 0x56, 0x56, 0x58, 0x58, 0x78, 0x63, 0x56, 0x50, 0x31, 0x77, 0x65, 0x34, 0x73, 0x5a, 0x76, 0x58, 0x34, 0x2b, 0x5a, 0x77, 0x34, 0x63, 0x41, 0x2b, 0x44, 0x63, 0x43, 0x39, 0x63, 0x62, 0x36, 0x63, 0x59, 0x48, 0x46, 0x4c, 0x2b, 0x52, 0x41, 0x4b, 0x4d, 0x32, 0x4a, 0x71, 0x45, 0x68, 0x77, 0x42, 0x4a, 0x41, 0x6a, 0x31, 0x6e, 0x30, 0x77, 0x54, 0x76, 0x38, 0x51, 0x6b, 0x4c, 0x43, 0x76, 0x5c, 0x0a, 0x09, 0x47, 0x50, 0x49, 0x63, 0x77, 0x6a, 0x71, 0x79, 0x42, 0x34, 0x48, 0x4b, 0x75, 0x4b, 0x67, 0x32, 0x59, 0x71, 0x6c, 0x6e, 0x5a, 0x6e, 0x78, 0x73, 0x45, 0x51, 0x71, 0x78, 0x36, 0x64, 0x43, 0x4a, 0x42, 0x42, 0x6b, 0x69, 0x38, 0x6e, 0x76, 0x56, 0x6c, 0x63, 0x48, 0x78, 0x68, 0x31, 0x46, 0x65, 0x2f, 0x4d, 0x49, 0x66, 0x77, 0x30, 0x75, 0x65, 0x66, 0x6f, 0x47, 0x55, 0x72, 0x54, 0x6c, 0x33, 0x42, 0x36, 0x36, 0x34, 0x2f, 0x6e, 0x62, 0x38, 0x5c, 0x0a, 0x09, 0x38, 0x75, 0x2b, 0x2f, 0x48, 0x33, 0x2f, 0x2b, 0x77, 0x51, 0x2f, 0x6a, 0x32, 0x75, 0x75, 0x2b, 0x69, 0x64, 0x74, 0x75, 0x76, 0x77, 0x31, 0x33, 0x33, 0x6e, 0x45, 0x58, 0x72, 0x76, 0x33, 0x47, 0x4e, 0x2f, 0x45, 0x50, 0x6c, 0x2f, 0x30, 0x72, 0x76, 0x6e, 0x6a, 0x39, 0x48, 0x54, 0x6a, 0x37, 0x6a, 0x50, 0x33, 0x59, 0x4f, 0x61, 0x56, 0x2b, 0x74, 0x6c, 0x37, 0x72, 0x70, 0x6a, 0x72, 0x38, 0x33, 0x72, 0x50, 0x50, 0x77, 0x47, 0x65, 0x76, 0x5c, 0x0a, 0x09, 0x76, 0x67, 0x48, 0x33, 0x33, 0x2f, 0x39, 0x41, 0x50, 0x48, 0x2f, 0x34, 0x30, 0x43, 0x46, 0x38, 0x2b, 0x31, 0x76, 0x66, 0x42, 0x43, 0x6a, 0x44, 0x32, 0x4e, 0x67, 0x59, 0x78, 0x73, 0x62, 0x36, 0x55, 0x54, 0x5a, 0x78, 0x78, 0x50, 0x71, 0x42, 0x70, 0x69, 0x44, 0x6e, 0x49, 0x41, 0x58, 0x4c, 0x53, 0x51, 0x49, 0x41, 0x4f, 0x74, 0x6e, 0x47, 0x4b, 0x42, 0x43, 0x51, 0x2f, 0x4d, 0x70, 0x33, 0x4b, 0x46, 0x6a, 0x72, 0x4e, 0x52, 0x34, 0x45, 0x5c, 0x0a, 0x09, 0x4d, 0x70, 0x51, 0x49, 0x75, 0x79, 0x2b, 0x6a, 0x4a, 0x71, 0x72, 0x72, 0x69, 0x4c, 0x6f, 0x49, 0x59, 0x45, 0x42, 0x45, 0x32, 0x4c, 0x48, 0x6a, 0x4f, 0x4c, 0x7a, 0x6e, 0x64, 0x5a, 0x66, 0x69, 0x31, 0x4a, 0x31, 0x54, 0x4b, 0x73, 0x67, 0x5a, 0x6c, 0x47, 0x77, 0x4f, 0x34, 0x73, 0x4e, 0x4d, 0x6e, 0x50, 0x38, 0x42, 0x4f, 0x50, 0x63, 0x53, 0x41, 0x49, 0x4f, 0x31, 0x42, 0x49, 0x42, 0x56, 0x66, 0x78, 0x6a, 0x49, 0x37, 0x31, 0x78, 0x79, 0x5c, 0x0a, 0x09, 0x41, 0x50, 0x41, 0x52, 0x67, 0x48, 0x34, 0x6f, 0x69, 0x66, 0x5a, 0x4a, 0x5a, 0x45, 0x45, 0x4b, 0x43, 0x49, 0x41, 0x55, 0x6c, 0x48, 0x4d, 0x59, 0x46, 0x41, 0x36, 0x76, 0x2f, 0x37, 0x4f, 0x2f, 0x78, 0x34, 0x63, 0x2b, 0x2f, 0x42, 0x47, 0x42, 0x78, 0x76, 0x79, 0x7a, 0x31, 0x2b, 0x39, 0x68, 0x32, 0x2f, 0x62, 0x6a, 0x73, 0x48, 0x56, 0x36, 0x47, 0x75, 0x50, 0x6a, 0x34, 0x2b, 0x6a, 0x31, 0x65, 0x76, 0x55, 0x74, 0x77, 0x36, 0x7a, 0x61, 0x5c, 0x0a, 0x09, 0x54, 0x31, 0x34, 0x4d, 0x4d, 0x52, 0x7a, 0x36, 0x68, 0x34, 0x57, 0x47, 0x52, 0x65, 0x46, 0x66, 0x4c, 0x6a, 0x6f, 0x73, 0x55, 0x4a, 0x62, 0x56, 0x67, 0x79, 0x6e, 0x56, 0x51, 0x30, 0x54, 0x44, 0x34, 0x54, 0x4b, 0x41, 0x2b, 0x6b, 0x57, 0x6a, 0x5a, 0x56, 0x6d, 0x4b, 0x46, 0x31, 0x6a, 0x57, 0x44, 0x78, 0x43, 0x56, 0x37, 0x47, 0x65, 0x6f, 0x79, 0x75, 0x70, 0x52, 0x34, 0x6b, 0x6f, 0x57, 0x37, 0x46, 0x48, 0x69, 0x4d, 0x48, 0x51, 0x41, 0x5c, 0x0a, 0x09, 0x79, 0x57, 0x76, 0x49, 0x2b, 0x51, 0x4d, 0x72, 0x44, 0x67, 0x36, 0x75, 0x4b, 0x4f, 0x76, 0x73, 0x68, 0x4b, 0x30, 0x4a, 0x65, 0x4c, 0x48, 0x34, 0x38, 0x79, 0x39, 0x34, 0x33, 0x72, 0x50, 0x77, 0x75, 0x70, 0x2f, 0x36, 0x59, 0x58, 0x51, 0x37, 0x32, 0x51, 0x6a, 0x44, 0x38, 0x68, 0x55, 0x2f, 0x63, 0x50, 0x6c, 0x58, 0x38, 0x61, 0x61, 0x33, 0x76, 0x68, 0x76, 0x44, 0x34, 0x52, 0x41, 0x6e, 0x37, 0x7a, 0x30, 0x56, 0x7a, 0x33, 0x76, 0x36, 0x5c, 0x0a, 0x09, 0x78, 0x54, 0x6a, 0x33, 0x59, 0x61, 0x64, 0x69, 0x57, 0x4a, 0x53, 0x34, 0x38, 0x76, 0x71, 0x62, 0x38, 0x44, 0x63, 0x66, 0x2b, 0x53, 0x63, 0x38, 0x65, 0x50, 0x38, 0x44, 0x6d, 0x4a, 0x71, 0x65, 0x78, 0x6e, 0x2f, 0x2f, 0x39, 0x66, 0x38, 0x58, 0x54, 0x7a, 0x37, 0x37, 0x4e, 0x4d, 0x6d, 0x77, 0x70, 0x52, 0x4d, 0x41, 0x4e, 0x39, 0x38, 0x33, 0x67, 0x35, 0x39, 0x2f, 0x77, 0x7a, 0x76, 0x77, 0x6e, 0x65, 0x6f, 0x33, 0x41, 0x66, 0x68, 0x30, 0x5c, 0x0a, 0x09, 0x68, 0x6b, 0x41, 0x59, 0x47, 0x78, 0x2f, 0x48, 0x38, 0x53, 0x65, 0x64, 0x6a, 0x4b, 0x6e, 0x70, 0x61, 0x55, 0x78, 0x4f, 0x62, 0x45, 0x46, 0x76, 0x72, 0x49, 0x64, 0x4f, 0x70, 0x34, 0x4f, 0x79, 0x4c, 0x46, 0x45, 0x4d, 0x68, 0x2f, 0x48, 0x68, 0x6f, 0x4f, 0x46, 0x77, 0x57, 0x4c, 0x33, 0x67, 0x74, 0x66, 0x43, 0x2f, 0x2f, 0x56, 0x43, 0x57, 0x2f, 0x71, 0x47, 0x68, 0x30, 0x71, 0x47, 0x6f, 0x5a, 0x46, 0x2b, 0x57, 0x52, 0x61, 0x57, 0x44, 0x5c, 0x0a, 0x09, 0x45, 0x6b, 0x58, 0x31, 0x77, 0x42, 0x65, 0x63, 0x41, 0x38, 0x72, 0x71, 0x6f, 0x61, 0x50, 0x53, 0x77, 0x54, 0x6e, 0x2f, 0x78, 0x43, 0x44, 0x58, 0x55, 0x2f, 0x6c, 0x64, 0x50, 0x45, 0x41, 0x55, 0x39, 0x42, 0x41, 0x66, 0x45, 0x6f, 0x71, 0x5a, 0x59, 0x66, 0x71, 0x6f, 0x4e, 0x51, 0x41, 0x63, 0x76, 0x2b, 0x64, 0x34, 0x76, 0x50, 0x4e, 0x31, 0x6c, 0x2b, 0x4b, 0x38, 0x66, 0x58, 0x75, 0x6b, 0x44, 0x75, 0x4b, 0x55, 0x53, 0x67, 0x55, 0x35, 0x5c, 0x0a, 0x09, 0x50, 0x67, 0x31, 0x57, 0x41, 0x4a, 0x33, 0x6f, 0x30, 0x4c, 0x6b, 0x66, 0x41, 0x2f, 0x42, 0x42, 0x59, 0x47, 0x30, 0x66, 0x43, 0x6c, 0x71, 0x54, 0x70, 0x77, 0x48, 0x39, 0x63, 0x77, 0x42, 0x30, 0x4d, 0x59, 0x43, 0x50, 0x43, 0x32, 0x46, 0x6f, 0x45, 0x67, 0x36, 0x66, 0x48, 0x43, 0x52, 0x43, 0x47, 0x53, 0x77, 0x58, 0x65, 0x4d, 0x39, 0x48, 0x50, 0x34, 0x73, 0x2f, 0x2f, 0x4f, 0x4f, 0x2f, 0x45, 0x4b, 0x2f, 0x63, 0x53, 0x74, 0x42, 0x5a, 0x5c, 0x0a, 0x09, 0x55, 0x59, 0x6a, 0x2b, 0x6e, 0x54, 0x78, 0x48, 0x74, 0x39, 0x39, 0x48, 0x72, 0x39, 0x2f, 0x33, 0x69, 0x30, 0x7a, 0x38, 0x78, 0x61, 0x47, 0x35, 0x33, 0x4b, 0x77, 0x44, 0x49, 0x50, 0x36, 0x57, 0x58, 0x48, 0x67, 0x69, 0x7a, 0x62, 0x50, 0x6b, 0x2f, 0x43, 0x75, 0x6e, 0x79, 0x62, 0x2f, 0x53, 0x4f, 0x72, 0x7a, 0x31, 0x70, 0x6e, 0x37, 0x6d, 0x33, 0x37, 0x47, 0x33, 0x43, 0x66, 0x6b, 0x6e, 0x45, 0x50, 0x6e, 0x38, 0x75, 0x2b, 0x53, 0x4f, 0x5c, 0x0a, 0x09, 0x62, 0x72, 0x77, 0x6e, 0x67, 0x45, 0x65, 0x59, 0x4f, 0x72, 0x44, 0x56, 0x42, 0x70, 0x68, 0x6e, 0x47, 0x56, 0x37, 0x78, 0x73, 0x7a, 0x2b, 0x46, 0x6c, 0x2f, 0x2f, 0x67, 0x45, 0x2b, 0x73, 0x35, 0x72, 0x6b, 0x34, 0x66, 0x6d, 0x58, 0x46, 0x39, 0x38, 0x4e, 0x4e, 0x58, 0x34, 0x6a, 0x64, 0x2f, 0x37, 0x77, 0x2f, 0x67, 0x34, 0x50, 0x43, 0x66, 0x58, 0x2f, 0x41, 0x38, 0x76, 0x4f, 0x6f, 0x46, 0x33, 0x31, 0x38, 0x2f, 0x49, 0x56, 0x69, 0x56, 0x5c, 0x0a, 0x09, 0x75, 0x66, 0x2f, 0x77, 0x41, 0x6e, 0x37, 0x6a, 0x66, 0x58, 0x2b, 0x44, 0x54, 0x31, 0x7a, 0x2b, 0x53, 0x66, 0x54, 0x37, 0x59, 0x2f, 0x6a, 0x54, 0x74, 0x2f, 0x77, 0x47, 0x48, 0x6e, 0x76, 0x67, 0x70, 0x46, 0x51, 0x48, 0x71, 0x5a, 0x48, 0x69, 0x33, 0x70, 0x6c, 0x35, 0x2f, 0x4e, 0x71, 0x37, 0x2f, 0x69, 0x63, 0x2b, 0x38, 0x39, 0x6e, 0x50, 0x43, 0x66, 0x6e, 0x72, 0x34, 0x37, 0x71, 0x4b, 0x77, 0x2f, 0x6a, 0x45, 0x4f, 0x4d, 0x62, 0x47, 0x5c, 0x0a, 0x09, 0x4a, 0x39, 0x45, 0x62, 0x36, 0x79, 0x48, 0x50, 0x71, 0x6c, 0x75, 0x33, 0x6d, 0x63, 0x2b, 0x43, 0x73, 0x71, 0x78, 0x2b, 0x34, 0x57, 0x64, 0x5a, 0x44, 0x72, 0x33, 0x6f, 0x55, 0x44, 0x6c, 0x6f, 0x36, 0x65, 0x4a, 0x6a, 0x32, 0x6d, 0x56, 0x52, 0x6f, 0x75, 0x42, 0x50, 0x45, 0x51, 0x59, 0x39, 0x4f, 0x48, 0x38, 0x39, 0x50, 0x46, 0x48, 0x6f, 0x66, 0x2f, 0x75, 0x78, 0x65, 0x6d, 0x53, 0x34, 0x65, 0x6e, 0x4b, 0x7a, 0x72, 0x4f, 0x62, 0x7a, 0x5c, 0x0a, 0x09, 0x34, 0x49, 0x37, 0x4f, 0x5a, 0x4f, 0x31, 0x56, 0x6b, 0x6a, 0x36, 0x69, 0x7a, 0x73, 0x64, 0x78, 0x34, 0x59, 0x55, 0x58, 0x34, 0x49, 0x30, 0x76, 0x2b, 0x33, 0x39, 0x77, 0x79, 0x6e, 0x46, 0x68, 0x43, 0x73, 0x70, 0x74, 0x52, 0x30, 0x55, 0x6e, 0x64, 0x68, 0x64, 0x46, 0x67, 0x49, 0x4b, 0x75, 0x56, 0x2b, 0x76, 0x78, 0x74, 0x51, 0x42, 0x2b, 0x42, 0x31, 0x6a, 0x37, 0x4a, 0x77, 0x4c, 0x58, 0x43, 0x41, 0x41, 0x2b, 0x46, 0x56, 0x44, 0x77, 0x5c, 0x0a, 0x09, 0x44, 0x2b, 0x48, 0x77, 0x38, 0x6b, 0x59, 0x41, 0x41, 0x47, 0x79, 0x45, 0x62, 0x4b, 0x4a, 0x4b, 0x55, 0x56, 0x66, 0x64, 0x66, 0x41, 0x2f, 0x65, 0x2b, 0x63, 0x47, 0x50, 0x34, 0x74, 0x50, 0x2f, 0x2b, 0x74, 0x6e, 0x71, 0x4e, 0x4d, 0x73, 0x68, 0x6f, 0x59, 0x41, 0x67, 0x4f, 0x46, 0x43, 0x59, 0x35, 0x79, 0x6c, 0x6c, 0x57, 0x34, 0x2f, 0x57, 0x38, 0x68, 0x52, 0x50, 0x37, 0x38, 0x50, 0x58, 0x6b, 0x56, 0x6c, 0x38, 0x68, 0x7a, 0x4a, 0x32, 0x5c, 0x0a, 0x09, 0x42, 0x6b, 0x59, 0x38, 0x4d, 0x75, 0x71, 0x32, 0x72, 0x4c, 0x4c, 0x68, 0x48, 0x44, 0x2f, 0x2b, 0x33, 0x73, 0x63, 0x39, 0x44, 0x71, 0x2f, 0x36, 0x79, 0x65, 0x66, 0x67, 0x30, 0x65, 0x47, 0x4a, 0x76, 0x35, 0x69, 0x61, 0x75, 0x2f, 0x71, 0x59, 0x79, 0x58, 0x4e, 0x70, 0x4d, 0x4d, 0x52, 0x50, 0x2f, 0x4e, 0x59, 0x37, 0x63, 0x65, 0x58, 0x58, 0x72, 0x73, 0x4c, 0x4c, 0x66, 0x2b, 0x59, 0x6e, 0x38, 0x63, 0x76, 0x50, 0x66, 0x51, 0x71, 0x4c, 0x5c, 0x0a, 0x09, 0x54, 0x74, 0x57, 0x67, 0x71, 0x2b, 0x2b, 0x4c, 0x67, 0x77, 0x4b, 0x2f, 0x39, 0x74, 0x36, 0x2f, 0x78, 0x54, 0x2f, 0x2b, 0x30, 0x37, 0x2f, 0x67, 0x42, 0x63, 0x39, 0x37, 0x46, 0x74, 0x37, 0x34, 0x6b, 0x6d, 0x64, 0x42, 0x47, 0x71, 0x2f, 0x57, 0x51, 0x31, 0x31, 0x33, 0x65, 0x65, 0x6a, 0x77, 0x56, 0x35, 0x2f, 0x36, 0x4e, 0x37, 0x7a, 0x33, 0x41, 0x78, 0x2f, 0x43, 0x76, 0x66, 0x66, 0x65, 0x6b, 0x77, 0x4b, 0x61, 0x6d, 0x6d, 0x4e, 0x7a, 0x5c, 0x0a, 0x09, 0x30, 0x6d, 0x4d, 0x56, 0x4c, 0x34, 0x49, 0x4a, 0x75, 0x6c, 0x56, 0x74, 0x52, 0x62, 0x41, 0x33, 0x5a, 0x4b, 0x6a, 0x50, 0x6a, 0x36, 0x7a, 0x50, 0x35, 0x43, 0x76, 0x4b, 0x61, 0x6a, 0x4e, 0x6b, 0x2f, 0x6e, 0x7a, 0x4b, 0x33, 0x6c, 0x50, 0x78, 0x34, 0x68, 0x63, 0x38, 0x43, 0x79, 0x39, 0x34, 0x34, 0x71, 0x50, 0x51, 0x36, 0x32, 0x59, 0x69, 0x4f, 0x78, 0x4e, 0x52, 0x33, 0x33, 0x4c, 0x73, 0x30, 0x46, 0x6a, 0x55, 0x6d, 0x37, 0x36, 0x47, 0x5c, 0x0a, 0x09, 0x65, 0x2b, 0x44, 0x63, 0x79, 0x77, 0x46, 0x38, 0x47, 0x46, 0x69, 0x66, 0x78, 0x34, 0x48, 0x58, 0x37, 0x48, 0x30, 0x41, 0x31, 0x59, 0x35, 0x41, 0x41, 0x74, 0x46, 0x76, 0x41, 0x48, 0x67, 0x4e, 0x67, 0x44, 0x45, 0x7a, 0x55, 0x76, 0x45, 0x55, 0x56, 0x36, 0x52, 0x46, 0x47, 0x6a, 0x32, 0x68, 0x36, 0x67, 0x46, 0x58, 0x33, 0x33, 0x49, 0x50, 0x50, 0x76, 0x36, 0x56, 0x61, 0x33, 0x48, 0x31, 0x4e, 0x32, 0x2f, 0x45, 0x31, 0x36, 0x36, 0x38, 0x5c, 0x0a, 0x09, 0x45, 0x76, 0x4e, 0x7a, 0x38, 0x37, 0x36, 0x59, 0x4d, 0x6a, 0x54, 0x4c, 0x43, 0x48, 0x57, 0x30, 0x31, 0x32, 0x2f, 0x62, 0x43, 0x65, 0x30, 0x6b, 0x42, 0x74, 0x70, 0x77, 0x72, 0x6a, 0x70, 0x68, 0x41, 0x6b, 0x6d, 0x43, 0x61, 0x58, 0x47, 0x38, 0x61, 0x61, 0x54, 0x55, 0x6b, 0x65, 0x66, 0x6b, 0x55, 0x30, 0x2f, 0x42, 0x45, 0x79, 0x39, 0x34, 0x4c, 0x4a, 0x37, 0x35, 0x2b, 0x50, 0x4e, 0x78, 0x77, 0x52, 0x6b, 0x6e, 0x48, 0x52, 0x31, 0x51, 0x5c, 0x0a, 0x09, 0x73, 0x6b, 0x37, 0x6d, 0x42, 0x30, 0x50, 0x38, 0x30, 0x35, 0x65, 0x2b, 0x69, 0x65, 0x64, 0x64, 0x64, 0x4c, 0x62, 0x4d, 0x78, 0x41, 0x77, 0x6a, 0x6e, 0x56, 0x74, 0x63, 0x78, 0x76, 0x2f, 0x2b, 0x30, 0x72, 0x56, 0x34, 0x2f, 0x6b, 0x58, 0x6e, 0x2b, 0x73, 0x30, 0x36, 0x69, 0x58, 0x55, 0x37, 0x6f, 0x33, 0x35, 0x74, 0x30, 0x45, 0x63, 0x57, 0x42, 0x76, 0x6a, 0x48, 0x4c, 0x31, 0x32, 0x4c, 0x54, 0x33, 0x33, 0x6c, 0x61, 0x6e, 0x7a, 0x32, 0x5c, 0x0a, 0x09, 0x63, 0x31, 0x2f, 0x41, 0x34, 0x75, 0x4c, 0x43, 0x69, 0x67, 0x41, 0x51, 0x78, 0x71, 0x33, 0x6c, 0x33, 0x53, 0x68, 0x66, 0x41, 0x48, 0x71, 0x64, 0x51, 0x4c, 0x2b, 0x77, 0x77, 0x33, 0x78, 0x7a, 0x30, 0x67, 0x68, 0x77, 0x48, 0x37, 0x58, 0x41, 0x35, 0x35, 0x7a, 0x44, 0x32, 0x57, 0x63, 0x2f, 0x45, 0x75, 0x65, 0x63, 0x39, 0x58, 0x41, 0x38, 0x34, 0x64, 0x47, 0x50, 0x77, 0x42, 0x4d, 0x66, 0x63, 0x52, 0x72, 0x47, 0x2b, 0x39, 0x57, 0x62, 0x5c, 0x0a, 0x09, 0x70, 0x49, 0x38, 0x6d, 0x6c, 0x57, 0x66, 0x79, 0x54, 0x57, 0x30, 0x2f, 0x6e, 0x4d, 0x63, 0x69, 0x67, 0x44, 0x66, 0x41, 0x34, 0x64, 0x32, 0x41, 0x76, 0x2f, 0x58, 0x33, 0x66, 0x2f, 0x30, 0x4c, 0x51, 0x64, 0x69, 0x57, 0x59, 0x4d, 0x41, 0x2f, 0x45, 0x2f, 0x42, 0x6a, 0x41, 0x43, 0x34, 0x41, 0x38, 0x4d, 0x6a, 0x71, 0x62, 0x7a, 0x52, 0x5a, 0x4b, 0x46, 0x71, 0x33, 0x78, 0x38, 0x6f, 0x41, 0x41, 0x47, 0x46, 0x78, 0x4d, 0x4d, 0x54, 0x4e, 0x5c, 0x0a, 0x09, 0x39, 0x78, 0x37, 0x43, 0x72, 0x66, 0x63, 0x66, 0x78, 0x45, 0x31, 0x33, 0x33, 0x49, 0x65, 0x37, 0x48, 0x7a, 0x69, 0x49, 0x75, 0x2b, 0x2b, 0x37, 0x48, 0x33, 0x66, 0x64, 0x63, 0x78, 0x39, 0x75, 0x75, 0x66, 0x6b, 0x57, 0x7a, 0x4d, 0x33, 0x4f, 0x2b, 0x69, 0x6f, 0x6a, 0x6f, 0x70, 0x43, 0x2b, 0x4c, 0x68, 0x79, 0x79, 0x41, 0x55, 0x43, 0x53, 0x6c, 0x48, 0x65, 0x46, 0x7a, 0x4d, 0x4c, 0x4d, 0x54, 0x75, 0x42, 0x66, 0x73, 0x58, 0x33, 0x36, 0x5c, 0x0a, 0x09, 0x36, 0x61, 0x66, 0x6a, 0x31, 0x46, 0x4e, 0x50, 0x78, 0x72, 0x36, 0x54, 0x6a, 0x73, 0x65, 0x5a, 0x65, 0x30, 0x2f, 0x43, 0x6d, 0x61, 0x63, 0x65, 0x6a, 0x34, 0x63, 0x64, 0x76, 0x78, 0x31, 0x5a, 0x54, 0x70, 0x45, 0x6a, 0x51, 0x31, 0x42, 0x49, 0x6e, 0x48, 0x4a, 0x55, 0x78, 0x4e, 0x46, 0x31, 0x47, 0x36, 0x2f, 0x70, 0x6f, 0x67, 0x31, 0x47, 0x4c, 0x71, 0x5a, 0x34, 0x64, 0x61, 0x67, 0x38, 0x73, 0x72, 0x43, 0x4d, 0x36, 0x32, 0x36, 0x39, 0x5c, 0x0a, 0x09, 0x42, 0x39, 0x66, 0x63, 0x64, 0x41, 0x65, 0x2b, 0x66, 0x65, 0x75, 0x64, 0x75, 0x4f, 0x58, 0x32, 0x4f, 0x33, 0x44, 0x44, 0x74, 0x32, 0x2f, 0x45, 0x6f, 0x55, 0x4f, 0x48, 0x52, 0x41, 0x51, 0x58, 0x30, 0x64, 0x6c, 0x79, 0x32, 0x42, 0x58, 0x6b, 0x7a, 0x6b, 0x48, 0x42, 0x63, 0x6d, 0x51, 0x74, 0x36, 0x33, 0x72, 0x6b, 0x73, 0x72, 0x33, 0x6a, 0x54, 0x7a, 0x67, 0x42, 0x4a, 0x35, 0x39, 0x79, 0x45, 0x6b, 0x37, 0x63, 0x76, 0x51, 0x74, 0x37, 0x5c, 0x0a, 0x09, 0x64, 0x75, 0x37, 0x41, 0x33, 0x75, 0x4e, 0x33, 0x34, 0x66, 0x51, 0x54, 0x64, 0x32, 0x48, 0x2f, 0x43, 0x54, 0x75, 0x77, 0x50, 0x66, 0x7a, 0x2b, 0x34, 0x71, 0x68, 0x46, 0x50, 0x43, 0x45, 0x58, 0x50, 0x67, 0x57, 0x6f, 0x50, 0x32, 0x79, 0x51, 0x63, 0x41, 0x44, 0x6f, 0x43, 0x33, 0x44, 0x75, 0x38, 0x61, 0x47, 0x5a, 0x39, 0x66, 0x79, 0x70, 0x73, 0x4c, 0x56, 0x2f, 0x49, 0x78, 0x42, 0x2f, 0x6e, 0x4e, 0x48, 0x33, 0x39, 0x57, 0x77, 0x51, 0x5c, 0x0a, 0x09, 0x2f, 0x5a, 0x30, 0x6f, 0x4a, 0x46, 0x4b, 0x76, 0x4a, 0x70, 0x52, 0x73, 0x4f, 0x4f, 0x5a, 0x6b, 0x47, 0x58, 0x2b, 0x6c, 0x34, 0x4e, 0x6d, 0x46, 0x4a, 0x64, 0x78, 0x2f, 0x5a, 0x41, 0x47, 0x48, 0x35, 0x68, 0x5a, 0x78, 0x61, 0x47, 0x34, 0x42, 0x68, 0x32, 0x63, 0x58, 0x4d, 0x4c, 0x65, 0x34, 0x69, 0x50, 0x6d, 0x46, 0x4a, 0x53, 0x77, 0x73, 0x2b, 0x54, 0x66, 0x67, 0x7a, 0x43, 0x30, 0x73, 0x59, 0x6d, 0x46, 0x78, 0x43, 0x58, 0x4d, 0x4c, 0x5c, 0x0a, 0x09, 0x43, 0x31, 0x68, 0x65, 0x48, 0x6d, 0x4b, 0x32, 0x41, 0x67, 0x32, 0x41, 0x73, 0x4c, 0x43, 0x34, 0x69, 0x4b, 0x58, 0x42, 0x4d, 0x67, 0x68, 0x2b, 0x76, 0x6e, 0x39, 0x6f, 0x70, 0x74, 0x36, 0x6a, 0x73, 0x57, 0x58, 0x4c, 0x46, 0x6e, 0x53, 0x72, 0x7a, 0x55, 0x52, 0x45, 0x68, 0x4b, 0x31, 0x62, 0x4a, 0x6a, 0x30, 0x4c, 0x57, 0x59, 0x61, 0x74, 0x6b, 0x35, 0x50, 0x59, 0x4d, 0x6a, 0x47, 0x4f, 0x79, 0x59, 0x6c, 0x78, 0x54, 0x49, 0x36, 0x50, 0x5c, 0x0a, 0x09, 0x59, 0x57, 0x4a, 0x38, 0x44, 0x4a, 0x4e, 0x6a, 0x66, 0x55, 0x79, 0x4f, 0x39, 0x37, 0x46, 0x39, 0x61, 0x67, 0x76, 0x32, 0x62, 0x4e, 0x75, 0x4b, 0x48, 0x56, 0x76, 0x47, 0x73, 0x58, 0x74, 0x71, 0x41, 0x6d, 0x4f, 0x39, 0x6a, 0x68, 0x79, 0x48, 0x64, 0x57, 0x7a, 0x4a, 0x69, 0x35, 0x2b, 0x72, 0x68, 0x53, 0x46, 0x6c, 0x6f, 0x39, 0x76, 0x51, 0x35, 0x30, 0x33, 0x35, 0x42, 0x52, 0x6b, 0x61, 0x37, 0x57, 0x6b, 0x6a, 0x46, 0x39, 0x6b, 0x61, 0x5c, 0x0a, 0x09, 0x7a, 0x31, 0x42, 0x6b, 0x74, 0x6e, 0x4c, 0x76, 0x6f, 0x54, 0x6e, 0x63, 0x65, 0x33, 0x67, 0x57, 0x39, 0x38, 0x33, 0x4d, 0x34, 0x39, 0x36, 0x44, 0x4d, 0x35, 0x69, 0x64, 0x58, 0x38, 0x54, 0x63, 0x34, 0x68, 0x4c, 0x6d, 0x35, 0x68, 0x63, 0x78, 0x75, 0x37, 0x69, 0x49, 0x75, 0x64, 0x6c, 0x35, 0x7a, 0x4d, 0x37, 0x4e, 0x59, 0x62, 0x62, 0x4b, 0x35, 0x67, 0x62, 0x4c, 0x79, 0x31, 0x68, 0x59, 0x58, 0x50, 0x49, 0x74, 0x4b, 0x62, 0x6c, 0x76, 0x5c, 0x0a, 0x09, 0x6d, 0x39, 0x34, 0x57, 0x58, 0x7a, 0x49, 0x79, 0x50, 0x6a, 0x36, 0x47, 0x58, 0x74, 0x66, 0x66, 0x68, 0x75, 0x76, 0x32, 0x65, 0x68, 0x6a, 0x72, 0x39, 0x37, 0x46, 0x6c, 0x66, 0x42, 0x7a, 0x6a, 0x6b, 0x32, 0x50, 0x59, 0x4f, 0x6a, 0x36, 0x4f, 0x69, 0x66, 0x45, 0x2b, 0x4a, 0x76, 0x6f, 0x39, 0x72, 0x34, 0x75, 0x78, 0x48, 0x71, 0x61, 0x32, 0x54, 0x47, 0x44, 0x37, 0x6c, 0x6e, 0x48, 0x73, 0x6e, 0x4a, 0x72, 0x45, 0x63, 0x56, 0x76, 0x47, 0x5c, 0x0a, 0x09, 0x61, 0x39, 0x6b, 0x48, 0x6e, 0x67, 0x55, 0x77, 0x73, 0x6d, 0x79, 0x55, 0x6b, 0x35, 0x61, 0x54, 0x4d, 0x36, 0x36, 0x74, 0x42, 0x42, 0x71, 0x65, 0x76, 0x67, 0x33, 0x67, 0x6a, 0x50, 0x56, 0x2b, 0x48, 0x79, 0x43, 0x77, 0x44, 0x67, 0x44, 0x41, 0x71, 0x66, 0x70, 0x64, 0x77, 0x4a, 0x38, 0x45, 0x38, 0x4f, 0x63, 0x41, 0x6a, 0x49, 0x69, 0x6c, 0x55, 0x6c, 0x73, 0x39, 0x58, 0x37, 0x58, 0x71, 0x48, 0x45, 0x33, 0x4b, 0x4e, 0x51, 0x49, 0x59, 0x5c, 0x0a, 0x09, 0x6d, 0x76, 0x73, 0x30, 0x2b, 0x6f, 0x75, 0x73, 0x4e, 0x44, 0x67, 0x6c, 0x70, 0x34, 0x5a, 0x46, 0x4f, 0x65, 0x6b, 0x34, 0x49, 0x77, 0x43, 0x75, 0x61, 0x65, 0x70, 0x6a, 0x4f, 0x72, 0x49, 0x31, 0x31, 0x57, 0x67, 0x79, 0x4f, 0x73, 0x4f, 0x68, 0x78, 0x64, 0x69, 0x4d, 0x61, 0x31, 0x59, 0x32, 0x4d, 0x56, 0x4c, 0x2b, 0x7a, 0x42, 0x6d, 0x61, 0x6a, 0x46, 0x2b, 0x74, 0x49, 0x30, 0x67, 0x41, 0x55, 0x58, 0x77, 0x6c, 0x55, 0x30, 0x4c, 0x47, 0x5c, 0x0a, 0x09, 0x6f, 0x78, 0x6b, 0x63, 0x72, 0x4d, 0x7a, 0x47, 0x34, 0x4f, 0x6b, 0x6f, 0x31, 0x6a, 0x64, 0x45, 0x50, 0x35, 0x78, 0x45, 0x47, 0x64, 0x6a, 0x6a, 0x46, 0x54, 0x70, 0x6e, 0x59, 0x30, 0x7a, 0x6c, 0x63, 0x67, 0x68, 0x77, 0x32, 0x77, 0x46, 0x67, 0x76, 0x58, 0x38, 0x6e, 0x63, 0x48, 0x31, 0x2f, 0x47, 0x59, 0x68, 0x55, 0x6e, 0x30, 0x45, 0x49, 0x32, 0x73, 0x6d, 0x42, 0x57, 0x6c, 0x42, 0x4f, 0x66, 0x59, 0x39, 0x31, 0x72, 0x43, 0x6a, 0x46, 0x5c, 0x0a, 0x09, 0x79, 0x6c, 0x72, 0x47, 0x71, 0x64, 0x74, 0x4d, 0x6a, 0x67, 0x32, 0x44, 0x30, 0x50, 0x33, 0x78, 0x64, 0x6e, 0x6c, 0x5a, 0x67, 0x6e, 0x47, 0x4f, 0x55, 0x76, 0x42, 0x77, 0x31, 0x58, 0x2b, 0x4f, 0x6a, 0x34, 0x6c, 0x64, 0x4a, 0x45, 0x6a, 0x44, 0x34, 0x6d, 0x33, 0x7a, 0x66, 0x6f, 0x56, 0x42, 0x68, 0x6e, 0x34, 0x4a, 0x6f, 0x6b, 0x46, 0x74, 0x74, 0x43, 0x34, 0x34, 0x51, 0x58, 0x43, 0x53, 0x68, 0x6f, 0x6a, 0x6d, 0x77, 0x6a, 0x58, 0x6c, 0x5c, 0x0a, 0x09, 0x58, 0x46, 0x61, 0x45, 0x71, 0x77, 0x65, 0x6c, 0x2b, 0x4e, 0x46, 0x6c, 0x64, 0x4c, 0x75, 0x73, 0x6e, 0x53, 0x41, 0x54, 0x41, 0x64, 0x43, 0x36, 0x50, 0x72, 0x63, 0x56, 0x4a, 0x65, 0x4d, 0x77, 0x6c, 0x73, 0x67, 0x72, 0x30, 0x72, 0x5a, 0x69, 0x66, 0x53, 0x4f, 0x53, 0x77, 0x36, 0x56, 0x74, 0x43, 0x48, 0x6c, 0x43, 0x6e, 0x68, 0x63, 0x41, 0x47, 0x4d, 0x5a, 0x4c, 0x36, 0x58, 0x68, 0x72, 0x5a, 0x75, 0x72, 0x78, 0x38, 0x2f, 0x6f, 0x31, 0x5c, 0x0a, 0x09, 0x48, 0x39, 0x73, 0x41, 0x64, 0x49, 0x33, 0x4b, 0x61, 0x30, 0x34, 0x62, 0x38, 0x4e, 0x4e, 0x67, 0x33, 0x42, 0x6c, 0x47, 0x52, 0x43, 0x4e, 0x53, 0x43, 0x6d, 0x38, 0x4b, 0x61, 0x46, 0x45, 0x4a, 0x6b, 0x45, 0x49, 0x64, 0x6c, 0x58, 0x6f, 0x46, 0x4a, 0x34, 0x4f, 0x54, 0x39, 0x65, 0x4a, 0x35, 0x6b, 0x75, 0x31, 0x6f, 0x67, 0x30, 0x77, 0x56, 0x6d, 0x41, 0x4b, 0x56, 0x61, 0x4a, 0x65, 0x55, 0x59, 0x62, 0x48, 0x50, 0x34, 0x46, 0x69, 0x78, 0x5c, 0x0a, 0x09, 0x58, 0x7a, 0x62, 0x6d, 0x36, 0x4b, 0x51, 0x6a, 0x6f, 0x71, 0x6a, 0x6c, 0x66, 0x4d, 0x5a, 0x68, 0x37, 0x44, 0x50, 0x4b, 0x52, 0x50, 0x47, 0x6b, 0x51, 0x5a, 0x6a, 0x4c, 0x4e, 0x59, 0x34, 0x66, 0x54, 0x45, 0x62, 0x38, 0x55, 0x34, 0x31, 0x58, 0x38, 0x41, 0x63, 0x6b, 0x44, 0x68, 0x66, 0x59, 0x31, 0x69, 0x41, 0x57, 0x4c, 0x76, 0x4c, 0x32, 0x65, 0x41, 0x53, 0x4e, 0x49, 0x4f, 0x54, 0x53, 0x74, 0x6f, 0x6e, 0x58, 0x34, 0x55, 0x77, 0x70, 0x5c, 0x0a, 0x09, 0x4a, 0x30, 0x36, 0x79, 0x48, 0x53, 0x67, 0x52, 0x57, 0x76, 0x62, 0x4a, 0x36, 0x6f, 0x63, 0x79, 0x5a, 0x69, 0x42, 0x53, 0x64, 0x54, 0x69, 0x49, 0x52, 0x46, 0x42, 0x53, 0x31, 0x32, 0x73, 0x66, 0x32, 0x4a, 0x41, 0x66, 0x43, 0x74, 0x32, 0x6f, 0x48, 0x77, 0x64, 0x4e, 0x55, 0x37, 0x64, 0x41, 0x53, 0x53, 0x6f, 0x63, 0x4c, 0x7a, 0x51, 0x59, 0x50, 0x4b, 0x76, 0x44, 0x6f, 0x34, 0x70, 0x49, 0x57, 0x31, 0x56, 0x45, 0x44, 0x63, 0x62, 0x76, 0x5c, 0x0a, 0x09, 0x64, 0x46, 0x6e, 0x56, 0x64, 0x32, 0x78, 0x62, 0x4b, 0x55, 0x34, 0x37, 0x4e, 0x51, 0x65, 0x50, 0x70, 0x67, 0x77, 0x69, 0x38, 0x4d, 0x4c, 0x37, 0x34, 0x56, 0x6b, 0x44, 0x35, 0x7a, 0x30, 0x36, 0x50, 0x36, 0x54, 0x52, 0x36, 0x43, 0x6c, 0x41, 0x4b, 0x42, 0x76, 0x6c, 0x78, 0x79, 0x4b, 0x5a, 0x48, 0x6f, 0x38, 0x6c, 0x4e, 0x2b, 0x32, 0x41, 0x31, 0x6c, 0x52, 0x44, 0x52, 0x48, 0x34, 0x6d, 0x4d, 0x33, 0x59, 0x71, 0x38, 0x69, 0x68, 0x6b, 0x5c, 0x0a, 0x09, 0x6f, 0x74, 0x72, 0x68, 0x73, 0x72, 0x41, 0x79, 0x4a, 0x64, 0x36, 0x67, 0x6e, 0x6d, 0x4a, 0x77, 0x2b, 0x66, 0x4d, 0x4d, 0x49, 0x4d, 0x71, 0x64, 0x38, 0x61, 0x39, 0x31, 0x4b, 0x51, 0x64, 0x63, 0x79, 0x35, 0x6f, 0x44, 0x50, 0x62, 0x63, 0x46, 0x79, 0x77, 0x61, 0x69, 0x72, 0x4a, 0x79, 0x73, 0x4a, 0x2b, 0x52, 0x75, 0x6a, 0x51, 0x56, 0x53, 0x70, 0x72, 0x79, 0x6f, 0x30, 0x4c, 0x63, 0x44, 0x67, 0x46, 0x33, 0x4e, 0x55, 0x57, 0x37, 0x74, 0x5c, 0x0a, 0x09, 0x61, 0x41, 0x4d, 0x41, 0x77, 0x45, 0x42, 0x4f, 0x4b, 0x31, 0x49, 0x6e, 0x43, 0x4f, 0x74, 0x67, 0x47, 0x7a, 0x77, 0x6a, 0x62, 0x58, 0x52, 0x42, 0x57, 0x61, 0x46, 0x65, 0x76, 0x4f, 0x5a, 0x59, 0x65, 0x2b, 0x48, 0x34, 0x4b, 0x50, 0x6b, 0x4f, 0x68, 0x7a, 0x72, 0x54, 0x34, 0x49, 0x46, 0x61, 0x54, 0x44, 0x39, 0x34, 0x74, 0x42, 0x72, 0x52, 0x5a, 0x70, 0x4b, 0x32, 0x4b, 0x32, 0x66, 0x69, 0x71, 0x58, 0x4d, 0x77, 0x50, 0x70, 0x35, 0x68, 0x5c, 0x0a, 0x09, 0x68, 0x44, 0x6f, 0x69, 0x61, 0x75, 0x76, 0x72, 0x44, 0x64, 0x30, 0x6e, 0x37, 0x59, 0x41, 0x42, 0x45, 0x77, 0x63, 0x6f, 0x48, 0x58, 0x57, 0x35, 0x67, 0x33, 0x44, 0x65, 0x6b, 0x62, 0x59, 0x6c, 0x6a, 0x6b, 0x66, 0x78, 0x35, 0x57, 0x53, 0x35, 0x6d, 0x47, 0x30, 0x78, 0x70, 0x67, 0x56, 0x51, 0x61, 0x54, 0x36, 0x63, 0x6c, 0x4c, 0x4f, 0x5a, 0x70, 0x53, 0x48, 0x74, 0x57, 0x2b, 0x43, 0x30, 0x6b, 0x7a, 0x72, 0x57, 0x66, 0x59, 0x58, 0x72, 0x5c, 0x0a, 0x09, 0x77, 0x71, 0x6b, 0x56, 0x79, 0x4e, 0x70, 0x7a, 0x66, 0x51, 0x56, 0x71, 0x34, 0x4d, 0x64, 0x37, 0x30, 0x71, 0x6e, 0x4a, 0x32, 0x74, 0x50, 0x47, 0x54, 0x77, 0x48, 0x4d, 0x4e, 0x4a, 0x45, 0x35, 0x71, 0x58, 0x41, 0x65, 0x70, 0x35, 0x53, 0x6a, 0x6b, 0x62, 0x67, 0x69, 0x4b, 0x38, 0x32, 0x57, 0x42, 0x64, 0x52, 0x35, 0x35, 0x6a, 0x68, 0x36, 0x6a, 0x6d, 0x32, 0x6d, 0x74, 0x5a, 0x54, 0x32, 0x49, 0x62, 0x49, 0x56, 0x58, 0x56, 0x62, 0x78, 0x5c, 0x0a, 0x09, 0x5a, 0x59, 0x31, 0x64, 0x7a, 0x37, 0x6d, 0x31, 0x51, 0x57, 0x6e, 0x65, 0x65, 0x66, 0x5a, 0x67, 0x6a, 0x56, 0x31, 0x45, 0x61, 0x78, 0x56, 0x46, 0x6f, 0x32, 0x7a, 0x54, 0x5a, 0x6d, 0x30, 0x6a, 0x5a, 0x41, 0x59, 0x72, 0x70, 0x67, 0x74, 0x49, 0x35, 0x53, 0x5a, 0x4f, 0x51, 0x6d, 0x55, 0x42, 0x41, 0x62, 0x53, 0x51, 0x79, 0x69, 0x4a, 0x38, 0x4f, 0x6c, 0x37, 0x66, 0x43, 0x42, 0x61, 0x38, 0x4c, 0x32, 0x73, 0x61, 0x45, 0x4f, 0x54, 0x53, 0x5c, 0x0a, 0x09, 0x35, 0x49, 0x42, 0x4f, 0x79, 0x56, 0x67, 0x37, 0x4a, 0x4b, 0x38, 0x54, 0x51, 0x63, 0x2b, 0x77, 0x4c, 0x77, 0x35, 0x34, 0x49, 0x53, 0x73, 0x52, 0x51, 0x4b, 0x31, 0x73, 0x6a, 0x4f, 0x76, 0x62, 0x6d, 0x6b, 0x71, 0x73, 0x77, 0x37, 0x50, 0x2f, 0x46, 0x6d, 0x31, 0x63, 0x42, 0x68, 0x43, 0x2f, 0x63, 0x67, 0x64, 0x53, 0x44, 0x71, 0x6b, 0x52, 0x4e, 0x35, 0x59, 0x33, 0x44, 0x44, 0x2f, 0x4a, 0x42, 0x6e, 0x69, 0x45, 0x4e, 0x76, 0x6f, 0x4c, 0x5c, 0x0a, 0x09, 0x6a, 0x68, 0x6b, 0x4d, 0x62, 0x73, 0x56, 0x30, 0x6c, 0x55, 0x63, 0x64, 0x41, 0x2b, 0x6e, 0x44, 0x30, 0x48, 0x69, 0x6b, 0x35, 0x6b, 0x43, 0x6c, 0x69, 0x54, 0x75, 0x4d, 0x6d, 0x63, 0x36, 0x6a, 0x72, 0x6b, 0x65, 0x4d, 0x56, 0x35, 0x33, 0x65, 0x57, 0x79, 0x54, 0x41, 0x69, 0x51, 0x4d, 0x6c, 0x62, 0x35, 0x63, 0x5a, 0x71, 0x41, 0x61, 0x76, 0x78, 0x47, 0x69, 0x5a, 0x7a, 0x4d, 0x53, 0x6e, 0x49, 0x51, 0x63, 0x4f, 0x7a, 0x4b, 0x4a, 0x39, 0x5c, 0x0a, 0x09, 0x42, 0x70, 0x7a, 0x63, 0x4f, 0x58, 0x53, 0x35, 0x30, 0x4c, 0x36, 0x59, 0x74, 0x6a, 0x54, 0x49, 0x6e, 0x6d, 0x63, 0x6f, 0x63, 0x5a, 0x78, 0x4b, 0x42, 0x6c, 0x6f, 0x75, 0x4d, 0x61, 0x4e, 0x67, 0x38, 0x6b, 0x69, 0x79, 0x47, 0x33, 0x36, 0x42, 0x79, 0x59, 0x70, 0x6e, 0x42, 0x54, 0x77, 0x44, 0x45, 0x48, 0x70, 0x69, 0x50, 0x4f, 0x69, 0x78, 0x43, 0x5a, 0x59, 0x53, 0x38, 0x4e, 0x71, 0x52, 0x4d, 0x72, 0x7a, 0x32, 0x74, 0x4d, 0x34, 0x41, 0x5c, 0x0a, 0x09, 0x6f, 0x46, 0x43, 0x66, 0x43, 0x78, 0x35, 0x6f, 0x6a, 0x74, 0x69, 0x6b, 0x46, 0x4b, 0x48, 0x6e, 0x74, 0x41, 0x47, 0x42, 0x74, 0x59, 0x45, 0x30, 0x39, 0x63, 0x76, 0x6e, 0x63, 0x6a, 0x70, 0x71, 0x36, 0x66, 0x71, 0x78, 0x50, 0x4c, 0x75, 0x6d, 0x41, 0x59, 0x46, 0x6e, 0x4b, 0x74, 0x45, 0x41, 0x46, 0x4c, 0x39, 0x57, 0x70, 0x6d, 0x50, 0x31, 0x5a, 0x55, 0x57, 0x6b, 0x4f, 0x41, 0x78, 0x6d, 0x38, 0x46, 0x62, 0x6d, 0x59, 0x37, 0x55, 0x62, 0x5c, 0x0a, 0x09, 0x2b, 0x47, 0x62, 0x73, 0x4a, 0x4f, 0x33, 0x46, 0x63, 0x55, 0x41, 0x61, 0x71, 0x70, 0x56, 0x68, 0x43, 0x44, 0x6b, 0x78, 0x35, 0x7a, 0x4d, 0x7a, 0x49, 0x6b, 0x4f, 0x33, 0x53, 0x66, 0x2b, 0x51, 0x4f, 0x75, 0x42, 0x39, 0x4b, 0x2f, 0x2b, 0x58, 0x37, 0x65, 0x69, 0x4c, 0x70, 0x41, 0x70, 0x71, 0x30, 0x67, 0x37, 0x48, 0x48, 0x5a, 0x4b, 0x6b, 0x6e, 0x48, 0x54, 0x51, 0x74, 0x36, 0x5a, 0x6c, 0x53, 0x52, 0x5a, 0x70, 0x38, 0x51, 0x67, 0x70, 0x5c, 0x0a, 0x09, 0x51, 0x35, 0x48, 0x64, 0x4a, 0x4f, 0x31, 0x74, 0x33, 0x34, 0x41, 0x6c, 0x67, 0x41, 0x31, 0x61, 0x42, 0x42, 0x52, 0x52, 0x7a, 0x48, 0x42, 0x4f, 0x67, 0x65, 0x78, 0x47, 0x76, 0x57, 0x67, 0x63, 0x77, 0x66, 0x43, 0x59, 0x51, 0x35, 0x67, 0x47, 0x36, 0x53, 0x41, 0x64, 0x52, 0x6a, 0x75, 0x52, 0x69, 0x68, 0x7a, 0x57, 0x33, 0x43, 0x2b, 0x32, 0x68, 0x62, 0x71, 0x4e, 0x5a, 0x47, 0x35, 0x76, 0x39, 0x4b, 0x6c, 0x54, 0x58, 0x64, 0x57, 0x45, 0x5c, 0x0a, 0x09, 0x62, 0x55, 0x44, 0x71, 0x65, 0x77, 0x49, 0x65, 0x54, 0x73, 0x6e, 0x48, 0x73, 0x54, 0x2b, 0x6f, 0x73, 0x52, 0x6b, 0x4e, 0x57, 0x38, 0x44, 0x44, 0x51, 0x54, 0x57, 0x43, 0x6e, 0x5a, 0x5a, 0x62, 0x77, 0x78, 0x68, 0x6a, 0x4a, 0x61, 0x54, 0x6c, 0x56, 0x35, 0x72, 0x32, 0x43, 0x4c, 0x6d, 0x7a, 0x76, 0x72, 0x6e, 0x73, 0x43, 0x49, 0x59, 0x74, 0x42, 0x42, 0x35, 0x56, 0x74, 0x72, 0x44, 0x53, 0x74, 0x45, 0x39, 0x63, 0x5a, 0x7a, 0x72, 0x55, 0x5c, 0x0a, 0x09, 0x77, 0x4b, 0x65, 0x72, 0x4a, 0x6e, 0x4a, 0x77, 0x61, 0x56, 0x6b, 0x74, 0x43, 0x32, 0x4c, 0x6e, 0x75, 0x65, 0x35, 0x46, 0x4e, 0x68, 0x5a, 0x70, 0x68, 0x77, 0x6e, 0x36, 0x61, 0x30, 0x77, 0x62, 0x41, 0x77, 0x43, 0x6d, 0x30, 0x43, 0x43, 0x64, 0x44, 0x51, 0x33, 0x43, 0x46, 0x6e, 0x4d, 0x73, 0x35, 0x66, 0x6a, 0x52, 0x38, 0x4b, 0x73, 0x36, 0x4f, 0x6c, 0x33, 0x6d, 0x68, 0x75, 0x52, 0x55, 0x6d, 0x31, 0x59, 0x30, 0x74, 0x4f, 0x61, 0x52, 0x5c, 0x0a, 0x09, 0x65, 0x69, 0x37, 0x6e, 0x47, 0x70, 0x54, 0x4e, 0x30, 0x32, 0x51, 0x78, 0x70, 0x32, 0x53, 0x52, 0x79, 0x71, 0x6d, 0x32, 0x64, 0x63, 0x71, 0x75, 0x35, 0x53, 0x49, 0x69, 0x69, 0x53, 0x61, 0x53, 0x39, 0x54, 0x69, 0x49, 0x78, 0x67, 0x79, 0x4b, 0x39, 0x78, 0x4d, 0x48, 0x78, 0x49, 0x7a, 0x66, 0x4b, 0x47, 0x4e, 0x46, 0x37, 0x69, 0x5a, 0x51, 0x34, 0x50, 0x33, 0x79, 0x39, 0x6a, 0x57, 0x77, 0x78, 0x33, 0x4a, 0x38, 0x54, 0x45, 0x79, 0x4f, 0x5c, 0x0a, 0x09, 0x44, 0x55, 0x6d, 0x48, 0x48, 0x43, 0x37, 0x76, 0x45, 0x7a, 0x4a, 0x71, 0x43, 0x36, 0x42, 0x6c, 0x6c, 0x55, 0x66, 0x50, 0x77, 0x52, 0x45, 0x7a, 0x4e, 0x36, 0x66, 0x4f, 0x63, 0x2f, 0x41, 0x51, 0x30, 0x31, 0x54, 0x44, 0x52, 0x71, 0x30, 0x70, 0x6b, 0x35, 0x42, 0x76, 0x67, 0x34, 0x31, 0x68, 0x55, 0x30, 0x77, 0x42, 0x6d, 0x4a, 0x43, 0x34, 0x34, 0x31, 0x6b, 0x49, 0x6e, 0x67, 0x67, 0x59, 0x68, 0x6d, 0x49, 0x67, 0x36, 0x34, 0x6a, 0x72, 0x5c, 0x0a, 0x09, 0x34, 0x62, 0x77, 0x32, 0x56, 0x43, 0x65, 0x2f, 0x38, 0x72, 0x62, 0x44, 0x5a, 0x36, 0x4f, 0x68, 0x4f, 0x48, 0x6c, 0x4f, 0x74, 0x4b, 0x47, 0x63, 0x4c, 0x36, 0x34, 0x72, 0x49, 0x44, 0x30, 0x57, 0x55, 0x55, 0x2b, 0x50, 0x6b, 0x62, 0x4f, 0x71, 0x51, 0x63, 0x43, 0x4b, 0x63, 0x67, 0x77, 0x77, 0x7a, 0x4f, 0x6b, 0x4c, 0x62, 0x38, 0x63, 0x5a, 0x35, 0x78, 0x56, 0x6f, 0x38, 0x6a, 0x47, 0x46, 0x4b, 0x45, 0x75, 0x42, 0x62, 0x77, 0x36, 0x32, 0x5c, 0x0a, 0x09, 0x6a, 0x4e, 0x65, 0x6d, 0x4b, 0x51, 0x73, 0x66, 0x54, 0x35, 0x4c, 0x70, 0x36, 0x59, 0x34, 0x67, 0x5a, 0x53, 0x6c, 0x30, 0x79, 0x68, 0x72, 0x6a, 0x6d, 0x59, 0x6b, 0x31, 0x42, 0x34, 0x63, 0x71, 0x6e, 0x2b, 0x67, 0x6c, 0x5a, 0x53, 0x63, 0x42, 0x63, 0x57, 0x73, 0x51, 0x57, 0x76, 0x39, 0x36, 0x4b, 0x68, 0x64, 0x45, 0x30, 0x42, 0x54, 0x63, 0x6d, 0x73, 0x43, 0x70, 0x4c, 0x6e, 0x39, 0x63, 0x34, 0x35, 0x52, 0x75, 0x44, 0x57, 0x6c, 0x64, 0x5c, 0x0a, 0x09, 0x66, 0x68, 0x35, 0x63, 0x6b, 0x68, 0x73, 0x4b, 0x35, 0x77, 0x64, 0x53, 0x6f, 0x53, 0x56, 0x52, 0x52, 0x31, 0x39, 0x48, 0x37, 0x53, 0x41, 0x6a, 0x31, 0x77, 0x30, 0x67, 0x46, 0x52, 0x4d, 0x56, 0x4c, 0x62, 0x7a, 0x4d, 0x42, 0x68, 0x43, 0x72, 0x66, 0x38, 0x66, 0x71, 0x63, 0x73, 0x63, 0x57, 0x76, 0x44, 0x44, 0x6a, 0x31, 0x4f, 0x32, 0x4a, 0x63, 0x38, 0x46, 0x6f, 0x56, 0x48, 0x38, 0x38, 0x43, 0x78, 0x44, 0x76, 0x42, 0x56, 0x4f, 0x6b, 0x5c, 0x0a, 0x09, 0x78, 0x35, 0x35, 0x6b, 0x46, 0x77, 0x59, 0x50, 0x33, 0x45, 0x38, 0x46, 0x2b, 0x50, 0x4a, 0x2b, 0x32, 0x58, 0x6a, 0x6a, 0x64, 0x52, 0x4b, 0x6e, 0x54, 0x56, 0x6b, 0x4c, 0x4a, 0x7a, 0x4c, 0x47, 0x4a, 0x4d, 0x42, 0x4d, 0x44, 0x34, 0x61, 0x4e, 0x4f, 0x59, 0x52, 0x79, 0x70, 0x36, 0x2b, 0x6a, 0x6c, 0x6c, 0x65, 0x69, 0x4a, 0x32, 0x4d, 0x73, 0x59, 0x72, 0x6f, 0x45, 0x6f, 0x33, 0x2b, 0x6c, 0x6c, 0x31, 0x41, 0x32, 0x6d, 0x61, 0x61, 0x4a, 0x5c, 0x0a, 0x09, 0x4c, 0x7a, 0x44, 0x31, 0x78, 0x6a, 0x50, 0x50, 0x61, 0x41, 0x75, 0x68, 0x69, 0x36, 0x42, 0x4c, 0x4a, 0x51, 0x50, 0x6e, 0x5a, 0x46, 0x6d, 0x48, 0x37, 0x56, 0x6f, 0x71, 0x36, 0x30, 0x45, 0x62, 0x41, 0x41, 0x41, 0x30, 0x4b, 0x35, 0x53, 0x69, 0x6a, 0x5a, 0x69, 0x66, 0x74, 0x2b, 0x62, 0x6a, 0x34, 0x50, 0x57, 0x55, 0x73, 0x65, 0x74, 0x79, 0x54, 0x63, 0x66, 0x63, 0x4f, 0x49, 0x51, 0x6a, 0x4e, 0x2f, 0x53, 0x6e, 0x76, 0x7a, 0x64, 0x47, 0x5c, 0x0a, 0x09, 0x43, 0x71, 0x4f, 0x65, 0x64, 0x67, 0x77, 0x65, 0x74, 0x55, 0x52, 0x6b, 0x59, 0x32, 0x58, 0x45, 0x4d, 0x61, 0x75, 0x76, 0x73, 0x77, 0x38, 0x64, 0x42, 0x54, 0x6e, 0x41, 0x43, 0x58, 0x42, 0x6c, 0x52, 0x67, 0x6a, 0x56, 0x6a, 0x67, 0x6c, 0x34, 0x51, 0x47, 0x4b, 0x34, 0x54, 0x62, 0x4b, 0x77, 0x31, 0x6a, 0x70, 0x45, 0x47, 0x5a, 0x61, 0x5a, 0x6d, 0x46, 0x45, 0x64, 0x53, 0x70, 0x38, 0x61, 0x74, 0x48, 0x54, 0x37, 0x72, 0x4b, 0x34, 0x46, 0x5c, 0x0a, 0x09, 0x58, 0x73, 0x6c, 0x30, 0x69, 0x34, 0x31, 0x48, 0x41, 0x42, 0x70, 0x33, 0x57, 0x4d, 0x55, 0x7a, 0x7a, 0x33, 0x70, 0x41, 0x69, 0x6c, 0x39, 0x4b, 0x65, 0x54, 0x66, 0x37, 0x55, 0x2f, 0x4a, 0x77, 0x71, 0x6e, 0x2b, 0x6d, 0x74, 0x71, 0x72, 0x39, 0x48, 0x66, 0x62, 0x55, 0x62, 0x6d, 0x31, 0x70, 0x59, 0x2b, 0x34, 0x43, 0x56, 0x43, 0x43, 0x66, 0x52, 0x69, 0x42, 0x75, 0x2f, 0x4c, 0x77, 0x61, 0x53, 0x59, 0x50, 0x51, 0x78, 0x69, 0x30, 0x63, 0x5c, 0x0a, 0x09, 0x77, 0x39, 0x56, 0x47, 0x77, 0x39, 0x4e, 0x46, 0x33, 0x56, 0x37, 0x67, 0x70, 0x39, 0x48, 0x4a, 0x6c, 0x66, 0x45, 0x4b, 0x78, 0x70, 0x46, 0x65, 0x34, 0x38, 0x72, 0x56, 0x35, 0x2b, 0x50, 0x59, 0x47, 0x75, 0x70, 0x47, 0x30, 0x5a, 0x41, 0x79, 0x46, 0x4d, 0x34, 0x54, 0x42, 0x79, 0x2b, 0x53, 0x4d, 0x74, 0x47, 0x67, 0x43, 0x63, 0x56, 0x37, 0x37, 0x46, 0x62, 0x31, 0x36, 0x64, 0x68, 0x46, 0x34, 0x52, 0x68, 0x4b, 0x43, 0x5a, 0x61, 0x4d, 0x5c, 0x0a, 0x09, 0x64, 0x4e, 0x75, 0x79, 0x55, 0x61, 0x59, 0x44, 0x53, 0x46, 0x35, 0x35, 0x65, 0x39, 0x79, 0x35, 0x2b, 0x54, 0x52, 0x45, 0x52, 0x32, 0x44, 0x6c, 0x78, 0x79, 0x5a, 0x6f, 0x4f, 0x39, 0x56, 0x75, 0x4d, 0x72, 0x33, 0x51, 0x51, 0x44, 0x61, 0x43, 0x70, 0x38, 0x69, 0x62, 0x30, 0x61, 0x2b, 0x65, 0x56, 0x67, 0x56, 0x67, 0x62, 0x6e, 0x4a, 0x65, 0x61, 0x2f, 0x71, 0x52, 0x54, 0x4d, 0x30, 0x41, 0x67, 0x48, 0x61, 0x73, 0x47, 0x46, 0x6a, 0x57, 0x5c, 0x0a, 0x09, 0x67, 0x44, 0x5a, 0x6d, 0x44, 0x51, 0x42, 0x49, 0x6a, 0x5a, 0x79, 0x66, 0x35, 0x38, 0x61, 0x65, 0x54, 0x41, 0x2f, 0x59, 0x73, 0x61, 0x2f, 0x41, 0x4b, 0x30, 0x4d, 0x34, 0x42, 0x37, 0x48, 0x76, 0x47, 0x67, 0x78, 0x30, 0x4e, 0x45, 0x31, 0x59, 0x56, 0x55, 0x59, 0x56, 0x69, 0x7a, 0x61, 0x42, 0x52, 0x35, 0x50, 0x6a, 0x57, 0x71, 0x51, 0x41, 0x4c, 0x62, 0x52, 0x72, 0x31, 0x59, 0x30, 0x47, 0x62, 0x6b, 0x52, 0x52, 0x43, 0x30, 0x68, 0x34, 0x5c, 0x0a, 0x09, 0x48, 0x38, 0x5a, 0x68, 0x57, 0x70, 0x36, 0x44, 0x71, 0x4d, 0x6f, 0x55, 0x64, 0x48, 0x6c, 0x75, 0x75, 0x4a, 0x77, 0x2f, 0x37, 0x58, 0x67, 0x63, 0x6a, 0x41, 0x52, 0x59, 0x75, 0x4c, 0x53, 0x4e, 0x42, 0x4d, 0x51, 0x74, 0x5a, 0x2b, 0x4a, 0x39, 0x42, 0x52, 0x6d, 0x4d, 0x41, 0x43, 0x55, 0x4e, 0x47, 0x4c, 0x79, 0x2f, 0x42, 0x49, 0x53, 0x4e, 0x64, 0x6f, 0x54, 0x39, 0x71, 0x43, 0x49, 0x61, 0x64, 0x42, 0x57, 0x4c, 0x63, 0x69, 0x78, 0x41, 0x5c, 0x0a, 0x09, 0x59, 0x67, 0x50, 0x4e, 0x31, 0x37, 0x62, 0x44, 0x72, 0x63, 0x39, 0x50, 0x67, 0x6e, 0x50, 0x61, 0x69, 0x4a, 0x32, 0x41, 0x38, 0x2b, 0x4b, 0x72, 0x6d, 0x48, 0x74, 0x43, 0x47, 0x54, 0x73, 0x37, 0x46, 0x38, 0x73, 0x71, 0x67, 0x7a, 0x49, 0x58, 0x74, 0x70, 0x41, 0x61, 0x65, 0x6b, 0x44, 0x70, 0x42, 0x48, 0x67, 0x61, 0x44, 0x44, 0x36, 0x5a, 0x45, 0x75, 0x68, 0x50, 0x78, 0x71, 0x75, 0x49, 0x58, 0x69, 0x4d, 0x63, 0x71, 0x44, 0x46, 0x4e, 0x5c, 0x0a, 0x09, 0x68, 0x67, 0x51, 0x33, 0x71, 0x31, 0x35, 0x6a, 0x6d, 0x37, 0x77, 0x78, 0x4a, 0x2b, 0x58, 0x48, 0x54, 0x73, 0x65, 0x79, 0x56, 0x76, 0x6f, 0x66, 0x49, 0x78, 0x75, 0x37, 0x5a, 0x67, 0x49, 0x4f, 0x6a, 0x4c, 0x61, 0x56, 0x51, 0x2b, 0x74, 0x30, 0x6e, 0x59, 0x39, 0x4c, 0x4f, 0x4a, 0x55, 0x47, 0x62, 0x68, 0x68, 0x6a, 0x4e, 0x50, 0x51, 0x62, 0x39, 0x4a, 0x2f, 0x49, 0x56, 0x59, 0x4f, 0x49, 0x34, 0x74, 0x2f, 0x53, 0x75, 0x38, 0x57, 0x2f, 0x5c, 0x0a, 0x09, 0x36, 0x45, 0x76, 0x4a, 0x6d, 0x64, 0x74, 0x71, 0x46, 0x42, 0x66, 0x50, 0x58, 0x6b, 0x4c, 0x42, 0x4a, 0x6a, 0x32, 0x4d, 0x41, 0x47, 0x7a, 0x6e, 0x2b, 0x69, 0x42, 0x61, 0x39, 0x79, 0x63, 0x43, 0x31, 0x78, 0x63, 0x41, 0x66, 0x4b, 0x51, 0x62, 0x78, 0x4f, 0x39, 0x61, 0x59, 0x53, 0x49, 0x71, 0x73, 0x50, 0x4f, 0x78, 0x76, 0x69, 0x6f, 0x54, 0x46, 0x42, 0x44, 0x62, 0x63, 0x72, 0x61, 0x42, 0x36, 0x62, 0x6d, 0x69, 0x6a, 0x6b, 0x70, 0x4a, 0x5c, 0x0a, 0x09, 0x32, 0x2b, 0x70, 0x37, 0x34, 0x49, 0x55, 0x44, 0x6b, 0x49, 0x35, 0x79, 0x6f, 0x59, 0x77, 0x59, 0x72, 0x48, 0x4a, 0x71, 0x66, 0x59, 0x33, 0x4c, 0x49, 0x59, 0x78, 0x46, 0x52, 0x35, 0x30, 0x6d, 0x6f, 0x34, 0x6c, 0x70, 0x4a, 0x77, 0x63, 0x32, 0x4e, 0x65, 0x35, 0x45, 0x46, 0x73, 0x47, 0x41, 0x56, 0x65, 0x51, 0x6a, 0x56, 0x55, 0x2b, 0x33, 0x77, 0x38, 0x76, 0x78, 0x39, 0x6e, 0x53, 0x47, 0x46, 0x76, 0x6c, 0x69, 0x30, 0x56, 0x57, 0x6e, 0x5c, 0x0a, 0x09, 0x78, 0x35, 0x5a, 0x7a, 0x57, 0x56, 0x6c, 0x47, 0x77, 0x6a, 0x4e, 0x6e, 0x54, 0x76, 0x48, 0x51, 0x5a, 0x43, 0x4f, 0x69, 0x54, 0x64, 0x32, 0x75, 0x71, 0x38, 0x65, 0x64, 0x5a, 0x4a, 0x6b, 0x4b, 0x47, 0x49, 0x4f, 0x63, 0x2b, 0x54, 0x6d, 0x77, 0x63, 0x35, 0x77, 0x34, 0x6b, 0x4f, 0x6f, 0x73, 0x30, 0x77, 0x52, 0x79, 0x59, 0x66, 0x4e, 0x54, 0x61, 0x59, 0x4e, 0x72, 0x53, 0x2b, 0x75, 0x66, 0x41, 0x54, 0x68, 0x33, 0x52, 0x45, 0x62, 0x39, 0x5c, 0x0a, 0x09, 0x52, 0x41, 0x68, 0x41, 0x34, 0x68, 0x77, 0x73, 0x73, 0x6f, 0x6a, 0x55, 0x53, 0x30, 0x55, 0x44, 0x78, 0x2b, 0x72, 0x71, 0x43, 0x4b, 0x47, 0x56, 0x6c, 0x6b, 0x51, 0x72, 0x31, 0x50, 0x55, 0x63, 0x71, 0x37, 0x66, 0x79, 0x65, 0x47, 0x72, 0x2b, 0x59, 0x2f, 0x31, 0x67, 0x42, 0x4f, 0x46, 0x50, 0x52, 0x54, 0x4a, 0x68, 0x55, 0x49, 0x78, 0x33, 0x41, 0x55, 0x70, 0x38, 0x7a, 0x4d, 0x6f, 0x4a, 0x74, 0x43, 0x4f, 0x69, 0x34, 0x54, 0x76, 0x6e, 0x5c, 0x0a, 0x09, 0x4c, 0x33, 0x5a, 0x43, 0x7a, 0x4c, 0x41, 0x4e, 0x51, 0x34, 0x34, 0x79, 0x55, 0x61, 0x43, 0x6a, 0x77, 0x55, 0x54, 0x4c, 0x54, 0x71, 0x54, 0x67, 0x66, 0x47, 0x77, 0x47, 0x65, 0x49, 0x6d, 0x49, 0x61, 0x52, 0x43, 0x66, 0x6a, 0x69, 0x52, 0x41, 0x51, 0x51, 0x33, 0x6a, 0x5a, 0x76, 0x78, 0x5a, 0x55, 0x37, 0x4f, 0x45, 0x4c, 0x36, 0x34, 0x62, 0x59, 0x33, 0x7a, 0x63, 0x4a, 0x76, 0x55, 0x34, 0x72, 0x53, 0x44, 0x52, 0x6c, 0x4b, 0x48, 0x70, 0x5c, 0x0a, 0x09, 0x63, 0x33, 0x72, 0x36, 0x4a, 0x4f, 0x31, 0x67, 0x71, 0x79, 0x57, 0x4f, 0x74, 0x61, 0x54, 0x31, 0x42, 0x77, 0x43, 0x69, 0x49, 0x6b, 0x33, 0x46, 0x74, 0x4f, 0x4d, 0x62, 0x54, 0x68, 0x6b, 0x6a, 0x53, 0x39, 0x4a, 0x65, 0x72, 0x59, 0x7a, 0x6f, 0x61, 0x30, 0x59, 0x45, 0x69, 0x46, 0x2b, 0x64, 0x62, 0x61, 0x68, 0x4e, 0x63, 0x7a, 0x37, 0x42, 0x46, 0x2b, 0x2f, 0x54, 0x55, 0x43, 0x4b, 0x2f, 0x6c, 0x6a, 0x69, 0x59, 0x59, 0x61, 0x41, 0x36, 0x5c, 0x0a, 0x09, 0x62, 0x62, 0x59, 0x69, 0x55, 0x65, 0x4b, 0x6b, 0x4b, 0x6e, 0x72, 0x7a, 0x38, 0x68, 0x47, 0x4d, 0x51, 0x6a, 0x6b, 0x4e, 0x63, 0x47, 0x70, 0x38, 0x53, 0x63, 0x6f, 0x4c, 0x31, 0x71, 0x63, 0x46, 0x66, 0x69, 0x73, 0x41, 0x59, 0x71, 0x7a, 0x72, 0x32, 0x4a, 0x43, 0x4a, 0x73, 0x61, 0x34, 0x69, 0x59, 0x57, 0x4e, 0x6d, 0x77, 0x35, 0x31, 0x66, 0x79, 0x55, 0x37, 0x55, 0x59, 0x57, 0x50, 0x56, 0x6d, 0x52, 0x77, 0x72, 0x49, 0x6a, 0x36, 0x62, 0x5c, 0x0a, 0x09, 0x5a, 0x4a, 0x4a, 0x6b, 0x68, 0x4c, 0x79, 0x62, 0x45, 0x57, 0x6a, 0x46, 0x78, 0x38, 0x7a, 0x50, 0x78, 0x58, 0x70, 0x4f, 0x6c, 0x72, 0x4d, 0x79, 0x6c, 0x2f, 0x72, 0x38, 0x74, 0x75, 0x61, 0x4f, 0x31, 0x6f, 0x62, 0x57, 0x2b, 0x59, 0x31, 0x41, 0x42, 0x41, 0x43, 0x48, 0x45, 0x6b, 0x4e, 0x76, 0x69, 0x6b, 0x54, 0x68, 0x4d, 0x7a, 0x71, 0x34, 0x5a, 0x59, 0x41, 0x4e, 0x55, 0x53, 0x46, 0x65, 0x43, 0x2f, 0x32, 0x53, 0x4b, 0x43, 0x37, 0x36, 0x5c, 0x0a, 0x09, 0x34, 0x46, 0x6d, 0x46, 0x6e, 0x6a, 0x4e, 0x79, 0x5a, 0x78, 0x67, 0x31, 0x44, 0x39, 0x62, 0x58, 0x74, 0x4a, 0x47, 0x76, 0x5a, 0x45, 0x51, 0x6d, 0x61, 0x52, 0x43, 0x6f, 0x6d, 0x4e, 0x56, 0x74, 0x36, 0x55, 0x67, 0x56, 0x4d, 0x67, 0x79, 0x72, 0x79, 0x77, 0x43, 0x69, 0x53, 0x62, 0x62, 0x56, 0x59, 0x4d, 0x44, 0x57, 0x57, 0x4b, 0x76, 0x6d, 0x61, 0x38, 0x66, 0x54, 0x35, 0x58, 0x54, 0x32, 0x6f, 0x2f, 0x6a, 0x55, 0x57, 0x56, 0x4f, 0x55, 0x5c, 0x0a, 0x09, 0x76, 0x33, 0x49, 0x57, 0x69, 0x33, 0x38, 0x39, 0x56, 0x64, 0x48, 0x70, 0x74, 0x67, 0x6b, 0x75, 0x4b, 0x6f, 0x43, 0x4d, 0x42, 0x42, 0x34, 0x32, 0x68, 0x4b, 0x5a, 0x72, 0x75, 0x6b, 0x43, 0x59, 0x35, 0x76, 0x42, 0x41, 0x45, 0x2f, 0x58, 0x52, 0x6f, 0x41, 0x65, 0x37, 0x33, 0x66, 0x2f, 0x6f, 0x47, 0x59, 0x41, 0x44, 0x41, 0x50, 0x57, 0x4c, 0x48, 0x70, 0x41, 0x4f, 0x6d, 0x4b, 0x52, 0x6b, 0x59, 0x45, 0x37, 0x4c, 0x49, 0x36, 0x57, 0x46, 0x5c, 0x0a, 0x09, 0x31, 0x46, 0x43, 0x52, 0x56, 0x42, 0x6d, 0x79, 0x52, 0x75, 0x41, 0x6d, 0x51, 0x33, 0x4f, 0x36, 0x4c, 0x33, 0x55, 0x78, 0x4d, 0x52, 0x62, 0x56, 0x4a, 0x71, 0x63, 0x59, 0x6a, 0x64, 0x56, 0x6e, 0x59, 0x38, 0x52, 0x69, 0x2f, 0x54, 0x5a, 0x46, 0x6f, 0x53, 0x52, 0x79, 0x4f, 0x2f, 0x61, 0x6e, 0x73, 0x78, 0x50, 0x49, 0x64, 0x6b, 0x6a, 0x58, 0x35, 0x32, 0x55, 0x61, 0x67, 0x4d, 0x7a, 0x71, 0x4f, 0x7a, 0x69, 0x34, 0x54, 0x6d, 0x4d, 0x31, 0x5c, 0x0a, 0x09, 0x62, 0x79, 0x6f, 0x34, 0x31, 0x6d, 0x32, 0x51, 0x4c, 0x43, 0x50, 0x47, 0x61, 0x79, 0x68, 0x45, 0x70, 0x2f, 0x56, 0x38, 0x71, 0x74, 0x4b, 0x49, 0x72, 0x59, 0x36, 0x31, 0x47, 0x2b, 0x53, 0x71, 0x78, 0x6d, 0x53, 0x42, 0x61, 0x52, 0x79, 0x66, 0x64, 0x62, 0x37, 0x68, 0x6e, 0x43, 0x56, 0x72, 0x66, 0x63, 0x30, 0x71, 0x4c, 0x77, 0x46, 0x72, 0x45, 0x36, 0x77, 0x42, 0x77, 0x42, 0x33, 0x78, 0x48, 0x30, 0x41, 0x30, 0x49, 0x42, 0x47, 0x52, 0x5c, 0x0a, 0x09, 0x64, 0x42, 0x62, 0x41, 0x42, 0x4b, 0x75, 0x64, 0x50, 0x52, 0x54, 0x58, 0x44, 0x73, 0x54, 0x2f, 0x41, 0x42, 0x59, 0x68, 0x57, 0x55, 0x56, 0x7a, 0x48, 0x73, 0x6c, 0x5a, 0x4c, 0x54, 0x62, 0x5a, 0x31, 0x77, 0x41, 0x41, 0x49, 0x41, 0x42, 0x4a, 0x52, 0x45, 0x46, 0x55, 0x73, 0x42, 0x54, 0x4f, 0x2b, 0x7a, 0x57, 0x4d, 0x53, 0x47, 0x63, 0x57, 0x59, 0x70, 0x79, 0x38, 0x41, 0x49, 0x76, 0x59, 0x41, 0x6d, 0x53, 0x63, 0x35, 0x46, 0x48, 0x7a, 0x5c, 0x0a, 0x09, 0x5a, 0x34, 0x31, 0x4c, 0x70, 0x38, 0x6c, 0x57, 0x4e, 0x68, 0x4c, 0x61, 0x46, 0x71, 0x6b, 0x31, 0x34, 0x35, 0x55, 0x55, 0x58, 0x78, 0x7a, 0x38, 0x72, 0x44, 0x55, 0x42, 0x4b, 0x7a, 0x4f, 0x49, 0x38, 0x6f, 0x58, 0x73, 0x33, 0x77, 0x4c, 0x52, 0x70, 0x6d, 0x78, 0x49, 0x4f, 0x35, 0x45, 0x41, 0x2b, 0x69, 0x5a, 0x48, 0x56, 0x63, 0x64, 0x69, 0x36, 0x73, 0x4d, 0x64, 0x54, 0x39, 0x6d, 0x58, 0x7a, 0x76, 0x52, 0x57, 0x36, 0x71, 0x38, 0x4a, 0x5c, 0x0a, 0x09, 0x73, 0x44, 0x56, 0x50, 0x54, 0x64, 0x6c, 0x63, 0x6f, 0x68, 0x66, 0x56, 0x6e, 0x71, 0x2b, 0x33, 0x37, 0x68, 0x6e, 0x41, 0x75, 0x75, 0x34, 0x45, 0x2f, 0x4f, 0x67, 0x58, 0x76, 0x34, 0x35, 0x4c, 0x4c, 0x6a, 0x68, 0x76, 0x6b, 0x46, 0x7a, 0x51, 0x55, 0x34, 0x4a, 0x77, 0x4c, 0x6a, 0x48, 0x41, 0x32, 0x73, 0x6a, 0x76, 0x66, 0x4f, 0x41, 0x77, 0x48, 0x49, 0x43, 0x35, 0x68, 0x53, 0x55, 0x4d, 0x42, 0x6b, 0x4d, 0x4d, 0x69, 0x77, 0x4a, 0x7a, 0x5c, 0x0a, 0x09, 0x43, 0x2f, 0x37, 0x31, 0x30, 0x51, 0x65, 0x50, 0x7a, 0x4b, 0x4d, 0x73, 0x53, 0x79, 0x77, 0x4f, 0x6c, 0x6a, 0x45, 0x6f, 0x53, 0x73, 0x41, 0x35, 0x7a, 0x43, 0x30, 0x75, 0x59, 0x54, 0x6a, 0x30, 0x79, 0x63, 0x66, 0x43, 0x30, 0x67, 0x44, 0x4c, 0x52, 0x51, 0x45, 0x69, 0x77, 0x73, 0x4c, 0x69, 0x41, 0x4d, 0x76, 0x44, 0x6f, 0x54, 0x38, 0x65, 0x4c, 0x47, 0x4e, 0x59, 0x2b, 0x4e, 0x2b, 0x63, 0x57, 0x31, 0x77, 0x75, 0x2f, 0x48, 0x6e, 0x34, 0x5c, 0x0a, 0x09, 0x39, 0x38, 0x30, 0x76, 0x4c, 0x41, 0x31, 0x51, 0x73, 0x4e, 0x2f, 0x30, 0x49, 0x79, 0x49, 0x4d, 0x6c, 0x6f, 0x64, 0x59, 0x4c, 0x6f, 0x71, 0x4b, 0x52, 0x63, 0x39, 0x33, 0x55, 0x54, 0x67, 0x73, 0x4c, 0x43, 0x2f, 0x4c, 0x78, 0x45, 0x55, 0x62, 0x6d, 0x61, 0x74, 0x2b, 0x30, 0x70, 0x4a, 0x46, 0x53, 0x77, 0x65, 0x67, 0x6b, 0x32, 0x55, 0x59, 0x36, 0x33, 0x57, 0x71, 0x39, 0x76, 0x77, 0x76, 0x36, 0x50, 0x61, 0x36, 0x4f, 0x62, 0x71, 0x35, 0x5c, 0x0a, 0x09, 0x2f, 0x34, 0x6e, 0x73, 0x69, 0x62, 0x45, 0x2b, 0x38, 0x69, 0x7a, 0x48, 0x6c, 0x72, 0x45, 0x65, 0x4a, 0x73, 0x66, 0x48, 0x4d, 0x44, 0x6e, 0x65, 0x77, 0x37, 0x59, 0x74, 0x6b, 0x39, 0x69, 0x7a, 0x66, 0x51, 0x70, 0x37, 0x54, 0x39, 0x79, 0x4a, 0x2f, 0x53, 0x66, 0x74, 0x78, 0x72, 0x62, 0x4a, 0x76, 0x68, 0x49, 0x75, 0x63, 0x2f, 0x41, 0x6f, 0x5a, 0x70, 0x56, 0x64, 0x61, 0x52, 0x37, 0x6a, 0x4e, 0x59, 0x63, 0x62, 0x37, 0x33, 0x6f, 0x51, 0x5c, 0x0a, 0x09, 0x63, 0x43, 0x58, 0x32, 0x6e, 0x37, 0x51, 0x4c, 0x41, 0x2b, 0x51, 0x34, 0x50, 0x4c, 0x75, 0x41, 0x65, 0x2b, 0x38, 0x2f, 0x69, 0x41, 0x64, 0x6e, 0x5a, 0x72, 0x47, 0x77, 0x4f, 0x4d, 0x44, 0x69, 0x59, 0x49, 0x41, 0x6a, 0x63, 0x77, 0x73, 0x6f, 0x69, 0x54, 0x41, 0x33, 0x76, 0x2b, 0x6a, 0x6c, 0x42, 0x32, 0x43, 0x35, 0x4b, 0x4c, 0x43, 0x77, 0x4e, 0x49, 0x69, 0x79, 0x30, 0x6d, 0x2b, 0x66, 0x46, 0x75, 0x2f, 0x6f, 0x72, 0x36, 0x35, 0x52, 0x5c, 0x0a, 0x09, 0x42, 0x5a, 0x4b, 0x48, 0x35, 0x78, 0x59, 0x41, 0x35, 0x37, 0x42, 0x6c, 0x59, 0x68, 0x7a, 0x73, 0x42, 0x35, 0x31, 0x5a, 0x58, 0x57, 0x43, 0x73, 0x32, 0x30, 0x4d, 0x6e, 0x39, 0x7a, 0x2f, 0x68, 0x54, 0x6c, 0x55, 0x62, 0x2f, 0x72, 0x63, 0x42, 0x67, 0x47, 0x36, 0x65, 0x59, 0x33, 0x4b, 0x38, 0x4c, 0x38, 0x59, 0x30, 0x4f, 0x64, 0x5a, 0x48, 0x48, 0x6e, 0x2b, 0x43, 0x50, 0x4d, 0x50, 0x30, 0x6c, 0x76, 0x70, 0x48, 0x55, 0x48, 0x75, 0x64, 0x5c, 0x0a, 0x09, 0x48, 0x4f, 0x50, 0x39, 0x58, 0x6d, 0x78, 0x37, 0x79, 0x2f, 0x67, 0x34, 0x75, 0x74, 0x30, 0x73, 0x36, 0x6d, 0x6a, 0x58, 0x74, 0x71, 0x33, 0x6f, 0x5a, 0x70, 0x42, 0x5a, 0x6f, 0x78, 0x43, 0x78, 0x71, 0x32, 0x55, 0x72, 0x67, 0x68, 0x6d, 0x37, 0x72, 0x76, 0x57, 0x68, 0x70, 0x30, 0x47, 0x2b, 0x34, 0x74, 0x51, 0x4e, 0x74, 0x39, 0x2b, 0x4c, 0x4d, 0x38, 0x37, 0x43, 0x75, 0x74, 0x45, 0x36, 0x41, 0x38, 0x44, 0x56, 0x65, 0x50, 0x6b, 0x66, 0x5c, 0x0a, 0x09, 0x2f, 0x4f, 0x58, 0x55, 0x39, 0x35, 0x2f, 0x33, 0x79, 0x48, 0x4b, 0x38, 0x33, 0x38, 0x6b, 0x57, 0x6c, 0x70, 0x5a, 0x52, 0x6c, 0x47, 0x56, 0x30, 0x72, 0x71, 0x58, 0x42, 0x4d, 0x70, 0x61, 0x4c, 0x41, 0x6f, 0x50, 0x43, 0x2f, 0x30, 0x6a, 0x6b, 0x30, 0x76, 0x49, 0x51, 0x51, 0x31, 0x66, 0x36, 0x7a, 0x36, 0x4c, 0x41, 0x63, 0x6c, 0x46, 0x69, 0x71, 0x53, 0x69, 0x67, 0x34, 0x43, 0x41, 0x35, 0x35, 0x74, 0x52, 0x55, 0x52, 0x73, 0x55, 0x30, 0x5c, 0x0a, 0x09, 0x73, 0x30, 0x31, 0x64, 0x50, 0x79, 0x33, 0x48, 0x76, 0x34, 0x58, 0x66, 0x71, 0x5a, 0x57, 0x2f, 0x67, 0x47, 0x50, 0x31, 0x62, 0x37, 0x57, 0x58, 0x74, 0x70, 0x61, 0x4f, 0x49, 0x65, 0x56, 0x57, 0x6e, 0x53, 0x58, 0x43, 0x33, 0x6c, 0x30, 0x37, 0x38, 0x66, 0x74, 0x76, 0x2b, 0x4b, 0x39, 0x34, 0x78, 0x43, 0x4d, 0x65, 0x42, 0x71, 0x49, 0x4d, 0x6f, 0x41, 0x77, 0x67, 0x49, 0x4d, 0x74, 0x79, 0x6c, 0x41, 0x42, 0x75, 0x76, 0x66, 0x6c, 0x57, 0x5c, 0x0a, 0x09, 0x76, 0x4f, 0x76, 0x64, 0x37, 0x38, 0x55, 0x58, 0x76, 0x76, 0x77, 0x56, 0x4c, 0x41, 0x30, 0x47, 0x47, 0x42, 0x5a, 0x44, 0x50, 0x4f, 0x2b, 0x48, 0x66, 0x67, 0x69, 0x76, 0x66, 0x4e, 0x57, 0x6c, 0x32, 0x44, 0x6f, 0x39, 0x37, 0x64, 0x74, 0x32, 0x4a, 0x54, 0x71, 0x35, 0x4e, 0x34, 0x32, 0x33, 0x76, 0x65, 0x39, 0x58, 0x38, 0x43, 0x2b, 0x66, 0x2b, 0x51, 0x79, 0x6d, 0x74, 0x30, 0x37, 0x68, 0x34, 0x4f, 0x77, 0x73, 0x6c, 0x71, 0x72, 0x66, 0x5c, 0x0a, 0x09, 0x34, 0x4c, 0x50, 0x47, 0x59, 0x6f, 0x33, 0x35, 0x61, 0x4d, 0x64, 0x59, 0x31, 0x30, 0x74, 0x6c, 0x71, 0x66, 0x74, 0x71, 0x30, 0x71, 0x4d, 0x64, 0x65, 0x32, 0x55, 0x62, 0x54, 0x58, 0x61, 0x6a, 0x32, 0x37, 0x50, 0x37, 0x4a, 0x47, 0x51, 0x45, 0x6a, 0x48, 0x55, 0x37, 0x73, 0x62, 0x39, 0x75, 0x70, 0x34, 0x4e, 0x75, 0x6e, 0x73, 0x58, 0x79, 0x34, 0x37, 0x30, 0x65, 0x73, 0x73, 0x71, 0x70, 0x2b, 0x37, 0x30, 0x75, 0x63, 0x73, 0x70, 0x41, 0x5c, 0x0a, 0x09, 0x35, 0x44, 0x44, 0x52, 0x39, 0x38, 0x42, 0x4d, 0x52, 0x4e, 0x67, 0x79, 0x50, 0x68, 0x5a, 0x39, 0x66, 0x32, 0x4b, 0x73, 0x44, 0x79, 0x4a, 0x67, 0x66, 0x6e, 0x47, 0x41, 0x38, 0x38, 0x2f, 0x59, 0x74, 0x33, 0x33, 0x5a, 0x46, 0x54, 0x6a, 0x6a, 0x2b, 0x31, 0x39, 0x67, 0x6a, 0x6d, 0x51, 0x74, 0x61, 0x4e, 0x31, 0x2b, 0x46, 0x2b, 0x44, 0x6b, 0x38, 0x78, 0x37, 0x6e, 0x4f, 0x77, 0x54, 0x65, 0x36, 0x59, 0x42, 0x58, 0x4e, 0x42, 0x6c, 0x35, 0x5c, 0x0a, 0x09, 0x30, 0x37, 0x6b, 0x6d, 0x78, 0x2b, 0x54, 0x58, 0x6d, 0x77, 0x78, 0x75, 0x70, 0x54, 0x4a, 0x57, 0x6e, 0x53, 0x59, 0x48, 0x48, 0x4e, 0x58, 0x75, 0x4b, 0x42, 0x36, 0x61, 0x6a, 0x4c, 0x57, 0x70, 0x76, 0x74, 0x55, 0x33, 0x70, 0x37, 0x71, 0x64, 0x32, 0x6d, 0x48, 0x4b, 0x73, 0x73, 0x54, 0x38, 0x2f, 0x42, 0x77, 0x65, 0x64, 0x76, 0x4c, 0x4a, 0x2b, 0x50, 0x4b, 0x6e, 0x50, 0x32, 0x37, 0x57, 0x6d, 0x7a, 0x31, 0x79, 0x42, 0x49, 0x2b, 0x35, 0x5c, 0x0a, 0x09, 0x38, 0x43, 0x49, 0x63, 0x6d, 0x5a, 0x50, 0x37, 0x73, 0x58, 0x37, 0x72, 0x4e, 0x61, 0x2f, 0x42, 0x53, 0x33, 0x2f, 0x32, 0x4a, 0x65, 0x4c, 0x63, 0x2f, 0x50, 0x77, 0x38, 0x54, 0x6a, 0x2f, 0x2f, 0x51, 0x69, 0x77, 0x4d, 0x42, 0x68, 0x6a, 0x72, 0x39, 0x39, 0x48, 0x74, 0x39, 0x52, 0x67, 0x2f, 0x64, 0x62, 0x2f, 0x79, 0x7a, 0x4d, 0x70, 0x41, 0x4e, 0x71, 0x70, 0x4f, 0x45, 0x39, 0x58, 0x6c, 0x36, 0x70, 0x4a, 0x32, 0x4f, 0x37, 0x4b, 0x6c, 0x5c, 0x0a, 0x09, 0x55, 0x53, 0x44, 0x42, 0x48, 0x56, 0x75, 0x44, 0x52, 0x4e, 0x32, 0x75, 0x48, 0x47, 0x63, 0x54, 0x47, 0x45, 0x6b, 0x75, 0x5a, 0x42, 0x6e, 0x4a, 0x58, 0x38, 0x6f, 0x58, 0x61, 0x2b, 0x4d, 0x54, 0x70, 0x2b, 0x7a, 0x61, 0x38, 0x5a, 0x39, 0x75, 0x76, 0x65, 0x39, 0x42, 0x33, 0x48, 0x37, 0x56, 0x6c, 0x37, 0x41, 0x65, 0x74, 0x43, 0x35, 0x72, 0x41, 0x4b, 0x64, 0x55, 0x7a, 0x67, 0x2f, 0x67, 0x42, 0x77, 0x46, 0x36, 0x68, 0x54, 0x46, 0x77, 0x5c, 0x0a, 0x09, 0x51, 0x51, 0x54, 0x2b, 0x53, 0x37, 0x31, 0x55, 0x52, 0x59, 0x4b, 0x36, 0x54, 0x6d, 0x70, 0x59, 0x54, 0x53, 0x33, 0x78, 0x4d, 0x76, 0x58, 0x2f, 0x31, 0x6a, 0x58, 0x65, 0x4e, 0x6a, 0x38, 0x76, 0x66, 0x7a, 0x5a, 0x4d, 0x6b, 0x6a, 0x4d, 0x2b, 0x43, 0x64, 0x49, 0x45, 0x75, 0x57, 0x48, 0x57, 0x42, 0x70, 0x6f, 0x61, 0x4a, 0x4b, 0x6e, 0x36, 0x6d, 0x6c, 0x50, 0x48, 0x2f, 0x69, 0x54, 0x66, 0x6c, 0x54, 0x4f, 0x55, 0x4a, 0x65, 0x59, 0x58, 0x5c, 0x0a, 0x09, 0x46, 0x75, 0x43, 0x63, 0x77, 0x2f, 0x57, 0x33, 0x33, 0x59, 0x59, 0x2f, 0x66, 0x76, 0x2b, 0x66, 0x6d, 0x32, 0x50, 0x39, 0x71, 0x37, 0x2f, 0x36, 0x36, 0x2f, 0x69, 0x72, 0x4f, 0x35, 0x7a, 0x37, 0x4e, 0x37, 0x7a, 0x35, 0x7a, 0x66, 0x6a, 0x73, 0x5a, 0x7a, 0x38, 0x6e, 0x79, 0x72, 0x37, 0x2b, 0x76, 0x2f, 0x30, 0x75, 0x46, 0x67, 0x59, 0x2b, 0x6a, 0x56, 0x38, 0x61, 0x4c, 0x46, 0x55, 0x2f, 0x66, 0x53, 0x37, 0x64, 0x52, 0x50, 0x4e, 0x66, 0x5c, 0x0a, 0x09, 0x38, 0x30, 0x62, 0x73, 0x2f, 0x33, 0x72, 0x38, 0x41, 0x4e, 0x67, 0x35, 0x4c, 0x62, 0x75, 0x36, 0x4c, 0x4b, 0x6c, 0x79, 0x6d, 0x6c, 0x2b, 0x74, 0x72, 0x7a, 0x52, 0x49, 0x70, 0x4b, 0x37, 0x5a, 0x44, 0x4b, 0x61, 0x32, 0x38, 0x34, 0x64, 0x72, 0x4b, 0x6f, 0x46, 0x50, 0x39, 0x4f, 0x42, 0x47, 0x48, 0x73, 0x6d, 0x78, 0x57, 0x2f, 0x56, 0x59, 0x65, 0x78, 0x66, 0x66, 0x65, 0x74, 0x2b, 0x44, 0x4c, 0x77, 0x62, 0x71, 0x67, 0x4c, 0x6e, 0x57, 0x5c, 0x0a, 0x09, 0x74, 0x4f, 0x59, 0x5a, 0x77, 0x43, 0x6e, 0x6e, 0x50, 0x53, 0x34, 0x6f, 0x35, 0x31, 0x51, 0x41, 0x56, 0x7a, 0x72, 0x34, 0x78, 0x78, 0x35, 0x48, 0x49, 0x32, 0x4b, 0x4b, 0x34, 0x6a, 0x44, 0x4f, 0x63, 0x32, 0x71, 0x4f, 0x33, 0x73, 0x30, 0x52, 0x6f, 0x53, 0x6c, 0x56, 0x58, 0x54, 0x6e, 0x71, 0x6a, 0x75, 0x72, 0x44, 0x6a, 0x68, 0x6a, 0x63, 0x2b, 0x62, 0x55, 0x52, 0x57, 0x35, 0x45, 0x74, 0x35, 0x59, 0x48, 0x2f, 0x50, 0x70, 0x37, 0x69, 0x5c, 0x0a, 0x09, 0x71, 0x79, 0x77, 0x78, 0x74, 0x37, 0x44, 0x67, 0x66, 0x36, 0x4b, 0x63, 0x2f, 0x50, 0x57, 0x70, 0x69, 0x55, 0x6c, 0x38, 0x36, 0x79, 0x75, 0x66, 0x52, 0x37, 0x66, 0x6e, 0x35, 0x37, 0x59, 0x42, 0x36, 0x5a, 0x2f, 0x37, 0x76, 0x42, 0x2f, 0x42, 0x6c, 0x37, 0x37, 0x32, 0x56, 0x62, 0x50, 0x6e, 0x37, 0x56, 0x4e, 0x62, 0x38, 0x61, 0x2b, 0x66, 0x2f, 0x77, 0x4b, 0x79, 0x4c, 0x45, 0x4f, 0x57, 0x45, 0x38, 0x34, 0x2b, 0x2f, 0x77, 0x49, 0x63, 0x5c, 0x0a, 0x09, 0x6e, 0x70, 0x2b, 0x50, 0x55, 0x39, 0x59, 0x38, 0x79, 0x7a, 0x41, 0x78, 0x4d, 0x5a, 0x6b, 0x77, 0x6f, 0x4d, 0x66, 0x49, 0x2b, 0x57, 0x79, 0x4b, 0x6e, 0x4c, 0x79, 0x75, 0x70, 0x51, 0x75, 0x77, 0x74, 0x6c, 0x62, 0x4b, 0x4a, 0x47, 0x79, 0x39, 0x72, 0x5a, 0x53, 0x50, 0x48, 0x46, 0x56, 0x45, 0x58, 0x73, 0x45, 0x65, 0x52, 0x32, 0x56, 0x75, 0x54, 0x62, 0x2b, 0x47, 0x62, 0x50, 0x55, 0x76, 0x64, 0x4c, 0x38, 0x41, 0x34, 0x4c, 0x45, 0x41, 0x5c, 0x0a, 0x09, 0x72, 0x69, 0x55, 0x41, 0x74, 0x36, 0x31, 0x78, 0x4a, 0x72, 0x41, 0x75, 0x47, 0x51, 0x41, 0x42, 0x48, 0x51, 0x66, 0x38, 0x4e, 0x55, 0x44, 0x62, 0x4f, 0x52, 0x4c, 0x7a, 0x4b, 0x41, 0x39, 0x77, 0x67, 0x61, 0x53, 0x70, 0x5a, 0x58, 0x43, 0x72, 0x46, 0x44, 0x58, 0x54, 0x2b, 0x43, 0x41, 0x6a, 0x67, 0x78, 0x4f, 0x6f, 0x4c, 0x65, 0x4e, 0x72, 0x58, 0x56, 0x64, 0x48, 0x49, 0x34, 0x6e, 0x59, 0x5a, 0x4b, 0x69, 0x79, 0x6d, 0x66, 0x4f, 0x6d, 0x5c, 0x0a, 0x09, 0x62, 0x4d, 0x4c, 0x46, 0x66, 0x35, 0x62, 0x42, 0x70, 0x61, 0x44, 0x41, 0x2b, 0x32, 0x33, 0x36, 0x5a, 0x64, 0x33, 0x53, 0x75, 0x64, 0x72, 0x35, 0x51, 0x31, 0x30, 0x48, 0x7a, 0x4d, 0x7a, 0x4e, 0x34, 0x68, 0x64, 0x65, 0x2f, 0x65, 0x76, 0x34, 0x78, 0x72, 0x30, 0x7a, 0x2b, 0x4d, 0x61, 0x39, 0x4d, 0x37, 0x6a, 0x6d, 0x6e, 0x6f, 0x4f, 0x34, 0x35, 0x74, 0x34, 0x5a, 0x44, 0x4d, 0x6f, 0x51, 0x78, 0x56, 0x50, 0x54, 0x6e, 0x6c, 0x74, 0x63, 0x5c, 0x0a, 0x09, 0x77, 0x70, 0x32, 0x7a, 0x53, 0x37, 0x68, 0x74, 0x5a, 0x67, 0x36, 0x2f, 0x2f, 0x65, 0x59, 0x2f, 0x77, 0x4f, 0x48, 0x35, 0x65, 0x64, 0x2b, 0x7a, 0x41, 0x34, 0x68, 0x51, 0x72, 0x64, 0x63, 0x73, 0x43, 0x75, 0x6e, 0x70, 0x6a, 0x4d, 0x62, 0x4f, 0x41, 0x35, 0x72, 0x6b, 0x78, 0x6b, 0x76, 0x4c, 0x48, 0x45, 0x33, 0x4c, 0x70, 0x4f, 0x35, 0x50, 0x79, 0x71, 0x55, 0x5a, 0x74, 0x45, 0x4e, 0x64, 0x78, 0x34, 0x36, 0x6b, 0x62, 0x70, 0x75, 0x6a, 0x5c, 0x0a, 0x09, 0x76, 0x6b, 0x56, 0x53, 0x30, 0x36, 0x6b, 0x46, 0x36, 0x63, 0x78, 0x47, 0x74, 0x74, 0x49, 0x55, 0x56, 0x44, 0x69, 0x50, 0x56, 0x64, 0x76, 0x6a, 0x42, 0x50, 0x77, 0x4e, 0x41, 0x52, 0x4e, 0x72, 0x47, 0x35, 0x6f, 0x39, 0x72, 0x53, 0x6b, 0x41, 0x68, 0x4f, 0x67, 0x50, 0x34, 0x50, 0x55, 0x41, 0x4c, 0x74, 0x41, 0x4b, 0x72, 0x5a, 0x55, 0x69, 0x55, 0x7a, 0x43, 0x4e, 0x71, 0x76, 0x77, 0x63, 0x49, 0x4a, 0x56, 0x67, 0x4f, 0x5a, 0x77, 0x56, 0x5c, 0x0a, 0x09, 0x4c, 0x57, 0x6f, 0x46, 0x2b, 0x4e, 0x5a, 0x53, 0x35, 0x37, 0x53, 0x6a, 0x62, 0x75, 0x69, 0x44, 0x67, 0x35, 0x5a, 0x74, 0x4d, 0x44, 0x55, 0x63, 0x68, 0x66, 0x5a, 0x30, 0x32, 0x6d, 0x63, 0x5a, 0x7a, 0x69, 0x6a, 0x44, 0x43, 0x48, 0x78, 0x61, 0x55, 0x63, 0x6c, 0x56, 0x42, 0x2f, 0x50, 0x4d, 0x2b, 0x51, 0x47, 0x77, 0x4f, 0x36, 0x65, 0x45, 0x76, 0x2f, 0x2f, 0x59, 0x78, 0x33, 0x44, 0x77, 0x2f, 0x76, 0x74, 0x5a, 0x78, 0x52, 0x4c, 0x50, 0x5c, 0x0a, 0x09, 0x2b, 0x62, 0x45, 0x66, 0x4e, 0x33, 0x6a, 0x33, 0x64, 0x4d, 0x61, 0x42, 0x41, 0x35, 0x34, 0x6e, 0x79, 0x76, 0x43, 0x68, 0x44, 0x2f, 0x38, 0x76, 0x77, 0x57, 0x46, 0x6f, 0x74, 0x78, 0x67, 0x75, 0x49, 0x36, 0x78, 0x71, 0x42, 0x39, 0x31, 0x4a, 0x66, 0x66, 0x43, 0x32, 0x74, 0x62, 0x37, 0x54, 0x47, 0x46, 0x33, 0x4c, 0x4a, 0x4d, 0x31, 0x2b, 0x4c, 0x4c, 0x32, 0x47, 0x55, 0x70, 0x61, 0x75, 0x6f, 0x4d, 0x70, 0x70, 0x76, 0x72, 0x6a, 0x4d, 0x5c, 0x0a, 0x09, 0x30, 0x34, 0x69, 0x64, 0x39, 0x70, 0x66, 0x32, 0x54, 0x4d, 0x6d, 0x31, 0x70, 0x67, 0x77, 0x6e, 0x4c, 0x5a, 0x6e, 0x61, 0x68, 0x58, 0x57, 0x39, 0x71, 0x6e, 0x2b, 0x57, 0x41, 0x2f, 0x34, 0x48, 0x49, 0x4b, 0x62, 0x50, 0x61, 0x30, 0x4a, 0x72, 0x42, 0x67, 0x41, 0x6e, 0x31, 0x36, 0x6e, 0x2f, 0x45, 0x78, 0x7a, 0x77, 0x47, 0x71, 0x30, 0x77, 0x79, 0x79, 0x6b, 0x41, 0x62, 0x53, 0x4a, 0x70, 0x75, 0x73, 0x58, 0x4c, 0x42, 0x45, 0x46, 0x62, 0x5c, 0x0a, 0x09, 0x4b, 0x61, 0x47, 0x75, 0x7a, 0x36, 0x4d, 0x64, 0x4e, 0x79, 0x51, 0x4c, 0x63, 0x4f, 0x6f, 0x32, 0x6e, 0x4c, 0x69, 0x6d, 0x77, 0x53, 0x41, 0x6c, 0x65, 0x36, 0x32, 0x43, 0x31, 0x48, 0x58, 0x62, 0x45, 0x48, 0x67, 0x38, 0x74, 0x59, 0x33, 0x55, 0x36, 0x41, 0x35, 0x5a, 0x6c, 0x71, 0x6d, 0x37, 0x54, 0x6e, 0x57, 0x74, 0x35, 0x65, 0x55, 0x68, 0x2f, 0x76, 0x75, 0x62, 0x33, 0x67, 0x6a, 0x6e, 0x79, 0x75, 0x71, 0x4f, 0x41, 0x4f, 0x47, 0x43, 0x5c, 0x0a, 0x09, 0x4a, 0x7a, 0x38, 0x4e, 0x35, 0x7a, 0x2f, 0x36, 0x66, 0x4c, 0x4f, 0x48, 0x43, 0x37, 0x2f, 0x76, 0x4b, 0x58, 0x41, 0x41, 0x4c, 0x76, 0x2f, 0x6f, 0x52, 0x2f, 0x46, 0x41, 0x2f, 0x42, 0x56, 0x65, 0x56, 0x73, 0x59, 0x42, 0x45, 0x2b, 0x4d, 0x54, 0x63, 0x43, 0x53, 0x6a, 0x4e, 0x65, 0x39, 0x5a, 0x36, 0x31, 0x4f, 0x4f, 0x33, 0x35, 0x6d, 0x79, 0x56, 0x6b, 0x4e, 0x4b, 0x64, 0x47, 0x49, 0x42, 0x4f, 0x6a, 0x2f, 0x6d, 0x75, 0x76, 0x4c, 0x66, 0x5c, 0x0a, 0x09, 0x4e, 0x58, 0x2b, 0x6b, 0x64, 0x43, 0x46, 0x72, 0x4e, 0x6a, 0x6b, 0x6f, 0x6e, 0x33, 0x35, 0x49, 0x59, 0x4a, 0x4d, 0x52, 0x58, 0x6f, 0x4e, 0x39, 0x34, 0x47, 0x65, 0x6c, 0x37, 0x49, 0x66, 0x58, 0x54, 0x38, 0x76, 0x51, 0x7a, 0x78, 0x48, 0x77, 0x77, 0x77, 0x35, 0x72, 0x75, 0x78, 0x36, 0x77, 0x31, 0x6c, 0x4f, 0x41, 0x4b, 0x51, 0x41, 0x66, 0x6f, 0x4b, 0x71, 0x66, 0x5a, 0x6f, 0x4d, 0x6d, 0x59, 0x53, 0x6a, 0x38, 0x30, 0x34, 0x71, 0x61, 0x5c, 0x0a, 0x09, 0x4f, 0x73, 0x72, 0x6f, 0x44, 0x4d, 0x47, 0x69, 0x4f, 0x6c, 0x4b, 0x6c, 0x61, 0x57, 0x6e, 0x54, 0x63, 0x52, 0x4d, 0x77, 0x70, 0x47, 0x6c, 0x67, 0x62, 0x59, 0x49, 0x36, 0x45, 0x6b, 0x71, 0x65, 0x6e, 0x46, 0x6d, 0x2f, 0x6a, 0x71, 0x51, 0x75, 0x4d, 0x61, 0x54, 0x41, 0x73, 0x32, 0x34, 0x76, 0x39, 0x44, 0x6b, 0x78, 0x4e, 0x6f, 0x59, 0x38, 0x34, 0x33, 0x64, 0x7a, 0x4b, 0x58, 0x34, 0x51, 0x41, 0x5a, 0x2f, 0x37, 0x30, 0x70, 0x64, 0x77, 0x5c, 0x0a, 0x09, 0x32, 0x38, 0x32, 0x33, 0x69, 0x47, 0x75, 0x2f, 0x2b, 0x47, 0x75, 0x76, 0x78, 0x65, 0x54, 0x45, 0x42, 0x44, 0x68, 0x4e, 0x54, 0x6b, 0x7a, 0x67, 0x36, 0x63, 0x39, 0x35, 0x48, 0x67, 0x6a, 0x41, 0x6e, 0x2f, 0x37, 0x5a, 0x6e, 0x38, 0x69, 0x6f, 0x58, 0x54, 0x55, 0x35, 0x31, 0x75, 0x38, 0x6a, 0x7a, 0x33, 0x4d, 0x68, 0x48, 0x7a, 0x33, 0x47, 0x6c, 0x45, 0x2b, 0x62, 0x39, 0x4f, 0x4b, 0x71, 0x42, 0x4f, 0x62, 0x36, 0x76, 0x4f, 0x56, 0x45, 0x5c, 0x0a, 0x09, 0x64, 0x67, 0x59, 0x6d, 0x75, 0x65, 0x41, 0x36, 0x73, 0x4f, 0x39, 0x56, 0x49, 0x4a, 0x46, 0x33, 0x57, 0x71, 0x4c, 0x2b, 0x7a, 0x75, 0x4f, 0x39, 0x74, 0x73, 0x6e, 0x36, 0x75, 0x77, 0x77, 0x79, 0x4b, 0x62, 0x2b, 0x6b, 0x76, 0x71, 0x63, 0x5a, 0x44, 0x79, 0x2f, 0x6c, 0x67, 0x50, 0x63, 0x44, 0x32, 0x49, 0x55, 0x31, 0x70, 0x44, 0x55, 0x42, 0x41, 0x4a, 0x61, 0x32, 0x2f, 0x43, 0x36, 0x41, 0x76, 0x65, 0x47, 0x4c, 0x54, 0x6f, 0x74, 0x71, 0x5c, 0x0a, 0x09, 0x70, 0x63, 0x74, 0x55, 0x6b, 0x58, 0x38, 0x47, 0x6b, 0x56, 0x74, 0x52, 0x67, 0x4b, 0x41, 0x56, 0x55, 0x46, 0x4e, 0x54, 0x31, 0x4e, 0x44, 0x6d, 0x6b, 0x46, 0x4c, 0x4b, 0x59, 0x35, 0x4d, 0x52, 0x61, 0x77, 0x50, 0x54, 0x64, 0x79, 0x4d, 0x34, 0x2f, 0x32, 0x6b, 0x64, 0x75, 0x32, 0x63, 0x72, 0x55, 0x74, 0x6d, 0x4c, 0x66, 0x2f, 0x55, 0x34, 0x4a, 0x73, 0x62, 0x48, 0x68, 0x57, 0x4f, 0x47, 0x6a, 0x70, 0x30, 0x44, 0x43, 0x6c, 0x66, 0x69, 0x5c, 0x0a, 0x09, 0x37, 0x57, 0x2f, 0x35, 0x50, 0x5a, 0x38, 0x46, 0x41, 0x48, 0x43, 0x75, 0x78, 0x41, 0x6d, 0x6e, 0x37, 0x73, 0x56, 0x50, 0x76, 0x4f, 0x53, 0x6c, 0x6f, 0x73, 0x58, 0x48, 0x58, 0x2f, 0x51, 0x45, 0x62, 0x4a, 0x6d, 0x61, 0x78, 0x72, 0x56, 0x66, 0x2b, 0x78, 0x70, 0x75, 0x76, 0x66, 0x4f, 0x75, 0x68, 0x4d, 0x46, 0x75, 0x74, 0x34, 0x74, 0x65, 0x74, 0x61, 0x43, 0x34, 0x6b, 0x71, 0x79, 0x74, 0x72, 0x49, 0x31, 0x48, 0x35, 0x2f, 0x53, 0x63, 0x5c, 0x0a, 0x09, 0x2f, 0x63, 0x66, 0x62, 0x74, 0x7a, 0x49, 0x71, 0x4c, 0x6e, 0x57, 0x39, 0x57, 0x4a, 0x68, 0x47, 0x5a, 0x4e, 0x75, 0x4a, 0x39, 0x56, 0x69, 0x61, 0x2b, 0x4e, 0x64, 0x6a, 0x6c, 0x59, 0x42, 0x56, 0x63, 0x79, 0x53, 0x64, 0x6d, 0x43, 0x42, 0x44, 0x54, 0x6e, 0x71, 0x33, 0x77, 0x51, 0x62, 0x4b, 0x43, 0x43, 0x63, 0x37, 0x43, 0x58, 0x67, 0x58, 0x41, 0x4a, 0x78, 0x79, 0x33, 0x76, 0x64, 0x69, 0x4c, 0x57, 0x6a, 0x56, 0x41, 0x59, 0x43, 0x6c, 0x5c, 0x0a, 0x09, 0x2f, 0x6b, 0x38, 0x42, 0x38, 0x44, 0x4b, 0x41, 0x43, 0x31, 0x45, 0x65, 0x61, 0x55, 0x63, 0x4f, 0x33, 0x37, 0x54, 0x67, 0x72, 0x62, 0x54, 0x62, 0x64, 0x6d, 0x49, 0x79, 0x6a, 0x6d, 0x77, 0x44, 0x30, 0x6d, 0x6c, 0x62, 0x66, 0x54, 0x35, 0x64, 0x48, 0x34, 0x43, 0x71, 0x59, 0x77, 0x47, 0x43, 0x42, 0x6a, 0x49, 0x35, 0x70, 0x68, 0x52, 0x30, 0x67, 0x6f, 0x6f, 0x74, 0x41, 0x36, 0x76, 0x37, 0x63, 0x67, 0x6d, 0x6f, 0x63, 0x46, 0x35, 0x43, 0x5c, 0x0a, 0x09, 0x65, 0x5a, 0x44, 0x50, 0x42, 0x43, 0x6a, 0x4c, 0x5a, 0x43, 0x45, 0x34, 0x4f, 0x4f, 0x66, 0x77, 0x70, 0x53, 0x75, 0x76, 0x78, 0x41, 0x33, 0x66, 0x2b, 0x45, 0x5a, 0x39, 0x69, 0x54, 0x4a, 0x73, 0x6e, 0x64, 0x6f, 0x71, 0x57, 0x68, 0x34, 0x4d, 0x2f, 0x43, 0x37, 0x4b, 0x39, 0x37, 0x33, 0x37, 0x58, 0x53, 0x6a, 0x4b, 0x38, 0x4c, 0x69, 0x47, 0x37, 0x36, 0x57, 0x54, 0x35, 0x52, 0x6a, 0x76, 0x6a, 0x37, 0x45, 0x7a, 0x64, 0x6d, 0x59, 0x47, 0x5c, 0x0a, 0x09, 0x34, 0x33, 0x74, 0x36, 0x47, 0x7a, 0x58, 0x49, 0x6c, 0x7a, 0x74, 0x73, 0x43, 0x67, 0x70, 0x4e, 0x49, 0x4a, 0x33, 0x61, 0x51, 0x56, 0x70, 0x53, 0x36, 0x30, 0x69, 0x57, 0x53, 0x4f, 0x57, 0x5a, 0x42, 0x70, 0x7a, 0x6d, 0x30, 0x6a, 0x71, 0x44, 0x43, 0x36, 0x76, 0x39, 0x54, 0x70, 0x7a, 0x6e, 0x77, 0x4d, 0x33, 0x7a, 0x75, 0x39, 0x48, 0x32, 0x77, 0x38, 0x64, 0x55, 0x31, 0x38, 0x4c, 0x7a, 0x43, 0x66, 0x52, 0x63, 0x42, 0x37, 0x63, 0x6d, 0x5c, 0x0a, 0x09, 0x55, 0x34, 0x47, 0x31, 0x6d, 0x67, 0x4c, 0x30, 0x41, 0x50, 0x77, 0x52, 0x59, 0x4b, 0x63, 0x34, 0x51, 0x42, 0x6f, 0x4a, 0x72, 0x47, 0x67, 0x71, 0x68, 0x52, 0x7a, 0x71, 0x4e, 0x54, 0x76, 0x78, 0x61, 0x46, 0x57, 0x6e, 0x62, 0x71, 0x33, 0x76, 0x4e, 0x2f, 0x4e, 0x53, 0x6f, 0x77, 0x78, 0x51, 0x47, 0x34, 0x72, 0x64, 0x68, 0x70, 0x30, 0x33, 0x61, 0x47, 0x43, 0x77, 0x44, 0x4e, 0x55, 0x78, 0x33, 0x6b, 0x49, 0x5a, 0x57, 0x34, 0x62, 0x73, 0x5c, 0x0a, 0x09, 0x58, 0x4a, 0x5a, 0x68, 0x63, 0x6e, 0x77, 0x63, 0x47, 0x54, 0x39, 0x5a, 0x37, 0x59, 0x45, 0x76, 0x48, 0x66, 0x44, 0x4f, 0x74, 0x37, 0x37, 0x56, 0x31, 0x36, 0x45, 0x4d, 0x7a, 0x70, 0x58, 0x34, 0x36, 0x68, 0x65, 0x2f, 0x4b, 0x4f, 0x44, 0x34, 0x47, 0x39, 0x64, 0x65, 0x69, 0x37, 0x74, 0x75, 0x76, 0x77, 0x31, 0x58, 0x66, 0x65, 0x4d, 0x62, 0x64, 0x63, 0x74, 0x45, 0x79, 0x49, 0x67, 0x77, 0x50, 0x6a, 0x59, 0x47, 0x30, 0x4d, 0x72, 0x47, 0x5c, 0x0a, 0x09, 0x79, 0x78, 0x32, 0x36, 0x50, 0x75, 0x2f, 0x4d, 0x73, 0x76, 0x55, 0x34, 0x77, 0x78, 0x68, 0x72, 0x71, 0x59, 0x32, 0x4f, 0x2b, 0x46, 0x4c, 0x2b, 0x6c, 0x73, 0x78, 0x31, 0x41, 0x4a, 0x48, 0x31, 0x6e, 0x61, 0x45, 0x2f, 0x32, 0x31, 0x4b, 0x73, 0x49, 0x4d, 0x48, 0x62, 0x31, 0x2b, 0x4d, 0x6a, 0x79, 0x44, 0x37, 0x34, 0x4f, 0x4d, 0x4e, 0x31, 0x76, 0x59, 0x69, 0x73, 0x78, 0x77, 0x46, 0x52, 0x4e, 0x73, 0x72, 0x6e, 0x6e, 0x56, 0x69, 0x6a, 0x5c, 0x0a, 0x09, 0x35, 0x77, 0x52, 0x57, 0x46, 0x51, 0x42, 0x4f, 0x71, 0x58, 0x66, 0x37, 0x58, 0x51, 0x70, 0x67, 0x76, 0x7a, 0x5a, 0x63, 0x4f, 0x55, 0x69, 0x6e, 0x6c, 0x4b, 0x63, 0x46, 0x7a, 0x38, 0x30, 0x7a, 0x7a, 0x52, 0x78, 0x53, 0x51, 0x4c, 0x41, 0x53, 0x4f, 0x6d, 0x35, 0x49, 0x55, 0x75, 0x7a, 0x63, 0x52, 0x45, 0x4d, 0x45, 0x34, 0x69, 0x6c, 0x64, 0x65, 0x6e, 0x74, 0x4c, 0x4c, 0x74, 0x44, 0x70, 0x73, 0x61, 0x56, 0x4b, 0x74, 0x61, 0x63, 0x61, 0x5c, 0x0a, 0x09, 0x61, 0x5a, 0x54, 0x68, 0x57, 0x32, 0x5a, 0x34, 0x4f, 0x62, 0x76, 0x2b, 0x79, 0x47, 0x69, 0x62, 0x5a, 0x52, 0x67, 0x62, 0x47, 0x36, 0x39, 0x37, 0x69, 0x51, 0x30, 0x34, 0x66, 0x4f, 0x33, 0x61, 0x61, 0x2f, 0x43, 0x64, 0x36, 0x37, 0x38, 0x46, 0x35, 0x2f, 0x77, 0x64, 0x67, 0x32, 0x39, 0x2b, 0x34, 0x31, 0x72, 0x77, 0x38, 0x64, 0x39, 0x37, 0x2f, 0x33, 0x31, 0x34, 0x31, 0x39, 0x76, 0x65, 0x69, 0x6d, 0x47, 0x31, 0x31, 0x54, 0x65, 0x30, 0x5c, 0x0a, 0x09, 0x50, 0x54, 0x59, 0x2b, 0x44, 0x6d, 0x53, 0x5a, 0x45, 0x5a, 0x6d, 0x62, 0x62, 0x34, 0x31, 0x79, 0x47, 0x4c, 0x41, 0x63, 0x4d, 0x5a, 0x53, 0x51, 0x33, 0x31, 0x31, 0x53, 0x54, 0x67, 0x4f, 0x39, 0x76, 0x65, 0x47, 0x4c, 0x75, 0x55, 0x6c, 0x44, 0x41, 0x4c, 0x44, 0x41, 0x51, 0x6b, 0x74, 0x62, 0x66, 0x37, 0x4e, 0x73, 0x31, 0x78, 0x71, 0x50, 0x46, 0x5a, 0x6a, 0x30, 0x64, 0x54, 0x31, 0x4f, 0x69, 0x77, 0x39, 0x65, 0x54, 0x67, 0x63, 0x51, 0x5c, 0x0a, 0x09, 0x42, 0x35, 0x78, 0x41, 0x77, 0x47, 0x75, 0x42, 0x31, 0x56, 0x38, 0x51, 0x58, 0x46, 0x55, 0x41, 0x71, 0x41, 0x61, 0x78, 0x78, 0x77, 0x47, 0x2f, 0x72, 0x71, 0x39, 0x5a, 0x77, 0x74, 0x4c, 0x58, 0x77, 0x2b, 0x63, 0x6f, 0x51, 0x30, 0x6c, 0x54, 0x77, 0x50, 0x44, 0x70, 0x7a, 0x59, 0x51, 0x4c, 0x7a, 0x7a, 0x49, 0x2b, 0x4f, 0x34, 0x4a, 0x70, 0x46, 0x4c, 0x66, 0x63, 0x72, 0x38, 0x62, 0x37, 0x4e, 0x50, 0x4d, 0x59, 0x48, 0x61, 0x45, 0x31, 0x5c, 0x0a, 0x09, 0x57, 0x59, 0x62, 0x50, 0x46, 0x78, 0x41, 0x44, 0x49, 0x4e, 0x69, 0x5a, 0x68, 0x46, 0x77, 0x77, 0x6c, 0x65, 0x6b, 0x6f, 0x30, 0x4f, 0x6c, 0x30, 0x4b, 0x78, 0x44, 0x77, 0x49, 0x77, 0x6b, 0x50, 0x32, 0x4a, 0x51, 0x4f, 0x2b, 0x4a, 0x50, 0x33, 0x76, 0x41, 0x64, 0x45, 0x47, 0x51, 0x37, 0x64, 0x66, 0x7a, 0x2f, 0x75, 0x76, 0x50, 0x4e, 0x4f, 0x61, 0x4d, 0x6c, 0x2b, 0x34, 0x53, 0x76, 0x2f, 0x35, 0x6f, 0x2b, 0x71, 0x30, 0x2f, 0x33, 0x2b, 0x5c, 0x0a, 0x09, 0x47, 0x44, 0x70, 0x35, 0x62, 0x68, 0x70, 0x31, 0x55, 0x2b, 0x6f, 0x4e, 0x53, 0x50, 0x6c, 0x77, 0x4a, 0x7a, 0x67, 0x61, 0x4d, 0x4c, 0x43, 0x69, 0x65, 0x39, 0x32, 0x4f, 0x64, 0x63, 0x73, 0x33, 0x35, 0x57, 0x5a, 0x55, 0x50, 0x79, 0x6b, 0x41, 0x31, 0x2b, 0x57, 0x34, 0x6a, 0x56, 0x68, 0x6a, 0x67, 0x43, 0x71, 0x6a, 0x36, 0x7a, 0x58, 0x33, 0x54, 0x36, 0x59, 0x63, 0x41, 0x6b, 0x77, 0x47, 0x63, 0x4e, 0x4d, 0x77, 0x70, 0x4f, 0x7a, 0x73, 0x5c, 0x0a, 0x09, 0x55, 0x67, 0x43, 0x6e, 0x47, 0x36, 0x7a, 0x2f, 0x75, 0x32, 0x6a, 0x56, 0x41, 0x43, 0x41, 0x73, 0x55, 0x6a, 0x6a, 0x67, 0x31, 0x51, 0x43, 0x32, 0x36, 0x6b, 0x48, 0x57, 0x2f, 0x2f, 0x75, 0x6a, 0x4a, 0x73, 0x4f, 0x6f, 0x53, 0x36, 0x52, 0x4f, 0x78, 0x6f, 0x2b, 0x62, 0x6f, 0x72, 0x45, 0x76, 0x55, 0x78, 0x73, 0x4b, 0x78, 0x48, 0x6c, 0x74, 0x42, 0x4a, 0x4b, 0x76, 0x2b, 0x6c, 0x4f, 0x36, 0x6e, 0x2b, 0x58, 0x73, 0x54, 0x57, 0x33, 0x7a, 0x5c, 0x0a, 0x09, 0x53, 0x47, 0x47, 0x68, 0x75, 0x6a, 0x51, 0x75, 0x53, 0x73, 0x37, 0x72, 0x4d, 0x65, 0x68, 0x65, 0x6d, 0x32, 0x35, 0x4e, 0x31, 0x52, 0x48, 0x5a, 0x6f, 0x64, 0x76, 0x74, 0x6f, 0x74, 0x2f, 0x72, 0x2b, 0x58, 0x4f, 0x73, 0x30, 0x47, 0x65, 0x75, 0x75, 0x41, 0x4c, 0x33, 0x33, 0x33, 0x4d, 0x33, 0x72, 0x76, 0x7a, 0x79, 0x46, 0x78, 0x56, 0x55, 0x41, 0x75, 0x6a, 0x31, 0x73, 0x54, 0x52, 0x59, 0x38, 0x6a, 0x30, 0x37, 0x76, 0x2b, 0x6a, 0x58, 0x5c, 0x0a, 0x09, 0x37, 0x58, 0x5a, 0x5a, 0x36, 0x7a, 0x4c, 0x62, 0x30, 0x6d, 0x44, 0x56, 0x6c, 0x4d, 0x6f, 0x32, 0x36, 0x64, 0x69, 0x4a, 0x36, 0x7a, 0x6f, 0x66, 0x30, 0x32, 0x4f, 0x79, 0x49, 0x71, 0x6b, 0x64, 0x50, 0x54, 0x6d, 0x2f, 0x2b, 0x6c, 0x6f, 0x54, 0x49, 0x4d, 0x73, 0x65, 0x6d, 0x36, 0x36, 0x6b, 0x5a, 0x41, 0x55, 0x78, 0x4b, 0x33, 0x74, 0x49, 0x4e, 0x63, 0x55, 0x42, 0x58, 0x6d, 0x65, 0x6a, 0x30, 0x6a, 0x59, 0x59, 0x37, 0x33, 0x30, 0x43, 0x5c, 0x0a, 0x09, 0x66, 0x68, 0x56, 0x59, 0x33, 0x53, 0x78, 0x67, 0x46, 0x54, 0x4d, 0x41, 0x42, 0x77, 0x4b, 0x4e, 0x41, 0x2f, 0x69, 0x5a, 0x31, 0x41, 0x68, 0x30, 0x76, 0x48, 0x42, 0x4b, 0x4d, 0x62, 0x55, 0x49, 0x56, 0x6b, 0x4c, 0x6e, 0x75, 0x67, 0x57, 0x72, 0x6c, 0x47, 0x30, 0x4d, 0x2b, 0x6a, 0x78, 0x50, 0x72, 0x6e, 0x51, 0x30, 0x64, 0x38, 0x6e, 0x5a, 0x74, 0x4c, 0x36, 0x4d, 0x44, 0x6d, 0x6c, 0x76, 0x4b, 0x57, 0x43, 0x52, 0x4d, 0x41, 0x51, 0x65, 0x5c, 0x0a, 0x09, 0x76, 0x52, 0x79, 0x6b, 0x66, 0x4a, 0x6f, 0x64, 0x4b, 0x5a, 0x56, 0x69, 0x4c, 0x5a, 0x64, 0x30, 0x79, 0x32, 0x79, 0x2f, 0x33, 0x30, 0x65, 0x6e, 0x4b, 0x31, 0x38, 0x79, 0x57, 0x35, 0x51, 0x46, 0x2f, 0x75, 0x4c, 0x39, 0x66, 0x34, 0x79, 0x62, 0x76, 0x76, 0x55, 0x74, 0x31, 0x71, 0x71, 0x6e, 0x5a, 0x63, 0x71, 0x72, 0x78, 0x33, 0x49, 0x4a, 0x57, 0x5a, 0x35, 0x6a, 0x72, 0x46, 0x72, 0x30, 0x34, 0x2b, 0x4f, 0x74, 0x5a, 0x5a, 0x43, 0x36, 0x5c, 0x0a, 0x09, 0x73, 0x77, 0x53, 0x49, 0x4e, 0x4a, 0x70, 0x61, 0x33, 0x37, 0x58, 0x4a, 0x38, 0x33, 0x46, 0x4c, 0x65, 0x55, 0x6e, 0x64, 0x4e, 0x6f, 0x48, 0x4b, 0x53, 0x73, 0x2b, 0x45, 0x4e, 0x47, 0x56, 0x72, 0x4b, 0x39, 0x30, 0x4f, 0x64, 0x4f, 0x70, 0x59, 0x36, 0x31, 0x64, 0x71, 0x31, 0x63, 0x35, 0x41, 0x72, 0x44, 0x48, 0x72, 0x67, 0x47, 0x51, 0x46, 0x4d, 0x57, 0x57, 0x62, 0x50, 0x34, 0x46, 0x56, 0x66, 0x6d, 0x6e, 0x49, 0x71, 0x67, 0x46, 0x41, 0x5c, 0x0a, 0x09, 0x70, 0x62, 0x41, 0x6e, 0x41, 0x70, 0x6a, 0x53, 0x5a, 0x71, 0x4c, 0x78, 0x4e, 0x58, 0x57, 0x6d, 0x2b, 0x73, 0x78, 0x6f, 0x46, 0x65, 0x6f, 0x4e, 0x48, 0x53, 0x6b, 0x50, 0x56, 0x73, 0x53, 0x32, 0x44, 0x4a, 0x42, 0x7a, 0x4a, 0x46, 0x50, 0x4e, 0x35, 0x70, 0x6b, 0x6d, 0x4c, 0x38, 0x2f, 0x56, 0x62, 0x51, 0x47, 0x55, 0x6a, 0x49, 0x36, 0x70, 0x71, 0x57, 0x73, 0x6e, 0x53, 0x64, 0x73, 0x64, 0x76, 0x63, 0x48, 0x4a, 0x63, 0x68, 0x52, 0x64, 0x5c, 0x0a, 0x09, 0x62, 0x72, 0x78, 0x4b, 0x34, 0x51, 0x48, 0x45, 0x71, 0x63, 0x44, 0x48, 0x4c, 0x37, 0x73, 0x63, 0x68, 0x77, 0x34, 0x64, 0x42, 0x49, 0x2b, 0x39, 0x57, 0x62, 0x65, 0x48, 0x59, 0x74, 0x6e, 0x50, 0x2f, 0x58, 0x4d, 0x69, 0x6a, 0x49, 0x2b, 0x50, 0x78, 0x30, 0x5a, 0x47, 0x79, 0x56, 0x71, 0x36, 0x37, 0x61, 0x68, 0x4e, 0x54, 0x6e, 0x55, 0x70, 0x72, 0x52, 0x4d, 0x39, 0x52, 0x6e, 0x34, 0x74, 0x63, 0x47, 0x67, 0x39, 0x57, 0x38, 0x44, 0x72, 0x5c, 0x0a, 0x09, 0x57, 0x7a, 0x71, 0x31, 0x2b, 0x67, 0x2f, 0x58, 0x65, 0x48, 0x39, 0x36, 0x66, 0x44, 0x6f, 0x6f, 0x38, 0x66, 0x5a, 0x30, 0x42, 0x68, 0x4b, 0x75, 0x42, 0x61, 0x75, 0x32, 0x67, 0x6f, 0x54, 0x57, 0x69, 0x64, 0x57, 0x58, 0x78, 0x57, 0x46, 0x44, 0x2b, 0x58, 0x45, 0x43, 0x6e, 0x6d, 0x52, 0x57, 0x65, 0x34, 0x69, 0x30, 0x32, 0x6d, 0x73, 0x41, 0x31, 0x61, 0x73, 0x37, 0x70, 0x47, 0x6d, 0x6b, 0x79, 0x55, 0x33, 0x39, 0x72, 0x56, 0x5a, 0x67, 0x5c, 0x0a, 0x09, 0x45, 0x31, 0x78, 0x77, 0x51, 0x63, 0x72, 0x36, 0x70, 0x4b, 0x37, 0x70, 0x43, 0x47, 0x52, 0x46, 0x43, 0x32, 0x31, 0x34, 0x64, 0x56, 0x38, 0x38, 0x4c, 0x76, 0x73, 0x7a, 0x4e, 0x54, 0x4c, 0x72, 0x2b, 0x56, 0x6c, 0x74, 0x38, 0x50, 0x70, 0x73, 0x79, 0x72, 0x63, 0x45, 0x43, 0x49, 0x73, 0x58, 0x51, 0x42, 0x70, 0x73, 0x44, 0x59, 0x70, 0x57, 0x32, 0x33, 0x61, 0x32, 0x6c, 0x42, 0x6f, 0x54, 0x65, 0x59, 0x73, 0x5a, 0x47, 0x30, 0x4f, 0x57, 0x5c, 0x0a, 0x09, 0x5a, 0x58, 0x45, 0x71, 0x63, 0x47, 0x52, 0x2b, 0x44, 0x72, 0x66, 0x66, 0x63, 0x58, 0x65, 0x73, 0x34, 0x51, 0x41, 0x73, 0x35, 0x31, 0x30, 0x55, 0x7a, 0x69, 0x45, 0x6a, 0x51, 0x6e, 0x39, 0x38, 0x48, 0x44, 0x6d, 0x6c, 0x4f, 0x72, 0x43, 0x4f, 0x72, 0x5a, 0x6a, 0x58, 0x35, 0x48, 0x68, 0x63, 0x6c, 0x72, 0x4a, 0x31, 0x69, 0x33, 0x50, 0x65, 0x73, 0x6f, 0x50, 0x6d, 0x52, 0x74, 0x65, 0x6f, 0x64, 0x53, 0x79, 0x42, 0x45, 0x4a, 0x44, 0x79, 0x5c, 0x0a, 0x09, 0x31, 0x6e, 0x7a, 0x77, 0x36, 0x39, 0x62, 0x74, 0x79, 0x71, 0x4d, 0x42, 0x46, 0x61, 0x33, 0x4c, 0x4a, 0x6b, 0x43, 0x70, 0x79, 0x2b, 0x6f, 0x46, 0x5a, 0x36, 0x6c, 0x54, 0x6f, 0x4a, 0x36, 0x63, 0x57, 0x54, 0x6f, 0x48, 0x61, 0x48, 0x5a, 0x30, 0x6b, 0x50, 0x7a, 0x75, 0x61, 0x4c, 0x56, 0x76, 0x41, 0x31, 0x37, 0x6d, 0x67, 0x42, 0x75, 0x31, 0x73, 0x56, 0x74, 0x71, 0x74, 0x6c, 0x49, 0x75, 0x66, 0x6f, 0x61, 0x6e, 0x52, 0x53, 0x74, 0x46, 0x5c, 0x0a, 0x09, 0x43, 0x6b, 0x37, 0x61, 0x52, 0x49, 0x37, 0x6d, 0x63, 0x56, 0x35, 0x2f, 0x72, 0x47, 0x2f, 0x4a, 0x63, 0x62, 0x44, 0x52, 0x47, 0x7a, 0x68, 0x6b, 0x53, 0x32, 0x6b, 0x30, 0x6c, 0x45, 0x63, 0x36, 0x31, 0x62, 0x50, 0x71, 0x4e, 0x6b, 0x58, 0x37, 0x4e, 0x4b, 0x72, 0x71, 0x36, 0x5a, 0x4d, 0x73, 0x70, 0x2f, 0x6c, 0x48, 0x6c, 0x6d, 0x46, 0x69, 0x66, 0x4a, 0x79, 0x39, 0x72, 0x59, 0x72, 0x38, 0x52, 0x70, 0x39, 0x51, 0x76, 0x39, 0x50, 0x44, 0x5c, 0x0a, 0x09, 0x59, 0x46, 0x67, 0x41, 0x42, 0x50, 0x52, 0x59, 0x78, 0x67, 0x43, 0x6b, 0x68, 0x74, 0x79, 0x73, 0x73, 0x78, 0x54, 0x6f, 0x4f, 0x49, 0x56, 0x4d, 0x53, 0x50, 0x44, 0x46, 0x57, 0x6b, 0x71, 0x7a, 0x41, 0x52, 0x6b, 0x4f, 0x36, 0x72, 0x48, 0x5a, 0x6d, 0x33, 0x31, 0x30, 0x58, 0x37, 0x78, 0x65, 0x55, 0x38, 0x61, 0x67, 0x2b, 0x2b, 0x59, 0x61, 0x74, 0x32, 0x53, 0x62, 0x6a, 0x71, 0x63, 0x70, 0x6d, 0x30, 0x68, 0x42, 0x4b, 0x72, 0x57, 0x57, 0x5c, 0x0a, 0x09, 0x56, 0x46, 0x63, 0x79, 0x6b, 0x36, 0x6e, 0x68, 0x6a, 0x41, 0x63, 0x52, 0x41, 0x46, 0x63, 0x44, 0x37, 0x74, 0x50, 0x47, 0x73, 0x42, 0x38, 0x79, 0x72, 0x64, 0x6f, 0x62, 0x67, 0x53, 0x35, 0x39, 0x33, 0x73, 0x56, 0x59, 0x47, 0x67, 0x79, 0x48, 0x64, 0x39, 0x78, 0x39, 0x36, 0x46, 0x38, 0x2b, 0x38, 0x75, 0x55, 0x72, 0x58, 0x2b, 0x62, 0x50, 0x31, 0x67, 0x50, 0x52, 0x71, 0x54, 0x42, 0x2f, 0x31, 0x4c, 0x4d, 0x75, 0x6d, 0x54, 0x70, 0x41, 0x5c, 0x0a, 0x09, 0x2b, 0x4d, 0x62, 0x56, 0x6f, 0x77, 0x57, 0x57, 0x66, 0x6d, 0x72, 0x58, 0x58, 0x67, 0x6d, 0x64, 0x30, 0x34, 0x63, 0x33, 0x7a, 0x59, 0x69, 0x71, 0x32, 0x72, 0x58, 0x53, 0x4e, 0x4a, 0x33, 0x39, 0x38, 0x46, 0x71, 0x32, 0x63, 0x30, 0x67, 0x5a, 0x79, 0x64, 0x55, 0x43, 0x44, 0x6d, 0x68, 0x70, 0x56, 0x73, 0x57, 0x58, 0x44, 0x71, 0x30, 0x4d, 0x49, 0x35, 0x37, 0x4c, 0x4d, 0x6f, 0x79, 0x50, 0x54, 0x32, 0x42, 0x68, 0x59, 0x52, 0x34, 0x67, 0x5c, 0x0a, 0x09, 0x34, 0x4e, 0x35, 0x44, 0x42, 0x39, 0x47, 0x76, 0x49, 0x6e, 0x37, 0x5a, 0x37, 0x61, 0x4e, 0x63, 0x58, 0x45, 0x53, 0x48, 0x4c, 0x66, 0x6f, 0x31, 0x5a, 0x53, 0x61, 0x57, 0x4a, 0x4a, 0x6f, 0x79, 0x6d, 0x69, 0x5a, 0x67, 0x53, 0x74, 0x74, 0x30, 0x6b, 0x42, 0x4f, 0x37, 0x31, 0x4d, 0x6c, 0x31, 0x57, 0x78, 0x70, 0x59, 0x59, 0x5a, 0x51, 0x66, 0x31, 0x61, 0x2f, 0x46, 0x76, 0x38, 0x77, 0x35, 0x35, 0x46, 0x68, 0x54, 0x6e, 0x76, 0x30, 0x56, 0x5c, 0x0a, 0x09, 0x76, 0x55, 0x4e, 0x54, 0x51, 0x6b, 0x70, 0x71, 0x32, 0x32, 0x6d, 0x77, 0x73, 0x74, 0x39, 0x57, 0x46, 0x44, 0x61, 0x41, 0x61, 0x5a, 0x74, 0x38, 0x78, 0x54, 0x4f, 0x66, 0x66, 0x45, 0x57, 0x33, 0x6e, 0x7a, 0x76, 0x4b, 0x64, 0x45, 0x73, 0x50, 0x6e, 0x56, 0x62, 0x74, 0x66, 0x51, 0x44, 0x6c, 0x74, 0x5a, 0x38, 0x45, 0x67, 0x4a, 0x30, 0x67, 0x75, 0x76, 0x6c, 0x35, 0x72, 0x33, 0x33, 0x48, 0x35, 0x4a, 0x64, 0x76, 0x75, 0x6b, 0x31, 0x32, 0x5c, 0x0a, 0x09, 0x68, 0x43, 0x5a, 0x6e, 0x6c, 0x57, 0x52, 0x46, 0x51, 0x46, 0x31, 0x66, 0x6c, 0x78, 0x31, 0x56, 0x58, 0x76, 0x65, 0x76, 0x79, 0x2b, 0x70, 0x6e, 0x2b, 0x64, 0x4d, 0x34, 0x59, 0x44, 0x6d, 0x6b, 0x62, 0x5a, 0x69, 0x6a, 0x65, 0x45, 0x72, 0x35, 0x72, 0x2f, 0x75, 0x31, 0x78, 0x6a, 0x6a, 0x4b, 0x38, 0x54, 0x51, 0x6f, 0x6a, 0x41, 0x49, 0x75, 0x33, 0x76, 0x5a, 0x77, 0x4f, 0x4d, 0x54, 0x38, 0x77, 0x67, 0x4b, 0x49, 0x67, 0x4a, 0x34, 0x72, 0x5c, 0x0a, 0x09, 0x30, 0x4d, 0x30, 0x79, 0x7a, 0x46, 0x4d, 0x48, 0x47, 0x59, 0x43, 0x4a, 0x73, 0x59, 0x6d, 0x59, 0x44, 0x7a, 0x62, 0x70, 0x36, 0x57, 0x67, 0x79, 0x46, 0x58, 0x73, 0x38, 0x6f, 0x31, 0x37, 0x74, 0x5a, 0x58, 0x50, 0x63, 0x4a, 0x41, 0x66, 0x4c, 0x39, 0x4a, 0x76, 0x73, 0x61, 0x5a, 0x51, 0x74, 0x57, 0x66, 0x58, 0x74, 0x74, 0x6c, 0x49, 0x75, 0x64, 0x45, 0x42, 0x72, 0x41, 0x72, 0x76, 0x56, 0x73, 0x4e, 0x31, 0x77, 0x2f, 0x4e, 0x52, 0x48, 0x5c, 0x0a, 0x09, 0x50, 0x68, 0x78, 0x2f, 0x39, 0x6c, 0x39, 0x66, 0x73, 0x67, 0x79, 0x34, 0x41, 0x77, 0x42, 0x75, 0x7a, 0x63, 0x35, 0x36, 0x43, 0x6c, 0x61, 0x44, 0x56, 0x6e, 0x63, 0x4b, 0x51, 0x50, 0x52, 0x7a, 0x41, 0x43, 0x5a, 0x2f, 0x37, 0x32, 0x55, 0x2f, 0x69, 0x75, 0x33, 0x6a, 0x31, 0x54, 0x76, 0x51, 0x77, 0x4a, 0x32, 0x70, 0x4a, 0x71, 0x31, 0x59, 0x50, 0x6d, 0x42, 0x39, 0x57, 0x30, 0x6b, 0x72, 0x52, 0x46, 0x38, 0x4c, 0x39, 0x58, 0x57, 0x45, 0x5c, 0x0a, 0x09, 0x34, 0x4d, 0x64, 0x61, 0x37, 0x58, 0x58, 0x45, 0x6b, 0x45, 0x74, 0x30, 0x64, 0x52, 0x33, 0x65, 0x6f, 0x68, 0x31, 0x31, 0x6d, 0x76, 0x6d, 0x33, 0x2b, 0x70, 0x48, 0x31, 0x30, 0x30, 0x7a, 0x42, 0x33, 0x6c, 0x68, 0x6a, 0x52, 0x5a, 0x48, 0x67, 0x49, 0x71, 0x4d, 0x7a, 0x6c, 0x6c, 0x51, 0x65, 0x6e, 0x55, 0x34, 0x48, 0x2f, 0x58, 0x37, 0x66, 0x50, 0x79, 0x4f, 0x51, 0x64, 0x56, 0x43, 0x51, 0x66, 0x2b, 0x50, 0x6d, 0x32, 0x50, 0x67, 0x34, 0x5c, 0x0a, 0x09, 0x58, 0x4a, 0x5a, 0x47, 0x56, 0x42, 0x32, 0x4a, 0x39, 0x54, 0x6a, 0x35, 0x65, 0x4b, 0x7a, 0x4d, 0x53, 0x73, 0x76, 0x56, 0x6b, 0x70, 0x33, 0x65, 0x4c, 0x73, 0x76, 0x37, 0x44, 0x6d, 0x31, 0x5a, 0x57, 0x59, 0x58, 0x6d, 0x42, 0x38, 0x5a, 0x33, 0x61, 0x34, 0x65, 0x66, 0x4e, 0x53, 0x62, 0x4f, 0x6d, 0x77, 0x58, 0x43, 0x44, 0x72, 0x4c, 0x50, 0x45, 0x44, 0x52, 0x73, 0x51, 0x4c, 0x50, 0x35, 0x61, 0x67, 0x4b, 0x7a, 0x35, 0x73, 0x42, 0x55, 0x5c, 0x0a, 0x09, 0x57, 0x39, 0x37, 0x75, 0x4c, 0x5a, 0x50, 0x34, 0x37, 0x5a, 0x2f, 0x2f, 0x45, 0x51, 0x43, 0x75, 0x43, 0x39, 0x44, 0x50, 0x6d, 0x59, 0x62, 0x79, 0x45, 0x47, 0x6e, 0x31, 0x41, 0x4d, 0x42, 0x7a, 0x2b, 0x30, 0x77, 0x34, 0x68, 0x77, 0x4f, 0x6e, 0x37, 0x4d, 0x61, 0x76, 0x76, 0x4f, 0x41, 0x53, 0x4a, 0x6c, 0x67, 0x5a, 0x61, 0x37, 0x56, 0x52, 0x70, 0x77, 0x4b, 0x33, 0x49, 0x78, 0x73, 0x2f, 0x4b, 0x78, 0x58, 0x53, 0x6e, 0x4b, 0x70, 0x70, 0x5c, 0x0a, 0x09, 0x49, 0x2b, 0x54, 0x74, 0x4e, 0x53, 0x56, 0x53, 0x55, 0x75, 0x45, 0x72, 0x37, 0x38, 0x6a, 0x54, 0x69, 0x71, 0x39, 0x48, 0x4f, 0x37, 0x6f, 0x65, 0x2f, 0x7a, 0x5a, 0x71, 0x46, 0x39, 0x73, 0x6f, 0x35, 0x77, 0x35, 0x6c, 0x6e, 0x62, 0x72, 0x47, 0x5a, 0x63, 0x71, 0x76, 0x39, 0x58, 0x73, 0x39, 0x64, 0x4c, 0x70, 0x64, 0x6c, 0x4d, 0x35, 0x68, 0x32, 0x66, 0x6c, 0x46, 0x51, 0x71, 0x4b, 0x6d, 0x4a, 0x79, 0x51, 0x6c, 0x2b, 0x44, 0x56, 0x46, 0x5c, 0x0a, 0x09, 0x74, 0x79, 0x62, 0x6e, 0x74, 0x67, 0x79, 0x63, 0x39, 0x79, 0x54, 0x31, 0x62, 0x67, 0x63, 0x4a, 0x32, 0x7a, 0x6e, 0x53, 0x5a, 0x7a, 0x71, 0x31, 0x30, 0x77, 0x53, 0x37, 0x53, 0x2b, 0x33, 0x43, 0x47, 0x6b, 0x31, 0x39, 0x4a, 0x72, 0x55, 0x35, 0x61, 0x35, 0x71, 0x61, 0x4c, 0x6c, 0x6c, 0x62, 0x34, 0x44, 0x51, 0x4b, 0x49, 0x43, 0x7a, 0x62, 0x74, 0x32, 0x77, 0x33, 0x4a, 0x2b, 0x43, 0x33, 0x58, 0x76, 0x51, 0x63, 0x6e, 0x4c, 0x68, 0x7a, 0x5c, 0x0a, 0x09, 0x79, 0x70, 0x64, 0x30, 0x37, 0x76, 0x73, 0x54, 0x78, 0x76, 0x38, 0x64, 0x74, 0x48, 0x6f, 0x41, 0x34, 0x41, 0x44, 0x41, 0x6e, 0x65, 0x32, 0x50, 0x48, 0x56, 0x37, 0x34, 0x39, 0x41, 0x76, 0x77, 0x2f, 0x4d, 0x63, 0x2f, 0x52, 0x71, 0x6b, 0x62, 0x36, 0x73, 0x69, 0x54, 0x68, 0x59, 0x35, 0x4e, 0x35, 0x32, 0x73, 0x44, 0x53, 0x41, 0x56, 0x6e, 0x4f, 0x58, 0x56, 0x7a, 0x65, 0x6a, 0x58, 0x36, 0x4c, 0x54, 0x2b, 0x36, 0x48, 0x59, 0x6e, 0x2b, 0x5c, 0x0a, 0x09, 0x2f, 0x46, 0x79, 0x54, 0x6b, 0x39, 0x67, 0x50, 0x41, 0x45, 0x6e, 0x6a, 0x73, 0x48, 0x59, 0x63, 0x6a, 0x42, 0x34, 0x50, 0x6b, 0x6e, 0x4f, 0x32, 0x49, 0x65, 0x73, 0x49, 0x79, 0x6b, 0x48, 0x4e, 0x50, 0x7a, 0x69, 0x55, 0x49, 0x79, 0x4e, 0x2f, 0x7a, 0x7a, 0x2f, 0x64, 0x39, 0x6d, 0x79, 0x50, 0x77, 0x4d, 0x6f, 0x34, 0x4c, 0x47, 0x4f, 0x33, 0x53, 0x4d, 0x62, 0x35, 0x64, 0x41, 0x32, 0x48, 0x5a, 0x77, 0x6b, 0x32, 0x4c, 0x39, 0x78, 0x5a, 0x5c, 0x0a, 0x09, 0x58, 0x4e, 0x4b, 0x4f, 0x35, 0x44, 0x47, 0x31, 0x74, 0x5a, 0x72, 0x66, 0x65, 0x73, 0x32, 0x68, 0x53, 0x62, 0x5a, 0x36, 0x62, 0x4b, 0x4e, 0x41, 0x6d, 0x4e, 0x64, 0x4d, 0x67, 0x61, 0x36, 0x32, 0x6a, 0x6d, 0x5a, 0x37, 0x6b, 0x70, 0x2f, 0x68, 0x4f, 0x46, 0x7a, 0x2f, 0x6d, 0x52, 0x39, 0x34, 0x45, 0x69, 0x36, 0x35, 0x36, 0x4e, 0x79, 0x71, 0x6b, 0x67, 0x4d, 0x49, 0x71, 0x2f, 0x72, 0x53, 0x38, 0x4e, 0x57, 0x64, 0x41, 0x6a, 0x68, 0x4d, 0x5c, 0x0a, 0x09, 0x38, 0x66, 0x66, 0x35, 0x76, 0x2b, 0x6e, 0x6e, 0x6e, 0x34, 0x39, 0x7a, 0x54, 0x7a, 0x30, 0x70, 0x4b, 0x57, 0x5a, 0x46, 0x4e, 0x32, 0x30, 0x51, 0x56, 0x6e, 0x53, 0x72, 0x42, 0x57, 0x75, 0x62, 0x6e, 0x58, 0x61, 0x6d, 0x4a, 0x75, 0x50, 0x55, 0x66, 0x66, 0x4b, 0x36, 0x32, 0x67, 0x41, 0x35, 0x50, 0x31, 0x59, 0x45, 0x31, 0x50, 0x66, 0x34, 0x72, 0x66, 0x54, 0x53, 0x47, 0x69, 0x38, 0x33, 0x36, 0x4b, 0x5a, 0x73, 0x77, 0x68, 0x70, 0x48, 0x5c, 0x0a, 0x09, 0x6b, 0x35, 0x4d, 0x32, 0x52, 0x2b, 0x49, 0x55, 0x4c, 0x68, 0x79, 0x41, 0x79, 0x66, 0x45, 0x4a, 0x55, 0x42, 0x37, 0x57, 0x67, 0x4f, 0x31, 0x62, 0x58, 0x71, 0x6e, 0x63, 0x4b, 0x4f, 0x45, 0x31, 0x33, 0x51, 0x56, 0x6f, 0x50, 0x2b, 0x53, 0x6c, 0x59, 0x37, 0x59, 0x65, 0x55, 0x35, 0x4d, 0x38, 0x5a, 0x46, 0x2b, 0x68, 0x4a, 0x56, 0x6b, 0x33, 0x6b, 0x49, 0x37, 0x79, 0x54, 0x55, 0x47, 0x69, 0x43, 0x64, 0x68, 0x57, 0x30, 0x68, 0x33, 0x59, 0x5c, 0x0a, 0x09, 0x39, 0x7a, 0x54, 0x69, 0x36, 0x79, 0x63, 0x33, 0x55, 0x38, 0x36, 0x30, 0x62, 0x69, 0x7a, 0x65, 0x2b, 0x4c, 0x55, 0x6e, 0x6e, 0x72, 0x6b, 0x66, 0x76, 0x2f, 0x4c, 0x43, 0x5a, 0x37, 0x43, 0x54, 0x42, 0x49, 0x41, 0x6d, 0x56, 0x6b, 0x54, 0x62, 0x37, 0x34, 0x4a, 0x57, 0x65, 0x77, 0x32, 0x67, 0x65, 0x6a, 0x65, 0x56, 0x41, 0x77, 0x67, 0x59, 0x36, 0x32, 0x5a, 0x34, 0x37, 0x36, 0x2b, 0x38, 0x43, 0x4b, 0x64, 0x73, 0x6e, 0x7a, 0x59, 0x46, 0x5c, 0x0a, 0x09, 0x4f, 0x47, 0x72, 0x6e, 0x56, 0x6c, 0x4d, 0x45, 0x6b, 0x44, 0x75, 0x6b, 0x48, 0x45, 0x67, 0x5a, 0x42, 0x43, 0x39, 0x76, 0x6f, 0x57, 0x34, 0x64, 0x2f, 0x65, 0x73, 0x53, 0x2b, 0x74, 0x61, 0x4e, 0x4e, 0x67, 0x44, 0x70, 0x32, 0x50, 0x62, 0x72, 0x78, 0x44, 0x51, 0x31, 0x4f, 0x62, 0x34, 0x75, 0x4d, 0x79, 0x71, 0x43, 0x63, 0x71, 0x66, 0x67, 0x66, 0x49, 0x30, 0x61, 0x57, 0x78, 0x72, 0x78, 0x39, 0x66, 0x37, 0x35, 0x53, 0x6d, 0x49, 0x45, 0x5c, 0x0a, 0x09, 0x63, 0x35, 0x2b, 0x2f, 0x64, 0x6e, 0x34, 0x5a, 0x6c, 0x56, 0x50, 0x48, 0x30, 0x66, 0x4b, 0x77, 0x70, 0x47, 0x48, 0x6c, 0x46, 0x39, 0x59, 0x36, 0x6a, 0x33, 0x54, 0x62, 0x5a, 0x73, 0x44, 0x56, 0x63, 0x74, 0x44, 0x79, 0x71, 0x48, 0x6d, 0x79, 0x34, 0x36, 0x38, 0x46, 0x6c, 0x45, 0x30, 0x41, 0x62, 0x31, 0x33, 0x54, 0x34, 0x77, 0x6a, 0x6c, 0x62, 0x66, 0x6d, 0x73, 0x33, 0x49, 0x66, 0x56, 0x39, 0x73, 0x4e, 0x50, 0x32, 0x49, 0x4e, 0x33, 0x5c, 0x0a, 0x09, 0x76, 0x50, 0x4b, 0x6e, 0x30, 0x45, 0x31, 0x58, 0x2f, 0x41, 0x76, 0x54, 0x34, 0x42, 0x34, 0x69, 0x72, 0x66, 0x59, 0x2b, 0x67, 0x48, 0x74, 0x30, 0x7a, 0x44, 0x78, 0x78, 0x35, 0x7a, 0x54, 0x65, 0x2f, 0x56, 0x39, 0x65, 0x68, 0x47, 0x31, 0x6a, 0x66, 0x53, 0x50, 0x4b, 0x36, 0x70, 0x46, 0x49, 0x56, 0x31, 0x77, 0x4a, 0x4e, 0x46, 0x4a, 0x41, 0x47, 0x49, 0x58, 0x51, 0x2f, 0x4a, 0x77, 0x54, 0x6e, 0x79, 0x45, 0x64, 0x64, 0x45, 0x62, 0x37, 0x5c, 0x0a, 0x09, 0x76, 0x4a, 0x35, 0x31, 0x58, 0x6b, 0x65, 0x4e, 0x65, 0x68, 0x53, 0x70, 0x57, 0x70, 0x73, 0x69, 0x71, 0x34, 0x34, 0x56, 0x45, 0x68, 0x6a, 0x30, 0x61, 0x38, 0x62, 0x73, 0x64, 0x4e, 0x4c, 0x4b, 0x63, 0x71, 0x7a, 0x4d, 0x68, 0x62, 0x74, 0x51, 0x65, 0x4c, 0x57, 0x58, 0x72, 0x70, 0x39, 0x47, 0x5a, 0x58, 0x73, 0x35, 0x7a, 0x58, 0x61, 0x59, 0x5a, 0x41, 0x39, 0x37, 0x76, 0x4f, 0x35, 0x45, 0x43, 0x53, 0x66, 0x71, 0x63, 0x56, 0x43, 0x33, 0x5c, 0x0a, 0x09, 0x31, 0x6f, 0x41, 0x34, 0x6e, 0x30, 0x30, 0x4f, 0x72, 0x55, 0x47, 0x58, 0x62, 0x37, 0x57, 0x57, 0x54, 0x6b, 0x2b, 0x69, 0x6e, 0x69, 0x5a, 0x43, 0x73, 0x32, 0x35, 0x72, 0x2f, 0x71, 0x57, 0x56, 0x6a, 0x67, 0x49, 0x50, 0x4f, 0x62, 0x36, 0x56, 0x6e, 0x35, 0x73, 0x34, 0x66, 0x6e, 0x6f, 0x72, 0x2f, 0x75, 0x68, 0x58, 0x58, 0x6f, 0x77, 0x64, 0x57, 0x2f, 0x71, 0x71, 0x59, 0x51, 0x63, 0x34, 0x64, 0x36, 0x66, 0x42, 0x38, 0x6b, 0x4f, 0x6d, 0x5c, 0x0a, 0x09, 0x56, 0x5a, 0x34, 0x43, 0x75, 0x43, 0x73, 0x73, 0x77, 0x7a, 0x2f, 0x6e, 0x74, 0x42, 0x50, 0x78, 0x33, 0x6c, 0x64, 0x36, 0x45, 0x4c, 0x43, 0x69, 0x47, 0x56, 0x65, 0x2b, 0x2f, 0x7a, 0x38, 0x56, 0x61, 0x71, 0x31, 0x41, 0x6e, 0x65, 0x6a, 0x56, 0x52, 0x74, 0x47, 0x73, 0x73, 0x4f, 0x2f, 0x6d, 0x76, 0x45, 0x75, 0x75, 0x4e, 0x52, 0x6c, 0x4a, 0x33, 0x62, 0x65, 0x6b, 0x65, 0x6f, 0x59, 0x71, 0x65, 0x65, 0x63, 0x39, 0x63, 0x43, 0x4f, 0x53, 0x5c, 0x0a, 0x09, 0x34, 0x39, 0x54, 0x52, 0x7a, 0x34, 0x6e, 0x7a, 0x54, 0x6b, 0x6d, 0x6e, 0x61, 0x57, 0x78, 0x61, 0x53, 0x6b, 0x31, 0x52, 0x6b, 0x33, 0x39, 0x61, 0x45, 0x63, 0x74, 0x71, 0x33, 0x53, 0x6c, 0x4e, 0x38, 0x46, 0x7a, 0x4b, 0x6c, 0x71, 0x5a, 0x73, 0x54, 0x30, 0x39, 0x62, 0x39, 0x4c, 0x46, 0x46, 0x36, 0x57, 0x34, 0x35, 0x2b, 0x57, 0x42, 0x56, 0x6d, 0x6a, 0x4e, 0x59, 0x6f, 0x46, 0x68, 0x7a, 0x6f, 0x47, 0x58, 0x4f, 0x78, 0x39, 0x38, 0x55, 0x5c, 0x0a, 0x09, 0x54, 0x50, 0x69, 0x6f, 0x4e, 0x4a, 0x6a, 0x77, 0x50, 0x71, 0x30, 0x67, 0x78, 0x6d, 0x74, 0x61, 0x6a, 0x68, 0x2b, 0x64, 0x66, 0x32, 0x6f, 0x72, 0x2f, 0x75, 0x4b, 0x31, 0x50, 0x34, 0x75, 0x39, 0x4a, 0x32, 0x79, 0x48, 0x2f, 0x45, 0x33, 0x44, 0x32, 0x4d, 0x48, 0x6e, 0x73, 0x49, 0x71, 0x30, 0x32, 0x6c, 0x4f, 0x41, 0x39, 0x34, 0x72, 0x76, 0x37, 0x49, 0x63, 0x50, 0x4c, 0x7a, 0x78, 0x6e, 0x50, 0x39, 0x35, 0x39, 0x36, 0x59, 0x73, 0x77, 0x5c, 0x0a, 0x09, 0x50, 0x65, 0x34, 0x66, 0x4d, 0x74, 0x48, 0x52, 0x53, 0x55, 0x63, 0x39, 0x6f, 0x42, 0x61, 0x77, 0x6c, 0x53, 0x70, 0x71, 0x68, 0x4c, 0x59, 0x45, 0x43, 0x33, 0x5a, 0x64, 0x47, 0x35, 0x6f, 0x32, 0x48, 0x76, 0x6b, 0x35, 0x2b, 0x6b, 0x63, 0x73, 0x62, 0x49, 0x64, 0x6d, 0x59, 0x6a, 0x69, 0x4b, 0x2f, 0x71, 0x55, 0x52, 0x38, 0x62, 0x4a, 0x70, 0x39, 0x4e, 0x4f, 0x6d, 0x70, 0x4a, 0x38, 0x64, 0x48, 0x44, 0x55, 0x6d, 0x36, 0x7a, 0x6b, 0x45, 0x5c, 0x0a, 0x09, 0x7a, 0x5a, 0x63, 0x56, 0x50, 0x53, 0x33, 0x6a, 0x74, 0x79, 0x4b, 0x6d, 0x4e, 0x4e, 0x48, 0x6d, 0x68, 0x35, 0x71, 0x73, 0x42, 0x33, 0x71, 0x61, 0x51, 0x4d, 0x73, 0x43, 0x68, 0x58, 0x53, 0x74, 0x52, 0x55, 0x35, 0x74, 0x6d, 0x76, 0x76, 0x6c, 0x31, 0x31, 0x4d, 0x62, 0x30, 0x52, 0x76, 0x4c, 0x30, 0x67, 0x56, 0x52, 0x43, 0x59, 0x4d, 0x70, 0x51, 0x4b, 0x53, 0x4c, 0x6c, 0x39, 0x6f, 0x65, 0x74, 0x53, 0x34, 0x31, 0x63, 0x49, 0x5a, 0x79, 0x5c, 0x0a, 0x09, 0x4a, 0x30, 0x35, 0x50, 0x34, 0x58, 0x33, 0x2f, 0x35, 0x61, 0x66, 0x78, 0x38, 0x46, 0x50, 0x33, 0x31, 0x42, 0x57, 0x53, 0x33, 0x32, 0x76, 0x45, 0x32, 0x37, 0x47, 0x4b, 0x74, 0x49, 0x71, 0x33, 0x41, 0x51, 0x6c, 0x77, 0x37, 0x6d, 0x4e, 0x77, 0x37, 0x70, 0x33, 0x4a, 0x2b, 0x59, 0x6f, 0x75, 0x4f, 0x6e, 0x63, 0x2f, 0x50, 0x76, 0x44, 0x61, 0x6e, 0x38, 0x4d, 0x70, 0x32, 0x36, 0x62, 0x4d, 0x69, 0x42, 0x4f, 0x6f, 0x56, 0x6f, 0x6a, 0x39, 0x5c, 0x0a, 0x09, 0x49, 0x4d, 0x30, 0x6f, 0x4a, 0x56, 0x74, 0x6c, 0x64, 0x48, 0x61, 0x67, 0x6e, 0x56, 0x76, 0x58, 0x30, 0x61, 0x76, 0x4c, 0x73, 0x6f, 0x35, 0x38, 0x36, 0x49, 0x58, 0x7a, 0x78, 0x71, 0x4d, 0x53, 0x50, 0x34, 0x5a, 0x71, 0x78, 0x2b, 0x6f, 0x2f, 0x64, 0x61, 0x77, 0x30, 0x67, 0x6e, 0x42, 0x4a, 0x36, 0x49, 0x69, 0x56, 0x41, 0x6f, 0x59, 0x4e, 0x68, 0x35, 0x5a, 0x7a, 0x61, 0x65, 0x65, 0x30, 0x2b, 0x4e, 0x62, 0x58, 0x72, 0x57, 0x74, 0x70, 0x5c, 0x0a, 0x09, 0x2b, 0x33, 0x57, 0x37, 0x2b, 0x6f, 0x47, 0x65, 0x65, 0x6c, 0x6f, 0x68, 0x6f, 0x55, 0x62, 0x6d, 0x4f, 0x32, 0x6e, 0x62, 0x7a, 0x56, 0x48, 0x5a, 0x72, 0x71, 0x33, 0x35, 0x53, 0x6b, 0x74, 0x72, 0x77, 0x45, 0x30, 0x74, 0x30, 0x67, 0x49, 0x39, 0x66, 0x6c, 0x34, 0x43, 0x4a, 0x70, 0x38, 0x43, 0x70, 0x55, 0x38, 0x2b, 0x57, 0x4f, 0x30, 0x41, 0x77, 0x46, 0x6b, 0x6e, 0x37, 0x4d, 0x45, 0x48, 0x58, 0x2f, 0x63, 0x4b, 0x6e, 0x48, 0x66, 0x67, 0x5c, 0x0a, 0x09, 0x70, 0x4e, 0x72, 0x70, 0x6b, 0x35, 0x2b, 0x62, 0x70, 0x31, 0x38, 0x46, 0x38, 0x41, 0x56, 0x6a, 0x4b, 0x41, 0x2b, 0x5a, 0x56, 0x67, 0x30, 0x41, 0x73, 0x72, 0x4f, 0x65, 0x48, 0x41, 0x35, 0x2f, 0x45, 0x58, 0x41, 0x76, 0x42, 0x50, 0x42, 0x31, 0x2f, 0x35, 0x55, 0x4e, 0x42, 0x72, 0x6a, 0x2b, 0x33, 0x50, 0x30, 0x6e, 0x76, 0x75, 0x57, 0x56, 0x50, 0x2f, 0x4b, 0x4d, 0x52, 0x78, 0x50, 0x6f, 0x58, 0x51, 0x44, 0x6d, 0x41, 0x52, 0x77, 0x42, 0x5c, 0x0a, 0x09, 0x55, 0x46, 0x67, 0x6d, 0x30, 0x5a, 0x78, 0x6b, 0x70, 0x59, 0x72, 0x56, 0x78, 0x6d, 0x6b, 0x39, 0x55, 0x47, 0x49, 0x5a, 0x6a, 0x32, 0x56, 0x63, 0x2f, 0x4c, 0x79, 0x4f, 0x37, 0x74, 0x78, 0x67, 0x55, 0x71, 0x50, 0x69, 0x45, 0x56, 0x41, 0x76, 0x76, 0x75, 0x6d, 0x53, 0x4b, 0x78, 0x6d, 0x6e, 0x45, 0x34, 0x62, 0x45, 0x2b, 0x78, 0x73, 0x56, 0x4b, 0x53, 0x6d, 0x70, 0x54, 0x36, 0x49, 0x4d, 0x7a, 0x36, 0x70, 0x34, 0x74, 0x4a, 0x4a, 0x31, 0x5c, 0x0a, 0x09, 0x6a, 0x34, 0x34, 0x73, 0x6d, 0x63, 0x6d, 0x36, 0x64, 0x6b, 0x74, 0x53, 0x67, 0x79, 0x6d, 0x63, 0x36, 0x6d, 0x6c, 0x4f, 0x63, 0x2f, 0x38, 0x53, 0x75, 0x45, 0x49, 0x4e, 0x65, 0x2f, 0x72, 0x56, 0x70, 0x41, 0x6e, 0x37, 0x43, 0x75, 0x63, 0x6f, 0x72, 0x5a, 0x57, 0x75, 0x63, 0x77, 0x52, 0x51, 0x6b, 0x78, 0x6d, 0x63, 0x4c, 0x52, 0x45, 0x72, 0x75, 0x4e, 0x77, 0x39, 0x63, 0x2f, 0x69, 0x36, 0x76, 0x53, 0x64, 0x73, 0x2f, 0x79, 0x55, 0x41, 0x5c, 0x0a, 0x09, 0x6c, 0x34, 0x4e, 0x6f, 0x68, 0x74, 0x57, 0x59, 0x41, 0x66, 0x41, 0x78, 0x41, 0x45, 0x38, 0x44, 0x38, 0x47, 0x59, 0x51, 0x49, 0x58, 0x76, 0x6b, 0x55, 0x38, 0x78, 0x78, 0x50, 0x42, 0x52, 0x61, 0x39, 0x5a, 0x38, 0x47, 0x4b, 0x36, 0x2f, 0x37, 0x70, 0x44, 0x39, 0x77, 0x41, 0x49, 0x69, 0x6d, 0x41, 0x4f, 0x77, 0x44, 0x55, 0x4d, 0x4b, 0x35, 0x57, 0x77, 0x41, 0x63, 0x75, 0x66, 0x33, 0x65, 0x67, 0x2f, 0x6a, 0x6f, 0x46, 0x56, 0x66, 0x6a, 0x5c, 0x0a, 0x09, 0x6f, 0x31, 0x2f, 0x38, 0x4f, 0x71, 0x36, 0x73, 0x74, 0x67, 0x73, 0x54, 0x38, 0x4c, 0x38, 0x42, 0x2f, 0x47, 0x43, 0x6f, 0x56, 0x70, 0x32, 0x72, 0x6d, 0x32, 0x48, 0x74, 0x70, 0x34, 0x71, 0x56, 0x35, 0x58, 0x55, 0x64, 0x4b, 0x31, 0x72, 0x7a, 0x74, 0x4d, 0x39, 0x71, 0x67, 0x39, 0x66, 0x52, 0x5a, 0x58, 0x6a, 0x5a, 0x55, 0x55, 0x36, 0x70, 0x32, 0x32, 0x6a, 0x69, 0x53, 0x34, 0x39, 0x4c, 0x74, 0x39, 0x45, 0x30, 0x50, 0x73, 0x36, 0x44, 0x5c, 0x0a, 0x09, 0x35, 0x6f, 0x74, 0x66, 0x61, 0x5a, 0x49, 0x46, 0x67, 0x54, 0x41, 0x73, 0x68, 0x76, 0x46, 0x74, 0x77, 0x6b, 0x63, 0x37, 0x33, 0x6c, 0x48, 0x6e, 0x6d, 0x73, 0x59, 0x4a, 0x53, 0x4f, 0x64, 0x6f, 0x49, 0x6f, 0x75, 0x48, 0x70, 0x6e, 0x4f, 0x61, 0x52, 0x75, 0x6c, 0x73, 0x56, 0x46, 0x33, 0x75, 0x75, 0x4e, 0x71, 0x52, 0x6d, 0x2b, 0x71, 0x74, 0x70, 0x45, 0x64, 0x62, 0x66, 0x33, 0x58, 0x72, 0x31, 0x6a, 0x6f, 0x57, 0x67, 0x50, 0x2f, 0x2f, 0x5c, 0x0a, 0x09, 0x4a, 0x79, 0x36, 0x2b, 0x34, 0x44, 0x6c, 0x76, 0x66, 0x50, 0x46, 0x7a, 0x71, 0x67, 0x73, 0x30, 0x58, 0x51, 0x58, 0x4e, 0x47, 0x56, 0x2f, 0x49, 0x6c, 0x32, 0x53, 0x42, 0x64, 0x6c, 0x56, 0x6f, 0x7a, 0x58, 0x34, 0x62, 0x73, 0x4c, 0x7a, 0x75, 0x55, 0x2f, 0x55, 0x58, 0x31, 0x6f, 0x64, 0x47, 0x72, 0x2b, 0x6f, 0x39, 0x67, 0x6a, 0x2f, 0x75, 0x67, 0x41, 0x2b, 0x6b, 0x53, 0x58, 0x4f, 0x7a, 0x41, 0x73, 0x44, 0x4f, 0x61, 0x36, 0x58, 0x78, 0x5c, 0x0a, 0x09, 0x63, 0x6e, 0x72, 0x50, 0x64, 0x6a, 0x67, 0x48, 0x32, 0x4f, 0x61, 0x6f, 0x6e, 0x58, 0x59, 0x6c, 0x58, 0x71, 0x44, 0x61, 0x49, 0x6e, 0x55, 0x2b, 0x50, 0x5a, 0x59, 0x38, 0x36, 0x50, 0x48, 0x77, 0x32, 0x6b, 0x31, 0x39, 0x48, 0x38, 0x31, 0x78, 0x33, 0x55, 0x39, 0x7a, 0x2f, 0x61, 0x49, 0x6f, 0x6b, 0x4c, 0x4e, 0x62, 0x67, 0x64, 0x2b, 0x4e, 0x4a, 0x54, 0x53, 0x50, 0x54, 0x73, 0x71, 0x33, 0x4f, 0x59, 0x62, 0x7a, 0x58, 0x43, 0x57, 0x74, 0x5c, 0x0a, 0x09, 0x4d, 0x30, 0x6f, 0x48, 0x7a, 0x61, 0x42, 0x67, 0x41, 0x31, 0x38, 0x6f, 0x4d, 0x57, 0x71, 0x64, 0x53, 0x4c, 0x5a, 0x76, 0x77, 0x2b, 0x41, 0x6f, 0x50, 0x64, 0x6c, 0x41, 0x30, 0x74, 0x77, 0x76, 0x42, 0x38, 0x5a, 0x71, 0x33, 0x47, 0x38, 0x42, 0x38, 0x4f, 0x72, 0x62, 0x72, 0x2f, 0x71, 0x53, 0x39, 0x35, 0x30, 0x52, 0x50, 0x72, 0x4f, 0x61, 0x74, 0x47, 0x70, 0x50, 0x41, 0x32, 0x72, 0x36, 0x37, 0x70, 0x43, 0x4b, 0x50, 0x6b, 0x78, 0x77, 0x5c, 0x0a, 0x09, 0x4d, 0x77, 0x35, 0x75, 0x47, 0x6d, 0x69, 0x4b, 0x4c, 0x50, 0x62, 0x44, 0x46, 0x39, 0x4b, 0x74, 0x30, 0x69, 0x68, 0x6e, 0x50, 0x57, 0x31, 0x6c, 0x47, 0x61, 0x64, 0x6c, 0x57, 0x4a, 0x59, 0x6a, 0x70, 0x51, 0x59, 0x6b, 0x6a, 0x56, 0x61, 0x32, 0x6d, 0x50, 0x4a, 0x57, 0x74, 0x39, 0x48, 0x38, 0x31, 0x42, 0x6b, 0x48, 0x6b, 0x5a, 0x58, 0x53, 0x38, 0x7a, 0x42, 0x47, 0x7a, 0x59, 0x4d, 0x65, 0x76, 0x39, 0x56, 0x2b, 0x52, 0x76, 0x5a, 0x4f, 0x5c, 0x0a, 0x09, 0x6a, 0x4b, 0x4f, 0x52, 0x41, 0x34, 0x7a, 0x6a, 0x55, 0x63, 0x36, 0x6a, 0x78, 0x77, 0x4d, 0x34, 0x79, 0x4f, 0x63, 0x66, 0x4e, 0x45, 0x67, 0x33, 0x6a, 0x58, 0x63, 0x55, 0x4f, 0x49, 0x51, 0x32, 0x72, 0x48, 0x78, 0x44, 0x77, 0x68, 0x56, 0x33, 0x30, 0x44, 0x52, 0x50, 0x73, 0x53, 0x4b, 0x30, 0x66, 0x46, 0x4c, 0x54, 0x44, 0x6b, 0x68, 0x57, 0x76, 0x73, 0x50, 0x72, 0x57, 0x50, 0x71, 0x4d, 0x33, 0x37, 0x38, 0x65, 0x61, 0x71, 0x39, 0x32, 0x5c, 0x0a, 0x09, 0x6c, 0x42, 0x39, 0x46, 0x36, 0x2f, 0x4c, 0x6a, 0x6f, 0x4b, 0x4f, 0x4a, 0x41, 0x4c, 0x67, 0x46, 0x41, 0x42, 0x2b, 0x51, 0x5a, 0x2f, 0x56, 0x43, 0x6b, 0x42, 0x53, 0x63, 0x4c, 0x68, 0x75, 0x75, 0x53, 0x55, 0x64, 0x4e, 0x30, 0x33, 0x7a, 0x52, 0x4b, 0x32, 0x43, 0x32, 0x36, 0x70, 0x4b, 0x53, 0x36, 0x54, 0x57, 0x58, 0x6c, 0x4c, 0x4f, 0x4e, 0x6f, 0x6a, 0x6d, 0x71, 0x45, 0x76, 0x76, 0x66, 0x67, 0x6f, 0x76, 0x67, 0x76, 0x43, 0x54, 0x4f, 0x5c, 0x0a, 0x09, 0x38, 0x54, 0x48, 0x79, 0x36, 0x4d, 0x4a, 0x62, 0x71, 0x35, 0x31, 0x58, 0x6d, 0x6d, 0x5a, 0x69, 0x75, 0x45, 0x35, 0x7a, 0x6e, 0x58, 0x4b, 0x6e, 0x2b, 0x64, 0x50, 0x6a, 0x54, 0x72, 0x4f, 0x78, 0x4e, 0x42, 0x75, 0x71, 0x36, 0x37, 0x71, 0x6b, 0x72, 0x41, 0x62, 0x7a, 0x55, 0x66, 0x4b, 0x56, 0x59, 0x36, 0x76, 0x62, 0x61, 0x51, 0x4c, 0x6c, 0x64, 0x45, 0x7a, 0x61, 0x41, 0x58, 0x55, 0x57, 0x74, 0x6a, 0x4c, 0x76, 0x46, 0x74, 0x69, 0x54, 0x5c, 0x0a, 0x09, 0x4f, 0x75, 0x4b, 0x41, 0x4c, 0x4b, 0x2f, 0x4c, 0x57, 0x6b, 0x71, 0x4f, 0x56, 0x78, 0x6b, 0x73, 0x72, 0x7a, 0x6c, 0x74, 0x4f, 0x41, 0x44, 0x63, 0x64, 0x74, 0x55, 0x56, 0x34, 0x66, 0x43, 0x74, 0x41, 0x41, 0x71, 0x4e, 0x6a, 0x50, 0x34, 0x34, 0x4b, 0x4e, 0x70, 0x36, 0x6d, 0x30, 0x6f, 0x74, 0x38, 0x42, 0x53, 0x33, 0x6d, 0x31, 0x66, 0x73, 0x51, 0x79, 0x6c, 0x74, 0x69, 0x4c, 0x79, 0x46, 0x46, 0x4d, 0x47, 0x74, 0x43, 0x43, 0x6a, 0x76, 0x5c, 0x0a, 0x09, 0x52, 0x33, 0x4e, 0x48, 0x73, 0x7a, 0x4d, 0x44, 0x7a, 0x59, 0x55, 0x38, 0x55, 0x2f, 0x65, 0x52, 0x76, 0x6a, 0x34, 0x36, 0x6a, 0x55, 0x7a, 0x61, 0x58, 0x4f, 0x30, 0x78, 0x51, 0x68, 0x31, 0x48, 0x57, 0x52, 0x46, 0x59, 0x71, 0x2f, 0x4c, 0x35, 0x69, 0x6e, 0x43, 0x6c, 0x48, 0x6b, 0x2b, 0x36, 0x4d, 0x6c, 0x39, 0x48, 0x2f, 0x46, 0x51, 0x6e, 0x6e, 0x45, 0x69, 0x56, 0x35, 0x58, 0x64, 0x53, 0x6f, 0x44, 0x34, 0x74, 0x66, 0x75, 0x31, 0x4d, 0x5c, 0x0a, 0x09, 0x59, 0x7a, 0x53, 0x77, 0x32, 0x32, 0x33, 0x71, 0x67, 0x43, 0x44, 0x74, 0x70, 0x73, 0x6c, 0x47, 0x6d, 0x6e, 0x6a, 0x56, 0x2f, 0x56, 0x74, 0x54, 0x30, 0x4a, 0x6f, 0x76, 0x45, 0x6e, 0x4b, 0x55, 0x65, 0x79, 0x48, 0x6f, 0x4d, 0x41, 0x48, 0x58, 0x47, 0x63, 0x4e, 0x5a, 0x63, 0x39, 0x70, 0x77, 0x41, 0x41, 0x6a, 0x6b, 0x2f, 0x4a, 0x75, 0x45, 0x2f, 0x6b, 0x5a, 0x48, 0x5a, 0x47, 0x36, 0x55, 0x58, 0x4d, 0x42, 0x79, 0x42, 0x56, 0x67, 0x2f, 0x5c, 0x0a, 0x09, 0x48, 0x44, 0x51, 0x71, 0x2f, 0x6b, 0x6f, 0x38, 0x62, 0x6a, 0x49, 0x6d, 0x33, 0x6f, 0x4a, 0x73, 0x57, 0x2f, 0x65, 0x76, 0x55, 0x33, 0x6e, 0x4a, 0x75, 0x78, 0x30, 0x70, 0x5a, 0x44, 0x38, 0x45, 0x62, 0x71, 0x67, 0x6b, 0x2b, 0x70, 0x45, 0x77, 0x70, 0x45, 0x64, 0x56, 0x47, 0x31, 0x4e, 0x61, 0x4b, 0x6f, 0x32, 0x55, 0x75, 0x6f, 0x53, 0x56, 0x59, 0x65, 0x6b, 0x78, 0x31, 0x4f, 0x56, 0x53, 0x57, 0x65, 0x72, 0x7a, 0x2b, 0x74, 0x5a, 0x6e, 0x5c, 0x0a, 0x09, 0x71, 0x67, 0x55, 0x58, 0x2b, 0x65, 0x56, 0x6a, 0x31, 0x65, 0x50, 0x53, 0x51, 0x43, 0x52, 0x35, 0x6c, 0x52, 0x5a, 0x67, 0x5a, 0x51, 0x37, 0x61, 0x53, 0x58, 0x55, 0x66, 0x56, 0x74, 0x38, 0x61, 0x5a, 0x4e, 0x4b, 0x6f, 0x62, 0x67, 0x57, 0x59, 0x5a, 0x71, 0x44, 0x56, 0x59, 0x4d, 0x5a, 0x33, 0x6e, 0x36, 0x62, 0x42, 0x78, 0x48, 0x30, 0x47, 0x4c, 0x50, 0x69, 0x74, 0x4a, 0x78, 0x30, 0x54, 0x41, 0x48, 0x44, 0x62, 0x56, 0x56, 0x38, 0x43, 0x5c, 0x0a, 0x09, 0x41, 0x44, 0x6a, 0x67, 0x74, 0x51, 0x51, 0x73, 0x63, 0x6e, 0x4e, 0x4f, 0x6f, 0x33, 0x30, 0x67, 0x2f, 0x68, 0x77, 0x41, 0x56, 0x37, 0x73, 0x38, 0x73, 0x6a, 0x66, 0x4f, 0x31, 0x75, 0x55, 0x30, 0x77, 0x6b, 0x4d, 0x64, 0x38, 0x37, 0x4d, 0x57, 0x79, 0x48, 0x42, 0x46, 0x63, 0x6d, 0x54, 0x6e, 0x34, 0x43, 0x4a, 0x62, 0x61, 0x62, 0x34, 0x57, 0x61, 0x6b, 0x6f, 0x48, 0x73, 0x4a, 0x39, 0x61, 0x35, 0x41, 0x36, 0x76, 0x6a, 0x59, 0x33, 0x33, 0x5c, 0x0a, 0x09, 0x6f, 0x31, 0x31, 0x5a, 0x52, 0x37, 0x4a, 0x52, 0x32, 0x55, 0x6e, 0x49, 0x75, 0x6b, 0x49, 0x4e, 0x69, 0x32, 0x66, 0x65, 0x72, 0x6a, 0x56, 0x4e, 0x6b, 0x34, 0x43, 0x70, 0x39, 0x32, 0x50, 0x59, 0x50, 0x33, 0x32, 0x6d, 0x78, 0x38, 0x47, 0x50, 0x35, 0x59, 0x33, 0x57, 0x70, 0x6a, 0x4a, 0x32, 0x66, 0x51, 0x37, 0x32, 0x54, 0x57, 0x73, 0x6a, 0x71, 0x52, 0x31, 0x59, 0x62, 0x33, 0x37, 0x69, 0x4f, 0x56, 0x50, 0x61, 0x31, 0x30, 0x71, 0x67, 0x5c, 0x0a, 0x09, 0x78, 0x44, 0x50, 0x5a, 0x36, 0x73, 0x6f, 0x2f, 0x4f, 0x4e, 0x52, 0x2b, 0x73, 0x4a, 0x35, 0x30, 0x54, 0x41, 0x41, 0x41, 0x6f, 0x35, 0x73, 0x42, 0x2f, 0x49, 0x35, 0x47, 0x30, 0x4b, 0x62, 0x49, 0x36, 0x55, 0x78, 0x7a, 0x6b, 0x4b, 0x57, 0x61, 0x31, 0x77, 0x35, 0x30, 0x70, 0x45, 0x30, 0x6a, 0x46, 0x74, 0x2b, 0x5a, 0x6f, 0x4f, 0x65, 0x41, 0x54, 0x61, 0x6b, 0x65, 0x32, 0x48, 0x57, 0x64, 0x72, 0x59, 0x42, 0x39, 0x74, 0x2f, 0x69, 0x52, 0x5c, 0x0a, 0x09, 0x6e, 0x47, 0x75, 0x44, 0x6c, 0x30, 0x35, 0x4e, 0x72, 0x49, 0x37, 0x56, 0x76, 0x78, 0x32, 0x35, 0x37, 0x4e, 0x7a, 0x49, 0x79, 0x6e, 0x44, 0x71, 0x75, 0x6d, 0x6c, 0x32, 0x6b, 0x59, 0x4b, 0x48, 0x4c, 0x65, 0x4e, 0x61, 0x44, 0x6d, 0x46, 0x70, 0x7a, 0x53, 0x72, 0x6e, 0x7a, 0x47, 0x39, 0x4e, 0x6d, 0x5a, 0x6c, 0x32, 0x57, 0x4e, 0x32, 0x58, 0x35, 0x42, 0x32, 0x6f, 0x6f, 0x59, 0x65, 0x45, 0x50, 0x76, 0x52, 0x47, 0x71, 0x32, 0x5a, 0x41, 0x5c, 0x0a, 0x09, 0x35, 0x4d, 0x43, 0x58, 0x51, 0x72, 0x5a, 0x6c, 0x6d, 0x31, 0x5a, 0x2f, 0x6e, 0x43, 0x39, 0x65, 0x7a, 0x38, 0x45, 0x56, 0x44, 0x76, 0x68, 0x37, 0x6f, 0x35, 0x6c, 0x31, 0x6f, 0x57, 0x4d, 0x47, 0x41, 0x47, 0x36, 0x76, 0x73, 0x34, 0x44, 0x66, 0x64, 0x6d, 0x71, 0x33, 0x6b, 0x35, 0x57, 0x4f, 0x6a, 0x34, 0x35, 0x34, 0x61, 0x54, 0x61, 0x51, 0x70, 0x76, 0x6a, 0x4e, 0x76, 0x37, 0x6e, 0x48, 0x79, 0x33, 0x44, 0x6a, 0x64, 0x36, 0x71, 0x38, 0x5c, 0x0a, 0x09, 0x5a, 0x54, 0x77, 0x36, 0x4c, 0x65, 0x56, 0x4f, 0x56, 0x4a, 0x74, 0x2f, 0x32, 0x70, 0x36, 0x56, 0x54, 0x4b, 0x5a, 0x67, 0x45, 0x39, 0x61, 0x33, 0x36, 0x33, 0x5a, 0x30, 0x6e, 0x38, 0x79, 0x77, 0x6b, 0x72, 0x71, 0x36, 0x50, 0x57, 0x73, 0x73, 0x6d, 0x6d, 0x51, 0x32, 0x6b, 0x6c, 0x37, 0x54, 0x33, 0x47, 0x74, 0x51, 0x61, 0x67, 0x4b, 0x50, 0x4d, 0x42, 0x70, 0x2b, 0x74, 0x63, 0x6d, 0x5a, 0x65, 0x42, 0x38, 0x79, 0x6f, 0x78, 0x69, 0x74, 0x5c, 0x0a, 0x09, 0x6a, 0x79, 0x43, 0x68, 0x4f, 0x76, 0x6e, 0x6d, 0x2f, 0x4e, 0x6b, 0x62, 0x74, 0x64, 0x49, 0x78, 0x38, 0x58, 0x55, 0x44, 0x43, 0x61, 0x41, 0x36, 0x30, 0x76, 0x4f, 0x78, 0x38, 0x4a, 0x57, 0x56, 0x74, 0x43, 0x2b, 0x52, 0x31, 0x58, 0x30, 0x59, 0x77, 0x46, 0x33, 0x59, 0x49, 0x44, 0x70, 0x6d, 0x41, 0x49, 0x44, 0x52, 0x45, 0x4d, 0x42, 0x7a, 0x41, 0x64, 0x79, 0x34, 0x55, 0x6b, 0x47, 0x5a, 0x6f, 0x71, 0x62, 0x4f, 0x31, 0x42, 0x54, 0x6c, 0x5c, 0x0a, 0x09, 0x6d, 0x6f, 0x79, 0x61, 0x52, 0x79, 0x7a, 0x5a, 0x33, 0x74, 0x45, 0x35, 0x53, 0x37, 0x68, 0x75, 0x67, 0x5a, 0x4e, 0x75, 0x54, 0x33, 0x4b, 0x71, 0x6f, 0x36, 0x6c, 0x63, 0x37, 0x5a, 0x66, 0x58, 0x74, 0x44, 0x6d, 0x6e, 0x6a, 0x71, 0x30, 0x4e, 0x73, 0x6b, 0x35, 0x6c, 0x4a, 0x53, 0x65, 0x6c, 0x53, 0x2b, 0x56, 0x6e, 0x38, 0x63, 0x6a, 0x35, 0x30, 0x55, 0x44, 0x44, 0x36, 0x2b, 0x71, 0x73, 0x62, 0x47, 0x56, 0x79, 0x4a, 0x71, 0x38, 0x63, 0x5c, 0x0a, 0x09, 0x79, 0x4a, 0x73, 0x79, 0x46, 0x6a, 0x34, 0x42, 0x63, 0x4f, 0x4a, 0x38, 0x7a, 0x62, 0x48, 0x64, 0x74, 0x75, 0x64, 0x53, 0x32, 0x67, 0x44, 0x46, 0x64, 0x75, 0x78, 0x41, 0x6b, 0x50, 0x49, 0x58, 0x61, 0x6a, 0x57, 0x56, 0x30, 0x32, 0x65, 0x6c, 0x76, 0x63, 0x58, 0x2b, 0x53, 0x77, 0x4c, 0x65, 0x42, 0x4e, 0x51, 0x42, 0x63, 0x4c, 0x33, 0x70, 0x6d, 0x41, 0x49, 0x41, 0x4a, 0x6f, 0x53, 0x37, 0x48, 0x58, 0x41, 0x78, 0x67, 0x4b, 0x73, 0x74, 0x5c, 0x0a, 0x09, 0x42, 0x35, 0x63, 0x6f, 0x72, 0x4f, 0x38, 0x41, 0x2b, 0x4a, 0x4a, 0x53, 0x57, 0x55, 0x31, 0x6d, 0x7a, 0x59, 0x2f, 0x54, 0x65, 0x39, 0x49, 0x61, 0x37, 0x62, 0x55, 0x6a, 0x38, 0x32, 0x6a, 0x4d, 0x4d, 0x35, 0x4f, 0x6d, 0x74, 0x4e, 0x4b, 0x4b, 0x68, 0x6d, 0x6c, 0x61, 0x6e, 0x34, 0x37, 0x4a, 0x63, 0x6d, 0x34, 0x4c, 0x37, 0x4e, 0x49, 0x73, 0x52, 0x34, 0x37, 0x55, 0x6e, 0x67, 0x44, 0x59, 0x6d, 0x55, 0x4b, 0x41, 0x49, 0x53, 0x66, 0x71, 0x5c, 0x0a, 0x09, 0x70, 0x57, 0x50, 0x55, 0x6a, 0x71, 0x6e, 0x35, 0x74, 0x63, 0x64, 0x58, 0x66, 0x32, 0x71, 0x51, 0x6c, 0x58, 0x70, 0x4c, 0x64, 0x2b, 0x4f, 0x6c, 0x59, 0x4b, 0x71, 0x31, 0x4a, 0x72, 0x2f, 0x70, 0x6a, 0x46, 0x48, 0x66, 0x53, 0x41, 0x57, 0x43, 0x76, 0x43, 0x31, 0x48, 0x72, 0x65, 0x58, 0x51, 0x42, 0x4b, 0x34, 0x31, 0x4c, 0x35, 0x53, 0x4d, 0x52, 0x5a, 0x4d, 0x4f, 0x49, 0x67, 0x35, 0x34, 0x73, 0x77, 0x4f, 0x75, 0x73, 0x71, 0x31, 0x7a, 0x5c, 0x0a, 0x09, 0x66, 0x65, 0x69, 0x59, 0x41, 0x67, 0x42, 0x41, 0x67, 0x4d, 0x44, 0x4e, 0x44, 0x72, 0x67, 0x51, 0x63, 0x47, 0x38, 0x44, 0x4d, 0x4d, 0x66, 0x4c, 0x6a, 0x42, 0x49, 0x59, 0x4e, 0x31, 0x69, 0x74, 0x4c, 0x47, 0x31, 0x77, 0x32, 0x6d, 0x41, 0x73, 0x42, 0x65, 0x6f, 0x37, 0x44, 0x47, 0x6c, 0x76, 0x69, 0x44, 0x30, 0x32, 0x70, 0x63, 0x6e, 0x61, 0x43, 0x47, 0x58, 0x4e, 0x39, 0x4e, 0x77, 0x6f, 0x67, 0x39, 0x4f, 0x52, 0x57, 0x50, 0x63, 0x42, 0x5c, 0x0a, 0x09, 0x39, 0x53, 0x6d, 0x6a, 0x70, 0x61, 0x71, 0x54, 0x43, 0x57, 0x4d, 0x55, 0x73, 0x75, 0x50, 0x72, 0x2b, 0x52, 0x59, 0x76, 0x2b, 0x6c, 0x62, 0x65, 0x53, 0x6d, 0x4f, 0x71, 0x51, 0x53, 0x67, 0x46, 0x67, 0x39, 0x52, 0x42, 0x65, 0x56, 0x30, 0x37, 0x47, 0x39, 0x4c, 0x6a, 0x35, 0x35, 0x39, 0x4e, 0x35, 0x51, 0x44, 0x75, 0x37, 0x48, 0x57, 0x57, 0x74, 0x37, 0x49, 0x44, 0x36, 0x6c, 0x47, 0x6b, 0x41, 0x43, 0x64, 0x7a, 0x45, 0x6e, 0x6d, 0x37, 0x5c, 0x0a, 0x09, 0x32, 0x67, 0x42, 0x76, 0x52, 0x38, 0x41, 0x37, 0x55, 0x50, 0x32, 0x49, 0x37, 0x6b, 0x59, 0x73, 0x2f, 0x67, 0x55, 0x36, 0x35, 0x67, 0x41, 0x41, 0x45, 0x43, 0x41, 0x77, 0x35, 0x2f, 0x79, 0x76, 0x6f, 0x68, 0x35, 0x50, 0x66, 0x6c, 0x72, 0x77, 0x4a, 0x77, 0x43, 0x2b, 0x44, 0x61, 0x53, 0x47, 0x45, 0x38, 0x34, 0x46, 0x6b, 0x74, 0x64, 0x47, 0x4a, 0x36, 0x56, 0x70, 0x6a, 0x75, 0x47, 0x50, 0x72, 0x61, 0x69, 0x72, 0x67, 0x55, 0x41, 0x36, 0x5c, 0x0a, 0x09, 0x6d, 0x34, 0x34, 0x73, 0x4e, 0x67, 0x69, 0x46, 0x38, 0x74, 0x71, 0x68, 0x69, 0x56, 0x32, 0x78, 0x30, 0x74, 0x6f, 0x6d, 0x33, 0x76, 0x51, 0x66, 0x72, 0x79, 0x65, 0x6a, 0x62, 0x66, 0x50, 0x4f, 0x76, 0x78, 0x54, 0x38, 0x30, 0x74, 0x32, 0x46, 0x65, 0x6e, 0x53, 0x57, 0x37, 0x44, 0x56, 0x66, 0x64, 0x64, 0x74, 0x4e, 0x4f, 0x79, 0x5a, 0x72, 0x52, 0x39, 0x66, 0x5a, 0x42, 0x6c, 0x69, 0x39, 0x6c, 0x4f, 0x50, 0x52, 0x36, 0x58, 0x67, 0x4b, 0x5c, 0x0a, 0x09, 0x67, 0x69, 0x6b, 0x51, 0x41, 0x44, 0x59, 0x76, 0x74, 0x73, 0x78, 0x6c, 0x32, 0x37, 0x71, 0x63, 0x6c, 0x48, 0x73, 0x4b, 0x47, 0x42, 0x55, 0x64, 0x64, 0x4d, 0x41, 0x66, 0x41, 0x58, 0x69, 0x55, 0x41, 0x33, 0x34, 0x4a, 0x51, 0x44, 0x6d, 0x69, 0x6d, 0x33, 0x57, 0x68, 0x4e, 0x58, 0x73, 0x57, 0x59, 0x4c, 0x57, 0x49, 0x2f, 0x78, 0x49, 0x71, 0x45, 0x2f, 0x67, 0x4f, 0x41, 0x68, 0x34, 0x33, 0x6e, 0x44, 0x76, 0x79, 0x63, 0x33, 0x44, 0x6c, 0x5c, 0x0a, 0x09, 0x73, 0x36, 0x6e, 0x62, 0x52, 0x39, 0x37, 0x74, 0x77, 0x57, 0x57, 0x5a, 0x4b, 0x4e, 0x66, 0x6b, 0x72, 0x45, 0x44, 0x74, 0x45, 0x50, 0x37, 0x59, 0x6d, 0x66, 0x56, 0x30, 0x6c, 0x41, 0x72, 0x48, 0x69, 0x70, 0x63, 0x59, 0x4c, 0x61, 0x32, 0x36, 0x73, 0x69, 0x2f, 0x37, 0x31, 0x70, 0x55, 0x33, 0x66, 0x76, 0x30, 0x54, 0x57, 0x4f, 0x6c, 0x57, 0x59, 0x63, 0x76, 0x4a, 0x36, 0x76, 0x34, 0x34, 0x44, 0x38, 0x30, 0x6d, 0x48, 0x4b, 0x34, 0x37, 0x5c, 0x0a, 0x09, 0x4f, 0x46, 0x44, 0x56, 0x67, 0x4f, 0x62, 0x62, 0x48, 0x71, 0x4e, 0x64, 0x4c, 0x76, 0x33, 0x6b, 0x4d, 0x56, 0x48, 0x79, 0x72, 0x33, 0x6e, 0x57, 0x37, 0x58, 0x49, 0x65, 0x56, 0x78, 0x70, 0x7a, 0x55, 0x2f, 0x76, 0x68, 0x57, 0x39, 0x4f, 0x6d, 0x6e, 0x46, 0x46, 0x39, 0x57, 0x37, 0x70, 0x70, 0x47, 0x69, 0x75, 0x48, 0x4e, 0x55, 0x74, 0x76, 0x31, 0x62, 0x6b, 0x35, 0x41, 0x46, 0x38, 0x45, 0x38, 0x43, 0x6b, 0x48, 0x66, 0x49, 0x71, 0x41, 0x5c, 0x0a, 0x09, 0x4b, 0x78, 0x79, 0x77, 0x48, 0x45, 0x70, 0x75, 0x5a, 0x4f, 0x51, 0x50, 0x64, 0x4d, 0x77, 0x44, 0x67, 0x4b, 0x59, 0x41, 0x43, 0x4c, 0x50, 0x33, 0x33, 0x59, 0x32, 0x5a, 0x75, 0x32, 0x35, 0x37, 0x50, 0x59, 0x44, 0x58, 0x68, 0x57, 0x75, 0x39, 0x73, 0x54, 0x47, 0x4d, 0x54, 0x55, 0x77, 0x69, 0x37, 0x2f, 0x61, 0x51, 0x64, 0x2f, 0x76, 0x49, 0x75, 0x6c, 0x33, 0x6b, 0x6e, 0x51, 0x36, 0x51, 0x64, 0x5a, 0x48, 0x2f, 0x6e, 0x2f, 0x62, 0x75, 0x5c, 0x0a, 0x09, 0x33, 0x73, 0x65, 0x4e, 0x49, 0x67, 0x37, 0x6a, 0x2b, 0x48, 0x66, 0x73, 0x6e, 0x4f, 0x39, 0x38, 0x75, 0x75, 0x53, 0x4d, 0x6c, 0x45, 0x52, 0x45, 0x53, 0x68, 0x6f, 0x4b, 0x6f, 0x45, 0x45, 0x52, 0x46, 0x4e, 0x42, 0x52, 0x30, 0x46, 0x4d, 0x68, 0x55, 0x64, 0x4e, 0x52, 0x49, 0x53, 0x45, 0x71, 0x61, 0x76, 0x34, 0x41, 0x30, 0x69, 0x48, 0x45, 0x50, 0x34, 0x41, 0x6f, 0x45, 0x4a, 0x52, 0x49, 0x55, 0x59, 0x51, 0x69, 0x51, 0x55, 0x53, 0x56, 0x5c, 0x0a, 0x09, 0x41, 0x71, 0x56, 0x42, 0x52, 0x4a, 0x45, 0x53, 0x68, 0x55, 0x4d, 0x6f, 0x51, 0x46, 0x37, 0x4f, 0x54, 0x6f, 0x7a, 0x74, 0x33, 0x52, 0x2f, 0x46, 0x37, 0x4a, 0x35, 0x6e, 0x33, 0x32, 0x78, 0x66, 0x58, 0x70, 0x52, 0x62, 0x7a, 0x2f, 0x4e, 0x70, 0x37, 0x72, 0x7a, 0x65, 0x6c, 0x31, 0x6e, 0x76, 0x7a, 0x4c, 0x4f, 0x7a, 0x34, 0x37, 0x57, 0x39, 0x63, 0x51, 0x7a, 0x72, 0x46, 0x44, 0x2f, 0x35, 0x6c, 0x76, 0x38, 0x50, 0x70, 0x59, 0x5a, 0x52, 0x5c, 0x0a, 0x09, 0x6d, 0x46, 0x61, 0x65, 0x74, 0x33, 0x4b, 0x51, 0x61, 0x79, 0x70, 0x55, 0x33, 0x58, 0x72, 0x71, 0x7a, 0x2b, 0x79, 0x4c, 0x7a, 0x6a, 0x5a, 0x4e, 0x35, 0x61, 0x78, 0x62, 0x76, 0x72, 0x6b, 0x42, 0x46, 0x43, 0x74, 0x71, 0x57, 0x42, 0x5a, 0x6e, 0x76, 0x69, 0x39, 0x61, 0x33, 0x6c, 0x64, 0x58, 0x57, 0x63, 0x66, 0x63, 0x6f, 0x70, 0x41, 0x4c, 0x79, 0x31, 0x33, 0x65, 0x69, 0x2b, 0x5a, 0x39, 0x4c, 0x41, 0x5a, 0x47, 0x58, 0x57, 0x67, 0x76, 0x5c, 0x0a, 0x09, 0x4f, 0x78, 0x75, 0x48, 0x32, 0x31, 0x2f, 0x55, 0x36, 0x4a, 0x76, 0x4b, 0x32, 0x37, 0x53, 0x74, 0x70, 0x6c, 0x43, 0x63, 0x6c, 0x2f, 0x58, 0x67, 0x37, 0x65, 0x46, 0x39, 0x2f, 0x49, 0x31, 0x73, 0x31, 0x2f, 0x46, 0x33, 0x39, 0x50, 0x31, 0x71, 0x2f, 0x74, 0x62, 0x65, 0x47, 0x35, 0x54, 0x4f, 0x38, 0x6b, 0x65, 0x6c, 0x34, 0x65, 0x65, 0x65, 0x32, 0x59, 0x65, 0x42, 0x6e, 0x70, 0x58, 0x38, 0x38, 0x73, 0x44, 0x35, 0x4c, 0x30, 0x72, 0x6f, 0x5c, 0x0a, 0x09, 0x75, 0x50, 0x78, 0x37, 0x37, 0x63, 0x79, 0x59, 0x6a, 0x4d, 0x64, 0x4d, 0x78, 0x75, 0x50, 0x47, 0x5a, 0x54, 0x76, 0x64, 0x4c, 0x72, 0x32, 0x74, 0x50, 0x68, 0x75, 0x39, 0x6e, 0x67, 0x2b, 0x4a, 0x54, 0x68, 0x65, 0x36, 0x48, 0x54, 0x59, 0x32, 0x74, 0x33, 0x34, 0x2f, 0x74, 0x6a, 0x4f, 0x34, 0x41, 0x6e, 0x62, 0x61, 0x77, 0x55, 0x6d, 0x44, 0x30, 0x38, 0x42, 0x70, 0x68, 0x2b, 0x74, 0x58, 0x42, 0x34, 0x65, 0x73, 0x55, 0x6d, 0x6c, 0x7a, 0x5c, 0x0a, 0x09, 0x38, 0x38, 0x70, 0x69, 0x6c, 0x55, 0x59, 0x55, 0x76, 0x69, 0x31, 0x58, 0x37, 0x6f, 0x36, 0x47, 0x5a, 0x35, 0x43, 0x6d, 0x77, 0x61, 0x6a, 0x79, 0x76, 0x50, 0x57, 0x39, 0x6a, 0x4f, 0x4a, 0x38, 0x52, 0x74, 0x36, 0x78, 0x72, 0x6a, 0x4a, 0x38, 0x34, 0x38, 0x2f, 0x4c, 0x57, 0x52, 0x77, 0x32, 0x7a, 0x51, 0x4b, 0x69, 0x73, 0x5a, 0x7a, 0x56, 0x62, 0x54, 0x61, 0x46, 0x52, 0x2f, 0x48, 0x75, 0x7a, 0x65, 0x72, 0x79, 0x35, 0x53, 0x61, 0x32, 0x5c, 0x0a, 0x09, 0x72, 0x41, 0x48, 0x6d, 0x70, 0x51, 0x31, 0x44, 0x5a, 0x58, 0x46, 0x33, 0x6e, 0x4e, 0x4a, 0x38, 0x78, 0x58, 0x31, 0x72, 0x4f, 0x74, 0x76, 0x50, 0x4a, 0x36, 0x5a, 0x59, 0x6b, 0x70, 0x44, 0x4f, 0x45, 0x69, 0x79, 0x5a, 0x6b, 0x73, 0x36, 0x6d, 0x70, 0x4e, 0x4d, 0x4a, 0x53, 0x54, 0x49, 0x6a, 0x6e, 0x55, 0x34, 0x5a, 0x50, 0x78, 0x7a, 0x65, 0x33, 0x6a, 0x35, 0x31, 0x35, 0x74, 0x7a, 0x32, 0x43, 0x79, 0x63, 0x62, 0x41, 0x2f, 0x31, 0x35, 0x5c, 0x0a, 0x09, 0x6a, 0x66, 0x43, 0x76, 0x6f, 0x6e, 0x55, 0x42, 0x55, 0x44, 0x49, 0x4b, 0x65, 0x7a, 0x44, 0x4f, 0x4f, 0x52, 0x62, 0x31, 0x61, 0x4e, 0x49, 0x6b, 0x59, 0x54, 0x77, 0x61, 0x4d, 0x68, 0x35, 0x56, 0x6e, 0x76, 0x70, 0x79, 0x63, 0x4f, 0x62, 0x73, 0x35, 0x7a, 0x75, 0x6e, 0x7a, 0x70, 0x51, 0x61, 0x74, 0x50, 0x57, 0x41, 0x58, 0x57, 0x41, 0x41, 0x37, 0x4c, 0x72, 0x73, 0x4c, 0x39, 0x6a, 0x41, 0x5a, 0x64, 0x4d, 0x64, 0x62, 0x68, 0x64, 0x73, 0x5c, 0x0a, 0x09, 0x31, 0x32, 0x44, 0x67, 0x59, 0x47, 0x43, 0x77, 0x34, 0x32, 0x41, 0x4c, 0x32, 0x41, 0x45, 0x37, 0x37, 0x71, 0x41, 0x50, 0x72, 0x6c, 0x39, 0x2f, 0x39, 0x69, 0x2f, 0x33, 0x43, 0x70, 0x6f, 0x61, 0x58, 0x66, 0x33, 0x33, 0x46, 0x31, 0x44, 0x7a, 0x4f, 0x43, 0x74, 0x33, 0x46, 0x6a, 0x5a, 0x4e, 0x50, 0x36, 0x30, 0x64, 0x72, 0x69, 0x73, 0x73, 0x67, 0x77, 0x58, 0x50, 0x7a, 0x78, 0x74, 0x4b, 0x65, 0x56, 0x76, 0x4c, 0x4c, 0x67, 0x76, 0x43, 0x5c, 0x0a, 0x09, 0x55, 0x71, 0x31, 0x32, 0x52, 0x6d, 0x34, 0x65, 0x62, 0x36, 0x6a, 0x66, 0x52, 0x76, 0x30, 0x50, 0x66, 0x72, 0x6a, 0x53, 0x65, 0x6f, 0x4a, 0x74, 0x4a, 0x4d, 0x44, 0x51, 0x34, 0x44, 0x37, 0x59, 0x45, 0x4e, 0x77, 0x6f, 0x6e, 0x55, 0x78, 0x4f, 0x70, 0x4e, 0x4e, 0x48, 0x72, 0x36, 0x52, 0x70, 0x69, 0x69, 0x56, 0x54, 0x62, 0x4a, 0x61, 0x51, 0x70, 0x41, 0x6c, 0x70, 0x4f, 0x73, 0x4e, 0x6d, 0x43, 0x62, 0x50, 0x70, 0x68, 0x50, 0x38, 0x65, 0x5c, 0x0a, 0x09, 0x50, 0x53, 0x4b, 0x5a, 0x7a, 0x56, 0x68, 0x69, 0x50, 0x50, 0x33, 0x6a, 0x4a, 0x76, 0x2f, 0x65, 0x75, 0x72, 0x46, 0x73, 0x76, 0x69, 0x4f, 0x70, 0x37, 0x51, 0x46, 0x77, 0x4b, 0x33, 0x79, 0x77, 0x79, 0x75, 0x56, 0x4d, 0x54, 0x55, 0x69, 0x4d, 0x67, 0x61, 0x2f, 0x76, 0x2f, 0x58, 0x6d, 0x62, 0x75, 0x33, 0x76, 0x7a, 0x33, 0x7a, 0x50, 0x4d, 0x4c, 0x6a, 0x55, 0x6d, 0x77, 0x42, 0x33, 0x67, 0x54, 0x72, 0x57, 0x62, 0x66, 0x62, 0x44, 0x56, 0x5c, 0x0a, 0x09, 0x53, 0x73, 0x4f, 0x6f, 0x6e, 0x6c, 0x6b, 0x4d, 0x68, 0x7a, 0x74, 0x68, 0x57, 0x4e, 0x38, 0x48, 0x41, 0x67, 0x4f, 0x67, 0x62, 0x39, 0x69, 0x57, 0x38, 0x38, 0x47, 0x79, 0x62, 0x64, 0x44, 0x44, 0x68, 0x38, 0x55, 0x6d, 0x50, 0x6e, 0x69, 0x32, 0x67, 0x61, 0x37, 0x42, 0x38, 0x53, 0x77, 0x59, 0x42, 0x74, 0x6c, 0x36, 0x6a, 0x77, 0x4e, 0x64, 0x35, 0x73, 0x76, 0x30, 0x73, 0x75, 0x58, 0x7a, 0x37, 0x66, 0x65, 0x79, 0x35, 0x38, 0x67, 0x61, 0x5c, 0x0a, 0x09, 0x63, 0x4d, 0x39, 0x67, 0x32, 0x34, 0x48, 0x72, 0x4f, 0x74, 0x63, 0x46, 0x4e, 0x6d, 0x5a, 0x6d, 0x50, 0x53, 0x75, 0x55, 0x4c, 0x6e, 0x74, 0x74, 0x43, 0x76, 0x32, 0x47, 0x34, 0x6d, 0x74, 0x5a, 0x50, 0x6f, 0x75, 0x48, 0x44, 0x61, 0x7a, 0x75, 0x74, 0x51, 0x6b, 0x65, 0x54, 0x38, 0x45, 0x39, 0x44, 0x4f, 0x4d, 0x6d, 0x2b, 0x33, 0x74, 0x76, 0x58, 0x67, 0x49, 0x53, 0x59, 0x44, 0x2f, 0x62, 0x34, 0x6e, 0x32, 0x48, 0x4d, 0x38, 0x4f, 0x47, 0x5c, 0x0a, 0x09, 0x2b, 0x48, 0x74, 0x43, 0x78, 0x73, 0x34, 0x66, 0x6f, 0x79, 0x6e, 0x2b, 0x6d, 0x74, 0x71, 0x41, 0x2b, 0x39, 0x6b, 0x36, 0x48, 0x68, 0x68, 0x4d, 0x48, 0x65, 0x79, 0x62, 0x2f, 0x2b, 0x61, 0x63, 0x6b, 0x59, 0x4d, 0x68, 0x75, 0x42, 0x48, 0x2b, 0x38, 0x58, 0x36, 0x32, 0x7a, 0x44, 0x67, 0x38, 0x4e, 0x71, 0x4f, 0x2f, 0x2f, 0x2b, 0x4c, 0x65, 0x33, 0x73, 0x32, 0x50, 0x38, 0x52, 0x39, 0x41, 0x4f, 0x37, 0x52, 0x53, 0x48, 0x64, 0x70, 0x4c, 0x5c, 0x0a, 0x09, 0x30, 0x2b, 0x63, 0x2b, 0x6c, 0x76, 0x66, 0x59, 0x57, 0x68, 0x30, 0x41, 0x7a, 0x72, 0x6c, 0x66, 0x38, 0x67, 0x4d, 0x52, 0x58, 0x67, 0x6f, 0x30, 0x7a, 0x49, 0x75, 0x5a, 0x31, 0x54, 0x31, 0x2f, 0x67, 0x5a, 0x6f, 0x37, 0x73, 0x5a, 0x35, 0x6d, 0x74, 0x2b, 0x33, 0x63, 0x2b, 0x62, 0x63, 0x77, 0x37, 0x41, 0x47, 0x2b, 0x77, 0x68, 0x61, 0x55, 0x4c, 0x79, 0x47, 0x61, 0x4c, 0x69, 0x33, 0x43, 0x2f, 0x38, 0x73, 0x39, 0x67, 0x55, 0x57, 0x78, 0x5c, 0x0a, 0x09, 0x46, 0x7a, 0x5a, 0x4f, 0x73, 0x2b, 0x71, 0x5a, 0x74, 0x74, 0x54, 0x6a, 0x77, 0x63, 0x47, 0x75, 0x48, 0x59, 0x77, 0x4d, 0x65, 0x50, 0x58, 0x42, 0x56, 0x37, 0x75, 0x64, 0x45, 0x64, 0x6b, 0x67, 0x56, 0x32, 0x47, 0x37, 0x77, 0x56, 0x5a, 0x57, 0x75, 0x52, 0x59, 0x76, 0x68, 0x30, 0x2f, 0x64, 0x76, 0x69, 0x35, 0x36, 0x66, 0x61, 0x6a, 0x5a, 0x58, 0x6e, 0x67, 0x38, 0x73, 0x37, 0x70, 0x79, 0x74, 0x33, 0x35, 0x50, 0x4b, 0x4d, 0x78, 0x58, 0x5c, 0x0a, 0x09, 0x56, 0x35, 0x39, 0x4b, 0x30, 0x79, 0x34, 0x76, 0x57, 0x38, 0x39, 0x52, 0x31, 0x72, 0x70, 0x42, 0x77, 0x46, 0x79, 0x6e, 0x30, 0x38, 0x6b, 0x50, 0x78, 0x47, 0x58, 0x67, 0x37, 0x57, 0x58, 0x7a, 0x4e, 0x78, 0x7a, 0x4d, 0x48, 0x34, 0x42, 0x33, 0x67, 0x56, 0x6c, 0x62, 0x58, 0x34, 0x65, 0x6e, 0x36, 0x64, 0x7a, 0x35, 0x4e, 0x78, 0x65, 0x47, 0x79, 0x53, 0x71, 0x4f, 0x32, 0x69, 0x42, 0x58, 0x6e, 0x53, 0x77, 0x41, 0x33, 0x67, 0x45, 0x75, 0x5c, 0x0a, 0x09, 0x72, 0x54, 0x70, 0x2f, 0x51, 0x2f, 0x31, 0x49, 0x67, 0x46, 0x65, 0x42, 0x36, 0x32, 0x32, 0x74, 0x50, 0x36, 0x30, 0x4e, 0x41, 0x44, 0x67, 0x34, 0x6b, 0x47, 0x2f, 0x67, 0x50, 0x7a, 0x76, 0x51, 0x4f, 0x2b, 0x54, 0x69, 0x58, 0x77, 0x45, 0x66, 0x34, 0x62, 0x76, 0x35, 0x4b, 0x31, 0x30, 0x2b, 0x79, 0x48, 0x72, 0x49, 0x36, 0x73, 0x30, 0x4f, 0x38, 0x41, 0x38, 0x4c, 0x36, 0x6b, 0x31, 0x54, 0x77, 0x77, 0x2b, 0x6d, 0x58, 0x77, 0x41, 0x2b, 0x5c, 0x0a, 0x09, 0x67, 0x66, 0x62, 0x57, 0x6e, 0x79, 0x4e, 0x35, 0x49, 0x39, 0x41, 0x68, 0x58, 0x63, 0x58, 0x66, 0x4a, 0x48, 0x54, 0x77, 0x54, 0x61, 0x72, 0x4f, 0x4c, 0x65, 0x79, 0x30, 0x2f, 0x6f, 0x7a, 0x2f, 0x68, 0x74, 0x55, 0x50, 0x55, 0x65, 0x4f, 0x50, 0x32, 0x52, 0x44, 0x34, 0x42, 0x6e, 0x78, 0x39, 0x71, 0x61, 0x73, 0x7a, 0x54, 0x66, 0x55, 0x69, 0x6d, 0x33, 0x34, 0x52, 0x2b, 0x48, 0x54, 0x52, 0x66, 0x47, 0x33, 0x51, 0x36, 0x68, 0x34, 0x41, 0x5c, 0x0a, 0x09, 0x46, 0x42, 0x72, 0x37, 0x69, 0x2f, 0x69, 0x37, 0x71, 0x39, 0x34, 0x44, 0x58, 0x67, 0x35, 0x6d, 0x47, 0x54, 0x6e, 0x6e, 0x72, 0x70, 0x6e, 0x6f, 0x56, 0x57, 0x38, 0x39, 0x41, 0x41, 0x41, 0x42, 0x58, 0x6b, 0x6c, 0x45, 0x51, 0x56, 0x54, 0x5a, 0x4a, 0x65, 0x42, 0x62, 0x66, 0x47, 0x41, 0x41, 0x37, 0x54, 0x35, 0x77, 0x38, 0x6d, 0x53, 0x79, 0x65, 0x6e, 0x50, 0x57, 0x4f, 0x58, 0x66, 0x56, 0x7a, 0x45, 0x36, 0x56, 0x70, 0x69, 0x2b, 0x72, 0x5c, 0x0a, 0x09, 0x47, 0x31, 0x2f, 0x67, 0x37, 0x31, 0x42, 0x74, 0x2f, 0x51, 0x6d, 0x6b, 0x39, 0x51, 0x45, 0x41, 0x74, 0x57, 0x66, 0x38, 0x54, 0x66, 0x78, 0x6f, 0x4f, 0x2f, 0x69, 0x65, 0x51, 0x66, 0x47, 0x74, 0x33, 0x54, 0x58, 0x59, 0x5a, 0x33, 0x6b, 0x79, 0x65, 0x5a, 0x31, 0x78, 0x7a, 0x72, 0x31, 0x6d, 0x5a, 0x74, 0x38, 0x44, 0x4c, 0x79, 0x32, 0x62, 0x33, 0x38, 0x77, 0x75, 0x41, 0x70, 0x38, 0x42, 0x50, 0x2b, 0x58, 0x54, 0x32, 0x31, 0x36, 0x58, 0x5c, 0x0a, 0x09, 0x31, 0x69, 0x49, 0x41, 0x51, 0x6b, 0x33, 0x64, 0x2f, 0x33, 0x58, 0x62, 0x54, 0x33, 0x6c, 0x79, 0x77, 0x55, 0x42, 0x79, 0x48, 0x2f, 0x6a, 0x41, 0x4f, 0x66, 0x63, 0x2b, 0x38, 0x4c, 0x71, 0x5a, 0x2f, 0x33, 0x5a, 0x71, 0x59, 0x41, 0x2b, 0x34, 0x42, 0x76, 0x77, 0x49, 0x66, 0x41, 0x66, 0x38, 0x6c, 0x69, 0x2b, 0x37, 0x4c, 0x76, 0x56, 0x70, 0x37, 0x51, 0x4a, 0x41, 0x35, 0x44, 0x43, 0x57, 0x6a, 0x42, 0x64, 0x56, 0x72, 0x46, 0x74, 0x37, 0x5c, 0x0a, 0x09, 0x55, 0x51, 0x43, 0x49, 0x52, 0x47, 0x77, 0x64, 0x33, 0x67, 0x55, 0x51, 0x6b, 0x63, 0x65, 0x6b, 0x41, 0x42, 0x43, 0x4a, 0x6d, 0x41, 0x4a, 0x41, 0x4a, 0x47, 0x49, 0x4b, 0x41, 0x4a, 0x47, 0x49, 0x4b, 0x51, 0x42, 0x45, 0x49, 0x71, 0x59, 0x41, 0x45, 0x49, 0x6d, 0x59, 0x41, 0x6b, 0x41, 0x6b, 0x59, 0x67, 0x6f, 0x41, 0x6b, 0x59, 0x67, 0x70, 0x41, 0x45, 0x51, 0x69, 0x70, 0x67, 0x41, 0x51, 0x69, 0x5a, 0x67, 0x43, 0x51, 0x43, 0x52, 0x69, 0x5c, 0x0a, 0x09, 0x43, 0x67, 0x43, 0x52, 0x69, 0x43, 0x6b, 0x41, 0x52, 0x43, 0x4b, 0x6d, 0x41, 0x42, 0x43, 0x4a, 0x6d, 0x41, 0x4a, 0x41, 0x4a, 0x47, 0x49, 0x4b, 0x41, 0x4a, 0x47, 0x49, 0x4b, 0x51, 0x42, 0x45, 0x49, 0x71, 0x59, 0x41, 0x45, 0x49, 0x6d, 0x59, 0x41, 0x6b, 0x41, 0x6b, 0x59, 0x67, 0x6f, 0x41, 0x6b, 0x59, 0x67, 0x70, 0x41, 0x45, 0x51, 0x69, 0x70, 0x67, 0x41, 0x51, 0x69, 0x5a, 0x67, 0x43, 0x51, 0x43, 0x52, 0x69, 0x43, 0x67, 0x43, 0x52, 0x5c, 0x0a, 0x09, 0x69, 0x43, 0x6b, 0x41, 0x52, 0x43, 0x4b, 0x6d, 0x41, 0x42, 0x43, 0x4a, 0x6d, 0x41, 0x4a, 0x41, 0x4a, 0x47, 0x49, 0x4b, 0x41, 0x4a, 0x47, 0x49, 0x4b, 0x51, 0x42, 0x45, 0x49, 0x71, 0x59, 0x41, 0x45, 0x49, 0x6d, 0x59, 0x41, 0x6b, 0x41, 0x6b, 0x59, 0x67, 0x6f, 0x41, 0x6b, 0x59, 0x67, 0x70, 0x41, 0x45, 0x51, 0x69, 0x70, 0x67, 0x41, 0x51, 0x69, 0x5a, 0x67, 0x43, 0x51, 0x43, 0x52, 0x69, 0x43, 0x67, 0x43, 0x52, 0x69, 0x43, 0x6b, 0x41, 0x5c, 0x0a, 0x09, 0x52, 0x43, 0x4b, 0x6d, 0x41, 0x42, 0x43, 0x4a, 0x6d, 0x41, 0x4a, 0x41, 0x4a, 0x47, 0x49, 0x4b, 0x41, 0x4a, 0x47, 0x49, 0x4b, 0x51, 0x42, 0x45, 0x49, 0x71, 0x59, 0x41, 0x45, 0x49, 0x6d, 0x59, 0x41, 0x6b, 0x41, 0x6b, 0x59, 0x67, 0x6f, 0x41, 0x6b, 0x59, 0x67, 0x70, 0x41, 0x45, 0x51, 0x69, 0x70, 0x67, 0x41, 0x51, 0x69, 0x5a, 0x67, 0x43, 0x51, 0x43, 0x52, 0x69, 0x43, 0x67, 0x43, 0x52, 0x69, 0x50, 0x30, 0x50, 0x38, 0x66, 0x52, 0x4d, 0x5c, 0x0a, 0x09, 0x43, 0x50, 0x61, 0x46, 0x72, 0x73, 0x45, 0x41, 0x41, 0x41, 0x41, 0x41, 0x53, 0x55, 0x56, 0x4f, 0x52, 0x4b, 0x35, 0x43, 0x59, 0x49, 0x49, 0x3d, 0x5c, 0x0a, 0x09, 0x22, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x6e, 0x67, 0x20, 0x3d, 0x0a, 0x09, 0x22, 0x69, 0x56, 0x42, 0x4f, 0x52, 0x77, 0x30, 0x4b, 0x47, 0x67, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x4e, 0x53, 0x55, 0x68, 0x45, 0x55, 0x67, 0x41, 0x41, 0x41, 0x49, 0x41, 0x41, 0x41, 0x41, 0x42, 0x41, 0x43, 0x41, 0x59, 0x41, 0x41, 0x41, 0x44, 0x53, 0x31, 0x6e, 0x39, 0x2f, 0x41, 0x41, 0x41, 0x48, 0x6c, 0x45, 0x6c, 0x45, 0x51, 0x56, 0x52, 0x34, 0x6e, 0x4f, 0x32, 0x62, 0x65, 0x34, 0x78, 0x64, 0x56, 0x52, 0x58, 0x47, 0x66, 0x7a, 0x4f, 0x64, 0x5c, 0x0a, 0x09, 0x61, 0x57, 0x6c, 0x4c, 0x69, 0x7a, 0x43, 0x30, 0x59, 0x68, 0x38, 0x38, 0x4f, 0x79, 0x6b, 0x57, 0x78, 0x51, 0x6f, 0x74, 0x64, 0x41, 0x6f, 0x71, 0x31, 0x42, 0x52, 0x45, 0x53, 0x56, 0x56, 0x53, 0x59, 0x77, 0x31, 0x70, 0x51, 0x67, 0x69, 0x52, 0x67, 0x42, 0x41, 0x44, 0x78, 0x6f, 0x51, 0x59, 0x69, 0x64, 0x68, 0x45, 0x78, 0x47, 0x42, 0x4a, 0x4e, 0x43, 0x67, 0x59, 0x45, 0x74, 0x4e, 0x71, 0x55, 0x6a, 0x48, 0x57, 0x38, 0x45, 0x61, 0x6b, 0x5c, 0x0a, 0x09, 0x74, 0x63, 0x58, 0x36, 0x41, 0x4d, 0x61, 0x71, 0x69, 0x50, 0x61, 0x68, 0x56, 0x69, 0x69, 0x56, 0x55, 0x74, 0x73, 0x69, 0x46, 0x4b, 0x61, 0x4d, 0x4c, 0x5a, 0x33, 0x32, 0x38, 0x34, 0x2b, 0x31, 0x54, 0x75, 0x36, 0x2b, 0x5a, 0x38, 0x34, 0x35, 0x64, 0x31, 0x36, 0x33, 0x63, 0x34, 0x65, 0x7a, 0x76, 0x2b, 0x52, 0x6b, 0x33, 0x37, 0x50, 0x58, 0x32, 0x6e, 0x75, 0x74, 0x73, 0x2f, 0x64, 0x33, 0x39, 0x6c, 0x6e, 0x37, 0x63, 0x5a, 0x73, 0x6b, 0x5c, 0x0a, 0x09, 0x45, 0x56, 0x46, 0x65, 0x4e, 0x41, 0x2b, 0x33, 0x41, 0x78, 0x48, 0x44, 0x69, 0x30, 0x69, 0x41, 0x6b, 0x69, 0x4d, 0x53, 0x6f, 0x4c, 0x48, 0x52, 0x42, 0x49, 0x77, 0x48, 0x52, 0x74, 0x58, 0x4c, 0x51, 0x43, 0x52, 0x41, 0x59, 0x2b, 0x4d, 0x6d, 0x59, 0x44, 0x2f, 0x77, 0x6c, 0x58, 0x6f, 0x5a, 0x69, 0x41, 0x52, 0x6f, 0x62, 0x45, 0x7a, 0x77, 0x39, 0x48, 0x33, 0x31, 0x4d, 0x68, 0x41, 0x4a, 0x30, 0x4e, 0x68, 0x34, 0x77, 0x39, 0x4d, 0x70, 0x5c, 0x0a, 0x09, 0x39, 0x54, 0x49, 0x51, 0x43, 0x64, 0x44, 0x59, 0x36, 0x50, 0x4c, 0x30, 0x68, 0x48, 0x6f, 0x5a, 0x69, 0x41, 0x52, 0x6f, 0x62, 0x4f, 0x7a, 0x32, 0x39, 0x4d, 0x52, 0x36, 0x47, 0x57, 0x69, 0x70, 0x56, 0x38, 0x55, 0x52, 0x6d, 0x5a, 0x67, 0x4c, 0x66, 0x42, 0x69, 0x59, 0x42, 0x4c, 0x77, 0x43, 0x50, 0x41, 0x6c, 0x73, 0x4c, 0x64, 0x42, 0x2f, 0x31, 0x64, 0x4e, 0x49, 0x67, 0x44, 0x71, 0x69, 0x44, 0x66, 0x67, 0x44, 0x38, 0x47, 0x2f, 0x67, 0x5c, 0x0a, 0x09, 0x49, 0x30, 0x48, 0x2b, 0x61, 0x47, 0x41, 0x42, 0x63, 0x43, 0x72, 0x77, 0x4f, 0x76, 0x42, 0x62, 0x59, 0x47, 0x65, 0x71, 0x37, 0x48, 0x51, 0x76, 0x76, 0x78, 0x33, 0x59, 0x56, 0x32, 0x42, 0x6a, 0x4e, 0x76, 0x41, 0x44, 0x34, 0x4c, 0x77, 0x4d, 0x32, 0x55, 0x72, 0x67, 0x65, 0x71, 0x41, 0x37, 0x51, 0x37, 0x62, 0x48, 0x30, 0x32, 0x5a, 0x73, 0x4b, 0x6e, 0x69, 0x34, 0x77, 0x4d, 0x61, 0x41, 0x30, 0x44, 0x51, 0x43, 0x6c, 0x34, 0x4a, 0x48, 0x5c, 0x0a, 0x09, 0x41, 0x65, 0x33, 0x41, 0x54, 0x4f, 0x41, 0x30, 0x34, 0x46, 0x6e, 0x67, 0x36, 0x5a, 0x52, 0x4f, 0x45, 0x39, 0x62, 0x59, 0x35, 0x77, 0x4e, 0x54, 0x4d, 0x61, 0x4c, 0x76, 0x77, 0x54, 0x72, 0x77, 0x6c, 0x38, 0x44, 0x65, 0x51, 0x48, 0x63, 0x36, 0x73, 0x4d, 0x4e, 0x2f, 0x7a, 0x77, 0x55, 0x32, 0x41, 0x6e, 0x4f, 0x41, 0x31, 0x63, 0x41, 0x70, 0x67, 0x64, 0x35, 0x68, 0x34, 0x44, 0x37, 0x67, 0x69, 0x38, 0x41, 0x30, 0x34, 0x4d, 0x66, 0x41, 0x5c, 0x0a, 0x09, 0x66, 0x4a, 0x63, 0x4a, 0x65, 0x41, 0x43, 0x34, 0x41, 0x64, 0x69, 0x56, 0x38, 0x6d, 0x55, 0x68, 0x38, 0x42, 0x41, 0x77, 0x31, 0x75, 0x2b, 0x66, 0x42, 0x76, 0x34, 0x4a, 0x76, 0x4e, 0x66, 0x74, 0x41, 0x54, 0x77, 0x49, 0x66, 0x44, 0x72, 0x6a, 0x57, 0x63, 0x64, 0x53, 0x49, 0x63, 0x59, 0x34, 0x34, 0x48, 0x38, 0x5a, 0x4f, 0x6f, 0x4f, 0x44, 0x70, 0x4a, 0x46, 0x77, 0x48, 0x53, 0x50, 0x70, 0x4b, 0x6b, 0x6d, 0x50, 0x53, 0x75, 0x70, 0x53, 0x5c, 0x0a, 0x09, 0x4e, 0x66, 0x36, 0x65, 0x30, 0x72, 0x31, 0x51, 0x30, 0x69, 0x62, 0x6c, 0x34, 0x77, 0x6c, 0x4a, 0x73, 0x31, 0x4a, 0x6c, 0x4e, 0x72, 0x70, 0x73, 0x75, 0x61, 0x54, 0x4a, 0x6b, 0x76, 0x62, 0x34, 0x66, 0x59, 0x2b, 0x6b, 0x54, 0x6b, 0x6e, 0x50, 0x42, 0x65, 0x55, 0x66, 0x6c, 0x76, 0x53, 0x76, 0x34, 0x50, 0x35, 0x41, 0x38, 0x48, 0x75, 0x62, 0x70, 0x4c, 0x61, 0x67, 0x33, 0x71, 0x6d, 0x53, 0x58, 0x67, 0x39, 0x6b, 0x48, 0x53, 0x6d, 0x37, 0x5c, 0x0a, 0x09, 0x69, 0x34, 0x4f, 0x79, 0x63, 0x33, 0x4b, 0x65, 0x2f, 0x51, 0x32, 0x58, 0x74, 0x2b, 0x58, 0x49, 0x42, 0x33, 0x55, 0x4e, 0x64, 0x38, 0x66, 0x32, 0x35, 0x66, 0x71, 0x4d, 0x70, 0x46, 0x32, 0x71, 0x78, 0x6d, 0x46, 0x4a, 0x4f, 0x34, 0x4c, 0x37, 0x34, 0x31, 0x54, 0x70, 0x2f, 0x4c, 0x63, 0x39, 0x37, 0x36, 0x43, 0x6b, 0x64, 0x5a, 0x4a, 0x57, 0x2b, 0x50, 0x57, 0x77, 0x4b, 0x68, 0x31, 0x35, 0x57, 0x4e, 0x4c, 0x70, 0x67, 0x59, 0x30, 0x76, 0x5c, 0x0a, 0x09, 0x65, 0x66, 0x34, 0x32, 0x53, 0x58, 0x66, 0x36, 0x37, 0x78, 0x32, 0x53, 0x5a, 0x67, 0x59, 0x36, 0x69, 0x79, 0x51, 0x64, 0x43, 0x6d, 0x79, 0x2b, 0x4b, 0x6d, 0x6d, 0x32, 0x70, 0x47, 0x5a, 0x4a, 0x6c, 0x30, 0x6e, 0x61, 0x36, 0x2f, 0x6b, 0x2f, 0x44, 0x4d, 0x72, 0x63, 0x35, 0x58, 0x6e, 0x2f, 0x6b, 0x54, 0x51, 0x74, 0x35, 0x2f, 0x6b, 0x53, 0x38, 0x6e, 0x30, 0x2b, 0x52, 0x37, 0x37, 0x56, 0x35, 0x61, 0x66, 0x6e, 0x79, 0x42, 0x75, 0x57, 0x5c, 0x0a, 0x09, 0x41, 0x47, 0x4d, 0x6b, 0x6a, 0x52, 0x70, 0x6b, 0x48, 0x54, 0x63, 0x46, 0x44, 0x66, 0x36, 0x79, 0x70, 0x47, 0x39, 0x49, 0x75, 0x6c, 0x6a, 0x53, 0x73, 0x5a, 0x4a, 0x61, 0x4a, 0x58, 0x57, 0x37, 0x62, 0x47, 0x47, 0x71, 0x4d, 0x54, 0x73, 0x6c, 0x54, 0x63, 0x2b, 0x6f, 0x37, 0x36, 0x4b, 0x67, 0x76, 0x6c, 0x75, 0x43, 0x2f, 0x4a, 0x6c, 0x42, 0x66, 0x6a, 0x4c, 0x43, 0x4c, 0x4d, 0x34, 0x6f, 0x66, 0x32, 0x2b, 0x67, 0x39, 0x2b, 0x57, 0x55, 0x5c, 0x0a, 0x09, 0x37, 0x42, 0x4c, 0x50, 0x50, 0x79, 0x4b, 0x70, 0x33, 0x66, 0x4e, 0x32, 0x65, 0x74, 0x34, 0x39, 0x37, 0x6e, 0x4f, 0x36, 0x76, 0x6b, 0x6b, 0x79, 0x49, 0x6b, 0x6e, 0x53, 0x30, 0x70, 0x77, 0x32, 0x65, 0x4d, 0x72, 0x6c, 0x38, 0x77, 0x62, 0x5a, 0x6c, 0x76, 0x30, 0x69, 0x77, 0x48, 0x73, 0x6b, 0x76, 0x53, 0x52, 0x37, 0x4d, 0x79, 0x5a, 0x4c, 0x57, 0x69, 0x5a, 0x70, 0x72, 0x61, 0x52, 0x6e, 0x4a, 0x50, 0x31, 0x4d, 0x4e, 0x68, 0x79, 0x33, 0x5c, 0x0a, 0x09, 0x46, 0x6c, 0x51, 0x38, 0x56, 0x64, 0x4a, 0x62, 0x37, 0x76, 0x68, 0x4c, 0x6b, 0x6c, 0x5a, 0x4a, 0x2b, 0x70, 0x54, 0x73, 0x62, 0x65, 0x6d, 0x72, 0x63, 0x7a, 0x4e, 0x6c, 0x51, 0x37, 0x41, 0x6b, 0x66, 0x56, 0x66, 0x53, 0x32, 0x41, 0x79, 0x64, 0x70, 0x4d, 0x4e, 0x76, 0x63, 0x7a, 0x38, 0x54, 0x76, 0x44, 0x2b, 0x6e, 0x7a, 0x75, 0x38, 0x45, 0x4f, 0x6e, 0x39, 0x4a, 0x79, 0x56, 0x34, 0x49, 0x5a, 0x41, 0x64, 0x79, 0x37, 0x48, 0x30, 0x6f, 0x5c, 0x0a, 0x09, 0x30, 0x45, 0x6c, 0x2f, 0x52, 0x73, 0x4c, 0x4f, 0x75, 0x6c, 0x33, 0x53, 0x52, 0x46, 0x57, 0x6a, 0x52, 0x39, 0x4c, 0x7a, 0x33, 0x6e, 0x34, 0x72, 0x4a, 0x4b, 0x32, 0x57, 0x39, 0x4a, 0x72, 0x4c, 0x33, 0x6e, 0x54, 0x2f, 0x73, 0x33, 0x7a, 0x2b, 0x75, 0x6d, 0x7a, 0x45, 0x2b, 0x6d, 0x41, 0x2f, 0x32, 0x6d, 0x37, 0x51, 0x42, 0x47, 0x68, 0x33, 0x78, 0x37, 0x5a, 0x4c, 0x32, 0x71, 0x31, 0x73, 0x2f, 0x45, 0x33, 0x53, 0x47, 0x54, 0x6e, 0x6c, 0x5c, 0x0a, 0x09, 0x46, 0x2b, 0x65, 0x55, 0x32, 0x53, 0x4c, 0x70, 0x67, 0x6a, 0x34, 0x36, 0x64, 0x36, 0x75, 0x58, 0x65, 0x55, 0x35, 0x53, 0x55, 0x34, 0x37, 0x4f, 0x61, 0x74, 0x64, 0x35, 0x53, 0x74, 0x4a, 0x70, 0x67, 0x5a, 0x33, 0x6a, 0x4d, 0x33, 0x54, 0x48, 0x71, 0x50, 0x4b, 0x32, 0x4a, 0x5a, 0x67, 0x66, 0x79, 0x4f, 0x38, 0x4f, 0x38, 0x6a, 0x66, 0x6e, 0x32, 0x47, 0x73, 0x50, 0x64, 0x4d, 0x37, 0x4b, 0x6b, 0x46, 0x38, 0x58, 0x2b, 0x48, 0x78, 0x69, 0x5c, 0x0a, 0x09, 0x6f, 0x4e, 0x75, 0x74, 0x66, 0x4c, 0x77, 0x73, 0x47, 0x39, 0x57, 0x4b, 0x32, 0x71, 0x4b, 0x6c, 0x68, 0x6e, 0x7a, 0x41, 0x56, 0x39, 0x34, 0x30, 0x4d, 0x46, 0x6d, 0x43, 0x54, 0x4b, 0x4c, 0x67, 0x62, 0x6d, 0x77, 0x61, 0x38, 0x31, 0x66, 0x67, 0x5a, 0x4f, 0x42, 0x61, 0x34, 0x43, 0x78, 0x67, 0x50, 0x58, 0x41, 0x4f, 0x6c, 0x66, 0x6b, 0x71, 0x77, 0x43, 0x4c, 0x67, 0x70, 0x38, 0x48, 0x39, 0x49, 0x31, 0x68, 0x6b, 0x76, 0x42, 0x51, 0x34, 0x5c, 0x0a, 0x09, 0x45, 0x39, 0x67, 0x41, 0x58, 0x41, 0x6e, 0x63, 0x58, 0x79, 0x4d, 0x2b, 0x62, 0x66, 0x4e, 0x30, 0x4d, 0x78, 0x5a, 0x6c, 0x5a, 0x32, 0x47, 0x2f, 0x70, 0x78, 0x33, 0x59, 0x71, 0x6c, 0x6b, 0x50, 0x46, 0x76, 0x48, 0x50, 0x41, 0x64, 0x61, 0x6b, 0x64, 0x4b, 0x2f, 0x78, 0x4f, 0x74, 0x2f, 0x79, 0x35, 0x35, 0x67, 0x48, 0x33, 0x4f, 0x4c, 0x2b, 0x41, 0x6a, 0x77, 0x47, 0x66, 0x4d, 0x46, 0x2f, 0x37, 0x79, 0x45, 0x62, 0x34, 0x34, 0x50, 0x66, 0x5c, 0x0a, 0x09, 0x6b, 0x7a, 0x4c, 0x6b, 0x47, 0x7a, 0x77, 0x39, 0x47, 0x7a, 0x6a, 0x6f, 0x74, 0x73, 0x59, 0x44, 0x56, 0x32, 0x41, 0x7a, 0x6a, 0x54, 0x4f, 0x42, 0x6b, 0x37, 0x41, 0x70, 0x35, 0x6b, 0x48, 0x67, 0x65, 0x61, 0x41, 0x54, 0x4f, 0x4a, 0x52, 0x6a, 0x4c, 0x30, 0x46, 0x50, 0x44, 0x66, 0x6e, 0x41, 0x6b, 0x63, 0x4f, 0x4d, 0x59, 0x77, 0x4f, 0x47, 0x48, 0x70, 0x44, 0x30, 0x67, 0x5a, 0x52, 0x38, 0x73, 0x69, 0x7a, 0x36, 0x6c, 0x71, 0x54, 0x37, 0x5c, 0x0a, 0x09, 0x55, 0x2b, 0x57, 0x53, 0x59, 0x4f, 0x68, 0x5a, 0x53, 0x54, 0x4d, 0x43, 0x32, 0x53, 0x6d, 0x71, 0x44, 0x4e, 0x6e, 0x64, 0x71, 0x68, 0x33, 0x55, 0x58, 0x4f, 0x2b, 0x36, 0x75, 0x79, 0x56, 0x4e, 0x79, 0x4e, 0x46, 0x5a, 0x45, 0x2f, 0x69, 0x35, 0x55, 0x4e, 0x4c, 0x6a, 0x67, 0x65, 0x33, 0x52, 0x67, 0x64, 0x34, 0x73, 0x56, 0x61, 0x4c, 0x70, 0x4f, 0x31, 0x77, 0x33, 0x77, 0x52, 0x57, 0x75, 0x63, 0x34, 0x79, 0x6b, 0x2f, 0x5a, 0x36, 0x33, 0x5c, 0x0a, 0x09, 0x4d, 0x63, 0x66, 0x65, 0x37, 0x4b, 0x44, 0x63, 0x68, 0x52, 0x6e, 0x79, 0x46, 0x74, 0x6c, 0x77, 0x4c, 0x55, 0x6e, 0x6e, 0x53, 0x76, 0x71, 0x35, 0x2f, 0x31, 0x35, 0x54, 0x34, 0x31, 0x6d, 0x48, 0x37, 0x63, 0x6f, 0x54, 0x6a, 0x41, 0x34, 0x65, 0x39, 0x4a, 0x34, 0x63, 0x6e, 0x66, 0x6b, 0x75, 0x44, 0x34, 0x4f, 0x65, 0x70, 0x5a, 0x36, 0x33, 0x56, 0x39, 0x6e, 0x44, 0x63, 0x4a, 0x73, 0x71, 0x45, 0x66, 0x32, 0x33, 0x61, 0x6a, 0x6a, 0x58, 0x5c, 0x0a, 0x09, 0x4a, 0x6d, 0x6d, 0x66, 0x36, 0x7a, 0x36, 0x6d, 0x33, 0x74, 0x2f, 0x6b, 0x4e, 0x6c, 0x56, 0x50, 0x77, 0x57, 0x36, 0x58, 0x64, 0x46, 0x37, 0x51, 0x41, 0x62, 0x2b, 0x54, 0x39, 0x41, 0x6c, 0x4a, 0x4e, 0x30, 0x72, 0x36, 0x72, 0x2b, 0x64, 0x74, 0x56, 0x34, 0x56, 0x4d, 0x53, 0x65, 0x64, 0x30, 0x71, 0x52, 0x4a, 0x67, 0x72, 0x66, 0x53, 0x38, 0x58, 0x54, 0x6b, 0x2b, 0x6e, 0x52, 0x48, 0x59, 0x4f, 0x7a, 0x56, 0x48, 0x4a, 0x2f, 0x6c, 0x6b, 0x5c, 0x0a, 0x09, 0x4c, 0x70, 0x4b, 0x30, 0x49, 0x4e, 0x44, 0x2f, 0x61, 0x6f, 0x33, 0x6e, 0x6e, 0x61, 0x6a, 0x73, 0x4f, 0x4b, 0x42, 0x46, 0x30, 0x6a, 0x63, 0x6c, 0x58, 0x56, 0x6d, 0x6a, 0x2f, 0x4a, 0x41, 0x53, 0x6f, 0x44, 0x6c, 0x77, 0x2f, 0x4f, 0x4d, 0x46, 0x46, 0x57, 0x78, 0x77, 0x6e, 0x54, 0x76, 0x39, 0x50, 0x76, 0x6d, 0x4f, 0x66, 0x72, 0x2b, 0x67, 0x7a, 0x4e, 0x64, 0x63, 0x5a, 0x32, 0x30, 0x66, 0x48, 0x50, 0x78, 0x63, 0x34, 0x4d, 0x63, 0x6d, 0x5c, 0x0a, 0x09, 0x53, 0x5a, 0x2b, 0x56, 0x64, 0x65, 0x44, 0x4a, 0x73, 0x76, 0x6c, 0x38, 0x69, 0x48, 0x56, 0x65, 0x35, 0x6a, 0x70, 0x56, 0x53, 0x42, 0x44, 0x69, 0x46, 0x56, 0x56, 0x2f, 0x74, 0x39, 0x74, 0x55, 0x47, 0x63, 0x57, 0x36, 0x5a, 0x42, 0x48, 0x35, 0x52, 0x2f, 0x33, 0x2b, 0x7a, 0x59, 0x4a, 0x32, 0x57, 0x53, 0x58, 0x70, 0x4a, 0x38, 0x71, 0x50, 0x53, 0x2f, 0x37, 0x73, 0x64, 0x58, 0x7a, 0x53, 0x37, 0x33, 0x38, 0x55, 0x2b, 0x4c, 0x42, 0x4b, 0x5c, 0x0a, 0x09, 0x6c, 0x5a, 0x63, 0x6c, 0x4a, 0x4e, 0x55, 0x79, 0x74, 0x39, 0x6d, 0x74, 0x33, 0x6e, 0x48, 0x56, 0x58, 0x43, 0x39, 0x37, 0x71, 0x4d, 0x44, 0x6d, 0x6b, 0x42, 0x4f, 0x41, 0x77, 0x4f, 0x6e, 0x5a, 0x42, 0x54, 0x6f, 0x33, 0x75, 0x4d, 0x34, 0x6d, 0x76, 0x31, 0x2f, 0x68, 0x39, 0x30, 0x56, 0x76, 0x39, 0x32, 0x32, 0x75, 0x38, 0x33, 0x67, 0x66, 0x6e, 0x62, 0x78, 0x4b, 0x31, 0x57, 0x39, 0x36, 0x47, 0x73, 0x6c, 0x63, 0x75, 0x79, 0x73, 0x6f, 0x5c, 0x0a, 0x09, 0x30, 0x79, 0x45, 0x4c, 0x45, 0x4c, 0x65, 0x35, 0x62, 0x39, 0x2b, 0x57, 0x39, 0x4f, 0x36, 0x4d, 0x75, 0x71, 0x64, 0x4a, 0x2b, 0x70, 0x4d, 0x73, 0x36, 0x42, 0x76, 0x6e, 0x65, 0x55, 0x74, 0x6b, 0x52, 0x42, 0x68, 0x6f, 0x6f, 0x38, 0x36, 0x53, 0x66, 0x56, 0x61, 0x53, 0x47, 0x63, 0x38, 0x59, 0x53, 0x59, 0x2b, 0x6b, 0x66, 0x4e, 0x34, 0x75, 0x43, 0x78, 0x52, 0x33, 0x70, 0x76, 0x4a, 0x66, 0x6c, 0x44, 0x51, 0x6c, 0x56, 0x56, 0x2b, 0x72, 0x5c, 0x0a, 0x09, 0x70, 0x41, 0x64, 0x6c, 0x6e, 0x36, 0x56, 0x68, 0x49, 0x55, 0x42, 0x52, 0x59, 0x35, 0x77, 0x64, 0x36, 0x4a, 0x30, 0x67, 0x47, 0x36, 0x6f, 0x6b, 0x36, 0x52, 0x63, 0x35, 0x2b, 0x6a, 0x4e, 0x55, 0x47, 0x59, 0x35, 0x76, 0x37, 0x49, 0x65, 0x6a, 0x37, 0x54, 0x4a, 0x79, 0x68, 0x61, 0x75, 0x41, 0x6d, 0x32, 0x56, 0x44, 0x66, 0x42, 0x69, 0x76, 0x6e, 0x44, 0x54, 0x55, 0x44, 0x54, 0x52, 0x45, 0x56, 0x35, 0x4f, 0x6b, 0x61, 0x79, 0x54, 0x39, 0x5c, 0x0a, 0x09, 0x51, 0x37, 0x31, 0x78, 0x52, 0x4e, 0x4c, 0x76, 0x4a, 0x56, 0x32, 0x72, 0x36, 0x72, 0x6a, 0x6c, 0x71, 0x46, 0x78, 0x46, 0x65, 0x77, 0x45, 0x39, 0x32, 0x4c, 0x72, 0x37, 0x45, 0x71, 0x71, 0x6a, 0x2b, 0x68, 0x41, 0x74, 0x32, 0x50, 0x70, 0x30, 0x43, 0x37, 0x59, 0x75, 0x50, 0x67, 0x72, 0x34, 0x44, 0x52, 0x61, 0x31, 0x58, 0x77, 0x7a, 0x38, 0x32, 0x76, 0x58, 0x47, 0x41, 0x6c, 0x63, 0x44, 0x79, 0x37, 0x43, 0x39, 0x37, 0x52, 0x65, 0x77, 0x5c, 0x0a, 0x09, 0x55, 0x79, 0x37, 0x39, 0x58, 0x64, 0x74, 0x75, 0x78, 0x74, 0x62, 0x32, 0x44, 0x31, 0x49, 0x64, 0x71, 0x65, 0x38, 0x44, 0x6a, 0x6e, 0x4d, 0x66, 0x30, 0x76, 0x73, 0x43, 0x6a, 0x59, 0x59, 0x5a, 0x32, 0x4f, 0x78, 0x71, 0x41, 0x76, 0x59, 0x4d, 0x57, 0x34, 0x48, 0x58, 0x68, 0x73, 0x75, 0x5a, 0x6f, 0x74, 0x33, 0x41, 0x54, 0x6d, 0x78, 0x36, 0x31, 0x56, 0x61, 0x67, 0x30, 0x34, 0x4d, 0x39, 0x78, 0x42, 0x52, 0x73, 0x65, 0x76, 0x4d, 0x41, 0x5c, 0x0a, 0x09, 0x38, 0x41, 0x54, 0x77, 0x4d, 0x57, 0x41, 0x74, 0x73, 0x4d, 0x35, 0x74, 0x7a, 0x4d, 0x4d, 0x32, 0x4d, 0x38, 0x42, 0x32, 0x33, 0x53, 0x35, 0x6c, 0x59, 0x42, 0x73, 0x62, 0x52, 0x37, 0x78, 0x38, 0x47, 0x67, 0x6b, 0x42, 0x69, 0x6e, 0x78, 0x74, 0x46, 0x47, 0x7a, 0x7a, 0x71, 0x79, 0x46, 0x51, 0x64, 0x43, 0x43, 0x6b, 0x30, 0x39, 0x50, 0x4a, 0x4e, 0x65, 0x70, 0x49, 0x31, 0x67, 0x41, 0x6d, 0x65, 0x72, 0x6f, 0x45, 0x6d, 0x31, 0x4f, 0x33, 0x5c, 0x0a, 0x09, 0x41, 0x4a, 0x64, 0x67, 0x57, 0x36, 0x72, 0x6a, 0x73, 0x4c, 0x6e, 0x75, 0x66, 0x64, 0x6a, 0x57, 0x61, 0x48, 0x38, 0x61, 0x34, 0x48, 0x7a, 0x67, 0x4c, 0x75, 0x44, 0x34, 0x41, 0x70, 0x32, 0x45, 0x58, 0x4c, 0x58, 0x6d, 0x30, 0x78, 0x45, 0x70, 0x46, 0x49, 0x30, 0x41, 0x7a, 0x32, 0x42, 0x62, 0x6e, 0x30, 0x58, 0x37, 0x33, 0x47, 0x42, 0x76, 0x66, 0x52, 0x65, 0x32, 0x4b, 0x41, 0x53, 0x32, 0x69, 0x48, 0x51, 0x35, 0x63, 0x43, 0x35, 0x77, 0x5c, 0x0a, 0x09, 0x41, 0x64, 0x59, 0x35, 0x4c, 0x77, 0x4b, 0x2f, 0x6f, 0x6e, 0x72, 0x42, 0x71, 0x4b, 0x2b, 0x34, 0x41, 0x37, 0x67, 0x49, 0x32, 0x38, 0x70, 0x64, 0x6e, 0x69, 0x45, 0x66, 0x52, 0x2b, 0x58, 0x49, 0x56, 0x4e, 0x34, 0x43, 0x54, 0x6b, 0x51, 0x4f, 0x69, 0x6d, 0x4b, 0x41, 0x56, 0x75, 0x78, 0x74, 0x33, 0x55, 0x6a, 0x2b, 0x53, 0x74, 0x7a, 0x52, 0x77, 0x48, 0x4c, 0x67, 0x5a, 0x75, 0x7a, 0x62, 0x50, 0x6a, 0x39, 0x44, 0x76, 0x67, 0x41, 0x6a, 0x5c, 0x0a, 0x09, 0x31, 0x39, 0x76, 0x41, 0x75, 0x36, 0x6a, 0x48, 0x6e, 0x76, 0x6b, 0x37, 0x47, 0x45, 0x57, 0x66, 0x67, 0x45, 0x50, 0x59, 0x53, 0x5a, 0x6e, 0x68, 0x50, 0x6a, 0x47, 0x79, 0x79, 0x74, 0x4d, 0x4f, 0x62, 0x4e, 0x6b, 0x35, 0x6a, 0x61, 0x73, 0x39, 0x58, 0x55, 0x2f, 0x73, 0x2f, 0x48, 0x35, 0x6a, 0x4a, 0x42, 0x77, 0x4b, 0x2f, 0x53, 0x4e, 0x32, 0x48, 0x41, 0x76, 0x67, 0x62, 0x6d, 0x77, 0x64, 0x50, 0x55, 0x45, 0x48, 0x46, 0x6e, 0x4d, 0x41, 0x5c, 0x0a, 0x09, 0x66, 0x4f, 0x39, 0x6f, 0x4f, 0x76, 0x56, 0x4f, 0x77, 0x55, 0x67, 0x35, 0x45, 0x6e, 0x59, 0x4f, 0x46, 0x70, 0x4f, 0x30, 0x59, 0x6d, 0x2f, 0x36, 0x76, 0x64, 0x68, 0x52, 0x72, 0x6c, 0x75, 0x78, 0x36, 0x48, 0x38, 0x39, 0x39, 0x69, 0x6d, 0x49, 0x36, 0x43, 0x64, 0x47, 0x43, 0x67, 0x48, 0x41, 0x64, 0x68, 0x42, 0x58, 0x30, 0x76, 0x74, 0x2f, 0x63, 0x6c, 0x75, 0x77, 0x77, 0x35, 0x78, 0x37, 0x65, 0x35, 0x57, 0x49, 0x71, 0x49, 0x6d, 0x52, 0x5c, 0x0a, 0x09, 0x52, 0x41, 0x43, 0x77, 0x6b, 0x65, 0x42, 0x6d, 0x62, 0x4c, 0x36, 0x2f, 0x42, 0x54, 0x76, 0x67, 0x75, 0x59, 0x34, 0x34, 0x2f, 0x52, 0x73, 0x77, 0x52, 0x68, 0x6f, 0x42, 0x49, 0x6f, 0x59, 0x59, 0x49, 0x79, 0x45, 0x49, 0x6a, 0x4b, 0x67, 0x6a, 0x49, 0x67, 0x46, 0x4b, 0x6a, 0x6b, 0x69, 0x41, 0x6b, 0x69, 0x4d, 0x53, 0x6f, 0x4f, 0x53, 0x49, 0x42, 0x43, 0x67, 0x35, 0x49, 0x67, 0x46, 0x4b, 0x6a, 0x6b, 0x69, 0x41, 0x6b, 0x69, 0x4d, 0x53, 0x5c, 0x0a, 0x09, 0x6f, 0x4f, 0x53, 0x49, 0x42, 0x43, 0x67, 0x35, 0x49, 0x67, 0x46, 0x4b, 0x6a, 0x6b, 0x69, 0x41, 0x6b, 0x69, 0x4d, 0x53, 0x6f, 0x4f, 0x53, 0x49, 0x42, 0x43, 0x67, 0x35, 0x49, 0x67, 0x46, 0x4b, 0x6a, 0x6b, 0x69, 0x41, 0x6b, 0x69, 0x4d, 0x53, 0x6f, 0x4f, 0x53, 0x49, 0x42, 0x43, 0x67, 0x35, 0x49, 0x67, 0x46, 0x4b, 0x6a, 0x6b, 0x69, 0x41, 0x6b, 0x69, 0x4d, 0x53, 0x6f, 0x4f, 0x53, 0x49, 0x42, 0x43, 0x67, 0x35, 0x49, 0x67, 0x46, 0x4b, 0x5c, 0x0a, 0x09, 0x6a, 0x6b, 0x69, 0x41, 0x6b, 0x69, 0x4d, 0x53, 0x6f, 0x4f, 0x53, 0x49, 0x42, 0x43, 0x67, 0x35, 0x49, 0x67, 0x46, 0x4b, 0x6a, 0x6b, 0x69, 0x41, 0x6b, 0x69, 0x4d, 0x53, 0x6f, 0x4f, 0x53, 0x49, 0x42, 0x43, 0x67, 0x35, 0x49, 0x67, 0x46, 0x4b, 0x6a, 0x76, 0x38, 0x44, 0x2f, 0x7a, 0x63, 0x46, 0x56, 0x65, 0x67, 0x2b, 0x6a, 0x62, 0x55, 0x41, 0x41, 0x41, 0x41, 0x41, 0x53, 0x55, 0x56, 0x4f, 0x52, 0x4b, 0x35, 0x43, 0x59, 0x49, 0x49, 0x3d, 0x5c, 0x0a, 0x09, 0x22, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x2c, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x77, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2e, 0x6e, 0x65, 0x77, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x61, 0x74, 0x61, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x6e, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x2c, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x22, 0x5f, 0x22, 0x2c, 0x20, 0x22, 0x2e, 0x22, 0x29, 0x2c, 0x20, 0x22, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x22, 0x29, 0x29, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x61, 0x69, 0x6e, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x30, 0x0a, 0x09, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x69, 0x6e, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6c, 0x6f, 0x61, 0x64, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x53, 0x75, 0x62, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x61, 0x6e, 0x63, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x2c, 0x20, 0x73, 0x6f, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x77, 0x65, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x69, 0x74, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x64, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x69, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x28, 0x22, 0x73, 0x75, 0x62, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x31, 0x33, 0x37, 0x2c, 0x20, 0x31, 0x39, 0x34, 0x2c, 0x20, 0x32, 0x31, 0x38, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x31, 0x31, 0x2c, 0x20, 0x38, 0x38, 0x2c, 0x20, 0x31, 0x32, 0x33, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x77, 0x69, 0x6e, 0x5f, 0x77, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x77, 0x69, 0x6e, 0x5f, 0x68, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6e, 0x67, 0x2c, 0x20, 0x22, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x77, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x68, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x77, 0x69, 0x6e, 0x5f, 0x77, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x77, 0x69, 0x6e, 0x5f, 0x68, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x35, 0x0a, 0x09, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x70, 0x6e, 0x67, 0x2c, 0x20, 0x22, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x77, 0x20, 0x3d, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x68, 0x20, 0x3d, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x0a, 0x09, 0x09, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x0a, 0x09, 0x09, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6e, 0x67, 0x2c, 0x20, 0x22, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x77, 0x20, 0x3d, 0x20, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x68, 0x20, 0x3d, 0x20, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x31, 0x34, 0x30, 0x0a, 0x09, 0x09, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x2d, 0x38, 0x30, 0x0a, 0x09, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x6e, 0x67, 0x2c, 0x20, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x32, 0x35, 0x0a, 0x09, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x39, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x42, 0x61, 0x62, 0x79, 0x20, 0x52, 0x61, 0x69, 0x6e, 0x0a, 0x09, 0x09, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x78, 0x20, 0x3d, 0x20, 0x31, 0x31, 0x30, 0x0a, 0x09, 0x09, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x79, 0x20, 0x3d, 0x20, 0x38, 0x30, 0x0a, 0x09, 0x09, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x28, 0x62, 0x61, 0x62, 0x79, 0x5f, 0x70, 0x6e, 0x67, 0x2c, 0x20, 0x22, 0x62, 0x61, 0x62, 0x79, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x77, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x68, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x3a, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x6f, 0x78, 0x20, 0x3d, 0x20, 0x2d, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x77, 0x20, 0x2f, 0x20, 0x32, 0x0a, 0x09, 0x09, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x6f, 0x79, 0x20, 0x3d, 0x20, 0x2d, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x68, 0x20, 0x2f, 0x20, 0x32, 0x0a, 0x09, 0x09, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x77, 0x53, 0x70, 0x72, 0x69, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x28, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x35, 0x31, 0x32, 0x29, 0x0a, 0x09, 0x09, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x0a, 0x09, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x78, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x78, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x79, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x79, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x78, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x6f, 0x78, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x79, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x6f, 0x79, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x2f, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x20, 0x3d, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x63, 0x65, 0x69, 0x6c, 0x28, 0x6d, 0x20, 0x2a, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x28, 0x29, 0x20, 0x2f, 0x20, 0x73, 0x78, 0x29, 0x20, 0x2b, 0x20, 0x32, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x20, 0x3d, 0x20, 0x32, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x63, 0x65, 0x69, 0x6c, 0x28, 0x6d, 0x20, 0x2a, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x28, 0x29, 0x20, 0x2f, 0x20, 0x73, 0x79, 0x29, 0x20, 0x2b, 0x20, 0x32, 0x0a, 0x09, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x67, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x28, 0x29, 0x20, 0x3c, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x20, 0x2a, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x73, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x28, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x20, 0x2a, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x62, 0x69, 0x6e, 0x64, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x20, 0x2d, 0x20, 0x31, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x77, 0x20, 0x2d, 0x20, 0x31, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x20, 0x3d, 0x20, 0x28, 0x6a, 0x20, 0x25, 0x20, 0x32, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x30, 0x20, 0x6f, 0x72, 0x20, 0x73, 0x79, 0x20, 0x2f, 0x20, 0x32, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x6f, 0x78, 0x20, 0x2b, 0x20, 0x6a, 0x20, 0x2a, 0x20, 0x73, 0x78, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x6f, 0x79, 0x20, 0x2b, 0x20, 0x69, 0x20, 0x2a, 0x20, 0x73, 0x79, 0x20, 0x2b, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x79, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x61, 0x64, 0x64, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x75, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x28, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x69, 0x6e, 0x28, 0x74, 0x29, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x77, 0x2c, 0x20, 0x68, 0x29, 0x0a, 0x09, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x28, 0x64, 0x74, 0x29, 0x0a, 0x09, 0x09, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x3d, 0x20, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x2b, 0x20, 0x64, 0x74, 0x20, 0x2f, 0x20, 0x32, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x63, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x6d, 0x6f, 0x64, 0x66, 0x28, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x69, 0x6e, 0x28, 0x66, 0x72, 0x61, 0x63, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x28, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x34, 0x35, 0x20, 0x2f, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x28, 0x29, 0x20, 0x2a, 0x20, 0x30, 0x2e, 0x35, 0x35, 0x20, 0x2f, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x22, 0x73, 0x75, 0x62, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x69, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x28, 0x22, 0x73, 0x75, 0x62, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x57, 0x65, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2c, 0x20, 0x73, 0x6f, 0x20, 0x69, 0x74, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x4f, 0x4b, 0x2e, 0x0a, 0x09, 0x09, 0x09, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x22, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x76, 0x65, 0x22, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x79, 0x20, 0x2a, 0x20, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x74, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x79, 0x20, 0x3d, 0x20, 0x2d, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2f, 0x20, 0x32, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x69, 0x67, 0x5f, 0x79, 0x20, 0x3d, 0x20, 0x2d, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x6c, 0x65, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x28, 0x62, 0x6c, 0x65, 0x6e, 0x64, 0x6d, 0x6f, 0x64, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x31, 0x32, 0x38, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2c, 0x20, 0x2d, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x78, 0x2c, 0x20, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x35, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x6c, 0x65, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x28, 0x22, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x2c, 0x20, 0x2d, 0x72, 0x61, 0x69, 0x6e, 0x2e, 0x73, 0x70, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x78, 0x2c, 0x20, 0x62, 0x69, 0x67, 0x5f, 0x79, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x2c, 0x20, 0x66, 0x72, 0x61, 0x63, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x6d, 0x6f, 0x64, 0x66, 0x28, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x66, 0x72, 0x61, 0x63, 0x20, 0x3c, 0x20, 0x30, 0x2e, 0x35, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x78, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x78, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2b, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x79, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x74, 0x78, 0x2c, 0x20, 0x74, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x37, 0x30, 0x2c, 0x20, 0x37, 0x30, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x73, 0x69, 0x6e, 0x28, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x70, 0x69, 0x20, 0x2a, 0x20, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x2a, 0x20, 0x32, 0x29, 0x20, 0x2b, 0x20, 0x31, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x78, 0x20, 0x3d, 0x20, 0x78, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x79, 0x20, 0x3d, 0x20, 0x79, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x36, 0x34, 0x20, 0x2b, 0x20, 0x31, 0x36, 0x2a, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x62, 0x78, 0x2c, 0x20, 0x62, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x2c, 0x20, 0x30, 0x2e, 0x37, 0x2c, 0x20, 0x32, 0x35, 0x36, 0x2c, 0x20, 0x32, 0x35, 0x36, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x33, 0x32, 0x20, 0x2b, 0x20, 0x31, 0x36, 0x2a, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x62, 0x78, 0x2c, 0x20, 0x62, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x36, 0x35, 0x2c, 0x20, 0x30, 0x2e, 0x36, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x36, 0x2c, 0x20, 0x32, 0x35, 0x36, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x6c, 0x65, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x28, 0x22, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x76, 0x65, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x31, 0x36, 0x20, 0x2b, 0x20, 0x31, 0x36, 0x2a, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x62, 0x78, 0x2c, 0x20, 0x62, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2e, 0x36, 0x2c, 0x20, 0x30, 0x2e, 0x36, 0x2c, 0x20, 0x32, 0x35, 0x36, 0x2c, 0x20, 0x32, 0x35, 0x36, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x73, 0x63, 0x20, 0x3d, 0x20, 0x31, 0x30, 0x20, 0x2a, 0x20, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x73, 0x69, 0x6e, 0x28, 0x6d, 0x61, 0x74, 0x68, 0x2e, 0x70, 0x69, 0x20, 0x2a, 0x20, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x78, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x78, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x79, 0x20, 0x3d, 0x20, 0x79, 0x20, 0x2b, 0x20, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x79, 0x20, 0x2b, 0x20, 0x6f, 0x73, 0x63, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x62, 0x78, 0x2c, 0x20, 0x62, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x37, 0x30, 0x2c, 0x20, 0x37, 0x30, 0x29, 0x0a, 0x09, 0x09, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x28, 0x62, 0x78, 0x2c, 0x20, 0x62, 0x79, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x78, 0x2c, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x78, 0x2c, 0x20, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x79, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6f, 0x78, 0x2c, 0x20, 0x6f, 0x79, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x77, 0x20, 0x2f, 0x20, 0x32, 0x2c, 0x20, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x69, 0x6d, 0x67, 0x5f, 0x68, 0x20, 0x2f, 0x20, 0x32, 0x0a, 0x09, 0x09, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x6c, 0x65, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x28, 0x22, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x6f, 0x78, 0x2c, 0x20, 0x6f, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x62, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x28, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x64, 0x72, 0x61, 0x77, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x75, 0x73, 0x68, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x67, 0x65, 0x74, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x53, 0x63, 0x61, 0x6c, 0x65, 0x28, 0x29, 0x29, 0x0a, 0x09, 0x09, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x67, 0x72, 0x69, 0x64, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x6f, 0x70, 0x28, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6b, 0x65, 0x79, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x28, 0x6b, 0x65, 0x79, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x71, 0x75, 0x69, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x28, 0x74, 0x29, 0x0a, 0x09, 0x09, 0x74, 0x2e, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x22, 0x4c, 0x5c, 0x31, 0x39, 0x35, 0x5c, 0x31, 0x35, 0x30, 0x56, 0x45, 0x20, 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x2e, 0x2e, 0x20, 0x22, 0x20, 0x28, 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x2e, 0x2e, 0x20, 0x22, 0x29, 0x22, 0x0a, 0x09, 0x09, 0x74, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x74, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x74, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x74, 0x2e, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x74, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x72, 0x65, 0x73, 0x69, 0x7a, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x09, 0x74, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x68, 0x69, 0x67, 0x68, 0x64, 0x70, 0x69, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x2d, 0x2d, 0x20, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x2e, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2c, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2c, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x28, 0x6d, 0x73, 0x67, 0x2c, 0x20, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x29, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x28, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x22, 0x20, 0x2e, 0x2e, 0x20, 0x74, 0x6f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x2c, 0x20, 0x31, 0x2b, 0x28, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x20, 0x6f, 0x72, 0x20, 0x31, 0x29, 0x29, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x22, 0x5c, 0x6e, 0x5b, 0x5e, 0x5c, 0x6e, 0x5d, 0x2b, 0x24, 0x22, 0x2c, 0x20, 0x22, 0x22, 0x29, 0x29, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x72, 0x72, 0x68, 0x61, 0x6e, 0x64, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x0a, 0x09, 0x6d, 0x73, 0x67, 0x20, 0x3d, 0x20, 0x74, 0x6f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x28, 0x6d, 0x73, 0x67, 0x29, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x28, 0x6d, 0x73, 0x67, 0x2c, 0x20, 0x32, 0x29, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x69, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x28, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x69, 0x73, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x28, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x73, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x38, 0x30, 0x30, 0x2c, 0x20, 0x36, 0x30, 0x30, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x2e, 0x73, 0x65, 0x74, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x28, 0x74, 0x72, 0x75, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x2e, 0x73, 0x65, 0x74, 0x47, 0x72, 0x61, 0x62, 0x62, 0x65, 0x64, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x53, 0x74, 0x6f, 0x70, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x20, 0x76, 0x69, 0x62, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x2c, 0x76, 0x20, 0x69, 0x6e, 0x20, 0x69, 0x70, 0x61, 0x69, 0x72, 0x73, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x6a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x2e, 0x67, 0x65, 0x74, 0x4a, 0x6f, 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x73, 0x28, 0x29, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x3a, 0x73, 0x65, 0x74, 0x56, 0x69, 0x62, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x2e, 0x73, 0x74, 0x6f, 0x70, 0x28, 0x29, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x72, 0x65, 0x73, 0x65, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x38, 0x39, 0x2c, 0x20, 0x31, 0x35, 0x37, 0x2c, 0x20, 0x32, 0x32, 0x30, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x46, 0x6f, 0x6e, 0x74, 0x28, 0x31, 0x34, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x3d, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x28, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x28, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x28, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x7b, 0x7d, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x28, 0x65, 0x72, 0x72, 0x2c, 0x20, 0x22, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5c, 0x6e, 0x22, 0x29, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x28, 0x65, 0x72, 0x72, 0x2c, 0x20, 0x6d, 0x73, 0x67, 0x2e, 0x2e, 0x22, 0x5c, 0x6e, 0x5c, 0x6e, 0x22, 0x29, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2c, 0x20, 0x22, 0x28, 0x2e, 0x2d, 0x29, 0x5c, 0x6e, 0x22, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x6c, 0x2c, 0x20, 0x22, 0x62, 0x6f, 0x6f, 0x74, 0x2e, 0x6c, 0x75, 0x61, 0x22, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62, 0x28, 0x6c, 0x2c, 0x20, 0x22, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x3a, 0x22, 0x2c, 0x20, 0x22, 0x54, 0x72, 0x61, 0x63, 0x65, 0x62, 0x61, 0x63, 0x6b, 0x5c, 0x6e, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x28, 0x65, 0x72, 0x72, 0x2c, 0x20, 0x6c, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x20, 0x3d, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x28, 0x65, 0x72, 0x72, 0x2c, 0x20, 0x22, 0x5c, 0x6e, 0x22, 0x29, 0x0a, 0x09, 0x70, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62, 0x28, 0x70, 0x2c, 0x20, 0x22, 0x5c, 0x74, 0x22, 0x2c, 0x20, 0x22, 0x22, 0x29, 0x0a, 0x09, 0x70, 0x20, 0x3d, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x67, 0x73, 0x75, 0x62, 0x28, 0x70, 0x2c, 0x20, 0x22, 0x25, 0x5b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x20, 0x5c, 0x22, 0x28, 0x2e, 0x2d, 0x29, 0x5c, 0x22, 0x25, 0x5d, 0x22, 0x2c, 0x20, 0x22, 0x25, 0x31, 0x22, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x72, 0x61, 0x77, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x28, 0x70, 0x2c, 0x20, 0x37, 0x30, 0x2c, 0x20, 0x37, 0x30, 0x2c, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x57, 0x69, 0x64, 0x74, 0x68, 0x28, 0x29, 0x20, 0x2d, 0x20, 0x37, 0x30, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x75, 0x6d, 0x70, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x65, 0x2c, 0x20, 0x61, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x63, 0x20, 0x69, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x6f, 0x6c, 0x6c, 0x28, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x71, 0x75, 0x69, 0x74, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x65, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x6b, 0x65, 0x79, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x22, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x22, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x64, 0x72, 0x61, 0x77, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x73, 0x6c, 0x65, 0x65, 0x70, 0x28, 0x30, 0x2e, 0x31, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x64, 0x65, 0x66, 0x65, 0x72, 0x45, 0x72, 0x72, 0x68, 0x61, 0x6e, 0x64, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x65, 0x72, 0x72, 0x68, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x65, 0x6e, 0x64, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x2d, 0x2d, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x6f, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x2e, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x78, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x62, 0x6f, 0x6f, 0x74, 0x2c, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x29, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x78, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x69, 0x74, 0x2c, 0x20, 0x64, 0x65, 0x66, 0x65, 0x72, 0x45, 0x72, 0x72, 0x68, 0x61, 0x6e, 0x64, 0x29, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2c, 0x20, 0x72, 0x65, 0x74, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x78, 0x70, 0x63, 0x61, 0x6c, 0x6c, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x2c, 0x20, 0x64, 0x65, 0x66, 0x65, 0x72, 0x45, 0x72, 0x72, 0x68, 0x61, 0x6e, 0x64, 0x29, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x31, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x6f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x28, 0x72, 0x65, 0x74, 0x76, 0x61, 0x6c, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x30, 0x0a, 0x65, 0x6e, 0x64, 0x0a, }; // [boot.lua] } // love love-0.9.1/src/scripts/graphics.lua.h0000644000000000000000000222021112316602166017476 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ namespace love { // [graphics.lua] const unsigned char graphics_lua[] = { 0x2d, 0x2d, 0x5b, 0x5b, 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x2d, 0x32, 0x30, 0x31, 0x34, 0x20, 0x4c, 0x4f, 0x56, 0x45, 0x20, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x54, 0x65, 0x61, 0x6d, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x27, 0x61, 0x73, 0x2d, 0x69, 0x73, 0x27, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x0a, 0x77, 0x61, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x79, 0x2e, 0x20, 0x20, 0x49, 0x6e, 0x20, 0x6e, 0x6f, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x20, 0x62, 0x65, 0x20, 0x68, 0x65, 0x6c, 0x64, 0x20, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x61, 0x72, 0x69, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6e, 0x79, 0x6f, 0x6e, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x70, 0x75, 0x72, 0x70, 0x6f, 0x73, 0x65, 0x2c, 0x0a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6c, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x69, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x69, 0x74, 0x0a, 0x66, 0x72, 0x65, 0x65, 0x6c, 0x79, 0x2c, 0x20, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x0a, 0x31, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6d, 0x69, 0x73, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x3b, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x0a, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x77, 0x72, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x0a, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x65, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x32, 0x2e, 0x20, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x6c, 0x79, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x73, 0x75, 0x63, 0x68, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x0a, 0x6d, 0x69, 0x73, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x2e, 0x0a, 0x33, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x2d, 0x2d, 0x5d, 0x5d, 0x0a, 0x64, 0x6f, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x76, 0x65, 0x72, 0x61, 0x5f, 0x74, 0x74, 0x66, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2e, 0x6e, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x28, 0x5b, 0x5b, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x41, 0x41, 0x41, 0x52, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x41, 0x51, 0x54, 0x31, 0x4d, 0x76, 0x4d, 0x72, 0x52, 0x66, 0x39, 0x47, 0x4d, 0x41, 0x41, 0x4f, 0x74, 0x77, 0x41, 0x41, 0x41, 0x41, 0x56, 0x6c, 0x42, 0x44, 0x54, 0x46, 0x54, 0x52, 0x69, 0x6c, 0x36, 0x58, 0x41, 0x41, 0x44, 0x72, 0x79, 0x41, 0x41, 0x41, 0x41, 0x44, 0x5a, 0x6a, 0x62, 0x57, 0x46, 0x77, 0x70, 0x4d, 0x50, 0x6f, 0x6f, 0x41, 0x41, 0x41, 0x0a, 0x09, 0x73, 0x57, 0x77, 0x41, 0x41, 0x41, 0x4e, 0x59, 0x59, 0x33, 0x5a, 0x30, 0x49, 0x50, 0x2f, 0x54, 0x48, 0x54, 0x6b, 0x41, 0x41, 0x42, 0x37, 0x38, 0x41, 0x41, 0x41, 0x42, 0x2f, 0x47, 0x5a, 0x77, 0x5a, 0x32, 0x33, 0x6e, 0x74, 0x50, 0x48, 0x45, 0x41, 0x41, 0x41, 0x6d, 0x59, 0x41, 0x41, 0x41, 0x41, 0x49, 0x74, 0x6e, 0x59, 0x58, 0x4e, 0x77, 0x41, 0x41, 0x63, 0x41, 0x42, 0x77, 0x41, 0x42, 0x41, 0x55, 0x67, 0x41, 0x41, 0x41, 0x41, 0x4d, 0x0a, 0x09, 0x5a, 0x32, 0x78, 0x35, 0x5a, 0x67, 0x78, 0x30, 0x51, 0x63, 0x38, 0x41, 0x41, 0x43, 0x62, 0x73, 0x41, 0x41, 0x43, 0x4b, 0x66, 0x6d, 0x68, 0x6b, 0x62, 0x58, 0x67, 0x30, 0x38, 0x43, 0x45, 0x4f, 0x41, 0x41, 0x44, 0x73, 0x41, 0x41, 0x41, 0x41, 0x46, 0x55, 0x68, 0x6f, 0x5a, 0x57, 0x46, 0x6b, 0x33, 0x59, 0x53, 0x69, 0x30, 0x41, 0x41, 0x42, 0x41, 0x56, 0x51, 0x41, 0x41, 0x41, 0x41, 0x32, 0x61, 0x47, 0x68, 0x6c, 0x59, 0x52, 0x42, 0x46, 0x0a, 0x09, 0x43, 0x47, 0x38, 0x41, 0x41, 0x4f, 0x74, 0x4d, 0x41, 0x41, 0x41, 0x41, 0x4a, 0x47, 0x68, 0x74, 0x64, 0x48, 0x67, 0x4a, 0x78, 0x6f, 0x36, 0x79, 0x41, 0x41, 0x43, 0x30, 0x78, 0x41, 0x41, 0x41, 0x42, 0x44, 0x42, 0x72, 0x5a, 0x58, 0x4a, 0x75, 0x33, 0x46, 0x4c, 0x56, 0x6d, 0x51, 0x41, 0x41, 0x76, 0x61, 0x41, 0x41, 0x41, 0x43, 0x32, 0x4b, 0x62, 0x47, 0x39, 0x6a, 0x59, 0x66, 0x50, 0x4c, 0x30, 0x6a, 0x30, 0x41, 0x41, 0x4c, 0x75, 0x45, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x43, 0x47, 0x6d, 0x31, 0x68, 0x65, 0x48, 0x41, 0x46, 0x52, 0x77, 0x59, 0x36, 0x41, 0x41, 0x44, 0x72, 0x4c, 0x41, 0x41, 0x41, 0x41, 0x43, 0x42, 0x75, 0x59, 0x57, 0x31, 0x6c, 0x32, 0x62, 0x7a, 0x49, 0x74, 0x51, 0x41, 0x41, 0x41, 0x52, 0x77, 0x41, 0x41, 0x42, 0x33, 0x66, 0x63, 0x47, 0x39, 0x7a, 0x64, 0x4c, 0x52, 0x61, 0x4c, 0x37, 0x73, 0x41, 0x41, 0x4c, 0x6a, 0x30, 0x41, 0x41, 0x41, 0x43, 0x6a, 0x6e, 0x42, 0x79, 0x0a, 0x09, 0x5a, 0x58, 0x41, 0x37, 0x42, 0x2f, 0x45, 0x41, 0x41, 0x41, 0x41, 0x67, 0x2b, 0x41, 0x41, 0x41, 0x42, 0x57, 0x67, 0x41, 0x41, 0x41, 0x41, 0x57, 0x41, 0x51, 0x34, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x36, 0x41, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x54, 0x41, 0x44, 0x6f, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x67, 0x41, 0x46, 0x0a, 0x09, 0x41, 0x46, 0x38, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x77, 0x41, 0x54, 0x41, 0x44, 0x6f, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x41, 0x41, 0x54, 0x41, 0x44, 0x6f, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x51, 0x41, 0x4d, 0x41, 0x47, 0x51, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x67, 0x41, 0x58, 0x41, 0x45, 0x30, 0x41, 0x41, 0x51, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x41, 0x77, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43, 0x41, 0x41, 0x4f, 0x43, 0x47, 0x77, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43, 0x77, 0x41, 0x59, 0x43, 0x59, 0x4d, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x44, 0x51, 0x6b, 0x54, 0x41, 0x48, 0x41, 0x41, 0x41, 0x77, 0x41, 0x42, 0x42, 0x41, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x30, 0x0a, 0x09, 0x43, 0x5a, 0x73, 0x41, 0x41, 0x77, 0x41, 0x42, 0x42, 0x41, 0x6b, 0x41, 0x41, 0x51, 0x41, 0x6d, 0x43, 0x67, 0x38, 0x41, 0x41, 0x77, 0x41, 0x42, 0x42, 0x41, 0x6b, 0x41, 0x41, 0x67, 0x41, 0x4b, 0x43, 0x6c, 0x6b, 0x41, 0x41, 0x77, 0x41, 0x42, 0x42, 0x41, 0x6b, 0x41, 0x41, 0x77, 0x41, 0x6d, 0x43, 0x67, 0x38, 0x41, 0x41, 0x77, 0x41, 0x42, 0x42, 0x41, 0x6b, 0x41, 0x42, 0x41, 0x41, 0x6d, 0x43, 0x67, 0x38, 0x41, 0x41, 0x77, 0x41, 0x42, 0x0a, 0x09, 0x42, 0x41, 0x6b, 0x41, 0x42, 0x51, 0x41, 0x59, 0x43, 0x6d, 0x4d, 0x41, 0x41, 0x77, 0x41, 0x42, 0x42, 0x41, 0x6b, 0x41, 0x42, 0x67, 0x41, 0x75, 0x43, 0x6a, 0x55, 0x41, 0x41, 0x77, 0x41, 0x42, 0x42, 0x41, 0x6b, 0x41, 0x42, 0x77, 0x42, 0x67, 0x43, 0x76, 0x55, 0x41, 0x41, 0x77, 0x41, 0x42, 0x42, 0x41, 0x6b, 0x41, 0x43, 0x41, 0x41, 0x63, 0x47, 0x6e, 0x4d, 0x41, 0x41, 0x77, 0x41, 0x42, 0x42, 0x41, 0x6b, 0x41, 0x43, 0x77, 0x41, 0x77, 0x0a, 0x09, 0x48, 0x4b, 0x45, 0x41, 0x41, 0x77, 0x41, 0x42, 0x42, 0x41, 0x6b, 0x41, 0x44, 0x52, 0x49, 0x6d, 0x43, 0x6e, 0x74, 0x44, 0x62, 0x33, 0x42, 0x35, 0x63, 0x6d, 0x6c, 0x6e, 0x61, 0x48, 0x51, 0x67, 0x4b, 0x47, 0x4d, 0x70, 0x49, 0x44, 0x49, 0x77, 0x4d, 0x44, 0x4d, 0x67, 0x59, 0x6e, 0x6b, 0x67, 0x51, 0x6d, 0x6c, 0x30, 0x63, 0x33, 0x52, 0x79, 0x5a, 0x57, 0x46, 0x74, 0x4c, 0x43, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x49, 0x45, 0x46, 0x73, 0x0a, 0x09, 0x62, 0x43, 0x42, 0x53, 0x61, 0x57, 0x64, 0x6f, 0x64, 0x48, 0x4d, 0x67, 0x55, 0x6d, 0x56, 0x7a, 0x5a, 0x58, 0x4a, 0x32, 0x5a, 0x57, 0x51, 0x75, 0x51, 0x6d, 0x6c, 0x30, 0x63, 0x33, 0x52, 0x79, 0x5a, 0x57, 0x46, 0x74, 0x49, 0x46, 0x5a, 0x6c, 0x63, 0x6d, 0x45, 0x67, 0x55, 0x32, 0x46, 0x75, 0x63, 0x30, 0x4a, 0x70, 0x64, 0x48, 0x4e, 0x30, 0x63, 0x6d, 0x56, 0x68, 0x62, 0x56, 0x5a, 0x6c, 0x63, 0x6d, 0x46, 0x54, 0x59, 0x57, 0x35, 0x7a, 0x0a, 0x09, 0x4c, 0x56, 0x4a, 0x76, 0x62, 0x57, 0x46, 0x75, 0x55, 0x6d, 0x56, 0x73, 0x5a, 0x57, 0x46, 0x7a, 0x5a, 0x53, 0x41, 0x78, 0x4c, 0x6a, 0x45, 0x77, 0x51, 0x32, 0x39, 0x77, 0x65, 0x58, 0x4a, 0x70, 0x5a, 0x32, 0x68, 0x30, 0x49, 0x43, 0x68, 0x6a, 0x4b, 0x53, 0x41, 0x79, 0x4d, 0x44, 0x41, 0x7a, 0x49, 0x47, 0x4a, 0x35, 0x49, 0x45, 0x4a, 0x70, 0x64, 0x48, 0x4e, 0x30, 0x63, 0x6d, 0x56, 0x68, 0x62, 0x53, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x0a, 0x09, 0x4c, 0x67, 0x30, 0x4b, 0x51, 0x57, 0x78, 0x73, 0x49, 0x46, 0x4a, 0x70, 0x5a, 0x32, 0x68, 0x30, 0x63, 0x79, 0x42, 0x53, 0x5a, 0x58, 0x4e, 0x6c, 0x63, 0x6e, 0x5a, 0x6c, 0x5a, 0x43, 0x34, 0x4e, 0x43, 0x6b, 0x4a, 0x70, 0x64, 0x48, 0x4e, 0x30, 0x63, 0x6d, 0x56, 0x68, 0x62, 0x53, 0x42, 0x57, 0x5a, 0x58, 0x4a, 0x68, 0x49, 0x47, 0x6c, 0x7a, 0x49, 0x47, 0x45, 0x67, 0x64, 0x48, 0x4a, 0x68, 0x5a, 0x47, 0x56, 0x74, 0x59, 0x58, 0x4a, 0x72, 0x0a, 0x09, 0x49, 0x47, 0x39, 0x6d, 0x49, 0x45, 0x4a, 0x70, 0x64, 0x48, 0x4e, 0x30, 0x63, 0x6d, 0x56, 0x68, 0x62, 0x53, 0x77, 0x67, 0x53, 0x57, 0x35, 0x6a, 0x4c, 0x67, 0x30, 0x4b, 0x44, 0x51, 0x70, 0x51, 0x5a, 0x58, 0x4a, 0x74, 0x61, 0x58, 0x4e, 0x7a, 0x61, 0x57, 0x39, 0x75, 0x49, 0x47, 0x6c, 0x7a, 0x49, 0x47, 0x68, 0x6c, 0x63, 0x6d, 0x56, 0x69, 0x65, 0x53, 0x42, 0x6e, 0x63, 0x6d, 0x46, 0x75, 0x64, 0x47, 0x56, 0x6b, 0x4c, 0x43, 0x42, 0x6d, 0x0a, 0x09, 0x63, 0x6d, 0x56, 0x6c, 0x49, 0x47, 0x39, 0x6d, 0x49, 0x47, 0x4e, 0x6f, 0x59, 0x58, 0x4a, 0x6e, 0x5a, 0x53, 0x77, 0x67, 0x64, 0x47, 0x38, 0x67, 0x59, 0x57, 0x35, 0x35, 0x49, 0x48, 0x42, 0x6c, 0x63, 0x6e, 0x4e, 0x76, 0x62, 0x69, 0x42, 0x76, 0x59, 0x6e, 0x52, 0x68, 0x61, 0x57, 0x35, 0x70, 0x62, 0x6d, 0x63, 0x67, 0x59, 0x53, 0x42, 0x6a, 0x62, 0x33, 0x42, 0x35, 0x49, 0x47, 0x39, 0x6d, 0x49, 0x48, 0x52, 0x6f, 0x5a, 0x53, 0x42, 0x6d, 0x0a, 0x09, 0x62, 0x32, 0x35, 0x30, 0x63, 0x79, 0x42, 0x68, 0x59, 0x32, 0x4e, 0x76, 0x62, 0x58, 0x42, 0x68, 0x62, 0x6e, 0x6c, 0x70, 0x62, 0x6d, 0x63, 0x67, 0x64, 0x47, 0x68, 0x70, 0x63, 0x79, 0x42, 0x73, 0x61, 0x57, 0x4e, 0x6c, 0x62, 0x6e, 0x4e, 0x6c, 0x49, 0x43, 0x67, 0x69, 0x52, 0x6d, 0x39, 0x75, 0x64, 0x48, 0x4d, 0x69, 0x4b, 0x53, 0x42, 0x68, 0x62, 0x6d, 0x51, 0x67, 0x59, 0x58, 0x4e, 0x7a, 0x62, 0x32, 0x4e, 0x70, 0x59, 0x58, 0x52, 0x6c, 0x0a, 0x09, 0x5a, 0x43, 0x42, 0x6b, 0x62, 0x32, 0x4e, 0x31, 0x62, 0x57, 0x56, 0x75, 0x64, 0x47, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x47, 0x5a, 0x70, 0x62, 0x47, 0x56, 0x7a, 0x49, 0x43, 0x68, 0x30, 0x61, 0x47, 0x55, 0x67, 0x49, 0x6b, 0x5a, 0x76, 0x62, 0x6e, 0x51, 0x67, 0x55, 0x32, 0x39, 0x6d, 0x64, 0x48, 0x64, 0x68, 0x63, 0x6d, 0x55, 0x69, 0x4b, 0x53, 0x77, 0x67, 0x64, 0x47, 0x38, 0x67, 0x63, 0x6d, 0x56, 0x77, 0x63, 0x6d, 0x39, 0x6b, 0x0a, 0x09, 0x64, 0x57, 0x4e, 0x6c, 0x49, 0x47, 0x46, 0x75, 0x5a, 0x43, 0x42, 0x6b, 0x61, 0x58, 0x4e, 0x30, 0x63, 0x6d, 0x6c, 0x69, 0x64, 0x58, 0x52, 0x6c, 0x49, 0x48, 0x52, 0x6f, 0x5a, 0x53, 0x42, 0x47, 0x62, 0x32, 0x35, 0x30, 0x49, 0x46, 0x4e, 0x76, 0x5a, 0x6e, 0x52, 0x33, 0x59, 0x58, 0x4a, 0x6c, 0x4c, 0x43, 0x42, 0x70, 0x62, 0x6d, 0x4e, 0x73, 0x64, 0x57, 0x52, 0x70, 0x62, 0x6d, 0x63, 0x67, 0x64, 0x32, 0x6c, 0x30, 0x61, 0x47, 0x39, 0x31, 0x0a, 0x09, 0x64, 0x43, 0x42, 0x73, 0x61, 0x57, 0x31, 0x70, 0x64, 0x47, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x48, 0x52, 0x6f, 0x5a, 0x53, 0x42, 0x79, 0x61, 0x57, 0x64, 0x6f, 0x64, 0x48, 0x4d, 0x67, 0x64, 0x47, 0x38, 0x67, 0x64, 0x58, 0x4e, 0x6c, 0x4c, 0x43, 0x42, 0x6a, 0x62, 0x33, 0x42, 0x35, 0x4c, 0x43, 0x42, 0x74, 0x5a, 0x58, 0x4a, 0x6e, 0x5a, 0x53, 0x77, 0x67, 0x63, 0x48, 0x56, 0x69, 0x62, 0x47, 0x6c, 0x7a, 0x61, 0x43, 0x77, 0x67, 0x0a, 0x09, 0x5a, 0x47, 0x6c, 0x7a, 0x64, 0x48, 0x4a, 0x70, 0x59, 0x6e, 0x56, 0x30, 0x5a, 0x53, 0x77, 0x67, 0x59, 0x57, 0x35, 0x6b, 0x4c, 0x32, 0x39, 0x79, 0x49, 0x48, 0x4e, 0x6c, 0x62, 0x47, 0x77, 0x67, 0x59, 0x32, 0x39, 0x77, 0x61, 0x57, 0x56, 0x7a, 0x49, 0x47, 0x39, 0x6d, 0x49, 0x48, 0x52, 0x6f, 0x5a, 0x53, 0x42, 0x47, 0x62, 0x32, 0x35, 0x30, 0x49, 0x46, 0x4e, 0x76, 0x5a, 0x6e, 0x52, 0x33, 0x59, 0x58, 0x4a, 0x6c, 0x4c, 0x43, 0x42, 0x68, 0x0a, 0x09, 0x62, 0x6d, 0x51, 0x67, 0x64, 0x47, 0x38, 0x67, 0x63, 0x47, 0x56, 0x79, 0x62, 0x57, 0x6c, 0x30, 0x49, 0x48, 0x42, 0x6c, 0x63, 0x6e, 0x4e, 0x76, 0x62, 0x6e, 0x4d, 0x67, 0x64, 0x47, 0x38, 0x67, 0x64, 0x32, 0x68, 0x76, 0x62, 0x53, 0x42, 0x30, 0x61, 0x47, 0x55, 0x67, 0x52, 0x6d, 0x39, 0x75, 0x64, 0x43, 0x42, 0x54, 0x62, 0x32, 0x5a, 0x30, 0x64, 0x32, 0x46, 0x79, 0x5a, 0x53, 0x42, 0x70, 0x63, 0x79, 0x42, 0x6d, 0x64, 0x58, 0x4a, 0x75, 0x0a, 0x09, 0x61, 0x58, 0x4e, 0x6f, 0x5a, 0x57, 0x51, 0x67, 0x64, 0x47, 0x38, 0x67, 0x5a, 0x47, 0x38, 0x67, 0x63, 0x32, 0x38, 0x73, 0x49, 0x48, 0x4e, 0x31, 0x59, 0x6d, 0x70, 0x6c, 0x59, 0x33, 0x51, 0x67, 0x64, 0x47, 0x38, 0x67, 0x64, 0x47, 0x68, 0x6c, 0x49, 0x47, 0x5a, 0x76, 0x62, 0x47, 0x78, 0x76, 0x64, 0x32, 0x6c, 0x75, 0x5a, 0x79, 0x42, 0x6a, 0x62, 0x32, 0x35, 0x6b, 0x61, 0x58, 0x52, 0x70, 0x62, 0x32, 0x35, 0x7a, 0x4f, 0x67, 0x30, 0x4b, 0x0a, 0x09, 0x44, 0x51, 0x70, 0x55, 0x61, 0x47, 0x55, 0x67, 0x59, 0x57, 0x4a, 0x76, 0x64, 0x6d, 0x55, 0x67, 0x59, 0x32, 0x39, 0x77, 0x65, 0x58, 0x4a, 0x70, 0x5a, 0x32, 0x68, 0x30, 0x49, 0x47, 0x46, 0x75, 0x5a, 0x43, 0x42, 0x30, 0x63, 0x6d, 0x46, 0x6b, 0x5a, 0x57, 0x31, 0x68, 0x63, 0x6d, 0x73, 0x67, 0x62, 0x6d, 0x39, 0x30, 0x61, 0x57, 0x4e, 0x6c, 0x63, 0x79, 0x42, 0x68, 0x62, 0x6d, 0x51, 0x67, 0x64, 0x47, 0x68, 0x70, 0x63, 0x79, 0x42, 0x77, 0x0a, 0x09, 0x5a, 0x58, 0x4a, 0x74, 0x61, 0x58, 0x4e, 0x7a, 0x61, 0x57, 0x39, 0x75, 0x49, 0x47, 0x35, 0x76, 0x64, 0x47, 0x6c, 0x6a, 0x5a, 0x53, 0x42, 0x7a, 0x61, 0x47, 0x46, 0x73, 0x62, 0x43, 0x42, 0x69, 0x5a, 0x53, 0x42, 0x70, 0x62, 0x6d, 0x4e, 0x73, 0x64, 0x57, 0x52, 0x6c, 0x5a, 0x43, 0x42, 0x70, 0x62, 0x69, 0x42, 0x68, 0x62, 0x47, 0x77, 0x67, 0x59, 0x32, 0x39, 0x77, 0x61, 0x57, 0x56, 0x7a, 0x49, 0x47, 0x39, 0x6d, 0x49, 0x47, 0x39, 0x75, 0x0a, 0x09, 0x5a, 0x53, 0x42, 0x76, 0x63, 0x69, 0x42, 0x74, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x47, 0x39, 0x6d, 0x49, 0x48, 0x52, 0x6f, 0x5a, 0x53, 0x42, 0x47, 0x62, 0x32, 0x35, 0x30, 0x49, 0x46, 0x4e, 0x76, 0x5a, 0x6e, 0x52, 0x33, 0x59, 0x58, 0x4a, 0x6c, 0x49, 0x48, 0x52, 0x35, 0x63, 0x47, 0x56, 0x6d, 0x59, 0x57, 0x4e, 0x6c, 0x63, 0x79, 0x34, 0x4e, 0x43, 0x67, 0x30, 0x4b, 0x56, 0x47, 0x68, 0x6c, 0x49, 0x45, 0x5a, 0x76, 0x62, 0x6e, 0x51, 0x67, 0x0a, 0x09, 0x55, 0x32, 0x39, 0x6d, 0x64, 0x48, 0x64, 0x68, 0x63, 0x6d, 0x55, 0x67, 0x62, 0x57, 0x46, 0x35, 0x49, 0x47, 0x4a, 0x6c, 0x49, 0x47, 0x31, 0x76, 0x5a, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x56, 0x6b, 0x4c, 0x43, 0x42, 0x68, 0x62, 0x48, 0x52, 0x6c, 0x63, 0x6d, 0x56, 0x6b, 0x4c, 0x43, 0x42, 0x76, 0x63, 0x69, 0x42, 0x68, 0x5a, 0x47, 0x52, 0x6c, 0x5a, 0x43, 0x42, 0x30, 0x62, 0x79, 0x77, 0x67, 0x59, 0x57, 0x35, 0x6b, 0x49, 0x47, 0x6c, 0x75, 0x0a, 0x09, 0x49, 0x48, 0x42, 0x68, 0x63, 0x6e, 0x52, 0x70, 0x59, 0x33, 0x56, 0x73, 0x59, 0x58, 0x49, 0x67, 0x64, 0x47, 0x68, 0x6c, 0x49, 0x47, 0x52, 0x6c, 0x63, 0x32, 0x6c, 0x6e, 0x62, 0x6e, 0x4d, 0x67, 0x62, 0x32, 0x59, 0x67, 0x5a, 0x32, 0x78, 0x35, 0x63, 0x47, 0x68, 0x7a, 0x49, 0x47, 0x39, 0x79, 0x49, 0x47, 0x4e, 0x6f, 0x59, 0x58, 0x4a, 0x68, 0x59, 0x33, 0x52, 0x6c, 0x63, 0x6e, 0x4d, 0x67, 0x61, 0x57, 0x34, 0x67, 0x64, 0x47, 0x68, 0x6c, 0x0a, 0x09, 0x49, 0x45, 0x5a, 0x76, 0x62, 0x6e, 0x52, 0x7a, 0x49, 0x47, 0x31, 0x68, 0x65, 0x53, 0x42, 0x69, 0x5a, 0x53, 0x42, 0x74, 0x62, 0x32, 0x52, 0x70, 0x5a, 0x6d, 0x6c, 0x6c, 0x5a, 0x43, 0x42, 0x68, 0x62, 0x6d, 0x51, 0x67, 0x59, 0x57, 0x52, 0x6b, 0x61, 0x58, 0x52, 0x70, 0x62, 0x32, 0x35, 0x68, 0x62, 0x43, 0x42, 0x6e, 0x62, 0x48, 0x6c, 0x77, 0x61, 0x48, 0x4d, 0x67, 0x62, 0x33, 0x49, 0x67, 0x59, 0x32, 0x68, 0x68, 0x63, 0x6d, 0x46, 0x6a, 0x0a, 0x09, 0x64, 0x47, 0x56, 0x79, 0x63, 0x79, 0x42, 0x74, 0x59, 0x58, 0x6b, 0x67, 0x59, 0x6d, 0x55, 0x67, 0x59, 0x57, 0x52, 0x6b, 0x5a, 0x57, 0x51, 0x67, 0x64, 0x47, 0x38, 0x67, 0x64, 0x47, 0x68, 0x6c, 0x49, 0x45, 0x5a, 0x76, 0x62, 0x6e, 0x52, 0x7a, 0x4c, 0x43, 0x42, 0x76, 0x62, 0x6d, 0x78, 0x35, 0x49, 0x47, 0x6c, 0x6d, 0x49, 0x48, 0x52, 0x6f, 0x5a, 0x53, 0x42, 0x6d, 0x62, 0x32, 0x35, 0x30, 0x63, 0x79, 0x42, 0x68, 0x63, 0x6d, 0x55, 0x67, 0x0a, 0x09, 0x63, 0x6d, 0x56, 0x75, 0x59, 0x57, 0x31, 0x6c, 0x5a, 0x43, 0x42, 0x30, 0x62, 0x79, 0x42, 0x75, 0x59, 0x57, 0x31, 0x6c, 0x63, 0x79, 0x42, 0x75, 0x62, 0x33, 0x51, 0x67, 0x59, 0x32, 0x39, 0x75, 0x64, 0x47, 0x46, 0x70, 0x62, 0x6d, 0x6c, 0x75, 0x5a, 0x79, 0x42, 0x6c, 0x61, 0x58, 0x52, 0x6f, 0x5a, 0x58, 0x49, 0x67, 0x64, 0x47, 0x68, 0x6c, 0x49, 0x48, 0x64, 0x76, 0x63, 0x6d, 0x52, 0x7a, 0x49, 0x43, 0x4a, 0x43, 0x61, 0x58, 0x52, 0x7a, 0x0a, 0x09, 0x64, 0x48, 0x4a, 0x6c, 0x59, 0x57, 0x30, 0x69, 0x49, 0x47, 0x39, 0x79, 0x49, 0x48, 0x52, 0x6f, 0x5a, 0x53, 0x42, 0x33, 0x62, 0x33, 0x4a, 0x6b, 0x49, 0x43, 0x4a, 0x57, 0x5a, 0x58, 0x4a, 0x68, 0x49, 0x69, 0x34, 0x4e, 0x43, 0x67, 0x30, 0x4b, 0x56, 0x47, 0x68, 0x70, 0x63, 0x79, 0x42, 0x4d, 0x61, 0x57, 0x4e, 0x6c, 0x62, 0x6e, 0x4e, 0x6c, 0x49, 0x47, 0x4a, 0x6c, 0x59, 0x32, 0x39, 0x74, 0x5a, 0x58, 0x4d, 0x67, 0x62, 0x6e, 0x56, 0x73, 0x0a, 0x09, 0x62, 0x43, 0x42, 0x68, 0x62, 0x6d, 0x51, 0x67, 0x64, 0x6d, 0x39, 0x70, 0x5a, 0x43, 0x42, 0x30, 0x62, 0x79, 0x42, 0x30, 0x61, 0x47, 0x55, 0x67, 0x5a, 0x58, 0x68, 0x30, 0x5a, 0x57, 0x35, 0x30, 0x49, 0x47, 0x46, 0x77, 0x63, 0x47, 0x78, 0x70, 0x59, 0x32, 0x46, 0x69, 0x62, 0x47, 0x55, 0x67, 0x64, 0x47, 0x38, 0x67, 0x52, 0x6d, 0x39, 0x75, 0x64, 0x48, 0x4d, 0x67, 0x62, 0x33, 0x49, 0x67, 0x52, 0x6d, 0x39, 0x75, 0x64, 0x43, 0x42, 0x54, 0x0a, 0x09, 0x62, 0x32, 0x5a, 0x30, 0x64, 0x32, 0x46, 0x79, 0x5a, 0x53, 0x42, 0x30, 0x61, 0x47, 0x46, 0x30, 0x49, 0x47, 0x68, 0x68, 0x63, 0x79, 0x42, 0x69, 0x5a, 0x57, 0x56, 0x75, 0x49, 0x47, 0x31, 0x76, 0x5a, 0x47, 0x6c, 0x6d, 0x61, 0x57, 0x56, 0x6b, 0x49, 0x47, 0x46, 0x75, 0x5a, 0x43, 0x42, 0x70, 0x63, 0x79, 0x42, 0x6b, 0x61, 0x58, 0x4e, 0x30, 0x63, 0x6d, 0x6c, 0x69, 0x64, 0x58, 0x52, 0x6c, 0x5a, 0x43, 0x42, 0x31, 0x62, 0x6d, 0x52, 0x6c, 0x0a, 0x09, 0x63, 0x69, 0x42, 0x30, 0x61, 0x47, 0x55, 0x67, 0x49, 0x6b, 0x4a, 0x70, 0x64, 0x48, 0x4e, 0x30, 0x63, 0x6d, 0x56, 0x68, 0x62, 0x53, 0x42, 0x57, 0x5a, 0x58, 0x4a, 0x68, 0x49, 0x69, 0x42, 0x75, 0x59, 0x57, 0x31, 0x6c, 0x63, 0x79, 0x34, 0x4e, 0x43, 0x67, 0x30, 0x4b, 0x56, 0x47, 0x68, 0x6c, 0x49, 0x45, 0x5a, 0x76, 0x62, 0x6e, 0x51, 0x67, 0x55, 0x32, 0x39, 0x6d, 0x64, 0x48, 0x64, 0x68, 0x63, 0x6d, 0x55, 0x67, 0x62, 0x57, 0x46, 0x35, 0x0a, 0x09, 0x49, 0x47, 0x4a, 0x6c, 0x49, 0x48, 0x4e, 0x76, 0x62, 0x47, 0x51, 0x67, 0x59, 0x58, 0x4d, 0x67, 0x63, 0x47, 0x46, 0x79, 0x64, 0x43, 0x42, 0x76, 0x5a, 0x69, 0x42, 0x68, 0x49, 0x47, 0x78, 0x68, 0x63, 0x6d, 0x64, 0x6c, 0x63, 0x69, 0x42, 0x7a, 0x62, 0x32, 0x5a, 0x30, 0x64, 0x32, 0x46, 0x79, 0x5a, 0x53, 0x42, 0x77, 0x59, 0x57, 0x4e, 0x72, 0x59, 0x57, 0x64, 0x6c, 0x49, 0x47, 0x4a, 0x31, 0x64, 0x43, 0x42, 0x75, 0x62, 0x79, 0x42, 0x6a, 0x0a, 0x09, 0x62, 0x33, 0x42, 0x35, 0x49, 0x47, 0x39, 0x6d, 0x49, 0x47, 0x39, 0x75, 0x5a, 0x53, 0x42, 0x76, 0x63, 0x69, 0x42, 0x74, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x47, 0x39, 0x6d, 0x49, 0x48, 0x52, 0x6f, 0x5a, 0x53, 0x42, 0x47, 0x62, 0x32, 0x35, 0x30, 0x49, 0x46, 0x4e, 0x76, 0x5a, 0x6e, 0x52, 0x33, 0x59, 0x58, 0x4a, 0x6c, 0x49, 0x48, 0x52, 0x35, 0x63, 0x47, 0x56, 0x6d, 0x59, 0x57, 0x4e, 0x6c, 0x63, 0x79, 0x42, 0x74, 0x59, 0x58, 0x6b, 0x67, 0x0a, 0x09, 0x59, 0x6d, 0x55, 0x67, 0x63, 0x32, 0x39, 0x73, 0x5a, 0x43, 0x42, 0x69, 0x65, 0x53, 0x42, 0x70, 0x64, 0x48, 0x4e, 0x6c, 0x62, 0x47, 0x59, 0x75, 0x44, 0x51, 0x6f, 0x4e, 0x43, 0x6c, 0x52, 0x49, 0x52, 0x53, 0x42, 0x47, 0x54, 0x30, 0x35, 0x55, 0x49, 0x46, 0x4e, 0x50, 0x52, 0x6c, 0x52, 0x58, 0x51, 0x56, 0x4a, 0x46, 0x49, 0x45, 0x6c, 0x54, 0x49, 0x46, 0x42, 0x53, 0x54, 0x31, 0x5a, 0x4a, 0x52, 0x45, 0x56, 0x45, 0x49, 0x43, 0x4a, 0x42, 0x0a, 0x09, 0x55, 0x79, 0x42, 0x4a, 0x55, 0x79, 0x49, 0x73, 0x49, 0x46, 0x64, 0x4a, 0x56, 0x45, 0x68, 0x50, 0x56, 0x56, 0x51, 0x67, 0x56, 0x30, 0x46, 0x53, 0x55, 0x6b, 0x46, 0x4f, 0x56, 0x46, 0x6b, 0x67, 0x54, 0x30, 0x59, 0x67, 0x51, 0x55, 0x35, 0x5a, 0x49, 0x45, 0x74, 0x4a, 0x54, 0x6b, 0x51, 0x73, 0x49, 0x45, 0x56, 0x59, 0x55, 0x46, 0x4a, 0x46, 0x55, 0x31, 0x4d, 0x67, 0x54, 0x31, 0x49, 0x67, 0x53, 0x55, 0x31, 0x51, 0x54, 0x45, 0x6c, 0x46, 0x0a, 0x09, 0x52, 0x43, 0x77, 0x67, 0x53, 0x55, 0x35, 0x44, 0x54, 0x46, 0x56, 0x45, 0x53, 0x55, 0x35, 0x48, 0x49, 0x45, 0x4a, 0x56, 0x56, 0x43, 0x42, 0x4f, 0x54, 0x31, 0x51, 0x67, 0x54, 0x45, 0x6c, 0x4e, 0x53, 0x56, 0x52, 0x46, 0x52, 0x43, 0x42, 0x55, 0x54, 0x79, 0x42, 0x42, 0x54, 0x6c, 0x6b, 0x67, 0x56, 0x30, 0x46, 0x53, 0x55, 0x6b, 0x46, 0x4f, 0x56, 0x45, 0x6c, 0x46, 0x55, 0x79, 0x42, 0x50, 0x52, 0x69, 0x42, 0x4e, 0x52, 0x56, 0x4a, 0x44, 0x0a, 0x09, 0x53, 0x45, 0x46, 0x4f, 0x56, 0x45, 0x46, 0x43, 0x53, 0x55, 0x78, 0x4a, 0x56, 0x46, 0x6b, 0x73, 0x49, 0x45, 0x5a, 0x4a, 0x56, 0x45, 0x35, 0x46, 0x55, 0x31, 0x4d, 0x67, 0x52, 0x6b, 0x39, 0x53, 0x49, 0x45, 0x45, 0x67, 0x55, 0x45, 0x46, 0x53, 0x56, 0x45, 0x6c, 0x44, 0x56, 0x55, 0x78, 0x42, 0x55, 0x69, 0x42, 0x51, 0x56, 0x56, 0x4a, 0x51, 0x54, 0x31, 0x4e, 0x46, 0x49, 0x45, 0x46, 0x4f, 0x52, 0x43, 0x42, 0x4f, 0x54, 0x30, 0x35, 0x4a, 0x0a, 0x09, 0x54, 0x6b, 0x5a, 0x53, 0x53, 0x55, 0x35, 0x48, 0x52, 0x55, 0x31, 0x46, 0x54, 0x6c, 0x51, 0x67, 0x54, 0x30, 0x59, 0x67, 0x51, 0x30, 0x39, 0x51, 0x57, 0x56, 0x4a, 0x4a, 0x52, 0x30, 0x68, 0x55, 0x4c, 0x43, 0x42, 0x51, 0x51, 0x56, 0x52, 0x46, 0x54, 0x6c, 0x51, 0x73, 0x49, 0x46, 0x52, 0x53, 0x51, 0x55, 0x52, 0x46, 0x54, 0x55, 0x46, 0x53, 0x53, 0x79, 0x77, 0x67, 0x54, 0x31, 0x49, 0x67, 0x54, 0x31, 0x52, 0x49, 0x52, 0x56, 0x49, 0x67, 0x0a, 0x09, 0x55, 0x6b, 0x6c, 0x48, 0x53, 0x46, 0x51, 0x75, 0x49, 0x45, 0x6c, 0x4f, 0x49, 0x45, 0x35, 0x50, 0x49, 0x45, 0x56, 0x57, 0x52, 0x55, 0x35, 0x55, 0x49, 0x46, 0x4e, 0x49, 0x51, 0x55, 0x78, 0x4d, 0x49, 0x45, 0x4a, 0x4a, 0x56, 0x46, 0x4e, 0x55, 0x55, 0x6b, 0x56, 0x42, 0x54, 0x53, 0x42, 0x50, 0x55, 0x69, 0x42, 0x55, 0x53, 0x45, 0x55, 0x67, 0x52, 0x30, 0x35, 0x50, 0x54, 0x55, 0x55, 0x67, 0x52, 0x6b, 0x39, 0x56, 0x54, 0x6b, 0x52, 0x42, 0x0a, 0x09, 0x56, 0x45, 0x6c, 0x50, 0x54, 0x69, 0x42, 0x43, 0x52, 0x53, 0x42, 0x4d, 0x53, 0x55, 0x46, 0x43, 0x54, 0x45, 0x55, 0x67, 0x52, 0x6b, 0x39, 0x53, 0x49, 0x45, 0x46, 0x4f, 0x57, 0x53, 0x42, 0x44, 0x54, 0x45, 0x46, 0x4a, 0x54, 0x53, 0x77, 0x67, 0x52, 0x45, 0x46, 0x4e, 0x51, 0x55, 0x64, 0x46, 0x55, 0x79, 0x42, 0x50, 0x55, 0x69, 0x42, 0x50, 0x56, 0x45, 0x68, 0x46, 0x55, 0x69, 0x42, 0x4d, 0x53, 0x55, 0x46, 0x43, 0x53, 0x55, 0x78, 0x4a, 0x0a, 0x09, 0x56, 0x46, 0x6b, 0x73, 0x49, 0x45, 0x6c, 0x4f, 0x51, 0x30, 0x78, 0x56, 0x52, 0x45, 0x6c, 0x4f, 0x52, 0x79, 0x42, 0x42, 0x54, 0x6c, 0x6b, 0x67, 0x52, 0x30, 0x56, 0x4f, 0x52, 0x56, 0x4a, 0x42, 0x54, 0x43, 0x77, 0x67, 0x55, 0x31, 0x42, 0x46, 0x51, 0x30, 0x6c, 0x42, 0x54, 0x43, 0x77, 0x67, 0x53, 0x55, 0x35, 0x45, 0x53, 0x56, 0x4a, 0x46, 0x51, 0x31, 0x51, 0x73, 0x49, 0x45, 0x6c, 0x4f, 0x51, 0x30, 0x6c, 0x45, 0x52, 0x55, 0x35, 0x55, 0x0a, 0x09, 0x51, 0x55, 0x77, 0x73, 0x49, 0x45, 0x39, 0x53, 0x49, 0x45, 0x4e, 0x50, 0x54, 0x6c, 0x4e, 0x46, 0x55, 0x56, 0x56, 0x46, 0x54, 0x6c, 0x52, 0x4a, 0x51, 0x55, 0x77, 0x67, 0x52, 0x45, 0x46, 0x4e, 0x51, 0x55, 0x64, 0x46, 0x55, 0x79, 0x77, 0x67, 0x56, 0x30, 0x68, 0x46, 0x56, 0x45, 0x68, 0x46, 0x55, 0x69, 0x42, 0x4a, 0x54, 0x69, 0x42, 0x42, 0x54, 0x69, 0x42, 0x42, 0x51, 0x31, 0x52, 0x4a, 0x54, 0x30, 0x34, 0x67, 0x54, 0x30, 0x59, 0x67, 0x0a, 0x09, 0x51, 0x30, 0x39, 0x4f, 0x56, 0x46, 0x4a, 0x42, 0x51, 0x31, 0x51, 0x73, 0x49, 0x46, 0x52, 0x50, 0x55, 0x6c, 0x51, 0x67, 0x54, 0x31, 0x49, 0x67, 0x54, 0x31, 0x52, 0x49, 0x52, 0x56, 0x4a, 0x58, 0x53, 0x56, 0x4e, 0x46, 0x4c, 0x43, 0x42, 0x42, 0x55, 0x6b, 0x6c, 0x54, 0x53, 0x55, 0x35, 0x48, 0x49, 0x45, 0x5a, 0x53, 0x54, 0x30, 0x30, 0x73, 0x49, 0x45, 0x39, 0x56, 0x56, 0x43, 0x42, 0x50, 0x52, 0x69, 0x42, 0x55, 0x53, 0x45, 0x55, 0x67, 0x0a, 0x09, 0x56, 0x56, 0x4e, 0x46, 0x49, 0x45, 0x39, 0x53, 0x49, 0x45, 0x6c, 0x4f, 0x51, 0x55, 0x4a, 0x4a, 0x54, 0x45, 0x6c, 0x55, 0x57, 0x53, 0x42, 0x55, 0x54, 0x79, 0x42, 0x56, 0x55, 0x30, 0x55, 0x67, 0x56, 0x45, 0x68, 0x46, 0x49, 0x45, 0x5a, 0x50, 0x54, 0x6c, 0x51, 0x67, 0x55, 0x30, 0x39, 0x47, 0x56, 0x46, 0x64, 0x42, 0x55, 0x6b, 0x55, 0x67, 0x54, 0x31, 0x49, 0x67, 0x52, 0x6c, 0x4a, 0x50, 0x54, 0x53, 0x42, 0x50, 0x56, 0x45, 0x68, 0x46, 0x0a, 0x09, 0x55, 0x69, 0x42, 0x45, 0x52, 0x55, 0x46, 0x4d, 0x53, 0x55, 0x35, 0x48, 0x55, 0x79, 0x42, 0x4a, 0x54, 0x69, 0x42, 0x55, 0x53, 0x45, 0x55, 0x67, 0x52, 0x6b, 0x39, 0x4f, 0x56, 0x43, 0x42, 0x54, 0x54, 0x30, 0x5a, 0x55, 0x56, 0x30, 0x46, 0x53, 0x52, 0x53, 0x34, 0x4e, 0x43, 0x67, 0x30, 0x4b, 0x52, 0x58, 0x68, 0x6a, 0x5a, 0x58, 0x42, 0x30, 0x49, 0x47, 0x46, 0x7a, 0x49, 0x47, 0x4e, 0x76, 0x62, 0x6e, 0x52, 0x68, 0x61, 0x57, 0x35, 0x6c, 0x0a, 0x09, 0x5a, 0x43, 0x42, 0x70, 0x62, 0x69, 0x42, 0x30, 0x61, 0x47, 0x6c, 0x7a, 0x49, 0x47, 0x35, 0x76, 0x64, 0x47, 0x6c, 0x6a, 0x5a, 0x53, 0x77, 0x67, 0x64, 0x47, 0x68, 0x6c, 0x49, 0x47, 0x35, 0x68, 0x62, 0x57, 0x56, 0x7a, 0x49, 0x47, 0x39, 0x6d, 0x49, 0x45, 0x64, 0x75, 0x62, 0x32, 0x31, 0x6c, 0x4c, 0x43, 0x42, 0x30, 0x61, 0x47, 0x55, 0x67, 0x52, 0x32, 0x35, 0x76, 0x62, 0x57, 0x55, 0x67, 0x52, 0x6d, 0x39, 0x31, 0x62, 0x6d, 0x52, 0x68, 0x0a, 0x09, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x77, 0x67, 0x59, 0x57, 0x35, 0x6b, 0x49, 0x45, 0x4a, 0x70, 0x64, 0x48, 0x4e, 0x30, 0x63, 0x6d, 0x56, 0x68, 0x62, 0x53, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x4c, 0x43, 0x42, 0x7a, 0x61, 0x47, 0x46, 0x73, 0x62, 0x43, 0x42, 0x75, 0x62, 0x33, 0x51, 0x67, 0x59, 0x6d, 0x55, 0x67, 0x64, 0x58, 0x4e, 0x6c, 0x5a, 0x43, 0x42, 0x70, 0x62, 0x69, 0x42, 0x68, 0x5a, 0x48, 0x5a, 0x6c, 0x63, 0x6e, 0x52, 0x70, 0x0a, 0x09, 0x63, 0x32, 0x6c, 0x75, 0x5a, 0x79, 0x42, 0x76, 0x63, 0x69, 0x42, 0x76, 0x64, 0x47, 0x68, 0x6c, 0x63, 0x6e, 0x64, 0x70, 0x63, 0x32, 0x55, 0x67, 0x64, 0x47, 0x38, 0x67, 0x63, 0x48, 0x4a, 0x76, 0x62, 0x57, 0x39, 0x30, 0x5a, 0x53, 0x42, 0x30, 0x61, 0x47, 0x55, 0x67, 0x63, 0x32, 0x46, 0x73, 0x5a, 0x53, 0x77, 0x67, 0x64, 0x58, 0x4e, 0x6c, 0x49, 0x47, 0x39, 0x79, 0x49, 0x47, 0x39, 0x30, 0x61, 0x47, 0x56, 0x79, 0x49, 0x47, 0x52, 0x6c, 0x0a, 0x09, 0x59, 0x57, 0x78, 0x70, 0x62, 0x6d, 0x64, 0x7a, 0x49, 0x47, 0x6c, 0x75, 0x49, 0x48, 0x52, 0x6f, 0x61, 0x58, 0x4d, 0x67, 0x52, 0x6d, 0x39, 0x75, 0x64, 0x43, 0x42, 0x54, 0x62, 0x32, 0x5a, 0x30, 0x64, 0x32, 0x46, 0x79, 0x5a, 0x53, 0x42, 0x33, 0x61, 0x58, 0x52, 0x6f, 0x62, 0x33, 0x56, 0x30, 0x49, 0x48, 0x42, 0x79, 0x61, 0x57, 0x39, 0x79, 0x49, 0x48, 0x64, 0x79, 0x61, 0x58, 0x52, 0x30, 0x5a, 0x57, 0x34, 0x67, 0x59, 0x58, 0x56, 0x30, 0x0a, 0x09, 0x61, 0x47, 0x39, 0x79, 0x61, 0x58, 0x70, 0x68, 0x64, 0x47, 0x6c, 0x76, 0x62, 0x69, 0x42, 0x6d, 0x63, 0x6d, 0x39, 0x74, 0x49, 0x48, 0x52, 0x6f, 0x5a, 0x53, 0x42, 0x48, 0x62, 0x6d, 0x39, 0x74, 0x5a, 0x53, 0x42, 0x47, 0x62, 0x33, 0x56, 0x75, 0x5a, 0x47, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x49, 0x47, 0x39, 0x79, 0x49, 0x45, 0x4a, 0x70, 0x64, 0x48, 0x4e, 0x30, 0x63, 0x6d, 0x56, 0x68, 0x62, 0x53, 0x42, 0x4a, 0x62, 0x6d, 0x4d, 0x75, 0x0a, 0x09, 0x4c, 0x43, 0x42, 0x79, 0x5a, 0x58, 0x4e, 0x77, 0x5a, 0x57, 0x4e, 0x30, 0x61, 0x58, 0x5a, 0x6c, 0x62, 0x48, 0x6b, 0x75, 0x49, 0x45, 0x5a, 0x76, 0x63, 0x69, 0x42, 0x6d, 0x64, 0x58, 0x4a, 0x30, 0x61, 0x47, 0x56, 0x79, 0x49, 0x47, 0x6c, 0x75, 0x5a, 0x6d, 0x39, 0x79, 0x62, 0x57, 0x46, 0x30, 0x61, 0x57, 0x39, 0x75, 0x4c, 0x43, 0x42, 0x6a, 0x62, 0x32, 0x35, 0x30, 0x59, 0x57, 0x4e, 0x30, 0x4f, 0x69, 0x42, 0x6d, 0x62, 0x32, 0x35, 0x30, 0x0a, 0x09, 0x63, 0x79, 0x42, 0x68, 0x64, 0x43, 0x42, 0x6e, 0x62, 0x6d, 0x39, 0x74, 0x5a, 0x53, 0x42, 0x6b, 0x62, 0x33, 0x51, 0x67, 0x62, 0x33, 0x4a, 0x6e, 0x4c, 0x6d, 0x68, 0x30, 0x64, 0x48, 0x41, 0x36, 0x4c, 0x79, 0x39, 0x33, 0x64, 0x33, 0x63, 0x75, 0x59, 0x6d, 0x6c, 0x30, 0x63, 0x33, 0x52, 0x79, 0x5a, 0x57, 0x46, 0x74, 0x4c, 0x6d, 0x4e, 0x76, 0x62, 0x51, 0x42, 0x44, 0x41, 0x47, 0x38, 0x41, 0x63, 0x41, 0x42, 0x35, 0x41, 0x48, 0x49, 0x41, 0x0a, 0x09, 0x61, 0x51, 0x42, 0x6e, 0x41, 0x47, 0x67, 0x41, 0x64, 0x41, 0x41, 0x67, 0x41, 0x43, 0x67, 0x41, 0x59, 0x77, 0x41, 0x70, 0x41, 0x43, 0x41, 0x41, 0x4d, 0x67, 0x41, 0x77, 0x41, 0x44, 0x41, 0x41, 0x4d, 0x77, 0x41, 0x67, 0x41, 0x47, 0x49, 0x41, 0x65, 0x51, 0x41, 0x67, 0x41, 0x45, 0x49, 0x41, 0x61, 0x51, 0x42, 0x30, 0x41, 0x48, 0x4d, 0x41, 0x64, 0x41, 0x42, 0x79, 0x41, 0x47, 0x55, 0x41, 0x59, 0x51, 0x42, 0x74, 0x41, 0x43, 0x77, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x4a, 0x41, 0x47, 0x34, 0x41, 0x59, 0x77, 0x41, 0x75, 0x41, 0x43, 0x41, 0x41, 0x51, 0x51, 0x42, 0x73, 0x41, 0x47, 0x77, 0x41, 0x49, 0x41, 0x42, 0x53, 0x41, 0x47, 0x6b, 0x41, 0x5a, 0x77, 0x42, 0x6f, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x41, 0x67, 0x41, 0x46, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x7a, 0x41, 0x47, 0x55, 0x41, 0x63, 0x67, 0x42, 0x32, 0x41, 0x47, 0x55, 0x41, 0x5a, 0x41, 0x41, 0x75, 0x41, 0x45, 0x49, 0x41, 0x0a, 0x09, 0x61, 0x51, 0x42, 0x30, 0x41, 0x48, 0x4d, 0x41, 0x64, 0x41, 0x42, 0x79, 0x41, 0x47, 0x55, 0x41, 0x59, 0x51, 0x42, 0x74, 0x41, 0x43, 0x41, 0x41, 0x56, 0x67, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x59, 0x51, 0x41, 0x67, 0x41, 0x46, 0x4d, 0x41, 0x59, 0x51, 0x42, 0x75, 0x41, 0x48, 0x4d, 0x41, 0x51, 0x67, 0x42, 0x70, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x42, 0x30, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x68, 0x41, 0x47, 0x30, 0x41, 0x0a, 0x09, 0x56, 0x67, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x59, 0x51, 0x42, 0x54, 0x41, 0x47, 0x45, 0x41, 0x62, 0x67, 0x42, 0x7a, 0x41, 0x43, 0x30, 0x41, 0x55, 0x67, 0x42, 0x76, 0x41, 0x47, 0x30, 0x41, 0x59, 0x51, 0x42, 0x75, 0x41, 0x46, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x73, 0x41, 0x47, 0x55, 0x41, 0x59, 0x51, 0x42, 0x7a, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x41, 0x78, 0x41, 0x43, 0x34, 0x41, 0x4d, 0x51, 0x41, 0x77, 0x41, 0x45, 0x4d, 0x41, 0x0a, 0x09, 0x62, 0x77, 0x42, 0x77, 0x41, 0x48, 0x6b, 0x41, 0x63, 0x67, 0x42, 0x70, 0x41, 0x47, 0x63, 0x41, 0x61, 0x41, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x4b, 0x41, 0x42, 0x6a, 0x41, 0x43, 0x6b, 0x41, 0x49, 0x41, 0x41, 0x79, 0x41, 0x44, 0x41, 0x41, 0x4d, 0x41, 0x41, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x59, 0x67, 0x42, 0x35, 0x41, 0x43, 0x41, 0x41, 0x51, 0x67, 0x42, 0x70, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x42, 0x30, 0x41, 0x48, 0x49, 0x41, 0x0a, 0x09, 0x5a, 0x51, 0x42, 0x68, 0x41, 0x47, 0x30, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x45, 0x6b, 0x41, 0x62, 0x67, 0x42, 0x6a, 0x41, 0x43, 0x34, 0x41, 0x44, 0x51, 0x41, 0x4b, 0x41, 0x45, 0x45, 0x41, 0x62, 0x41, 0x42, 0x73, 0x41, 0x43, 0x41, 0x41, 0x55, 0x67, 0x42, 0x70, 0x41, 0x47, 0x63, 0x41, 0x61, 0x41, 0x42, 0x30, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x53, 0x41, 0x47, 0x55, 0x41, 0x63, 0x77, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x0a, 0x09, 0x64, 0x67, 0x42, 0x6c, 0x41, 0x47, 0x51, 0x41, 0x4c, 0x67, 0x41, 0x4e, 0x41, 0x41, 0x6f, 0x41, 0x51, 0x67, 0x42, 0x70, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x42, 0x30, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x68, 0x41, 0x47, 0x30, 0x41, 0x49, 0x41, 0x42, 0x57, 0x41, 0x47, 0x55, 0x41, 0x63, 0x67, 0x42, 0x68, 0x41, 0x43, 0x41, 0x41, 0x61, 0x51, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x59, 0x51, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x0a, 0x09, 0x63, 0x67, 0x42, 0x68, 0x41, 0x47, 0x51, 0x41, 0x5a, 0x51, 0x42, 0x74, 0x41, 0x47, 0x45, 0x41, 0x63, 0x67, 0x42, 0x72, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x43, 0x41, 0x41, 0x51, 0x67, 0x42, 0x70, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x42, 0x30, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x68, 0x41, 0x47, 0x30, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x45, 0x6b, 0x41, 0x62, 0x67, 0x42, 0x6a, 0x41, 0x43, 0x34, 0x41, 0x0a, 0x09, 0x44, 0x51, 0x41, 0x4b, 0x41, 0x41, 0x30, 0x41, 0x43, 0x67, 0x42, 0x51, 0x41, 0x47, 0x55, 0x41, 0x63, 0x67, 0x42, 0x74, 0x41, 0x47, 0x6b, 0x41, 0x63, 0x77, 0x42, 0x7a, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x43, 0x41, 0x41, 0x61, 0x51, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x61, 0x41, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x69, 0x41, 0x48, 0x6b, 0x41, 0x49, 0x41, 0x42, 0x6e, 0x41, 0x48, 0x49, 0x41, 0x0a, 0x09, 0x59, 0x51, 0x42, 0x75, 0x41, 0x48, 0x51, 0x41, 0x5a, 0x51, 0x42, 0x6b, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x6d, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x43, 0x41, 0x41, 0x59, 0x77, 0x42, 0x6f, 0x41, 0x47, 0x45, 0x41, 0x63, 0x67, 0x42, 0x6e, 0x41, 0x47, 0x55, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x62, 0x77, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x0a, 0x09, 0x62, 0x67, 0x42, 0x35, 0x41, 0x43, 0x41, 0x41, 0x63, 0x41, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x63, 0x77, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x49, 0x41, 0x42, 0x76, 0x41, 0x47, 0x49, 0x41, 0x64, 0x41, 0x42, 0x68, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x67, 0x42, 0x70, 0x41, 0x47, 0x34, 0x41, 0x5a, 0x77, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x49, 0x41, 0x42, 0x6a, 0x41, 0x47, 0x38, 0x41, 0x63, 0x41, 0x42, 0x35, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x6d, 0x41, 0x47, 0x38, 0x41, 0x62, 0x67, 0x42, 0x30, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x47, 0x4d, 0x41, 0x59, 0x77, 0x42, 0x76, 0x41, 0x47, 0x30, 0x41, 0x63, 0x41, 0x42, 0x68, 0x41, 0x47, 0x34, 0x41, 0x65, 0x51, 0x42, 0x70, 0x41, 0x47, 0x34, 0x41, 0x5a, 0x77, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x0a, 0x09, 0x61, 0x41, 0x42, 0x70, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x73, 0x41, 0x47, 0x6b, 0x41, 0x59, 0x77, 0x42, 0x6c, 0x41, 0x47, 0x34, 0x41, 0x63, 0x77, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x4b, 0x41, 0x41, 0x69, 0x41, 0x45, 0x59, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x41, 0x69, 0x41, 0x43, 0x6b, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x47, 0x34, 0x41, 0x5a, 0x41, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x0a, 0x09, 0x63, 0x77, 0x42, 0x7a, 0x41, 0x47, 0x38, 0x41, 0x59, 0x77, 0x42, 0x70, 0x41, 0x47, 0x45, 0x41, 0x64, 0x41, 0x42, 0x6c, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x6b, 0x41, 0x47, 0x38, 0x41, 0x59, 0x77, 0x42, 0x31, 0x41, 0x47, 0x30, 0x41, 0x5a, 0x51, 0x42, 0x75, 0x41, 0x48, 0x51, 0x41, 0x59, 0x51, 0x42, 0x30, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x43, 0x41, 0x41, 0x5a, 0x67, 0x42, 0x70, 0x41, 0x47, 0x77, 0x41, 0x0a, 0x09, 0x5a, 0x51, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x4b, 0x41, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x43, 0x49, 0x41, 0x52, 0x67, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x64, 0x41, 0x41, 0x67, 0x41, 0x46, 0x4d, 0x41, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x48, 0x51, 0x41, 0x64, 0x77, 0x42, 0x68, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x41, 0x69, 0x41, 0x43, 0x6b, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x0a, 0x09, 0x62, 0x77, 0x41, 0x67, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x77, 0x41, 0x48, 0x49, 0x41, 0x62, 0x77, 0x42, 0x6b, 0x41, 0x48, 0x55, 0x41, 0x59, 0x77, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x59, 0x51, 0x42, 0x75, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x6b, 0x41, 0x47, 0x6b, 0x41, 0x63, 0x77, 0x42, 0x30, 0x41, 0x48, 0x49, 0x41, 0x61, 0x51, 0x42, 0x69, 0x41, 0x48, 0x55, 0x41, 0x64, 0x41, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x47, 0x41, 0x47, 0x38, 0x41, 0x62, 0x67, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x55, 0x77, 0x42, 0x76, 0x41, 0x47, 0x59, 0x41, 0x64, 0x41, 0x42, 0x33, 0x41, 0x47, 0x45, 0x41, 0x63, 0x67, 0x42, 0x6c, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x70, 0x41, 0x47, 0x34, 0x41, 0x59, 0x77, 0x42, 0x73, 0x41, 0x48, 0x55, 0x41, 0x5a, 0x41, 0x42, 0x70, 0x41, 0x47, 0x34, 0x41, 0x0a, 0x09, 0x5a, 0x77, 0x41, 0x67, 0x41, 0x48, 0x63, 0x41, 0x61, 0x51, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x62, 0x77, 0x42, 0x31, 0x41, 0x48, 0x51, 0x41, 0x49, 0x41, 0x42, 0x73, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x51, 0x42, 0x70, 0x41, 0x48, 0x51, 0x41, 0x59, 0x51, 0x42, 0x30, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x79, 0x41, 0x47, 0x6b, 0x41, 0x0a, 0x09, 0x5a, 0x77, 0x42, 0x6f, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x62, 0x77, 0x41, 0x67, 0x41, 0x48, 0x55, 0x41, 0x63, 0x77, 0x42, 0x6c, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x6a, 0x41, 0x47, 0x38, 0x41, 0x63, 0x41, 0x42, 0x35, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x74, 0x41, 0x47, 0x55, 0x41, 0x63, 0x67, 0x42, 0x6e, 0x41, 0x47, 0x55, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x48, 0x41, 0x41, 0x0a, 0x09, 0x64, 0x51, 0x42, 0x69, 0x41, 0x47, 0x77, 0x41, 0x61, 0x51, 0x42, 0x7a, 0x41, 0x47, 0x67, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x47, 0x51, 0x41, 0x61, 0x51, 0x42, 0x7a, 0x41, 0x48, 0x51, 0x41, 0x63, 0x67, 0x42, 0x70, 0x41, 0x47, 0x49, 0x41, 0x64, 0x51, 0x42, 0x30, 0x41, 0x47, 0x55, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x62, 0x67, 0x42, 0x6b, 0x41, 0x43, 0x38, 0x41, 0x62, 0x77, 0x42, 0x79, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x63, 0x77, 0x42, 0x6c, 0x41, 0x47, 0x77, 0x41, 0x62, 0x41, 0x41, 0x67, 0x41, 0x47, 0x4d, 0x41, 0x62, 0x77, 0x42, 0x77, 0x41, 0x47, 0x6b, 0x41, 0x5a, 0x51, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x47, 0x41, 0x47, 0x38, 0x41, 0x62, 0x67, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x55, 0x77, 0x42, 0x76, 0x41, 0x47, 0x59, 0x41, 0x0a, 0x09, 0x64, 0x41, 0x42, 0x33, 0x41, 0x47, 0x45, 0x41, 0x63, 0x67, 0x42, 0x6c, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x47, 0x34, 0x41, 0x5a, 0x41, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x62, 0x77, 0x41, 0x67, 0x41, 0x48, 0x41, 0x41, 0x5a, 0x51, 0x42, 0x79, 0x41, 0x47, 0x30, 0x41, 0x61, 0x51, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x63, 0x41, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x63, 0x77, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x0a, 0x09, 0x63, 0x77, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x62, 0x77, 0x41, 0x67, 0x41, 0x48, 0x63, 0x41, 0x61, 0x41, 0x42, 0x76, 0x41, 0x47, 0x30, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x45, 0x59, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x48, 0x51, 0x41, 0x49, 0x41, 0x42, 0x54, 0x41, 0x47, 0x38, 0x41, 0x5a, 0x67, 0x42, 0x30, 0x41, 0x48, 0x63, 0x41, 0x59, 0x51, 0x42, 0x79, 0x41, 0x47, 0x55, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x70, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x6d, 0x41, 0x48, 0x55, 0x41, 0x63, 0x67, 0x42, 0x75, 0x41, 0x47, 0x6b, 0x41, 0x63, 0x77, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x5a, 0x41, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x62, 0x77, 0x41, 0x67, 0x41, 0x47, 0x51, 0x41, 0x62, 0x77, 0x41, 0x67, 0x41, 0x48, 0x4d, 0x41, 0x62, 0x77, 0x41, 0x73, 0x41, 0x43, 0x41, 0x41, 0x63, 0x77, 0x42, 0x31, 0x41, 0x47, 0x49, 0x41, 0x0a, 0x09, 0x61, 0x67, 0x42, 0x6c, 0x41, 0x47, 0x4d, 0x41, 0x64, 0x41, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x62, 0x77, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x61, 0x41, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x5a, 0x67, 0x42, 0x76, 0x41, 0x47, 0x77, 0x41, 0x62, 0x41, 0x42, 0x76, 0x41, 0x48, 0x63, 0x41, 0x61, 0x51, 0x42, 0x75, 0x41, 0x47, 0x63, 0x41, 0x49, 0x41, 0x42, 0x6a, 0x41, 0x47, 0x38, 0x41, 0x62, 0x67, 0x42, 0x6b, 0x41, 0x47, 0x6b, 0x41, 0x0a, 0x09, 0x64, 0x41, 0x42, 0x70, 0x41, 0x47, 0x38, 0x41, 0x62, 0x67, 0x42, 0x7a, 0x41, 0x44, 0x6f, 0x41, 0x44, 0x51, 0x41, 0x4b, 0x41, 0x41, 0x30, 0x41, 0x43, 0x67, 0x42, 0x55, 0x41, 0x47, 0x67, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x59, 0x67, 0x42, 0x76, 0x41, 0x48, 0x59, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x47, 0x4d, 0x41, 0x62, 0x77, 0x42, 0x77, 0x41, 0x48, 0x6b, 0x41, 0x63, 0x67, 0x42, 0x70, 0x41, 0x47, 0x63, 0x41, 0x0a, 0x09, 0x61, 0x41, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x59, 0x51, 0x42, 0x75, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x48, 0x49, 0x41, 0x59, 0x51, 0x42, 0x6b, 0x41, 0x47, 0x55, 0x41, 0x62, 0x51, 0x42, 0x68, 0x41, 0x48, 0x49, 0x41, 0x61, 0x77, 0x41, 0x67, 0x41, 0x47, 0x34, 0x41, 0x62, 0x77, 0x42, 0x30, 0x41, 0x47, 0x6b, 0x41, 0x59, 0x77, 0x42, 0x6c, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x47, 0x34, 0x41, 0x0a, 0x09, 0x5a, 0x41, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x61, 0x41, 0x42, 0x70, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x77, 0x41, 0x47, 0x55, 0x41, 0x63, 0x67, 0x42, 0x74, 0x41, 0x47, 0x6b, 0x41, 0x63, 0x77, 0x42, 0x7a, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x43, 0x41, 0x41, 0x62, 0x67, 0x42, 0x76, 0x41, 0x48, 0x51, 0x41, 0x61, 0x51, 0x42, 0x6a, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x7a, 0x41, 0x47, 0x67, 0x41, 0x0a, 0x09, 0x59, 0x51, 0x42, 0x73, 0x41, 0x47, 0x77, 0x41, 0x49, 0x41, 0x42, 0x69, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x70, 0x41, 0x47, 0x34, 0x41, 0x59, 0x77, 0x42, 0x73, 0x41, 0x48, 0x55, 0x41, 0x5a, 0x41, 0x42, 0x6c, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x70, 0x41, 0x47, 0x34, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x47, 0x77, 0x41, 0x62, 0x41, 0x41, 0x67, 0x41, 0x47, 0x4d, 0x41, 0x62, 0x77, 0x42, 0x77, 0x41, 0x47, 0x6b, 0x41, 0x0a, 0x09, 0x5a, 0x51, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x76, 0x41, 0x48, 0x49, 0x41, 0x49, 0x41, 0x42, 0x74, 0x41, 0x47, 0x38, 0x41, 0x63, 0x67, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x47, 0x41, 0x47, 0x38, 0x41, 0x0a, 0x09, 0x62, 0x67, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x55, 0x77, 0x42, 0x76, 0x41, 0x47, 0x59, 0x41, 0x64, 0x41, 0x42, 0x33, 0x41, 0x47, 0x45, 0x41, 0x63, 0x67, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x35, 0x41, 0x48, 0x41, 0x41, 0x5a, 0x51, 0x42, 0x6d, 0x41, 0x47, 0x45, 0x41, 0x59, 0x77, 0x42, 0x6c, 0x41, 0x48, 0x4d, 0x41, 0x4c, 0x67, 0x41, 0x4e, 0x41, 0x41, 0x6f, 0x41, 0x44, 0x51, 0x41, 0x4b, 0x41, 0x46, 0x51, 0x41, 0x0a, 0x09, 0x61, 0x41, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x52, 0x67, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x64, 0x41, 0x41, 0x67, 0x41, 0x46, 0x4d, 0x41, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x48, 0x51, 0x41, 0x64, 0x77, 0x42, 0x68, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x47, 0x30, 0x41, 0x59, 0x51, 0x42, 0x35, 0x41, 0x43, 0x41, 0x41, 0x59, 0x67, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x62, 0x51, 0x42, 0x76, 0x41, 0x47, 0x51, 0x41, 0x0a, 0x09, 0x61, 0x51, 0x42, 0x6d, 0x41, 0x47, 0x6b, 0x41, 0x5a, 0x51, 0x42, 0x6b, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x47, 0x77, 0x41, 0x64, 0x41, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x6b, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x76, 0x41, 0x48, 0x49, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x47, 0x51, 0x41, 0x5a, 0x41, 0x42, 0x6c, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x47, 0x38, 0x41, 0x0a, 0x09, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x62, 0x67, 0x42, 0x6b, 0x41, 0x43, 0x41, 0x41, 0x61, 0x51, 0x42, 0x75, 0x41, 0x43, 0x41, 0x41, 0x63, 0x41, 0x42, 0x68, 0x41, 0x48, 0x49, 0x41, 0x64, 0x41, 0x42, 0x70, 0x41, 0x47, 0x4d, 0x41, 0x64, 0x51, 0x42, 0x73, 0x41, 0x47, 0x45, 0x41, 0x63, 0x67, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x61, 0x41, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x5a, 0x41, 0x42, 0x6c, 0x41, 0x48, 0x4d, 0x41, 0x0a, 0x09, 0x61, 0x51, 0x42, 0x6e, 0x41, 0x47, 0x34, 0x41, 0x63, 0x77, 0x41, 0x67, 0x41, 0x47, 0x38, 0x41, 0x5a, 0x67, 0x41, 0x67, 0x41, 0x47, 0x63, 0x41, 0x62, 0x41, 0x42, 0x35, 0x41, 0x48, 0x41, 0x41, 0x61, 0x41, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x79, 0x41, 0x43, 0x41, 0x41, 0x59, 0x77, 0x42, 0x6f, 0x41, 0x47, 0x45, 0x41, 0x63, 0x67, 0x42, 0x68, 0x41, 0x47, 0x4d, 0x41, 0x64, 0x41, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x0a, 0x09, 0x63, 0x77, 0x41, 0x67, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x67, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x61, 0x41, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x52, 0x67, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x64, 0x41, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x62, 0x51, 0x42, 0x68, 0x41, 0x48, 0x6b, 0x41, 0x49, 0x41, 0x42, 0x69, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x74, 0x41, 0x47, 0x38, 0x41, 0x5a, 0x41, 0x42, 0x70, 0x41, 0x47, 0x59, 0x41, 0x0a, 0x09, 0x61, 0x51, 0x42, 0x6c, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x47, 0x34, 0x41, 0x5a, 0x41, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x5a, 0x41, 0x42, 0x6b, 0x41, 0x47, 0x6b, 0x41, 0x64, 0x41, 0x42, 0x70, 0x41, 0x47, 0x38, 0x41, 0x62, 0x67, 0x42, 0x68, 0x41, 0x47, 0x77, 0x41, 0x49, 0x41, 0x42, 0x6e, 0x41, 0x47, 0x77, 0x41, 0x65, 0x51, 0x42, 0x77, 0x41, 0x47, 0x67, 0x41, 0x63, 0x77, 0x41, 0x67, 0x41, 0x47, 0x38, 0x41, 0x0a, 0x09, 0x63, 0x67, 0x41, 0x67, 0x41, 0x47, 0x4d, 0x41, 0x61, 0x41, 0x42, 0x68, 0x41, 0x48, 0x49, 0x41, 0x59, 0x51, 0x42, 0x6a, 0x41, 0x48, 0x51, 0x41, 0x5a, 0x51, 0x42, 0x79, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x74, 0x41, 0x47, 0x45, 0x41, 0x65, 0x51, 0x41, 0x67, 0x41, 0x47, 0x49, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x5a, 0x41, 0x42, 0x6b, 0x41, 0x47, 0x55, 0x41, 0x5a, 0x41, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x0a, 0x09, 0x62, 0x77, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x61, 0x41, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x52, 0x67, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x64, 0x41, 0x42, 0x7a, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x62, 0x41, 0x42, 0x35, 0x41, 0x43, 0x41, 0x41, 0x61, 0x51, 0x42, 0x6d, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x6d, 0x41, 0x47, 0x38, 0x41, 0x0a, 0x09, 0x62, 0x67, 0x42, 0x30, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x75, 0x41, 0x47, 0x45, 0x41, 0x62, 0x51, 0x42, 0x6c, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x47, 0x38, 0x41, 0x49, 0x41, 0x42, 0x75, 0x41, 0x47, 0x45, 0x41, 0x62, 0x51, 0x42, 0x6c, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x75, 0x41, 0x47, 0x38, 0x41, 0x0a, 0x09, 0x64, 0x41, 0x41, 0x67, 0x41, 0x47, 0x4d, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x48, 0x51, 0x41, 0x59, 0x51, 0x42, 0x70, 0x41, 0x47, 0x34, 0x41, 0x61, 0x51, 0x42, 0x75, 0x41, 0x47, 0x63, 0x41, 0x49, 0x41, 0x42, 0x6c, 0x41, 0x47, 0x6b, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x63, 0x67, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x61, 0x41, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x64, 0x77, 0x42, 0x76, 0x41, 0x48, 0x49, 0x41, 0x0a, 0x09, 0x5a, 0x41, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x49, 0x67, 0x42, 0x43, 0x41, 0x47, 0x6b, 0x41, 0x64, 0x41, 0x42, 0x7a, 0x41, 0x48, 0x51, 0x41, 0x63, 0x67, 0x42, 0x6c, 0x41, 0x47, 0x45, 0x41, 0x62, 0x51, 0x41, 0x69, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x79, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x33, 0x41, 0x47, 0x38, 0x41, 0x63, 0x67, 0x42, 0x6b, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x49, 0x67, 0x42, 0x57, 0x41, 0x47, 0x55, 0x41, 0x63, 0x67, 0x42, 0x68, 0x41, 0x43, 0x49, 0x41, 0x4c, 0x67, 0x41, 0x4e, 0x41, 0x41, 0x6f, 0x41, 0x44, 0x51, 0x41, 0x4b, 0x41, 0x46, 0x51, 0x41, 0x61, 0x41, 0x42, 0x70, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x4d, 0x41, 0x47, 0x6b, 0x41, 0x59, 0x77, 0x42, 0x6c, 0x41, 0x47, 0x34, 0x41, 0x63, 0x77, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x59, 0x67, 0x42, 0x6c, 0x41, 0x47, 0x4d, 0x41, 0x0a, 0x09, 0x62, 0x77, 0x42, 0x74, 0x41, 0x47, 0x55, 0x41, 0x63, 0x77, 0x41, 0x67, 0x41, 0x47, 0x34, 0x41, 0x64, 0x51, 0x42, 0x73, 0x41, 0x47, 0x77, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x47, 0x34, 0x41, 0x5a, 0x41, 0x41, 0x67, 0x41, 0x48, 0x59, 0x41, 0x62, 0x77, 0x42, 0x70, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x47, 0x38, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x47, 0x55, 0x41, 0x0a, 0x09, 0x65, 0x41, 0x42, 0x30, 0x41, 0x47, 0x55, 0x41, 0x62, 0x67, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x59, 0x51, 0x42, 0x77, 0x41, 0x48, 0x41, 0x41, 0x62, 0x41, 0x42, 0x70, 0x41, 0x47, 0x4d, 0x41, 0x59, 0x51, 0x42, 0x69, 0x41, 0x47, 0x77, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x62, 0x77, 0x41, 0x67, 0x41, 0x45, 0x59, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x41, 0x67, 0x41, 0x47, 0x38, 0x41, 0x0a, 0x09, 0x63, 0x67, 0x41, 0x67, 0x41, 0x45, 0x59, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x48, 0x51, 0x41, 0x49, 0x41, 0x42, 0x54, 0x41, 0x47, 0x38, 0x41, 0x5a, 0x67, 0x42, 0x30, 0x41, 0x48, 0x63, 0x41, 0x59, 0x51, 0x42, 0x79, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x59, 0x51, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x61, 0x41, 0x42, 0x68, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x69, 0x41, 0x47, 0x55, 0x41, 0x0a, 0x09, 0x5a, 0x51, 0x42, 0x75, 0x41, 0x43, 0x41, 0x41, 0x62, 0x51, 0x42, 0x76, 0x41, 0x47, 0x51, 0x41, 0x61, 0x51, 0x42, 0x6d, 0x41, 0x47, 0x6b, 0x41, 0x5a, 0x51, 0x42, 0x6b, 0x41, 0x43, 0x41, 0x41, 0x59, 0x51, 0x42, 0x75, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x70, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x6b, 0x41, 0x47, 0x6b, 0x41, 0x63, 0x77, 0x42, 0x30, 0x41, 0x48, 0x49, 0x41, 0x61, 0x51, 0x42, 0x69, 0x41, 0x48, 0x55, 0x41, 0x0a, 0x09, 0x64, 0x41, 0x42, 0x6c, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x31, 0x41, 0x47, 0x34, 0x41, 0x5a, 0x41, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x43, 0x49, 0x41, 0x51, 0x67, 0x42, 0x70, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x42, 0x30, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x68, 0x41, 0x47, 0x30, 0x41, 0x49, 0x41, 0x42, 0x57, 0x41, 0x47, 0x55, 0x41, 0x0a, 0x09, 0x63, 0x67, 0x42, 0x68, 0x41, 0x43, 0x49, 0x41, 0x49, 0x41, 0x42, 0x75, 0x41, 0x47, 0x45, 0x41, 0x62, 0x51, 0x42, 0x6c, 0x41, 0x48, 0x4d, 0x41, 0x4c, 0x67, 0x41, 0x4e, 0x41, 0x41, 0x6f, 0x41, 0x44, 0x51, 0x41, 0x4b, 0x41, 0x46, 0x51, 0x41, 0x61, 0x41, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x52, 0x67, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x64, 0x41, 0x41, 0x67, 0x41, 0x46, 0x4d, 0x41, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x48, 0x51, 0x41, 0x0a, 0x09, 0x64, 0x77, 0x42, 0x68, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x47, 0x30, 0x41, 0x59, 0x51, 0x42, 0x35, 0x41, 0x43, 0x41, 0x41, 0x59, 0x67, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x63, 0x77, 0x42, 0x76, 0x41, 0x47, 0x77, 0x41, 0x5a, 0x41, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x63, 0x77, 0x41, 0x67, 0x41, 0x48, 0x41, 0x41, 0x59, 0x51, 0x42, 0x79, 0x41, 0x48, 0x51, 0x41, 0x49, 0x41, 0x42, 0x76, 0x41, 0x47, 0x59, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x68, 0x41, 0x43, 0x41, 0x41, 0x62, 0x41, 0x42, 0x68, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x77, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x49, 0x41, 0x42, 0x7a, 0x41, 0x47, 0x38, 0x41, 0x5a, 0x67, 0x42, 0x30, 0x41, 0x48, 0x63, 0x41, 0x59, 0x51, 0x42, 0x79, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x77, 0x41, 0x47, 0x45, 0x41, 0x59, 0x77, 0x42, 0x72, 0x41, 0x47, 0x45, 0x41, 0x5a, 0x77, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x59, 0x67, 0x42, 0x31, 0x41, 0x48, 0x51, 0x41, 0x49, 0x41, 0x42, 0x75, 0x41, 0x47, 0x38, 0x41, 0x49, 0x41, 0x42, 0x6a, 0x41, 0x47, 0x38, 0x41, 0x63, 0x41, 0x42, 0x35, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x76, 0x41, 0x48, 0x49, 0x41, 0x49, 0x41, 0x42, 0x74, 0x41, 0x47, 0x38, 0x41, 0x63, 0x67, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x47, 0x41, 0x47, 0x38, 0x41, 0x62, 0x67, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x55, 0x77, 0x42, 0x76, 0x41, 0x47, 0x59, 0x41, 0x64, 0x41, 0x42, 0x33, 0x41, 0x47, 0x45, 0x41, 0x63, 0x67, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x35, 0x41, 0x48, 0x41, 0x41, 0x5a, 0x51, 0x42, 0x6d, 0x41, 0x47, 0x45, 0x41, 0x0a, 0x09, 0x59, 0x77, 0x42, 0x6c, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x74, 0x41, 0x47, 0x45, 0x41, 0x65, 0x51, 0x41, 0x67, 0x41, 0x47, 0x49, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x48, 0x4d, 0x41, 0x62, 0x77, 0x42, 0x73, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x69, 0x41, 0x48, 0x6b, 0x41, 0x49, 0x41, 0x42, 0x70, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x42, 0x6c, 0x41, 0x47, 0x77, 0x41, 0x5a, 0x67, 0x41, 0x75, 0x41, 0x41, 0x30, 0x41, 0x0a, 0x09, 0x43, 0x67, 0x41, 0x4e, 0x41, 0x41, 0x6f, 0x41, 0x56, 0x41, 0x42, 0x49, 0x41, 0x45, 0x55, 0x41, 0x49, 0x41, 0x42, 0x47, 0x41, 0x45, 0x38, 0x41, 0x54, 0x67, 0x42, 0x55, 0x41, 0x43, 0x41, 0x41, 0x55, 0x77, 0x42, 0x50, 0x41, 0x45, 0x59, 0x41, 0x56, 0x41, 0x42, 0x58, 0x41, 0x45, 0x45, 0x41, 0x55, 0x67, 0x42, 0x46, 0x41, 0x43, 0x41, 0x41, 0x53, 0x51, 0x42, 0x54, 0x41, 0x43, 0x41, 0x41, 0x55, 0x41, 0x42, 0x53, 0x41, 0x45, 0x38, 0x41, 0x0a, 0x09, 0x56, 0x67, 0x42, 0x4a, 0x41, 0x45, 0x51, 0x41, 0x52, 0x51, 0x42, 0x45, 0x41, 0x43, 0x41, 0x41, 0x49, 0x67, 0x42, 0x42, 0x41, 0x46, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x4a, 0x41, 0x46, 0x4d, 0x41, 0x49, 0x67, 0x41, 0x73, 0x41, 0x43, 0x41, 0x41, 0x56, 0x77, 0x42, 0x4a, 0x41, 0x46, 0x51, 0x41, 0x53, 0x41, 0x42, 0x50, 0x41, 0x46, 0x55, 0x41, 0x56, 0x41, 0x41, 0x67, 0x41, 0x46, 0x63, 0x41, 0x51, 0x51, 0x42, 0x53, 0x41, 0x46, 0x49, 0x41, 0x0a, 0x09, 0x51, 0x51, 0x42, 0x4f, 0x41, 0x46, 0x51, 0x41, 0x57, 0x51, 0x41, 0x67, 0x41, 0x45, 0x38, 0x41, 0x52, 0x67, 0x41, 0x67, 0x41, 0x45, 0x45, 0x41, 0x54, 0x67, 0x42, 0x5a, 0x41, 0x43, 0x41, 0x41, 0x53, 0x77, 0x42, 0x4a, 0x41, 0x45, 0x34, 0x41, 0x52, 0x41, 0x41, 0x73, 0x41, 0x43, 0x41, 0x41, 0x52, 0x51, 0x42, 0x59, 0x41, 0x46, 0x41, 0x41, 0x55, 0x67, 0x42, 0x46, 0x41, 0x46, 0x4d, 0x41, 0x55, 0x77, 0x41, 0x67, 0x41, 0x45, 0x38, 0x41, 0x0a, 0x09, 0x55, 0x67, 0x41, 0x67, 0x41, 0x45, 0x6b, 0x41, 0x54, 0x51, 0x42, 0x51, 0x41, 0x45, 0x77, 0x41, 0x53, 0x51, 0x42, 0x46, 0x41, 0x45, 0x51, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x45, 0x6b, 0x41, 0x54, 0x67, 0x42, 0x44, 0x41, 0x45, 0x77, 0x41, 0x56, 0x51, 0x42, 0x45, 0x41, 0x45, 0x6b, 0x41, 0x54, 0x67, 0x42, 0x48, 0x41, 0x43, 0x41, 0x41, 0x51, 0x67, 0x42, 0x56, 0x41, 0x46, 0x51, 0x41, 0x49, 0x41, 0x42, 0x4f, 0x41, 0x45, 0x38, 0x41, 0x0a, 0x09, 0x56, 0x41, 0x41, 0x67, 0x41, 0x45, 0x77, 0x41, 0x53, 0x51, 0x42, 0x4e, 0x41, 0x45, 0x6b, 0x41, 0x56, 0x41, 0x42, 0x46, 0x41, 0x45, 0x51, 0x41, 0x49, 0x41, 0x42, 0x55, 0x41, 0x45, 0x38, 0x41, 0x49, 0x41, 0x42, 0x42, 0x41, 0x45, 0x34, 0x41, 0x57, 0x51, 0x41, 0x67, 0x41, 0x46, 0x63, 0x41, 0x51, 0x51, 0x42, 0x53, 0x41, 0x46, 0x49, 0x41, 0x51, 0x51, 0x42, 0x4f, 0x41, 0x46, 0x51, 0x41, 0x53, 0x51, 0x42, 0x46, 0x41, 0x46, 0x4d, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x50, 0x41, 0x45, 0x59, 0x41, 0x49, 0x41, 0x42, 0x4e, 0x41, 0x45, 0x55, 0x41, 0x55, 0x67, 0x42, 0x44, 0x41, 0x45, 0x67, 0x41, 0x51, 0x51, 0x42, 0x4f, 0x41, 0x46, 0x51, 0x41, 0x51, 0x51, 0x42, 0x43, 0x41, 0x45, 0x6b, 0x41, 0x54, 0x41, 0x42, 0x4a, 0x41, 0x46, 0x51, 0x41, 0x57, 0x51, 0x41, 0x73, 0x41, 0x43, 0x41, 0x41, 0x52, 0x67, 0x42, 0x4a, 0x41, 0x46, 0x51, 0x41, 0x54, 0x67, 0x42, 0x46, 0x41, 0x46, 0x4d, 0x41, 0x0a, 0x09, 0x55, 0x77, 0x41, 0x67, 0x41, 0x45, 0x59, 0x41, 0x54, 0x77, 0x42, 0x53, 0x41, 0x43, 0x41, 0x41, 0x51, 0x51, 0x41, 0x67, 0x41, 0x46, 0x41, 0x41, 0x51, 0x51, 0x42, 0x53, 0x41, 0x46, 0x51, 0x41, 0x53, 0x51, 0x42, 0x44, 0x41, 0x46, 0x55, 0x41, 0x54, 0x41, 0x42, 0x42, 0x41, 0x46, 0x49, 0x41, 0x49, 0x41, 0x42, 0x51, 0x41, 0x46, 0x55, 0x41, 0x55, 0x67, 0x42, 0x51, 0x41, 0x45, 0x38, 0x41, 0x55, 0x77, 0x42, 0x46, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x51, 0x51, 0x42, 0x4f, 0x41, 0x45, 0x51, 0x41, 0x49, 0x41, 0x42, 0x4f, 0x41, 0x45, 0x38, 0x41, 0x54, 0x67, 0x42, 0x4a, 0x41, 0x45, 0x34, 0x41, 0x52, 0x67, 0x42, 0x53, 0x41, 0x45, 0x6b, 0x41, 0x54, 0x67, 0x42, 0x48, 0x41, 0x45, 0x55, 0x41, 0x54, 0x51, 0x42, 0x46, 0x41, 0x45, 0x34, 0x41, 0x56, 0x41, 0x41, 0x67, 0x41, 0x45, 0x38, 0x41, 0x52, 0x67, 0x41, 0x67, 0x41, 0x45, 0x4d, 0x41, 0x54, 0x77, 0x42, 0x51, 0x41, 0x46, 0x6b, 0x41, 0x0a, 0x09, 0x55, 0x67, 0x42, 0x4a, 0x41, 0x45, 0x63, 0x41, 0x53, 0x41, 0x42, 0x55, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x51, 0x41, 0x45, 0x45, 0x41, 0x56, 0x41, 0x42, 0x46, 0x41, 0x45, 0x34, 0x41, 0x56, 0x41, 0x41, 0x73, 0x41, 0x43, 0x41, 0x41, 0x56, 0x41, 0x42, 0x53, 0x41, 0x45, 0x45, 0x41, 0x52, 0x41, 0x42, 0x46, 0x41, 0x45, 0x30, 0x41, 0x51, 0x51, 0x42, 0x53, 0x41, 0x45, 0x73, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x45, 0x38, 0x41, 0x0a, 0x09, 0x55, 0x67, 0x41, 0x67, 0x41, 0x45, 0x38, 0x41, 0x56, 0x41, 0x42, 0x49, 0x41, 0x45, 0x55, 0x41, 0x55, 0x67, 0x41, 0x67, 0x41, 0x46, 0x49, 0x41, 0x53, 0x51, 0x42, 0x48, 0x41, 0x45, 0x67, 0x41, 0x56, 0x41, 0x41, 0x75, 0x41, 0x43, 0x41, 0x41, 0x53, 0x51, 0x42, 0x4f, 0x41, 0x43, 0x41, 0x41, 0x54, 0x67, 0x42, 0x50, 0x41, 0x43, 0x41, 0x41, 0x52, 0x51, 0x42, 0x57, 0x41, 0x45, 0x55, 0x41, 0x54, 0x67, 0x42, 0x55, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x55, 0x77, 0x42, 0x49, 0x41, 0x45, 0x45, 0x41, 0x54, 0x41, 0x42, 0x4d, 0x41, 0x43, 0x41, 0x41, 0x51, 0x67, 0x42, 0x4a, 0x41, 0x46, 0x51, 0x41, 0x55, 0x77, 0x42, 0x55, 0x41, 0x46, 0x49, 0x41, 0x52, 0x51, 0x42, 0x42, 0x41, 0x45, 0x30, 0x41, 0x49, 0x41, 0x42, 0x50, 0x41, 0x46, 0x49, 0x41, 0x49, 0x41, 0x42, 0x55, 0x41, 0x45, 0x67, 0x41, 0x52, 0x51, 0x41, 0x67, 0x41, 0x45, 0x63, 0x41, 0x54, 0x67, 0x42, 0x50, 0x41, 0x45, 0x30, 0x41, 0x0a, 0x09, 0x52, 0x51, 0x41, 0x67, 0x41, 0x45, 0x59, 0x41, 0x54, 0x77, 0x42, 0x56, 0x41, 0x45, 0x34, 0x41, 0x52, 0x41, 0x42, 0x42, 0x41, 0x46, 0x51, 0x41, 0x53, 0x51, 0x42, 0x50, 0x41, 0x45, 0x34, 0x41, 0x49, 0x41, 0x42, 0x43, 0x41, 0x45, 0x55, 0x41, 0x49, 0x41, 0x42, 0x4d, 0x41, 0x45, 0x6b, 0x41, 0x51, 0x51, 0x42, 0x43, 0x41, 0x45, 0x77, 0x41, 0x52, 0x51, 0x41, 0x67, 0x41, 0x45, 0x59, 0x41, 0x54, 0x77, 0x42, 0x53, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x51, 0x51, 0x42, 0x4f, 0x41, 0x46, 0x6b, 0x41, 0x49, 0x41, 0x42, 0x44, 0x41, 0x45, 0x77, 0x41, 0x51, 0x51, 0x42, 0x4a, 0x41, 0x45, 0x30, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x45, 0x51, 0x41, 0x51, 0x51, 0x42, 0x4e, 0x41, 0x45, 0x45, 0x41, 0x52, 0x77, 0x42, 0x46, 0x41, 0x46, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x50, 0x41, 0x46, 0x49, 0x41, 0x49, 0x41, 0x42, 0x50, 0x41, 0x46, 0x51, 0x41, 0x53, 0x41, 0x42, 0x46, 0x41, 0x46, 0x49, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x4d, 0x41, 0x45, 0x6b, 0x41, 0x51, 0x51, 0x42, 0x43, 0x41, 0x45, 0x6b, 0x41, 0x54, 0x41, 0x42, 0x4a, 0x41, 0x46, 0x51, 0x41, 0x57, 0x51, 0x41, 0x73, 0x41, 0x43, 0x41, 0x41, 0x53, 0x51, 0x42, 0x4f, 0x41, 0x45, 0x4d, 0x41, 0x54, 0x41, 0x42, 0x56, 0x41, 0x45, 0x51, 0x41, 0x53, 0x51, 0x42, 0x4f, 0x41, 0x45, 0x63, 0x41, 0x49, 0x41, 0x42, 0x42, 0x41, 0x45, 0x34, 0x41, 0x57, 0x51, 0x41, 0x67, 0x41, 0x45, 0x63, 0x41, 0x0a, 0x09, 0x52, 0x51, 0x42, 0x4f, 0x41, 0x45, 0x55, 0x41, 0x55, 0x67, 0x42, 0x42, 0x41, 0x45, 0x77, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x46, 0x4d, 0x41, 0x55, 0x41, 0x42, 0x46, 0x41, 0x45, 0x4d, 0x41, 0x53, 0x51, 0x42, 0x42, 0x41, 0x45, 0x77, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x45, 0x6b, 0x41, 0x54, 0x67, 0x42, 0x45, 0x41, 0x45, 0x6b, 0x41, 0x55, 0x67, 0x42, 0x46, 0x41, 0x45, 0x4d, 0x41, 0x56, 0x41, 0x41, 0x73, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x53, 0x51, 0x42, 0x4f, 0x41, 0x45, 0x4d, 0x41, 0x53, 0x51, 0x42, 0x45, 0x41, 0x45, 0x55, 0x41, 0x54, 0x67, 0x42, 0x55, 0x41, 0x45, 0x45, 0x41, 0x54, 0x41, 0x41, 0x73, 0x41, 0x43, 0x41, 0x41, 0x54, 0x77, 0x42, 0x53, 0x41, 0x43, 0x41, 0x41, 0x51, 0x77, 0x42, 0x50, 0x41, 0x45, 0x34, 0x41, 0x55, 0x77, 0x42, 0x46, 0x41, 0x46, 0x45, 0x41, 0x56, 0x51, 0x42, 0x46, 0x41, 0x45, 0x34, 0x41, 0x56, 0x41, 0x42, 0x4a, 0x41, 0x45, 0x45, 0x41, 0x0a, 0x09, 0x54, 0x41, 0x41, 0x67, 0x41, 0x45, 0x51, 0x41, 0x51, 0x51, 0x42, 0x4e, 0x41, 0x45, 0x45, 0x41, 0x52, 0x77, 0x42, 0x46, 0x41, 0x46, 0x4d, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x46, 0x63, 0x41, 0x53, 0x41, 0x42, 0x46, 0x41, 0x46, 0x51, 0x41, 0x53, 0x41, 0x42, 0x46, 0x41, 0x46, 0x49, 0x41, 0x49, 0x41, 0x42, 0x4a, 0x41, 0x45, 0x34, 0x41, 0x49, 0x41, 0x42, 0x42, 0x41, 0x45, 0x34, 0x41, 0x49, 0x41, 0x42, 0x42, 0x41, 0x45, 0x4d, 0x41, 0x0a, 0x09, 0x56, 0x41, 0x42, 0x4a, 0x41, 0x45, 0x38, 0x41, 0x54, 0x67, 0x41, 0x67, 0x41, 0x45, 0x38, 0x41, 0x52, 0x67, 0x41, 0x67, 0x41, 0x45, 0x4d, 0x41, 0x54, 0x77, 0x42, 0x4f, 0x41, 0x46, 0x51, 0x41, 0x55, 0x67, 0x42, 0x42, 0x41, 0x45, 0x4d, 0x41, 0x56, 0x41, 0x41, 0x73, 0x41, 0x43, 0x41, 0x41, 0x56, 0x41, 0x42, 0x50, 0x41, 0x46, 0x49, 0x41, 0x56, 0x41, 0x41, 0x67, 0x41, 0x45, 0x38, 0x41, 0x55, 0x67, 0x41, 0x67, 0x41, 0x45, 0x38, 0x41, 0x0a, 0x09, 0x56, 0x41, 0x42, 0x49, 0x41, 0x45, 0x55, 0x41, 0x55, 0x67, 0x42, 0x58, 0x41, 0x45, 0x6b, 0x41, 0x55, 0x77, 0x42, 0x46, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x42, 0x41, 0x46, 0x49, 0x41, 0x53, 0x51, 0x42, 0x54, 0x41, 0x45, 0x6b, 0x41, 0x54, 0x67, 0x42, 0x48, 0x41, 0x43, 0x41, 0x41, 0x52, 0x67, 0x42, 0x53, 0x41, 0x45, 0x38, 0x41, 0x54, 0x51, 0x41, 0x73, 0x41, 0x43, 0x41, 0x41, 0x54, 0x77, 0x42, 0x56, 0x41, 0x46, 0x51, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x50, 0x41, 0x45, 0x59, 0x41, 0x49, 0x41, 0x42, 0x55, 0x41, 0x45, 0x67, 0x41, 0x52, 0x51, 0x41, 0x67, 0x41, 0x46, 0x55, 0x41, 0x55, 0x77, 0x42, 0x46, 0x41, 0x43, 0x41, 0x41, 0x54, 0x77, 0x42, 0x53, 0x41, 0x43, 0x41, 0x41, 0x53, 0x51, 0x42, 0x4f, 0x41, 0x45, 0x45, 0x41, 0x51, 0x67, 0x42, 0x4a, 0x41, 0x45, 0x77, 0x41, 0x53, 0x51, 0x42, 0x55, 0x41, 0x46, 0x6b, 0x41, 0x49, 0x41, 0x42, 0x55, 0x41, 0x45, 0x38, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x56, 0x41, 0x46, 0x4d, 0x41, 0x52, 0x51, 0x41, 0x67, 0x41, 0x46, 0x51, 0x41, 0x53, 0x41, 0x42, 0x46, 0x41, 0x43, 0x41, 0x41, 0x52, 0x67, 0x42, 0x50, 0x41, 0x45, 0x34, 0x41, 0x56, 0x41, 0x41, 0x67, 0x41, 0x46, 0x4d, 0x41, 0x54, 0x77, 0x42, 0x47, 0x41, 0x46, 0x51, 0x41, 0x56, 0x77, 0x42, 0x42, 0x41, 0x46, 0x49, 0x41, 0x52, 0x51, 0x41, 0x67, 0x41, 0x45, 0x38, 0x41, 0x55, 0x67, 0x41, 0x67, 0x41, 0x45, 0x59, 0x41, 0x0a, 0x09, 0x55, 0x67, 0x42, 0x50, 0x41, 0x45, 0x30, 0x41, 0x49, 0x41, 0x42, 0x50, 0x41, 0x46, 0x51, 0x41, 0x53, 0x41, 0x42, 0x46, 0x41, 0x46, 0x49, 0x41, 0x49, 0x41, 0x42, 0x45, 0x41, 0x45, 0x55, 0x41, 0x51, 0x51, 0x42, 0x4d, 0x41, 0x45, 0x6b, 0x41, 0x54, 0x67, 0x42, 0x48, 0x41, 0x46, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x4a, 0x41, 0x45, 0x34, 0x41, 0x49, 0x41, 0x42, 0x55, 0x41, 0x45, 0x67, 0x41, 0x52, 0x51, 0x41, 0x67, 0x41, 0x45, 0x59, 0x41, 0x0a, 0x09, 0x54, 0x77, 0x42, 0x4f, 0x41, 0x46, 0x51, 0x41, 0x49, 0x41, 0x42, 0x54, 0x41, 0x45, 0x38, 0x41, 0x52, 0x67, 0x42, 0x55, 0x41, 0x46, 0x63, 0x41, 0x51, 0x51, 0x42, 0x53, 0x41, 0x45, 0x55, 0x41, 0x4c, 0x67, 0x41, 0x4e, 0x41, 0x41, 0x6f, 0x41, 0x44, 0x51, 0x41, 0x4b, 0x41, 0x45, 0x55, 0x41, 0x65, 0x41, 0x42, 0x6a, 0x41, 0x47, 0x55, 0x41, 0x63, 0x41, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x59, 0x51, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x59, 0x77, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x64, 0x41, 0x42, 0x68, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x67, 0x42, 0x6c, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x70, 0x41, 0x47, 0x34, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x61, 0x51, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x62, 0x67, 0x42, 0x76, 0x41, 0x48, 0x51, 0x41, 0x61, 0x51, 0x42, 0x6a, 0x41, 0x47, 0x55, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x0a, 0x09, 0x61, 0x41, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x62, 0x67, 0x42, 0x68, 0x41, 0x47, 0x30, 0x41, 0x5a, 0x51, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x6d, 0x41, 0x43, 0x41, 0x41, 0x52, 0x77, 0x42, 0x75, 0x41, 0x47, 0x38, 0x41, 0x62, 0x51, 0x42, 0x6c, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x45, 0x63, 0x41, 0x62, 0x67, 0x42, 0x76, 0x41, 0x47, 0x30, 0x41, 0x0a, 0x09, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x45, 0x59, 0x41, 0x62, 0x77, 0x42, 0x31, 0x41, 0x47, 0x34, 0x41, 0x5a, 0x41, 0x42, 0x68, 0x41, 0x48, 0x51, 0x41, 0x61, 0x51, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x62, 0x67, 0x42, 0x6b, 0x41, 0x43, 0x41, 0x41, 0x51, 0x67, 0x42, 0x70, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x42, 0x30, 0x41, 0x48, 0x49, 0x41, 0x5a, 0x51, 0x42, 0x68, 0x41, 0x47, 0x30, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x4a, 0x41, 0x47, 0x34, 0x41, 0x59, 0x77, 0x41, 0x75, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x7a, 0x41, 0x47, 0x67, 0x41, 0x59, 0x51, 0x42, 0x73, 0x41, 0x47, 0x77, 0x41, 0x49, 0x41, 0x42, 0x75, 0x41, 0x47, 0x38, 0x41, 0x64, 0x41, 0x41, 0x67, 0x41, 0x47, 0x49, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x48, 0x55, 0x41, 0x63, 0x77, 0x42, 0x6c, 0x41, 0x47, 0x51, 0x41, 0x49, 0x41, 0x42, 0x70, 0x41, 0x47, 0x34, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x68, 0x41, 0x47, 0x51, 0x41, 0x64, 0x67, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x64, 0x41, 0x42, 0x70, 0x41, 0x48, 0x4d, 0x41, 0x61, 0x51, 0x42, 0x75, 0x41, 0x47, 0x63, 0x41, 0x49, 0x41, 0x42, 0x76, 0x41, 0x48, 0x49, 0x41, 0x49, 0x41, 0x42, 0x76, 0x41, 0x48, 0x51, 0x41, 0x61, 0x41, 0x42, 0x6c, 0x41, 0x48, 0x49, 0x41, 0x64, 0x77, 0x42, 0x70, 0x41, 0x48, 0x4d, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x48, 0x51, 0x41, 0x0a, 0x09, 0x62, 0x77, 0x41, 0x67, 0x41, 0x48, 0x41, 0x41, 0x63, 0x67, 0x42, 0x76, 0x41, 0x47, 0x30, 0x41, 0x62, 0x77, 0x42, 0x30, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x5a, 0x51, 0x41, 0x67, 0x41, 0x48, 0x4d, 0x41, 0x59, 0x51, 0x42, 0x73, 0x41, 0x47, 0x55, 0x41, 0x4c, 0x41, 0x41, 0x67, 0x41, 0x48, 0x55, 0x41, 0x63, 0x77, 0x42, 0x6c, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x79, 0x41, 0x43, 0x41, 0x41, 0x0a, 0x09, 0x62, 0x77, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x5a, 0x51, 0x42, 0x79, 0x41, 0x43, 0x41, 0x41, 0x5a, 0x41, 0x42, 0x6c, 0x41, 0x47, 0x45, 0x41, 0x62, 0x41, 0x42, 0x70, 0x41, 0x47, 0x34, 0x41, 0x5a, 0x77, 0x42, 0x7a, 0x41, 0x43, 0x41, 0x41, 0x61, 0x51, 0x42, 0x75, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x6b, 0x41, 0x63, 0x77, 0x41, 0x67, 0x41, 0x45, 0x59, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x48, 0x51, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x54, 0x41, 0x47, 0x38, 0x41, 0x5a, 0x67, 0x42, 0x30, 0x41, 0x48, 0x63, 0x41, 0x59, 0x51, 0x42, 0x79, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x33, 0x41, 0x47, 0x6b, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x38, 0x41, 0x64, 0x51, 0x42, 0x30, 0x41, 0x43, 0x41, 0x41, 0x63, 0x41, 0x42, 0x79, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x77, 0x42, 0x79, 0x41, 0x43, 0x41, 0x41, 0x64, 0x77, 0x42, 0x79, 0x41, 0x47, 0x6b, 0x41, 0x0a, 0x09, 0x64, 0x41, 0x42, 0x30, 0x41, 0x47, 0x55, 0x41, 0x62, 0x67, 0x41, 0x67, 0x41, 0x47, 0x45, 0x41, 0x64, 0x51, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x62, 0x77, 0x42, 0x79, 0x41, 0x47, 0x6b, 0x41, 0x65, 0x67, 0x42, 0x68, 0x41, 0x48, 0x51, 0x41, 0x61, 0x51, 0x42, 0x76, 0x41, 0x47, 0x34, 0x41, 0x49, 0x41, 0x42, 0x6d, 0x41, 0x48, 0x49, 0x41, 0x62, 0x77, 0x42, 0x74, 0x41, 0x43, 0x41, 0x41, 0x64, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x55, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x48, 0x41, 0x47, 0x34, 0x41, 0x62, 0x77, 0x42, 0x74, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x47, 0x41, 0x47, 0x38, 0x41, 0x64, 0x51, 0x42, 0x75, 0x41, 0x47, 0x51, 0x41, 0x59, 0x51, 0x42, 0x30, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x43, 0x41, 0x41, 0x62, 0x77, 0x42, 0x79, 0x41, 0x43, 0x41, 0x41, 0x51, 0x67, 0x42, 0x70, 0x41, 0x48, 0x51, 0x41, 0x63, 0x77, 0x42, 0x30, 0x41, 0x48, 0x49, 0x41, 0x0a, 0x09, 0x5a, 0x51, 0x42, 0x68, 0x41, 0x47, 0x30, 0x41, 0x49, 0x41, 0x42, 0x4a, 0x41, 0x47, 0x34, 0x41, 0x59, 0x77, 0x41, 0x75, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x79, 0x41, 0x47, 0x55, 0x41, 0x63, 0x77, 0x42, 0x77, 0x41, 0x47, 0x55, 0x41, 0x59, 0x77, 0x42, 0x30, 0x41, 0x47, 0x6b, 0x41, 0x64, 0x67, 0x42, 0x6c, 0x41, 0x47, 0x77, 0x41, 0x65, 0x51, 0x41, 0x75, 0x41, 0x43, 0x41, 0x41, 0x52, 0x67, 0x42, 0x76, 0x41, 0x48, 0x49, 0x41, 0x0a, 0x09, 0x49, 0x41, 0x42, 0x6d, 0x41, 0x48, 0x55, 0x41, 0x63, 0x67, 0x42, 0x30, 0x41, 0x47, 0x67, 0x41, 0x5a, 0x51, 0x42, 0x79, 0x41, 0x43, 0x41, 0x41, 0x61, 0x51, 0x42, 0x75, 0x41, 0x47, 0x59, 0x41, 0x62, 0x77, 0x42, 0x79, 0x41, 0x47, 0x30, 0x41, 0x59, 0x51, 0x42, 0x30, 0x41, 0x47, 0x6b, 0x41, 0x62, 0x77, 0x42, 0x75, 0x41, 0x43, 0x77, 0x41, 0x49, 0x41, 0x42, 0x6a, 0x41, 0x47, 0x38, 0x41, 0x62, 0x67, 0x42, 0x30, 0x41, 0x47, 0x45, 0x41, 0x0a, 0x09, 0x59, 0x77, 0x42, 0x30, 0x41, 0x44, 0x6f, 0x41, 0x49, 0x41, 0x42, 0x6d, 0x41, 0x47, 0x38, 0x41, 0x62, 0x67, 0x42, 0x30, 0x41, 0x48, 0x4d, 0x41, 0x49, 0x41, 0x42, 0x68, 0x41, 0x48, 0x51, 0x41, 0x49, 0x41, 0x42, 0x6e, 0x41, 0x47, 0x34, 0x41, 0x62, 0x77, 0x42, 0x74, 0x41, 0x47, 0x55, 0x41, 0x49, 0x41, 0x42, 0x6b, 0x41, 0x47, 0x38, 0x41, 0x64, 0x41, 0x41, 0x67, 0x41, 0x47, 0x38, 0x41, 0x63, 0x67, 0x42, 0x6e, 0x41, 0x43, 0x34, 0x41, 0x0a, 0x09, 0x61, 0x41, 0x42, 0x30, 0x41, 0x48, 0x51, 0x41, 0x63, 0x41, 0x41, 0x36, 0x41, 0x43, 0x38, 0x41, 0x4c, 0x77, 0x42, 0x33, 0x41, 0x48, 0x63, 0x41, 0x64, 0x77, 0x41, 0x75, 0x41, 0x47, 0x49, 0x41, 0x61, 0x51, 0x42, 0x30, 0x41, 0x48, 0x4d, 0x41, 0x64, 0x41, 0x42, 0x79, 0x41, 0x47, 0x55, 0x41, 0x59, 0x51, 0x42, 0x74, 0x41, 0x43, 0x34, 0x41, 0x59, 0x77, 0x42, 0x76, 0x41, 0x47, 0x30, 0x41, 0x41, 0x54, 0x55, 0x41, 0x75, 0x41, 0x44, 0x4c, 0x0a, 0x09, 0x41, 0x4d, 0x73, 0x41, 0x77, 0x51, 0x43, 0x71, 0x41, 0x4a, 0x77, 0x42, 0x70, 0x67, 0x43, 0x34, 0x41, 0x47, 0x59, 0x41, 0x41, 0x41, 0x42, 0x78, 0x41, 0x4d, 0x73, 0x41, 0x6f, 0x41, 0x4b, 0x79, 0x41, 0x49, 0x55, 0x41, 0x64, 0x51, 0x43, 0x34, 0x41, 0x4d, 0x4d, 0x42, 0x79, 0x77, 0x47, 0x4a, 0x41, 0x69, 0x30, 0x41, 0x79, 0x77, 0x43, 0x6d, 0x41, 0x50, 0x41, 0x41, 0x30, 0x77, 0x43, 0x71, 0x41, 0x49, 0x63, 0x41, 0x79, 0x77, 0x4f, 0x71, 0x0a, 0x09, 0x42, 0x41, 0x41, 0x42, 0x53, 0x67, 0x41, 0x7a, 0x41, 0x4d, 0x73, 0x41, 0x41, 0x41, 0x44, 0x5a, 0x42, 0x51, 0x49, 0x41, 0x39, 0x41, 0x46, 0x55, 0x41, 0x4c, 0x51, 0x41, 0x6e, 0x41, 0x45, 0x35, 0x41, 0x52, 0x51, 0x42, 0x4f, 0x51, 0x63, 0x47, 0x42, 0x41, 0x41, 0x45, 0x54, 0x67, 0x53, 0x30, 0x42, 0x46, 0x49, 0x45, 0x75, 0x41, 0x54, 0x6e, 0x42, 0x4d, 0x30, 0x41, 0x4e, 0x77, 0x52, 0x7a, 0x42, 0x4d, 0x30, 0x45, 0x59, 0x41, 0x52, 0x7a, 0x0a, 0x09, 0x41, 0x54, 0x4d, 0x44, 0x6f, 0x67, 0x56, 0x57, 0x42, 0x61, 0x59, 0x46, 0x56, 0x67, 0x55, 0x35, 0x41, 0x38, 0x55, 0x43, 0x45, 0x67, 0x44, 0x4a, 0x41, 0x42, 0x38, 0x41, 0x75, 0x41, 0x48, 0x66, 0x41, 0x48, 0x4d, 0x41, 0x75, 0x67, 0x50, 0x70, 0x41, 0x7a, 0x4d, 0x44, 0x76, 0x41, 0x52, 0x45, 0x42, 0x41, 0x34, 0x41, 0x33, 0x77, 0x50, 0x4e, 0x41, 0x36, 0x6f, 0x41, 0x35, 0x51, 0x4f, 0x71, 0x42, 0x41, 0x51, 0x41, 0x41, 0x41, 0x44, 0x4c, 0x0a, 0x09, 0x41, 0x49, 0x38, 0x41, 0x70, 0x41, 0x42, 0x37, 0x41, 0x4c, 0x67, 0x41, 0x46, 0x41, 0x46, 0x76, 0x41, 0x48, 0x38, 0x43, 0x65, 0x77, 0x4a, 0x53, 0x41, 0x49, 0x38, 0x41, 0x78, 0x77, 0x58, 0x4e, 0x41, 0x4a, 0x6f, 0x41, 0x6d, 0x67, 0x42, 0x76, 0x41, 0x4d, 0x73, 0x41, 0x7a, 0x51, 0x47, 0x65, 0x41, 0x64, 0x4d, 0x41, 0x38, 0x41, 0x43, 0x36, 0x41, 0x59, 0x4d, 0x41, 0x31, 0x51, 0x43, 0x59, 0x41, 0x77, 0x51, 0x43, 0x53, 0x41, 0x43, 0x65, 0x0a, 0x09, 0x41, 0x64, 0x55, 0x41, 0x77, 0x51, 0x44, 0x4c, 0x41, 0x50, 0x59, 0x41, 0x67, 0x77, 0x4e, 0x55, 0x41, 0x6e, 0x38, 0x41, 0x41, 0x41, 0x4d, 0x7a, 0x41, 0x6d, 0x59, 0x41, 0x30, 0x77, 0x44, 0x48, 0x41, 0x4b, 0x51, 0x41, 0x7a, 0x51, 0x43, 0x50, 0x41, 0x4a, 0x6f, 0x41, 0x63, 0x77, 0x51, 0x41, 0x42, 0x64, 0x55, 0x42, 0x43, 0x67, 0x44, 0x2b, 0x41, 0x69, 0x73, 0x41, 0x70, 0x41, 0x43, 0x30, 0x41, 0x4a, 0x77, 0x41, 0x41, 0x41, 0x42, 0x69, 0x0a, 0x09, 0x41, 0x4a, 0x77, 0x41, 0x41, 0x41, 0x41, 0x64, 0x41, 0x79, 0x30, 0x46, 0x31, 0x51, 0x58, 0x56, 0x42, 0x64, 0x55, 0x46, 0x38, 0x41, 0x42, 0x2f, 0x41, 0x48, 0x73, 0x41, 0x56, 0x41, 0x43, 0x6b, 0x42, 0x72, 0x67, 0x47, 0x46, 0x41, 0x63, 0x6a, 0x41, 0x64, 0x4d, 0x41, 0x75, 0x41, 0x44, 0x4c, 0x41, 0x4b, 0x59, 0x42, 0x77, 0x77, 0x48, 0x73, 0x42, 0x70, 0x4d, 0x41, 0x6f, 0x41, 0x44, 0x54, 0x41, 0x31, 0x77, 0x44, 0x63, 0x51, 0x50, 0x62, 0x0a, 0x09, 0x41, 0x59, 0x55, 0x45, 0x49, 0x77, 0x53, 0x6f, 0x42, 0x45, 0x67, 0x41, 0x6a, 0x77, 0x45, 0x35, 0x41, 0x52, 0x51, 0x42, 0x4f, 0x51, 0x4e, 0x67, 0x41, 0x49, 0x38, 0x46, 0x31, 0x51, 0x47, 0x61, 0x42, 0x68, 0x51, 0x48, 0x49, 0x77, 0x5a, 0x6d, 0x41, 0x58, 0x6b, 0x45, 0x59, 0x41, 0x52, 0x67, 0x42, 0x47, 0x41, 0x45, 0x65, 0x77, 0x43, 0x63, 0x41, 0x41, 0x41, 0x43, 0x64, 0x77, 0x52, 0x67, 0x41, 0x61, 0x6f, 0x41, 0x36, 0x51, 0x52, 0x67, 0x0a, 0x09, 0x42, 0x32, 0x49, 0x41, 0x65, 0x77, 0x44, 0x46, 0x41, 0x48, 0x38, 0x43, 0x65, 0x77, 0x41, 0x41, 0x41, 0x4c, 0x51, 0x43, 0x55, 0x67, 0x58, 0x4e, 0x41, 0x47, 0x59, 0x41, 0x76, 0x41, 0x42, 0x6d, 0x41, 0x48, 0x63, 0x47, 0x45, 0x41, 0x44, 0x4e, 0x41, 0x54, 0x73, 0x42, 0x68, 0x51, 0x4f, 0x4a, 0x41, 0x49, 0x38, 0x41, 0x65, 0x77, 0x41, 0x41, 0x41, 0x42, 0x30, 0x41, 0x7a, 0x51, 0x64, 0x4b, 0x42, 0x43, 0x38, 0x41, 0x6e, 0x41, 0x43, 0x63, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x48, 0x66, 0x51, 0x42, 0x76, 0x41, 0x41, 0x41, 0x41, 0x62, 0x77, 0x4d, 0x31, 0x41, 0x47, 0x6f, 0x41, 0x62, 0x77, 0x42, 0x37, 0x41, 0x4b, 0x34, 0x41, 0x73, 0x67, 0x41, 0x74, 0x41, 0x35, 0x59, 0x41, 0x6a, 0x77, 0x4a, 0x37, 0x41, 0x50, 0x59, 0x41, 0x67, 0x77, 0x4e, 0x55, 0x42, 0x6a, 0x63, 0x46, 0x39, 0x67, 0x43, 0x50, 0x41, 0x4a, 0x77, 0x45, 0x34, 0x51, 0x4a, 0x6d, 0x41, 0x49, 0x38, 0x42, 0x6a, 0x51, 0x4c, 0x32, 0x0a, 0x09, 0x41, 0x4d, 0x30, 0x44, 0x52, 0x41, 0x41, 0x70, 0x41, 0x47, 0x59, 0x45, 0x37, 0x67, 0x42, 0x7a, 0x41, 0x41, 0x41, 0x55, 0x41, 0x4c, 0x67, 0x43, 0x67, 0x45, 0x44, 0x2f, 0x2b, 0x2f, 0x34, 0x44, 0x2b, 0x68, 0x51, 0x44, 0x2b, 0x53, 0x55, 0x44, 0x2b, 0x44, 0x49, 0x44, 0x39, 0x35, 0x59, 0x44, 0x39, 0x67, 0x34, 0x44, 0x39, 0x66, 0x34, 0x44, 0x39, 0x50, 0x34, 0x44, 0x38, 0x79, 0x55, 0x44, 0x38, 0x67, 0x34, 0x44, 0x38, 0x5a, 0x59, 0x44, 0x0a, 0x09, 0x38, 0x43, 0x55, 0x44, 0x37, 0x34, 0x70, 0x42, 0x42, 0x65, 0x2f, 0x2b, 0x41, 0x2b, 0x36, 0x57, 0x41, 0x2b, 0x32, 0x57, 0x41, 0x2b, 0x7a, 0x36, 0x41, 0x2b, 0x76, 0x36, 0x41, 0x2b, 0x72, 0x2b, 0x41, 0x2b, 0x6b, 0x36, 0x41, 0x2b, 0x68, 0x43, 0x41, 0x2b, 0x66, 0x2b, 0x41, 0x2b, 0x59, 0x79, 0x41, 0x2b, 0x58, 0x6b, 0x55, 0x77, 0x58, 0x6c, 0x6c, 0x67, 0x50, 0x6b, 0x69, 0x6b, 0x45, 0x46, 0x35, 0x46, 0x4d, 0x44, 0x34, 0x2b, 0x49, 0x76, 0x0a, 0x09, 0x42, 0x65, 0x50, 0x36, 0x41, 0x2b, 0x49, 0x76, 0x41, 0x2b, 0x48, 0x2b, 0x41, 0x2b, 0x44, 0x2b, 0x41, 0x39, 0x38, 0x79, 0x41, 0x39, 0x34, 0x55, 0x41, 0x39, 0x32, 0x57, 0x41, 0x39, 0x7a, 0x2b, 0x41, 0x39, 0x73, 0x53, 0x41, 0x39, 0x70, 0x39, 0x41, 0x39, 0x6d, 0x37, 0x41, 0x39, 0x6a, 0x2b, 0x41, 0x39, 0x61, 0x4b, 0x51, 0x51, 0x58, 0x57, 0x66, 0x51, 0x50, 0x56, 0x31, 0x45, 0x63, 0x46, 0x31, 0x58, 0x30, 0x44, 0x31, 0x45, 0x63, 0x44, 0x0a, 0x09, 0x30, 0x39, 0x49, 0x62, 0x42, 0x64, 0x50, 0x2b, 0x41, 0x39, 0x49, 0x62, 0x41, 0x39, 0x48, 0x2b, 0x41, 0x39, 0x44, 0x2b, 0x41, 0x38, 0x2f, 0x2b, 0x41, 0x38, 0x37, 0x2b, 0x41, 0x38, 0x32, 0x57, 0x41, 0x38, 0x7a, 0x4c, 0x48, 0x67, 0x58, 0x4d, 0x2f, 0x67, 0x50, 0x4c, 0x48, 0x67, 0x50, 0x4b, 0x4d, 0x67, 0x50, 0x4a, 0x2f, 0x67, 0x50, 0x47, 0x68, 0x52, 0x45, 0x46, 0x78, 0x68, 0x77, 0x44, 0x78, 0x52, 0x59, 0x44, 0x78, 0x50, 0x34, 0x44, 0x0a, 0x09, 0x77, 0x2f, 0x34, 0x44, 0x77, 0x76, 0x34, 0x44, 0x77, 0x66, 0x34, 0x44, 0x77, 0x50, 0x34, 0x44, 0x76, 0x2f, 0x34, 0x44, 0x76, 0x76, 0x34, 0x44, 0x76, 0x66, 0x34, 0x44, 0x76, 0x50, 0x34, 0x44, 0x75, 0x2f, 0x34, 0x44, 0x75, 0x68, 0x45, 0x44, 0x75, 0x59, 0x59, 0x6c, 0x42, 0x62, 0x6e, 0x2b, 0x41, 0x37, 0x69, 0x33, 0x75, 0x77, 0x57, 0x34, 0x2f, 0x67, 0x4f, 0x33, 0x74, 0x6c, 0x30, 0x46, 0x74, 0x37, 0x73, 0x44, 0x74, 0x34, 0x41, 0x45, 0x0a, 0x09, 0x74, 0x72, 0x55, 0x6c, 0x42, 0x62, 0x5a, 0x64, 0x51, 0x50, 0x38, 0x44, 0x74, 0x6b, 0x41, 0x45, 0x74, 0x53, 0x55, 0x44, 0x74, 0x50, 0x34, 0x44, 0x73, 0x35, 0x59, 0x44, 0x73, 0x76, 0x34, 0x44, 0x73, 0x66, 0x34, 0x44, 0x73, 0x50, 0x34, 0x44, 0x72, 0x2f, 0x34, 0x44, 0x72, 0x6d, 0x51, 0x44, 0x72, 0x51, 0x34, 0x44, 0x72, 0x4b, 0x73, 0x6c, 0x42, 0x61, 0x78, 0x6b, 0x41, 0x36, 0x75, 0x71, 0x45, 0x67, 0x57, 0x72, 0x4a, 0x51, 0x4f, 0x71, 0x0a, 0x09, 0x45, 0x67, 0x4f, 0x70, 0x69, 0x6b, 0x45, 0x46, 0x71, 0x66, 0x6f, 0x44, 0x71, 0x50, 0x34, 0x44, 0x70, 0x2f, 0x34, 0x44, 0x70, 0x76, 0x34, 0x44, 0x70, 0x52, 0x49, 0x44, 0x70, 0x50, 0x34, 0x44, 0x6f, 0x36, 0x49, 0x4f, 0x42, 0x61, 0x4d, 0x79, 0x41, 0x36, 0x49, 0x4f, 0x41, 0x36, 0x46, 0x6b, 0x41, 0x36, 0x43, 0x4b, 0x51, 0x51, 0x57, 0x67, 0x6c, 0x67, 0x4f, 0x66, 0x2f, 0x67, 0x4f, 0x65, 0x6e, 0x51, 0x77, 0x46, 0x6e, 0x76, 0x34, 0x44, 0x0a, 0x09, 0x6e, 0x51, 0x77, 0x44, 0x6e, 0x4a, 0x73, 0x5a, 0x42, 0x5a, 0x78, 0x6b, 0x41, 0x35, 0x75, 0x61, 0x45, 0x41, 0x57, 0x62, 0x47, 0x51, 0x4f, 0x61, 0x45, 0x41, 0x4f, 0x5a, 0x43, 0x67, 0x4f, 0x59, 0x2f, 0x67, 0x4f, 0x58, 0x6c, 0x67, 0x30, 0x46, 0x6c, 0x2f, 0x34, 0x44, 0x6c, 0x67, 0x30, 0x44, 0x6c, 0x59, 0x70, 0x42, 0x42, 0x5a, 0x57, 0x57, 0x41, 0x35, 0x53, 0x54, 0x44, 0x67, 0x57, 0x55, 0x4b, 0x41, 0x4f, 0x54, 0x44, 0x67, 0x4f, 0x53, 0x0a, 0x09, 0x2b, 0x67, 0x4f, 0x52, 0x6b, 0x4c, 0x73, 0x46, 0x6b, 0x66, 0x34, 0x44, 0x6b, 0x49, 0x39, 0x64, 0x42, 0x5a, 0x43, 0x37, 0x41, 0x35, 0x43, 0x41, 0x42, 0x49, 0x2b, 0x4f, 0x4a, 0x51, 0x57, 0x50, 0x58, 0x51, 0x4f, 0x50, 0x51, 0x41, 0x53, 0x4f, 0x4a, 0x51, 0x4f, 0x4e, 0x2f, 0x67, 0x4f, 0x4d, 0x69, 0x79, 0x34, 0x46, 0x6a, 0x50, 0x34, 0x44, 0x69, 0x79, 0x34, 0x44, 0x69, 0x6f, 0x59, 0x6c, 0x42, 0x59, 0x70, 0x42, 0x41, 0x34, 0x6d, 0x49, 0x0a, 0x09, 0x43, 0x77, 0x57, 0x4a, 0x46, 0x41, 0x4f, 0x49, 0x43, 0x77, 0x4f, 0x48, 0x68, 0x69, 0x55, 0x46, 0x68, 0x32, 0x51, 0x44, 0x68, 0x6f, 0x55, 0x52, 0x42, 0x59, 0x59, 0x6c, 0x41, 0x34, 0x55, 0x52, 0x41, 0x34, 0x54, 0x2b, 0x41, 0x34, 0x4f, 0x43, 0x45, 0x51, 0x57, 0x44, 0x2f, 0x67, 0x4f, 0x43, 0x45, 0x51, 0x4f, 0x42, 0x2f, 0x67, 0x4f, 0x41, 0x2f, 0x67, 0x4e, 0x2f, 0x2f, 0x67, 0x4e, 0x41, 0x2f, 0x33, 0x35, 0x39, 0x66, 0x51, 0x56, 0x2b, 0x0a, 0x09, 0x2f, 0x67, 0x4e, 0x39, 0x66, 0x51, 0x4e, 0x38, 0x5a, 0x41, 0x4e, 0x37, 0x56, 0x42, 0x55, 0x46, 0x65, 0x79, 0x55, 0x44, 0x65, 0x76, 0x34, 0x44, 0x65, 0x66, 0x34, 0x44, 0x65, 0x41, 0x34, 0x44, 0x64, 0x77, 0x77, 0x44, 0x64, 0x67, 0x6f, 0x44, 0x64, 0x66, 0x34, 0x44, 0x64, 0x50, 0x6f, 0x44, 0x63, 0x2f, 0x6f, 0x44, 0x63, 0x76, 0x6f, 0x44, 0x63, 0x66, 0x6f, 0x44, 0x63, 0x50, 0x34, 0x44, 0x62, 0x2f, 0x34, 0x44, 0x62, 0x76, 0x34, 0x44, 0x0a, 0x09, 0x62, 0x43, 0x45, 0x44, 0x61, 0x2f, 0x34, 0x44, 0x61, 0x68, 0x46, 0x43, 0x42, 0x57, 0x70, 0x54, 0x41, 0x32, 0x6e, 0x2b, 0x41, 0x32, 0x68, 0x39, 0x41, 0x32, 0x63, 0x52, 0x51, 0x67, 0x56, 0x6d, 0x2f, 0x67, 0x4e, 0x6c, 0x2f, 0x67, 0x4e, 0x6b, 0x2f, 0x67, 0x4e, 0x6a, 0x2f, 0x67, 0x4e, 0x69, 0x2f, 0x67, 0x4e, 0x68, 0x4f, 0x67, 0x4e, 0x67, 0x2b, 0x67, 0x4e, 0x65, 0x44, 0x41, 0x4e, 0x64, 0x2f, 0x67, 0x4e, 0x62, 0x2f, 0x67, 0x4e, 0x61, 0x0a, 0x09, 0x2f, 0x67, 0x4e, 0x5a, 0x57, 0x41, 0x6f, 0x46, 0x57, 0x66, 0x6f, 0x44, 0x57, 0x41, 0x6f, 0x44, 0x56, 0x78, 0x59, 0x5a, 0x42, 0x56, 0x63, 0x79, 0x41, 0x31, 0x62, 0x2b, 0x41, 0x31, 0x56, 0x55, 0x46, 0x51, 0x56, 0x56, 0x51, 0x67, 0x4e, 0x55, 0x46, 0x51, 0x4e, 0x54, 0x41, 0x52, 0x41, 0x46, 0x55, 0x78, 0x67, 0x44, 0x55, 0x68, 0x51, 0x44, 0x55, 0x55, 0x6f, 0x54, 0x42, 0x56, 0x48, 0x2b, 0x41, 0x31, 0x41, 0x4c, 0x41, 0x30, 0x2f, 0x2b, 0x0a, 0x09, 0x41, 0x30, 0x35, 0x4e, 0x45, 0x41, 0x56, 0x4f, 0x2f, 0x67, 0x4e, 0x4e, 0x45, 0x41, 0x4e, 0x4d, 0x2f, 0x67, 0x4e, 0x4c, 0x53, 0x68, 0x4d, 0x46, 0x53, 0x2f, 0x34, 0x44, 0x53, 0x6b, 0x6b, 0x51, 0x42, 0x55, 0x6f, 0x54, 0x41, 0x30, 0x6b, 0x64, 0x44, 0x51, 0x56, 0x4a, 0x45, 0x41, 0x4e, 0x49, 0x44, 0x51, 0x4e, 0x48, 0x2f, 0x67, 0x4e, 0x47, 0x6c, 0x67, 0x4e, 0x46, 0x6c, 0x67, 0x4e, 0x45, 0x2f, 0x67, 0x4e, 0x44, 0x41, 0x69, 0x30, 0x46, 0x0a, 0x09, 0x51, 0x2f, 0x6f, 0x44, 0x51, 0x72, 0x73, 0x44, 0x51, 0x55, 0x73, 0x44, 0x51, 0x50, 0x34, 0x44, 0x50, 0x2f, 0x34, 0x44, 0x50, 0x6a, 0x30, 0x53, 0x42, 0x54, 0x34, 0x55, 0x41, 0x7a, 0x30, 0x38, 0x44, 0x77, 0x55, 0x39, 0x45, 0x67, 0x4d, 0x38, 0x4f, 0x77, 0x30, 0x46, 0x50, 0x45, 0x44, 0x2f, 0x44, 0x77, 0x4d, 0x37, 0x44, 0x51, 0x4d, 0x36, 0x2f, 0x67, 0x4d, 0x35, 0x2f, 0x67, 0x4d, 0x34, 0x4e, 0x78, 0x51, 0x46, 0x4f, 0x50, 0x6f, 0x44, 0x0a, 0x09, 0x4e, 0x7a, 0x59, 0x51, 0x42, 0x54, 0x63, 0x55, 0x41, 0x7a, 0x59, 0x31, 0x43, 0x77, 0x55, 0x32, 0x45, 0x41, 0x4d, 0x31, 0x43, 0x77, 0x4d, 0x30, 0x48, 0x67, 0x4d, 0x7a, 0x44, 0x51, 0x4d, 0x79, 0x4d, 0x51, 0x73, 0x46, 0x4d, 0x76, 0x34, 0x44, 0x4d, 0x51, 0x73, 0x44, 0x4d, 0x43, 0x38, 0x4c, 0x42, 0x54, 0x41, 0x4e, 0x41, 0x79, 0x38, 0x4c, 0x41, 0x79, 0x34, 0x74, 0x43, 0x51, 0x55, 0x75, 0x45, 0x41, 0x4d, 0x74, 0x43, 0x51, 0x4d, 0x73, 0x0a, 0x09, 0x4d, 0x67, 0x4d, 0x72, 0x4b, 0x69, 0x55, 0x46, 0x4b, 0x32, 0x51, 0x44, 0x4b, 0x69, 0x6b, 0x53, 0x42, 0x53, 0x6f, 0x6c, 0x41, 0x79, 0x6b, 0x53, 0x41, 0x79, 0x67, 0x6e, 0x4a, 0x51, 0x55, 0x6f, 0x51, 0x51, 0x4d, 0x6e, 0x4a, 0x51, 0x4d, 0x6d, 0x4a, 0x51, 0x73, 0x46, 0x4a, 0x67, 0x38, 0x44, 0x4a, 0x51, 0x73, 0x44, 0x4a, 0x50, 0x34, 0x44, 0x49, 0x2f, 0x34, 0x44, 0x49, 0x67, 0x38, 0x44, 0x49, 0x51, 0x45, 0x51, 0x42, 0x53, 0x45, 0x53, 0x0a, 0x09, 0x41, 0x79, 0x42, 0x6b, 0x41, 0x78, 0x2f, 0x36, 0x41, 0x78, 0x34, 0x64, 0x44, 0x51, 0x55, 0x65, 0x5a, 0x41, 0x4d, 0x64, 0x44, 0x51, 0x4d, 0x63, 0x45, 0x55, 0x49, 0x46, 0x48, 0x50, 0x34, 0x44, 0x47, 0x2f, 0x6f, 0x44, 0x47, 0x6b, 0x49, 0x44, 0x47, 0x52, 0x46, 0x43, 0x42, 0x52, 0x6e, 0x2b, 0x41, 0x78, 0x68, 0x6b, 0x41, 0x78, 0x63, 0x57, 0x47, 0x51, 0x55, 0x58, 0x2f, 0x67, 0x4d, 0x57, 0x41, 0x52, 0x41, 0x46, 0x46, 0x68, 0x6b, 0x44, 0x0a, 0x09, 0x46, 0x66, 0x34, 0x44, 0x46, 0x50, 0x34, 0x44, 0x45, 0x2f, 0x34, 0x44, 0x45, 0x68, 0x46, 0x43, 0x42, 0x52, 0x4c, 0x2b, 0x41, 0x78, 0x45, 0x43, 0x4c, 0x51, 0x55, 0x52, 0x51, 0x67, 0x4d, 0x51, 0x66, 0x51, 0x4d, 0x50, 0x5a, 0x41, 0x4d, 0x4f, 0x2f, 0x67, 0x4d, 0x4e, 0x44, 0x42, 0x59, 0x46, 0x44, 0x66, 0x34, 0x44, 0x44, 0x41, 0x45, 0x51, 0x42, 0x51, 0x77, 0x57, 0x41, 0x77, 0x76, 0x2b, 0x41, 0x77, 0x6f, 0x51, 0x41, 0x77, 0x6e, 0x2b, 0x0a, 0x09, 0x41, 0x77, 0x67, 0x43, 0x4c, 0x51, 0x55, 0x49, 0x2f, 0x67, 0x4d, 0x48, 0x46, 0x41, 0x4d, 0x47, 0x5a, 0x41, 0x4d, 0x45, 0x41, 0x52, 0x41, 0x46, 0x42, 0x50, 0x34, 0x44, 0x51, 0x42, 0x55, 0x44, 0x41, 0x69, 0x30, 0x46, 0x41, 0x2f, 0x34, 0x44, 0x41, 0x67, 0x45, 0x51, 0x42, 0x51, 0x49, 0x74, 0x41, 0x77, 0x45, 0x51, 0x41, 0x77, 0x44, 0x2b, 0x41, 0x77, 0x47, 0x34, 0x41, 0x57, 0x53, 0x46, 0x6a, 0x51, 0x45, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x0a, 0x09, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x0a, 0x09, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x0a, 0x09, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x41, 0x0a, 0x09, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x0a, 0x09, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x0a, 0x09, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x79, 0x73, 0x72, 0x4b, 0x78, 0x32, 0x32, 0x42, 0x67, 0x55, 0x45, 0x0a, 0x09, 0x41, 0x77, 0x49, 0x42, 0x41, 0x43, 0x77, 0x67, 0x45, 0x4c, 0x41, 0x43, 0x4a, 0x55, 0x6c, 0x6b, 0x73, 0x45, 0x42, 0x52, 0x57, 0x43, 0x44, 0x49, 0x57, 0x53, 0x45, 0x74, 0x4c, 0x4c, 0x41, 0x43, 0x4a, 0x55, 0x6c, 0x6b, 0x73, 0x45, 0x42, 0x52, 0x57, 0x43, 0x44, 0x49, 0x57, 0x53, 0x45, 0x74, 0x4c, 0x43, 0x41, 0x51, 0x42, 0x79, 0x43, 0x77, 0x41, 0x46, 0x43, 0x77, 0x44, 0x58, 0x6b, 0x67, 0x75, 0x50, 0x2f, 0x2f, 0x55, 0x46, 0x67, 0x45, 0x0a, 0x09, 0x47, 0x77, 0x56, 0x5a, 0x73, 0x41, 0x55, 0x63, 0x73, 0x41, 0x4d, 0x6c, 0x43, 0x4c, 0x41, 0x45, 0x4a, 0x53, 0x50, 0x68, 0x49, 0x4c, 0x41, 0x41, 0x55, 0x4c, 0x41, 0x4e, 0x65, 0x53, 0x43, 0x34, 0x2f, 0x2f, 0x39, 0x51, 0x57, 0x41, 0x51, 0x62, 0x42, 0x56, 0x6d, 0x77, 0x42, 0x52, 0x79, 0x77, 0x41, 0x79, 0x55, 0x49, 0x34, 0x53, 0x30, 0x73, 0x53, 0x31, 0x42, 0x59, 0x49, 0x4c, 0x44, 0x39, 0x52, 0x55, 0x52, 0x5a, 0x49, 0x53, 0x30, 0x73, 0x0a, 0x09, 0x73, 0x41, 0x49, 0x6c, 0x52, 0x57, 0x42, 0x45, 0x4c, 0x53, 0x78, 0x4c, 0x55, 0x31, 0x69, 0x77, 0x41, 0x69, 0x57, 0x77, 0x41, 0x69, 0x56, 0x46, 0x52, 0x46, 0x6b, 0x68, 0x49, 0x53, 0x30, 0x73, 0x52, 0x55, 0x51, 0x74, 0x41, 0x41, 0x41, 0x43, 0x41, 0x47, 0x62, 0x2b, 0x6c, 0x67, 0x52, 0x6d, 0x42, 0x61, 0x51, 0x41, 0x41, 0x77, 0x41, 0x48, 0x41, 0x42, 0x70, 0x41, 0x44, 0x41, 0x54, 0x37, 0x41, 0x41, 0x62, 0x37, 0x41, 0x51, 0x67, 0x46, 0x0a, 0x09, 0x66, 0x77, 0x49, 0x45, 0x41, 0x43, 0x2f, 0x45, 0x31, 0x4f, 0x77, 0x78, 0x41, 0x42, 0x44, 0x55, 0x37, 0x4e, 0x54, 0x73, 0x4d, 0x42, 0x4d, 0x52, 0x49, 0x52, 0x45, 0x6c, 0x49, 0x52, 0x45, 0x68, 0x5a, 0x67, 0x51, 0x41, 0x2f, 0x48, 0x4d, 0x44, 0x47, 0x2f, 0x7a, 0x6c, 0x2f, 0x70, 0x59, 0x48, 0x44, 0x76, 0x6a, 0x79, 0x63, 0x67, 0x59, 0x70, 0x41, 0x41, 0x49, 0x42, 0x4e, 0x51, 0x41, 0x41, 0x41, 0x67, 0x41, 0x46, 0x31, 0x51, 0x41, 0x44, 0x0a, 0x09, 0x41, 0x41, 0x6b, 0x41, 0x51, 0x45, 0x41, 0x50, 0x42, 0x77, 0x43, 0x44, 0x42, 0x49, 0x45, 0x43, 0x43, 0x41, 0x63, 0x46, 0x41, 0x51, 0x4d, 0x45, 0x41, 0x41, 0x41, 0x4b, 0x45, 0x50, 0x77, 0x38, 0x37, 0x44, 0x49, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x2b, 0x54, 0x38, 0x7a, 0x44, 0x41, 0x42, 0x53, 0x37, 0x41, 0x4c, 0x56, 0x46, 0x69, 0x39, 0x41, 0x41, 0x6f, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x41, 0x6f, 0x41, 0x43, 0x76, 0x2f, 0x41, 0x0a, 0x09, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6d, 0x32, 0x41, 0x41, 0x73, 0x67, 0x43, 0x31, 0x41, 0x4c, 0x41, 0x31, 0x30, 0x6c, 0x4d, 0x78, 0x55, 0x6a, 0x45, 0x54, 0x4d, 0x52, 0x41, 0x79, 0x4d, 0x44, 0x41, 0x54, 0x58, 0x4c, 0x79, 0x38, 0x73, 0x55, 0x6f, 0x68, 0x58, 0x2b, 0x2f, 0x67, 0x58, 0x56, 0x2f, 0x58, 0x48, 0x2b, 0x6d, 0x77, 0x46, 0x6c, 0x41, 0x41, 0x49, 0x41, 0x78, 0x51, 0x4f, 0x71, 0x41, 0x75, 0x6b, 0x46, 0x31, 0x51, 0x41, 0x44, 0x0a, 0x09, 0x41, 0x41, 0x63, 0x41, 0x54, 0x55, 0x41, 0x50, 0x42, 0x51, 0x47, 0x45, 0x42, 0x41, 0x43, 0x42, 0x43, 0x41, 0x51, 0x46, 0x42, 0x67, 0x41, 0x46, 0x41, 0x67, 0x51, 0x49, 0x45, 0x50, 0x7a, 0x38, 0x33, 0x4f, 0x77, 0x78, 0x41, 0x42, 0x44, 0x30, 0x50, 0x4f, 0x77, 0x79, 0x4d, 0x41, 0x46, 0x4c, 0x73, 0x42, 0x4a, 0x55, 0x53, 0x37, 0x41, 0x54, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x49, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x49, 0x0a, 0x09, 0x41, 0x41, 0x6a, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x51, 0x41, 0x38, 0x77, 0x43, 0x55, 0x41, 0x4a, 0x55, 0x41, 0x6c, 0x67, 0x43, 0x58, 0x41, 0x4a, 0x6f, 0x41, 0x6d, 0x2f, 0x43, 0x51, 0x64, 0x64, 0x41, 0x52, 0x45, 0x6a, 0x45, 0x53, 0x45, 0x52, 0x49, 0x78, 0x45, 0x42, 0x62, 0x36, 0x6f, 0x43, 0x4a, 0x4b, 0x6f, 0x46, 0x31, 0x66, 0x33, 0x56, 0x41, 0x69, 0x76, 0x39, 0x31, 0x51, 0x49, 0x72, 0x41, 0x41, 0x41, 0x43, 0x0a, 0x09, 0x41, 0x4a, 0x34, 0x41, 0x41, 0x41, 0x59, 0x58, 0x42, 0x62, 0x34, 0x41, 0x41, 0x77, 0x41, 0x66, 0x41, 0x47, 0x42, 0x41, 0x4d, 0x52, 0x73, 0x4c, 0x41, 0x49, 0x63, 0x48, 0x42, 0x42, 0x30, 0x4a, 0x42, 0x52, 0x6b, 0x4e, 0x41, 0x6f, 0x63, 0x58, 0x45, 0x77, 0x38, 0x56, 0x45, 0x52, 0x38, 0x65, 0x48, 0x42, 0x73, 0x61, 0x46, 0x78, 0x59, 0x56, 0x46, 0x42, 0x4d, 0x53, 0x45, 0x52, 0x41, 0x4f, 0x44, 0x51, 0x77, 0x4a, 0x43, 0x41, 0x63, 0x47, 0x0a, 0x09, 0x42, 0x51, 0x51, 0x44, 0x41, 0x67, 0x45, 0x41, 0x47, 0x67, 0x6f, 0x59, 0x42, 0x69, 0x41, 0x51, 0x2f, 0x4d, 0x77, 0x58, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x7a, 0x7a, 0x55, 0x50, 0x44, 0x7a, 0x38, 0x50, 0x44, 0x7a, 0x55, 0x50, 0x44, 0x7a, 0x45, 0x4d, 0x75, 0x77, 0x79, 0x4d, 0x6a, 0x42, 0x41, 0x45, 0x51, 0x73, 0x42, 0x43, 0x77, 0x49, 0x4c, 0x44, 0x41, 0x73, 0x4e, 0x46, 0x41, 0x51, 0x61, 0x45, 0x52, 0x6f, 0x53, 0x46, 0x42, 0x38, 0x49, 0x0a, 0x09, 0x41, 0x56, 0x30, 0x42, 0x49, 0x51, 0x4d, 0x68, 0x43, 0x77, 0x45, 0x68, 0x45, 0x7a, 0x4d, 0x44, 0x49, 0x52, 0x55, 0x68, 0x41, 0x79, 0x45, 0x56, 0x49, 0x51, 0x4d, 0x6a, 0x45, 0x79, 0x45, 0x44, 0x49, 0x78, 0x4d, 0x68, 0x4e, 0x53, 0x45, 0x54, 0x49, 0x54, 0x55, 0x68, 0x45, 0x77, 0x51, 0x58, 0x2f, 0x74, 0x31, 0x55, 0x41, 0x53, 0x56, 0x45, 0x61, 0x41, 0x45, 0x6b, 0x61, 0x61, 0x42, 0x6e, 0x41, 0x54, 0x6a, 0x2b, 0x6f, 0x56, 0x49, 0x42, 0x0a, 0x09, 0x50, 0x76, 0x36, 0x62, 0x61, 0x4b, 0x42, 0x6e, 0x2f, 0x74, 0x74, 0x6e, 0x6f, 0x57, 0x6a, 0x2b, 0x78, 0x51, 0x46, 0x67, 0x56, 0x50, 0x36, 0x2b, 0x41, 0x57, 0x6c, 0x6d, 0x41, 0x34, 0x58, 0x2b, 0x73, 0x67, 0x4f, 0x48, 0x2f, 0x6d, 0x45, 0x42, 0x6e, 0x2f, 0x35, 0x68, 0x6d, 0x76, 0x36, 0x79, 0x6d, 0x66, 0x35, 0x69, 0x41, 0x5a, 0x37, 0x2b, 0x59, 0x67, 0x47, 0x65, 0x6d, 0x51, 0x46, 0x4f, 0x6d, 0x67, 0x47, 0x66, 0x41, 0x41, 0x41, 0x44, 0x0a, 0x09, 0x41, 0x4b, 0x72, 0x2b, 0x30, 0x77, 0x52, 0x74, 0x42, 0x68, 0x51, 0x41, 0x49, 0x51, 0x41, 0x6f, 0x41, 0x43, 0x38, 0x41, 0x31, 0x55, 0x42, 0x56, 0x49, 0x67, 0x49, 0x4b, 0x43, 0x77, 0x6f, 0x6e, 0x41, 0x53, 0x59, 0x6f, 0x41, 0x67, 0x73, 0x4c, 0x43, 0x68, 0x30, 0x42, 0x48, 0x68, 0x77, 0x43, 0x4c, 0x79, 0x6b, 0x76, 0x47, 0x77, 0x49, 0x70, 0x4b, 0x53, 0x39, 0x43, 0x45, 0x78, 0x45, 0x51, 0x49, 0x67, 0x6f, 0x62, 0x4b, 0x51, 0x51, 0x58, 0x0a, 0x09, 0x42, 0x67, 0x6b, 0x71, 0x49, 0x51, 0x55, 0x43, 0x46, 0x34, 0x59, 0x57, 0x42, 0x6f, 0x59, 0x46, 0x45, 0x53, 0x4d, 0x61, 0x69, 0x68, 0x61, 0x4a, 0x45, 0x41, 0x41, 0x71, 0x69, 0x67, 0x57, 0x4a, 0x41, 0x69, 0x30, 0x49, 0x46, 0x67, 0x6f, 0x65, 0x42, 0x79, 0x6b, 0x61, 0x45, 0x67, 0x4d, 0x41, 0x43, 0x53, 0x49, 0x51, 0x43, 0x51, 0x4d, 0x42, 0x42, 0x79, 0x59, 0x49, 0x44, 0x51, 0x55, 0x47, 0x4d, 0x42, 0x44, 0x38, 0x50, 0x4f, 0x7a, 0x30, 0x0a, 0x09, 0x46, 0x7a, 0x7a, 0x38, 0x46, 0x7a, 0x7a, 0x30, 0x35, 0x4f, 0x77, 0x78, 0x41, 0x43, 0x2f, 0x6b, 0x37, 0x4d, 0x54, 0x55, 0x35, 0x4f, 0x77, 0x79, 0x78, 0x42, 0x44, 0x75, 0x45, 0x4f, 0x34, 0x52, 0x45, 0x6a, 0x6b, 0x52, 0x4f, 0x52, 0x45, 0x53, 0x46, 0x7a, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x45, 0x37, 0x51, 0x63, 0x51, 0x44, 0x75, 0x30, 0x52, 0x46, 0x7a, 0x6b, 0x48, 0x45, 0x41, 0x37, 0x74, 0x0a, 0x09, 0x45, 0x52, 0x63, 0x35, 0x42, 0x78, 0x41, 0x45, 0x37, 0x56, 0x6b, 0x69, 0x41, 0x55, 0x75, 0x77, 0x43, 0x56, 0x52, 0x59, 0x76, 0x51, 0x41, 0x77, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x77, 0x41, 0x44, 0x44, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x55, 0x75, 0x77, 0x44, 0x46, 0x52, 0x4c, 0x73, 0x42, 0x42, 0x55, 0x57, 0x30, 0x75, 0x77, 0x44, 0x31, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x4d, 0x50, 0x2f, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x4d, 0x41, 0x41, 0x77, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x45, 0x6a, 0x41, 0x79, 0x34, 0x42, 0x4a, 0x7a, 0x55, 0x65, 0x41, 0x52, 0x63, 0x52, 0x4c, 0x67, 0x45, 0x31, 0x4e, 0x44, 0x59, 0x33, 0x4e, 0x54, 0x4d, 0x56, 0x48, 0x67, 0x45, 0x58, 0x46, 0x53, 0x34, 0x42, 0x4a, 0x78, 0x45, 0x65, 0x41, 0x52, 0x55, 0x55, 0x42, 0x67, 0x63, 0x44, 0x45, 0x51, 0x34, 0x42, 0x46, 0x52, 0x51, 0x57, 0x0a, 0x09, 0x46, 0x78, 0x45, 0x2b, 0x41, 0x54, 0x55, 0x30, 0x4a, 0x67, 0x4b, 0x30, 0x5a, 0x41, 0x46, 0x70, 0x30, 0x6d, 0x70, 0x6d, 0x30, 0x57, 0x2f, 0x64, 0x79, 0x64, 0x72, 0x4d, 0x5a, 0x46, 0x32, 0x75, 0x55, 0x31, 0x4f, 0x76, 0x58, 0x4f, 0x50, 0x57, 0x34, 0x39, 0x5a, 0x6b, 0x64, 0x48, 0x70, 0x78, 0x34, 0x58, 0x2b, 0x42, 0x65, 0x2f, 0x37, 0x54, 0x41, 0x53, 0x30, 0x43, 0x4c, 0x53, 0x32, 0x30, 0x51, 0x45, 0x45, 0x42, 0x41, 0x63, 0x67, 0x6b, 0x0a, 0x09, 0x72, 0x4a, 0x61, 0x6a, 0x76, 0x41, 0x37, 0x72, 0x36, 0x41, 0x51, 0x66, 0x47, 0x36, 0x38, 0x71, 0x4c, 0x67, 0x54, 0x2b, 0x56, 0x53, 0x4f, 0x30, 0x6e, 0x4b, 0x6e, 0x44, 0x44, 0x77, 0x4d, 0x41, 0x41, 0x5a, 0x6f, 0x4e, 0x61, 0x6c, 0x68, 0x57, 0x59, 0x4e, 0x58, 0x2b, 0x54, 0x78, 0x46, 0x75, 0x57, 0x6c, 0x68, 0x6f, 0x41, 0x41, 0x41, 0x46, 0x41, 0x48, 0x48, 0x2f, 0x34, 0x77, 0x63, 0x70, 0x42, 0x66, 0x41, 0x41, 0x43, 0x77, 0x41, 0x58, 0x0a, 0x09, 0x41, 0x43, 0x4d, 0x41, 0x4a, 0x77, 0x41, 0x7a, 0x41, 0x4a, 0x56, 0x41, 0x4e, 0x69, 0x51, 0x50, 0x4a, 0x53, 0x59, 0x6c, 0x4a, 0x67, 0x38, 0x6e, 0x4a, 0x43, 0x64, 0x43, 0x41, 0x4a, 0x49, 0x4d, 0x48, 0x70, 0x49, 0x75, 0x6a, 0x52, 0x69, 0x53, 0x4a, 0x41, 0x61, 0x53, 0x44, 0x49, 0x30, 0x6d, 0x45, 0x6f, 0x77, 0x6f, 0x4a, 0x4a, 0x45, 0x30, 0x4a, 0x79, 0x45, 0x62, 0x4a, 0x51, 0x6b, 0x44, 0x44, 0x52, 0x55, 0x4f, 0x43, 0x51, 0x30, 0x50, 0x0a, 0x09, 0x49, 0x51, 0x30, 0x72, 0x44, 0x68, 0x73, 0x4e, 0x44, 0x7a, 0x45, 0x4c, 0x4e, 0x42, 0x44, 0x38, 0x78, 0x4f, 0x7a, 0x30, 0x37, 0x42, 0x44, 0x75, 0x39, 0x75, 0x34, 0x52, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x4f, 0x51, 0x79, 0x39, 0x44, 0x7a, 0x6b, 0x37, 0x42, 0x44, 0x75, 0x39, 0x75, 0x34, 0x51, 0x37, 0x6a, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x56, 0x6b, 0x69, 0x0a, 0x09, 0x41, 0x55, 0x75, 0x77, 0x43, 0x56, 0x52, 0x4c, 0x73, 0x41, 0x74, 0x55, 0x57, 0x30, 0x75, 0x77, 0x44, 0x46, 0x52, 0x62, 0x53, 0x37, 0x41, 0x55, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x41, 0x35, 0x55, 0x57, 0x30, 0x75, 0x77, 0x44, 0x56, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x4e, 0x41, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x4e, 0x41, 0x41, 0x30, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x45, 0x69, 0x42, 0x68, 0x55, 0x55, 0x0a, 0x09, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x69, 0x63, 0x79, 0x46, 0x68, 0x55, 0x55, 0x42, 0x69, 0x4d, 0x69, 0x4a, 0x6a, 0x55, 0x30, 0x4e, 0x67, 0x45, 0x69, 0x42, 0x68, 0x55, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x69, 0x55, 0x7a, 0x41, 0x53, 0x4d, 0x54, 0x4d, 0x68, 0x59, 0x56, 0x46, 0x41, 0x59, 0x6a, 0x49, 0x69, 0x59, 0x31, 0x4e, 0x44, 0x59, 0x46, 0x30, 0x56, 0x64, 0x6a, 0x59, 0x31, 0x64, 0x56, 0x0a, 0x09, 0x59, 0x32, 0x4e, 0x56, 0x6e, 0x72, 0x71, 0x37, 0x6e, 0x61, 0x43, 0x36, 0x75, 0x2f, 0x79, 0x58, 0x56, 0x6d, 0x4e, 0x69, 0x56, 0x31, 0x64, 0x6a, 0x5a, 0x41, 0x4d, 0x78, 0x6f, 0x50, 0x78, 0x61, 0x6f, 0x42, 0x2b, 0x65, 0x76, 0x4c, 0x75, 0x66, 0x6e, 0x37, 0x6d, 0x36, 0x41, 0x70, 0x47, 0x55, 0x68, 0x49, 0x4b, 0x56, 0x6c, 0x59, 0x4b, 0x44, 0x6c, 0x58, 0x2f, 0x63, 0x75, 0x37, 0x76, 0x62, 0x32, 0x37, 0x75, 0x38, 0x32, 0x77, 0x4a, 0x68, 0x0a, 0x09, 0x6c, 0x59, 0x4b, 0x45, 0x6c, 0x4a, 0x53, 0x45, 0x67, 0x5a, 0x5a, 0x2f, 0x2b, 0x66, 0x4d, 0x47, 0x44, 0x64, 0x75, 0x37, 0x76, 0x64, 0x72, 0x62, 0x76, 0x4c, 0x72, 0x63, 0x41, 0x41, 0x41, 0x43, 0x41, 0x49, 0x48, 0x2f, 0x34, 0x77, 0x58, 0x2b, 0x42, 0x66, 0x41, 0x41, 0x43, 0x51, 0x41, 0x77, 0x41, 0x63, 0x31, 0x41, 0x6c, 0x67, 0x30, 0x42, 0x44, 0x67, 0x79, 0x47, 0x45, 0x52, 0x49, 0x52, 0x43, 0x34, 0x59, 0x4b, 0x43, 0x78, 0x49, 0x53, 0x0a, 0x09, 0x45, 0x51, 0x6d, 0x47, 0x41, 0x41, 0x6b, 0x56, 0x46, 0x68, 0x55, 0x48, 0x41, 0x51, 0x59, 0x49, 0x68, 0x68, 0x59, 0x57, 0x46, 0x51, 0x49, 0x42, 0x41, 0x77, 0x47, 0x47, 0x48, 0x52, 0x34, 0x64, 0x41, 0x49, 0x59, 0x4a, 0x41, 0x42, 0x34, 0x65, 0x48, 0x53, 0x41, 0x66, 0x41, 0x69, 0x45, 0x65, 0x45, 0x51, 0x6f, 0x54, 0x43, 0x68, 0x63, 0x57, 0x46, 0x51, 0x4d, 0x59, 0x46, 0x42, 0x45, 0x54, 0x43, 0x67, 0x63, 0x49, 0x41, 0x67, 0x59, 0x4a, 0x0a, 0x09, 0x45, 0x52, 0x4d, 0x54, 0x43, 0x67, 0x49, 0x42, 0x41, 0x67, 0x4d, 0x41, 0x45, 0x51, 0x6f, 0x54, 0x43, 0x68, 0x63, 0x57, 0x41, 0x68, 0x67, 0x56, 0x45, 0x52, 0x4d, 0x4b, 0x46, 0x42, 0x45, 0x54, 0x45, 0x77, 0x70, 0x43, 0x45, 0x67, 0x73, 0x4a, 0x41, 0x77, 0x59, 0x41, 0x43, 0x68, 0x34, 0x44, 0x4b, 0x42, 0x55, 0x4f, 0x42, 0x69, 0x67, 0x6e, 0x42, 0x70, 0x55, 0x59, 0x4b, 0x35, 0x55, 0x6e, 0x6c, 0x43, 0x53, 0x52, 0x47, 0x49, 0x77, 0x4f, 0x0a, 0x09, 0x45, 0x77, 0x6f, 0x75, 0x43, 0x77, 0x34, 0x4a, 0x41, 0x43, 0x34, 0x53, 0x46, 0x53, 0x63, 0x4f, 0x48, 0x67, 0x4d, 0x75, 0x45, 0x69, 0x63, 0x68, 0x44, 0x68, 0x45, 0x50, 0x45, 0x79, 0x45, 0x44, 0x45, 0x68, 0x73, 0x51, 0x4d, 0x52, 0x44, 0x38, 0x37, 0x4d, 0x54, 0x55, 0x31, 0x4f, 0x77, 0x51, 0x78, 0x75, 0x34, 0x52, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x52, 0x4f, 0x54, 0x6b, 0x52, 0x4f, 0x52, 0x45, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x0a, 0x09, 0x78, 0x75, 0x54, 0x32, 0x35, 0x75, 0x34, 0x51, 0x37, 0x68, 0x44, 0x47, 0x45, 0x52, 0x49, 0x35, 0x45, 0x52, 0x63, 0x35, 0x45, 0x52, 0x63, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x42, 0x65, 0x30, 0x52, 0x46, 0x7a, 0x6b, 0x48, 0x45, 0x41, 0x58, 0x74, 0x45, 0x52, 0x63, 0x35, 0x42, 0x78, 0x41, 0x46, 0x37, 0x52, 0x45, 0x58, 0x4f, 0x51, 0x63, 0x46, 0x37, 0x52, 0x45, 0x58, 0x4f, 0x51, 0x63, 0x51, 0x0a, 0x09, 0x42, 0x65, 0x30, 0x52, 0x46, 0x7a, 0x6b, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x4f, 0x37, 0x52, 0x45, 0x58, 0x4f, 0x51, 0x63, 0x51, 0x44, 0x75, 0x30, 0x52, 0x46, 0x7a, 0x6b, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x44, 0x75, 0x30, 0x52, 0x46, 0x7a, 0x6c, 0x5a, 0x49, 0x72, 0x49, 0x50, 0x4d, 0x67, 0x45, 0x42, 0x58, 0x55, 0x43, 0x79, 0x42, 0x77, 0x73, 0x46, 0x49, 0x67, 0x6b, 0x70, 0x0a, 0x09, 0x48, 0x41, 0x41, 0x63, 0x41, 0x52, 0x38, 0x43, 0x46, 0x77, 0x73, 0x71, 0x41, 0x43, 0x6f, 0x42, 0x4a, 0x68, 0x49, 0x36, 0x41, 0x44, 0x51, 0x53, 0x52, 0x41, 0x74, 0x65, 0x41, 0x46, 0x6b, 0x42, 0x57, 0x67, 0x70, 0x56, 0x45, 0x6c, 0x6f, 0x61, 0x57, 0x68, 0x39, 0x5a, 0x4d, 0x47, 0x63, 0x65, 0x65, 0x77, 0x43, 0x62, 0x41, 0x4a, 0x6f, 0x42, 0x6d, 0x51, 0x4b, 0x58, 0x43, 0x4a, 0x55, 0x4c, 0x6b, 0x78, 0x57, 0x56, 0x46, 0x70, 0x55, 0x69, 0x0a, 0x09, 0x6d, 0x53, 0x30, 0x66, 0x43, 0x51, 0x73, 0x4a, 0x44, 0x41, 0x67, 0x52, 0x44, 0x43, 0x63, 0x4d, 0x4b, 0x42, 0x67, 0x43, 0x47, 0x77, 0x6b, 0x5a, 0x43, 0x78, 0x6b, 0x4d, 0x47, 0x52, 0x45, 0x63, 0x46, 0x42, 0x77, 0x56, 0x46, 0x68, 0x30, 0x66, 0x4d, 0x69, 0x63, 0x41, 0x4a, 0x77, 0x45, 0x70, 0x43, 0x53, 0x4d, 0x53, 0x4b, 0x68, 0x4d, 0x71, 0x46, 0x43, 0x67, 0x56, 0x4c, 0x7a, 0x49, 0x37, 0x43, 0x54, 0x51, 0x53, 0x4f, 0x52, 0x4d, 0x2f, 0x0a, 0x09, 0x4d, 0x6b, 0x6f, 0x4a, 0x54, 0x42, 0x52, 0x4c, 0x46, 0x55, 0x59, 0x5a, 0x54, 0x7a, 0x4a, 0x57, 0x41, 0x56, 0x6f, 0x4a, 0x57, 0x51, 0x78, 0x56, 0x45, 0x6c, 0x6b, 0x54, 0x58, 0x42, 0x39, 0x66, 0x4d, 0x6d, 0x6f, 0x4d, 0x61, 0x52, 0x46, 0x67, 0x4d, 0x6e, 0x55, 0x42, 0x65, 0x51, 0x78, 0x36, 0x45, 0x5a, 0x4d, 0x41, 0x6b, 0x77, 0x47, 0x58, 0x41, 0x70, 0x55, 0x46, 0x6e, 0x41, 0x65, 0x63, 0x43, 0x4a, 0x38, 0x49, 0x6d, 0x67, 0x6d, 0x62, 0x0a, 0x09, 0x43, 0x35, 0x6f, 0x4d, 0x6b, 0x44, 0x4b, 0x67, 0x4d, 0x72, 0x41, 0x79, 0x4f, 0x56, 0x30, 0x41, 0x58, 0x51, 0x45, 0x4f, 0x41, 0x52, 0x55, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x6a, 0x63, 0x4a, 0x41, 0x54, 0x34, 0x42, 0x4e, 0x7a, 0x4d, 0x47, 0x41, 0x67, 0x63, 0x42, 0x49, 0x79, 0x63, 0x4f, 0x41, 0x53, 0x4d, 0x69, 0x41, 0x44, 0x55, 0x30, 0x4e, 0x6a, 0x63, 0x75, 0x41, 0x54, 0x55, 0x30, 0x4e, 0x6a, 0x4d, 0x79, 0x46, 0x68, 0x63, 0x56, 0x0a, 0x09, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x59, 0x56, 0x46, 0x42, 0x59, 0x42, 0x38, 0x6c, 0x74, 0x56, 0x31, 0x4b, 0x42, 0x66, 0x70, 0x6b, 0x6e, 0x2b, 0x65, 0x77, 0x48, 0x38, 0x4f, 0x30, 0x49, 0x47, 0x75, 0x67, 0x78, 0x6f, 0x58, 0x51, 0x45, 0x58, 0x2f, 0x49, 0x39, 0x6f, 0x35, 0x49, 0x50, 0x78, 0x2f, 0x73, 0x36, 0x47, 0x68, 0x6a, 0x41, 0x79, 0x33, 0x72, 0x68, 0x54, 0x70, 0x56, 0x56, 0x58, 0x6e, 0x6b, 0x52, 0x70, 0x67, 0x7a, 0x73, 0x44, 0x0a, 0x09, 0x49, 0x31, 0x47, 0x68, 0x57, 0x4a, 0x4c, 0x43, 0x50, 0x30, 0x41, 0x43, 0x6a, 0x2f, 0x33, 0x34, 0x57, 0x63, 0x74, 0x79, 0x68, 0x50, 0x37, 0x2b, 0x66, 0x76, 0x37, 0x6a, 0x6b, 0x31, 0x6c, 0x58, 0x41, 0x52, 0x50, 0x58, 0x67, 0x4f, 0x46, 0x6a, 0x50, 0x33, 0x30, 0x38, 0x6f, 0x73, 0x55, 0x6b, 0x4a, 0x4c, 0x59, 0x76, 0x4d, 0x57, 0x39, 0x59, 0x4d, 0x32, 0x63, 0x41, 0x41, 0x51, 0x44, 0x46, 0x41, 0x36, 0x6f, 0x42, 0x62, 0x77, 0x58, 0x56, 0x0a, 0x09, 0x41, 0x41, 0x4d, 0x41, 0x51, 0x6b, 0x41, 0x4b, 0x41, 0x59, 0x51, 0x41, 0x67, 0x51, 0x51, 0x41, 0x42, 0x51, 0x49, 0x45, 0x42, 0x42, 0x44, 0x38, 0x37, 0x44, 0x45, 0x41, 0x45, 0x50, 0x54, 0x73, 0x4d, 0x41, 0x46, 0x4c, 0x73, 0x42, 0x4a, 0x55, 0x53, 0x37, 0x41, 0x54, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x45, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x45, 0x41, 0x41, 0x54, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x0a, 0x09, 0x51, 0x41, 0x31, 0x41, 0x42, 0x56, 0x41, 0x46, 0x59, 0x41, 0x56, 0x77, 0x42, 0x5a, 0x41, 0x46, 0x6f, 0x41, 0x55, 0x47, 0x58, 0x51, 0x45, 0x52, 0x49, 0x78, 0x45, 0x42, 0x62, 0x36, 0x6f, 0x46, 0x31, 0x66, 0x33, 0x56, 0x41, 0x69, 0x73, 0x41, 0x41, 0x41, 0x45, 0x41, 0x73, 0x50, 0x37, 0x79, 0x41, 0x6e, 0x73, 0x47, 0x45, 0x67, 0x41, 0x4e, 0x41, 0x45, 0x39, 0x41, 0x44, 0x77, 0x61, 0x59, 0x41, 0x4a, 0x63, 0x4f, 0x44, 0x51, 0x63, 0x41, 0x0a, 0x09, 0x41, 0x78, 0x49, 0x47, 0x41, 0x42, 0x4d, 0x4b, 0x44, 0x68, 0x44, 0x63, 0x35, 0x44, 0x4c, 0x73, 0x45, 0x54, 0x6b, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x2f, 0x4f, 0x77, 0x77, 0x41, 0x55, 0x75, 0x77, 0x45, 0x31, 0x52, 0x59, 0x76, 0x51, 0x41, 0x4f, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4f, 0x41, 0x41, 0x37, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x55, 0x75, 0x77, 0x44, 0x31, 0x52, 0x59, 0x76, 0x51, 0x41, 0x4f, 0x0a, 0x09, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4f, 0x41, 0x41, 0x34, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x51, 0x59, 0x43, 0x46, 0x52, 0x51, 0x53, 0x46, 0x79, 0x4d, 0x6d, 0x41, 0x6a, 0x55, 0x30, 0x45, 0x6a, 0x63, 0x43, 0x65, 0x34, 0x61, 0x43, 0x67, 0x34, 0x57, 0x67, 0x6c, 0x70, 0x57, 0x55, 0x6c, 0x77, 0x59, 0x53, 0x35, 0x76, 0x34, 0x2b, 0x35, 0x2b, 0x66, 0x2b, 0x4f, 0x2b, 0x58, 0x72, 0x41, 0x63, 0x62, 0x67, 0x0a, 0x09, 0x33, 0x77, 0x48, 0x45, 0x37, 0x41, 0x41, 0x42, 0x41, 0x4b, 0x54, 0x2b, 0x38, 0x67, 0x4a, 0x76, 0x42, 0x68, 0x49, 0x41, 0x44, 0x51, 0x41, 0x66, 0x51, 0x41, 0x38, 0x48, 0x6d, 0x41, 0x43, 0x58, 0x44, 0x67, 0x63, 0x42, 0x41, 0x41, 0x73, 0x53, 0x42, 0x42, 0x4d, 0x49, 0x41, 0x41, 0x34, 0x51, 0x33, 0x44, 0x7a, 0x30, 0x37, 0x42, 0x45, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x42, 0x4d, 0x7a, 0x46, 0x68, 0x49, 0x56, 0x0a, 0x09, 0x46, 0x41, 0x49, 0x48, 0x49, 0x7a, 0x59, 0x53, 0x4e, 0x54, 0x51, 0x43, 0x70, 0x4b, 0x43, 0x57, 0x6c, 0x5a, 0x57, 0x57, 0x6f, 0x49, 0x57, 0x44, 0x67, 0x77, 0x59, 0x53, 0x37, 0x50, 0x34, 0x38, 0x33, 0x2b, 0x44, 0x2b, 0x4f, 0x75, 0x76, 0x6c, 0x41, 0x63, 0x58, 0x6e, 0x35, 0x77, 0x48, 0x43, 0x41, 0x41, 0x45, 0x41, 0x50, 0x51, 0x4a, 0x4b, 0x41, 0x38, 0x4d, 0x46, 0x38, 0x41, 0x41, 0x52, 0x41, 0x45, 0x35, 0x41, 0x4c, 0x42, 0x41, 0x4e, 0x0a, 0x09, 0x43, 0x77, 0x41, 0x45, 0x44, 0x41, 0x6b, 0x48, 0x42, 0x41, 0x49, 0x45, 0x43, 0x41, 0x4f, 0x5a, 0x42, 0x52, 0x45, 0x4d, 0x6d, 0x51, 0x6f, 0x42, 0x44, 0x70, 0x45, 0x53, 0x43, 0x41, 0x77, 0x4b, 0x41, 0x77, 0x6b, 0x47, 0x45, 0x51, 0x4d, 0x42, 0x41, 0x77, 0x49, 0x41, 0x46, 0x41, 0x38, 0x45, 0x43, 0x77, 0x6b, 0x55, 0x44, 0x51, 0x59, 0x53, 0x45, 0x4e, 0x51, 0x38, 0x35, 0x44, 0x4c, 0x63, 0x50, 0x4f, 0x51, 0x79, 0x46, 0x7a, 0x6b, 0x52, 0x0a, 0x09, 0x45, 0x68, 0x63, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x39, 0x4e, 0x51, 0x38, 0x37, 0x44, 0x4c, 0x45, 0x37, 0x44, 0x49, 0x58, 0x4f, 0x52, 0x49, 0x58, 0x4f, 0x54, 0x41, 0x42, 0x42, 0x51, 0x55, 0x48, 0x4a, 0x52, 0x45, 0x6a, 0x45, 0x51, 0x55, 0x6e, 0x4a, 0x53, 0x55, 0x33, 0x42, 0x52, 0x45, 0x7a, 0x45, 0x53, 0x55, 0x44, 0x77, 0x2f, 0x36, 0x5a, 0x41, 0x57, 0x63, 0x36, 0x2f, 0x72, 0x42, 0x79, 0x2f, 0x72, 0x41, 0x36, 0x41, 0x57, 0x66, 0x2b, 0x0a, 0x09, 0x6d, 0x54, 0x6f, 0x42, 0x55, 0x48, 0x49, 0x42, 0x55, 0x41, 0x54, 0x66, 0x77, 0x73, 0x4e, 0x69, 0x79, 0x2f, 0x36, 0x48, 0x41, 0x58, 0x6e, 0x4c, 0x59, 0x73, 0x50, 0x43, 0x59, 0x38, 0x73, 0x42, 0x65, 0x66, 0x36, 0x48, 0x79, 0x77, 0x41, 0x42, 0x41, 0x4e, 0x6b, 0x41, 0x41, 0x41, 0x58, 0x62, 0x42, 0x51, 0x51, 0x41, 0x43, 0x77, 0x41, 0x6a, 0x51, 0x42, 0x45, 0x41, 0x43, 0x51, 0x47, 0x63, 0x42, 0x77, 0x4d, 0x46, 0x41, 0x68, 0x55, 0x45, 0x0a, 0x09, 0x41, 0x42, 0x63, 0x4b, 0x42, 0x68, 0x55, 0x49, 0x44, 0x42, 0x44, 0x63, 0x2f, 0x44, 0x7a, 0x38, 0x50, 0x4f, 0x77, 0x78, 0x41, 0x43, 0x2f, 0x55, 0x50, 0x50, 0x77, 0x38, 0x78, 0x44, 0x41, 0x42, 0x45, 0x53, 0x45, 0x56, 0x49, 0x52, 0x45, 0x6a, 0x45, 0x53, 0x45, 0x31, 0x49, 0x52, 0x45, 0x44, 0x72, 0x67, 0x49, 0x74, 0x2f, 0x64, 0x4f, 0x6f, 0x2f, 0x64, 0x4d, 0x43, 0x4c, 0x51, 0x55, 0x45, 0x2f, 0x64, 0x4f, 0x71, 0x2f, 0x64, 0x4d, 0x43, 0x0a, 0x09, 0x4c, 0x61, 0x6f, 0x43, 0x4c, 0x51, 0x41, 0x42, 0x41, 0x4a, 0x37, 0x2f, 0x45, 0x67, 0x48, 0x44, 0x41, 0x50, 0x34, 0x41, 0x42, 0x51, 0x41, 0x5a, 0x51, 0x41, 0x77, 0x44, 0x6e, 0x67, 0x43, 0x44, 0x42, 0x67, 0x4d, 0x45, 0x41, 0x52, 0x6b, 0x41, 0x47, 0x41, 0x59, 0x51, 0x2f, 0x4f, 0x7a, 0x55, 0x7a, 0x44, 0x45, 0x41, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x44, 0x63, 0x7a, 0x46, 0x51, 0x4d, 0x6a, 0x45, 0x2f, 0x44, 0x54, 0x70, 0x49, 0x46, 0x53, 0x0a, 0x09, 0x2f, 0x71, 0x7a, 0x2b, 0x77, 0x41, 0x46, 0x41, 0x41, 0x41, 0x45, 0x41, 0x5a, 0x41, 0x48, 0x66, 0x41, 0x6e, 0x38, 0x43, 0x67, 0x77, 0x41, 0x44, 0x41, 0x42, 0x47, 0x32, 0x41, 0x4a, 0x77, 0x43, 0x42, 0x41, 0x45, 0x41, 0x42, 0x42, 0x44, 0x63, 0x7a, 0x44, 0x45, 0x41, 0x45, 0x4e, 0x54, 0x73, 0x4d, 0x42, 0x4d, 0x68, 0x46, 0x53, 0x46, 0x6b, 0x41, 0x68, 0x76, 0x39, 0x35, 0x51, 0x4b, 0x44, 0x70, 0x41, 0x41, 0x41, 0x41, 0x51, 0x44, 0x62, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x42, 0x72, 0x67, 0x44, 0x2b, 0x41, 0x41, 0x4d, 0x41, 0x45, 0x62, 0x63, 0x41, 0x67, 0x77, 0x49, 0x42, 0x47, 0x51, 0x41, 0x59, 0x42, 0x42, 0x44, 0x38, 0x37, 0x44, 0x45, 0x41, 0x4c, 0x2b, 0x77, 0x77, 0x4e, 0x7a, 0x4d, 0x56, 0x49, 0x39, 0x76, 0x54, 0x30, 0x2f, 0x37, 0x2b, 0x41, 0x41, 0x45, 0x41, 0x41, 0x50, 0x39, 0x43, 0x41, 0x72, 0x49, 0x46, 0x31, 0x51, 0x41, 0x44, 0x41, 0x43, 0x31, 0x41, 0x46, 0x41, 0x41, 0x61, 0x0a, 0x09, 0x41, 0x51, 0x49, 0x42, 0x41, 0x68, 0x6f, 0x44, 0x41, 0x41, 0x4e, 0x43, 0x41, 0x70, 0x38, 0x41, 0x67, 0x51, 0x51, 0x43, 0x41, 0x41, 0x45, 0x44, 0x4c, 0x38, 0x51, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x54, 0x73, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x57, 0x53, 0x49, 0x42, 0x4d, 0x77, 0x45, 0x6a, 0x41, 0x67, 0x69, 0x71, 0x2f, 0x66, 0x69, 0x71, 0x42, 0x64, 0x58, 0x35, 0x0a, 0x09, 0x62, 0x51, 0x41, 0x41, 0x41, 0x67, 0x43, 0x48, 0x2f, 0x2b, 0x4d, 0x45, 0x6a, 0x77, 0x58, 0x77, 0x41, 0x41, 0x73, 0x41, 0x46, 0x77, 0x41, 0x6a, 0x51, 0x42, 0x4d, 0x47, 0x6f, 0x42, 0x49, 0x41, 0x6f, 0x41, 0x79, 0x52, 0x45, 0x6f, 0x77, 0x59, 0x43, 0x52, 0x77, 0x50, 0x48, 0x67, 0x4d, 0x63, 0x46, 0x52, 0x73, 0x59, 0x45, 0x50, 0x7a, 0x73, 0x39, 0x4f, 0x77, 0x78, 0x41, 0x42, 0x44, 0x6b, 0x39, 0x4f, 0x77, 0x51, 0x37, 0x6a, 0x41, 0x42, 0x0a, 0x09, 0x49, 0x67, 0x49, 0x52, 0x45, 0x42, 0x49, 0x7a, 0x4d, 0x68, 0x49, 0x52, 0x45, 0x41, 0x49, 0x6e, 0x4d, 0x67, 0x41, 0x52, 0x45, 0x41, 0x41, 0x6a, 0x49, 0x67, 0x41, 0x52, 0x45, 0x41, 0x41, 0x43, 0x69, 0x35, 0x79, 0x64, 0x6e, 0x5a, 0x79, 0x64, 0x6e, 0x5a, 0x32, 0x64, 0x2b, 0x77, 0x45, 0x4a, 0x2f, 0x76, 0x66, 0x37, 0x2b, 0x2f, 0x37, 0x33, 0x41, 0x51, 0x6b, 0x46, 0x55, 0x50, 0x37, 0x4e, 0x2f, 0x73, 0x7a, 0x2b, 0x7a, 0x66, 0x37, 0x4e, 0x0a, 0x09, 0x41, 0x54, 0x4d, 0x42, 0x4d, 0x77, 0x45, 0x30, 0x41, 0x54, 0x4f, 0x67, 0x2f, 0x6e, 0x50, 0x2b, 0x68, 0x76, 0x36, 0x48, 0x2f, 0x6e, 0x4d, 0x42, 0x6a, 0x51, 0x46, 0x35, 0x41, 0x58, 0x6f, 0x42, 0x6a, 0x51, 0x41, 0x41, 0x41, 0x51, 0x44, 0x68, 0x41, 0x41, 0x41, 0x45, 0x57, 0x67, 0x58, 0x56, 0x41, 0x41, 0x6f, 0x41, 0x53, 0x30, 0x41, 0x56, 0x51, 0x67, 0x4f, 0x67, 0x42, 0x41, 0x4b, 0x67, 0x42, 0x59, 0x45, 0x48, 0x41, 0x4b, 0x41, 0x4a, 0x0a, 0x09, 0x43, 0x42, 0x38, 0x47, 0x48, 0x41, 0x4d, 0x41, 0x48, 0x77, 0x45, 0x4c, 0x45, 0x4e, 0x54, 0x73, 0x78, 0x50, 0x7a, 0x73, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x44, 0x4c, 0x30, 0x37, 0x4e, 0x54, 0x73, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x46, 0x6b, 0x69, 0x41, 0x55, 0x75, 0x77, 0x44, 0x31, 0x52, 0x59, 0x76, 0x51, 0x41, 0x4c, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4c, 0x41, 0x41, 0x73, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x0a, 0x09, 0x74, 0x41, 0x38, 0x44, 0x44, 0x77, 0x51, 0x43, 0x58, 0x54, 0x63, 0x68, 0x45, 0x51, 0x55, 0x31, 0x4a, 0x54, 0x4d, 0x52, 0x49, 0x52, 0x55, 0x68, 0x2f, 0x67, 0x46, 0x4b, 0x2f, 0x70, 0x6b, 0x42, 0x5a, 0x63, 0x6f, 0x42, 0x53, 0x76, 0x79, 0x6b, 0x71, 0x67, 0x52, 0x7a, 0x53, 0x4c, 0x68, 0x49, 0x2b, 0x74, 0x57, 0x71, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4a, 0x59, 0x41, 0x41, 0x41, 0x52, 0x4b, 0x42, 0x66, 0x41, 0x41, 0x48, 0x41, 0x43, 0x6c, 0x0a, 0x09, 0x51, 0x43, 0x63, 0x5a, 0x47, 0x68, 0x73, 0x44, 0x47, 0x42, 0x77, 0x52, 0x42, 0x51, 0x51, 0x41, 0x45, 0x51, 0x55, 0x46, 0x42, 0x45, 0x49, 0x51, 0x6f, 0x52, 0x47, 0x55, 0x44, 0x61, 0x41, 0x55, 0x6b, 0x51, 0x51, 0x41, 0x6f, 0x41, 0x49, 0x41, 0x45, 0x41, 0x6f, 0x43, 0x41, 0x51, 0x6f, 0x63, 0x46, 0x78, 0x41, 0x44, 0x42, 0x68, 0x30, 0x51, 0x2f, 0x4d, 0x54, 0x55, 0x37, 0x4d, 0x44, 0x41, 0x45, 0x52, 0x49, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x0a, 0x09, 0x37, 0x44, 0x4c, 0x30, 0x37, 0x50, 0x54, 0x73, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x42, 0x65, 0x30, 0x52, 0x46, 0x7a, 0x6c, 0x5a, 0x49, 0x67, 0x46, 0x4c, 0x73, 0x42, 0x56, 0x55, 0x53, 0x37, 0x41, 0x57, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x42, 0x52, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x42, 0x30, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x42, 0x30, 0x41, 0x48, 0x66, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x0a, 0x09, 0x4f, 0x46, 0x6c, 0x41, 0x4d, 0x6c, 0x55, 0x45, 0x56, 0x67, 0x56, 0x57, 0x42, 0x33, 0x6f, 0x45, 0x65, 0x67, 0x56, 0x32, 0x47, 0x34, 0x63, 0x5a, 0x42, 0x77, 0x51, 0x41, 0x42, 0x42, 0x6b, 0x45, 0x47, 0x67, 0x51, 0x62, 0x42, 0x52, 0x78, 0x30, 0x41, 0x48, 0x59, 0x47, 0x64, 0x52, 0x70, 0x7a, 0x47, 0x33, 0x51, 0x63, 0x67, 0x67, 0x43, 0x47, 0x47, 0x59, 0x49, 0x61, 0x67, 0x68, 0x75, 0x43, 0x48, 0x4b, 0x67, 0x41, 0x71, 0x42, 0x73, 0x52, 0x0a, 0x09, 0x58, 0x51, 0x42, 0x64, 0x4a, 0x53, 0x45, 0x56, 0x49, 0x54, 0x55, 0x32, 0x41, 0x44, 0x63, 0x2b, 0x41, 0x54, 0x55, 0x30, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x67, 0x63, 0x31, 0x50, 0x67, 0x45, 0x7a, 0x4d, 0x67, 0x51, 0x56, 0x46, 0x41, 0x59, 0x48, 0x42, 0x67, 0x41, 0x42, 0x69, 0x51, 0x4c, 0x42, 0x2f, 0x45, 0x78, 0x7a, 0x41, 0x59, 0x30, 0x7a, 0x59, 0x55, 0x32, 0x6e, 0x68, 0x6c, 0x2f, 0x54, 0x65, 0x48, 0x72, 0x55, 0x57, 0x4f, 0x67, 0x42, 0x0a, 0x09, 0x46, 0x45, 0x56, 0x62, 0x47, 0x66, 0x37, 0x30, 0x71, 0x71, 0x71, 0x71, 0x64, 0x77, 0x47, 0x52, 0x4f, 0x6d, 0x32, 0x58, 0x53, 0x58, 0x65, 0x57, 0x51, 0x6b, 0x50, 0x4d, 0x4d, 0x54, 0x4c, 0x6f, 0x77, 0x6c, 0x79, 0x6c, 0x63, 0x42, 0x33, 0x2b, 0x36, 0x77, 0x41, 0x41, 0x41, 0x51, 0x43, 0x63, 0x2f, 0x2b, 0x4d, 0x45, 0x63, 0x77, 0x58, 0x77, 0x41, 0x43, 0x67, 0x41, 0x65, 0x30, 0x41, 0x75, 0x41, 0x42, 0x55, 0x54, 0x43, 0x6f, 0x59, 0x4a, 0x0a, 0x09, 0x48, 0x34, 0x59, 0x67, 0x45, 0x36, 0x41, 0x56, 0x44, 0x61, 0x41, 0x4a, 0x6b, 0x77, 0x59, 0x63, 0x6f, 0x43, 0x43, 0x54, 0x49, 0x35, 0x45, 0x47, 0x6a, 0x42, 0x57, 0x6a, 0x4b, 0x52, 0x59, 0x63, 0x45, 0x77, 0x41, 0x44, 0x46, 0x42, 0x6b, 0x63, 0x4a, 0x69, 0x41, 0x51, 0x48, 0x41, 0x4d, 0x55, 0x48, 0x77, 0x6b, 0x47, 0x4b, 0x52, 0x44, 0x38, 0x78, 0x4d, 0x54, 0x55, 0x37, 0x50, 0x54, 0x73, 0x45, 0x52, 0x63, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x0a, 0x09, 0x45, 0x4f, 0x7a, 0x6b, 0x39, 0x4f, 0x54, 0x73, 0x45, 0x4f, 0x62, 0x75, 0x45, 0x4f, 0x34, 0x51, 0x37, 0x68, 0x44, 0x75, 0x45, 0x52, 0x49, 0x35, 0x4d, 0x41, 0x46, 0x4c, 0x73, 0x42, 0x5a, 0x55, 0x53, 0x37, 0x41, 0x55, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x70, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x70, 0x41, 0x43, 0x6e, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x51, 0x41, 0x6c, 0x6b, 0x48, 0x6d, 0x45, 0x66, 0x0a, 0x09, 0x59, 0x53, 0x42, 0x6b, 0x49, 0x51, 0x51, 0x41, 0x58, 0x51, 0x45, 0x65, 0x41, 0x52, 0x55, 0x55, 0x42, 0x43, 0x45, 0x69, 0x4a, 0x69, 0x63, 0x31, 0x48, 0x67, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x72, 0x41, 0x54, 0x55, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x6a, 0x49, 0x67, 0x59, 0x48, 0x4e, 0x54, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x45, 0x46, 0x52, 0x51, 0x47, 0x41, 0x7a, 0x2b, 0x52, 0x6f, 0x2f, 0x37, 0x51, 0x0a, 0x09, 0x2f, 0x75, 0x68, 0x65, 0x78, 0x32, 0x70, 0x55, 0x79, 0x47, 0x32, 0x2b, 0x78, 0x37, 0x6d, 0x6c, 0x72, 0x72, 0x61, 0x56, 0x6e, 0x71, 0x4f, 0x59, 0x55, 0x37, 0x35, 0x79, 0x63, 0x38, 0x6c, 0x5a, 0x35, 0x67, 0x45, 0x4d, 0x6a, 0x67, 0x4d, 0x6c, 0x48, 0x38, 0x53, 0x51, 0x33, 0x66, 0x49, 0x6c, 0x4a, 0x63, 0x4d, 0x78, 0x4d, 0x70, 0x61, 0x50, 0x68, 0x4a, 0x57, 0x6d, 0x64, 0x33, 0x42, 0x7a, 0x65, 0x79, 0x51, 0x6d, 0x74, 0x43, 0x41, 0x67, 0x0a, 0x09, 0x30, 0x62, 0x4a, 0x38, 0x71, 0x77, 0x41, 0x43, 0x41, 0x47, 0x51, 0x41, 0x41, 0x41, 0x53, 0x6b, 0x42, 0x64, 0x55, 0x41, 0x41, 0x67, 0x41, 0x4e, 0x41, 0x49, 0x78, 0x41, 0x48, 0x51, 0x45, 0x4e, 0x41, 0x77, 0x30, 0x41, 0x41, 0x77, 0x4d, 0x4e, 0x51, 0x67, 0x41, 0x44, 0x43, 0x77, 0x65, 0x67, 0x42, 0x51, 0x45, 0x44, 0x67, 0x51, 0x6b, 0x42, 0x44, 0x41, 0x6f, 0x41, 0x48, 0x41, 0x59, 0x49, 0x42, 0x41, 0x77, 0x4f, 0x45, 0x4e, 0x7a, 0x55, 0x0a, 0x09, 0x50, 0x4d, 0x54, 0x73, 0x4d, 0x68, 0x45, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x35, 0x4e, 0x51, 0x38, 0x37, 0x44, 0x49, 0x53, 0x4f, 0x54, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x54, 0x4a, 0x42, 0x78, 0x41, 0x46, 0x79, 0x56, 0x6b, 0x69, 0x41, 0x55, 0x75, 0x77, 0x43, 0x31, 0x52, 0x4c, 0x73, 0x41, 0x31, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x41, 0x34, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x41, 0x34, 0x41, 0x44, 0x76, 0x2f, 0x41, 0x0a, 0x09, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x4b, 0x67, 0x73, 0x41, 0x4b, 0x67, 0x42, 0x49, 0x41, 0x46, 0x6b, 0x41, 0x61, 0x51, 0x42, 0x33, 0x41, 0x49, 0x6f, 0x41, 0x42, 0x78, 0x59, 0x42, 0x4b, 0x77, 0x41, 0x6d, 0x41, 0x53, 0x73, 0x44, 0x4e, 0x67, 0x46, 0x4f, 0x41, 0x55, 0x38, 0x4d, 0x54, 0x77, 0x31, 0x57, 0x41, 0x57, 0x59, 0x42, 0x64, 0x51, 0x46, 0x36, 0x41, 0x34, 0x55, 0x42, 0x44, 0x56, 0x30, 0x41, 0x58, 0x51, 0x6b, 0x42, 0x0a, 0x09, 0x49, 0x51, 0x4d, 0x7a, 0x45, 0x54, 0x4d, 0x56, 0x49, 0x78, 0x45, 0x6a, 0x45, 0x53, 0x45, 0x31, 0x41, 0x77, 0x62, 0x2b, 0x41, 0x67, 0x48, 0x2b, 0x4e, 0x66, 0x37, 0x56, 0x31, 0x63, 0x6e, 0x39, 0x58, 0x67, 0x55, 0x6c, 0x2f, 0x4f, 0x4d, 0x44, 0x7a, 0x66, 0x77, 0x7a, 0x71, 0x50, 0x36, 0x67, 0x41, 0x57, 0x44, 0x44, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4a, 0x37, 0x2f, 0x34, 0x77, 0x52, 0x6b, 0x42, 0x64, 0x55, 0x41, 0x48, 0x51, 0x42, 0x31, 0x0a, 0x09, 0x51, 0x43, 0x4d, 0x45, 0x47, 0x67, 0x63, 0x52, 0x68, 0x68, 0x41, 0x64, 0x47, 0x71, 0x41, 0x48, 0x46, 0x4b, 0x41, 0x51, 0x69, 0x51, 0x30, 0x43, 0x6f, 0x41, 0x43, 0x42, 0x44, 0x59, 0x77, 0x48, 0x70, 0x42, 0x34, 0x58, 0x48, 0x41, 0x45, 0x4b, 0x41, 0x78, 0x77, 0x41, 0x43, 0x68, 0x41, 0x47, 0x48, 0x68, 0x44, 0x38, 0x78, 0x4e, 0x54, 0x73, 0x45, 0x4d, 0x54, 0x75, 0x4d, 0x51, 0x41, 0x51, 0x35, 0x4f, 0x54, 0x30, 0x37, 0x42, 0x44, 0x6d, 0x0a, 0x09, 0x37, 0x68, 0x44, 0x2b, 0x78, 0x42, 0x44, 0x75, 0x45, 0x52, 0x49, 0x35, 0x4d, 0x41, 0x46, 0x4c, 0x73, 0x42, 0x5a, 0x55, 0x53, 0x37, 0x41, 0x55, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x65, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x65, 0x41, 0x42, 0x37, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x55, 0x75, 0x77, 0x44, 0x31, 0x52, 0x59, 0x76, 0x51, 0x41, 0x65, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x65, 0x0a, 0x09, 0x41, 0x42, 0x34, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x45, 0x79, 0x45, 0x56, 0x49, 0x52, 0x45, 0x2b, 0x41, 0x54, 0x4d, 0x79, 0x41, 0x42, 0x55, 0x55, 0x41, 0x43, 0x45, 0x69, 0x4a, 0x69, 0x63, 0x31, 0x48, 0x67, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x6a, 0x49, 0x67, 0x59, 0x48, 0x33, 0x51, 0x4d, 0x5a, 0x2f, 0x61, 0x41, 0x73, 0x57, 0x43, 0x7a, 0x36, 0x41, 0x53, 0x54, 0x2b, 0x31, 0x50, 0x37, 0x76, 0x0a, 0x09, 0x58, 0x73, 0x4e, 0x6f, 0x57, 0x73, 0x42, 0x72, 0x72, 0x63, 0x72, 0x4b, 0x72, 0x56, 0x47, 0x68, 0x56, 0x41, 0x58, 0x56, 0x71, 0x76, 0x36, 0x53, 0x44, 0x77, 0x2f, 0x2b, 0x37, 0x75, 0x72, 0x78, 0x2f, 0x76, 0x55, 0x67, 0x49, 0x4d, 0x73, 0x78, 0x4d, 0x4c, 0x61, 0x63, 0x6e, 0x4c, 0x59, 0x6b, 0x4a, 0x67, 0x41, 0x41, 0x41, 0x67, 0x43, 0x50, 0x2f, 0x2b, 0x4d, 0x45, 0x6c, 0x67, 0x58, 0x77, 0x41, 0x41, 0x73, 0x41, 0x4a, 0x41, 0x42, 0x59, 0x0a, 0x09, 0x51, 0x43, 0x51, 0x54, 0x42, 0x67, 0x41, 0x4e, 0x68, 0x67, 0x77, 0x41, 0x6f, 0x42, 0x59, 0x47, 0x6f, 0x42, 0x77, 0x57, 0x70, 0x52, 0x43, 0x67, 0x44, 0x49, 0x6b, 0x69, 0x6b, 0x52, 0x79, 0x4d, 0x4a, 0x51, 0x77, 0x69, 0x43, 0x52, 0x77, 0x5a, 0x48, 0x68, 0x4d, 0x63, 0x41, 0x79, 0x45, 0x66, 0x47, 0x79, 0x55, 0x51, 0x2f, 0x4f, 0x7a, 0x73, 0x39, 0x4f, 0x7a, 0x6b, 0x4d, 0x51, 0x41, 0x51, 0x35, 0x50, 0x54, 0x6b, 0x2f, 0x4f, 0x51, 0x51, 0x0a, 0x09, 0x37, 0x68, 0x44, 0x75, 0x45, 0x4f, 0x34, 0x52, 0x45, 0x6a, 0x6b, 0x77, 0x51, 0x42, 0x54, 0x4c, 0x41, 0x4d, 0x73, 0x42, 0x7a, 0x51, 0x4c, 0x4e, 0x41, 0x38, 0x30, 0x45, 0x79, 0x77, 0x58, 0x4c, 0x42, 0x67, 0x65, 0x6b, 0x48, 0x72, 0x49, 0x65, 0x41, 0x6c, 0x30, 0x42, 0x58, 0x51, 0x45, 0x69, 0x42, 0x68, 0x55, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x67, 0x45, 0x56, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x49, 0x44, 0x0a, 0x09, 0x50, 0x67, 0x45, 0x7a, 0x4d, 0x67, 0x41, 0x56, 0x46, 0x41, 0x41, 0x6a, 0x49, 0x41, 0x41, 0x52, 0x45, 0x41, 0x41, 0x68, 0x4d, 0x68, 0x59, 0x43, 0x70, 0x49, 0x69, 0x66, 0x6e, 0x34, 0x69, 0x49, 0x6e, 0x35, 0x38, 0x42, 0x43, 0x55, 0x79, 0x62, 0x54, 0x4d, 0x6a, 0x54, 0x44, 0x7a, 0x75, 0x79, 0x61, 0x2b, 0x45, 0x42, 0x42, 0x66, 0x37, 0x77, 0x34, 0x76, 0x37, 0x39, 0x2f, 0x75, 0x34, 0x42, 0x55, 0x41, 0x45, 0x62, 0x54, 0x4a, 0x73, 0x44, 0x0a, 0x09, 0x4f, 0x37, 0x71, 0x69, 0x6f, 0x62, 0x75, 0x37, 0x6f, 0x61, 0x4b, 0x36, 0x41, 0x6e, 0x6d, 0x34, 0x4a, 0x43, 0x62, 0x2b, 0x38, 0x76, 0x37, 0x76, 0x56, 0x31, 0x33, 0x2b, 0x37, 0x2b, 0x76, 0x6d, 0x2f, 0x75, 0x6f, 0x42, 0x6a, 0x51, 0x46, 0x35, 0x41, 0x57, 0x49, 0x42, 0x70, 0x52, 0x34, 0x41, 0x41, 0x41, 0x45, 0x41, 0x71, 0x41, 0x41, 0x41, 0x42, 0x47, 0x67, 0x46, 0x31, 0x51, 0x41, 0x47, 0x41, 0x47, 0x4e, 0x41, 0x47, 0x41, 0x55, 0x52, 0x0a, 0x09, 0x41, 0x67, 0x4d, 0x43, 0x41, 0x78, 0x45, 0x45, 0x42, 0x51, 0x52, 0x43, 0x42, 0x61, 0x41, 0x41, 0x67, 0x51, 0x4d, 0x46, 0x41, 0x77, 0x45, 0x45, 0x41, 0x51, 0x41, 0x47, 0x42, 0x78, 0x44, 0x38, 0x7a, 0x4d, 0x51, 0x52, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x43, 0x2f, 0x30, 0x37, 0x44, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x56, 0x6b, 0x69, 0x41, 0x55, 0x75, 0x77, 0x46, 0x6c, 0x52, 0x59, 0x0a, 0x09, 0x76, 0x51, 0x41, 0x48, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x48, 0x41, 0x41, 0x66, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x51, 0x42, 0x4a, 0x59, 0x41, 0x67, 0x45, 0x47, 0x41, 0x78, 0x6f, 0x46, 0x4f, 0x51, 0x56, 0x49, 0x42, 0x57, 0x63, 0x44, 0x73, 0x41, 0x43, 0x77, 0x42, 0x67, 0x64, 0x64, 0x41, 0x46, 0x30, 0x54, 0x49, 0x52, 0x55, 0x42, 0x49, 0x77, 0x45, 0x68, 0x71, 0x41, 0x50, 0x41, 0x2f, 0x65, 0x4c, 0x54, 0x0a, 0x09, 0x41, 0x66, 0x37, 0x39, 0x4d, 0x77, 0x58, 0x56, 0x56, 0x76, 0x71, 0x42, 0x42, 0x53, 0x73, 0x41, 0x41, 0x41, 0x4d, 0x41, 0x69, 0x2f, 0x2f, 0x6a, 0x42, 0x49, 0x73, 0x46, 0x38, 0x41, 0x41, 0x4c, 0x41, 0x43, 0x4d, 0x41, 0x4c, 0x77, 0x42, 0x44, 0x51, 0x43, 0x55, 0x59, 0x44, 0x41, 0x43, 0x67, 0x4a, 0x77, 0x61, 0x67, 0x48, 0x69, 0x32, 0x67, 0x45, 0x70, 0x45, 0x65, 0x6a, 0x43, 0x65, 0x6a, 0x4d, 0x42, 0x67, 0x4d, 0x4a, 0x43, 0x6f, 0x63, 0x0a, 0x09, 0x46, 0x53, 0x51, 0x63, 0x44, 0x77, 0x6b, 0x63, 0x46, 0x52, 0x73, 0x65, 0x41, 0x78, 0x77, 0x50, 0x49, 0x52, 0x73, 0x77, 0x45, 0x50, 0x7a, 0x45, 0x37, 0x50, 0x54, 0x45, 0x37, 0x42, 0x44, 0x75, 0x45, 0x4f, 0x34, 0x52, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x73, 0x35, 0x50, 0x54, 0x73, 0x45, 0x4f, 0x34, 0x51, 0x37, 0x6a, 0x6b, 0x35, 0x4d, 0x41, 0x45, 0x69, 0x42, 0x68, 0x55, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x0a, 0x09, 0x4a, 0x69, 0x55, 0x6d, 0x4a, 0x6a, 0x55, 0x30, 0x4e, 0x6a, 0x4d, 0x79, 0x46, 0x68, 0x55, 0x55, 0x42, 0x67, 0x63, 0x57, 0x46, 0x68, 0x55, 0x55, 0x42, 0x43, 0x4d, 0x69, 0x4a, 0x44, 0x55, 0x30, 0x4e, 0x68, 0x4d, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x67, 0x4b, 0x4c, 0x6b, 0x4b, 0x57, 0x6c, 0x6b, 0x4a, 0x43, 0x6d, 0x70, 0x66, 0x36, 0x6c, 0x67, 0x70, 0x48, 0x2f, 0x33, 0x74, 0x2f, 0x2b, 0x0a, 0x09, 0x6b, 0x59, 0x47, 0x53, 0x6f, 0x2f, 0x37, 0x33, 0x39, 0x2f, 0x66, 0x2b, 0x39, 0x36, 0x52, 0x49, 0x6b, 0x59, 0x4f, 0x43, 0x6b, 0x35, 0x4f, 0x43, 0x67, 0x35, 0x45, 0x43, 0x78, 0x5a, 0x71, 0x48, 0x68, 0x35, 0x71, 0x62, 0x68, 0x6f, 0x65, 0x61, 0x56, 0x69, 0x43, 0x79, 0x67, 0x4c, 0x50, 0x51, 0x30, 0x4c, 0x4f, 0x41, 0x73, 0x69, 0x41, 0x69, 0x78, 0x6f, 0x2f, 0x5a, 0x36, 0x4f, 0x6a, 0x5a, 0x6a, 0x38, 0x59, 0x42, 0x59, 0x58, 0x53, 0x43, 0x0a, 0x09, 0x67, 0x6e, 0x52, 0x30, 0x67, 0x6f, 0x49, 0x41, 0x41, 0x41, 0x49, 0x41, 0x67, 0x66, 0x2f, 0x6a, 0x42, 0x49, 0x63, 0x46, 0x38, 0x41, 0x41, 0x59, 0x41, 0x43, 0x51, 0x41, 0x57, 0x45, 0x41, 0x6a, 0x42, 0x78, 0x38, 0x5a, 0x41, 0x59, 0x59, 0x41, 0x47, 0x61, 0x41, 0x4b, 0x70, 0x51, 0x53, 0x67, 0x41, 0x49, 0x6b, 0x57, 0x48, 0x36, 0x41, 0x51, 0x6b, 0x52, 0x61, 0x4d, 0x4a, 0x51, 0x63, 0x63, 0x48, 0x43, 0x45, 0x54, 0x48, 0x67, 0x41, 0x69, 0x0a, 0x09, 0x49, 0x68, 0x77, 0x4e, 0x47, 0x79, 0x55, 0x51, 0x2f, 0x4f, 0x7a, 0x6b, 0x39, 0x4f, 0x7a, 0x73, 0x4d, 0x51, 0x41, 0x51, 0x35, 0x50, 0x54, 0x73, 0x45, 0x4f, 0x62, 0x2b, 0x39, 0x65, 0x34, 0x51, 0x37, 0x68, 0x45, 0x53, 0x4f, 0x54, 0x42, 0x41, 0x46, 0x73, 0x51, 0x5a, 0x77, 0x68, 0x72, 0x41, 0x47, 0x38, 0x41, 0x63, 0x77, 0x42, 0x33, 0x43, 0x48, 0x73, 0x51, 0x66, 0x42, 0x36, 0x6f, 0x53, 0x76, 0x42, 0x4c, 0x70, 0x45, 0x67, 0x4e, 0x64, 0x0a, 0x09, 0x41, 0x56, 0x30, 0x33, 0x4e, 0x52, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x53, 0x45, 0x77, 0x34, 0x42, 0x49, 0x79, 0x49, 0x41, 0x4e, 0x54, 0x51, 0x41, 0x4d, 0x79, 0x41, 0x41, 0x45, 0x52, 0x41, 0x41, 0x49, 0x53, 0x49, 0x6d, 0x41, 0x54, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x49, 0x79, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x34, 0x55, 0x79, 0x63, 0x53, 0x38, 0x6a, 0x54, 0x44, 0x7a, 0x71, 0x79, 0x62, 0x4f, 0x44, 0x2b, 0x2b, 0x77, 0x45, 0x51, 0x0a, 0x09, 0x34, 0x67, 0x45, 0x44, 0x41, 0x52, 0x48, 0x2b, 0x73, 0x66, 0x37, 0x6c, 0x54, 0x4a, 0x77, 0x42, 0x50, 0x6f, 0x69, 0x66, 0x6e, 0x34, 0x69, 0x49, 0x6e, 0x35, 0x38, 0x66, 0x75, 0x43, 0x51, 0x6d, 0x41, 0x51, 0x30, 0x42, 0x45, 0x6c, 0x5a, 0x63, 0x41, 0x51, 0x2f, 0x72, 0x35, 0x67, 0x45, 0x57, 0x2f, 0x6e, 0x50, 0x2b, 0x68, 0x76, 0x36, 0x66, 0x2f, 0x6c, 0x73, 0x65, 0x41, 0x70, 0x65, 0x36, 0x6f, 0x71, 0x47, 0x37, 0x75, 0x36, 0x47, 0x69, 0x0a, 0x09, 0x75, 0x67, 0x41, 0x41, 0x41, 0x67, 0x44, 0x77, 0x41, 0x41, 0x41, 0x42, 0x77, 0x77, 0x51, 0x6a, 0x41, 0x41, 0x4d, 0x41, 0x42, 0x77, 0x41, 0x63, 0x51, 0x41, 0x34, 0x47, 0x67, 0x77, 0x53, 0x6d, 0x41, 0x49, 0x4d, 0x43, 0x42, 0x51, 0x45, 0x44, 0x42, 0x41, 0x41, 0x59, 0x43, 0x42, 0x44, 0x38, 0x50, 0x4f, 0x77, 0x79, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x50, 0x54, 0x73, 0x4d, 0x44, 0x63, 0x7a, 0x46, 0x53, 0x4d, 0x52, 0x4d, 0x78, 0x55, 0x6a, 0x0a, 0x09, 0x38, 0x4e, 0x50, 0x54, 0x30, 0x39, 0x50, 0x2b, 0x2f, 0x67, 0x51, 0x6a, 0x2f, 0x67, 0x41, 0x43, 0x41, 0x4a, 0x37, 0x2f, 0x45, 0x67, 0x48, 0x44, 0x42, 0x43, 0x4d, 0x41, 0x41, 0x77, 0x41, 0x4a, 0x41, 0x43, 0x56, 0x41, 0x45, 0x77, 0x4b, 0x44, 0x41, 0x41, 0x65, 0x65, 0x42, 0x49, 0x4d, 0x41, 0x70, 0x67, 0x6f, 0x48, 0x43, 0x41, 0x55, 0x42, 0x47, 0x51, 0x51, 0x41, 0x47, 0x41, 0x6f, 0x51, 0x2f, 0x44, 0x7a, 0x73, 0x4d, 0x74, 0x54, 0x4d, 0x0a, 0x09, 0x4d, 0x51, 0x41, 0x51, 0x35, 0x50, 0x7a, 0x73, 0x45, 0x4f, 0x34, 0x77, 0x45, 0x7a, 0x4d, 0x56, 0x49, 0x78, 0x45, 0x7a, 0x46, 0x51, 0x4d, 0x6a, 0x45, 0x2f, 0x44, 0x54, 0x30, 0x39, 0x4f, 0x6b, 0x67, 0x56, 0x49, 0x45, 0x49, 0x2f, 0x37, 0x39, 0x32, 0x61, 0x7a, 0x2b, 0x77, 0x41, 0x46, 0x41, 0x41, 0x41, 0x45, 0x41, 0x32, 0x51, 0x42, 0x65, 0x42, 0x64, 0x73, 0x45, 0x70, 0x67, 0x41, 0x47, 0x41, 0x45, 0x31, 0x41, 0x4b, 0x67, 0x4b, 0x63, 0x0a, 0x09, 0x41, 0x77, 0x51, 0x44, 0x41, 0x5a, 0x77, 0x41, 0x41, 0x51, 0x51, 0x45, 0x41, 0x77, 0x47, 0x63, 0x41, 0x67, 0x45, 0x46, 0x42, 0x67, 0x55, 0x41, 0x6e, 0x41, 0x59, 0x46, 0x51, 0x67, 0x55, 0x45, 0x41, 0x67, 0x45, 0x41, 0x42, 0x51, 0x4f, 0x6f, 0x42, 0x71, 0x63, 0x48, 0x41, 0x51, 0x49, 0x41, 0x4a, 0x41, 0x51, 0x6a, 0x42, 0x78, 0x44, 0x38, 0x37, 0x44, 0x49, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x39, 0x4f, 0x77, 0x58, 0x4f, 0x54, 0x42, 0x4c, 0x0a, 0x09, 0x55, 0x31, 0x67, 0x48, 0x42, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x4f, 0x31, 0x5a, 0x49, 0x67, 0x6b, 0x43, 0x46, 0x51, 0x45, 0x31, 0x41, 0x51, 0x58, 0x62, 0x2b, 0x2f, 0x67, 0x45, 0x43, 0x50, 0x72, 0x2b, 0x42, 0x51, 0x49, 0x44, 0x38, 0x50, 0x36, 0x52, 0x2f, 0x70, 0x4f, 0x32, 0x41, 0x64, 0x47, 0x6d, 0x41, 0x64, 0x45, 0x41, 0x41, 0x41, 0x49, 0x41, 0x32, 0x51, 0x46, 0x67, 0x0a, 0x09, 0x42, 0x64, 0x73, 0x44, 0x6f, 0x67, 0x41, 0x44, 0x41, 0x41, 0x63, 0x41, 0x48, 0x45, 0x41, 0x4e, 0x41, 0x4a, 0x77, 0x43, 0x42, 0x70, 0x77, 0x45, 0x43, 0x41, 0x55, 0x42, 0x42, 0x41, 0x41, 0x6a, 0x43, 0x42, 0x44, 0x38, 0x50, 0x4d, 0x51, 0x79, 0x4d, 0x51, 0x41, 0x51, 0x31, 0x4f, 0x7a, 0x55, 0x37, 0x44, 0x41, 0x54, 0x49, 0x52, 0x55, 0x68, 0x46, 0x53, 0x45, 0x56, 0x49, 0x64, 0x6b, 0x46, 0x41, 0x76, 0x72, 0x2b, 0x42, 0x51, 0x4c, 0x36, 0x0a, 0x09, 0x2f, 0x67, 0x4f, 0x69, 0x71, 0x50, 0x43, 0x71, 0x41, 0x41, 0x45, 0x41, 0x32, 0x51, 0x42, 0x65, 0x42, 0x64, 0x73, 0x45, 0x70, 0x67, 0x41, 0x47, 0x41, 0x45, 0x39, 0x41, 0x4b, 0x77, 0x61, 0x63, 0x41, 0x41, 0x59, 0x44, 0x42, 0x41, 0x4d, 0x46, 0x6e, 0x41, 0x51, 0x45, 0x41, 0x77, 0x43, 0x63, 0x41, 0x51, 0x49, 0x42, 0x42, 0x70, 0x77, 0x46, 0x42, 0x67, 0x49, 0x43, 0x41, 0x55, 0x49, 0x47, 0x42, 0x51, 0x4d, 0x43, 0x41, 0x41, 0x55, 0x45, 0x0a, 0x09, 0x71, 0x41, 0x47, 0x6e, 0x42, 0x77, 0x59, 0x43, 0x4a, 0x41, 0x51, 0x41, 0x49, 0x77, 0x63, 0x51, 0x2f, 0x44, 0x7a, 0x73, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x54, 0x73, 0x46, 0x7a, 0x6b, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x54, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x56, 0x6b, 0x69, 0x45, 0x7a, 0x55, 0x42, 0x46, 0x51, 0x45, 0x31, 0x41, 0x64, 0x6b, 0x46, 0x0a, 0x09, 0x41, 0x76, 0x72, 0x2b, 0x42, 0x41, 0x59, 0x44, 0x38, 0x4c, 0x62, 0x2b, 0x4c, 0x36, 0x62, 0x2b, 0x4c, 0x37, 0x59, 0x42, 0x62, 0x51, 0x41, 0x43, 0x41, 0x4a, 0x4d, 0x41, 0x41, 0x41, 0x4f, 0x77, 0x42, 0x66, 0x41, 0x41, 0x41, 0x77, 0x41, 0x6b, 0x41, 0x48, 0x42, 0x41, 0x4b, 0x79, 0x51, 0x65, 0x43, 0x51, 0x59, 0x45, 0x43, 0x68, 0x30, 0x54, 0x42, 0x41, 0x41, 0x55, 0x68, 0x68, 0x4f, 0x49, 0x45, 0x4a, 0x55, 0x58, 0x6b, 0x51, 0x43, 0x44, 0x0a, 0x09, 0x41, 0x68, 0x30, 0x61, 0x44, 0x51, 0x6b, 0x46, 0x42, 0x41, 0x6f, 0x65, 0x41, 0x51, 0x30, 0x63, 0x47, 0x67, 0x51, 0x63, 0x42, 0x51, 0x45, 0x44, 0x41, 0x43, 0x59, 0x61, 0x45, 0x79, 0x55, 0x51, 0x33, 0x4d, 0x54, 0x38, 0x37, 0x4e, 0x54, 0x73, 0x45, 0x4f, 0x34, 0x52, 0x4f, 0x54, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x78, 0x41, 0x43, 0x2f, 0x75, 0x39, 0x76, 0x37, 0x30, 0x37, 0x68, 0x44, 0x4e, 0x45, 0x54, 0x6b, 0x35, 0x0a, 0x09, 0x46, 0x7a, 0x6b, 0x77, 0x41, 0x55, 0x75, 0x77, 0x44, 0x46, 0x52, 0x59, 0x76, 0x51, 0x41, 0x6c, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x6c, 0x41, 0x43, 0x58, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x74, 0x6e, 0x6b, 0x4a, 0x65, 0x67, 0x70, 0x36, 0x49, 0x41, 0x4e, 0x64, 0x4a, 0x54, 0x4d, 0x56, 0x49, 0x78, 0x4d, 0x6a, 0x4e, 0x54, 0x51, 0x32, 0x50, 0x77, 0x45, 0x2b, 0x41, 0x54, 0x55, 0x30, 0x4a, 0x69, 0x4d, 0x69, 0x0a, 0x09, 0x42, 0x67, 0x63, 0x31, 0x50, 0x67, 0x45, 0x7a, 0x4d, 0x68, 0x59, 0x56, 0x46, 0x41, 0x59, 0x50, 0x41, 0x51, 0x34, 0x42, 0x42, 0x77, 0x34, 0x42, 0x46, 0x51, 0x47, 0x48, 0x79, 0x38, 0x76, 0x46, 0x76, 0x7a, 0x68, 0x61, 0x57, 0x6a, 0x6b, 0x7a, 0x67, 0x32, 0x78, 0x50, 0x73, 0x32, 0x46, 0x65, 0x77, 0x57, 0x65, 0x34, 0x33, 0x30, 0x68, 0x61, 0x57, 0x43, 0x38, 0x6e, 0x43, 0x41, 0x59, 0x47, 0x2f, 0x76, 0x34, 0x42, 0x6b, 0x5a, 0x70, 0x6c, 0x0a, 0x09, 0x67, 0x6c, 0x5a, 0x5a, 0x4e, 0x56, 0x34, 0x78, 0x57, 0x57, 0x35, 0x47, 0x51, 0x37, 0x77, 0x35, 0x4f, 0x4d, 0x4b, 0x66, 0x54, 0x49, 0x6c, 0x57, 0x56, 0x69, 0x38, 0x31, 0x47, 0x52, 0x55, 0x38, 0x4e, 0x41, 0x41, 0x41, 0x41, 0x67, 0x43, 0x48, 0x2f, 0x70, 0x77, 0x48, 0x63, 0x51, 0x57, 0x69, 0x41, 0x41, 0x73, 0x41, 0x54, 0x41, 0x43, 0x56, 0x51, 0x44, 0x49, 0x59, 0x44, 0x41, 0x4d, 0x4a, 0x71, 0x52, 0x6b, 0x56, 0x47, 0x77, 0x4f, 0x70, 0x0a, 0x09, 0x54, 0x41, 0x38, 0x30, 0x4d, 0x77, 0x2b, 0x73, 0x4d, 0x4b, 0x6b, 0x33, 0x46, 0x61, 0x77, 0x6b, 0x71, 0x54, 0x64, 0x44, 0x54, 0x54, 0x4d, 0x30, 0x48, 0x68, 0x6f, 0x41, 0x4b, 0x42, 0x49, 0x47, 0x47, 0x41, 0x77, 0x6f, 0x47, 0x69, 0x73, 0x65, 0x4b, 0x45, 0x6b, 0x53, 0x4b, 0x79, 0x6f, 0x6f, 0x53, 0x53, 0x77, 0x39, 0x54, 0x52, 0x44, 0x63, 0x37, 0x50, 0x7a, 0x73, 0x45, 0x50, 0x37, 0x39, 0x2f, 0x6a, 0x7a, 0x47, 0x45, 0x4f, 0x34, 0x52, 0x0a, 0x09, 0x45, 0x6a, 0x6b, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x31, 0x4d, 0x54, 0x38, 0x37, 0x42, 0x44, 0x2b, 0x37, 0x64, 0x54, 0x47, 0x45, 0x4d, 0x58, 0x75, 0x4d, 0x68, 0x44, 0x45, 0x37, 0x68, 0x45, 0x35, 0x4f, 0x54, 0x41, 0x41, 0x53, 0x37, 0x41, 0x4a, 0x56, 0x45, 0x75, 0x77, 0x44, 0x46, 0x52, 0x62, 0x53, 0x37, 0x41, 0x51, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x42, 0x4e, 0x55, 0x57, 0x30, 0x75, 0x77, 0x46, 0x46, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x0a, 0x09, 0x54, 0x66, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x54, 0x51, 0x42, 0x4e, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x55, 0x41, 0x4a, 0x44, 0x30, 0x34, 0x66, 0x54, 0x69, 0x39, 0x4f, 0x50, 0x30, 0x34, 0x45, 0x41, 0x56, 0x30, 0x42, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x6a, 0x49, 0x67, 0x59, 0x42, 0x44, 0x67, 0x45, 0x6a, 0x49, 0x69, 0x59, 0x31, 0x4e, 0x44, 0x59, 0x7a, 0x4d, 0x68, 0x59, 0x58, 0x0a, 0x09, 0x4e, 0x54, 0x4d, 0x52, 0x50, 0x67, 0x45, 0x31, 0x4e, 0x43, 0x59, 0x6e, 0x4a, 0x69, 0x51, 0x6a, 0x49, 0x67, 0x59, 0x48, 0x42, 0x67, 0x49, 0x56, 0x46, 0x42, 0x49, 0x58, 0x46, 0x67, 0x51, 0x7a, 0x4d, 0x6a, 0x59, 0x33, 0x46, 0x77, 0x59, 0x45, 0x49, 0x79, 0x49, 0x6b, 0x4a, 0x79, 0x59, 0x43, 0x4e, 0x54, 0x51, 0x53, 0x4e, 0x7a, 0x59, 0x6b, 0x4d, 0x7a, 0x49, 0x45, 0x46, 0x78, 0x34, 0x42, 0x46, 0x52, 0x41, 0x41, 0x42, 0x51, 0x4c, 0x36, 0x0a, 0x09, 0x6a, 0x6e, 0x78, 0x37, 0x6a, 0x5a, 0x42, 0x36, 0x65, 0x59, 0x38, 0x43, 0x49, 0x54, 0x79, 0x62, 0x5a, 0x36, 0x7a, 0x58, 0x32, 0x4b, 0x74, 0x6e, 0x6e, 0x44, 0x75, 0x50, 0x6b, 0x71, 0x55, 0x2f, 0x51, 0x47, 0x6a, 0x2b, 0x31, 0x62, 0x42, 0x37, 0x34, 0x6d, 0x43, 0x64, 0x73, 0x58, 0x4e, 0x74, 0x61, 0x51, 0x45, 0x55, 0x6e, 0x59, 0x48, 0x35, 0x61, 0x46, 0x70, 0x39, 0x2f, 0x74, 0x6d, 0x59, 0x75, 0x66, 0x36, 0x34, 0x67, 0x49, 0x43, 0x47, 0x0a, 0x09, 0x69, 0x48, 0x36, 0x42, 0x41, 0x56, 0x4b, 0x39, 0x31, 0x41, 0x46, 0x72, 0x65, 0x30, 0x74, 0x50, 0x2f, 0x73, 0x4c, 0x2b, 0x36, 0x41, 0x49, 0x5a, 0x6a, 0x36, 0x4f, 0x6b, 0x6a, 0x6f, 0x79, 0x6c, 0x70, 0x50, 0x35, 0x49, 0x54, 0x55, 0x6e, 0x35, 0x79, 0x4d, 0x6a, 0x36, 0x53, 0x30, 0x79, 0x44, 0x2f, 0x53, 0x41, 0x57, 0x33, 0x37, 0x46, 0x72, 0x76, 0x46, 0x43, 0x44, 0x69, 0x30, 0x46, 0x41, 0x5a, 0x76, 0x36, 0x31, 0x77, 0x5a, 0x2f, 0x2b, 0x0a, 0x09, 0x36, 0x6d, 0x70, 0x6f, 0x62, 0x56, 0x64, 0x52, 0x62, 0x32, 0x46, 0x6e, 0x67, 0x33, 0x31, 0x39, 0x41, 0x55, 0x6d, 0x39, 0x74, 0x67, 0x46, 0x4b, 0x66, 0x58, 0x2b, 0x48, 0x72, 0x71, 0x42, 0x69, 0x35, 0x6e, 0x76, 0x2b, 0x2b, 0x66, 0x37, 0x51, 0x42, 0x67, 0x41, 0x41, 0x41, 0x67, 0x41, 0x51, 0x41, 0x41, 0x41, 0x46, 0x61, 0x41, 0x58, 0x56, 0x41, 0x41, 0x49, 0x41, 0x43, 0x67, 0x43, 0x36, 0x51, 0x45, 0x45, 0x41, 0x45, 0x51, 0x45, 0x41, 0x0a, 0x09, 0x42, 0x41, 0x55, 0x45, 0x41, 0x68, 0x45, 0x46, 0x42, 0x51, 0x51, 0x42, 0x45, 0x51, 0x6f, 0x44, 0x43, 0x67, 0x41, 0x52, 0x41, 0x67, 0x41, 0x44, 0x41, 0x77, 0x6f, 0x48, 0x45, 0x51, 0x55, 0x45, 0x42, 0x68, 0x45, 0x46, 0x42, 0x51, 0x51, 0x4a, 0x45, 0x51, 0x4d, 0x4b, 0x43, 0x42, 0x45, 0x4b, 0x41, 0x77, 0x70, 0x43, 0x41, 0x41, 0x4d, 0x48, 0x6c, 0x51, 0x45, 0x44, 0x67, 0x51, 0x6b, 0x46, 0x43, 0x51, 0x67, 0x48, 0x42, 0x67, 0x51, 0x44, 0x0a, 0x09, 0x41, 0x67, 0x45, 0x41, 0x43, 0x51, 0x55, 0x4b, 0x43, 0x78, 0x44, 0x55, 0x78, 0x42, 0x63, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x50, 0x4f, 0x54, 0x55, 0x37, 0x42, 0x49, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x77, 0x58, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x49, 0x0a, 0x09, 0x37, 0x56, 0x6b, 0x69, 0x73, 0x69, 0x41, 0x4d, 0x41, 0x51, 0x46, 0x64, 0x51, 0x44, 0x6f, 0x50, 0x41, 0x46, 0x67, 0x41, 0x64, 0x67, 0x42, 0x77, 0x41, 0x49, 0x77, 0x41, 0x42, 0x51, 0x63, 0x42, 0x43, 0x41, 0x49, 0x47, 0x41, 0x77, 0x6b, 0x45, 0x46, 0x67, 0x45, 0x5a, 0x41, 0x6c, 0x59, 0x42, 0x57, 0x41, 0x4a, 0x51, 0x44, 0x47, 0x63, 0x42, 0x61, 0x41, 0x4a, 0x34, 0x41, 0x58, 0x59, 0x43, 0x66, 0x41, 0x4e, 0x79, 0x42, 0x48, 0x63, 0x48, 0x0a, 0x09, 0x65, 0x41, 0x69, 0x48, 0x41, 0x59, 0x67, 0x43, 0x67, 0x41, 0x79, 0x59, 0x41, 0x70, 0x6b, 0x44, 0x6c, 0x67, 0x51, 0x58, 0x58, 0x51, 0x42, 0x64, 0x43, 0x51, 0x45, 0x68, 0x41, 0x54, 0x4d, 0x42, 0x49, 0x77, 0x4d, 0x68, 0x41, 0x79, 0x4d, 0x43, 0x76, 0x50, 0x37, 0x75, 0x41, 0x69, 0x58, 0x2b, 0x65, 0x2b, 0x55, 0x43, 0x4f, 0x64, 0x4b, 0x49, 0x2f, 0x56, 0x2b, 0x49, 0x31, 0x51, 0x55, 0x4f, 0x2f, 0x52, 0x6b, 0x44, 0x72, 0x76, 0x6f, 0x72, 0x0a, 0x09, 0x41, 0x58, 0x2f, 0x2b, 0x67, 0x51, 0x41, 0x44, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x54, 0x73, 0x42, 0x64, 0x55, 0x41, 0x43, 0x41, 0x41, 0x52, 0x41, 0x43, 0x41, 0x41, 0x51, 0x30, 0x41, 0x6a, 0x47, 0x51, 0x43, 0x56, 0x43, 0x67, 0x6d, 0x56, 0x45, 0x6f, 0x45, 0x42, 0x6c, 0x51, 0x71, 0x74, 0x48, 0x78, 0x45, 0x4c, 0x43, 0x41, 0x49, 0x54, 0x47, 0x52, 0x38, 0x46, 0x41, 0x41, 0x34, 0x63, 0x46, 0x67, 0x55, 0x5a, 0x48, 0x43, 0x34, 0x4a, 0x0a, 0x09, 0x41, 0x42, 0x77, 0x53, 0x42, 0x43, 0x45, 0x51, 0x2f, 0x4f, 0x77, 0x79, 0x2f, 0x4f, 0x7a, 0x55, 0x37, 0x42, 0x45, 0x58, 0x4f, 0x54, 0x6b, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x4f, 0x7a, 0x30, 0x37, 0x42, 0x44, 0x75, 0x4f, 0x54, 0x43, 0x79, 0x44, 0x79, 0x49, 0x42, 0x41, 0x56, 0x30, 0x42, 0x45, 0x53, 0x45, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x69, 0x4d, 0x42, 0x45, 0x53, 0x45, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x69, 0x4d, 0x6c, 0x0a, 0x09, 0x49, 0x54, 0x49, 0x57, 0x46, 0x52, 0x51, 0x47, 0x42, 0x78, 0x34, 0x42, 0x46, 0x52, 0x51, 0x45, 0x49, 0x79, 0x45, 0x42, 0x6b, 0x77, 0x46, 0x45, 0x6f, 0x35, 0x32, 0x64, 0x6f, 0x2f, 0x36, 0x38, 0x41, 0x53, 0x75, 0x55, 0x6b, 0x5a, 0x47, 0x55, 0x2f, 0x67, 0x73, 0x43, 0x42, 0x4f, 0x66, 0x36, 0x67, 0x48, 0x79, 0x56, 0x70, 0x66, 0x37, 0x77, 0x2b, 0x2f, 0x33, 0x6f, 0x41, 0x73, 0x6e, 0x39, 0x33, 0x59, 0x65, 0x4c, 0x6a, 0x49, 0x55, 0x43, 0x0a, 0x09, 0x5a, 0x76, 0x34, 0x2b, 0x62, 0x33, 0x4a, 0x78, 0x63, 0x4b, 0x62, 0x41, 0x73, 0x59, 0x6d, 0x69, 0x46, 0x43, 0x44, 0x4c, 0x6d, 0x4d, 0x6a, 0x61, 0x41, 0x41, 0x45, 0x41, 0x63, 0x2f, 0x2f, 0x6a, 0x42, 0x53, 0x63, 0x46, 0x38, 0x41, 0x41, 0x5a, 0x41, 0x44, 0x5a, 0x41, 0x47, 0x67, 0x32, 0x68, 0x44, 0x71, 0x34, 0x4b, 0x6c, 0x52, 0x45, 0x42, 0x6f, 0x51, 0x43, 0x75, 0x42, 0x4a, 0x55, 0x58, 0x6b, 0x52, 0x47, 0x4d, 0x47, 0x67, 0x63, 0x5a, 0x0a, 0x09, 0x44, 0x51, 0x41, 0x77, 0x46, 0x42, 0x41, 0x61, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x75, 0x77, 0x78, 0x41, 0x42, 0x44, 0x6b, 0x39, 0x4f, 0x7a, 0x30, 0x37, 0x42, 0x44, 0x75, 0x39, 0x75, 0x34, 0x77, 0x74, 0x41, 0x38, 0x62, 0x48, 0x78, 0x73, 0x43, 0x41, 0x56, 0x30, 0x42, 0x46, 0x53, 0x34, 0x42, 0x49, 0x79, 0x41, 0x41, 0x45, 0x52, 0x41, 0x41, 0x49, 0x54, 0x49, 0x32, 0x4e, 0x78, 0x55, 0x4f, 0x41, 0x53, 0x4d, 0x67, 0x41, 0x42, 0x45, 0x51, 0x0a, 0x09, 0x41, 0x43, 0x45, 0x79, 0x46, 0x67, 0x55, 0x6e, 0x5a, 0x75, 0x65, 0x43, 0x2f, 0x77, 0x44, 0x2b, 0x38, 0x41, 0x45, 0x51, 0x41, 0x51, 0x43, 0x43, 0x35, 0x32, 0x5a, 0x71, 0x37, 0x59, 0x54, 0x2b, 0x72, 0x66, 0x35, 0x36, 0x41, 0x59, 0x59, 0x42, 0x55, 0x34, 0x62, 0x74, 0x42, 0x57, 0x4c, 0x56, 0x58, 0x31, 0x37, 0x2b, 0x78, 0x2f, 0x37, 0x59, 0x2f, 0x74, 0x6e, 0x2b, 0x78, 0x31, 0x35, 0x66, 0x30, 0x30, 0x68, 0x49, 0x41, 0x5a, 0x38, 0x42, 0x0a, 0x09, 0x5a, 0x77, 0x46, 0x6f, 0x41, 0x5a, 0x39, 0x48, 0x41, 0x41, 0x49, 0x41, 0x79, 0x51, 0x41, 0x41, 0x42, 0x62, 0x41, 0x46, 0x31, 0x51, 0x41, 0x49, 0x41, 0x42, 0x45, 0x41, 0x4c, 0x6b, 0x41, 0x56, 0x41, 0x4a, 0x55, 0x4a, 0x67, 0x51, 0x47, 0x56, 0x45, 0x41, 0x67, 0x43, 0x45, 0x41, 0x6f, 0x41, 0x42, 0x52, 0x6b, 0x4e, 0x4d, 0x67, 0x41, 0x63, 0x43, 0x51, 0x51, 0x53, 0x45, 0x50, 0x7a, 0x73, 0x39, 0x4f, 0x77, 0x52, 0x4f, 0x54, 0x6b, 0x35, 0x0a, 0x09, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x2b, 0x7a, 0x30, 0x37, 0x44, 0x43, 0x79, 0x59, 0x42, 0x4d, 0x42, 0x41, 0x56, 0x30, 0x42, 0x45, 0x54, 0x4d, 0x67, 0x41, 0x42, 0x45, 0x51, 0x41, 0x43, 0x45, 0x6c, 0x49, 0x53, 0x41, 0x41, 0x45, 0x52, 0x41, 0x41, 0x4b, 0x51, 0x45, 0x42, 0x6b, 0x2f, 0x51, 0x42, 0x4e, 0x51, 0x45, 0x66, 0x2f, 0x75, 0x48, 0x2b, 0x79, 0x2f, 0x35, 0x43, 0x41, 0x5a, 0x38, 0x42, 0x73, 0x67, 0x47, 0x57, 0x2f, 0x6d, 0x6a, 0x2b, 0x0a, 0x09, 0x55, 0x50, 0x35, 0x68, 0x42, 0x53, 0x2f, 0x37, 0x64, 0x77, 0x45, 0x59, 0x41, 0x53, 0x34, 0x42, 0x4c, 0x41, 0x45, 0x58, 0x70, 0x76, 0x36, 0x58, 0x2f, 0x6f, 0x44, 0x2b, 0x66, 0x76, 0x36, 0x57, 0x41, 0x41, 0x45, 0x41, 0x79, 0x51, 0x41, 0x41, 0x42, 0x49, 0x73, 0x46, 0x31, 0x51, 0x41, 0x4c, 0x41, 0x43, 0x35, 0x41, 0x46, 0x51, 0x61, 0x56, 0x42, 0x41, 0x4b, 0x56, 0x41, 0x49, 0x45, 0x49, 0x6c, 0x51, 0x53, 0x74, 0x43, 0x67, 0x55, 0x42, 0x0a, 0x09, 0x43, 0x51, 0x63, 0x44, 0x48, 0x41, 0x41, 0x45, 0x44, 0x42, 0x44, 0x38, 0x37, 0x44, 0x4c, 0x55, 0x78, 0x4d, 0x51, 0x78, 0x41, 0x43, 0x2f, 0x73, 0x37, 0x50, 0x54, 0x73, 0x45, 0x4f, 0x34, 0x77, 0x73, 0x68, 0x38, 0x4e, 0x41, 0x51, 0x46, 0x64, 0x45, 0x79, 0x45, 0x56, 0x49, 0x52, 0x45, 0x68, 0x46, 0x53, 0x45, 0x52, 0x49, 0x52, 0x55, 0x68, 0x79, 0x51, 0x4f, 0x77, 0x2f, 0x52, 0x6f, 0x43, 0x78, 0x2f, 0x30, 0x35, 0x41, 0x76, 0x6a, 0x38, 0x0a, 0x09, 0x50, 0x67, 0x58, 0x56, 0x71, 0x76, 0x35, 0x47, 0x71, 0x76, 0x33, 0x6a, 0x71, 0x67, 0x41, 0x42, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x51, 0x6a, 0x42, 0x64, 0x55, 0x41, 0x43, 0x51, 0x41, 0x70, 0x51, 0x42, 0x49, 0x47, 0x6c, 0x51, 0x51, 0x43, 0x6c, 0x51, 0x43, 0x42, 0x42, 0x4b, 0x30, 0x49, 0x42, 0x51, 0x45, 0x48, 0x41, 0x78, 0x77, 0x41, 0x42, 0x41, 0x6f, 0x51, 0x2f, 0x4f, 0x77, 0x79, 0x31, 0x4d, 0x51, 0x78, 0x41, 0x43, 0x2f, 0x73, 0x0a, 0x09, 0x39, 0x4f, 0x77, 0x51, 0x37, 0x6a, 0x43, 0x79, 0x44, 0x77, 0x73, 0x42, 0x41, 0x56, 0x30, 0x54, 0x49, 0x52, 0x55, 0x68, 0x45, 0x53, 0x45, 0x56, 0x49, 0x52, 0x45, 0x6a, 0x79, 0x51, 0x4e, 0x61, 0x2f, 0x58, 0x41, 0x43, 0x55, 0x50, 0x32, 0x77, 0x79, 0x67, 0x58, 0x56, 0x71, 0x76, 0x35, 0x49, 0x71, 0x76, 0x30, 0x33, 0x41, 0x41, 0x41, 0x42, 0x41, 0x48, 0x50, 0x2f, 0x34, 0x77, 0x57, 0x4c, 0x42, 0x66, 0x41, 0x41, 0x48, 0x51, 0x41, 0x35, 0x0a, 0x09, 0x51, 0x43, 0x41, 0x41, 0x42, 0x52, 0x73, 0x42, 0x6c, 0x51, 0x4d, 0x62, 0x6c, 0x51, 0x67, 0x53, 0x6f, 0x52, 0x47, 0x75, 0x46, 0x5a, 0x55, 0x4f, 0x6b, 0x51, 0x69, 0x4d, 0x48, 0x67, 0x49, 0x41, 0x48, 0x42, 0x45, 0x30, 0x42, 0x44, 0x4d, 0x59, 0x47, 0x51, 0x73, 0x51, 0x48, 0x68, 0x44, 0x38, 0x37, 0x50, 0x7a, 0x6b, 0x2f, 0x4d, 0x51, 0x78, 0x41, 0x42, 0x44, 0x6b, 0x39, 0x4f, 0x7a, 0x30, 0x37, 0x42, 0x44, 0x2b, 0x31, 0x4f, 0x34, 0x52, 0x0a, 0x09, 0x4f, 0x54, 0x6b, 0x77, 0x4a, 0x52, 0x45, 0x68, 0x4e, 0x53, 0x45, 0x52, 0x42, 0x67, 0x51, 0x6a, 0x49, 0x41, 0x41, 0x52, 0x45, 0x41, 0x41, 0x68, 0x4d, 0x67, 0x51, 0x58, 0x46, 0x53, 0x59, 0x6d, 0x49, 0x79, 0x41, 0x41, 0x45, 0x52, 0x41, 0x41, 0x49, 0x54, 0x49, 0x32, 0x42, 0x4d, 0x50, 0x2b, 0x74, 0x67, 0x49, 0x53, 0x64, 0x66, 0x37, 0x6d, 0x6f, 0x50, 0x36, 0x69, 0x2f, 0x6e, 0x55, 0x42, 0x69, 0x77, 0x46, 0x65, 0x6b, 0x67, 0x45, 0x48, 0x0a, 0x09, 0x62, 0x33, 0x44, 0x38, 0x69, 0x2f, 0x37, 0x75, 0x2f, 0x75, 0x30, 0x42, 0x45, 0x77, 0x45, 0x53, 0x61, 0x36, 0x6a, 0x56, 0x41, 0x5a, 0x47, 0x6d, 0x2f, 0x58, 0x39, 0x54, 0x56, 0x51, 0x47, 0x5a, 0x41, 0x57, 0x30, 0x42, 0x62, 0x67, 0x47, 0x5a, 0x53, 0x45, 0x62, 0x58, 0x58, 0x32, 0x44, 0x2b, 0x7a, 0x76, 0x37, 0x52, 0x2f, 0x74, 0x4c, 0x2b, 0x7a, 0x69, 0x55, 0x41, 0x41, 0x51, 0x44, 0x4a, 0x41, 0x41, 0x41, 0x46, 0x4f, 0x77, 0x58, 0x56, 0x0a, 0x09, 0x41, 0x41, 0x73, 0x41, 0x4c, 0x45, 0x41, 0x55, 0x43, 0x4a, 0x55, 0x43, 0x72, 0x51, 0x51, 0x41, 0x67, 0x51, 0x6f, 0x47, 0x42, 0x77, 0x4d, 0x63, 0x42, 0x54, 0x67, 0x4a, 0x41, 0x52, 0x77, 0x41, 0x42, 0x41, 0x77, 0x51, 0x2f, 0x4f, 0x77, 0x79, 0x2f, 0x4f, 0x77, 0x79, 0x4d, 0x51, 0x41, 0x76, 0x50, 0x4f, 0x51, 0x79, 0x2f, 0x4f, 0x77, 0x77, 0x73, 0x6c, 0x41, 0x4e, 0x41, 0x51, 0x46, 0x64, 0x45, 0x7a, 0x4d, 0x52, 0x49, 0x52, 0x45, 0x7a, 0x0a, 0x09, 0x45, 0x53, 0x4d, 0x52, 0x49, 0x52, 0x45, 0x6a, 0x79, 0x63, 0x6f, 0x43, 0x33, 0x73, 0x72, 0x4b, 0x2f, 0x53, 0x4c, 0x4b, 0x42, 0x64, 0x58, 0x39, 0x6e, 0x41, 0x4a, 0x6b, 0x2b, 0x69, 0x73, 0x43, 0x78, 0x2f, 0x30, 0x35, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x47, 0x54, 0x42, 0x64, 0x55, 0x41, 0x41, 0x77, 0x41, 0x35, 0x74, 0x77, 0x43, 0x76, 0x41, 0x67, 0x45, 0x63, 0x41, 0x41, 0x51, 0x45, 0x45, 0x50, 0x7a, 0x73, 0x0a, 0x09, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x44, 0x41, 0x42, 0x53, 0x37, 0x41, 0x51, 0x56, 0x46, 0x69, 0x39, 0x41, 0x41, 0x54, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x41, 0x51, 0x41, 0x42, 0x41, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x44, 0x54, 0x41, 0x46, 0x51, 0x41, 0x56, 0x51, 0x42, 0x57, 0x41, 0x46, 0x6a, 0x77, 0x57, 0x66, 0x42, 0x51, 0x5a, 0x64, 0x45, 0x7a, 0x4d, 0x52, 0x49, 0x38, 0x6e, 0x4b, 0x79, 0x67, 0x58, 0x56, 0x0a, 0x09, 0x2b, 0x69, 0x73, 0x41, 0x41, 0x66, 0x2b, 0x57, 0x2f, 0x6d, 0x59, 0x42, 0x6b, 0x77, 0x58, 0x56, 0x41, 0x41, 0x73, 0x41, 0x54, 0x55, 0x41, 0x54, 0x43, 0x77, 0x49, 0x41, 0x42, 0x35, 0x55, 0x46, 0x73, 0x41, 0x43, 0x42, 0x44, 0x41, 0x55, 0x49, 0x42, 0x6a, 0x6b, 0x42, 0x48, 0x41, 0x41, 0x45, 0x44, 0x42, 0x44, 0x38, 0x37, 0x4f, 0x51, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x4f, 0x54, 0x38, 0x37, 0x42, 0x45, 0x35, 0x4f, 0x54, 0x41, 0x42, 0x0a, 0x09, 0x53, 0x37, 0x41, 0x51, 0x56, 0x46, 0x69, 0x39, 0x41, 0x41, 0x7a, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x41, 0x77, 0x41, 0x44, 0x41, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x44, 0x54, 0x41, 0x4e, 0x51, 0x41, 0x31, 0x51, 0x44, 0x57, 0x41, 0x4e, 0x6a, 0x77, 0x32, 0x66, 0x44, 0x51, 0x5a, 0x64, 0x45, 0x7a, 0x4d, 0x52, 0x45, 0x41, 0x59, 0x72, 0x41, 0x54, 0x55, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x79, 0x63, 0x72, 0x4e, 0x0a, 0x09, 0x34, 0x30, 0x30, 0x2f, 0x68, 0x6d, 0x34, 0x46, 0x31, 0x66, 0x71, 0x54, 0x2f, 0x76, 0x4c, 0x30, 0x71, 0x70, 0x62, 0x43, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x56, 0x71, 0x42, 0x64, 0x55, 0x41, 0x43, 0x67, 0x44, 0x76, 0x51, 0x43, 0x67, 0x49, 0x45, 0x51, 0x55, 0x47, 0x42, 0x51, 0x63, 0x52, 0x42, 0x67, 0x59, 0x46, 0x41, 0x78, 0x45, 0x45, 0x42, 0x51, 0x51, 0x43, 0x45, 0x51, 0x55, 0x46, 0x42, 0x45, 0x49, 0x49, 0x0a, 0x09, 0x42, 0x51, 0x49, 0x44, 0x41, 0x77, 0x43, 0x76, 0x43, 0x51, 0x59, 0x46, 0x41, 0x51, 0x51, 0x47, 0x43, 0x41, 0x45, 0x63, 0x41, 0x41, 0x51, 0x4c, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x74, 0x54, 0x45, 0x45, 0x54, 0x6b, 0x78, 0x41, 0x43, 0x38, 0x38, 0x37, 0x44, 0x49, 0x58, 0x4f, 0x54, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x54, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x54, 0x74, 0x0a, 0x09, 0x57, 0x53, 0x4b, 0x79, 0x43, 0x41, 0x4d, 0x42, 0x41, 0x56, 0x31, 0x41, 0x6b, 0x68, 0x51, 0x43, 0x41, 0x51, 0x51, 0x43, 0x43, 0x51, 0x67, 0x57, 0x41, 0x69, 0x67, 0x46, 0x4b, 0x41, 0x67, 0x33, 0x41, 0x6a, 0x59, 0x46, 0x4e, 0x41, 0x68, 0x48, 0x41, 0x6b, 0x59, 0x46, 0x51, 0x77, 0x68, 0x56, 0x41, 0x6d, 0x63, 0x43, 0x64, 0x67, 0x4a, 0x33, 0x42, 0x59, 0x4d, 0x43, 0x69, 0x41, 0x57, 0x50, 0x43, 0x4a, 0x51, 0x43, 0x6d, 0x77, 0x6a, 0x6e, 0x0a, 0x09, 0x41, 0x68, 0x55, 0x47, 0x41, 0x77, 0x6b, 0x46, 0x43, 0x51, 0x59, 0x62, 0x41, 0x78, 0x6b, 0x48, 0x42, 0x51, 0x6f, 0x44, 0x43, 0x67, 0x63, 0x59, 0x41, 0x79, 0x67, 0x46, 0x4b, 0x77, 0x59, 0x71, 0x42, 0x7a, 0x59, 0x45, 0x4e, 0x67, 0x55, 0x32, 0x42, 0x6a, 0x55, 0x48, 0x4d, 0x41, 0x78, 0x42, 0x41, 0x30, 0x41, 0x45, 0x52, 0x51, 0x56, 0x41, 0x42, 0x6b, 0x41, 0x48, 0x51, 0x41, 0x78, 0x69, 0x41, 0x32, 0x41, 0x45, 0x61, 0x41, 0x56, 0x6e, 0x0a, 0x09, 0x42, 0x33, 0x63, 0x46, 0x63, 0x41, 0x79, 0x4c, 0x41, 0x34, 0x73, 0x46, 0x6a, 0x67, 0x61, 0x50, 0x42, 0x34, 0x38, 0x4d, 0x6d, 0x67, 0x4f, 0x64, 0x42, 0x70, 0x30, 0x48, 0x74, 0x67, 0x4f, 0x31, 0x42, 0x38, 0x55, 0x44, 0x78, 0x51, 0x66, 0x58, 0x41, 0x39, 0x59, 0x48, 0x36, 0x41, 0x50, 0x70, 0x42, 0x4f, 0x67, 0x46, 0x36, 0x67, 0x62, 0x33, 0x41, 0x2f, 0x67, 0x46, 0x2b, 0x51, 0x59, 0x73, 0x58, 0x58, 0x45, 0x41, 0x58, 0x58, 0x45, 0x54, 0x0a, 0x09, 0x4d, 0x78, 0x45, 0x42, 0x49, 0x51, 0x6b, 0x42, 0x49, 0x51, 0x45, 0x52, 0x49, 0x38, 0x6e, 0x4b, 0x41, 0x70, 0x34, 0x42, 0x42, 0x50, 0x30, 0x62, 0x41, 0x78, 0x72, 0x2b, 0x39, 0x76, 0x30, 0x7a, 0x79, 0x67, 0x58, 0x56, 0x2f, 0x59, 0x6b, 0x43, 0x64, 0x2f, 0x31, 0x49, 0x2f, 0x4f, 0x4d, 0x43, 0x7a, 0x2f, 0x30, 0x78, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x52, 0x71, 0x42, 0x64, 0x55, 0x41, 0x42, 0x51, 0x41, 0x6c, 0x0a, 0x09, 0x51, 0x41, 0x77, 0x43, 0x6c, 0x51, 0x43, 0x42, 0x42, 0x41, 0x45, 0x63, 0x41, 0x7a, 0x6f, 0x41, 0x42, 0x41, 0x59, 0x51, 0x2f, 0x4f, 0x7a, 0x73, 0x4d, 0x51, 0x41, 0x76, 0x35, 0x4f, 0x77, 0x77, 0x51, 0x41, 0x6b, 0x77, 0x42, 0x31, 0x41, 0x48, 0x67, 0x41, 0x4f, 0x41, 0x42, 0x41, 0x51, 0x42, 0x58, 0x52, 0x4d, 0x7a, 0x45, 0x53, 0x45, 0x56, 0x49, 0x63, 0x6e, 0x4b, 0x41, 0x74, 0x66, 0x38, 0x58, 0x77, 0x58, 0x56, 0x2b, 0x74, 0x57, 0x71, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x79, 0x51, 0x41, 0x41, 0x42, 0x68, 0x38, 0x46, 0x31, 0x51, 0x41, 0x4d, 0x41, 0x4c, 0x39, 0x41, 0x4e, 0x41, 0x4d, 0x52, 0x42, 0x77, 0x67, 0x48, 0x41, 0x68, 0x45, 0x42, 0x41, 0x67, 0x67, 0x49, 0x42, 0x77, 0x49, 0x52, 0x41, 0x77, 0x49, 0x4a, 0x43, 0x67, 0x6b, 0x42, 0x45, 0x51, 0x6f, 0x4b, 0x43, 0x55, 0x49, 0x4b, 0x42, 0x77, 0x49, 0x44, 0x43, 0x41, 0x4d, 0x41, 0x72, 0x77, 0x67, 0x4c, 0x42, 0x51, 0x6b, 0x49, 0x0a, 0x09, 0x41, 0x77, 0x49, 0x42, 0x42, 0x51, 0x6f, 0x47, 0x48, 0x41, 0x51, 0x2b, 0x43, 0x68, 0x77, 0x41, 0x42, 0x41, 0x30, 0x51, 0x2f, 0x4f, 0x7a, 0x38, 0x37, 0x42, 0x45, 0x58, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x7a, 0x7a, 0x45, 0x37, 0x44, 0x49, 0x52, 0x46, 0x7a, 0x6b, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x56, 0x6b, 0x69, 0x0a, 0x09, 0x73, 0x6e, 0x41, 0x4f, 0x41, 0x51, 0x46, 0x64, 0x51, 0x46, 0x59, 0x44, 0x42, 0x77, 0x38, 0x49, 0x44, 0x77, 0x6b, 0x43, 0x43, 0x68, 0x55, 0x43, 0x46, 0x41, 0x63, 0x54, 0x43, 0x69, 0x59, 0x43, 0x4a, 0x67, 0x63, 0x67, 0x42, 0x79, 0x59, 0x4b, 0x49, 0x41, 0x6f, 0x30, 0x42, 0x7a, 0x55, 0x4b, 0x61, 0x51, 0x4a, 0x38, 0x41, 0x6e, 0x73, 0x48, 0x65, 0x51, 0x71, 0x41, 0x41, 0x6f, 0x49, 0x48, 0x67, 0x67, 0x71, 0x51, 0x41, 0x68, 0x59, 0x45, 0x0a, 0x09, 0x41, 0x51, 0x73, 0x44, 0x45, 0x77, 0x45, 0x62, 0x41, 0x79, 0x4d, 0x42, 0x4c, 0x41, 0x4d, 0x6e, 0x43, 0x43, 0x67, 0x4a, 0x4e, 0x41, 0x45, 0x38, 0x41, 0x31, 0x59, 0x49, 0x57, 0x51, 0x6c, 0x6c, 0x43, 0x47, 0x6f, 0x4a, 0x64, 0x67, 0x68, 0x35, 0x43, 0x59, 0x45, 0x42, 0x6a, 0x51, 0x4f, 0x56, 0x41, 0x5a, 0x73, 0x44, 0x46, 0x46, 0x30, 0x41, 0x58, 0x52, 0x4d, 0x68, 0x43, 0x51, 0x45, 0x68, 0x45, 0x53, 0x4d, 0x52, 0x41, 0x53, 0x4d, 0x42, 0x0a, 0x09, 0x45, 0x53, 0x50, 0x4a, 0x41, 0x53, 0x30, 0x42, 0x66, 0x51, 0x46, 0x2f, 0x41, 0x53, 0x33, 0x46, 0x2f, 0x6e, 0x2f, 0x4c, 0x2f, 0x6e, 0x2f, 0x45, 0x42, 0x64, 0x58, 0x38, 0x43, 0x41, 0x50, 0x34, 0x2b, 0x69, 0x73, 0x46, 0x48, 0x2f, 0x77, 0x41, 0x42, 0x41, 0x44, 0x36, 0x34, 0x51, 0x41, 0x42, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x55, 0x7a, 0x42, 0x64, 0x55, 0x41, 0x43, 0x51, 0x42, 0x35, 0x51, 0x42, 0x34, 0x48, 0x45, 0x51, 0x45, 0x43, 0x0a, 0x09, 0x41, 0x51, 0x49, 0x52, 0x42, 0x67, 0x63, 0x47, 0x51, 0x67, 0x63, 0x43, 0x41, 0x77, 0x43, 0x76, 0x43, 0x41, 0x55, 0x47, 0x41, 0x51, 0x63, 0x43, 0x48, 0x41, 0x51, 0x32, 0x42, 0x78, 0x77, 0x41, 0x42, 0x41, 0x6f, 0x51, 0x2f, 0x4f, 0x7a, 0x38, 0x37, 0x42, 0x45, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x7a, 0x7a, 0x73, 0x4d, 0x6a, 0x6b, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x54, 0x74, 0x0a, 0x09, 0x57, 0x53, 0x4b, 0x79, 0x48, 0x77, 0x73, 0x42, 0x41, 0x56, 0x31, 0x41, 0x4d, 0x44, 0x59, 0x43, 0x4f, 0x41, 0x64, 0x49, 0x41, 0x6b, 0x63, 0x48, 0x61, 0x51, 0x4a, 0x6d, 0x42, 0x34, 0x41, 0x43, 0x42, 0x77, 0x59, 0x42, 0x43, 0x51, 0x59, 0x56, 0x41, 0x52, 0x6f, 0x47, 0x52, 0x67, 0x46, 0x4a, 0x42, 0x6c, 0x63, 0x42, 0x57, 0x41, 0x5a, 0x6c, 0x41, 0x57, 0x6b, 0x47, 0x65, 0x51, 0x61, 0x46, 0x41, 0x59, 0x6f, 0x47, 0x6c, 0x51, 0x47, 0x61, 0x0a, 0x09, 0x42, 0x70, 0x38, 0x4c, 0x45, 0x46, 0x30, 0x41, 0x58, 0x52, 0x4d, 0x68, 0x41, 0x52, 0x45, 0x7a, 0x45, 0x53, 0x45, 0x42, 0x45, 0x53, 0x50, 0x4a, 0x41, 0x52, 0x41, 0x43, 0x6c, 0x73, 0x54, 0x2b, 0x38, 0x50, 0x31, 0x71, 0x78, 0x41, 0x58, 0x56, 0x2b, 0x78, 0x38, 0x45, 0x34, 0x66, 0x6f, 0x72, 0x42, 0x4f, 0x48, 0x37, 0x48, 0x77, 0x41, 0x43, 0x41, 0x48, 0x50, 0x2f, 0x34, 0x77, 0x58, 0x5a, 0x42, 0x66, 0x41, 0x41, 0x43, 0x77, 0x41, 0x58, 0x0a, 0x09, 0x41, 0x43, 0x4e, 0x41, 0x45, 0x77, 0x61, 0x56, 0x45, 0x67, 0x43, 0x56, 0x44, 0x4a, 0x45, 0x53, 0x6a, 0x42, 0x67, 0x4a, 0x47, 0x51, 0x38, 0x7a, 0x41, 0x78, 0x6b, 0x56, 0x45, 0x42, 0x67, 0x51, 0x2f, 0x4f, 0x7a, 0x38, 0x37, 0x44, 0x45, 0x41, 0x45, 0x4f, 0x54, 0x30, 0x37, 0x42, 0x44, 0x75, 0x4d, 0x41, 0x45, 0x69, 0x41, 0x42, 0x45, 0x51, 0x41, 0x44, 0x4d, 0x79, 0x41, 0x42, 0x45, 0x51, 0x41, 0x43, 0x63, 0x67, 0x41, 0x42, 0x45, 0x51, 0x0a, 0x09, 0x41, 0x43, 0x45, 0x67, 0x41, 0x42, 0x45, 0x51, 0x41, 0x41, 0x4d, 0x6e, 0x33, 0x50, 0x37, 0x39, 0x41, 0x51, 0x50, 0x63, 0x33, 0x41, 0x45, 0x42, 0x2f, 0x76, 0x2f, 0x63, 0x41, 0x54, 0x6f, 0x42, 0x65, 0x50, 0x36, 0x49, 0x2f, 0x73, 0x62, 0x2b, 0x78, 0x66, 0x36, 0x48, 0x41, 0x58, 0x6b, 0x46, 0x54, 0x50, 0x36, 0x34, 0x2f, 0x75, 0x58, 0x2b, 0x35, 0x76, 0x36, 0x34, 0x41, 0x55, 0x67, 0x42, 0x47, 0x67, 0x45, 0x62, 0x41, 0x55, 0x69, 0x6b, 0x0a, 0x09, 0x2f, 0x6c, 0x76, 0x2b, 0x6e, 0x76, 0x36, 0x66, 0x2f, 0x6c, 0x73, 0x42, 0x70, 0x41, 0x46, 0x69, 0x41, 0x57, 0x49, 0x42, 0x70, 0x51, 0x41, 0x43, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x53, 0x4e, 0x42, 0x64, 0x55, 0x41, 0x43, 0x41, 0x41, 0x54, 0x41, 0x44, 0x70, 0x41, 0x47, 0x41, 0x47, 0x56, 0x45, 0x41, 0x43, 0x56, 0x43, 0x59, 0x45, 0x53, 0x45, 0x41, 0x6f, 0x49, 0x41, 0x67, 0x51, 0x41, 0x42, 0x52, 0x6b, 0x4e, 0x50, 0x78, 0x45, 0x41, 0x0a, 0x09, 0x48, 0x41, 0x6b, 0x45, 0x46, 0x42, 0x44, 0x38, 0x37, 0x44, 0x4c, 0x38, 0x37, 0x42, 0x45, 0x58, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x2f, 0x54, 0x73, 0x31, 0x4f, 0x77, 0x77, 0x51, 0x41, 0x73, 0x50, 0x46, 0x52, 0x38, 0x56, 0x50, 0x78, 0x56, 0x66, 0x46, 0x61, 0x38, 0x56, 0x42, 0x51, 0x46, 0x64, 0x41, 0x52, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x6a, 0x4a, 0x53, 0x45, 0x79, 0x42, 0x42, 0x55, 0x55, 0x42, 0x43, 0x73, 0x42, 0x0a, 0x09, 0x45, 0x53, 0x4d, 0x42, 0x6b, 0x2f, 0x36, 0x4e, 0x6d, 0x70, 0x71, 0x4e, 0x2f, 0x6a, 0x67, 0x42, 0x79, 0x50, 0x73, 0x42, 0x41, 0x66, 0x37, 0x2f, 0x2b, 0x2f, 0x37, 0x4b, 0x42, 0x53, 0x2f, 0x39, 0x7a, 0x35, 0x4b, 0x48, 0x68, 0x70, 0x4b, 0x6d, 0x34, 0x39, 0x76, 0x64, 0x34, 0x76, 0x32, 0x6f, 0x41, 0x41, 0x49, 0x41, 0x63, 0x2f, 0x37, 0x34, 0x42, 0x64, 0x6b, 0x46, 0x38, 0x41, 0x41, 0x4c, 0x41, 0x42, 0x30, 0x41, 0x55, 0x6b, 0x41, 0x71, 0x0a, 0x09, 0x45, 0x52, 0x41, 0x43, 0x44, 0x77, 0x45, 0x4d, 0x44, 0x51, 0x77, 0x4f, 0x41, 0x51, 0x30, 0x4e, 0x44, 0x45, 0x49, 0x50, 0x48, 0x67, 0x77, 0x47, 0x6c, 0x52, 0x49, 0x41, 0x6c, 0x52, 0x69, 0x52, 0x45, 0x6f, 0x77, 0x4e, 0x48, 0x67, 0x30, 0x62, 0x44, 0x77, 0x77, 0x44, 0x43, 0x52, 0x6b, 0x62, 0x4d, 0x77, 0x4d, 0x5a, 0x46, 0x52, 0x41, 0x65, 0x45, 0x50, 0x7a, 0x73, 0x2f, 0x4f, 0x77, 0x52, 0x4f, 0x54, 0x6b, 0x52, 0x4f, 0x54, 0x45, 0x41, 0x0a, 0x09, 0x45, 0x4d, 0x54, 0x6b, 0x39, 0x4f, 0x77, 0x51, 0x37, 0x6a, 0x6b, 0x53, 0x4f, 0x54, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x52, 0x63, 0x35, 0x57, 0x53, 0x49, 0x42, 0x49, 0x67, 0x41, 0x52, 0x45, 0x41, 0x41, 0x7a, 0x4d, 0x67, 0x41, 0x52, 0x45, 0x41, 0x41, 0x54, 0x41, 0x53, 0x4d, 0x6e, 0x42, 0x67, 0x59, 0x6a, 0x49, 0x41, 0x41, 0x52, 0x45, 0x41, 0x41, 0x68, 0x49, 0x41, 0x41, 0x52, 0x0a, 0x09, 0x45, 0x41, 0x49, 0x44, 0x4a, 0x39, 0x7a, 0x2b, 0x2f, 0x51, 0x45, 0x44, 0x33, 0x4e, 0x77, 0x42, 0x41, 0x66, 0x37, 0x2f, 0x50, 0x77, 0x45, 0x4b, 0x39, 0x4e, 0x30, 0x68, 0x49, 0x78, 0x44, 0x2b, 0x78, 0x66, 0x36, 0x48, 0x41, 0x58, 0x6b, 0x42, 0x4f, 0x77, 0x45, 0x36, 0x41, 0x58, 0x6a, 0x52, 0x42, 0x55, 0x7a, 0x2b, 0x75, 0x50, 0x37, 0x6c, 0x2f, 0x75, 0x62, 0x2b, 0x75, 0x41, 0x46, 0x49, 0x41, 0x52, 0x6f, 0x42, 0x47, 0x77, 0x46, 0x49, 0x0a, 0x09, 0x2b, 0x73, 0x2f, 0x2b, 0x33, 0x65, 0x38, 0x43, 0x41, 0x67, 0x47, 0x6c, 0x41, 0x57, 0x45, 0x42, 0x59, 0x67, 0x47, 0x6c, 0x2f, 0x6c, 0x76, 0x2b, 0x6e, 0x76, 0x37, 0x38, 0x2f, 0x6f, 0x34, 0x41, 0x41, 0x41, 0x49, 0x41, 0x79, 0x51, 0x41, 0x41, 0x42, 0x56, 0x51, 0x46, 0x31, 0x51, 0x41, 0x54, 0x41, 0x42, 0x77, 0x41, 0x73, 0x55, 0x41, 0x31, 0x43, 0x51, 0x67, 0x48, 0x41, 0x77, 0x6f, 0x47, 0x45, 0x51, 0x4d, 0x45, 0x41, 0x77, 0x55, 0x52, 0x0a, 0x09, 0x42, 0x41, 0x51, 0x44, 0x51, 0x67, 0x59, 0x45, 0x41, 0x42, 0x55, 0x44, 0x42, 0x42, 0x57, 0x56, 0x43, 0x52, 0x53, 0x56, 0x44, 0x59, 0x45, 0x4c, 0x42, 0x41, 0x55, 0x47, 0x41, 0x78, 0x45, 0x4a, 0x41, 0x42, 0x77, 0x57, 0x44, 0x67, 0x55, 0x4b, 0x47, 0x52, 0x6b, 0x45, 0x45, 0x54, 0x38, 0x55, 0x43, 0x68, 0x77, 0x4d, 0x42, 0x42, 0x30, 0x51, 0x2f, 0x4f, 0x77, 0x79, 0x2f, 0x4d, 0x54, 0x73, 0x45, 0x52, 0x63, 0x35, 0x45, 0x54, 0x6b, 0x35, 0x0a, 0x09, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x7a, 0x7a, 0x30, 0x37, 0x4e, 0x54, 0x73, 0x45, 0x6a, 0x6b, 0x53, 0x4f, 0x52, 0x49, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x45, 0x52, 0x63, 0x35, 0x57, 0x53, 0x4b, 0x79, 0x51, 0x42, 0x34, 0x42, 0x41, 0x56, 0x31, 0x41, 0x51, 0x6e, 0x6f, 0x54, 0x41, 0x51, 0x55, 0x41, 0x42, 0x51, 0x45, 0x46, 0x41, 0x67, 0x59, 0x44, 0x42, 0x77, 0x51, 0x56, 0x0a, 0x09, 0x41, 0x42, 0x55, 0x42, 0x46, 0x41, 0x49, 0x57, 0x41, 0x78, 0x63, 0x45, 0x4a, 0x51, 0x41, 0x6c, 0x41, 0x53, 0x55, 0x43, 0x4a, 0x67, 0x4d, 0x6e, 0x42, 0x69, 0x59, 0x48, 0x4a, 0x67, 0x67, 0x6d, 0x43, 0x53, 0x41, 0x65, 0x4e, 0x67, 0x45, 0x32, 0x41, 0x6b, 0x59, 0x42, 0x52, 0x67, 0x4a, 0x6f, 0x42, 0x58, 0x55, 0x45, 0x64, 0x51, 0x56, 0x33, 0x45, 0x34, 0x67, 0x47, 0x69, 0x41, 0x65, 0x59, 0x42, 0x70, 0x67, 0x48, 0x48, 0x31, 0x30, 0x41, 0x0a, 0x09, 0x58, 0x51, 0x45, 0x65, 0x41, 0x52, 0x63, 0x54, 0x49, 0x77, 0x4d, 0x75, 0x41, 0x53, 0x73, 0x42, 0x45, 0x53, 0x4d, 0x52, 0x49, 0x53, 0x41, 0x57, 0x46, 0x52, 0x51, 0x47, 0x41, 0x52, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x6a, 0x41, 0x34, 0x31, 0x42, 0x65, 0x7a, 0x37, 0x4e, 0x32, 0x62, 0x39, 0x4b, 0x69, 0x33, 0x6a, 0x63, 0x79, 0x67, 0x48, 0x49, 0x41, 0x51, 0x44, 0x38, 0x67, 0x2f, 0x32, 0x4a, 0x2f, 0x70, 0x4b, 0x56, 0x0a, 0x09, 0x6c, 0x5a, 0x49, 0x43, 0x76, 0x42, 0x61, 0x51, 0x66, 0x76, 0x35, 0x6f, 0x41, 0x58, 0x2b, 0x57, 0x59, 0x76, 0x32, 0x4a, 0x42, 0x64, 0x58, 0x57, 0x32, 0x49, 0x32, 0x36, 0x41, 0x6b, 0x2f, 0x39, 0x37, 0x6f, 0x65, 0x44, 0x67, 0x34, 0x55, 0x41, 0x41, 0x41, 0x45, 0x41, 0x68, 0x2f, 0x2f, 0x6a, 0x42, 0x4b, 0x49, 0x46, 0x38, 0x41, 0x41, 0x6e, 0x41, 0x48, 0x35, 0x41, 0x50, 0x41, 0x30, 0x4d, 0x41, 0x67, 0x34, 0x4c, 0x41, 0x68, 0x34, 0x66, 0x0a, 0x09, 0x48, 0x67, 0x67, 0x4a, 0x41, 0x67, 0x63, 0x4b, 0x41, 0x68, 0x38, 0x66, 0x48, 0x6b, 0x49, 0x4b, 0x43, 0x78, 0x34, 0x66, 0x42, 0x42, 0x55, 0x42, 0x41, 0x42, 0x57, 0x68, 0x46, 0x4a, 0x51, 0x59, 0x6c, 0x52, 0x45, 0x45, 0x6c, 0x51, 0x43, 0x55, 0x4a, 0x5a, 0x45, 0x52, 0x6a, 0x43, 0x67, 0x65, 0x43, 0x67, 0x73, 0x66, 0x47, 0x77, 0x63, 0x41, 0x49, 0x68, 0x73, 0x5a, 0x44, 0x69, 0x30, 0x48, 0x47, 0x52, 0x51, 0x69, 0x4b, 0x42, 0x44, 0x63, 0x0a, 0x09, 0x78, 0x4f, 0x7a, 0x38, 0x37, 0x4f, 0x51, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x6b, 0x39, 0x4f, 0x54, 0x73, 0x45, 0x4f, 0x37, 0x32, 0x37, 0x68, 0x44, 0x47, 0x45, 0x52, 0x63, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x44, 0x75, 0x30, 0x52, 0x46, 0x7a, 0x6b, 0x48, 0x45, 0x41, 0x37, 0x74, 0x45, 0x52, 0x63, 0x35, 0x57, 0x53, 0x4b, 0x79, 0x44, 0x79, 0x6b, 0x42, 0x41, 0x56, 0x32, 0x32, 0x0a, 0x09, 0x48, 0x79, 0x6b, 0x76, 0x4b, 0x55, 0x38, 0x70, 0x41, 0x31, 0x30, 0x42, 0x46, 0x53, 0x34, 0x42, 0x49, 0x79, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x48, 0x77, 0x45, 0x65, 0x41, 0x52, 0x55, 0x55, 0x42, 0x43, 0x45, 0x69, 0x4a, 0x69, 0x63, 0x31, 0x48, 0x67, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x76, 0x41, 0x53, 0x34, 0x42, 0x4e, 0x54, 0x51, 0x6b, 0x4d, 0x7a, 0x49, 0x57, 0x42, 0x45, 0x68, 0x7a, 0x7a, 0x46, 0x2b, 0x6c, 0x0a, 0x09, 0x73, 0x33, 0x65, 0x6d, 0x65, 0x75, 0x4c, 0x58, 0x2f, 0x74, 0x33, 0x2b, 0x35, 0x32, 0x72, 0x76, 0x67, 0x48, 0x76, 0x73, 0x63, 0x71, 0x32, 0x38, 0x68, 0x35, 0x70, 0x37, 0x34, 0x73, 0x6f, 0x42, 0x46, 0x2f, 0x56, 0x70, 0x32, 0x67, 0x57, 0x6b, 0x78, 0x54, 0x63, 0x32, 0x67, 0x48, 0x5a, 0x6a, 0x5a, 0x52, 0x38, 0x5a, 0x4b, 0x39, 0x6d, 0x32, 0x32, 0x65, 0x41, 0x77, 0x4c, 0x39, 0x42, 0x46, 0x52, 0x6f, 0x68, 0x2b, 0x62, 0x6e, 0x77, 0x66, 0x0a, 0x09, 0x47, 0x43, 0x33, 0x41, 0x71, 0x38, 0x62, 0x6b, 0x4a, 0x67, 0x41, 0x41, 0x41, 0x66, 0x2f, 0x36, 0x41, 0x41, 0x41, 0x45, 0x36, 0x51, 0x58, 0x56, 0x41, 0x41, 0x63, 0x41, 0x53, 0x6b, 0x41, 0x4f, 0x42, 0x67, 0x4b, 0x56, 0x41, 0x49, 0x45, 0x45, 0x41, 0x55, 0x41, 0x44, 0x48, 0x41, 0x42, 0x41, 0x42, 0x51, 0x67, 0x51, 0x31, 0x4f, 0x54, 0x38, 0x35, 0x44, 0x45, 0x41, 0x4c, 0x2f, 0x54, 0x73, 0x4d, 0x6a, 0x41, 0x42, 0x53, 0x37, 0x41, 0x4b, 0x0a, 0x09, 0x56, 0x46, 0x69, 0x39, 0x41, 0x41, 0x67, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x41, 0x67, 0x41, 0x43, 0x50, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x45, 0x77, 0x41, 0x4a, 0x48, 0x77, 0x41, 0x51, 0x41, 0x52, 0x41, 0x43, 0x48, 0x77, 0x63, 0x51, 0x43, 0x55, 0x41, 0x4a, 0x63, 0x41, 0x6d, 0x66, 0x43, 0x51, 0x6c, 0x64, 0x41, 0x79, 0x45, 0x56, 0x49, 0x52, 0x45, 0x6a, 0x45, 0x53, 0x45, 0x47, 0x42, 0x4f, 0x2f, 0x39, 0x0a, 0x09, 0x37, 0x73, 0x76, 0x39, 0x37, 0x67, 0x58, 0x56, 0x71, 0x76, 0x72, 0x56, 0x42, 0x53, 0x73, 0x41, 0x41, 0x41, 0x45, 0x41, 0x73, 0x76, 0x2f, 0x6a, 0x42, 0x53, 0x6b, 0x46, 0x31, 0x51, 0x41, 0x52, 0x41, 0x45, 0x74, 0x41, 0x46, 0x67, 0x67, 0x43, 0x45, 0x51, 0x73, 0x41, 0x42, 0x5a, 0x55, 0x4f, 0x6a, 0x41, 0x6b, 0x41, 0x67, 0x52, 0x49, 0x49, 0x48, 0x41, 0x6f, 0x34, 0x41, 0x52, 0x77, 0x41, 0x51, 0x52, 0x49, 0x51, 0x2f, 0x4f, 0x7a, 0x38, 0x0a, 0x09, 0x37, 0x44, 0x45, 0x41, 0x45, 0x4f, 0x51, 0x79, 0x39, 0x4f, 0x77, 0x52, 0x4f, 0x54, 0x6b, 0x35, 0x4f, 0x54, 0x41, 0x42, 0x53, 0x37, 0x41, 0x51, 0x56, 0x46, 0x69, 0x39, 0x41, 0x42, 0x49, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x42, 0x49, 0x41, 0x45, 0x76, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6d, 0x32, 0x48, 0x78, 0x4f, 0x50, 0x45, 0x35, 0x38, 0x54, 0x41, 0x31, 0x30, 0x54, 0x4d, 0x78, 0x45, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x0a, 0x09, 0x4e, 0x6a, 0x55, 0x52, 0x4d, 0x78, 0x45, 0x51, 0x41, 0x43, 0x45, 0x67, 0x41, 0x42, 0x47, 0x79, 0x79, 0x36, 0x37, 0x44, 0x77, 0x71, 0x37, 0x4c, 0x2f, 0x74, 0x2f, 0x2b, 0x35, 0x76, 0x37, 0x6c, 0x2f, 0x74, 0x38, 0x46, 0x31, 0x66, 0x78, 0x31, 0x38, 0x4e, 0x50, 0x54, 0x38, 0x41, 0x4f, 0x4c, 0x2f, 0x46, 0x7a, 0x2b, 0x33, 0x50, 0x37, 0x57, 0x41, 0x53, 0x6f, 0x42, 0x4a, 0x41, 0x41, 0x42, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x56, 0x6f, 0x0a, 0x09, 0x42, 0x64, 0x55, 0x41, 0x42, 0x67, 0x43, 0x33, 0x51, 0x43, 0x63, 0x45, 0x45, 0x51, 0x55, 0x47, 0x42, 0x51, 0x4d, 0x52, 0x41, 0x67, 0x4d, 0x47, 0x42, 0x67, 0x55, 0x44, 0x45, 0x51, 0x51, 0x44, 0x41, 0x41, 0x45, 0x41, 0x41, 0x68, 0x45, 0x42, 0x41, 0x51, 0x42, 0x43, 0x41, 0x77, 0x51, 0x42, 0x72, 0x77, 0x41, 0x47, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x41, 0x55, 0x46, 0x41, 0x51, 0x63, 0x51, 0x31, 0x4d, 0x51, 0x58, 0x4f, 0x54, 0x45, 0x41, 0x0a, 0x09, 0x4c, 0x2b, 0x77, 0x79, 0x4f, 0x54, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x57, 0x53, 0x4b, 0x79, 0x55, 0x41, 0x67, 0x42, 0x41, 0x56, 0x31, 0x41, 0x59, 0x67, 0x41, 0x44, 0x4b, 0x67, 0x4e, 0x48, 0x42, 0x45, 0x63, 0x46, 0x57, 0x67, 0x4e, 0x39, 0x41, 0x34, 0x4d, 0x44, 0x42, 0x77, 0x59, 0x41, 0x42, 0x77, 0x49, 0x49, 0x0a, 0x09, 0x42, 0x41, 0x6b, 0x47, 0x46, 0x51, 0x45, 0x55, 0x41, 0x68, 0x6f, 0x45, 0x47, 0x67, 0x55, 0x71, 0x41, 0x43, 0x59, 0x42, 0x4a, 0x67, 0x49, 0x70, 0x42, 0x43, 0x6b, 0x46, 0x4a, 0x51, 0x59, 0x67, 0x43, 0x44, 0x67, 0x41, 0x4d, 0x77, 0x45, 0x7a, 0x41, 0x6a, 0x77, 0x45, 0x50, 0x41, 0x55, 0x33, 0x42, 0x6b, 0x67, 0x41, 0x52, 0x51, 0x46, 0x46, 0x41, 0x6b, 0x6b, 0x45, 0x53, 0x51, 0x56, 0x48, 0x42, 0x6c, 0x6b, 0x41, 0x56, 0x67, 0x5a, 0x6d, 0x0a, 0x09, 0x41, 0x6d, 0x6b, 0x45, 0x61, 0x51, 0x56, 0x36, 0x41, 0x48, 0x59, 0x42, 0x64, 0x67, 0x4a, 0x35, 0x42, 0x48, 0x6b, 0x46, 0x64, 0x51, 0x61, 0x41, 0x43, 0x4a, 0x67, 0x41, 0x6c, 0x77, 0x59, 0x70, 0x58, 0x51, 0x42, 0x64, 0x49, 0x51, 0x45, 0x7a, 0x43, 0x51, 0x45, 0x7a, 0x41, 0x51, 0x4a, 0x4b, 0x2f, 0x63, 0x62, 0x54, 0x41, 0x64, 0x6b, 0x42, 0x32, 0x74, 0x4c, 0x39, 0x78, 0x77, 0x58, 0x56, 0x2b, 0x78, 0x63, 0x45, 0x36, 0x66, 0x6f, 0x72, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x52, 0x41, 0x41, 0x41, 0x42, 0x36, 0x59, 0x46, 0x31, 0x51, 0x41, 0x4d, 0x41, 0x58, 0x74, 0x41, 0x53, 0x51, 0x55, 0x61, 0x42, 0x67, 0x55, 0x4a, 0x43, 0x67, 0x6b, 0x45, 0x47, 0x67, 0x6f, 0x4a, 0x41, 0x78, 0x6f, 0x4b, 0x43, 0x77, 0x6f, 0x43, 0x47, 0x67, 0x45, 0x43, 0x43, 0x77, 0x73, 0x4b, 0x42, 0x68, 0x45, 0x48, 0x43, 0x41, 0x63, 0x46, 0x45, 0x51, 0x51, 0x46, 0x43, 0x41, 0x67, 0x48, 0x41, 0x68, 0x45, 0x44, 0x0a, 0x09, 0x41, 0x67, 0x77, 0x41, 0x44, 0x41, 0x45, 0x52, 0x41, 0x41, 0x41, 0x4d, 0x51, 0x67, 0x6f, 0x46, 0x41, 0x67, 0x4d, 0x47, 0x41, 0x77, 0x43, 0x76, 0x43, 0x77, 0x67, 0x4d, 0x43, 0x77, 0x6f, 0x4a, 0x43, 0x41, 0x59, 0x46, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x73, 0x48, 0x41, 0x41, 0x30, 0x51, 0x31, 0x4d, 0x77, 0x58, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x7a, 0x7a, 0x73, 0x4d, 0x6a, 0x49, 0x58, 0x4f, 0x54, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x0a, 0x09, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x57, 0x53, 0x4b, 0x79, 0x41, 0x41, 0x34, 0x42, 0x41, 0x56, 0x31, 0x41, 0x38, 0x67, 0x59, 0x43, 0x42, 0x67, 0x55, 0x43, 0x43, 0x67, 0x41, 0x4b, 0x41, 0x41, 0x6f, 0x53, 0x43, 0x69, 0x67, 0x46, 0x0a, 0x09, 0x4a, 0x41, 0x6f, 0x67, 0x43, 0x6a, 0x34, 0x43, 0x50, 0x67, 0x55, 0x30, 0x43, 0x6a, 0x41, 0x4b, 0x54, 0x41, 0x4a, 0x4e, 0x42, 0x55, 0x49, 0x4b, 0x51, 0x41, 0x70, 0x5a, 0x41, 0x6d, 0x6f, 0x43, 0x61, 0x77, 0x56, 0x6e, 0x43, 0x6d, 0x41, 0x4b, 0x65, 0x77, 0x4a, 0x2f, 0x41, 0x6e, 0x77, 0x46, 0x66, 0x77, 0x57, 0x41, 0x43, 0x70, 0x59, 0x43, 0x6c, 0x51, 0x55, 0x64, 0x42, 0x77, 0x41, 0x4a, 0x41, 0x67, 0x67, 0x44, 0x41, 0x41, 0x51, 0x47, 0x0a, 0x09, 0x42, 0x51, 0x41, 0x46, 0x41, 0x41, 0x59, 0x42, 0x42, 0x77, 0x51, 0x49, 0x41, 0x41, 0x67, 0x48, 0x43, 0x51, 0x41, 0x4a, 0x42, 0x41, 0x6f, 0x4b, 0x44, 0x41, 0x41, 0x4f, 0x47, 0x67, 0x4d, 0x56, 0x42, 0x42, 0x55, 0x49, 0x47, 0x51, 0x77, 0x51, 0x44, 0x69, 0x41, 0x45, 0x49, 0x51, 0x55, 0x67, 0x42, 0x69, 0x41, 0x48, 0x49, 0x41, 0x67, 0x6a, 0x43, 0x53, 0x51, 0x4b, 0x4a, 0x51, 0x73, 0x67, 0x44, 0x69, 0x41, 0x4f, 0x50, 0x41, 0x49, 0x36, 0x0a, 0x09, 0x41, 0x7a, 0x55, 0x45, 0x4d, 0x77, 0x55, 0x77, 0x43, 0x44, 0x59, 0x4a, 0x4f, 0x51, 0x73, 0x2f, 0x44, 0x44, 0x41, 0x4f, 0x52, 0x67, 0x42, 0x47, 0x41, 0x55, 0x6f, 0x43, 0x51, 0x41, 0x52, 0x46, 0x42, 0x55, 0x41, 0x46, 0x51, 0x67, 0x5a, 0x43, 0x42, 0x30, 0x49, 0x49, 0x51, 0x41, 0x68, 0x41, 0x43, 0x55, 0x51, 0x4b, 0x54, 0x51, 0x78, 0x41, 0x44, 0x6b, 0x41, 0x4f, 0x57, 0x41, 0x4a, 0x57, 0x43, 0x46, 0x6b, 0x4d, 0x55, 0x41, 0x35, 0x6d, 0x0a, 0x09, 0x41, 0x6d, 0x63, 0x44, 0x59, 0x51, 0x52, 0x69, 0x42, 0x57, 0x41, 0x47, 0x59, 0x41, 0x64, 0x67, 0x43, 0x47, 0x51, 0x4a, 0x5a, 0x41, 0x70, 0x6b, 0x43, 0x33, 0x63, 0x41, 0x64, 0x67, 0x46, 0x37, 0x41, 0x6e, 0x67, 0x44, 0x64, 0x77, 0x52, 0x30, 0x42, 0x58, 0x6b, 0x47, 0x65, 0x51, 0x64, 0x33, 0x43, 0x48, 0x41, 0x49, 0x65, 0x41, 0x78, 0x2f, 0x44, 0x48, 0x38, 0x4f, 0x68, 0x67, 0x4b, 0x48, 0x41, 0x34, 0x67, 0x45, 0x69, 0x51, 0x57, 0x46, 0x0a, 0x09, 0x43, 0x59, 0x6f, 0x4c, 0x6a, 0x77, 0x36, 0x58, 0x42, 0x4a, 0x38, 0x4f, 0x72, 0x77, 0x35, 0x62, 0x58, 0x51, 0x42, 0x64, 0x45, 0x7a, 0x4d, 0x4a, 0x41, 0x54, 0x4d, 0x4a, 0x41, 0x54, 0x4d, 0x42, 0x49, 0x77, 0x6b, 0x42, 0x49, 0x30, 0x54, 0x4d, 0x41, 0x54, 0x6f, 0x42, 0x4f, 0x65, 0x4d, 0x42, 0x4f, 0x67, 0x45, 0x35, 0x7a, 0x66, 0x36, 0x4a, 0x2f, 0x76, 0x37, 0x46, 0x2f, 0x73, 0x4c, 0x2b, 0x42, 0x64, 0x58, 0x37, 0x45, 0x67, 0x54, 0x75, 0x0a, 0x09, 0x2b, 0x78, 0x49, 0x45, 0x37, 0x76, 0x6f, 0x72, 0x42, 0x52, 0x44, 0x36, 0x38, 0x41, 0x41, 0x42, 0x41, 0x44, 0x30, 0x41, 0x41, 0x41, 0x55, 0x37, 0x42, 0x64, 0x55, 0x41, 0x43, 0x77, 0x46, 0x64, 0x51, 0x45, 0x59, 0x4a, 0x45, 0x51, 0x6f, 0x4c, 0x43, 0x67, 0x67, 0x52, 0x42, 0x77, 0x67, 0x4c, 0x43, 0x77, 0x6f, 0x49, 0x45, 0x51, 0x6b, 0x49, 0x42, 0x51, 0x59, 0x46, 0x42, 0x78, 0x45, 0x47, 0x42, 0x67, 0x55, 0x44, 0x45, 0x51, 0x51, 0x46, 0x0a, 0x09, 0x42, 0x41, 0x49, 0x52, 0x41, 0x51, 0x49, 0x46, 0x42, 0x51, 0x51, 0x43, 0x45, 0x51, 0x4d, 0x43, 0x43, 0x77, 0x41, 0x4c, 0x41, 0x52, 0x45, 0x41, 0x41, 0x41, 0x74, 0x43, 0x43, 0x77, 0x67, 0x46, 0x41, 0x67, 0x51, 0x44, 0x41, 0x4b, 0x38, 0x4a, 0x42, 0x67, 0x73, 0x49, 0x42, 0x51, 0x49, 0x45, 0x41, 0x41, 0x51, 0x47, 0x41, 0x41, 0x6f, 0x4d, 0x45, 0x4e, 0x54, 0x45, 0x33, 0x4d, 0x51, 0x52, 0x46, 0x7a, 0x6b, 0x78, 0x41, 0x43, 0x38, 0x38, 0x0a, 0x09, 0x37, 0x44, 0x49, 0x58, 0x4f, 0x54, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x56, 0x6b, 0x69, 0x41, 0x55, 0x75, 0x77, 0x44, 0x46, 0x52, 0x4c, 0x73, 0x41, 0x31, 0x55, 0x57, 0x30, 0x75, 0x77, 0x0a, 0x09, 0x44, 0x6c, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x44, 0x50, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x44, 0x41, 0x41, 0x4d, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x55, 0x43, 0x34, 0x42, 0x77, 0x49, 0x49, 0x43, 0x42, 0x59, 0x43, 0x47, 0x51, 0x67, 0x58, 0x43, 0x79, 0x63, 0x49, 0x4a, 0x77, 0x73, 0x30, 0x41, 0x6a, 0x67, 0x49, 0x4e, 0x67, 0x74, 0x4c, 0x43, 0x46, 0x67, 0x46, 0x57, 0x77, 0x68, 0x6d, 0x41, 0x6d, 0x73, 0x49, 0x0a, 0x09, 0x64, 0x77, 0x4a, 0x33, 0x43, 0x34, 0x59, 0x43, 0x67, 0x41, 0x4b, 0x48, 0x42, 0x59, 0x73, 0x49, 0x68, 0x51, 0x75, 0x55, 0x41, 0x70, 0x41, 0x43, 0x6c, 0x77, 0x57, 0x64, 0x43, 0x4a, 0x59, 0x4c, 0x47, 0x77, 0x59, 0x42, 0x43, 0x51, 0x4d, 0x49, 0x42, 0x77, 0x63, 0x4a, 0x46, 0x67, 0x45, 0x5a, 0x41, 0x78, 0x6b, 0x48, 0x46, 0x77, 0x6b, 0x51, 0x44, 0x53, 0x59, 0x42, 0x4b, 0x41, 0x49, 0x70, 0x41, 0x79, 0x59, 0x46, 0x4b, 0x41, 0x63, 0x6e, 0x0a, 0x09, 0x43, 0x53, 0x6b, 0x4c, 0x49, 0x41, 0x30, 0x31, 0x41, 0x44, 0x51, 0x42, 0x50, 0x41, 0x4d, 0x37, 0x42, 0x44, 0x6f, 0x47, 0x4f, 0x77, 0x63, 0x30, 0x43, 0x54, 0x51, 0x4b, 0x4f, 0x41, 0x73, 0x2f, 0x44, 0x55, 0x67, 0x4a, 0x54, 0x77, 0x31, 0x59, 0x43, 0x31, 0x38, 0x4e, 0x5a, 0x51, 0x42, 0x6c, 0x41, 0x57, 0x6f, 0x44, 0x61, 0x67, 0x52, 0x6f, 0x42, 0x57, 0x6b, 0x47, 0x61, 0x51, 0x64, 0x73, 0x43, 0x57, 0x77, 0x4b, 0x65, 0x41, 0x4e, 0x35, 0x0a, 0x09, 0x42, 0x6e, 0x6b, 0x48, 0x65, 0x41, 0x68, 0x39, 0x43, 0x58, 0x38, 0x4b, 0x65, 0x41, 0x75, 0x41, 0x41, 0x49, 0x41, 0x42, 0x67, 0x77, 0x4b, 0x49, 0x41, 0x34, 0x55, 0x46, 0x68, 0x41, 0x69, 0x44, 0x43, 0x34, 0x38, 0x4e, 0x6b, 0x41, 0x43, 0x51, 0x41, 0x5a, 0x51, 0x43, 0x6c, 0x77, 0x57, 0x58, 0x42, 0x70, 0x55, 0x49, 0x6b, 0x77, 0x75, 0x66, 0x44, 0x61, 0x38, 0x4e, 0x51, 0x46, 0x30, 0x41, 0x58, 0x52, 0x4d, 0x7a, 0x43, 0x51, 0x45, 0x7a, 0x0a, 0x09, 0x43, 0x51, 0x45, 0x6a, 0x43, 0x51, 0x45, 0x6a, 0x41, 0x59, 0x48, 0x5a, 0x41, 0x58, 0x4d, 0x42, 0x64, 0x64, 0x6e, 0x2b, 0x49, 0x41, 0x49, 0x41, 0x32, 0x66, 0x35, 0x63, 0x2f, 0x6c, 0x6e, 0x61, 0x41, 0x68, 0x55, 0x46, 0x31, 0x66, 0x33, 0x56, 0x41, 0x69, 0x76, 0x39, 0x4d, 0x2f, 0x7a, 0x34, 0x41, 0x6e, 0x76, 0x39, 0x68, 0x51, 0x4d, 0x64, 0x41, 0x41, 0x48, 0x2f, 0x2f, 0x41, 0x41, 0x41, 0x42, 0x4f, 0x63, 0x46, 0x31, 0x51, 0x41, 0x49, 0x0a, 0x09, 0x41, 0x4a, 0x52, 0x41, 0x4b, 0x41, 0x4d, 0x52, 0x42, 0x41, 0x55, 0x45, 0x41, 0x68, 0x45, 0x42, 0x41, 0x67, 0x55, 0x46, 0x42, 0x41, 0x49, 0x52, 0x41, 0x77, 0x49, 0x49, 0x41, 0x41, 0x67, 0x42, 0x45, 0x51, 0x41, 0x41, 0x43, 0x45, 0x49, 0x43, 0x41, 0x77, 0x43, 0x76, 0x42, 0x67, 0x49, 0x48, 0x42, 0x45, 0x41, 0x46, 0x48, 0x41, 0x42, 0x41, 0x42, 0x77, 0x6b, 0x51, 0x31, 0x4f, 0x54, 0x38, 0x35, 0x42, 0x49, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x0a, 0x09, 0x37, 0x44, 0x49, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x31, 0x5a, 0x49, 0x72, 0x49, 0x41, 0x43, 0x67, 0x45, 0x42, 0x58, 0x55, 0x41, 0x38, 0x42, 0x51, 0x49, 0x55, 0x41, 0x6a, 0x55, 0x43, 0x4d, 0x41, 0x49, 0x77, 0x42, 0x54, 0x41, 0x49, 0x52, 0x67, 0x4a, 0x41, 0x41, 0x6b, 0x41, 0x46, 0x51, 0x41, 0x68, 0x52, 0x0a, 0x09, 0x41, 0x6c, 0x45, 0x46, 0x55, 0x51, 0x68, 0x6c, 0x41, 0x6f, 0x51, 0x43, 0x6b, 0x77, 0x49, 0x51, 0x46, 0x67, 0x45, 0x61, 0x41, 0x78, 0x38, 0x4b, 0x4a, 0x67, 0x45, 0x70, 0x41, 0x7a, 0x63, 0x42, 0x4f, 0x41, 0x4e, 0x41, 0x43, 0x6d, 0x63, 0x42, 0x61, 0x41, 0x4e, 0x34, 0x41, 0x33, 0x41, 0x4b, 0x6e, 0x77, 0x6f, 0x4e, 0x58, 0x51, 0x42, 0x64, 0x41, 0x7a, 0x4d, 0x4a, 0x41, 0x54, 0x4d, 0x42, 0x45, 0x53, 0x4d, 0x52, 0x42, 0x4e, 0x6b, 0x42, 0x0a, 0x09, 0x6e, 0x67, 0x47, 0x62, 0x32, 0x66, 0x33, 0x77, 0x79, 0x77, 0x58, 0x56, 0x2f, 0x5a, 0x6f, 0x43, 0x5a, 0x76, 0x7a, 0x79, 0x2f, 0x54, 0x6b, 0x43, 0x78, 0x77, 0x41, 0x41, 0x41, 0x51, 0x42, 0x63, 0x41, 0x41, 0x41, 0x46, 0x48, 0x77, 0x58, 0x56, 0x41, 0x41, 0x6b, 0x41, 0x6d, 0x30, 0x41, 0x62, 0x41, 0x78, 0x45, 0x48, 0x43, 0x41, 0x63, 0x49, 0x45, 0x51, 0x49, 0x44, 0x41, 0x6b, 0x49, 0x49, 0x6c, 0x51, 0x43, 0x42, 0x41, 0x35, 0x55, 0x46, 0x0a, 0x09, 0x43, 0x41, 0x4d, 0x41, 0x41, 0x55, 0x49, 0x45, 0x41, 0x41, 0x59, 0x4b, 0x45, 0x4e, 0x7a, 0x45, 0x31, 0x4f, 0x51, 0x52, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x43, 0x2f, 0x73, 0x39, 0x4f, 0x77, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x31, 0x5a, 0x49, 0x67, 0x46, 0x4c, 0x73, 0x41, 0x6c, 0x55, 0x53, 0x37, 0x41, 0x4b, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x4b, 0x41, 0x45, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x51, 0x41, 0x4b, 0x41, 0x41, 0x72, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x51, 0x45, 0x41, 0x46, 0x41, 0x67, 0x6f, 0x48, 0x47, 0x41, 0x63, 0x70, 0x41, 0x69, 0x59, 0x48, 0x4f, 0x41, 0x64, 0x49, 0x41, 0x6b, 0x63, 0x48, 0x53, 0x41, 0x67, 0x4a, 0x42, 0x51, 0x4d, 0x4c, 0x43, 0x41, 0x41, 0x4c, 0x46, 0x67, 0x4d, 0x61, 0x43, 0x42, 0x41, 0x4c, 0x4c, 0x77, 0x73, 0x31, 0x41, 0x7a, 0x6b, 0x49, 0x50, 0x77, 0x74, 0x48, 0x0a, 0x09, 0x41, 0x30, 0x6f, 0x49, 0x54, 0x77, 0x74, 0x56, 0x41, 0x31, 0x6b, 0x49, 0x5a, 0x67, 0x4e, 0x70, 0x43, 0x47, 0x38, 0x4c, 0x64, 0x77, 0x4e, 0x34, 0x43, 0x48, 0x38, 0x4c, 0x6e, 0x77, 0x73, 0x57, 0x58, 0x51, 0x42, 0x64, 0x45, 0x79, 0x45, 0x56, 0x41, 0x53, 0x45, 0x56, 0x49, 0x54, 0x55, 0x42, 0x49, 0x58, 0x4d, 0x45, 0x6c, 0x66, 0x78, 0x51, 0x41, 0x38, 0x66, 0x37, 0x50, 0x51, 0x4f, 0x77, 0x2f, 0x47, 0x63, 0x46, 0x31, 0x5a, 0x72, 0x37, 0x0a, 0x09, 0x62, 0x36, 0x71, 0x61, 0x42, 0x4a, 0x45, 0x41, 0x41, 0x41, 0x45, 0x41, 0x73, 0x50, 0x37, 0x79, 0x41, 0x6c, 0x67, 0x47, 0x46, 0x41, 0x41, 0x48, 0x41, 0x46, 0x4e, 0x41, 0x44, 0x77, 0x53, 0x70, 0x42, 0x72, 0x49, 0x43, 0x71, 0x51, 0x43, 0x78, 0x43, 0x41, 0x55, 0x42, 0x41, 0x30, 0x4d, 0x41, 0x43, 0x42, 0x44, 0x63, 0x2f, 0x4d, 0x77, 0x79, 0x4d, 0x51, 0x41, 0x51, 0x2f, 0x4f, 0x7a, 0x30, 0x37, 0x44, 0x41, 0x42, 0x53, 0x37, 0x41, 0x4d, 0x0a, 0x09, 0x56, 0x46, 0x69, 0x39, 0x41, 0x41, 0x6a, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x41, 0x67, 0x41, 0x43, 0x41, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x53, 0x37, 0x41, 0x53, 0x56, 0x45, 0x75, 0x77, 0x45, 0x31, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x43, 0x41, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x43, 0x41, 0x41, 0x49, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x52, 0x4d, 0x68, 0x46, 0x53, 0x4d, 0x52, 0x0a, 0x09, 0x4d, 0x78, 0x55, 0x68, 0x73, 0x41, 0x47, 0x6f, 0x38, 0x50, 0x44, 0x2b, 0x57, 0x41, 0x59, 0x55, 0x6a, 0x2f, 0x6e, 0x38, 0x6a, 0x77, 0x41, 0x42, 0x41, 0x41, 0x44, 0x2f, 0x51, 0x67, 0x4b, 0x79, 0x42, 0x64, 0x55, 0x41, 0x41, 0x77, 0x41, 0x74, 0x51, 0x42, 0x51, 0x43, 0x47, 0x67, 0x45, 0x42, 0x41, 0x41, 0x41, 0x61, 0x41, 0x77, 0x4d, 0x43, 0x51, 0x67, 0x47, 0x66, 0x41, 0x49, 0x45, 0x45, 0x41, 0x67, 0x41, 0x42, 0x41, 0x79, 0x2f, 0x45, 0x0a, 0x09, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x30, 0x37, 0x44, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x56, 0x6b, 0x69, 0x45, 0x77, 0x45, 0x6a, 0x41, 0x61, 0x6f, 0x43, 0x43, 0x4b, 0x72, 0x39, 0x2b, 0x41, 0x58, 0x56, 0x2b, 0x57, 0x30, 0x47, 0x6b, 0x77, 0x41, 0x41, 0x41, 0x51, 0x44, 0x48, 0x2f, 0x76, 0x49, 0x43, 0x62, 0x77, 0x59, 0x55, 0x41, 0x41, 0x63, 0x41, 0x50, 0x45, 0x41, 0x51, 0x0a, 0x09, 0x41, 0x36, 0x6b, 0x42, 0x73, 0x67, 0x57, 0x70, 0x41, 0x4c, 0x45, 0x49, 0x41, 0x45, 0x4d, 0x45, 0x42, 0x67, 0x49, 0x45, 0x43, 0x42, 0x44, 0x38, 0x50, 0x4e, 0x7a, 0x73, 0x4d, 0x51, 0x41, 0x51, 0x2f, 0x4f, 0x7a, 0x30, 0x37, 0x44, 0x41, 0x42, 0x53, 0x37, 0x41, 0x50, 0x56, 0x45, 0x75, 0x77, 0x45, 0x46, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x43, 0x50, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x43, 0x41, 0x41, 0x49, 0x41, 0x45, 0x41, 0x34, 0x0a, 0x09, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x45, 0x52, 0x49, 0x54, 0x55, 0x7a, 0x45, 0x53, 0x4d, 0x31, 0x41, 0x6d, 0x2f, 0x2b, 0x57, 0x4f, 0x2f, 0x76, 0x42, 0x68, 0x54, 0x34, 0x33, 0x6f, 0x38, 0x47, 0x42, 0x49, 0x38, 0x41, 0x41, 0x51, 0x44, 0x5a, 0x41, 0x36, 0x67, 0x46, 0x32, 0x77, 0x58, 0x56, 0x41, 0x41, 0x59, 0x41, 0x47, 0x45, 0x41, 0x4b, 0x41, 0x77, 0x51, 0x42, 0x41, 0x49, 0x45, 0x48, 0x41, 0x77, 0x45, 0x46, 0x42, 0x78, 0x44, 0x63, 0x0a, 0x09, 0x7a, 0x44, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x30, 0x7a, 0x44, 0x49, 0x35, 0x4d, 0x41, 0x45, 0x42, 0x49, 0x77, 0x45, 0x42, 0x49, 0x77, 0x45, 0x44, 0x76, 0x41, 0x49, 0x66, 0x79, 0x66, 0x35, 0x49, 0x2f, 0x6b, 0x6a, 0x4a, 0x41, 0x68, 0x38, 0x46, 0x31, 0x66, 0x33, 0x54, 0x41, 0x59, 0x76, 0x2b, 0x64, 0x51, 0x49, 0x74, 0x41, 0x41, 0x41, 0x42, 0x2f, 0x2b, 0x7a, 0x2b, 0x48, 0x51, 0x51, 0x55, 0x2f, 0x71, 0x77, 0x41, 0x41, 0x77, 0x41, 0x50, 0x0a, 0x09, 0x74, 0x51, 0x43, 0x70, 0x41, 0x51, 0x41, 0x43, 0x42, 0x42, 0x44, 0x45, 0x78, 0x44, 0x45, 0x41, 0x31, 0x4f, 0x77, 0x77, 0x41, 0x52, 0x55, 0x68, 0x4e, 0x51, 0x51, 0x55, 0x2b, 0x39, 0x6a, 0x2b, 0x72, 0x49, 0x2b, 0x50, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4b, 0x6f, 0x45, 0x38, 0x41, 0x4b, 0x4a, 0x42, 0x6d, 0x59, 0x41, 0x41, 0x77, 0x41, 0x78, 0x51, 0x41, 0x6b, 0x42, 0x74, 0x41, 0x43, 0x7a, 0x42, 0x41, 0x4e, 0x45, 0x41, 0x51, 0x51, 0x51, 0x0a, 0x09, 0x33, 0x4f, 0x77, 0x78, 0x41, 0x42, 0x44, 0x30, 0x37, 0x44, 0x41, 0x41, 0x53, 0x37, 0x41, 0x4a, 0x56, 0x45, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x42, 0x50, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x42, 0x41, 0x41, 0x45, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x6b, 0x42, 0x49, 0x77, 0x45, 0x42, 0x62, 0x77, 0x45, 0x61, 0x6d, 0x66, 0x36, 0x36, 0x42, 0x6d, 0x62, 0x2b, 0x69, 0x67, 0x46, 0x32, 0x0a, 0x09, 0x41, 0x41, 0x49, 0x41, 0x65, 0x2f, 0x2f, 0x6a, 0x42, 0x43, 0x30, 0x45, 0x65, 0x77, 0x41, 0x4b, 0x41, 0x43, 0x55, 0x41, 0x76, 0x45, 0x41, 0x6e, 0x47, 0x52, 0x38, 0x4c, 0x46, 0x77, 0x6b, 0x4f, 0x41, 0x4b, 0x6b, 0x58, 0x42, 0x72, 0x6b, 0x4f, 0x45, 0x53, 0x43, 0x47, 0x48, 0x37, 0x6f, 0x63, 0x75, 0x53, 0x4f, 0x34, 0x45, 0x59, 0x77, 0x58, 0x44, 0x41, 0x41, 0x58, 0x41, 0x78, 0x67, 0x4e, 0x43, 0x51, 0x67, 0x4c, 0x48, 0x77, 0x4d, 0x49, 0x0a, 0x09, 0x46, 0x45, 0x55, 0x6d, 0x45, 0x50, 0x7a, 0x73, 0x7a, 0x4e, 0x54, 0x73, 0x4d, 0x6a, 0x49, 0x52, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x43, 0x2f, 0x45, 0x35, 0x50, 0x54, 0x38, 0x39, 0x4f, 0x77, 0x51, 0x78, 0x75, 0x34, 0x51, 0x37, 0x68, 0x45, 0x35, 0x45, 0x54, 0x6b, 0x53, 0x4f, 0x54, 0x42, 0x41, 0x62, 0x6a, 0x41, 0x64, 0x4d, 0x42, 0x34, 0x77, 0x48, 0x7a, 0x41, 0x67, 0x4d, 0x43, 0x45, 0x77, 0x49, 0x6a, 0x38, 0x6e, 0x51, 0x42, 0x31, 0x41, 0x0a, 0x09, 0x48, 0x6b, 0x41, 0x66, 0x51, 0x43, 0x42, 0x41, 0x49, 0x55, 0x41, 0x69, 0x55, 0x42, 0x31, 0x51, 0x48, 0x6c, 0x41, 0x66, 0x55, 0x43, 0x42, 0x51, 0x49, 0x56, 0x41, 0x69, 0x55, 0x43, 0x64, 0x77, 0x4a, 0x34, 0x55, 0x64, 0x68, 0x78, 0x36, 0x48, 0x48, 0x34, 0x63, 0x67, 0x68, 0x79, 0x47, 0x46, 0x49, 0x70, 0x41, 0x6e, 0x6f, 0x43, 0x66, 0x77, 0x4a, 0x78, 0x34, 0x77, 0x48, 0x6a, 0x41, 0x66, 0x4d, 0x43, 0x41, 0x77, 0x49, 0x55, 0x41, 0x65, 0x0a, 0x09, 0x51, 0x42, 0x39, 0x41, 0x49, 0x45, 0x41, 0x68, 0x55, 0x42, 0x35, 0x51, 0x48, 0x31, 0x41, 0x67, 0x55, 0x43, 0x46, 0x67, 0x48, 0x6d, 0x41, 0x66, 0x59, 0x43, 0x42, 0x67, 0x49, 0x58, 0x41, 0x65, 0x63, 0x42, 0x39, 0x77, 0x49, 0x48, 0x41, 0x68, 0x67, 0x42, 0x36, 0x41, 0x48, 0x34, 0x41, 0x67, 0x67, 0x43, 0x45, 0x59, 0x58, 0x51, 0x46, 0x64, 0x41, 0x53, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x50, 0x51, 0x45, 0x33, 0x0a, 0x09, 0x45, 0x53, 0x4d, 0x31, 0x44, 0x67, 0x45, 0x6a, 0x49, 0x69, 0x59, 0x31, 0x4e, 0x44, 0x59, 0x7a, 0x49, 0x54, 0x55, 0x30, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x67, 0x63, 0x31, 0x50, 0x67, 0x45, 0x7a, 0x4d, 0x68, 0x59, 0x43, 0x76, 0x74, 0x2b, 0x73, 0x67, 0x57, 0x2b, 0x5a, 0x75, 0x62, 0x69, 0x34, 0x50, 0x37, 0x79, 0x49, 0x72, 0x4d, 0x76, 0x39, 0x2b, 0x77, 0x45, 0x43, 0x70, 0x35, 0x64, 0x67, 0x74, 0x6c, 0x52, 0x6c, 0x76, 0x6c, 0x72, 0x7a, 0x0a, 0x09, 0x38, 0x41, 0x49, 0x7a, 0x5a, 0x6e, 0x74, 0x69, 0x63, 0x39, 0x6d, 0x30, 0x4b, 0x55, 0x7a, 0x39, 0x67, 0x61, 0x70, 0x6d, 0x59, 0x63, 0x47, 0x69, 0x76, 0x63, 0x41, 0x53, 0x66, 0x34, 0x73, 0x75, 0x4c, 0x71, 0x6f, 0x6e, 0x4a, 0x2f, 0x77, 0x41, 0x41, 0x41, 0x49, 0x41, 0x75, 0x76, 0x2f, 0x6a, 0x42, 0x4b, 0x51, 0x47, 0x46, 0x41, 0x41, 0x4c, 0x41, 0x42, 0x77, 0x41, 0x4f, 0x45, 0x41, 0x5a, 0x41, 0x37, 0x6b, 0x4d, 0x44, 0x77, 0x6d, 0x35, 0x0a, 0x09, 0x47, 0x42, 0x57, 0x4d, 0x44, 0x37, 0x67, 0x62, 0x6c, 0x78, 0x6b, 0x41, 0x45, 0x68, 0x4a, 0x48, 0x47, 0x41, 0x77, 0x47, 0x43, 0x42, 0x70, 0x47, 0x48, 0x52, 0x44, 0x38, 0x37, 0x44, 0x49, 0x79, 0x39, 0x4f, 0x77, 0x78, 0x41, 0x43, 0x2f, 0x73, 0x35, 0x50, 0x54, 0x45, 0x37, 0x42, 0x44, 0x47, 0x37, 0x6a, 0x43, 0x32, 0x59, 0x42, 0x36, 0x41, 0x48, 0x71, 0x41, 0x65, 0x41, 0x77, 0x46, 0x64, 0x41, 0x54, 0x51, 0x6d, 0x49, 0x79, 0x49, 0x47, 0x0a, 0x09, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x41, 0x54, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x53, 0x45, 0x52, 0x41, 0x43, 0x49, 0x79, 0x49, 0x6d, 0x4a, 0x78, 0x55, 0x6a, 0x45, 0x54, 0x4d, 0x44, 0x35, 0x61, 0x65, 0x53, 0x6b, 0x71, 0x65, 0x6e, 0x6b, 0x70, 0x4b, 0x6e, 0x2f, 0x59, 0x34, 0x36, 0x73, 0x58, 0x76, 0x4d, 0x2f, 0x2f, 0x2f, 0x4d, 0x65, 0x37, 0x45, 0x36, 0x75, 0x62, 0x6b, 0x43, 0x4c, 0x38, 0x76, 0x6e, 0x35, 0x38, 0x76, 0x4c, 0x0a, 0x09, 0x35, 0x2b, 0x63, 0x43, 0x55, 0x6d, 0x52, 0x68, 0x2f, 0x72, 0x7a, 0x2b, 0x2b, 0x50, 0x37, 0x34, 0x2f, 0x72, 0x78, 0x68, 0x5a, 0x4b, 0x67, 0x47, 0x46, 0x41, 0x41, 0x41, 0x41, 0x51, 0x42, 0x78, 0x2f, 0x2b, 0x4d, 0x44, 0x35, 0x77, 0x52, 0x37, 0x41, 0x42, 0x6b, 0x41, 0x50, 0x30, 0x41, 0x62, 0x41, 0x49, 0x59, 0x42, 0x69, 0x41, 0x51, 0x4f, 0x68, 0x67, 0x32, 0x49, 0x43, 0x72, 0x6b, 0x52, 0x42, 0x4c, 0x6b, 0x58, 0x75, 0x42, 0x47, 0x4d, 0x0a, 0x09, 0x47, 0x67, 0x63, 0x53, 0x44, 0x51, 0x42, 0x49, 0x46, 0x45, 0x55, 0x61, 0x45, 0x50, 0x7a, 0x6b, 0x4d, 0x75, 0x77, 0x78, 0x41, 0x42, 0x44, 0x6b, 0x39, 0x4f, 0x77, 0x51, 0x2f, 0x76, 0x54, 0x75, 0x45, 0x50, 0x58, 0x75, 0x4d, 0x45, 0x41, 0x4c, 0x44, 0x78, 0x73, 0x51, 0x47, 0x34, 0x41, 0x62, 0x6b, 0x42, 0x75, 0x67, 0x47, 0x77, 0x55, 0x42, 0x58, 0x51, 0x45, 0x56, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x59, 0x56, 0x46, 0x42, 0x59, 0x7a, 0x0a, 0x09, 0x4d, 0x6a, 0x59, 0x33, 0x46, 0x51, 0x34, 0x42, 0x49, 0x79, 0x49, 0x41, 0x45, 0x52, 0x41, 0x41, 0x49, 0x54, 0x49, 0x57, 0x41, 0x2b, 0x64, 0x4f, 0x6e, 0x56, 0x43, 0x7a, 0x78, 0x73, 0x61, 0x7a, 0x55, 0x4a, 0x31, 0x4f, 0x54, 0x61, 0x56, 0x64, 0x2f, 0x66, 0x37, 0x57, 0x41, 0x53, 0x30, 0x42, 0x42, 0x6c, 0x57, 0x69, 0x42, 0x44, 0x57, 0x73, 0x4b, 0x79, 0x76, 0x6a, 0x7a, 0x63, 0x33, 0x6a, 0x4b, 0x79, 0x75, 0x71, 0x4a, 0x43, 0x51, 0x42, 0x0a, 0x09, 0x50, 0x67, 0x45, 0x4f, 0x41, 0x52, 0x49, 0x42, 0x4f, 0x69, 0x4d, 0x41, 0x41, 0x67, 0x42, 0x78, 0x2f, 0x2b, 0x4d, 0x45, 0x57, 0x67, 0x59, 0x55, 0x41, 0x42, 0x41, 0x41, 0x48, 0x41, 0x41, 0x34, 0x51, 0x42, 0x6b, 0x61, 0x75, 0x51, 0x41, 0x4f, 0x46, 0x4c, 0x6b, 0x46, 0x43, 0x49, 0x77, 0x4f, 0x75, 0x41, 0x47, 0x58, 0x41, 0x78, 0x63, 0x45, 0x41, 0x41, 0x67, 0x43, 0x52, 0x78, 0x45, 0x53, 0x43, 0x30, 0x55, 0x64, 0x45, 0x50, 0x7a, 0x73, 0x0a, 0x09, 0x39, 0x4f, 0x77, 0x79, 0x4d, 0x6a, 0x45, 0x41, 0x4c, 0x2b, 0x7a, 0x6b, 0x39, 0x4d, 0x54, 0x73, 0x45, 0x4d, 0x54, 0x75, 0x4d, 0x4c, 0x5a, 0x67, 0x48, 0x6f, 0x41, 0x65, 0x6f, 0x42, 0x34, 0x44, 0x41, 0x56, 0x30, 0x42, 0x45, 0x54, 0x4d, 0x52, 0x49, 0x7a, 0x55, 0x4f, 0x41, 0x53, 0x4d, 0x69, 0x41, 0x68, 0x45, 0x51, 0x45, 0x6a, 0x4d, 0x79, 0x46, 0x67, 0x45, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x69, 0x4d, 0x69, 0x0a, 0x09, 0x42, 0x67, 0x4f, 0x69, 0x75, 0x4c, 0x67, 0x36, 0x73, 0x58, 0x7a, 0x4c, 0x2f, 0x2f, 0x2f, 0x4c, 0x66, 0x4c, 0x48, 0x39, 0x78, 0x36, 0x65, 0x53, 0x6b, 0x71, 0x69, 0x6f, 0x6b, 0x70, 0x4b, 0x6e, 0x41, 0x37, 0x59, 0x43, 0x58, 0x76, 0x6e, 0x73, 0x71, 0x47, 0x52, 0x68, 0x41, 0x55, 0x51, 0x42, 0x43, 0x41, 0x45, 0x49, 0x41, 0x55, 0x52, 0x68, 0x2f, 0x68, 0x58, 0x4c, 0x35, 0x2b, 0x66, 0x4c, 0x79, 0x2b, 0x66, 0x6e, 0x41, 0x41, 0x41, 0x43, 0x0a, 0x09, 0x41, 0x48, 0x48, 0x2f, 0x34, 0x77, 0x52, 0x2f, 0x42, 0x48, 0x73, 0x41, 0x46, 0x41, 0x41, 0x62, 0x41, 0x48, 0x42, 0x41, 0x4a, 0x41, 0x41, 0x56, 0x41, 0x51, 0x6d, 0x47, 0x43, 0x49, 0x67, 0x46, 0x46, 0x61, 0x6b, 0x42, 0x42, 0x62, 0x6b, 0x4d, 0x41, 0x62, 0x73, 0x59, 0x75, 0x52, 0x4b, 0x34, 0x44, 0x49, 0x77, 0x63, 0x47, 0x78, 0x55, 0x43, 0x43, 0x42, 0x55, 0x49, 0x41, 0x45, 0x73, 0x43, 0x45, 0x67, 0x39, 0x46, 0x48, 0x42, 0x44, 0x38, 0x0a, 0x09, 0x37, 0x50, 0x54, 0x73, 0x78, 0x42, 0x45, 0x53, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x4f, 0x54, 0x30, 0x37, 0x4f, 0x51, 0x51, 0x37, 0x68, 0x44, 0x75, 0x45, 0x50, 0x54, 0x75, 0x45, 0x52, 0x49, 0x35, 0x4d, 0x45, 0x41, 0x70, 0x50, 0x78, 0x31, 0x77, 0x48, 0x61, 0x41, 0x64, 0x30, 0x42, 0x33, 0x77, 0x48, 0x51, 0x55, 0x2f, 0x41, 0x44, 0x38, 0x42, 0x50, 0x77, 0x49, 0x2f, 0x46, 0x54, 0x38, 0x62, 0x42, 0x53, 0x77, 0x48, 0x4c, 0x77, 0x67, 0x76, 0x0a, 0x09, 0x43, 0x53, 0x77, 0x4b, 0x62, 0x77, 0x42, 0x76, 0x41, 0x57, 0x38, 0x43, 0x62, 0x78, 0x56, 0x76, 0x47, 0x77, 0x6c, 0x64, 0x63, 0x51, 0x46, 0x64, 0x41, 0x52, 0x55, 0x68, 0x48, 0x67, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x33, 0x46, 0x51, 0x34, 0x42, 0x49, 0x79, 0x41, 0x41, 0x45, 0x52, 0x41, 0x41, 0x4d, 0x7a, 0x49, 0x41, 0x42, 0x79, 0x34, 0x42, 0x49, 0x79, 0x49, 0x47, 0x42, 0x77, 0x52, 0x2f, 0x2f, 0x4c, 0x49, 0x4d, 0x7a, 0x62, 0x64, 0x71, 0x0a, 0x09, 0x78, 0x32, 0x4a, 0x6a, 0x30, 0x47, 0x76, 0x2b, 0x39, 0x50, 0x37, 0x48, 0x41, 0x53, 0x6e, 0x38, 0x34, 0x67, 0x45, 0x48, 0x75, 0x41, 0x4b, 0x6c, 0x69, 0x4a, 0x71, 0x35, 0x44, 0x67, 0x4a, 0x65, 0x57, 0x72, 0x37, 0x48, 0x4e, 0x44, 0x53, 0x75, 0x4b, 0x69, 0x77, 0x42, 0x4f, 0x41, 0x45, 0x4b, 0x41, 0x52, 0x4d, 0x42, 0x51, 0x2f, 0x37, 0x64, 0x78, 0x4a, 0x65, 0x30, 0x72, 0x70, 0x34, 0x41, 0x41, 0x41, 0x45, 0x41, 0x4c, 0x77, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x76, 0x67, 0x47, 0x46, 0x41, 0x41, 0x54, 0x41, 0x48, 0x42, 0x41, 0x48, 0x41, 0x55, 0x51, 0x41, 0x51, 0x77, 0x49, 0x71, 0x51, 0x59, 0x42, 0x68, 0x77, 0x43, 0x58, 0x44, 0x67, 0x61, 0x38, 0x43, 0x67, 0x49, 0x54, 0x42, 0x77, 0x41, 0x48, 0x43, 0x51, 0x55, 0x49, 0x44, 0x51, 0x38, 0x4c, 0x54, 0x42, 0x51, 0x51, 0x2f, 0x44, 0x7a, 0x45, 0x2f, 0x44, 0x7a, 0x45, 0x78, 0x42, 0x49, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x2b, 0x51, 0x79, 0x0a, 0x09, 0x2f, 0x4f, 0x77, 0x51, 0x37, 0x6a, 0x49, 0x53, 0x4f, 0x54, 0x6b, 0x77, 0x41, 0x55, 0x75, 0x77, 0x43, 0x6c, 0x52, 0x59, 0x76, 0x51, 0x41, 0x55, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x55, 0x41, 0x42, 0x51, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x55, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x59, 0x76, 0x51, 0x41, 0x55, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x55, 0x41, 0x42, 0x54, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x0a, 0x09, 0x4e, 0x7a, 0x68, 0x5a, 0x74, 0x6b, 0x41, 0x56, 0x55, 0x42, 0x57, 0x67, 0x46, 0x51, 0x4e, 0x64, 0x41, 0x52, 0x55, 0x6a, 0x49, 0x67, 0x59, 0x64, 0x41, 0x53, 0x45, 0x56, 0x49, 0x52, 0x45, 0x6a, 0x45, 0x53, 0x4d, 0x31, 0x4d, 0x7a, 0x55, 0x30, 0x4e, 0x6a, 0x4d, 0x43, 0x2b, 0x4c, 0x42, 0x6a, 0x54, 0x51, 0x45, 0x76, 0x2f, 0x74, 0x47, 0x35, 0x73, 0x4c, 0x43, 0x75, 0x76, 0x51, 0x59, 0x55, 0x6d, 0x56, 0x42, 0x6f, 0x59, 0x34, 0x2f, 0x38, 0x0a, 0x09, 0x4c, 0x77, 0x50, 0x52, 0x6a, 0x30, 0x36, 0x37, 0x71, 0x77, 0x41, 0x41, 0x41, 0x67, 0x42, 0x78, 0x2f, 0x6c, 0x59, 0x45, 0x57, 0x67, 0x52, 0x37, 0x41, 0x41, 0x73, 0x41, 0x4b, 0x41, 0x42, 0x4b, 0x51, 0x43, 0x4d, 0x5a, 0x44, 0x42, 0x30, 0x4a, 0x45, 0x6f, 0x59, 0x54, 0x46, 0x72, 0x6b, 0x50, 0x41, 0x37, 0x6b, 0x6d, 0x49, 0x37, 0x67, 0x6e, 0x76, 0x41, 0x6d, 0x35, 0x44, 0x37, 0x30, 0x61, 0x48, 0x53, 0x59, 0x5a, 0x41, 0x41, 0x67, 0x4d, 0x0a, 0x09, 0x52, 0x77, 0x59, 0x53, 0x45, 0x69, 0x42, 0x46, 0x4b, 0x52, 0x44, 0x38, 0x78, 0x4f, 0x7a, 0x30, 0x37, 0x44, 0x49, 0x79, 0x4d, 0x51, 0x41, 0x76, 0x78, 0x4f, 0x54, 0x73, 0x35, 0x50, 0x54, 0x45, 0x37, 0x42, 0x44, 0x2b, 0x31, 0x65, 0x34, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x4d, 0x4c, 0x5a, 0x67, 0x4b, 0x6f, 0x41, 0x71, 0x6f, 0x43, 0x6f, 0x44, 0x41, 0x56, 0x30, 0x42, 0x4e, 0x43, 0x59, 0x6a, 0x49, 0x67, 0x59, 0x56, 0x46, 0x42, 0x59, 0x7a, 0x0a, 0x09, 0x4d, 0x6a, 0x59, 0x58, 0x45, 0x41, 0x49, 0x68, 0x49, 0x69, 0x59, 0x6e, 0x4e, 0x52, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x32, 0x50, 0x51, 0x45, 0x4f, 0x41, 0x53, 0x4d, 0x69, 0x41, 0x68, 0x45, 0x51, 0x45, 0x6a, 0x4d, 0x79, 0x46, 0x68, 0x63, 0x31, 0x4d, 0x77, 0x4f, 0x69, 0x70, 0x5a, 0x57, 0x55, 0x70, 0x61, 0x57, 0x55, 0x6c, 0x61, 0x57, 0x34, 0x2f, 0x76, 0x37, 0x36, 0x59, 0x61, 0x78, 0x52, 0x55, 0x5a, 0x35, 0x53, 0x74, 0x62, 0x51, 0x35, 0x0a, 0x09, 0x73, 0x6e, 0x7a, 0x4f, 0x2f, 0x50, 0x7a, 0x4f, 0x66, 0x4c, 0x49, 0x35, 0x75, 0x41, 0x49, 0x39, 0x79, 0x4e, 0x7a, 0x63, 0x79, 0x4d, 0x66, 0x63, 0x33, 0x4f, 0x76, 0x2b, 0x34, 0x76, 0x37, 0x70, 0x48, 0x52, 0x36, 0x7a, 0x4c, 0x43, 0x71, 0x39, 0x76, 0x31, 0x74, 0x6a, 0x59, 0x67, 0x45, 0x36, 0x41, 0x51, 0x4d, 0x42, 0x42, 0x41, 0x45, 0x36, 0x59, 0x6d, 0x4f, 0x71, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4c, 0x6f, 0x41, 0x41, 0x41, 0x52, 0x6b, 0x0a, 0x09, 0x42, 0x68, 0x51, 0x41, 0x45, 0x77, 0x41, 0x30, 0x51, 0x42, 0x6b, 0x44, 0x43, 0x51, 0x41, 0x44, 0x44, 0x67, 0x45, 0x47, 0x68, 0x77, 0x34, 0x52, 0x75, 0x41, 0x79, 0x58, 0x43, 0x67, 0x45, 0x43, 0x43, 0x41, 0x42, 0x4f, 0x44, 0x51, 0x6b, 0x49, 0x43, 0x30, 0x59, 0x55, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x76, 0x54, 0x73, 0x4d, 0x51, 0x41, 0x76, 0x50, 0x4f, 0x7a, 0x30, 0x78, 0x4f, 0x77, 0x52, 0x45, 0x68, 0x63, 0x35, 0x4d, 0x4c, 0x4a, 0x67, 0x0a, 0x09, 0x46, 0x51, 0x45, 0x42, 0x58, 0x51, 0x45, 0x52, 0x49, 0x78, 0x45, 0x30, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x68, 0x55, 0x52, 0x49, 0x78, 0x45, 0x7a, 0x45, 0x54, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x57, 0x42, 0x47, 0x53, 0x34, 0x66, 0x48, 0x79, 0x56, 0x72, 0x4c, 0x6d, 0x35, 0x51, 0x72, 0x4e, 0x31, 0x77, 0x63, 0x59, 0x43, 0x70, 0x50, 0x31, 0x63, 0x41, 0x70, 0x36, 0x66, 0x6e, 0x72, 0x36, 0x6b, 0x2f, 0x59, 0x63, 0x47, 0x46, 0x50, 0x32, 0x65, 0x0a, 0x09, 0x5a, 0x57, 0x54, 0x76, 0x41, 0x41, 0x41, 0x43, 0x41, 0x4d, 0x45, 0x41, 0x41, 0x41, 0x46, 0x35, 0x42, 0x68, 0x51, 0x41, 0x41, 0x77, 0x41, 0x48, 0x41, 0x43, 0x74, 0x41, 0x44, 0x67, 0x61, 0x2b, 0x42, 0x4c, 0x45, 0x41, 0x76, 0x41, 0x49, 0x46, 0x41, 0x51, 0x67, 0x45, 0x41, 0x45, 0x59, 0x49, 0x45, 0x50, 0x77, 0x38, 0x37, 0x44, 0x49, 0x78, 0x41, 0x43, 0x2f, 0x6b, 0x2f, 0x4f, 0x77, 0x77, 0x51, 0x41, 0x73, 0x51, 0x43, 0x55, 0x41, 0x4a, 0x0a, 0x09, 0x55, 0x41, 0x6c, 0x67, 0x43, 0x58, 0x41, 0x4a, 0x42, 0x51, 0x46, 0x64, 0x45, 0x7a, 0x4d, 0x52, 0x49, 0x78, 0x45, 0x7a, 0x46, 0x53, 0x50, 0x42, 0x75, 0x4c, 0x69, 0x34, 0x75, 0x41, 0x52, 0x67, 0x2b, 0x36, 0x41, 0x47, 0x46, 0x4f, 0x6b, 0x41, 0x41, 0x41, 0x4c, 0x2f, 0x32, 0x2f, 0x35, 0x57, 0x41, 0x58, 0x6b, 0x47, 0x46, 0x41, 0x41, 0x4c, 0x41, 0x41, 0x38, 0x41, 0x52, 0x45, 0x41, 0x63, 0x43, 0x77, 0x49, 0x48, 0x41, 0x41, 0x36, 0x2b, 0x0a, 0x09, 0x44, 0x41, 0x65, 0x48, 0x42, 0x62, 0x30, 0x41, 0x76, 0x41, 0x79, 0x78, 0x45, 0x41, 0x67, 0x51, 0x42, 0x51, 0x5a, 0x50, 0x44, 0x51, 0x45, 0x49, 0x44, 0x41, 0x42, 0x47, 0x45, 0x42, 0x44, 0x38, 0x50, 0x4f, 0x77, 0x79, 0x35, 0x44, 0x6b, 0x53, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x4f, 0x7a, 0x6b, 0x39, 0x4f, 0x77, 0x51, 0x37, 0x68, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x77, 0x51, 0x41, 0x73, 0x51, 0x45, 0x55, 0x41, 0x52, 0x55, 0x42, 0x46, 0x67, 0x0a, 0x09, 0x45, 0x58, 0x41, 0x52, 0x42, 0x51, 0x46, 0x64, 0x45, 0x7a, 0x4d, 0x52, 0x46, 0x41, 0x59, 0x72, 0x41, 0x54, 0x55, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x45, 0x54, 0x4d, 0x56, 0x49, 0x38, 0x47, 0x34, 0x6f, 0x37, 0x56, 0x47, 0x4d, 0x57, 0x6c, 0x4d, 0x75, 0x4c, 0x67, 0x45, 0x59, 0x50, 0x75, 0x4d, 0x31, 0x73, 0x43, 0x63, 0x59, 0x5a, 0x6b, 0x47, 0x4b, 0x4f, 0x6b, 0x41, 0x41, 0x51, 0x43, 0x36, 0x41, 0x41, 0x41, 0x45, 0x6e, 0x41, 0x59, 0x55, 0x0a, 0x09, 0x41, 0x41, 0x6f, 0x41, 0x76, 0x45, 0x41, 0x70, 0x43, 0x42, 0x45, 0x46, 0x42, 0x67, 0x55, 0x48, 0x45, 0x51, 0x59, 0x47, 0x42, 0x51, 0x4d, 0x52, 0x42, 0x41, 0x55, 0x45, 0x41, 0x68, 0x45, 0x46, 0x42, 0x51, 0x52, 0x43, 0x43, 0x41, 0x55, 0x43, 0x41, 0x77, 0x4f, 0x38, 0x41, 0x4a, 0x63, 0x4a, 0x42, 0x67, 0x55, 0x42, 0x42, 0x41, 0x59, 0x49, 0x41, 0x51, 0x67, 0x41, 0x52, 0x67, 0x73, 0x51, 0x2f, 0x4f, 0x77, 0x79, 0x31, 0x4d, 0x51, 0x52, 0x0a, 0x09, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x7a, 0x7a, 0x73, 0x35, 0x42, 0x63, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x42, 0x4f, 0x31, 0x5a, 0x49, 0x72, 0x49, 0x51, 0x44, 0x41, 0x45, 0x42, 0x58, 0x55, 0x42, 0x66, 0x42, 0x41, 0x49, 0x4b, 0x43, 0x42, 0x59, 0x43, 0x4a, 0x77, 0x49, 0x70, 0x42, 0x53, 0x73, 0x49, 0x56, 0x67, 0x4a, 0x6d, 0x0a, 0x09, 0x41, 0x6d, 0x63, 0x49, 0x63, 0x77, 0x4a, 0x33, 0x42, 0x59, 0x49, 0x43, 0x69, 0x51, 0x57, 0x4f, 0x43, 0x4a, 0x4d, 0x43, 0x6c, 0x67, 0x57, 0x58, 0x43, 0x4b, 0x4d, 0x43, 0x45, 0x67, 0x6b, 0x46, 0x43, 0x51, 0x59, 0x43, 0x43, 0x77, 0x4d, 0x4b, 0x42, 0x79, 0x67, 0x44, 0x4a, 0x77, 0x51, 0x6f, 0x42, 0x53, 0x73, 0x47, 0x4b, 0x77, 0x64, 0x41, 0x44, 0x47, 0x67, 0x44, 0x59, 0x41, 0x79, 0x4a, 0x41, 0x34, 0x55, 0x45, 0x69, 0x51, 0x57, 0x4e, 0x0a, 0x09, 0x42, 0x6f, 0x38, 0x48, 0x6d, 0x67, 0x4f, 0x58, 0x42, 0x36, 0x6f, 0x44, 0x70, 0x77, 0x57, 0x32, 0x42, 0x38, 0x55, 0x48, 0x31, 0x67, 0x66, 0x33, 0x41, 0x2f, 0x41, 0x44, 0x39, 0x77, 0x54, 0x77, 0x42, 0x42, 0x70, 0x64, 0x63, 0x51, 0x42, 0x64, 0x45, 0x7a, 0x4d, 0x52, 0x41, 0x54, 0x4d, 0x4a, 0x41, 0x53, 0x4d, 0x42, 0x45, 0x53, 0x4f, 0x36, 0x75, 0x51, 0x49, 0x6c, 0x36, 0x2f, 0x32, 0x75, 0x41, 0x6d, 0x76, 0x77, 0x2f, 0x63, 0x65, 0x35, 0x0a, 0x09, 0x42, 0x68, 0x54, 0x38, 0x61, 0x51, 0x48, 0x6a, 0x2f, 0x66, 0x54, 0x39, 0x72, 0x41, 0x49, 0x6a, 0x2f, 0x64, 0x30, 0x41, 0x41, 0x51, 0x44, 0x42, 0x41, 0x41, 0x41, 0x42, 0x65, 0x51, 0x59, 0x55, 0x41, 0x41, 0x4d, 0x41, 0x49, 0x72, 0x63, 0x41, 0x6c, 0x77, 0x49, 0x42, 0x43, 0x41, 0x42, 0x47, 0x42, 0x42, 0x44, 0x38, 0x37, 0x44, 0x45, 0x41, 0x4c, 0x2b, 0x77, 0x77, 0x51, 0x41, 0x30, 0x51, 0x42, 0x55, 0x41, 0x46, 0x55, 0x41, 0x56, 0x67, 0x0a, 0x09, 0x42, 0x58, 0x41, 0x46, 0x38, 0x41, 0x55, 0x47, 0x41, 0x56, 0x30, 0x54, 0x4d, 0x78, 0x45, 0x6a, 0x77, 0x62, 0x69, 0x34, 0x42, 0x68, 0x54, 0x35, 0x37, 0x41, 0x41, 0x41, 0x41, 0x51, 0x43, 0x36, 0x41, 0x41, 0x41, 0x48, 0x48, 0x51, 0x52, 0x37, 0x41, 0x43, 0x49, 0x41, 0x57, 0x6b, 0x41, 0x6d, 0x42, 0x68, 0x49, 0x4a, 0x47, 0x41, 0x38, 0x41, 0x42, 0x68, 0x30, 0x48, 0x46, 0x51, 0x79, 0x48, 0x48, 0x53, 0x41, 0x44, 0x75, 0x42, 0x75, 0x38, 0x0a, 0x09, 0x47, 0x52, 0x41, 0x48, 0x41, 0x42, 0x45, 0x50, 0x43, 0x41, 0x67, 0x47, 0x55, 0x42, 0x45, 0x49, 0x44, 0x31, 0x41, 0x63, 0x47, 0x41, 0x67, 0x61, 0x52, 0x69, 0x4d, 0x51, 0x2f, 0x4f, 0x77, 0x79, 0x2f, 0x50, 0x7a, 0x38, 0x37, 0x42, 0x45, 0x53, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x7a, 0x77, 0x38, 0x35, 0x50, 0x51, 0x38, 0x78, 0x4f, 0x77, 0x79, 0x45, 0x52, 0x49, 0x58, 0x4f, 0x54, 0x42, 0x41, 0x45, 0x7a, 0x41, 0x6b, 0x55, 0x43, 0x52, 0x77, 0x0a, 0x09, 0x4a, 0x4a, 0x41, 0x6b, 0x6f, 0x43, 0x53, 0x67, 0x4a, 0x4c, 0x38, 0x6b, 0x33, 0x79, 0x54, 0x2f, 0x4a, 0x41, 0x6b, 0x42, 0x58, 0x51, 0x45, 0x2b, 0x41, 0x54, 0x4d, 0x79, 0x46, 0x68, 0x55, 0x52, 0x49, 0x78, 0x45, 0x30, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x68, 0x55, 0x52, 0x49, 0x78, 0x45, 0x30, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x68, 0x55, 0x52, 0x49, 0x78, 0x45, 0x7a, 0x46, 0x54, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x57, 0x42, 0x43, 0x6c, 0x46, 0x0a, 0x09, 0x77, 0x49, 0x4b, 0x76, 0x76, 0x72, 0x6c, 0x79, 0x64, 0x59, 0x2b, 0x6d, 0x75, 0x58, 0x4a, 0x33, 0x6a, 0x61, 0x61, 0x35, 0x75, 0x54, 0x2b, 0x77, 0x65, 0x58, 0x71, 0x72, 0x41, 0x34, 0x6c, 0x38, 0x64, 0x76, 0x58, 0x69, 0x2f, 0x56, 0x77, 0x43, 0x6e, 0x71, 0x47, 0x63, 0x76, 0x71, 0x54, 0x39, 0x68, 0x77, 0x4b, 0x65, 0x6f, 0x70, 0x75, 0x2f, 0x6f, 0x2f, 0x32, 0x48, 0x42, 0x47, 0x43, 0x75, 0x5a, 0x32, 0x4a, 0x38, 0x41, 0x41, 0x41, 0x42, 0x0a, 0x09, 0x41, 0x4c, 0x6f, 0x41, 0x41, 0x41, 0x52, 0x6b, 0x42, 0x48, 0x73, 0x41, 0x45, 0x77, 0x41, 0x32, 0x51, 0x42, 0x6b, 0x44, 0x43, 0x51, 0x41, 0x44, 0x44, 0x67, 0x45, 0x47, 0x68, 0x77, 0x34, 0x52, 0x75, 0x41, 0x79, 0x38, 0x43, 0x67, 0x45, 0x43, 0x43, 0x41, 0x42, 0x4f, 0x44, 0x51, 0x6b, 0x49, 0x43, 0x30, 0x59, 0x55, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x76, 0x54, 0x73, 0x4d, 0x51, 0x41, 0x76, 0x50, 0x4f, 0x54, 0x30, 0x78, 0x4f, 0x77, 0x52, 0x0a, 0x09, 0x45, 0x68, 0x63, 0x35, 0x4d, 0x4c, 0x52, 0x67, 0x46, 0x63, 0x38, 0x56, 0x41, 0x67, 0x46, 0x64, 0x41, 0x52, 0x45, 0x6a, 0x45, 0x54, 0x51, 0x6d, 0x49, 0x79, 0x49, 0x47, 0x46, 0x52, 0x45, 0x6a, 0x45, 0x54, 0x4d, 0x56, 0x50, 0x67, 0x45, 0x7a, 0x4d, 0x68, 0x59, 0x45, 0x5a, 0x4c, 0x68, 0x38, 0x66, 0x4a, 0x57, 0x73, 0x75, 0x62, 0x6c, 0x43, 0x73, 0x33, 0x58, 0x42, 0x78, 0x67, 0x4b, 0x6b, 0x2f, 0x56, 0x77, 0x43, 0x6e, 0x70, 0x2b, 0x65, 0x0a, 0x09, 0x76, 0x71, 0x54, 0x39, 0x68, 0x77, 0x52, 0x67, 0x72, 0x6d, 0x56, 0x6b, 0x37, 0x77, 0x41, 0x43, 0x41, 0x48, 0x48, 0x2f, 0x34, 0x77, 0x52, 0x31, 0x42, 0x48, 0x73, 0x41, 0x43, 0x77, 0x41, 0x58, 0x41, 0x45, 0x70, 0x41, 0x45, 0x77, 0x61, 0x35, 0x45, 0x67, 0x43, 0x35, 0x44, 0x4c, 0x67, 0x53, 0x6a, 0x42, 0x67, 0x4a, 0x45, 0x67, 0x39, 0x52, 0x41, 0x78, 0x49, 0x56, 0x52, 0x52, 0x67, 0x51, 0x2f, 0x4f, 0x7a, 0x30, 0x37, 0x44, 0x45, 0x41, 0x0a, 0x09, 0x45, 0x4f, 0x54, 0x30, 0x37, 0x42, 0x44, 0x75, 0x4d, 0x45, 0x41, 0x6a, 0x50, 0x78, 0x6c, 0x37, 0x41, 0x48, 0x73, 0x47, 0x66, 0x77, 0x64, 0x2f, 0x43, 0x48, 0x38, 0x4a, 0x66, 0x77, 0x70, 0x2f, 0x43, 0x33, 0x73, 0x4d, 0x66, 0x77, 0x31, 0x2f, 0x44, 0x6e, 0x38, 0x50, 0x66, 0x78, 0x42, 0x2f, 0x45, 0x58, 0x73, 0x53, 0x6f, 0x42, 0x6e, 0x77, 0x47, 0x52, 0x45, 0x42, 0x58, 0x51, 0x45, 0x69, 0x42, 0x68, 0x55, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x0a, 0x09, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x69, 0x63, 0x79, 0x41, 0x42, 0x45, 0x51, 0x41, 0x43, 0x4d, 0x69, 0x41, 0x42, 0x45, 0x51, 0x41, 0x41, 0x4a, 0x7a, 0x6c, 0x4b, 0x79, 0x72, 0x6c, 0x5a, 0x4f, 0x73, 0x72, 0x4a, 0x50, 0x77, 0x41, 0x52, 0x4c, 0x2b, 0x37, 0x76, 0x44, 0x78, 0x2f, 0x75, 0x38, 0x42, 0x45, 0x51, 0x50, 0x66, 0x35, 0x38, 0x6e, 0x4a, 0x35, 0x2b, 0x6a, 0x49, 0x78, 0x2b, 0x6d, 0x63, 0x2f, 0x73, 0x6a, 0x2b, 0x37, 0x50, 0x37, 0x74, 0x0a, 0x09, 0x2f, 0x73, 0x63, 0x42, 0x4f, 0x51, 0x45, 0x54, 0x41, 0x52, 0x51, 0x42, 0x4f, 0x41, 0x41, 0x43, 0x41, 0x4c, 0x72, 0x2b, 0x56, 0x67, 0x53, 0x6b, 0x42, 0x48, 0x73, 0x41, 0x45, 0x41, 0x41, 0x63, 0x41, 0x44, 0x35, 0x41, 0x47, 0x78, 0x71, 0x35, 0x41, 0x41, 0x34, 0x55, 0x75, 0x51, 0x55, 0x49, 0x75, 0x41, 0x36, 0x4d, 0x41, 0x62, 0x30, 0x44, 0x76, 0x42, 0x30, 0x52, 0x45, 0x67, 0x74, 0x48, 0x46, 0x77, 0x51, 0x41, 0x43, 0x41, 0x4a, 0x47, 0x0a, 0x09, 0x48, 0x52, 0x44, 0x38, 0x37, 0x44, 0x49, 0x79, 0x39, 0x4f, 0x77, 0x78, 0x41, 0x42, 0x44, 0x6b, 0x35, 0x4f, 0x54, 0x30, 0x78, 0x4f, 0x77, 0x51, 0x78, 0x4f, 0x34, 0x77, 0x51, 0x41, 0x6c, 0x67, 0x48, 0x6f, 0x41, 0x65, 0x6f, 0x42, 0x37, 0x67, 0x48, 0x67, 0x51, 0x42, 0x58, 0x53, 0x55, 0x52, 0x49, 0x78, 0x45, 0x7a, 0x46, 0x54, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x53, 0x45, 0x52, 0x41, 0x43, 0x49, 0x79, 0x49, 0x6d, 0x41, 0x54, 0x51, 0x6d, 0x0a, 0x09, 0x49, 0x79, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x41, 0x58, 0x4f, 0x35, 0x75, 0x54, 0x71, 0x78, 0x65, 0x38, 0x7a, 0x2f, 0x2f, 0x38, 0x78, 0x37, 0x73, 0x51, 0x49, 0x34, 0x70, 0x35, 0x4b, 0x53, 0x70, 0x36, 0x65, 0x53, 0x6b, 0x71, 0x65, 0x6f, 0x2f, 0x61, 0x34, 0x47, 0x43, 0x71, 0x70, 0x6b, 0x59, 0x66, 0x36, 0x38, 0x2f, 0x76, 0x6a, 0x2b, 0x2b, 0x50, 0x36, 0x38, 0x59, 0x51, 0x48, 0x72, 0x79, 0x2b, 0x66, 0x6e, 0x0a, 0x09, 0x79, 0x38, 0x76, 0x6e, 0x35, 0x77, 0x41, 0x43, 0x41, 0x48, 0x48, 0x2b, 0x56, 0x67, 0x52, 0x61, 0x42, 0x48, 0x73, 0x41, 0x43, 0x77, 0x41, 0x63, 0x41, 0x44, 0x35, 0x41, 0x47, 0x77, 0x4f, 0x35, 0x44, 0x41, 0x38, 0x4a, 0x75, 0x52, 0x67, 0x56, 0x75, 0x41, 0x2b, 0x4d, 0x47, 0x37, 0x30, 0x5a, 0x76, 0x42, 0x30, 0x59, 0x44, 0x41, 0x59, 0x49, 0x47, 0x6b, 0x63, 0x41, 0x45, 0x68, 0x4a, 0x46, 0x48, 0x52, 0x44, 0x38, 0x37, 0x50, 0x54, 0x73, 0x0a, 0x09, 0x4d, 0x6a, 0x49, 0x78, 0x41, 0x42, 0x44, 0x6b, 0x35, 0x4f, 0x54, 0x30, 0x78, 0x4f, 0x77, 0x51, 0x78, 0x75, 0x34, 0x77, 0x51, 0x41, 0x6c, 0x67, 0x48, 0x6f, 0x41, 0x65, 0x6f, 0x42, 0x37, 0x67, 0x48, 0x67, 0x51, 0x42, 0x58, 0x51, 0x45, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x67, 0x45, 0x4f, 0x41, 0x53, 0x4d, 0x69, 0x41, 0x68, 0x45, 0x51, 0x45, 0x6a, 0x4d, 0x79, 0x46, 0x68, 0x63, 0x31, 0x0a, 0x09, 0x4d, 0x78, 0x45, 0x6a, 0x41, 0x53, 0x2b, 0x6e, 0x6b, 0x70, 0x4b, 0x6f, 0x71, 0x4a, 0x4b, 0x53, 0x70, 0x77, 0x4a, 0x7a, 0x4f, 0x72, 0x46, 0x38, 0x79, 0x2f, 0x2f, 0x2f, 0x79, 0x33, 0x79, 0x78, 0x4f, 0x72, 0x69, 0x34, 0x41, 0x69, 0x2f, 0x4c, 0x35, 0x2b, 0x66, 0x4c, 0x79, 0x2b, 0x66, 0x6e, 0x2f, 0x61, 0x35, 0x6b, 0x59, 0x51, 0x46, 0x45, 0x41, 0x51, 0x67, 0x42, 0x43, 0x41, 0x46, 0x45, 0x59, 0x57, 0x53, 0x71, 0x2b, 0x66, 0x59, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x75, 0x67, 0x41, 0x41, 0x41, 0x30, 0x6f, 0x45, 0x65, 0x77, 0x41, 0x52, 0x41, 0x44, 0x42, 0x41, 0x46, 0x41, 0x59, 0x4c, 0x42, 0x77, 0x41, 0x52, 0x43, 0x77, 0x4f, 0x48, 0x44, 0x72, 0x67, 0x4a, 0x76, 0x41, 0x63, 0x4b, 0x42, 0x67, 0x67, 0x41, 0x43, 0x45, 0x59, 0x53, 0x45, 0x50, 0x7a, 0x45, 0x37, 0x44, 0x49, 0x78, 0x41, 0x43, 0x2f, 0x6b, 0x39, 0x4f, 0x7a, 0x45, 0x31, 0x4d, 0x77, 0x52, 0x45, 0x6a, 0x6b, 0x77, 0x0a, 0x09, 0x74, 0x46, 0x41, 0x54, 0x6e, 0x78, 0x4d, 0x43, 0x41, 0x56, 0x30, 0x42, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x59, 0x56, 0x45, 0x53, 0x4d, 0x52, 0x4d, 0x78, 0x55, 0x2b, 0x41, 0x54, 0x4d, 0x79, 0x46, 0x68, 0x63, 0x44, 0x53, 0x68, 0x39, 0x4a, 0x4c, 0x4a, 0x79, 0x6e, 0x75, 0x62, 0x6b, 0x36, 0x75, 0x6f, 0x55, 0x54, 0x4c, 0x68, 0x77, 0x44, 0x74, 0x42, 0x49, 0x52, 0x79, 0x37, 0x37, 0x39, 0x73, 0x67, 0x52, 0x67, 0x72, 0x6d, 0x5a, 0x6a, 0x0a, 0x09, 0x42, 0x51, 0x55, 0x41, 0x41, 0x51, 0x42, 0x76, 0x2f, 0x2b, 0x4d, 0x44, 0x78, 0x77, 0x52, 0x37, 0x41, 0x43, 0x63, 0x41, 0x35, 0x30, 0x41, 0x38, 0x44, 0x51, 0x77, 0x43, 0x44, 0x67, 0x74, 0x54, 0x48, 0x78, 0x34, 0x49, 0x43, 0x51, 0x49, 0x48, 0x43, 0x6c, 0x4d, 0x65, 0x48, 0x78, 0x35, 0x43, 0x43, 0x67, 0x73, 0x65, 0x48, 0x77, 0x51, 0x56, 0x41, 0x49, 0x59, 0x42, 0x69, 0x51, 0x51, 0x55, 0x68, 0x68, 0x57, 0x4a, 0x47, 0x4c, 0x6b, 0x52, 0x0a, 0x09, 0x42, 0x4c, 0x6b, 0x6c, 0x75, 0x42, 0x47, 0x4d, 0x4b, 0x42, 0x34, 0x4b, 0x43, 0x78, 0x38, 0x62, 0x42, 0x77, 0x42, 0x53, 0x47, 0x77, 0x67, 0x4f, 0x42, 0x77, 0x67, 0x55, 0x49, 0x6b, 0x55, 0x6f, 0x45, 0x50, 0x7a, 0x45, 0x37, 0x4e, 0x54, 0x73, 0x35, 0x42, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x4f, 0x54, 0x30, 0x37, 0x42, 0x44, 0x2b, 0x39, 0x65, 0x34, 0x51, 0x39, 0x65, 0x34, 0x53, 0x46, 0x7a, 0x6b, 0x77, 0x0a, 0x09, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x4f, 0x37, 0x52, 0x45, 0x58, 0x4f, 0x51, 0x63, 0x4f, 0x37, 0x52, 0x45, 0x58, 0x4f, 0x56, 0x6b, 0x69, 0x73, 0x67, 0x41, 0x6e, 0x41, 0x51, 0x46, 0x64, 0x51, 0x47, 0x30, 0x63, 0x43, 0x68, 0x77, 0x4c, 0x48, 0x41, 0x77, 0x75, 0x43, 0x53, 0x77, 0x4b, 0x4c, 0x41, 0x73, 0x73, 0x44, 0x44, 0x73, 0x4a, 0x4f, 0x77, 0x6f, 0x37, 0x43, 0x7a, 0x73, 0x4d, 0x43, 0x79, 0x41, 0x41, 0x49, 0x41, 0x45, 0x6b, 0x0a, 0x09, 0x41, 0x69, 0x67, 0x4b, 0x4b, 0x41, 0x73, 0x71, 0x45, 0x79, 0x38, 0x55, 0x4c, 0x78, 0x55, 0x71, 0x46, 0x69, 0x67, 0x65, 0x4b, 0x42, 0x38, 0x70, 0x49, 0x43, 0x6b, 0x68, 0x4a, 0x43, 0x65, 0x47, 0x43, 0x6f, 0x59, 0x4c, 0x68, 0x67, 0x79, 0x47, 0x44, 0x52, 0x49, 0x41, 0x41, 0x41, 0x41, 0x42, 0x41, 0x67, 0x49, 0x47, 0x43, 0x67, 0x59, 0x4c, 0x41, 0x77, 0x77, 0x44, 0x44, 0x51, 0x4d, 0x4f, 0x41, 0x77, 0x38, 0x44, 0x45, 0x41, 0x4d, 0x5a, 0x0a, 0x09, 0x41, 0x78, 0x6f, 0x44, 0x47, 0x77, 0x4d, 0x63, 0x42, 0x42, 0x30, 0x4a, 0x4a, 0x79, 0x38, 0x70, 0x50, 0x79, 0x6c, 0x66, 0x4b, 0x58, 0x38, 0x70, 0x67, 0x43, 0x6d, 0x51, 0x4b, 0x61, 0x41, 0x70, 0x38, 0x43, 0x6b, 0x59, 0x58, 0x51, 0x42, 0x64, 0x63, 0x51, 0x45, 0x56, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x59, 0x56, 0x46, 0x42, 0x59, 0x66, 0x41, 0x52, 0x34, 0x42, 0x46, 0x52, 0x51, 0x47, 0x49, 0x79, 0x49, 0x6d, 0x4a, 0x7a, 0x55, 0x65, 0x0a, 0x09, 0x41, 0x54, 0x4d, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x69, 0x38, 0x42, 0x4c, 0x67, 0x45, 0x31, 0x4e, 0x44, 0x59, 0x7a, 0x4d, 0x68, 0x59, 0x44, 0x69, 0x30, 0x36, 0x6f, 0x57, 0x6f, 0x6d, 0x4a, 0x59, 0x70, 0x51, 0x2f, 0x78, 0x4b, 0x58, 0x33, 0x32, 0x46, 0x72, 0x44, 0x62, 0x47, 0x62, 0x47, 0x59, 0x59, 0x4b, 0x4d, 0x5a, 0x61, 0x74, 0x41, 0x71, 0x35, 0x6a, 0x67, 0x7a, 0x6d, 0x61, 0x30, 0x42, 0x44, 0x2b, 0x75, 0x4b, 0x43, 0x68, 0x55, 0x0a, 0x09, 0x56, 0x45, 0x42, 0x4a, 0x49, 0x51, 0x34, 0x71, 0x6d, 0x59, 0x6d, 0x63, 0x74, 0x69, 0x4d, 0x6a, 0x76, 0x6a, 0x55, 0x31, 0x57, 0x56, 0x46, 0x4c, 0x55, 0x43, 0x55, 0x50, 0x4a, 0x4a, 0x57, 0x43, 0x6e, 0x71, 0x77, 0x65, 0x41, 0x41, 0x41, 0x42, 0x41, 0x44, 0x63, 0x41, 0x41, 0x41, 0x4c, 0x79, 0x42, 0x5a, 0x34, 0x41, 0x45, 0x77, 0x41, 0x34, 0x51, 0x42, 0x6b, 0x4f, 0x42, 0x51, 0x67, 0x50, 0x41, 0x36, 0x6b, 0x41, 0x45, 0x51, 0x47, 0x38, 0x0a, 0x09, 0x43, 0x49, 0x63, 0x4b, 0x43, 0x77, 0x67, 0x4a, 0x41, 0x67, 0x51, 0x41, 0x43, 0x42, 0x41, 0x53, 0x44, 0x6b, 0x59, 0x55, 0x45, 0x50, 0x77, 0x38, 0x78, 0x50, 0x77, 0x38, 0x78, 0x44, 0x49, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x2b, 0x7a, 0x30, 0x50, 0x4d, 0x54, 0x73, 0x4d, 0x68, 0x45, 0x35, 0x4f, 0x54, 0x43, 0x79, 0x72, 0x78, 0x55, 0x42, 0x41, 0x56, 0x30, 0x42, 0x45, 0x53, 0x45, 0x56, 0x49, 0x52, 0x45, 0x55, 0x46, 0x6a, 0x73, 0x42, 0x0a, 0x09, 0x46, 0x53, 0x4d, 0x69, 0x4a, 0x6a, 0x55, 0x52, 0x49, 0x7a, 0x55, 0x7a, 0x45, 0x51, 0x46, 0x33, 0x41, 0x58, 0x76, 0x2b, 0x68, 0x55, 0x74, 0x7a, 0x76, 0x62, 0x33, 0x56, 0x6f, 0x6f, 0x65, 0x48, 0x42, 0x5a, 0x37, 0x2b, 0x77, 0x6f, 0x2f, 0x39, 0x6f, 0x49, 0x6c, 0x4f, 0x6d, 0x70, 0x2f, 0x53, 0x41, 0x6d, 0x43, 0x50, 0x41, 0x54, 0x34, 0x41, 0x41, 0x41, 0x45, 0x41, 0x72, 0x76, 0x2f, 0x6a, 0x42, 0x46, 0x67, 0x45, 0x59, 0x41, 0x41, 0x54, 0x0a, 0x09, 0x41, 0x44, 0x5a, 0x41, 0x47, 0x51, 0x4d, 0x4a, 0x41, 0x41, 0x4d, 0x4f, 0x41, 0x51, 0x61, 0x48, 0x44, 0x68, 0x47, 0x4d, 0x43, 0x67, 0x47, 0x38, 0x44, 0x41, 0x30, 0x4a, 0x43, 0x41, 0x74, 0x4f, 0x41, 0x67, 0x67, 0x41, 0x52, 0x68, 0x51, 0x51, 0x2f, 0x4f, 0x7a, 0x30, 0x37, 0x44, 0x49, 0x78, 0x41, 0x43, 0x2f, 0x6b, 0x4d, 0x76, 0x54, 0x45, 0x37, 0x42, 0x45, 0x53, 0x46, 0x7a, 0x6b, 0x77, 0x74, 0x47, 0x41, 0x56, 0x7a, 0x78, 0x55, 0x43, 0x0a, 0x09, 0x41, 0x56, 0x30, 0x54, 0x45, 0x54, 0x4d, 0x52, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x45, 0x54, 0x4d, 0x52, 0x49, 0x7a, 0x55, 0x4f, 0x41, 0x53, 0x4d, 0x69, 0x4a, 0x71, 0x36, 0x34, 0x66, 0x48, 0x79, 0x56, 0x72, 0x62, 0x69, 0x34, 0x51, 0x37, 0x46, 0x31, 0x77, 0x63, 0x67, 0x42, 0x75, 0x67, 0x4b, 0x6d, 0x2f, 0x57, 0x47, 0x66, 0x6e, 0x37, 0x36, 0x6b, 0x41, 0x6e, 0x76, 0x37, 0x6f, 0x4b, 0x78, 0x6d, 0x59, 0x2f, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x50, 0x51, 0x41, 0x41, 0x42, 0x48, 0x38, 0x45, 0x59, 0x41, 0x41, 0x47, 0x41, 0x52, 0x4a, 0x41, 0x4a, 0x77, 0x4d, 0x52, 0x42, 0x41, 0x55, 0x45, 0x41, 0x68, 0x45, 0x42, 0x41, 0x67, 0x55, 0x46, 0x42, 0x41, 0x49, 0x52, 0x41, 0x77, 0x49, 0x47, 0x41, 0x41, 0x59, 0x42, 0x45, 0x51, 0x41, 0x41, 0x42, 0x6b, 0x49, 0x43, 0x41, 0x77, 0x43, 0x2f, 0x42, 0x51, 0x59, 0x46, 0x41, 0x77, 0x49, 0x42, 0x42, 0x51, 0x51, 0x41, 0x0a, 0x09, 0x42, 0x78, 0x44, 0x55, 0x78, 0x42, 0x63, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x44, 0x49, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x31, 0x5a, 0x49, 0x67, 0x46, 0x4c, 0x73, 0x41, 0x70, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x42, 0x2f, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x42, 0x77, 0x41, 0x48, 0x41, 0x45, 0x41, 0x34, 0x0a, 0x09, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x46, 0x4c, 0x73, 0x42, 0x52, 0x55, 0x53, 0x37, 0x41, 0x56, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x48, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x48, 0x41, 0x41, 0x66, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x51, 0x49, 0x35, 0x49, 0x41, 0x6d, 0x6f, 0x43, 0x65, 0x77, 0x4a, 0x2f, 0x41, 0x6f, 0x59, 0x43, 0x67, 0x41, 0x4b, 0x52, 0x41, 0x71, 0x51, 0x43, 0x43, 0x41, 0x59, 0x41, 0x0a, 0x09, 0x42, 0x67, 0x45, 0x4a, 0x41, 0x77, 0x6b, 0x45, 0x46, 0x51, 0x41, 0x56, 0x41, 0x52, 0x6f, 0x44, 0x47, 0x67, 0x51, 0x6d, 0x41, 0x43, 0x59, 0x42, 0x4b, 0x51, 0x4d, 0x70, 0x42, 0x43, 0x41, 0x49, 0x4e, 0x51, 0x41, 0x31, 0x41, 0x54, 0x6f, 0x44, 0x4f, 0x67, 0x51, 0x77, 0x43, 0x45, 0x59, 0x41, 0x52, 0x67, 0x46, 0x4a, 0x41, 0x30, 0x6b, 0x45, 0x52, 0x67, 0x56, 0x49, 0x42, 0x6b, 0x41, 0x49, 0x56, 0x67, 0x42, 0x57, 0x41, 0x56, 0x6b, 0x44, 0x0a, 0x09, 0x57, 0x51, 0x52, 0x51, 0x43, 0x47, 0x59, 0x41, 0x5a, 0x67, 0x46, 0x70, 0x41, 0x32, 0x6b, 0x45, 0x5a, 0x77, 0x56, 0x6f, 0x42, 0x6d, 0x41, 0x49, 0x64, 0x51, 0x42, 0x30, 0x41, 0x58, 0x73, 0x44, 0x65, 0x77, 0x52, 0x31, 0x42, 0x58, 0x6f, 0x47, 0x68, 0x51, 0x43, 0x46, 0x41, 0x59, 0x6b, 0x44, 0x69, 0x51, 0x53, 0x4a, 0x42, 0x59, 0x59, 0x47, 0x6c, 0x67, 0x43, 0x57, 0x41, 0x5a, 0x63, 0x43, 0x6d, 0x67, 0x4f, 0x59, 0x42, 0x4a, 0x67, 0x46, 0x0a, 0x09, 0x6c, 0x77, 0x61, 0x6f, 0x42, 0x61, 0x63, 0x47, 0x73, 0x41, 0x6a, 0x41, 0x43, 0x4e, 0x38, 0x49, 0x2f, 0x77, 0x67, 0x2b, 0x58, 0x51, 0x42, 0x64, 0x45, 0x7a, 0x4d, 0x4a, 0x41, 0x54, 0x4d, 0x42, 0x49, 0x7a, 0x33, 0x44, 0x41, 0x56, 0x34, 0x42, 0x58, 0x73, 0x50, 0x2b, 0x58, 0x50, 0x6f, 0x45, 0x59, 0x50, 0x78, 0x55, 0x41, 0x36, 0x7a, 0x37, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x51, 0x42, 0x57, 0x41, 0x41, 0x41, 0x47, 0x4e, 0x51, 0x52, 0x67, 0x0a, 0x09, 0x41, 0x41, 0x77, 0x43, 0x41, 0x55, 0x42, 0x4a, 0x42, 0x56, 0x55, 0x47, 0x42, 0x51, 0x6b, 0x4b, 0x43, 0x51, 0x52, 0x56, 0x43, 0x67, 0x6b, 0x44, 0x56, 0x51, 0x6f, 0x4c, 0x43, 0x67, 0x4a, 0x56, 0x41, 0x51, 0x49, 0x4c, 0x43, 0x77, 0x6f, 0x47, 0x45, 0x51, 0x63, 0x49, 0x42, 0x77, 0x55, 0x52, 0x42, 0x41, 0x55, 0x49, 0x43, 0x41, 0x63, 0x43, 0x45, 0x51, 0x4d, 0x43, 0x44, 0x41, 0x41, 0x4d, 0x41, 0x52, 0x45, 0x41, 0x41, 0x41, 0x78, 0x43, 0x0a, 0x09, 0x43, 0x67, 0x55, 0x43, 0x41, 0x77, 0x59, 0x44, 0x41, 0x4c, 0x38, 0x4c, 0x43, 0x41, 0x77, 0x4c, 0x43, 0x67, 0x6b, 0x49, 0x42, 0x67, 0x55, 0x45, 0x41, 0x77, 0x49, 0x42, 0x43, 0x77, 0x63, 0x41, 0x44, 0x52, 0x44, 0x55, 0x7a, 0x42, 0x63, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x50, 0x4f, 0x77, 0x79, 0x4d, 0x68, 0x63, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x49, 0x0a, 0x09, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x46, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x31, 0x5a, 0x49, 0x67, 0x46, 0x4c, 0x73, 0x41, 0x70, 0x55, 0x53, 0x37, 0x41, 0x52, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x42, 0x4a, 0x55, 0x57, 0x30, 0x75, 0x77, 0x45, 0x31, 0x52, 0x62, 0x53, 0x37, 0x41, 0x4c, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x4e, 0x2f, 0x38, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x51, 0x41, 0x4e, 0x41, 0x41, 0x30, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x55, 0x75, 0x77, 0x44, 0x46, 0x52, 0x4c, 0x73, 0x41, 0x31, 0x55, 0x57, 0x30, 0x75, 0x77, 0x45, 0x46, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x44, 0x51, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x44, 0x51, 0x41, 0x4e, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x55, 0x44, 0x2f, 0x42, 0x51, 0x49, 0x57, 0x41, 0x68, 0x59, 0x46, 0x0a, 0x09, 0x49, 0x67, 0x6f, 0x31, 0x43, 0x6b, 0x6b, 0x43, 0x53, 0x51, 0x56, 0x47, 0x43, 0x6b, 0x41, 0x4b, 0x57, 0x77, 0x4a, 0x62, 0x42, 0x56, 0x55, 0x4b, 0x55, 0x41, 0x70, 0x75, 0x41, 0x6d, 0x34, 0x46, 0x5a, 0x67, 0x70, 0x35, 0x41, 0x6e, 0x38, 0x43, 0x65, 0x51, 0x56, 0x2f, 0x42, 0x59, 0x63, 0x43, 0x6d, 0x51, 0x4b, 0x59, 0x42, 0x5a, 0x51, 0x4b, 0x76, 0x41, 0x4b, 0x38, 0x42, 0x63, 0x34, 0x43, 0x78, 0x77, 0x50, 0x50, 0x42, 0x52, 0x30, 0x46, 0x0a, 0x09, 0x41, 0x67, 0x6b, 0x44, 0x42, 0x67, 0x51, 0x4c, 0x42, 0x51, 0x6f, 0x49, 0x43, 0x77, 0x6b, 0x45, 0x43, 0x77, 0x55, 0x4d, 0x46, 0x51, 0x49, 0x5a, 0x41, 0x78, 0x59, 0x45, 0x47, 0x67, 0x55, 0x62, 0x43, 0x42, 0x73, 0x4a, 0x46, 0x41, 0x73, 0x56, 0x44, 0x43, 0x55, 0x41, 0x4a, 0x51, 0x45, 0x6a, 0x41, 0x69, 0x63, 0x44, 0x49, 0x51, 0x51, 0x6c, 0x42, 0x53, 0x49, 0x47, 0x49, 0x67, 0x63, 0x6c, 0x43, 0x43, 0x63, 0x4a, 0x4a, 0x41, 0x6f, 0x68, 0x0a, 0x09, 0x43, 0x79, 0x4d, 0x4d, 0x4f, 0x51, 0x4d, 0x32, 0x42, 0x44, 0x59, 0x49, 0x4f, 0x51, 0x77, 0x77, 0x44, 0x6b, 0x59, 0x43, 0x53, 0x41, 0x4e, 0x47, 0x42, 0x45, 0x41, 0x45, 0x51, 0x67, 0x56, 0x41, 0x42, 0x6b, 0x41, 0x48, 0x51, 0x41, 0x68, 0x45, 0x43, 0x55, 0x51, 0x4b, 0x52, 0x41, 0x74, 0x41, 0x44, 0x6b, 0x41, 0x4f, 0x56, 0x67, 0x42, 0x57, 0x41, 0x56, 0x59, 0x43, 0x55, 0x41, 0x52, 0x52, 0x42, 0x56, 0x49, 0x47, 0x55, 0x67, 0x64, 0x51, 0x0a, 0x09, 0x43, 0x46, 0x4d, 0x4a, 0x56, 0x41, 0x70, 0x56, 0x43, 0x32, 0x4d, 0x41, 0x5a, 0x41, 0x46, 0x6c, 0x41, 0x6d, 0x6f, 0x44, 0x5a, 0x51, 0x52, 0x71, 0x42, 0x57, 0x6f, 0x47, 0x61, 0x67, 0x64, 0x75, 0x43, 0x57, 0x45, 0x4c, 0x5a, 0x77, 0x78, 0x76, 0x44, 0x6e, 0x55, 0x41, 0x64, 0x51, 0x46, 0x35, 0x41, 0x6e, 0x30, 0x44, 0x65, 0x41, 0x52, 0x39, 0x42, 0x58, 0x6f, 0x47, 0x66, 0x77, 0x5a, 0x36, 0x42, 0x33, 0x38, 0x48, 0x65, 0x41, 0x68, 0x35, 0x0a, 0x09, 0x43, 0x58, 0x38, 0x4a, 0x65, 0x77, 0x70, 0x32, 0x43, 0x33, 0x30, 0x4d, 0x68, 0x77, 0x4b, 0x49, 0x42, 0x59, 0x38, 0x4f, 0x6c, 0x77, 0x43, 0x58, 0x41, 0x5a, 0x51, 0x43, 0x6b, 0x77, 0x4f, 0x63, 0x42, 0x4a, 0x73, 0x46, 0x6d, 0x41, 0x61, 0x59, 0x42, 0x35, 0x6b, 0x49, 0x51, 0x43, 0x2b, 0x57, 0x44, 0x4a, 0x38, 0x4f, 0x70, 0x67, 0x43, 0x6d, 0x41, 0x61, 0x51, 0x43, 0x70, 0x41, 0x4f, 0x72, 0x42, 0x4b, 0x73, 0x46, 0x71, 0x51, 0x61, 0x70, 0x0a, 0x09, 0x42, 0x36, 0x73, 0x49, 0x70, 0x41, 0x79, 0x76, 0x44, 0x72, 0x55, 0x43, 0x73, 0x51, 0x4f, 0x39, 0x42, 0x4c, 0x73, 0x46, 0x75, 0x41, 0x6d, 0x2f, 0x44, 0x73, 0x51, 0x43, 0x77, 0x77, 0x50, 0x4d, 0x42, 0x4d, 0x6f, 0x46, 0x65, 0x56, 0x30, 0x41, 0x58, 0x52, 0x4d, 0x7a, 0x47, 0x77, 0x45, 0x7a, 0x47, 0x77, 0x45, 0x7a, 0x41, 0x53, 0x4d, 0x4c, 0x41, 0x53, 0x4e, 0x57, 0x75, 0x4f, 0x62, 0x6c, 0x32, 0x65, 0x62, 0x6c, 0x75, 0x50, 0x37, 0x62, 0x0a, 0x09, 0x32, 0x66, 0x48, 0x79, 0x32, 0x51, 0x52, 0x67, 0x2f, 0x4a, 0x59, 0x44, 0x61, 0x76, 0x79, 0x57, 0x41, 0x32, 0x72, 0x37, 0x6f, 0x41, 0x4f, 0x57, 0x2f, 0x47, 0x6f, 0x41, 0x41, 0x51, 0x41, 0x37, 0x41, 0x41, 0x41, 0x45, 0x65, 0x51, 0x52, 0x67, 0x41, 0x41, 0x73, 0x42, 0x57, 0x6b, 0x42, 0x47, 0x42, 0x52, 0x45, 0x47, 0x42, 0x77, 0x59, 0x45, 0x45, 0x51, 0x4d, 0x45, 0x42, 0x77, 0x63, 0x47, 0x42, 0x42, 0x45, 0x46, 0x42, 0x41, 0x45, 0x43, 0x0a, 0x09, 0x41, 0x51, 0x4d, 0x52, 0x41, 0x67, 0x49, 0x42, 0x43, 0x78, 0x45, 0x41, 0x41, 0x51, 0x41, 0x4b, 0x45, 0x51, 0x6b, 0x4b, 0x41, 0x51, 0x45, 0x41, 0x43, 0x68, 0x45, 0x4c, 0x43, 0x67, 0x63, 0x49, 0x42, 0x77, 0x6b, 0x52, 0x43, 0x41, 0x67, 0x48, 0x51, 0x67, 0x6f, 0x48, 0x42, 0x41, 0x45, 0x45, 0x43, 0x41, 0x43, 0x2f, 0x42, 0x51, 0x49, 0x4b, 0x42, 0x77, 0x51, 0x42, 0x42, 0x41, 0x67, 0x41, 0x41, 0x67, 0x67, 0x47, 0x44, 0x42, 0x44, 0x55, 0x0a, 0x09, 0x78, 0x4e, 0x54, 0x45, 0x45, 0x52, 0x63, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x50, 0x4f, 0x77, 0x79, 0x46, 0x7a, 0x6b, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x31, 0x5a, 0x49, 0x67, 0x46, 0x4c, 0x0a, 0x09, 0x73, 0x41, 0x70, 0x55, 0x53, 0x37, 0x41, 0x50, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x42, 0x42, 0x55, 0x57, 0x30, 0x75, 0x77, 0x45, 0x56, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x44, 0x50, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x44, 0x41, 0x41, 0x4d, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x46, 0x4c, 0x73, 0x42, 0x52, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x44, 0x41, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x44, 0x41, 0x41, 0x4d, 0x0a, 0x09, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x55, 0x43, 0x59, 0x43, 0x67, 0x51, 0x45, 0x43, 0x68, 0x6f, 0x45, 0x46, 0x51, 0x6f, 0x6d, 0x43, 0x6a, 0x30, 0x45, 0x4d, 0x51, 0x70, 0x56, 0x42, 0x46, 0x63, 0x48, 0x57, 0x41, 0x70, 0x6d, 0x43, 0x6e, 0x59, 0x42, 0x65, 0x67, 0x52, 0x32, 0x42, 0x33, 0x51, 0x4b, 0x6a, 0x51, 0x53, 0x43, 0x43, 0x70, 0x6b, 0x45, 0x6e, 0x77, 0x53, 0x58, 0x42, 0x35, 0x49, 0x4b, 0x6b, 0x41, 0x71, 0x6d, 0x0a, 0x09, 0x41, 0x61, 0x6b, 0x45, 0x72, 0x77, 0x53, 0x6c, 0x42, 0x36, 0x4d, 0x4b, 0x6f, 0x41, 0x6f, 0x63, 0x43, 0x67, 0x4d, 0x45, 0x42, 0x51, 0x55, 0x4a, 0x43, 0x67, 0x73, 0x61, 0x41, 0x78, 0x55, 0x46, 0x46, 0x51, 0x6b, 0x61, 0x43, 0x79, 0x6b, 0x44, 0x4a, 0x67, 0x55, 0x6c, 0x43, 0x53, 0x6f, 0x4c, 0x49, 0x41, 0x30, 0x36, 0x41, 0x54, 0x6b, 0x44, 0x4e, 0x77, 0x55, 0x30, 0x42, 0x7a, 0x59, 0x4a, 0x4f, 0x51, 0x73, 0x77, 0x44, 0x55, 0x6b, 0x44, 0x0a, 0x09, 0x52, 0x67, 0x56, 0x46, 0x43, 0x55, 0x6f, 0x4c, 0x51, 0x41, 0x31, 0x5a, 0x41, 0x46, 0x59, 0x42, 0x57, 0x51, 0x4a, 0x5a, 0x41, 0x31, 0x63, 0x46, 0x56, 0x67, 0x5a, 0x5a, 0x42, 0x31, 0x59, 0x49, 0x56, 0x67, 0x6c, 0x5a, 0x43, 0x31, 0x41, 0x4e, 0x62, 0x77, 0x31, 0x34, 0x41, 0x58, 0x38, 0x4e, 0x6d, 0x77, 0x47, 0x55, 0x42, 0x36, 0x73, 0x42, 0x70, 0x41, 0x65, 0x77, 0x44, 0x63, 0x38, 0x4e, 0x33, 0x77, 0x33, 0x2f, 0x44, 0x53, 0x39, 0x64, 0x0a, 0x09, 0x41, 0x46, 0x30, 0x4a, 0x41, 0x69, 0x4d, 0x4a, 0x41, 0x53, 0x4d, 0x4a, 0x41, 0x54, 0x4d, 0x4a, 0x41, 0x51, 0x52, 0x6b, 0x2f, 0x6d, 0x73, 0x42, 0x71, 0x74, 0x6e, 0x2b, 0x75, 0x76, 0x36, 0x36, 0x32, 0x51, 0x47, 0x7a, 0x2f, 0x6e, 0x4c, 0x5a, 0x41, 0x53, 0x6b, 0x42, 0x4b, 0x51, 0x52, 0x67, 0x2f, 0x64, 0x2f, 0x39, 0x77, 0x51, 0x47, 0x34, 0x2f, 0x6b, 0x67, 0x43, 0x53, 0x67, 0x49, 0x57, 0x2f, 0x6e, 0x45, 0x42, 0x6a, 0x77, 0x41, 0x42, 0x0a, 0x09, 0x41, 0x44, 0x33, 0x2b, 0x56, 0x67, 0x52, 0x2f, 0x42, 0x47, 0x41, 0x41, 0x44, 0x77, 0x47, 0x69, 0x51, 0x45, 0x4d, 0x48, 0x43, 0x41, 0x49, 0x4a, 0x45, 0x51, 0x41, 0x50, 0x43, 0x68, 0x45, 0x4c, 0x43, 0x67, 0x41, 0x41, 0x44, 0x77, 0x34, 0x52, 0x44, 0x77, 0x41, 0x50, 0x44, 0x52, 0x45, 0x4d, 0x44, 0x51, 0x41, 0x41, 0x44, 0x77, 0x30, 0x52, 0x44, 0x67, 0x30, 0x4b, 0x43, 0x77, 0x6f, 0x4d, 0x45, 0x51, 0x73, 0x4c, 0x43, 0x6b, 0x49, 0x4e, 0x0a, 0x09, 0x43, 0x77, 0x6b, 0x51, 0x41, 0x41, 0x73, 0x46, 0x68, 0x77, 0x4f, 0x39, 0x44, 0x67, 0x75, 0x38, 0x45, 0x41, 0x34, 0x4e, 0x44, 0x41, 0x6f, 0x4a, 0x42, 0x67, 0x4d, 0x41, 0x43, 0x41, 0x38, 0x45, 0x44, 0x77, 0x73, 0x51, 0x45, 0x4e, 0x54, 0x45, 0x78, 0x42, 0x45, 0x58, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x4f, 0x51, 0x79, 0x39, 0x4f, 0x77, 0x52, 0x4f, 0x52, 0x45, 0x35, 0x45, 0x6a, 0x6b, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x46, 0x0a, 0x09, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x42, 0x65, 0x30, 0x58, 0x4d, 0x6c, 0x6b, 0x69, 0x41, 0x55, 0x75, 0x77, 0x43, 0x6c, 0x52, 0x4c, 0x73, 0x41, 0x68, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x42, 0x44, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x42, 0x41, 0x41, 0x45, 0x41, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x0a, 0x09, 0x53, 0x37, 0x41, 0x55, 0x56, 0x46, 0x69, 0x39, 0x41, 0x42, 0x41, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x42, 0x41, 0x41, 0x45, 0x50, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x38, 0x41, 0x59, 0x41, 0x42, 0x51, 0x67, 0x47, 0x43, 0x51, 0x4d, 0x4e, 0x46, 0x67, 0x6f, 0x58, 0x44, 0x52, 0x41, 0x4e, 0x49, 0x77, 0x30, 0x31, 0x44, 0x55, 0x6b, 0x4b, 0x54, 0x77, 0x70, 0x4f, 0x44, 0x56, 0x6f, 0x4a, 0x57, 0x67, 0x70, 0x71, 0x0a, 0x09, 0x43, 0x6f, 0x63, 0x4e, 0x67, 0x41, 0x32, 0x54, 0x44, 0x52, 0x49, 0x4b, 0x41, 0x41, 0x6f, 0x4a, 0x42, 0x67, 0x73, 0x46, 0x44, 0x41, 0x73, 0x4f, 0x43, 0x77, 0x38, 0x58, 0x41, 0x52, 0x55, 0x43, 0x45, 0x41, 0x51, 0x51, 0x42, 0x52, 0x63, 0x4b, 0x46, 0x41, 0x73, 0x55, 0x44, 0x42, 0x6f, 0x4f, 0x47, 0x67, 0x38, 0x6e, 0x41, 0x43, 0x51, 0x42, 0x4a, 0x41, 0x49, 0x67, 0x42, 0x43, 0x41, 0x46, 0x4b, 0x51, 0x67, 0x6f, 0x43, 0x53, 0x55, 0x4b, 0x0a, 0x09, 0x4a, 0x41, 0x73, 0x6b, 0x44, 0x43, 0x63, 0x4e, 0x4b, 0x67, 0x34, 0x71, 0x44, 0x79, 0x41, 0x52, 0x4e, 0x77, 0x41, 0x31, 0x41, 0x54, 0x55, 0x43, 0x4d, 0x41, 0x51, 0x77, 0x42, 0x54, 0x67, 0x4b, 0x4e, 0x67, 0x73, 0x32, 0x44, 0x44, 0x67, 0x4e, 0x4f, 0x51, 0x34, 0x35, 0x44, 0x7a, 0x41, 0x52, 0x51, 0x51, 0x42, 0x41, 0x41, 0x55, 0x41, 0x43, 0x51, 0x41, 0x4e, 0x41, 0x42, 0x45, 0x41, 0x46, 0x51, 0x41, 0x5a, 0x41, 0x42, 0x30, 0x41, 0x49, 0x0a, 0x09, 0x51, 0x67, 0x6c, 0x46, 0x43, 0x6b, 0x63, 0x4e, 0x53, 0x51, 0x35, 0x4a, 0x44, 0x30, 0x41, 0x52, 0x56, 0x41, 0x42, 0x52, 0x41, 0x56, 0x45, 0x43, 0x56, 0x51, 0x4e, 0x51, 0x42, 0x46, 0x41, 0x46, 0x56, 0x67, 0x5a, 0x56, 0x42, 0x31, 0x59, 0x49, 0x56, 0x77, 0x6c, 0x58, 0x43, 0x6c, 0x55, 0x4c, 0x56, 0x51, 0x78, 0x5a, 0x44, 0x6c, 0x6b, 0x50, 0x55, 0x42, 0x46, 0x6d, 0x41, 0x57, 0x59, 0x43, 0x61, 0x41, 0x70, 0x70, 0x44, 0x6d, 0x6b, 0x50, 0x0a, 0x09, 0x59, 0x42, 0x46, 0x37, 0x43, 0x48, 0x67, 0x4f, 0x65, 0x41, 0x2b, 0x4a, 0x41, 0x49, 0x6f, 0x4a, 0x68, 0x51, 0x75, 0x46, 0x44, 0x49, 0x6b, 0x4e, 0x69, 0x51, 0x36, 0x4a, 0x44, 0x35, 0x6b, 0x4a, 0x6c, 0x51, 0x75, 0x56, 0x44, 0x4a, 0x6f, 0x4f, 0x6d, 0x67, 0x2b, 0x6b, 0x43, 0x36, 0x51, 0x4d, 0x71, 0x77, 0x36, 0x72, 0x44, 0x37, 0x41, 0x52, 0x7a, 0x78, 0x48, 0x66, 0x45, 0x66, 0x38, 0x52, 0x5a, 0x56, 0x30, 0x41, 0x58, 0x51, 0x55, 0x4f, 0x0a, 0x09, 0x41, 0x53, 0x73, 0x42, 0x4e, 0x54, 0x4d, 0x79, 0x4e, 0x6a, 0x38, 0x42, 0x41, 0x54, 0x4d, 0x4a, 0x41, 0x54, 0x4d, 0x43, 0x6b, 0x30, 0x36, 0x55, 0x66, 0x4a, 0x4e, 0x73, 0x54, 0x46, 0x51, 0x7a, 0x49, 0x66, 0x34, 0x37, 0x77, 0x77, 0x46, 0x65, 0x41, 0x56, 0x37, 0x44, 0x61, 0x4d, 0x68, 0x36, 0x6d, 0x6b, 0x69, 0x47, 0x56, 0x41, 0x52, 0x4f, 0x2f, 0x4a, 0x51, 0x44, 0x62, 0x41, 0x41, 0x42, 0x41, 0x46, 0x67, 0x41, 0x41, 0x41, 0x50, 0x62, 0x0a, 0x09, 0x42, 0x47, 0x41, 0x41, 0x43, 0x51, 0x43, 0x30, 0x51, 0x42, 0x6f, 0x49, 0x45, 0x51, 0x49, 0x44, 0x41, 0x67, 0x4d, 0x52, 0x42, 0x77, 0x67, 0x48, 0x51, 0x67, 0x69, 0x70, 0x41, 0x4c, 0x77, 0x44, 0x71, 0x51, 0x55, 0x49, 0x41, 0x77, 0x45, 0x41, 0x42, 0x41, 0x45, 0x47, 0x43, 0x68, 0x44, 0x63, 0x78, 0x44, 0x4c, 0x45, 0x45, 0x54, 0x6b, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x50, 0x54, 0x73, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x0a, 0x09, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x57, 0x53, 0x49, 0x42, 0x53, 0x37, 0x41, 0x4c, 0x56, 0x45, 0x75, 0x77, 0x44, 0x46, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x43, 0x67, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x43, 0x67, 0x41, 0x4b, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x46, 0x4c, 0x73, 0x42, 0x4e, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x43, 0x76, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x43, 0x67, 0x41, 0x4b, 0x0a, 0x09, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x55, 0x42, 0x43, 0x42, 0x51, 0x49, 0x57, 0x41, 0x69, 0x59, 0x43, 0x52, 0x77, 0x4a, 0x4a, 0x42, 0x77, 0x55, 0x4c, 0x43, 0x41, 0x38, 0x4c, 0x47, 0x41, 0x4d, 0x62, 0x43, 0x43, 0x73, 0x49, 0x49, 0x41, 0x73, 0x32, 0x41, 0x7a, 0x6b, 0x49, 0x4d, 0x41, 0x74, 0x41, 0x41, 0x55, 0x41, 0x43, 0x52, 0x51, 0x4e, 0x41, 0x42, 0x45, 0x41, 0x46, 0x51, 0x77, 0x68, 0x58, 0x41, 0x31, 0x6b, 0x49, 0x0a, 0x09, 0x58, 0x77, 0x74, 0x67, 0x41, 0x57, 0x41, 0x43, 0x5a, 0x67, 0x4e, 0x67, 0x42, 0x47, 0x41, 0x46, 0x59, 0x67, 0x68, 0x2f, 0x43, 0x34, 0x41, 0x4c, 0x72, 0x77, 0x73, 0x62, 0x58, 0x51, 0x42, 0x64, 0x45, 0x79, 0x45, 0x56, 0x41, 0x53, 0x45, 0x56, 0x49, 0x54, 0x55, 0x42, 0x49, 0x58, 0x45, 0x44, 0x61, 0x76, 0x31, 0x4d, 0x41, 0x72, 0x54, 0x38, 0x66, 0x51, 0x4b, 0x30, 0x2f, 0x57, 0x55, 0x45, 0x59, 0x4b, 0x6a, 0x38, 0x32, 0x35, 0x4f, 0x6f, 0x0a, 0x09, 0x41, 0x79, 0x55, 0x41, 0x41, 0x51, 0x45, 0x41, 0x2f, 0x72, 0x49, 0x45, 0x46, 0x77, 0x59, 0x55, 0x41, 0x43, 0x51, 0x41, 0x67, 0x6b, 0x41, 0x30, 0x47, 0x51, 0x38, 0x56, 0x43, 0x77, 0x59, 0x6c, 0x43, 0x52, 0x6f, 0x51, 0x46, 0x52, 0x30, 0x4c, 0x42, 0x53, 0x41, 0x68, 0x41, 0x77, 0x41, 0x4c, 0x71, 0x51, 0x6b, 0x41, 0x71, 0x51, 0x48, 0x41, 0x43, 0x52, 0x57, 0x70, 0x45, 0x37, 0x45, 0x6c, 0x44, 0x41, 0x6b, 0x4b, 0x42, 0x53, 0x51, 0x57, 0x0a, 0x09, 0x47, 0x51, 0x41, 0x64, 0x43, 0x67, 0x55, 0x54, 0x41, 0x68, 0x51, 0x41, 0x49, 0x42, 0x6c, 0x44, 0x43, 0x67, 0x38, 0x46, 0x4a, 0x52, 0x44, 0x55, 0x50, 0x4d, 0x54, 0x38, 0x50, 0x4d, 0x51, 0x79, 0x4f, 0x54, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x45, 0x52, 0x49, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x7a, 0x73, 0x78, 0x50, 0x54, 0x73, 0x45, 0x4f, 0x34, 0x53, 0x46, 0x7a, 0x6b, 0x53, 0x4f, 0x52, 0x45, 0x35, 0x0a, 0x09, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x77, 0x41, 0x55, 0x75, 0x77, 0x44, 0x46, 0x52, 0x59, 0x76, 0x51, 0x41, 0x6c, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x6c, 0x41, 0x43, 0x55, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x73, 0x67, 0x41, 0x6d, 0x41, 0x56, 0x30, 0x46, 0x46, 0x53, 0x4d, 0x69, 0x4a, 0x6a, 0x30, 0x42, 0x4e, 0x43, 0x59, 0x72, 0x41, 0x54, 0x55, 0x7a, 0x4d, 0x6a, 0x59, 0x39, 0x0a, 0x09, 0x41, 0x54, 0x51, 0x32, 0x4f, 0x77, 0x45, 0x56, 0x49, 0x79, 0x49, 0x47, 0x48, 0x51, 0x45, 0x55, 0x42, 0x67, 0x63, 0x65, 0x41, 0x52, 0x30, 0x42, 0x46, 0x42, 0x59, 0x7a, 0x42, 0x42, 0x63, 0x2b, 0x2b, 0x61, 0x6c, 0x73, 0x6a, 0x6a, 0x30, 0x39, 0x6a, 0x32, 0x75, 0x70, 0x2b, 0x54, 0x35, 0x45, 0x6a, 0x56, 0x5a, 0x62, 0x62, 0x6d, 0x39, 0x61, 0x56, 0x6f, 0x32, 0x2b, 0x6b, 0x4a, 0x54, 0x64, 0x37, 0x35, 0x64, 0x30, 0x6a, 0x33, 0x4f, 0x56, 0x0a, 0x09, 0x38, 0x4e, 0x32, 0x54, 0x6a, 0x31, 0x69, 0x4e, 0x2b, 0x4a, 0x32, 0x4f, 0x47, 0x52, 0x75, 0x4f, 0x6e, 0x50, 0x69, 0x4e, 0x57, 0x41, 0x41, 0x42, 0x41, 0x51, 0x54, 0x2b, 0x48, 0x51, 0x47, 0x75, 0x42, 0x68, 0x30, 0x41, 0x41, 0x77, 0x41, 0x53, 0x74, 0x77, 0x45, 0x41, 0x73, 0x51, 0x51, 0x41, 0x42, 0x51, 0x49, 0x45, 0x45, 0x4e, 0x54, 0x73, 0x4d, 0x51, 0x41, 0x51, 0x2f, 0x4d, 0x77, 0x77, 0x41, 0x52, 0x45, 0x6a, 0x45, 0x51, 0x47, 0x75, 0x0a, 0x09, 0x71, 0x67, 0x59, 0x64, 0x2b, 0x41, 0x41, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41, 0x51, 0x45, 0x41, 0x2f, 0x72, 0x49, 0x45, 0x46, 0x77, 0x59, 0x55, 0x41, 0x43, 0x51, 0x41, 0x6e, 0x6b, 0x41, 0x32, 0x48, 0x79, 0x55, 0x62, 0x46, 0x67, 0x77, 0x50, 0x43, 0x42, 0x73, 0x4c, 0x46, 0x52, 0x6b, 0x50, 0x42, 0x41, 0x55, 0x67, 0x41, 0x77, 0x41, 0x5a, 0x71, 0x52, 0x73, 0x41, 0x71, 0x53, 0x50, 0x41, 0x47, 0x77, 0x2b, 0x70, 0x45, 0x62, 0x45, 0x6c, 0x0a, 0x09, 0x48, 0x42, 0x6b, 0x61, 0x46, 0x51, 0x38, 0x42, 0x42, 0x41, 0x41, 0x49, 0x47, 0x68, 0x55, 0x6a, 0x45, 0x67, 0x51, 0x41, 0x47, 0x68, 0x38, 0x56, 0x51, 0x78, 0x41, 0x41, 0x43, 0x77, 0x51, 0x6c, 0x45, 0x4e, 0x51, 0x38, 0x78, 0x44, 0x4c, 0x38, 0x50, 0x4d, 0x51, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x45, 0x52, 0x49, 0x35, 0x45, 0x52, 0x49, 0x35, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x38, 0x37, 0x4d, 0x54, 0x30, 0x0a, 0x09, 0x37, 0x42, 0x44, 0x75, 0x45, 0x68, 0x63, 0x35, 0x45, 0x52, 0x49, 0x35, 0x4f, 0x52, 0x45, 0x35, 0x45, 0x54, 0x6b, 0x35, 0x45, 0x52, 0x49, 0x35, 0x4d, 0x41, 0x46, 0x4c, 0x73, 0x41, 0x70, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x4a, 0x51, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x4a, 0x51, 0x41, 0x6c, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x46, 0x4c, 0x73, 0x41, 0x35, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x4a, 0x66, 0x2f, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x4a, 0x51, 0x41, 0x6c, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x62, 0x49, 0x41, 0x4a, 0x67, 0x46, 0x64, 0x42, 0x54, 0x4d, 0x79, 0x4e, 0x6a, 0x30, 0x42, 0x4e, 0x44, 0x59, 0x33, 0x4c, 0x67, 0x45, 0x39, 0x41, 0x54, 0x51, 0x6d, 0x4b, 0x77, 0x45, 0x31, 0x4d, 0x7a, 0x49, 0x57, 0x48, 0x51, 0x45, 0x55, 0x46, 0x6a, 0x73, 0x42, 0x46, 0x53, 0x4d, 0x69, 0x42, 0x68, 0x30, 0x42, 0x46, 0x41, 0x59, 0x72, 0x0a, 0x09, 0x41, 0x51, 0x45, 0x41, 0x52, 0x6f, 0x78, 0x56, 0x57, 0x6d, 0x39, 0x76, 0x57, 0x6c, 0x57, 0x4d, 0x52, 0x6a, 0x2f, 0x35, 0x70, 0x32, 0x79, 0x4f, 0x50, 0x6a, 0x36, 0x4f, 0x62, 0x4b, 0x66, 0x35, 0x50, 0x37, 0x35, 0x57, 0x6a, 0x2f, 0x69, 0x63, 0x6a, 0x68, 0x73, 0x5a, 0x6a, 0x70, 0x33, 0x34, 0x6a, 0x6c, 0x65, 0x50, 0x6b, 0x39, 0x33, 0x77, 0x6c, 0x58, 0x4f, 0x50, 0x64, 0x4a, 0x66, 0x76, 0x33, 0x5a, 0x51, 0x41, 0x41, 0x51, 0x44, 0x5a, 0x0a, 0x09, 0x41, 0x64, 0x4d, 0x46, 0x32, 0x77, 0x4d, 0x78, 0x41, 0x42, 0x30, 0x41, 0x49, 0x30, 0x41, 0x51, 0x41, 0x52, 0x41, 0x62, 0x44, 0x41, 0x41, 0x54, 0x42, 0x4a, 0x77, 0x62, 0x45, 0x35, 0x77, 0x4d, 0x48, 0x67, 0x41, 0x50, 0x48, 0x68, 0x44, 0x55, 0x78, 0x44, 0x45, 0x41, 0x45, 0x4e, 0x54, 0x38, 0x31, 0x4f, 0x77, 0x51, 0x77, 0x42, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x77, 0x41, 0x52, 0x55, 0x47, 0x42, 0x69, 0x4d, 0x69, 0x4a, 0x79, 0x59, 0x6e, 0x0a, 0x09, 0x4a, 0x69, 0x63, 0x6d, 0x49, 0x79, 0x49, 0x47, 0x42, 0x7a, 0x55, 0x32, 0x4e, 0x6a, 0x4d, 0x79, 0x46, 0x78, 0x59, 0x58, 0x46, 0x68, 0x63, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x42, 0x64, 0x74, 0x70, 0x73, 0x32, 0x46, 0x75, 0x6b, 0x67, 0x73, 0x46, 0x42, 0x77, 0x2b, 0x62, 0x58, 0x6c, 0x69, 0x73, 0x59, 0x6d, 0x6d, 0x7a, 0x59, 0x57, 0x36, 0x54, 0x43, 0x67, 0x55, 0x49, 0x44, 0x70, 0x74, 0x65, 0x56, 0x71, 0x6b, 0x44, 0x4d, 0x62, 0x4a, 0x50, 0x0a, 0x09, 0x52, 0x44, 0x73, 0x45, 0x41, 0x67, 0x4d, 0x46, 0x50, 0x6b, 0x31, 0x54, 0x73, 0x6b, 0x39, 0x46, 0x50, 0x41, 0x51, 0x43, 0x41, 0x77, 0x55, 0x2b, 0x54, 0x41, 0x44, 0x2f, 0x2f, 0x77, 0x41, 0x51, 0x41, 0x41, 0x41, 0x46, 0x61, 0x41, 0x64, 0x4f, 0x41, 0x69, 0x63, 0x41, 0x4a, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x44, 0x41, 0x4c, 0x77, 0x42, 0x64, 0x51, 0x41, 0x44, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x56, 0x6f, 0x0a, 0x09, 0x42, 0x32, 0x30, 0x41, 0x43, 0x77, 0x41, 0x4f, 0x41, 0x43, 0x45, 0x41, 0x79, 0x30, 0x42, 0x55, 0x44, 0x42, 0x45, 0x4e, 0x44, 0x42, 0x73, 0x63, 0x47, 0x77, 0x34, 0x52, 0x48, 0x42, 0x73, 0x65, 0x45, 0x52, 0x77, 0x62, 0x48, 0x52, 0x45, 0x63, 0x48, 0x42, 0x73, 0x4e, 0x45, 0x53, 0x45, 0x50, 0x49, 0x51, 0x77, 0x52, 0x44, 0x67, 0x77, 0x50, 0x44, 0x79, 0x45, 0x67, 0x45, 0x51, 0x38, 0x68, 0x48, 0x78, 0x45, 0x68, 0x44, 0x79, 0x46, 0x43, 0x0a, 0x09, 0x44, 0x42, 0x73, 0x50, 0x44, 0x51, 0x6b, 0x44, 0x77, 0x52, 0x55, 0x4a, 0x48, 0x70, 0x55, 0x4e, 0x43, 0x59, 0x34, 0x67, 0x48, 0x42, 0x34, 0x64, 0x48, 0x42, 0x67, 0x67, 0x48, 0x79, 0x45, 0x4e, 0x45, 0x67, 0x59, 0x4f, 0x47, 0x41, 0x77, 0x47, 0x47, 0x77, 0x42, 0x57, 0x47, 0x42, 0x77, 0x50, 0x42, 0x6c, 0x59, 0x53, 0x48, 0x43, 0x45, 0x69, 0x45, 0x4e, 0x54, 0x45, 0x31, 0x4f, 0x77, 0x79, 0x45, 0x4e, 0x54, 0x75, 0x4d, 0x68, 0x45, 0x35, 0x0a, 0x09, 0x45, 0x54, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x52, 0x4f, 0x54, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x50, 0x4f, 0x62, 0x57, 0x37, 0x68, 0x44, 0x55, 0x37, 0x68, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x42, 0x65, 0x30, 0x48, 0x0a, 0x09, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x57, 0x53, 0x4b, 0x79, 0x49, 0x43, 0x4d, 0x42, 0x41, 0x56, 0x31, 0x41, 0x49, 0x42, 0x6f, 0x4d, 0x63, 0x77, 0x79, 0x62, 0x44, 0x41, 0x4d, 0x48, 0x44, 0x77, 0x67, 0x62, 0x55, 0x43, 0x4e, 0x6d, 0x44, 0x57, 0x6b, 0x4f, 0x64, 0x51, 0x31, 0x37, 0x44, 0x6e, 0x6b, 0x63, 0x65, 0x52, 0x31, 0x32, 0x49, 0x48, 0x59, 0x68, 0x67, 0x43, 0x4d, 0x4d, 0x58, 0x51, 0x42, 0x64, 0x41, 0x54, 0x51, 0x6d, 0x0a, 0x09, 0x49, 0x79, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x41, 0x77, 0x45, 0x68, 0x41, 0x53, 0x34, 0x42, 0x4e, 0x54, 0x51, 0x32, 0x4d, 0x7a, 0x49, 0x57, 0x46, 0x52, 0x51, 0x47, 0x42, 0x77, 0x45, 0x6a, 0x41, 0x79, 0x45, 0x44, 0x49, 0x77, 0x4e, 0x55, 0x57, 0x54, 0x39, 0x41, 0x56, 0x31, 0x67, 0x2f, 0x50, 0x31, 0x6d, 0x59, 0x2f, 0x76, 0x41, 0x43, 0x49, 0x66, 0x35, 0x59, 0x50, 0x54, 0x36, 0x66, 0x63, 0x33, 0x4b, 0x68, 0x0a, 0x09, 0x50, 0x7a, 0x77, 0x43, 0x46, 0x4e, 0x4b, 0x49, 0x2f, 0x56, 0x2b, 0x49, 0x31, 0x51, 0x5a, 0x61, 0x50, 0x31, 0x6c, 0x58, 0x51, 0x54, 0x39, 0x59, 0x57, 0x50, 0x37, 0x7a, 0x2f, 0x52, 0x6b, 0x44, 0x54, 0x69, 0x6c, 0x7a, 0x53, 0x58, 0x4f, 0x67, 0x6f, 0x58, 0x4a, 0x47, 0x64, 0x69, 0x6e, 0x36, 0x69, 0x77, 0x46, 0x2f, 0x2f, 0x6f, 0x45, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x63, 0x2f, 0x35, 0x31, 0x42, 0x53, 0x63, 0x46, 0x38, 0x41, 0x49, 0x6e, 0x0a, 0x09, 0x41, 0x43, 0x59, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x41, 0x33, 0x51, 0x45, 0x74, 0x41, 0x41, 0x44, 0x2f, 0x2f, 0x77, 0x44, 0x4a, 0x41, 0x41, 0x41, 0x45, 0x69, 0x77, 0x64, 0x72, 0x41, 0x69, 0x63, 0x41, 0x4b, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x45, 0x41, 0x4a, 0x34, 0x42, 0x64, 0x66, 0x2f, 0x2f, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x55, 0x7a, 0x42, 0x31, 0x34, 0x43, 0x4a, 0x77, 0x41, 0x78, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x51, 0x55, 0x41, 0x2f, 0x67, 0x46, 0x31, 0x2f, 0x2f, 0x38, 0x41, 0x63, 0x2f, 0x2f, 0x6a, 0x42, 0x64, 0x6b, 0x48, 0x54, 0x67, 0x49, 0x6e, 0x41, 0x44, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x41, 0x77, 0x45, 0x6e, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x43, 0x79, 0x2f, 0x2b, 0x4d, 0x46, 0x4b, 0x51, 0x64, 0x4f, 0x41, 0x69, 0x63, 0x41, 0x4f, 0x41, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x44, 0x41, 0x4f, 0x34, 0x42, 0x64, 0x66, 0x2f, 0x2f, 0x41, 0x48, 0x76, 0x2f, 0x34, 0x77, 0x51, 0x74, 0x42, 0x6d, 0x59, 0x43, 0x4a, 0x77, 0x42, 0x45, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x49, 0x30, 0x41, 0x55, 0x67, 0x41, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x65, 0x2f, 0x2f, 0x6a, 0x42, 0x43, 0x30, 0x47, 0x5a, 0x67, 0x49, 0x6e, 0x41, 0x45, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x63, 0x41, 0x51, 0x77, 0x42, 0x53, 0x41, 0x41, 0x44, 0x2f, 0x2f, 0x77, 0x42, 0x37, 0x2f, 0x2b, 0x4d, 0x45, 0x4c, 0x51, 0x5a, 0x6d, 0x41, 0x69, 0x63, 0x41, 0x52, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x44, 0x58, 0x41, 0x46, 0x49, 0x41, 0x41, 0x50, 0x2f, 0x2f, 0x41, 0x48, 0x76, 0x2f, 0x34, 0x77, 0x51, 0x74, 0x42, 0x68, 0x41, 0x43, 0x4a, 0x77, 0x42, 0x45, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x0a, 0x09, 0x41, 0x49, 0x34, 0x41, 0x55, 0x67, 0x41, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x65, 0x2f, 0x2f, 0x6a, 0x42, 0x43, 0x30, 0x47, 0x4e, 0x77, 0x49, 0x6e, 0x41, 0x45, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x41, 0x32, 0x41, 0x42, 0x53, 0x41, 0x41, 0x44, 0x2f, 0x2f, 0x77, 0x42, 0x37, 0x2f, 0x2b, 0x4d, 0x45, 0x4c, 0x51, 0x63, 0x47, 0x41, 0x69, 0x63, 0x41, 0x52, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x44, 0x63, 0x0a, 0x09, 0x41, 0x46, 0x49, 0x41, 0x41, 0x50, 0x2f, 0x2f, 0x41, 0x48, 0x48, 0x2b, 0x64, 0x51, 0x50, 0x6e, 0x42, 0x48, 0x73, 0x43, 0x4a, 0x77, 0x42, 0x47, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x4e, 0x30, 0x41, 0x6a, 0x77, 0x41, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x63, 0x66, 0x2f, 0x6a, 0x42, 0x48, 0x38, 0x47, 0x5a, 0x67, 0x49, 0x6e, 0x41, 0x45, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x41, 0x6a, 0x51, 0x43, 0x4c, 0x0a, 0x09, 0x41, 0x41, 0x44, 0x2f, 0x2f, 0x77, 0x42, 0x78, 0x2f, 0x2b, 0x4d, 0x45, 0x66, 0x77, 0x5a, 0x6d, 0x41, 0x69, 0x63, 0x41, 0x53, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x42, 0x44, 0x41, 0x49, 0x73, 0x41, 0x41, 0x50, 0x2f, 0x2f, 0x41, 0x48, 0x48, 0x2f, 0x34, 0x77, 0x52, 0x2f, 0x42, 0x6d, 0x59, 0x43, 0x4a, 0x77, 0x42, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x4e, 0x63, 0x41, 0x69, 0x77, 0x41, 0x41, 0x0a, 0x09, 0x2f, 0x2f, 0x38, 0x41, 0x63, 0x66, 0x2f, 0x6a, 0x42, 0x48, 0x38, 0x47, 0x45, 0x41, 0x49, 0x6e, 0x41, 0x45, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x41, 0x6a, 0x67, 0x43, 0x4c, 0x41, 0x41, 0x44, 0x2f, 0x2f, 0x77, 0x43, 0x51, 0x41, 0x41, 0x41, 0x43, 0x62, 0x77, 0x5a, 0x6d, 0x41, 0x69, 0x63, 0x41, 0x31, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x43, 0x4e, 0x2f, 0x78, 0x30, 0x41, 0x41, 0x50, 0x2f, 0x2f, 0x0a, 0x09, 0x2f, 0x38, 0x63, 0x41, 0x41, 0x41, 0x47, 0x6d, 0x42, 0x6d, 0x59, 0x43, 0x4a, 0x77, 0x44, 0x57, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x45, 0x50, 0x2f, 0x48, 0x51, 0x41, 0x41, 0x2f, 0x2f, 0x2f, 0x2f, 0x33, 0x67, 0x41, 0x41, 0x41, 0x6c, 0x77, 0x47, 0x5a, 0x67, 0x49, 0x6e, 0x41, 0x4e, 0x59, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x41, 0x31, 0x2f, 0x38, 0x64, 0x41, 0x41, 0x44, 0x2f, 0x2f, 0x2f, 0x2f, 0x30, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x43, 0x52, 0x67, 0x59, 0x51, 0x41, 0x69, 0x63, 0x41, 0x31, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x43, 0x4f, 0x2f, 0x78, 0x30, 0x41, 0x41, 0x50, 0x2f, 0x2f, 0x41, 0x4c, 0x6f, 0x41, 0x41, 0x41, 0x52, 0x6b, 0x42, 0x6a, 0x63, 0x43, 0x4a, 0x77, 0x42, 0x52, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x4e, 0x67, 0x41, 0x6d, 0x41, 0x41, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x63, 0x66, 0x2f, 0x6a, 0x0a, 0x09, 0x42, 0x48, 0x55, 0x47, 0x5a, 0x67, 0x49, 0x6e, 0x41, 0x46, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x41, 0x6a, 0x51, 0x42, 0x7a, 0x41, 0x41, 0x44, 0x2f, 0x2f, 0x77, 0x42, 0x78, 0x2f, 0x2b, 0x4d, 0x45, 0x64, 0x51, 0x5a, 0x6d, 0x41, 0x69, 0x63, 0x41, 0x55, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x42, 0x44, 0x41, 0x48, 0x4d, 0x41, 0x41, 0x50, 0x2f, 0x2f, 0x41, 0x48, 0x48, 0x2f, 0x34, 0x77, 0x52, 0x31, 0x0a, 0x09, 0x42, 0x6d, 0x59, 0x43, 0x4a, 0x77, 0x42, 0x53, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x4e, 0x63, 0x41, 0x63, 0x77, 0x41, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x63, 0x66, 0x2f, 0x6a, 0x42, 0x48, 0x55, 0x47, 0x45, 0x41, 0x49, 0x6e, 0x41, 0x46, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x41, 0x6a, 0x67, 0x42, 0x7a, 0x41, 0x41, 0x44, 0x2f, 0x2f, 0x77, 0x42, 0x78, 0x2f, 0x2b, 0x4d, 0x45, 0x64, 0x51, 0x59, 0x33, 0x0a, 0x09, 0x41, 0x69, 0x63, 0x41, 0x55, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x44, 0x59, 0x41, 0x48, 0x4d, 0x41, 0x41, 0x50, 0x2f, 0x2f, 0x41, 0x4b, 0x37, 0x2f, 0x34, 0x77, 0x52, 0x59, 0x42, 0x6d, 0x59, 0x43, 0x4a, 0x77, 0x42, 0x59, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x49, 0x30, 0x41, 0x65, 0x77, 0x41, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x72, 0x76, 0x2f, 0x6a, 0x42, 0x46, 0x67, 0x47, 0x5a, 0x67, 0x49, 0x6e, 0x0a, 0x09, 0x41, 0x46, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x41, 0x51, 0x77, 0x42, 0x37, 0x41, 0x41, 0x44, 0x2f, 0x2f, 0x77, 0x43, 0x75, 0x2f, 0x2b, 0x4d, 0x45, 0x57, 0x41, 0x5a, 0x6d, 0x41, 0x69, 0x63, 0x41, 0x57, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x44, 0x58, 0x41, 0x48, 0x73, 0x41, 0x41, 0x50, 0x2f, 0x2f, 0x41, 0x4b, 0x37, 0x2f, 0x34, 0x77, 0x52, 0x59, 0x42, 0x68, 0x41, 0x43, 0x4a, 0x77, 0x42, 0x59, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x49, 0x34, 0x41, 0x65, 0x77, 0x41, 0x41, 0x41, 0x41, 0x45, 0x41, 0x4f, 0x66, 0x38, 0x37, 0x41, 0x38, 0x63, 0x46, 0x31, 0x51, 0x41, 0x4c, 0x41, 0x43, 0x64, 0x41, 0x46, 0x41, 0x67, 0x45, 0x75, 0x51, 0x6f, 0x43, 0x41, 0x49, 0x45, 0x47, 0x77, 0x67, 0x77, 0x44, 0x57, 0x51, 0x55, 0x42, 0x56, 0x77, 0x6c, 0x5a, 0x42, 0x77, 0x41, 0x4d, 0x45, 0x4e, 0x51, 0x38, 0x37, 0x50, 0x77, 0x38, 0x0a, 0x09, 0x37, 0x44, 0x45, 0x41, 0x45, 0x4f, 0x54, 0x30, 0x31, 0x44, 0x7a, 0x73, 0x4d, 0x6a, 0x41, 0x42, 0x4d, 0x78, 0x45, 0x68, 0x46, 0x53, 0x45, 0x52, 0x49, 0x78, 0x45, 0x68, 0x4e, 0x53, 0x45, 0x42, 0x71, 0x4c, 0x41, 0x42, 0x62, 0x2f, 0x36, 0x52, 0x73, 0x50, 0x36, 0x52, 0x41, 0x57, 0x38, 0x46, 0x31, 0x66, 0x35, 0x63, 0x6d, 0x66, 0x75, 0x6a, 0x42, 0x46, 0x32, 0x5a, 0x41, 0x41, 0x41, 0x43, 0x41, 0x4d, 0x4d, 0x44, 0x64, 0x51, 0x4d, 0x39, 0x0a, 0x09, 0x42, 0x66, 0x41, 0x41, 0x43, 0x77, 0x41, 0x61, 0x41, 0x43, 0x42, 0x41, 0x45, 0x51, 0x62, 0x44, 0x46, 0x63, 0x51, 0x41, 0x77, 0x77, 0x79, 0x52, 0x47, 0x77, 0x6c, 0x61, 0x45, 0x6c, 0x73, 0x44, 0x57, 0x68, 0x67, 0x62, 0x45, 0x4e, 0x7a, 0x73, 0x2f, 0x4f, 0x77, 0x78, 0x41, 0x42, 0x44, 0x30, 0x37, 0x50, 0x7a, 0x73, 0x4d, 0x41, 0x45, 0x69, 0x42, 0x68, 0x55, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x4a, 0x69, 0x63, 0x79, 0x0a, 0x09, 0x46, 0x68, 0x63, 0x57, 0x46, 0x68, 0x55, 0x55, 0x42, 0x69, 0x4d, 0x69, 0x4a, 0x6a, 0x55, 0x30, 0x4e, 0x67, 0x49, 0x41, 0x55, 0x47, 0x35, 0x75, 0x55, 0x46, 0x42, 0x75, 0x62, 0x30, 0x39, 0x41, 0x64, 0x69, 0x73, 0x75, 0x4c, 0x72, 0x6d, 0x47, 0x68, 0x37, 0x53, 0x34, 0x42, 0x57, 0x39, 0x76, 0x55, 0x45, 0x39, 0x74, 0x62, 0x55, 0x39, 0x50, 0x63, 0x49, 0x45, 0x78, 0x4c, 0x69, 0x31, 0x79, 0x51, 0x6f, 0x53, 0x33, 0x74, 0x49, 0x65, 0x47, 0x0a, 0x09, 0x75, 0x67, 0x41, 0x41, 0x41, 0x67, 0x43, 0x73, 0x2f, 0x73, 0x63, 0x45, 0x49, 0x77, 0x57, 0x59, 0x41, 0x41, 0x59, 0x41, 0x49, 0x51, 0x42, 0x52, 0x51, 0x43, 0x73, 0x54, 0x46, 0x68, 0x51, 0x41, 0x44, 0x77, 0x77, 0x42, 0x43, 0x77, 0x65, 0x47, 0x43, 0x49, 0x67, 0x4c, 0x45, 0x49, 0x59, 0x50, 0x69, 0x41, 0x79, 0x35, 0x46, 0x42, 0x59, 0x4c, 0x75, 0x52, 0x30, 0x66, 0x48, 0x4c, 0x67, 0x57, 0x6a, 0x43, 0x49, 0x63, 0x46, 0x51, 0x41, 0x4a, 0x0a, 0x09, 0x48, 0x68, 0x4d, 0x4c, 0x44, 0x77, 0x63, 0x45, 0x45, 0x68, 0x6b, 0x69, 0x45, 0x4e, 0x7a, 0x73, 0x31, 0x44, 0x7a, 0x55, 0x50, 0x44, 0x7a, 0x73, 0x4d, 0x6a, 0x49, 0x78, 0x41, 0x42, 0x44, 0x6b, 0x39, 0x44, 0x7a, 0x45, 0x37, 0x42, 0x44, 0x45, 0x2f, 0x76, 0x54, 0x75, 0x45, 0x50, 0x58, 0x75, 0x45, 0x6a, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x77, 0x4a, 0x52, 0x45, 0x47, 0x42, 0x68, 0x55, 0x55, 0x46, 0x67, 0x45, 0x56, 0x0a, 0x09, 0x4a, 0x69, 0x59, 0x6e, 0x41, 0x7a, 0x59, 0x32, 0x4e, 0x78, 0x55, 0x47, 0x42, 0x67, 0x63, 0x52, 0x49, 0x78, 0x45, 0x6d, 0x41, 0x42, 0x45, 0x51, 0x41, 0x44, 0x63, 0x52, 0x4d, 0x78, 0x4d, 0x57, 0x46, 0x67, 0x4b, 0x6d, 0x6b, 0x36, 0x53, 0x6b, 0x41, 0x68, 0x42, 0x4b, 0x69, 0x45, 0x51, 0x42, 0x52, 0x6f, 0x6c, 0x49, 0x51, 0x59, 0x6c, 0x4e, 0x5a, 0x76, 0x48, 0x2b, 0x39, 0x77, 0x45, 0x4a, 0x38, 0x57, 0x59, 0x42, 0x53, 0x59, 0x6d, 0x44, 0x0a, 0x09, 0x41, 0x31, 0x67, 0x53, 0x34, 0x72, 0x69, 0x35, 0x34, 0x67, 0x4f, 0x68, 0x72, 0x43, 0x6b, 0x71, 0x41, 0x2f, 0x79, 0x67, 0x42, 0x53, 0x6f, 0x6e, 0x71, 0x68, 0x34, 0x6a, 0x42, 0x2f, 0x37, 0x6b, 0x41, 0x53, 0x41, 0x55, 0x41, 0x54, 0x4d, 0x42, 0x41, 0x51, 0x45, 0x43, 0x41, 0x54, 0x49, 0x57, 0x41, 0x52, 0x2f, 0x2b, 0x34, 0x51, 0x51, 0x68, 0x41, 0x41, 0x45, 0x41, 0x67, 0x51, 0x41, 0x41, 0x42, 0x47, 0x49, 0x46, 0x38, 0x41, 0x41, 0x62, 0x0a, 0x09, 0x41, 0x47, 0x42, 0x41, 0x49, 0x51, 0x63, 0x57, 0x43, 0x41, 0x47, 0x47, 0x41, 0x42, 0x49, 0x4b, 0x71, 0x52, 0x51, 0x49, 0x44, 0x41, 0x53, 0x67, 0x41, 0x4a, 0x51, 0x5a, 0x6b, 0x52, 0x41, 0x4d, 0x6f, 0x41, 0x34, 0x41, 0x44, 0x51, 0x6b, 0x4c, 0x42, 0x78, 0x77, 0x54, 0x44, 0x78, 0x55, 0x52, 0x48, 0x42, 0x44, 0x63, 0x50, 0x4d, 0x7a, 0x4d, 0x2f, 0x44, 0x7a, 0x45, 0x31, 0x4d, 0x51, 0x78, 0x41, 0x43, 0x2f, 0x73, 0x4d, 0x76, 0x54, 0x6b, 0x0a, 0x09, 0x37, 0x42, 0x44, 0x55, 0x50, 0x4f, 0x34, 0x79, 0x45, 0x4f, 0x34, 0x52, 0x4f, 0x54, 0x6b, 0x77, 0x41, 0x55, 0x75, 0x77, 0x44, 0x46, 0x52, 0x59, 0x76, 0x51, 0x41, 0x63, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x63, 0x41, 0x42, 0x77, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x74, 0x44, 0x59, 0x42, 0x4e, 0x67, 0x49, 0x43, 0x41, 0x46, 0x30, 0x42, 0x46, 0x53, 0x34, 0x42, 0x49, 0x79, 0x49, 0x47, 0x48, 0x51, 0x45, 0x68, 0x0a, 0x09, 0x46, 0x53, 0x45, 0x52, 0x49, 0x52, 0x55, 0x68, 0x4e, 0x54, 0x4d, 0x52, 0x49, 0x7a, 0x55, 0x7a, 0x4e, 0x52, 0x41, 0x32, 0x4d, 0x7a, 0x49, 0x57, 0x42, 0x45, 0x35, 0x4d, 0x69, 0x44, 0x32, 0x55, 0x64, 0x41, 0x47, 0x48, 0x2f, 0x6e, 0x6b, 0x43, 0x4c, 0x66, 0x77, 0x66, 0x37, 0x4d, 0x66, 0x48, 0x31, 0x75, 0x67, 0x39, 0x6c, 0x77, 0x57, 0x30, 0x74, 0x69, 0x6b, 0x70, 0x6d, 0x39, 0x54, 0x58, 0x6a, 0x2f, 0x34, 0x76, 0x71, 0x71, 0x6f, 0x42, 0x0a, 0x09, 0x30, 0x59, 0x2f, 0x75, 0x41, 0x51, 0x58, 0x7a, 0x48, 0x77, 0x41, 0x41, 0x41, 0x67, 0x42, 0x63, 0x2f, 0x7a, 0x30, 0x44, 0x6f, 0x67, 0x58, 0x77, 0x41, 0x41, 0x73, 0x41, 0x50, 0x67, 0x43, 0x52, 0x51, 0x44, 0x77, 0x76, 0x4d, 0x43, 0x6f, 0x47, 0x41, 0x42, 0x63, 0x64, 0x4d, 0x44, 0x59, 0x45, 0x44, 0x53, 0x65, 0x4b, 0x4a, 0x67, 0x32, 0x4b, 0x44, 0x43, 0x72, 0x47, 0x4a, 0x73, 0x55, 0x6a, 0x45, 0x4d, 0x59, 0x4d, 0x78, 0x54, 0x79, 0x52, 0x0a, 0x09, 0x49, 0x7a, 0x38, 0x76, 0x42, 0x67, 0x41, 0x58, 0x4d, 0x41, 0x51, 0x54, 0x48, 0x53, 0x30, 0x4a, 0x4e, 0x67, 0x4d, 0x54, 0x56, 0x7a, 0x6b, 0x74, 0x56, 0x79, 0x41, 0x4a, 0x56, 0x77, 0x77, 0x69, 0x47, 0x6a, 0x6b, 0x6d, 0x49, 0x67, 0x4e, 0x58, 0x4d, 0x7a, 0x38, 0x51, 0x33, 0x4f, 0x7a, 0x6b, 0x78, 0x4e, 0x54, 0x6b, 0x37, 0x4e, 0x54, 0x73, 0x45, 0x4f, 0x34, 0x52, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x52, 0x45, 0x58, 0x4f, 0x54, 0x6b, 0x78, 0x0a, 0x09, 0x41, 0x42, 0x44, 0x45, 0x39, 0x4f, 0x54, 0x73, 0x45, 0x4f, 0x62, 0x75, 0x45, 0x4f, 0x34, 0x51, 0x37, 0x68, 0x45, 0x58, 0x4f, 0x54, 0x6b, 0x35, 0x45, 0x52, 0x49, 0x35, 0x4d, 0x41, 0x46, 0x4c, 0x73, 0x41, 0x70, 0x55, 0x53, 0x37, 0x41, 0x4c, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x41, 0x78, 0x55, 0x57, 0x30, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x50, 0x77, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x50, 0x77, 0x41, 0x2f, 0x0a, 0x09, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x45, 0x4f, 0x41, 0x52, 0x55, 0x55, 0x46, 0x68, 0x63, 0x2b, 0x41, 0x54, 0x55, 0x30, 0x4a, 0x68, 0x4d, 0x56, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x59, 0x56, 0x46, 0x42, 0x63, 0x57, 0x46, 0x78, 0x34, 0x42, 0x46, 0x52, 0x51, 0x47, 0x42, 0x78, 0x34, 0x42, 0x46, 0x52, 0x51, 0x47, 0x49, 0x79, 0x49, 0x6d, 0x4a, 0x7a, 0x55, 0x65, 0x41, 0x54, 0x4d, 0x79, 0x4e, 0x6a, 0x55, 0x30, 0x0a, 0x09, 0x4c, 0x77, 0x45, 0x75, 0x41, 0x54, 0x55, 0x30, 0x4e, 0x6a, 0x63, 0x75, 0x41, 0x54, 0x55, 0x30, 0x4e, 0x6a, 0x4d, 0x79, 0x46, 0x67, 0x46, 0x37, 0x50, 0x7a, 0x36, 0x4c, 0x2b, 0x6a, 0x38, 0x2b, 0x6a, 0x38, 0x78, 0x54, 0x6a, 0x7a, 0x68, 0x68, 0x62, 0x4d, 0x34, 0x61, 0x44, 0x74, 0x4f, 0x44, 0x58, 0x46, 0x30, 0x2b, 0x4f, 0x63, 0x79, 0x74, 0x53, 0x5a, 0x70, 0x59, 0x56, 0x35, 0x51, 0x36, 0x5a, 0x6e, 0x48, 0x64, 0x47, 0x64, 0x61, 0x41, 0x0a, 0x09, 0x58, 0x56, 0x73, 0x37, 0x4f, 0x38, 0x69, 0x6d, 0x53, 0x5a, 0x6b, 0x44, 0x71, 0x43, 0x35, 0x61, 0x4c, 0x6b, 0x79, 0x46, 0x68, 0x79, 0x31, 0x62, 0x4c, 0x6b, 0x75, 0x49, 0x41, 0x70, 0x4f, 0x6b, 0x4a, 0x79, 0x64, 0x51, 0x52, 0x31, 0x70, 0x7a, 0x44, 0x77, 0x68, 0x33, 0x6d, 0x6d, 0x56, 0x61, 0x6a, 0x44, 0x55, 0x30, 0x62, 0x55, 0x43, 0x4f, 0x71, 0x42, 0x30, 0x64, 0x70, 0x43, 0x63, 0x6e, 0x56, 0x45, 0x78, 0x6d, 0x65, 0x77, 0x35, 0x34, 0x0a, 0x09, 0x6d, 0x57, 0x5a, 0x62, 0x6a, 0x7a, 0x45, 0x73, 0x63, 0x45, 0x57, 0x43, 0x6e, 0x78, 0x30, 0x41, 0x41, 0x41, 0x45, 0x42, 0x4d, 0x77, 0x48, 0x52, 0x41, 0x34, 0x55, 0x45, 0x49, 0x51, 0x41, 0x4c, 0x41, 0x42, 0x4b, 0x33, 0x43, 0x63, 0x63, 0x44, 0x44, 0x41, 0x5a, 0x63, 0x41, 0x41, 0x77, 0x51, 0x31, 0x4f, 0x77, 0x78, 0x41, 0x42, 0x44, 0x55, 0x37, 0x44, 0x41, 0x42, 0x4e, 0x44, 0x59, 0x7a, 0x4d, 0x68, 0x59, 0x56, 0x46, 0x41, 0x59, 0x6a, 0x0a, 0x09, 0x49, 0x69, 0x59, 0x42, 0x4d, 0x36, 0x31, 0x2b, 0x66, 0x4b, 0x75, 0x73, 0x66, 0x58, 0x32, 0x73, 0x41, 0x76, 0x70, 0x38, 0x71, 0x36, 0x74, 0x38, 0x66, 0x61, 0x79, 0x73, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4a, 0x37, 0x2f, 0x4f, 0x77, 0x51, 0x35, 0x42, 0x64, 0x55, 0x41, 0x44, 0x51, 0x41, 0x6c, 0x51, 0x42, 0x49, 0x49, 0x41, 0x67, 0x54, 0x42, 0x41, 0x49, 0x45, 0x47, 0x41, 0x67, 0x34, 0x41, 0x42, 0x31, 0x30, 0x46, 0x41, 0x31, 0x30, 0x42, 0x0a, 0x09, 0x43, 0x77, 0x34, 0x51, 0x31, 0x4e, 0x54, 0x38, 0x33, 0x4f, 0x77, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x78, 0x44, 0x4c, 0x30, 0x37, 0x42, 0x45, 0x35, 0x4d, 0x41, 0x45, 0x68, 0x45, 0x53, 0x4d, 0x52, 0x49, 0x78, 0x45, 0x6a, 0x45, 0x53, 0x59, 0x6d, 0x4e, 0x54, 0x51, 0x6b, 0x41, 0x6e, 0x6b, 0x42, 0x77, 0x49, 0x32, 0x2b, 0x6a, 0x74, 0x66, 0x72, 0x41, 0x51, 0x51, 0x46, 0x31, 0x66, 0x6c, 0x6d, 0x42, 0x68, 0x2f, 0x35, 0x34, 0x51, 0x4e, 0x4f, 0x0a, 0x09, 0x45, 0x64, 0x32, 0x34, 0x76, 0x75, 0x67, 0x41, 0x41, 0x41, 0x45, 0x41, 0x75, 0x76, 0x2f, 0x6a, 0x42, 0x4b, 0x77, 0x47, 0x46, 0x41, 0x41, 0x76, 0x41, 0x4a, 0x70, 0x41, 0x4d, 0x43, 0x30, 0x6e, 0x49, 0x51, 0x77, 0x45, 0x42, 0x67, 0x30, 0x67, 0x41, 0x41, 0x51, 0x71, 0x46, 0x6f, 0x59, 0x58, 0x47, 0x72, 0x6b, 0x54, 0x4b, 0x72, 0x6b, 0x44, 0x6c, 0x78, 0x4f, 0x4d, 0x4c, 0x67, 0x77, 0x4a, 0x44, 0x52, 0x30, 0x67, 0x49, 0x53, 0x63, 0x4a, 0x0a, 0x09, 0x43, 0x43, 0x51, 0x6e, 0x43, 0x41, 0x59, 0x64, 0x43, 0x43, 0x51, 0x51, 0x46, 0x69, 0x30, 0x49, 0x45, 0x41, 0x42, 0x47, 0x4d, 0x42, 0x44, 0x38, 0x78, 0x50, 0x7a, 0x4d, 0x45, 0x4d, 0x62, 0x75, 0x31, 0x4f, 0x34, 0x51, 0x37, 0x68, 0x45, 0x35, 0x4f, 0x52, 0x49, 0x35, 0x45, 0x6a, 0x6b, 0x78, 0x41, 0x43, 0x2f, 0x6b, 0x2f, 0x75, 0x34, 0x51, 0x2f, 0x74, 0x58, 0x75, 0x45, 0x68, 0x63, 0x35, 0x46, 0x7a, 0x6b, 0x77, 0x51, 0x45, 0x41, 0x50, 0x0a, 0x09, 0x42, 0x51, 0x38, 0x47, 0x44, 0x77, 0x63, 0x50, 0x4a, 0x77, 0x38, 0x6f, 0x69, 0x67, 0x79, 0x4b, 0x44, 0x51, 0x63, 0x4b, 0x42, 0x67, 0x6f, 0x48, 0x43, 0x67, 0x73, 0x4b, 0x44, 0x41, 0x6f, 0x4e, 0x43, 0x68, 0x38, 0x4e, 0x49, 0x41, 0x6f, 0x68, 0x44, 0x43, 0x49, 0x45, 0x4a, 0x68, 0x6b, 0x4e, 0x47, 0x52, 0x38, 0x5a, 0x49, 0x44, 0x6f, 0x67, 0x4f, 0x69, 0x46, 0x4e, 0x48, 0x30, 0x30, 0x67, 0x53, 0x53, 0x46, 0x4a, 0x49, 0x6d, 0x6f, 0x66, 0x0a, 0x09, 0x61, 0x69, 0x43, 0x6c, 0x42, 0x71, 0x55, 0x48, 0x70, 0x69, 0x41, 0x59, 0x58, 0x51, 0x46, 0x64, 0x45, 0x7a, 0x51, 0x32, 0x4d, 0x7a, 0x49, 0x57, 0x46, 0x77, 0x34, 0x42, 0x46, 0x52, 0x51, 0x57, 0x48, 0x77, 0x45, 0x65, 0x41, 0x52, 0x55, 0x55, 0x42, 0x69, 0x4d, 0x69, 0x4a, 0x69, 0x63, 0x31, 0x48, 0x67, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x76, 0x41, 0x53, 0x34, 0x42, 0x4e, 0x54, 0x51, 0x32, 0x4e, 0x79, 0x34, 0x42, 0x0a, 0x09, 0x49, 0x79, 0x49, 0x47, 0x46, 0x52, 0x45, 0x6a, 0x75, 0x75, 0x2f, 0x61, 0x30, 0x4e, 0x73, 0x44, 0x6c, 0x36, 0x67, 0x36, 0x51, 0x54, 0x6d, 0x6d, 0x59, 0x4f, 0x48, 0x54, 0x51, 0x49, 0x68, 0x4a, 0x55, 0x49, 0x78, 0x42, 0x64, 0x48, 0x67, 0x37, 0x5a, 0x56, 0x78, 0x67, 0x56, 0x36, 0x65, 0x58, 0x43, 0x49, 0x4e, 0x78, 0x67, 0x6f, 0x69, 0x37, 0x42, 0x48, 0x48, 0x49, 0x32, 0x2b, 0x6a, 0x67, 0x43, 0x48, 0x4e, 0x67, 0x4c, 0x31, 0x45, 0x71, 0x0a, 0x09, 0x4a, 0x57, 0x71, 0x4f, 0x5a, 0x4b, 0x79, 0x33, 0x47, 0x52, 0x69, 0x6b, 0x48, 0x68, 0x31, 0x66, 0x57, 0x7a, 0x39, 0x55, 0x50, 0x6a, 0x63, 0x37, 0x68, 0x31, 0x74, 0x2f, 0x72, 0x42, 0x31, 0x6e, 0x63, 0x49, 0x75, 0x44, 0x2b, 0x35, 0x4d, 0x41, 0x41, 0x41, 0x51, 0x42, 0x47, 0x77, 0x41, 0x41, 0x42, 0x75, 0x55, 0x46, 0x7a, 0x51, 0x41, 0x58, 0x41, 0x43, 0x38, 0x41, 0x4f, 0x41, 0x42, 0x4d, 0x41, 0x47, 0x42, 0x41, 0x4e, 0x6b, 0x56, 0x43, 0x0a, 0x09, 0x51, 0x7a, 0x38, 0x79, 0x79, 0x55, 0x67, 0x77, 0x79, 0x54, 0x6c, 0x4b, 0x51, 0x38, 0x6f, 0x4d, 0x4f, 0x63, 0x6f, 0x41, 0x79, 0x52, 0x6a, 0x49, 0x44, 0x4d, 0x6b, 0x6b, 0x53, 0x45, 0x55, 0x7a, 0x4d, 0x41, 0x51, 0x78, 0x51, 0x6a, 0x77, 0x2f, 0x4f, 0x54, 0x5a, 0x4a, 0x4d, 0x57, 0x42, 0x4c, 0x4e, 0x6d, 0x42, 0x44, 0x50, 0x46, 0x34, 0x53, 0x43, 0x52, 0x35, 0x4c, 0x58, 0x67, 0x59, 0x4a, 0x48, 0x6c, 0x38, 0x71, 0x54, 0x52, 0x44, 0x63, 0x0a, 0x09, 0x35, 0x50, 0x7a, 0x73, 0x45, 0x50, 0x37, 0x39, 0x78, 0x4f, 0x34, 0x51, 0x37, 0x6a, 0x49, 0x52, 0x4f, 0x54, 0x6b, 0x53, 0x4f, 0x52, 0x49, 0x58, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x2b, 0x37, 0x32, 0x2f, 0x75, 0x30, 0x51, 0x37, 0x54, 0x49, 0x51, 0x37, 0x74, 0x62, 0x75, 0x4f, 0x52, 0x49, 0x35, 0x4f, 0x54, 0x41, 0x42, 0x49, 0x67, 0x59, 0x48, 0x42, 0x67, 0x59, 0x56, 0x46, 0x42, 0x59, 0x58, 0x46, 0x68, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x33, 0x0a, 0x09, 0x4e, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x6e, 0x4a, 0x69, 0x59, 0x6e, 0x4d, 0x67, 0x51, 0x58, 0x46, 0x68, 0x49, 0x56, 0x46, 0x41, 0x49, 0x48, 0x42, 0x67, 0x51, 0x6a, 0x49, 0x69, 0x51, 0x6e, 0x4a, 0x67, 0x49, 0x31, 0x4e, 0x42, 0x49, 0x33, 0x4e, 0x69, 0x51, 0x54, 0x49, 0x78, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x6e, 0x4d, 0x68, 0x59, 0x56, 0x46, 0x41, 0x59, 0x48, 0x46, 0x68, 0x59, 0x58, 0x46, 0x79, 0x4d, 0x6e, 0x0a, 0x09, 0x4a, 0x69, 0x59, 0x6a, 0x49, 0x78, 0x45, 0x6a, 0x45, 0x51, 0x51, 0x41, 0x67, 0x2b, 0x4a, 0x65, 0x58, 0x6d, 0x42, 0x67, 0x58, 0x6c, 0x37, 0x69, 0x67, 0x34, 0x54, 0x6a, 0x58, 0x6c, 0x31, 0x64, 0x58, 0x6c, 0x78, 0x65, 0x34, 0x34, 0x53, 0x59, 0x41, 0x51, 0x64, 0x74, 0x62, 0x57, 0x78, 0x73, 0x62, 0x57, 0x33, 0x2b, 0x2b, 0x5a, 0x69, 0x59, 0x2f, 0x76, 0x6c, 0x74, 0x62, 0x57, 0x78, 0x73, 0x62, 0x57, 0x30, 0x42, 0x42, 0x33, 0x31, 0x37, 0x0a, 0x09, 0x65, 0x32, 0x35, 0x58, 0x57, 0x47, 0x61, 0x77, 0x72, 0x6d, 0x6c, 0x67, 0x47, 0x45, 0x4d, 0x75, 0x69, 0x61, 0x79, 0x42, 0x4f, 0x30, 0x6b, 0x32, 0x51, 0x70, 0x73, 0x46, 0x5a, 0x6c, 0x35, 0x65, 0x58, 0x75, 0x57, 0x43, 0x67, 0x65, 0x4e, 0x65, 0x58, 0x6c, 0x39, 0x66, 0x58, 0x6c, 0x33, 0x69, 0x67, 0x34, 0x58, 0x6a, 0x58, 0x56, 0x35, 0x65, 0x5a, 0x32, 0x35, 0x74, 0x62, 0x66, 0x37, 0x36, 0x6d, 0x70, 0x6a, 0x2b, 0x2b, 0x32, 0x31, 0x74, 0x0a, 0x09, 0x62, 0x6d, 0x35, 0x74, 0x62, 0x51, 0x45, 0x46, 0x6d, 0x4a, 0x6f, 0x42, 0x42, 0x6d, 0x31, 0x74, 0x62, 0x76, 0x35, 0x69, 0x2f, 0x75, 0x77, 0x2b, 0x53, 0x30, 0x77, 0x2f, 0x5a, 0x33, 0x64, 0x35, 0x56, 0x6e, 0x41, 0x52, 0x43, 0x45, 0x31, 0x4a, 0x33, 0x39, 0x46, 0x67, 0x4d, 0x2f, 0x36, 0x63, 0x41, 0x30, 0x51, 0x41, 0x41, 0x77, 0x45, 0x62, 0x41, 0x41, 0x41, 0x47, 0x35, 0x51, 0x58, 0x4e, 0x41, 0x42, 0x63, 0x41, 0x4c, 0x77, 0x42, 0x4a, 0x0a, 0x09, 0x41, 0x45, 0x4e, 0x41, 0x4a, 0x6a, 0x33, 0x4c, 0x50, 0x6a, 0x72, 0x4d, 0x51, 0x63, 0x6f, 0x6b, 0x4d, 0x63, 0x73, 0x77, 0x4e, 0x4d, 0x78, 0x48, 0x79, 0x68, 0x6a, 0x4a, 0x41, 0x4d, 0x67, 0x6b, 0x79, 0x51, 0x77, 0x33, 0x59, 0x55, 0x51, 0x39, 0x4d, 0x46, 0x34, 0x71, 0x43, 0x51, 0x5a, 0x45, 0x58, 0x68, 0x34, 0x4a, 0x42, 0x68, 0x4a, 0x4b, 0x45, 0x4e, 0x7a, 0x4d, 0x2f, 0x4f, 0x77, 0x51, 0x2f, 0x75, 0x30, 0x79, 0x45, 0x4f, 0x34, 0x78, 0x0a, 0x09, 0x41, 0x43, 0x2f, 0x75, 0x39, 0x76, 0x37, 0x39, 0x37, 0x74, 0x62, 0x75, 0x45, 0x50, 0x33, 0x75, 0x31, 0x75, 0x34, 0x77, 0x41, 0x54, 0x49, 0x45, 0x46, 0x78, 0x59, 0x53, 0x46, 0x52, 0x51, 0x43, 0x42, 0x77, 0x59, 0x45, 0x49, 0x79, 0x49, 0x6b, 0x4a, 0x79, 0x59, 0x43, 0x4e, 0x54, 0x51, 0x53, 0x4e, 0x7a, 0x59, 0x6b, 0x46, 0x79, 0x49, 0x47, 0x42, 0x77, 0x59, 0x47, 0x46, 0x52, 0x51, 0x57, 0x46, 0x78, 0x59, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x0a, 0x09, 0x4e, 0x7a, 0x59, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x4a, 0x79, 0x59, 0x6d, 0x46, 0x78, 0x55, 0x6d, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x68, 0x55, 0x55, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x6a, 0x63, 0x56, 0x42, 0x67, 0x59, 0x6a, 0x49, 0x69, 0x59, 0x31, 0x4e, 0x44, 0x59, 0x7a, 0x4d, 0x68, 0x59, 0x45, 0x41, 0x4a, 0x67, 0x42, 0x42, 0x32, 0x31, 0x74, 0x62, 0x47, 0x78, 0x74, 0x62, 0x66, 0x37, 0x35, 0x6d, 0x4a, 0x6a, 0x2b, 0x2b, 0x57, 0x31, 0x74, 0x0a, 0x09, 0x62, 0x47, 0x78, 0x74, 0x62, 0x51, 0x45, 0x48, 0x6d, 0x49, 0x50, 0x69, 0x58, 0x6c, 0x35, 0x67, 0x59, 0x46, 0x35, 0x65, 0x34, 0x6f, 0x4f, 0x45, 0x34, 0x31, 0x35, 0x64, 0x58, 0x56, 0x35, 0x63, 0x58, 0x75, 0x4f, 0x6e, 0x51, 0x6f, 0x4a, 0x43, 0x6c, 0x61, 0x65, 0x72, 0x6d, 0x30, 0x42, 0x36, 0x51, 0x6b, 0x4f, 0x4a, 0x52, 0x74, 0x6a, 0x37, 0x2b, 0x39, 0x68, 0x4a, 0x69, 0x41, 0x58, 0x4e, 0x62, 0x6d, 0x31, 0x74, 0x2f, 0x76, 0x71, 0x61, 0x0a, 0x09, 0x6d, 0x50, 0x37, 0x37, 0x62, 0x57, 0x31, 0x75, 0x62, 0x6d, 0x31, 0x74, 0x41, 0x51, 0x57, 0x59, 0x6d, 0x67, 0x45, 0x47, 0x62, 0x57, 0x31, 0x75, 0x5a, 0x31, 0x35, 0x65, 0x58, 0x75, 0x57, 0x43, 0x67, 0x65, 0x4e, 0x65, 0x58, 0x6c, 0x39, 0x66, 0x58, 0x6c, 0x33, 0x69, 0x67, 0x34, 0x58, 0x6a, 0x58, 0x56, 0x35, 0x65, 0x39, 0x59, 0x45, 0x68, 0x49, 0x4b, 0x2b, 0x64, 0x6e, 0x36, 0x34, 0x66, 0x49, 0x6e, 0x38, 0x64, 0x48, 0x50, 0x54, 0x51, 0x0a, 0x09, 0x30, 0x66, 0x49, 0x63, 0x41, 0x41, 0x41, 0x43, 0x41, 0x53, 0x63, 0x44, 0x6b, 0x77, 0x5a, 0x47, 0x42, 0x64, 0x55, 0x41, 0x44, 0x41, 0x41, 0x55, 0x41, 0x44, 0x35, 0x41, 0x49, 0x51, 0x45, 0x47, 0x42, 0x78, 0x41, 0x4b, 0x42, 0x42, 0x49, 0x4f, 0x43, 0x51, 0x4d, 0x47, 0x79, 0x51, 0x30, 0x43, 0x41, 0x49, 0x45, 0x56, 0x41, 0x51, 0x6b, 0x46, 0x59, 0x67, 0x4d, 0x4a, 0x59, 0x67, 0x73, 0x4e, 0x59, 0x77, 0x39, 0x69, 0x45, 0x32, 0x4d, 0x52, 0x0a, 0x09, 0x46, 0x52, 0x44, 0x55, 0x35, 0x50, 0x7a, 0x6b, 0x31, 0x4f, 0x7a, 0x55, 0x37, 0x42, 0x45, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x39, 0x44, 0x77, 0x38, 0x37, 0x42, 0x63, 0x79, 0x31, 0x44, 0x77, 0x38, 0x78, 0x42, 0x45, 0x35, 0x4d, 0x41, 0x45, 0x54, 0x45, 0x7a, 0x4d, 0x52, 0x49, 0x78, 0x45, 0x44, 0x49, 0x77, 0x4d, 0x52, 0x49, 0x78, 0x45, 0x6a, 0x46, 0x53, 0x4d, 0x52, 0x49, 0x78, 0x45, 0x6a, 0x4e, 0x51, 0x52, 0x4b, 0x72, 0x71, 0x53, 0x71, 0x0a, 0x09, 0x63, 0x63, 0x4d, 0x33, 0x79, 0x33, 0x4a, 0x78, 0x79, 0x33, 0x4c, 0x4a, 0x42, 0x64, 0x58, 0x2f, 0x41, 0x41, 0x45, 0x41, 0x2f, 0x62, 0x34, 0x42, 0x35, 0x50, 0x37, 0x52, 0x41, 0x53, 0x2f, 0x2b, 0x48, 0x41, 0x4a, 0x43, 0x58, 0x76, 0x34, 0x63, 0x41, 0x65, 0x52, 0x65, 0x41, 0x41, 0x41, 0x42, 0x41, 0x58, 0x4d, 0x45, 0x37, 0x67, 0x4e, 0x53, 0x42, 0x6d, 0x59, 0x41, 0x41, 0x77, 0x41, 0x78, 0x51, 0x41, 0x6b, 0x43, 0x74, 0x41, 0x43, 0x7a, 0x0a, 0x09, 0x42, 0x41, 0x4e, 0x45, 0x41, 0x51, 0x51, 0x51, 0x31, 0x4f, 0x77, 0x78, 0x41, 0x42, 0x44, 0x30, 0x37, 0x44, 0x41, 0x41, 0x53, 0x37, 0x41, 0x4a, 0x56, 0x45, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x42, 0x50, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x42, 0x41, 0x41, 0x45, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x45, 0x7a, 0x41, 0x53, 0x4d, 0x43, 0x69, 0x38, 0x66, 0x2b, 0x75, 0x70, 0x6b, 0x47, 0x0a, 0x09, 0x5a, 0x76, 0x36, 0x49, 0x41, 0x41, 0x41, 0x43, 0x41, 0x4e, 0x63, 0x46, 0x52, 0x67, 0x4d, 0x70, 0x42, 0x68, 0x41, 0x41, 0x41, 0x77, 0x41, 0x48, 0x41, 0x4a, 0x4a, 0x41, 0x44, 0x67, 0x59, 0x43, 0x7a, 0x67, 0x51, 0x41, 0x7a, 0x51, 0x67, 0x42, 0x5a, 0x41, 0x41, 0x46, 0x5a, 0x41, 0x51, 0x49, 0x45, 0x4e, 0x7a, 0x38, 0x31, 0x4f, 0x77, 0x78, 0x41, 0x42, 0x44, 0x38, 0x50, 0x4f, 0x77, 0x79, 0x4d, 0x41, 0x42, 0x4c, 0x73, 0x41, 0x70, 0x55, 0x0a, 0x09, 0x53, 0x37, 0x41, 0x4e, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x49, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x49, 0x41, 0x41, 0x6a, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x55, 0x75, 0x77, 0x44, 0x46, 0x52, 0x4c, 0x73, 0x41, 0x31, 0x55, 0x57, 0x30, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x62, 0x53, 0x37, 0x41, 0x58, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x49, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x49, 0x0a, 0x09, 0x41, 0x41, 0x67, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x55, 0x75, 0x77, 0x44, 0x31, 0x52, 0x4c, 0x73, 0x42, 0x6c, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x41, 0x67, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x41, 0x67, 0x41, 0x43, 0x50, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x45, 0x57, 0x41, 0x42, 0x59, 0x41, 0x4a, 0x67, 0x42, 0x57, 0x41, 0x47, 0x63, 0x41, 0x46, 0x77, 0x41, 0x6e, 0x41, 0x46, 0x0a, 0x09, 0x63, 0x41, 0x59, 0x49, 0x58, 0x51, 0x45, 0x7a, 0x46, 0x53, 0x4d, 0x6c, 0x4d, 0x78, 0x55, 0x6a, 0x41, 0x6c, 0x37, 0x4c, 0x79, 0x2f, 0x35, 0x35, 0x79, 0x38, 0x73, 0x47, 0x45, 0x4d, 0x72, 0x4b, 0x79, 0x67, 0x41, 0x41, 0x41, 0x51, 0x44, 0x5a, 0x41, 0x43, 0x63, 0x46, 0x32, 0x77, 0x54, 0x64, 0x41, 0x42, 0x4d, 0x41, 0x50, 0x6b, 0x41, 0x69, 0x44, 0x51, 0x77, 0x4b, 0x41, 0x77, 0x4c, 0x50, 0x42, 0x41, 0x43, 0x63, 0x42, 0x67, 0x7a, 0x50, 0x0a, 0x09, 0x44, 0x67, 0x71, 0x63, 0x45, 0x67, 0x59, 0x51, 0x43, 0x42, 0x51, 0x53, 0x44, 0x67, 0x30, 0x4d, 0x43, 0x41, 0x51, 0x44, 0x41, 0x67, 0x67, 0x4a, 0x42, 0x51, 0x38, 0x41, 0x46, 0x42, 0x44, 0x63, 0x50, 0x4d, 0x51, 0x79, 0x46, 0x7a, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x55, 0x50, 0x4d, 0x77, 0x79, 0x2f, 0x44, 0x7a, 0x73, 0x45, 0x50, 0x34, 0x38, 0x37, 0x44, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x77, 0x45, 0x79, 0x45, 0x42, 0x46, 0x77, 0x63, 0x68, 0x0a, 0x09, 0x46, 0x53, 0x45, 0x48, 0x49, 0x52, 0x55, 0x68, 0x41, 0x53, 0x63, 0x33, 0x49, 0x54, 0x55, 0x68, 0x4e, 0x79, 0x48, 0x5a, 0x41, 0x77, 0x51, 0x42, 0x41, 0x48, 0x32, 0x75, 0x41, 0x53, 0x2f, 0x2b, 0x53, 0x4d, 0x4d, 0x43, 0x65, 0x2f, 0x7a, 0x36, 0x2f, 0x76, 0x35, 0x39, 0x72, 0x76, 0x37, 0x56, 0x41, 0x62, 0x62, 0x44, 0x2f, 0x59, 0x63, 0x44, 0x6f, 0x67, 0x45, 0x37, 0x5a, 0x74, 0x57, 0x6f, 0x38, 0x4b, 0x72, 0x2b, 0x78, 0x32, 0x62, 0x54, 0x0a, 0x09, 0x71, 0x76, 0x41, 0x41, 0x41, 0x67, 0x41, 0x49, 0x41, 0x41, 0x41, 0x48, 0x53, 0x41, 0x58, 0x56, 0x41, 0x41, 0x38, 0x41, 0x45, 0x77, 0x43, 0x48, 0x51, 0x44, 0x6b, 0x52, 0x45, 0x51, 0x34, 0x50, 0x44, 0x68, 0x41, 0x52, 0x44, 0x77, 0x38, 0x4f, 0x44, 0x52, 0x45, 0x50, 0x44, 0x67, 0x77, 0x52, 0x44, 0x67, 0x38, 0x4f, 0x51, 0x67, 0x57, 0x56, 0x41, 0x77, 0x75, 0x56, 0x45, 0x51, 0x47, 0x56, 0x45, 0x4a, 0x55, 0x41, 0x67, 0x52, 0x45, 0x48, 0x0a, 0x09, 0x6c, 0x51, 0x4f, 0x74, 0x44, 0x51, 0x6b, 0x52, 0x45, 0x41, 0x38, 0x4e, 0x44, 0x41, 0x55, 0x4f, 0x43, 0x67, 0x41, 0x45, 0x43, 0x41, 0x59, 0x43, 0x48, 0x42, 0x49, 0x4b, 0x44, 0x68, 0x51, 0x51, 0x31, 0x4e, 0x51, 0x38, 0x37, 0x44, 0x4c, 0x55, 0x78, 0x4d, 0x51, 0x52, 0x45, 0x68, 0x63, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x50, 0x4f, 0x7a, 0x73, 0x78, 0x50, 0x54, 0x73, 0x37, 0x42, 0x44, 0x75, 0x45, 0x4f, 0x34, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x0a, 0x09, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x46, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x57, 0x53, 0x4b, 0x79, 0x67, 0x42, 0x55, 0x42, 0x41, 0x56, 0x31, 0x41, 0x45, 0x32, 0x63, 0x52, 0x64, 0x78, 0x42, 0x33, 0x45, 0x59, 0x59, 0x4d, 0x68, 0x52, 0x43, 0x57, 0x45, 0x5a, 0x41, 0x56, 0x6f, 0x42, 0x57, 0x2f, 0x46, 0x51, 0x6c, 0x64, 0x41, 0x52, 0x55, 0x68, 0x45, 0x53, 0x45, 0x56, 0x49, 0x52, 0x45, 0x68, 0x0a, 0x09, 0x46, 0x53, 0x45, 0x52, 0x49, 0x51, 0x4d, 0x6a, 0x41, 0x52, 0x63, 0x42, 0x49, 0x52, 0x45, 0x48, 0x4e, 0x66, 0x30, 0x62, 0x41, 0x73, 0x66, 0x39, 0x4f, 0x51, 0x4c, 0x34, 0x2f, 0x44, 0x33, 0x39, 0x38, 0x4b, 0x44, 0x4e, 0x41, 0x6e, 0x47, 0x4c, 0x2f, 0x72, 0x59, 0x42, 0x79, 0x77, 0x58, 0x56, 0x71, 0x76, 0x35, 0x47, 0x71, 0x76, 0x33, 0x6a, 0x71, 0x67, 0x46, 0x2f, 0x2f, 0x6f, 0x45, 0x46, 0x31, 0x5a, 0x37, 0x38, 0x38, 0x41, 0x4d, 0x51, 0x0a, 0x09, 0x41, 0x41, 0x4d, 0x41, 0x5a, 0x76, 0x2b, 0x36, 0x42, 0x65, 0x55, 0x47, 0x46, 0x77, 0x41, 0x4a, 0x41, 0x42, 0x4d, 0x41, 0x4b, 0x77, 0x43, 0x65, 0x51, 0x44, 0x77, 0x64, 0x48, 0x78, 0x6f, 0x4e, 0x4b, 0x79, 0x77, 0x54, 0x43, 0x67, 0x45, 0x41, 0x42, 0x41, 0x30, 0x70, 0x4a, 0x69, 0x41, 0x55, 0x44, 0x51, 0x51, 0x71, 0x4a, 0x68, 0x34, 0x61, 0x42, 0x4a, 0x55, 0x6d, 0x44, 0x5a, 0x55, 0x61, 0x6b, 0x53, 0x61, 0x4d, 0x4c, 0x43, 0x73, 0x73, 0x0a, 0x09, 0x4b, 0x68, 0x51, 0x58, 0x45, 0x43, 0x41, 0x65, 0x49, 0x78, 0x4d, 0x4b, 0x41, 0x51, 0x41, 0x45, 0x48, 0x53, 0x6b, 0x51, 0x42, 0x78, 0x38, 0x48, 0x47, 0x53, 0x4d, 0x7a, 0x45, 0x42, 0x6b, 0x58, 0x45, 0x43, 0x77, 0x51, 0x2f, 0x4f, 0x7a, 0x38, 0x37, 0x4d, 0x41, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x46, 0x7a, 0x6b, 0x53, 0x4f, 0x54, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x45, 0x54, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x6b, 0x39, 0x4f, 0x77, 0x51, 0x0a, 0x09, 0x37, 0x68, 0x44, 0x41, 0x45, 0x4d, 0x41, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x45, 0x6a, 0x6b, 0x53, 0x46, 0x7a, 0x6b, 0x53, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x77, 0x51, 0x43, 0x70, 0x58, 0x41, 0x46, 0x6f, 0x56, 0x56, 0x78, 0x6c, 0x56, 0x49, 0x57, 0x6f, 0x56, 0x5a, 0x53, 0x46, 0x37, 0x46, 0x58, 0x59, 0x63, 0x64, 0x53, 0x45, 0x4a, 0x52, 0x68, 0x4e, 0x5a, 0x41, 0x46, 0x59, 0x54, 0x61, 0x67, 0x42, 0x6b, 0x45, 0x32, 0x51, 0x63, 0x0a, 0x09, 0x61, 0x69, 0x68, 0x38, 0x41, 0x48, 0x4d, 0x54, 0x64, 0x68, 0x78, 0x36, 0x4b, 0x41, 0x74, 0x64, 0x41, 0x56, 0x30, 0x4a, 0x41, 0x52, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x41, 0x45, 0x54, 0x51, 0x6d, 0x4a, 0x79, 0x34, 0x42, 0x49, 0x79, 0x49, 0x41, 0x45, 0x52, 0x51, 0x57, 0x46, 0x77, 0x63, 0x6d, 0x41, 0x6a, 0x55, 0x51, 0x41, 0x43, 0x45, 0x79, 0x46, 0x68, 0x63, 0x33, 0x46, 0x77, 0x63, 0x57, 0x45, 0x68, 0x55, 0x51, 0x41, 0x43, 0x45, 0x69, 0x0a, 0x09, 0x4a, 0x69, 0x63, 0x48, 0x4a, 0x77, 0x53, 0x32, 0x2f, 0x54, 0x4d, 0x2b, 0x6f, 0x56, 0x2f, 0x63, 0x41, 0x51, 0x45, 0x6e, 0x65, 0x54, 0x32, 0x68, 0x58, 0x39, 0x7a, 0x2b, 0x2f, 0x53, 0x63, 0x6e, 0x68, 0x6b, 0x35, 0x50, 0x41, 0x58, 0x6b, 0x42, 0x4f, 0x34, 0x4c, 0x64, 0x56, 0x36, 0x4a, 0x6d, 0x71, 0x6b, 0x35, 0x51, 0x2f, 0x6f, 0x6a, 0x2b, 0x78, 0x6f, 0x44, 0x64, 0x57, 0x36, 0x4a, 0x6e, 0x42, 0x46, 0x6a, 0x38, 0x73, 0x6b, 0x42, 0x44, 0x0a, 0x09, 0x41, 0x55, 0x67, 0x42, 0x47, 0x6e, 0x43, 0x34, 0x75, 0x45, 0x42, 0x44, 0x2f, 0x72, 0x6a, 0x2b, 0x35, 0x58, 0x43, 0x38, 0x52, 0x4a, 0x35, 0x6d, 0x41, 0x51, 0x69, 0x67, 0x41, 0x57, 0x49, 0x42, 0x70, 0x55, 0x31, 0x4c, 0x76, 0x31, 0x6e, 0x47, 0x5a, 0x2f, 0x37, 0x32, 0x6e, 0x76, 0x36, 0x66, 0x2f, 0x6c, 0x74, 0x4c, 0x53, 0x37, 0x39, 0x59, 0x41, 0x41, 0x4d, 0x41, 0x33, 0x51, 0x44, 0x64, 0x42, 0x63, 0x38, 0x44, 0x37, 0x67, 0x41, 0x4c, 0x0a, 0x09, 0x41, 0x42, 0x63, 0x41, 0x4c, 0x77, 0x44, 0x2f, 0x51, 0x42, 0x30, 0x74, 0x47, 0x78, 0x55, 0x4a, 0x49, 0x51, 0x4d, 0x41, 0x4a, 0x42, 0x67, 0x45, 0x46, 0x51, 0x38, 0x6e, 0x49, 0x52, 0x55, 0x62, 0x44, 0x79, 0x45, 0x77, 0x44, 0x41, 0x41, 0x6b, 0x47, 0x42, 0x49, 0x47, 0x4b, 0x68, 0x49, 0x65, 0x4d, 0x42, 0x44, 0x55, 0x78, 0x4e, 0x54, 0x45, 0x45, 0x54, 0x6b, 0x35, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x55, 0x78, 0x4e, 0x54, 0x45, 0x0a, 0x09, 0x45, 0x4d, 0x41, 0x52, 0x45, 0x68, 0x63, 0x35, 0x45, 0x6a, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x77, 0x51, 0x4c, 0x34, 0x46, 0x41, 0x67, 0x55, 0x44, 0x42, 0x51, 0x51, 0x41, 0x42, 0x51, 0x41, 0x47, 0x41, 0x41, 0x63, 0x46, 0x43, 0x41, 0x55, 0x4a, 0x42, 0x51, 0x6f, 0x4b, 0x45, 0x41, 0x38, 0x52, 0x44, 0x78, 0x49, 0x50, 0x45, 0x77, 0x6f, 0x55, 0x46, 0x51, 0x49, 0x56, 0x41, 0x78, 0x55, 0x45, 0x45, 0x41, 0x55, 0x51, 0x42, 0x68, 0x41, 0x48, 0x0a, 0x09, 0x46, 0x51, 0x67, 0x56, 0x43, 0x52, 0x55, 0x4b, 0x47, 0x67, 0x34, 0x61, 0x44, 0x78, 0x6f, 0x51, 0x48, 0x78, 0x45, 0x66, 0x45, 0x68, 0x38, 0x54, 0x47, 0x68, 0x51, 0x61, 0x46, 0x52, 0x6f, 0x57, 0x4a, 0x41, 0x49, 0x6b, 0x41, 0x79, 0x51, 0x45, 0x49, 0x41, 0x55, 0x67, 0x42, 0x69, 0x41, 0x48, 0x4a, 0x41, 0x67, 0x6b, 0x43, 0x53, 0x51, 0x4b, 0x4b, 0x67, 0x34, 0x71, 0x44, 0x79, 0x6f, 0x51, 0x4c, 0x78, 0x45, 0x76, 0x45, 0x69, 0x38, 0x54, 0x0a, 0x09, 0x4b, 0x68, 0x51, 0x71, 0x46, 0x53, 0x6f, 0x57, 0x4e, 0x51, 0x49, 0x31, 0x41, 0x7a, 0x55, 0x45, 0x4d, 0x41, 0x55, 0x77, 0x42, 0x6a, 0x41, 0x48, 0x4e, 0x51, 0x67, 0x31, 0x43, 0x54, 0x55, 0x4b, 0x4f, 0x67, 0x34, 0x36, 0x44, 0x7a, 0x6f, 0x51, 0x50, 0x78, 0x45, 0x2f, 0x45, 0x6a, 0x38, 0x54, 0x4f, 0x68, 0x51, 0x36, 0x46, 0x54, 0x6f, 0x57, 0x52, 0x51, 0x4a, 0x46, 0x41, 0x30, 0x55, 0x45, 0x51, 0x41, 0x56, 0x41, 0x42, 0x6b, 0x41, 0x48, 0x0a, 0x09, 0x52, 0x51, 0x68, 0x46, 0x43, 0x55, 0x55, 0x4b, 0x53, 0x67, 0x35, 0x4b, 0x44, 0x30, 0x6f, 0x51, 0x54, 0x78, 0x46, 0x50, 0x45, 0x6b, 0x38, 0x54, 0x53, 0x68, 0x52, 0x4b, 0x46, 0x55, 0x6f, 0x57, 0x56, 0x72, 0x51, 0x66, 0x73, 0x43, 0x43, 0x77, 0x49, 0x62, 0x41, 0x69, 0x73, 0x43, 0x61, 0x77, 0x4a, 0x37, 0x41, 0x6f, 0x74, 0x43, 0x6b, 0x49, 0x58, 0x51, 0x46, 0x64, 0x41, 0x52, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x0a, 0x09, 0x49, 0x79, 0x49, 0x47, 0x42, 0x79, 0x34, 0x42, 0x49, 0x79, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x46, 0x77, 0x34, 0x42, 0x49, 0x79, 0x49, 0x6d, 0x4e, 0x54, 0x51, 0x32, 0x4d, 0x7a, 0x49, 0x57, 0x46, 0x7a, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x57, 0x46, 0x52, 0x51, 0x47, 0x49, 0x79, 0x49, 0x6d, 0x41, 0x35, 0x4d, 0x78, 0x68, 0x6c, 0x52, 0x6c, 0x67, 0x48, 0x5a, 0x5a, 0x55, 0x6f, 0x58, 0x45, 0x4d, 0x59, 0x56, 0x56, 0x0a, 0x09, 0x5a, 0x6e, 0x39, 0x32, 0x57, 0x56, 0x4b, 0x47, 0x6b, 0x45, 0x61, 0x64, 0x58, 0x6f, 0x69, 0x36, 0x70, 0x34, 0x5a, 0x66, 0x6d, 0x55, 0x68, 0x45, 0x6e, 0x6d, 0x47, 0x47, 0x76, 0x4b, 0x65, 0x47, 0x58, 0x70, 0x55, 0x43, 0x4c, 0x31, 0x68, 0x61, 0x68, 0x32, 0x6c, 0x6c, 0x68, 0x6f, 0x63, 0x33, 0x57, 0x46, 0x69, 0x45, 0x61, 0x6d, 0x57, 0x47, 0x69, 0x42, 0x61, 0x48, 0x66, 0x39, 0x2b, 0x6d, 0x72, 0x39, 0x68, 0x2b, 0x69, 0x6f, 0x71, 0x44, 0x0a, 0x09, 0x34, 0x61, 0x65, 0x76, 0x31, 0x6e, 0x63, 0x41, 0x41, 0x41, 0x49, 0x41, 0x32, 0x51, 0x41, 0x41, 0x42, 0x64, 0x73, 0x46, 0x42, 0x41, 0x41, 0x4c, 0x41, 0x41, 0x38, 0x41, 0x4c, 0x6b, 0x41, 0x59, 0x42, 0x64, 0x41, 0x48, 0x41, 0x35, 0x77, 0x41, 0x30, 0x41, 0x6b, 0x42, 0x44, 0x4a, 0x77, 0x4f, 0x44, 0x51, 0x49, 0x56, 0x42, 0x41, 0x41, 0x58, 0x44, 0x41, 0x67, 0x56, 0x43, 0x67, 0x59, 0x51, 0x45, 0x4e, 0x51, 0x38, 0x37, 0x44, 0x4c, 0x38, 0x0a, 0x09, 0x50, 0x4f, 0x77, 0x79, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x4e, 0x51, 0x38, 0x37, 0x50, 0x77, 0x38, 0x37, 0x44, 0x41, 0x42, 0x45, 0x53, 0x45, 0x56, 0x49, 0x52, 0x45, 0x6a, 0x45, 0x53, 0x45, 0x31, 0x49, 0x52, 0x45, 0x42, 0x49, 0x52, 0x55, 0x68, 0x41, 0x36, 0x34, 0x43, 0x4c, 0x66, 0x33, 0x54, 0x71, 0x50, 0x33, 0x54, 0x41, 0x69, 0x33, 0x39, 0x30, 0x77, 0x55, 0x43, 0x2b, 0x76, 0x34, 0x46, 0x42, 0x50, 0x35, 0x39, 0x71, 0x76, 0x35, 0x39, 0x0a, 0x09, 0x41, 0x59, 0x4f, 0x71, 0x41, 0x59, 0x50, 0x37, 0x70, 0x71, 0x6f, 0x41, 0x41, 0x67, 0x44, 0x5a, 0x41, 0x41, 0x41, 0x46, 0x32, 0x77, 0x53, 0x6f, 0x41, 0x41, 0x59, 0x41, 0x43, 0x67, 0x42, 0x55, 0x51, 0x43, 0x34, 0x43, 0x6e, 0x41, 0x4d, 0x45, 0x41, 0x77, 0x47, 0x63, 0x41, 0x41, 0x45, 0x45, 0x42, 0x41, 0x4d, 0x42, 0x6e, 0x41, 0x49, 0x42, 0x42, 0x51, 0x59, 0x46, 0x41, 0x4a, 0x77, 0x47, 0x42, 0x55, 0x49, 0x46, 0x42, 0x41, 0x49, 0x42, 0x0a, 0x09, 0x41, 0x41, 0x55, 0x44, 0x30, 0x51, 0x61, 0x6e, 0x42, 0x35, 0x77, 0x4a, 0x41, 0x51, 0x67, 0x43, 0x41, 0x43, 0x51, 0x48, 0x42, 0x43, 0x4d, 0x4c, 0x45, 0x50, 0x77, 0x38, 0x37, 0x44, 0x49, 0x79, 0x4f, 0x54, 0x45, 0x41, 0x4c, 0x2b, 0x7a, 0x30, 0x37, 0x42, 0x63, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x45, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x45, 0x37, 0x56, 0x6b, 0x69, 0x0a, 0x09, 0x43, 0x51, 0x49, 0x56, 0x41, 0x54, 0x55, 0x42, 0x41, 0x53, 0x45, 0x56, 0x49, 0x51, 0x58, 0x62, 0x2f, 0x45, 0x41, 0x44, 0x77, 0x50, 0x72, 0x2b, 0x42, 0x51, 0x4c, 0x36, 0x2f, 0x67, 0x55, 0x43, 0x2b, 0x76, 0x34, 0x44, 0x2b, 0x50, 0x37, 0x72, 0x2f, 0x75, 0x36, 0x79, 0x41, 0x58, 0x43, 0x71, 0x41, 0x57, 0x2f, 0x38, 0x41, 0x71, 0x6f, 0x41, 0x41, 0x41, 0x49, 0x41, 0x32, 0x51, 0x41, 0x41, 0x42, 0x64, 0x73, 0x45, 0x71, 0x41, 0x41, 0x47, 0x0a, 0x09, 0x41, 0x41, 0x6f, 0x41, 0x56, 0x6b, 0x41, 0x76, 0x42, 0x70, 0x77, 0x41, 0x42, 0x67, 0x4d, 0x45, 0x41, 0x77, 0x57, 0x63, 0x42, 0x41, 0x51, 0x44, 0x41, 0x4a, 0x77, 0x42, 0x41, 0x67, 0x45, 0x47, 0x6e, 0x41, 0x55, 0x47, 0x41, 0x67, 0x49, 0x42, 0x51, 0x67, 0x59, 0x46, 0x41, 0x77, 0x49, 0x41, 0x42, 0x51, 0x54, 0x52, 0x41, 0x61, 0x63, 0x48, 0x6e, 0x41, 0x67, 0x47, 0x42, 0x77, 0x49, 0x6b, 0x43, 0x51, 0x51, 0x41, 0x49, 0x77, 0x73, 0x51, 0x0a, 0x09, 0x2f, 0x44, 0x77, 0x38, 0x37, 0x44, 0x49, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x50, 0x54, 0x73, 0x46, 0x7a, 0x6b, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x54, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x56, 0x6b, 0x69, 0x45, 0x7a, 0x55, 0x42, 0x46, 0x51, 0x45, 0x31, 0x41, 0x51, 0x45, 0x56, 0x49, 0x54, 0x58, 0x5a, 0x42, 0x51, 0x4c, 0x36, 0x2f, 0x67, 0x50, 0x42, 0x0a, 0x09, 0x41, 0x55, 0x48, 0x36, 0x2f, 0x67, 0x50, 0x34, 0x73, 0x50, 0x36, 0x52, 0x71, 0x76, 0x36, 0x51, 0x73, 0x67, 0x45, 0x53, 0x2f, 0x63, 0x65, 0x71, 0x71, 0x67, 0x41, 0x41, 0x41, 0x51, 0x42, 0x53, 0x41, 0x41, 0x41, 0x45, 0x77, 0x77, 0x58, 0x56, 0x41, 0x42, 0x67, 0x41, 0x78, 0x6b, 0x42, 0x47, 0x45, 0x41, 0x49, 0x52, 0x46, 0x68, 0x45, 0x50, 0x41, 0x67, 0x34, 0x50, 0x46, 0x68, 0x59, 0x52, 0x44, 0x77, 0x49, 0x51, 0x44, 0x77, 0x67, 0x4e, 0x0a, 0x09, 0x43, 0x41, 0x34, 0x43, 0x44, 0x51, 0x30, 0x49, 0x51, 0x67, 0x38, 0x4c, 0x43, 0x51, 0x51, 0x41, 0x30, 0x78, 0x63, 0x47, 0x45, 0x67, 0x76, 0x54, 0x46, 0x41, 0x6b, 0x51, 0x44, 0x59, 0x45, 0x43, 0x44, 0x41, 0x6b, 0x4f, 0x41, 0x77, 0x55, 0x57, 0x44, 0x77, 0x4d, 0x56, 0x45, 0x68, 0x41, 0x44, 0x41, 0x42, 0x46, 0x6d, 0x45, 0x77, 0x42, 0x6c, 0x41, 0x52, 0x77, 0x4e, 0x5a, 0x67, 0x6f, 0x46, 0x5a, 0x51, 0x63, 0x44, 0x47, 0x52, 0x44, 0x55, 0x0a, 0x09, 0x50, 0x4f, 0x77, 0x79, 0x37, 0x50, 0x7a, 0x73, 0x4d, 0x75, 0x77, 0x53, 0x46, 0x7a, 0x6b, 0x53, 0x4f, 0x54, 0x6b, 0x52, 0x46, 0x7a, 0x6b, 0x78, 0x41, 0x43, 0x2f, 0x6b, 0x4d, 0x74, 0x51, 0x38, 0x37, 0x44, 0x4c, 0x55, 0x50, 0x4f, 0x77, 0x79, 0x45, 0x52, 0x49, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x31, 0x5a, 0x0a, 0x09, 0x49, 0x67, 0x46, 0x4c, 0x73, 0x41, 0x78, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x47, 0x66, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x47, 0x51, 0x41, 0x5a, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x55, 0x41, 0x6f, 0x68, 0x67, 0x2b, 0x51, 0x44, 0x36, 0x59, 0x50, 0x6f, 0x41, 0x2b, 0x31, 0x44, 0x77, 0x55, 0x6e, 0x44, 0x43, 0x63, 0x4e, 0x4a, 0x77, 0x34, 0x70, 0x45, 0x43, 0x67, 0x52, 0x4b, 0x42, 0x49, 0x33, 0x44, 0x6a, 0x6b, 0x51, 0x0a, 0x09, 0x68, 0x77, 0x79, 0x49, 0x45, 0x71, 0x59, 0x4e, 0x70, 0x51, 0x36, 0x71, 0x45, 0x4b, 0x6b, 0x52, 0x44, 0x6c, 0x30, 0x41, 0x58, 0x51, 0x45, 0x68, 0x45, 0x53, 0x4d, 0x52, 0x49, 0x54, 0x55, 0x68, 0x4e, 0x53, 0x63, 0x68, 0x4e, 0x53, 0x45, 0x42, 0x4d, 0x77, 0x6b, 0x42, 0x4d, 0x77, 0x45, 0x68, 0x46, 0x53, 0x45, 0x48, 0x46, 0x53, 0x45, 0x45, 0x6a, 0x66, 0x35, 0x6a, 0x79, 0x66, 0x35, 0x67, 0x41, 0x61, 0x42, 0x55, 0x2f, 0x72, 0x51, 0x42, 0x0a, 0x09, 0x43, 0x50, 0x37, 0x44, 0x76, 0x67, 0x46, 0x37, 0x41, 0x58, 0x6d, 0x2f, 0x2f, 0x73, 0x49, 0x42, 0x43, 0x50, 0x36, 0x31, 0x56, 0x41, 0x47, 0x66, 0x41, 0x63, 0x66, 0x2b, 0x4f, 0x51, 0x48, 0x48, 0x65, 0x7a, 0x4f, 0x62, 0x65, 0x77, 0x4a, 0x4b, 0x2f, 0x55, 0x51, 0x43, 0x76, 0x50, 0x32, 0x32, 0x65, 0x35, 0x73, 0x7a, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4b, 0x37, 0x2b, 0x56, 0x67, 0x54, 0x6c, 0x42, 0x47, 0x41, 0x41, 0x49, 0x41, 0x42, 0x4e, 0x0a, 0x09, 0x51, 0x43, 0x55, 0x54, 0x47, 0x52, 0x38, 0x44, 0x46, 0x67, 0x59, 0x44, 0x43, 0x51, 0x77, 0x44, 0x41, 0x52, 0x49, 0x50, 0x42, 0x6f, 0x63, 0x63, 0x46, 0x6f, 0x77, 0x4b, 0x41, 0x62, 0x77, 0x41, 0x76, 0x53, 0x45, 0x5a, 0x43, 0x52, 0x49, 0x4a, 0x43, 0x41, 0x74, 0x4f, 0x48, 0x77, 0x49, 0x49, 0x41, 0x45, 0x59, 0x68, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x76, 0x54, 0x73, 0x78, 0x42, 0x49, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x35, 0x4f, 0x51, 0x79, 0x0a, 0x09, 0x39, 0x44, 0x7a, 0x73, 0x33, 0x4d, 0x51, 0x52, 0x46, 0x7a, 0x6b, 0x52, 0x45, 0x68, 0x63, 0x35, 0x4d, 0x4c, 0x59, 0x66, 0x49, 0x6d, 0x41, 0x69, 0x7a, 0x79, 0x49, 0x44, 0x41, 0x56, 0x30, 0x54, 0x45, 0x54, 0x4d, 0x52, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x45, 0x54, 0x4d, 0x52, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x33, 0x46, 0x51, 0x34, 0x42, 0x49, 0x79, 0x49, 0x6d, 0x4a, 0x77, 0x34, 0x42, 0x49, 0x79, 0x49, 0x6d, 0x0a, 0x09, 0x4a, 0x78, 0x47, 0x75, 0x75, 0x49, 0x71, 0x48, 0x6c, 0x4a, 0x57, 0x34, 0x49, 0x79, 0x55, 0x4a, 0x49, 0x42, 0x77, 0x70, 0x53, 0x53, 0x4e, 0x46, 0x55, 0x67, 0x38, 0x79, 0x6b, 0x57, 0x4a, 0x6d, 0x6a, 0x79, 0x72, 0x2b, 0x56, 0x67, 0x59, 0x4b, 0x2f, 0x55, 0x69, 0x52, 0x6c, 0x4b, 0x69, 0x6f, 0x41, 0x6f, 0x33, 0x38, 0x6f, 0x6a, 0x77, 0x35, 0x43, 0x77, 0x79, 0x55, 0x46, 0x78, 0x5a, 0x4f, 0x55, 0x45, 0x39, 0x50, 0x54, 0x6b, 0x37, 0x39, 0x0a, 0x09, 0x31, 0x77, 0x41, 0x41, 0x41, 0x67, 0x42, 0x6f, 0x2f, 0x2b, 0x63, 0x44, 0x77, 0x51, 0x55, 0x74, 0x41, 0x42, 0x30, 0x41, 0x4b, 0x51, 0x42, 0x69, 0x51, 0x42, 0x6b, 0x41, 0x4a, 0x79, 0x45, 0x4a, 0x47, 0x77, 0x59, 0x6e, 0x46, 0x51, 0x59, 0x50, 0x49, 0x52, 0x73, 0x50, 0x46, 0x64, 0x55, 0x71, 0x44, 0x43, 0x51, 0x44, 0x41, 0x42, 0x34, 0x53, 0x4a, 0x42, 0x67, 0x71, 0x45, 0x4e, 0x54, 0x4d, 0x33, 0x4d, 0x77, 0x35, 0x4f, 0x52, 0x45, 0x35, 0x0a, 0x09, 0x4d, 0x51, 0x41, 0x51, 0x35, 0x4d, 0x7a, 0x63, 0x7a, 0x42, 0x44, 0x4f, 0x45, 0x4d, 0x34, 0x52, 0x45, 0x6a, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x77, 0x41, 0x55, 0x75, 0x77, 0x44, 0x46, 0x52, 0x4c, 0x73, 0x41, 0x74, 0x55, 0x57, 0x30, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x62, 0x53, 0x37, 0x41, 0x51, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x42, 0x52, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x43, 0x6f, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x43, 0x6f, 0x41, 0x0a, 0x09, 0x4b, 0x76, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x50, 0x67, 0x45, 0x31, 0x4e, 0x43, 0x59, 0x6a, 0x49, 0x67, 0x59, 0x6a, 0x49, 0x69, 0x59, 0x31, 0x4e, 0x44, 0x59, 0x7a, 0x4d, 0x68, 0x49, 0x52, 0x45, 0x41, 0x41, 0x6a, 0x49, 0x69, 0x59, 0x31, 0x4e, 0x42, 0x49, 0x7a, 0x4d, 0x68, 0x59, 0x48, 0x4e, 0x43, 0x59, 0x6a, 0x49, 0x67, 0x49, 0x56, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x68, 0x49, 0x43, 0x39, 0x41, 0x38, 0x50, 0x0a, 0x09, 0x53, 0x55, 0x67, 0x33, 0x6b, 0x43, 0x51, 0x6b, 0x4d, 0x4a, 0x42, 0x6c, 0x74, 0x4e, 0x62, 0x2b, 0x33, 0x39, 0x57, 0x59, 0x79, 0x39, 0x32, 0x69, 0x5a, 0x59, 0x49, 0x4c, 0x56, 0x30, 0x39, 0x74, 0x6a, 0x56, 0x5a, 0x51, 0x62, 0x59, 0x30, 0x43, 0x62, 0x56, 0x65, 0x6a, 0x53, 0x34, 0x47, 0x44, 0x64, 0x43, 0x77, 0x66, 0x50, 0x6d, 0x4c, 0x2b, 0x79, 0x76, 0x37, 0x35, 0x2f, 0x72, 0x48, 0x2b, 0x52, 0x74, 0x69, 0x6a, 0x78, 0x67, 0x45, 0x42, 0x0a, 0x09, 0x57, 0x2b, 0x42, 0x30, 0x66, 0x66, 0x37, 0x2b, 0x7a, 0x33, 0x52, 0x37, 0x41, 0x51, 0x51, 0x41, 0x41, 0x41, 0x45, 0x41, 0x47, 0x66, 0x35, 0x33, 0x42, 0x54, 0x73, 0x46, 0x77, 0x51, 0x41, 0x4c, 0x41, 0x46, 0x31, 0x41, 0x46, 0x41, 0x6f, 0x45, 0x44, 0x41, 0x49, 0x46, 0x42, 0x77, 0x49, 0x41, 0x42, 0x77, 0x77, 0x4b, 0x42, 0x51, 0x51, 0x44, 0x41, 0x51, 0x41, 0x47, 0x42, 0x67, 0x67, 0x4d, 0x45, 0x4e, 0x54, 0x45, 0x46, 0x7a, 0x6b, 0x78, 0x0a, 0x09, 0x41, 0x42, 0x44, 0x45, 0x31, 0x4d, 0x77, 0x51, 0x7a, 0x68, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x77, 0x51, 0x44, 0x42, 0x52, 0x41, 0x31, 0x59, 0x46, 0x55, 0x41, 0x56, 0x61, 0x43, 0x6e, 0x4d, 0x44, 0x63, 0x41, 0x4e, 0x32, 0x42, 0x48, 0x55, 0x46, 0x63, 0x41, 0x56, 0x36, 0x43, 0x6f, 0x41, 0x44, 0x67, 0x41, 0x55, 0x4d, 0x57, 0x67, 0x6c, 0x2f, 0x41, 0x6e, 0x38, 0x44, 0x63, 0x41, 0x56, 0x77, 0x42, 0x6e, 0x73, 0x4a, 0x64, 0x41, 0x75, 0x50, 0x0a, 0x09, 0x41, 0x6f, 0x38, 0x44, 0x67, 0x41, 0x57, 0x41, 0x42, 0x67, 0x74, 0x64, 0x41, 0x56, 0x30, 0x54, 0x49, 0x52, 0x55, 0x68, 0x43, 0x51, 0x45, 0x68, 0x46, 0x53, 0x45, 0x31, 0x43, 0x51, 0x45, 0x33, 0x42, 0x4f, 0x72, 0x38, 0x51, 0x51, 0x4b, 0x67, 0x2f, 0x55, 0x6f, 0x44, 0x37, 0x2f, 0x72, 0x65, 0x41, 0x74, 0x58, 0x39, 0x53, 0x51, 0x58, 0x42, 0x77, 0x66, 0x30, 0x7a, 0x2f, 0x51, 0x54, 0x41, 0x6c, 0x51, 0x4d, 0x68, 0x41, 0x75, 0x4d, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x6e, 0x50, 0x35, 0x33, 0x42, 0x58, 0x45, 0x46, 0x77, 0x51, 0x41, 0x48, 0x41, 0x42, 0x35, 0x41, 0x44, 0x77, 0x59, 0x43, 0x31, 0x77, 0x54, 0x57, 0x41, 0x4b, 0x38, 0x49, 0x41, 0x32, 0x63, 0x42, 0x42, 0x57, 0x63, 0x41, 0x43, 0x42, 0x44, 0x55, 0x37, 0x4e, 0x54, 0x73, 0x4d, 0x51, 0x41, 0x51, 0x2f, 0x4f, 0x7a, 0x73, 0x4d, 0x6a, 0x41, 0x54, 0x49, 0x52, 0x45, 0x6a, 0x45, 0x53, 0x45, 0x52, 0x49, 0x35, 0x77, 0x45, 0x0a, 0x09, 0x31, 0x66, 0x44, 0x39, 0x43, 0x75, 0x38, 0x46, 0x77, 0x66, 0x69, 0x32, 0x42, 0x6e, 0x33, 0x35, 0x67, 0x77, 0x41, 0x41, 0x41, 0x66, 0x2f, 0x68, 0x2f, 0x2f, 0x41, 0x45, 0x71, 0x67, 0x51, 0x76, 0x41, 0x43, 0x4d, 0x41, 0x79, 0x30, 0x41, 0x78, 0x43, 0x77, 0x49, 0x56, 0x48, 0x78, 0x34, 0x44, 0x41, 0x41, 0x6a, 0x61, 0x44, 0x78, 0x6f, 0x57, 0x41, 0x4e, 0x6b, 0x69, 0x32, 0x41, 0x2f, 0x56, 0x47, 0x41, 0x77, 0x65, 0x47, 0x78, 0x6f, 0x5a, 0x0a, 0x09, 0x47, 0x42, 0x63, 0x47, 0x4a, 0x42, 0x49, 0x42, 0x41, 0x41, 0x73, 0x43, 0x42, 0x43, 0x4d, 0x57, 0x46, 0x51, 0x55, 0x69, 0x48, 0x78, 0x49, 0x4d, 0x49, 0x78, 0x4a, 0x6f, 0x42, 0x53, 0x4d, 0x66, 0x4a, 0x42, 0x44, 0x55, 0x31, 0x4e, 0x54, 0x73, 0x45, 0x6a, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x53, 0x4f, 0x54, 0x6b, 0x52, 0x46, 0x7a, 0x6b, 0x52, 0x45, 0x68, 0x63, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x50, 0x4f, 0x54, 0x30, 0x37, 0x44, 0x49, 0x79, 0x0a, 0x09, 0x45, 0x4f, 0x34, 0x52, 0x46, 0x7a, 0x6b, 0x35, 0x4f, 0x54, 0x41, 0x42, 0x53, 0x37, 0x41, 0x4b, 0x56, 0x46, 0x69, 0x39, 0x41, 0x43, 0x54, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x43, 0x51, 0x41, 0x4a, 0x41, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x56, 0x68, 0x67, 0x65, 0x47, 0x42, 0x38, 0x43, 0x43, 0x51, 0x41, 0x4a, 0x41, 0x51, 0x30, 0x43, 0x44, 0x51, 0x4d, 0x50, 0x42, 0x41, 0x38, 0x46, 0x44, 0x77, 0x59, 0x50, 0x0a, 0x09, 0x42, 0x77, 0x38, 0x49, 0x44, 0x77, 0x6b, 0x50, 0x43, 0x67, 0x38, 0x4c, 0x44, 0x77, 0x77, 0x50, 0x44, 0x51, 0x38, 0x4f, 0x44, 0x77, 0x38, 0x50, 0x45, 0x41, 0x38, 0x52, 0x44, 0x78, 0x49, 0x50, 0x45, 0x77, 0x34, 0x55, 0x44, 0x52, 0x55, 0x4a, 0x46, 0x67, 0x73, 0x58, 0x43, 0x42, 0x67, 0x50, 0x47, 0x41, 0x30, 0x5a, 0x43, 0x42, 0x6f, 0x4a, 0x49, 0x78, 0x45, 0x41, 0x45, 0x51, 0x45, 0x57, 0x41, 0x68, 0x59, 0x44, 0x46, 0x78, 0x51, 0x57, 0x0a, 0x09, 0x46, 0x52, 0x45, 0x57, 0x46, 0x78, 0x63, 0x63, 0x47, 0x42, 0x77, 0x5a, 0x45, 0x53, 0x4d, 0x6f, 0x58, 0x51, 0x42, 0x64, 0x41, 0x53, 0x4d, 0x44, 0x44, 0x67, 0x45, 0x56, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x33, 0x42, 0x77, 0x34, 0x42, 0x49, 0x79, 0x49, 0x6d, 0x4e, 0x54, 0x51, 0x32, 0x4e, 0x78, 0x4d, 0x68, 0x41, 0x79, 0x4d, 0x54, 0x49, 0x79, 0x49, 0x47, 0x42, 0x79, 0x4d, 0x2b, 0x41, 0x54, 0x4d, 0x68, 0x42, 0x49, 0x65, 0x32, 0x0a, 0x09, 0x61, 0x51, 0x38, 0x50, 0x4c, 0x7a, 0x63, 0x52, 0x4c, 0x69, 0x55, 0x65, 0x48, 0x6a, 0x63, 0x61, 0x64, 0x6e, 0x6b, 0x56, 0x49, 0x6c, 0x44, 0x2b, 0x75, 0x73, 0x4b, 0x31, 0x77, 0x79, 0x6b, 0x32, 0x50, 0x41, 0x6d, 0x67, 0x48, 0x49, 0x2b, 0x6c, 0x41, 0x33, 0x6b, 0x44, 0x6b, 0x66, 0x34, 0x5a, 0x53, 0x6c, 0x77, 0x57, 0x4f, 0x6a, 0x45, 0x46, 0x42, 0x59, 0x30, 0x49, 0x43, 0x47, 0x5a, 0x6b, 0x4c, 0x70, 0x43, 0x68, 0x41, 0x58, 0x6a, 0x38, 0x0a, 0x09, 0x62, 0x77, 0x4f, 0x52, 0x51, 0x45, 0x57, 0x6d, 0x66, 0x51, 0x41, 0x41, 0x41, 0x51, 0x41, 0x76, 0x2f, 0x6f, 0x30, 0x44, 0x2b, 0x67, 0x59, 0x4f, 0x41, 0x43, 0x55, 0x41, 0x4a, 0x6b, 0x41, 0x55, 0x49, 0x4e, 0x73, 0x41, 0x47, 0x67, 0x33, 0x62, 0x45, 0x78, 0x72, 0x63, 0x42, 0x37, 0x45, 0x6d, 0x43, 0x6d, 0x6b, 0x58, 0x61, 0x68, 0x31, 0x70, 0x42, 0x43, 0x59, 0x51, 0x33, 0x4f, 0x7a, 0x38, 0x37, 0x44, 0x45, 0x41, 0x45, 0x50, 0x7a, 0x73, 0x0a, 0x09, 0x33, 0x4f, 0x51, 0x51, 0x33, 0x75, 0x51, 0x77, 0x41, 0x54, 0x49, 0x54, 0x4e, 0x6a, 0x63, 0x53, 0x45, 0x6a, 0x4d, 0x79, 0x46, 0x68, 0x55, 0x55, 0x42, 0x69, 0x4d, 0x69, 0x4a, 0x69, 0x63, 0x6d, 0x4a, 0x69, 0x4d, 0x69, 0x41, 0x77, 0x59, 0x48, 0x41, 0x67, 0x49, 0x6a, 0x49, 0x69, 0x59, 0x31, 0x4e, 0x44, 0x59, 0x7a, 0x4d, 0x68, 0x59, 0x58, 0x46, 0x68, 0x59, 0x42, 0x4e, 0x32, 0x6f, 0x4f, 0x41, 0x67, 0x45, 0x4d, 0x76, 0x73, 0x70, 0x51, 0x0a, 0x09, 0x5a, 0x45, 0x41, 0x33, 0x4b, 0x6a, 0x67, 0x4d, 0x42, 0x67, 0x6b, 0x51, 0x61, 0x77, 0x34, 0x45, 0x42, 0x42, 0x47, 0x39, 0x78, 0x45, 0x39, 0x6c, 0x52, 0x44, 0x30, 0x68, 0x4d, 0x41, 0x38, 0x4b, 0x43, 0x76, 0x37, 0x36, 0x41, 0x72, 0x42, 0x73, 0x4f, 0x51, 0x49, 0x44, 0x41, 0x62, 0x78, 0x55, 0x51, 0x54, 0x59, 0x2f, 0x4a, 0x69, 0x4d, 0x50, 0x53, 0x50, 0x32, 0x56, 0x77, 0x57, 0x37, 0x2b, 0x49, 0x66, 0x35, 0x69, 0x55, 0x30, 0x45, 0x34, 0x0a, 0x09, 0x50, 0x78, 0x30, 0x63, 0x45, 0x6c, 0x4d, 0x41, 0x41, 0x41, 0x4d, 0x41, 0x63, 0x77, 0x48, 0x56, 0x41, 0x7a, 0x73, 0x46, 0x38, 0x41, 0x41, 0x44, 0x41, 0x42, 0x34, 0x41, 0x4b, 0x51, 0x42, 0x66, 0x51, 0x44, 0x4d, 0x6f, 0x42, 0x79, 0x55, 0x45, 0x48, 0x78, 0x49, 0x59, 0x45, 0x41, 0x4c, 0x6a, 0x41, 0x42, 0x2f, 0x64, 0x45, 0x41, 0x44, 0x68, 0x4a, 0x64, 0x30, 0x46, 0x43, 0x68, 0x6e, 0x66, 0x47, 0x4e, 0x34, 0x56, 0x33, 0x51, 0x72, 0x67, 0x0a, 0x09, 0x48, 0x4a, 0x45, 0x71, 0x41, 0x42, 0x67, 0x4e, 0x48, 0x78, 0x41, 0x69, 0x42, 0x67, 0x49, 0x42, 0x4b, 0x42, 0x45, 0x47, 0x61, 0x77, 0x52, 0x73, 0x47, 0x43, 0x4a, 0x72, 0x44, 0x53, 0x6f, 0x51, 0x33, 0x4f, 0x7a, 0x4d, 0x2f, 0x4f, 0x77, 0x79, 0x4d, 0x73, 0x44, 0x41, 0x45, 0x52, 0x49, 0x35, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x54, 0x6b, 0x2f, 0x50, 0x54, 0x73, 0x45, 0x4d, 0x54, 0x75, 0x37, 0x64, 0x62, 0x75, 0x0a, 0x09, 0x45, 0x4f, 0x34, 0x52, 0x45, 0x6a, 0x6b, 0x53, 0x4f, 0x52, 0x45, 0x35, 0x4f, 0x54, 0x41, 0x54, 0x49, 0x52, 0x55, 0x68, 0x41, 0x52, 0x45, 0x6a, 0x4e, 0x51, 0x59, 0x47, 0x49, 0x79, 0x49, 0x6d, 0x4e, 0x54, 0x51, 0x32, 0x4d, 0x7a, 0x4d, 0x31, 0x4e, 0x43, 0x59, 0x6a, 0x49, 0x67, 0x59, 0x48, 0x4e, 0x54, 0x59, 0x32, 0x4d, 0x7a, 0x49, 0x57, 0x42, 0x53, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x57, 0x4c, 0x0a, 0x09, 0x41, 0x72, 0x44, 0x39, 0x55, 0x41, 0x4b, 0x75, 0x6c, 0x53, 0x79, 0x51, 0x58, 0x59, 0x43, 0x59, 0x76, 0x37, 0x79, 0x32, 0x64, 0x58, 0x55, 0x2b, 0x69, 0x45, 0x52, 0x4a, 0x6b, 0x55, 0x57, 0x33, 0x73, 0x2f, 0x37, 0x73, 0x6f, 0x58, 0x35, 0x69, 0x55, 0x6d, 0x69, 0x43, 0x41, 0x6c, 0x42, 0x37, 0x41, 0x72, 0x6a, 0x2b, 0x51, 0x48, 0x41, 0x2f, 0x52, 0x49, 0x64, 0x78, 0x68, 0x34, 0x6f, 0x45, 0x57, 0x31, 0x73, 0x69, 0x49, 0x6e, 0x38, 0x63, 0x0a, 0x09, 0x48, 0x4c, 0x44, 0x77, 0x51, 0x30, 0x39, 0x41, 0x54, 0x5a, 0x42, 0x79, 0x48, 0x51, 0x41, 0x44, 0x41, 0x47, 0x41, 0x42, 0x31, 0x51, 0x4e, 0x6b, 0x42, 0x66, 0x41, 0x41, 0x41, 0x77, 0x41, 0x50, 0x41, 0x42, 0x73, 0x41, 0x4c, 0x6b, 0x41, 0x5a, 0x41, 0x75, 0x4d, 0x41, 0x34, 0x52, 0x62, 0x64, 0x43, 0x75, 0x41, 0x51, 0x33, 0x51, 0x53, 0x52, 0x48, 0x41, 0x41, 0x54, 0x44, 0x51, 0x45, 0x5a, 0x61, 0x77, 0x64, 0x73, 0x45, 0x32, 0x73, 0x4e, 0x0a, 0x09, 0x48, 0x42, 0x44, 0x63, 0x37, 0x50, 0x7a, 0x73, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x54, 0x73, 0x39, 0x4f, 0x7a, 0x38, 0x37, 0x44, 0x41, 0x54, 0x49, 0x52, 0x55, 0x68, 0x41, 0x54, 0x49, 0x57, 0x46, 0x52, 0x51, 0x47, 0x49, 0x79, 0x49, 0x6d, 0x4e, 0x54, 0x51, 0x32, 0x46, 0x79, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x69, 0x77, 0x4b, 0x77, 0x2f, 0x56, 0x41, 0x42, 0x0a, 0x09, 0x57, 0x4c, 0x50, 0x4f, 0x7a, 0x72, 0x4f, 0x7a, 0x30, 0x4e, 0x43, 0x7a, 0x61, 0x58, 0x35, 0x2f, 0x61, 0x47, 0x6c, 0x39, 0x66, 0x41, 0x4a, 0x51, 0x65, 0x77, 0x51, 0x62, 0x33, 0x62, 0x2b, 0x2f, 0x32, 0x39, 0x79, 0x2b, 0x76, 0x39, 0x31, 0x7a, 0x6f, 0x59, 0x69, 0x46, 0x6f, 0x4b, 0x43, 0x46, 0x69, 0x61, 0x41, 0x41, 0x41, 0x51, 0x42, 0x4f, 0x41, 0x41, 0x41, 0x46, 0x7a, 0x77, 0x58, 0x6e, 0x41, 0x42, 0x38, 0x41, 0x51, 0x45, 0x41, 0x69, 0x0a, 0x09, 0x43, 0x65, 0x55, 0x5a, 0x6b, 0x52, 0x49, 0x50, 0x41, 0x77, 0x4d, 0x41, 0x35, 0x52, 0x41, 0x42, 0x45, 0x53, 0x41, 0x57, 0x45, 0x77, 0x38, 0x4d, 0x48, 0x77, 0x59, 0x43, 0x41, 0x51, 0x41, 0x43, 0x62, 0x51, 0x59, 0x63, 0x48, 0x41, 0x39, 0x74, 0x44, 0x42, 0x77, 0x57, 0x49, 0x42, 0x44, 0x55, 0x37, 0x4f, 0x7a, 0x55, 0x37, 0x4f, 0x7a, 0x41, 0x77, 0x42, 0x45, 0x53, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x45, 0x41, 0x0a, 0x09, 0x4c, 0x7a, 0x7a, 0x73, 0x46, 0x7a, 0x4c, 0x30, 0x37, 0x44, 0x41, 0x6c, 0x46, 0x53, 0x45, 0x31, 0x4e, 0x68, 0x49, 0x31, 0x4e, 0x41, 0x41, 0x6a, 0x49, 0x67, 0x41, 0x56, 0x46, 0x42, 0x49, 0x58, 0x46, 0x53, 0x45, 0x31, 0x49, 0x53, 0x59, 0x43, 0x4e, 0x52, 0x41, 0x41, 0x49, 0x53, 0x41, 0x41, 0x45, 0x52, 0x51, 0x43, 0x42, 0x77, 0x58, 0x50, 0x2f, 0x61, 0x69, 0x78, 0x78, 0x76, 0x37, 0x34, 0x32, 0x4e, 0x6a, 0x2b, 0x39, 0x38, 0x65, 0x79, 0x0a, 0x09, 0x2f, 0x61, 0x67, 0x42, 0x50, 0x35, 0x36, 0x52, 0x41, 0x58, 0x38, 0x42, 0x4d, 0x51, 0x45, 0x76, 0x41, 0x59, 0x47, 0x4f, 0x6f, 0x62, 0x4b, 0x79, 0x73, 0x6d, 0x45, 0x42, 0x54, 0x4d, 0x72, 0x77, 0x41, 0x53, 0x4c, 0x2b, 0x33, 0x65, 0x2f, 0x4b, 0x2f, 0x72, 0x52, 0x68, 0x73, 0x72, 0x4b, 0x4c, 0x41, 0x53, 0x71, 0x34, 0x41, 0x54, 0x34, 0x42, 0x69, 0x76, 0x35, 0x33, 0x2f, 0x73, 0x76, 0x43, 0x2f, 0x74, 0x69, 0x4e, 0x41, 0x41, 0x41, 0x44, 0x0a, 0x09, 0x41, 0x48, 0x76, 0x2f, 0x34, 0x77, 0x64, 0x76, 0x42, 0x48, 0x73, 0x41, 0x42, 0x67, 0x41, 0x7a, 0x41, 0x44, 0x34, 0x42, 0x41, 0x30, 0x42, 0x44, 0x4a, 0x79, 0x30, 0x6c, 0x50, 0x51, 0x34, 0x4e, 0x41, 0x44, 0x53, 0x70, 0x4a, 0x52, 0x61, 0x47, 0x46, 0x59, 0x67, 0x53, 0x41, 0x4b, 0x6b, 0x4f, 0x4f, 0x68, 0x4b, 0x35, 0x48, 0x42, 0x6b, 0x75, 0x68, 0x69, 0x32, 0x36, 0x4b, 0x67, 0x4f, 0x35, 0x44, 0x72, 0x73, 0x48, 0x4d, 0x51, 0x71, 0x34, 0x0a, 0x09, 0x48, 0x78, 0x6d, 0x4d, 0x4a, 0x54, 0x38, 0x30, 0x4e, 0x79, 0x59, 0x47, 0x44, 0x77, 0x41, 0x6c, 0x4e, 0x78, 0x77, 0x48, 0x4a, 0x67, 0x38, 0x56, 0x41, 0x41, 0x67, 0x4e, 0x50, 0x53, 0x59, 0x49, 0x44, 0x79, 0x30, 0x33, 0x43, 0x43, 0x4a, 0x46, 0x50, 0x78, 0x44, 0x38, 0x37, 0x4d, 0x7a, 0x55, 0x2f, 0x44, 0x7a, 0x55, 0x37, 0x4d, 0x51, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x45, 0x54, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x78, 0x0a, 0x09, 0x41, 0x42, 0x44, 0x45, 0x35, 0x44, 0x4c, 0x30, 0x50, 0x4d, 0x54, 0x6b, 0x2f, 0x44, 0x7a, 0x30, 0x37, 0x42, 0x44, 0x45, 0x37, 0x6a, 0x49, 0x51, 0x37, 0x68, 0x44, 0x30, 0x37, 0x68, 0x44, 0x75, 0x45, 0x54, 0x6b, 0x52, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x42, 0x41, 0x67, 0x54, 0x41, 0x72, 0x4d, 0x43, 0x77, 0x77, 0x4c, 0x54, 0x41, 0x75, 0x4d, 0x43, 0x38, 0x77, 0x4d, 0x45, 0x41, 0x72, 0x51, 0x43, 0x78, 0x41, 0x4c, 0x55, 0x41, 0x75, 0x0a, 0x09, 0x51, 0x43, 0x39, 0x41, 0x4d, 0x46, 0x41, 0x72, 0x55, 0x43, 0x78, 0x51, 0x4c, 0x56, 0x41, 0x75, 0x55, 0x43, 0x39, 0x51, 0x4d, 0x49, 0x55, 0x72, 0x68, 0x54, 0x43, 0x41, 0x51, 0x4a, 0x42, 0x41, 0x6f, 0x45, 0x43, 0x77, 0x51, 0x4d, 0x42, 0x41, 0x30, 0x45, 0x44, 0x67, 0x51, 0x4f, 0x42, 0x41, 0x38, 0x45, 0x41, 0x64, 0x50, 0x77, 0x41, 0x2f, 0x42, 0x6a, 0x38, 0x4e, 0x50, 0x77, 0x34, 0x2f, 0x44, 0x77, 0x55, 0x77, 0x4c, 0x44, 0x41, 0x74, 0x0a, 0x09, 0x4d, 0x43, 0x34, 0x77, 0x4c, 0x30, 0x41, 0x73, 0x51, 0x43, 0x31, 0x41, 0x4c, 0x6b, 0x41, 0x76, 0x55, 0x43, 0x78, 0x51, 0x4c, 0x56, 0x41, 0x75, 0x55, 0x43, 0x39, 0x76, 0x41, 0x47, 0x38, 0x47, 0x62, 0x77, 0x31, 0x76, 0x44, 0x6d, 0x38, 0x50, 0x59, 0x43, 0x78, 0x67, 0x4c, 0x57, 0x41, 0x75, 0x59, 0x43, 0x39, 0x77, 0x4c, 0x48, 0x41, 0x74, 0x63, 0x43, 0x35, 0x77, 0x4c, 0x34, 0x41, 0x73, 0x67, 0x43, 0x32, 0x41, 0x4c, 0x6f, 0x41, 0x76, 0x0a, 0x09, 0x48, 0x56, 0x31, 0x78, 0x41, 0x56, 0x30, 0x42, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x59, 0x48, 0x41, 0x7a, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x41, 0x48, 0x51, 0x45, 0x68, 0x48, 0x67, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x33, 0x46, 0x51, 0x34, 0x42, 0x49, 0x79, 0x49, 0x6d, 0x4a, 0x77, 0x34, 0x42, 0x49, 0x79, 0x49, 0x6d, 0x4e, 0x54, 0x51, 0x32, 0x4d, 0x79, 0x45, 0x31, 0x4e, 0x43, 0x59, 0x6a, 0x49, 0x67, 0x59, 0x48, 0x4e, 0x54, 0x34, 0x42, 0x0a, 0x09, 0x4d, 0x7a, 0x49, 0x57, 0x41, 0x79, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x50, 0x51, 0x45, 0x47, 0x74, 0x67, 0x47, 0x6c, 0x69, 0x5a, 0x6d, 0x35, 0x44, 0x6b, 0x52, 0x4b, 0x31, 0x49, 0x54, 0x69, 0x41, 0x51, 0x6a, 0x38, 0x73, 0x67, 0x7a, 0x4d, 0x74, 0x32, 0x6a, 0x49, 0x5a, 0x47, 0x54, 0x51, 0x61, 0x71, 0x66, 0x34, 0x54, 0x55, 0x6e, 0x59, 0x6a, 0x37, 0x33, 0x53, 0x2f, 0x66, 0x73, 0x42, 0x41, 0x71, 0x65, 0x58, 0x0a, 0x09, 0x59, 0x4c, 0x5a, 0x55, 0x5a, 0x62, 0x35, 0x61, 0x6a, 0x74, 0x58, 0x76, 0x33, 0x36, 0x79, 0x42, 0x62, 0x35, 0x6d, 0x35, 0x41, 0x70, 0x53, 0x58, 0x74, 0x4b, 0x36, 0x65, 0x41, 0x54, 0x42, 0x61, 0x58, 0x76, 0x37, 0x64, 0x2b, 0x6c, 0x71, 0x2f, 0x79, 0x44, 0x55, 0x31, 0x72, 0x69, 0x6f, 0x73, 0x65, 0x58, 0x64, 0x34, 0x65, 0x4c, 0x75, 0x6f, 0x76, 0x63, 0x41, 0x53, 0x66, 0x34, 0x73, 0x75, 0x4c, 0x71, 0x6f, 0x6e, 0x4a, 0x32, 0x44, 0x2b, 0x0a, 0x09, 0x47, 0x47, 0x5a, 0x37, 0x59, 0x6e, 0x50, 0x5a, 0x74, 0x43, 0x6b, 0x41, 0x41, 0x77, 0x42, 0x49, 0x2f, 0x36, 0x49, 0x45, 0x6e, 0x41, 0x53, 0x38, 0x41, 0x41, 0x6b, 0x41, 0x45, 0x77, 0x41, 0x72, 0x41, 0x4f, 0x52, 0x41, 0x50, 0x43, 0x73, 0x73, 0x4a, 0x68, 0x38, 0x64, 0x47, 0x68, 0x4d, 0x4b, 0x41, 0x51, 0x41, 0x45, 0x44, 0x53, 0x6b, 0x6d, 0x49, 0x42, 0x51, 0x4e, 0x42, 0x43, 0x6f, 0x6d, 0x48, 0x68, 0x6f, 0x45, 0x75, 0x53, 0x59, 0x4e, 0x0a, 0x09, 0x75, 0x52, 0x71, 0x34, 0x4a, 0x6f, 0x77, 0x73, 0x4b, 0x79, 0x77, 0x71, 0x46, 0x42, 0x63, 0x51, 0x49, 0x42, 0x34, 0x6a, 0x45, 0x77, 0x6f, 0x42, 0x41, 0x41, 0x51, 0x51, 0x42, 0x78, 0x38, 0x64, 0x42, 0x78, 0x49, 0x6a, 0x55, 0x53, 0x6b, 0x51, 0x45, 0x68, 0x64, 0x46, 0x4c, 0x42, 0x44, 0x38, 0x37, 0x44, 0x4c, 0x30, 0x37, 0x44, 0x4c, 0x41, 0x45, 0x52, 0x49, 0x58, 0x4f, 0x52, 0x49, 0x35, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x52, 0x0a, 0x09, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x4f, 0x54, 0x30, 0x37, 0x42, 0x44, 0x75, 0x45, 0x4d, 0x41, 0x51, 0x77, 0x42, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x53, 0x4f, 0x52, 0x49, 0x58, 0x4f, 0x52, 0x45, 0x35, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x42, 0x41, 0x63, 0x43, 0x67, 0x42, 0x50, 0x79, 0x31, 0x5a, 0x46, 0x46, 0x59, 0x63, 0x56, 0x52, 0x31, 0x57, 0x49, 0x47, 0x6f, 0x56, 0x5a, 0x69, 0x46, 0x2f, 0x41, 0x48, 0x73, 0x45, 0x66, 0x77, 0x56, 0x2f, 0x0a, 0x09, 0x42, 0x6e, 0x38, 0x48, 0x66, 0x77, 0x68, 0x2f, 0x43, 0x58, 0x38, 0x4b, 0x66, 0x77, 0x74, 0x2f, 0x44, 0x48, 0x73, 0x4e, 0x65, 0x68, 0x56, 0x37, 0x47, 0x6e, 0x38, 0x62, 0x66, 0x78, 0x78, 0x2f, 0x48, 0x58, 0x38, 0x65, 0x66, 0x78, 0x39, 0x2f, 0x49, 0x48, 0x73, 0x68, 0x66, 0x79, 0x4a, 0x2f, 0x49, 0x33, 0x38, 0x6b, 0x66, 0x79, 0x56, 0x37, 0x4a, 0x70, 0x73, 0x5a, 0x6c, 0x53, 0x57, 0x6f, 0x47, 0x61, 0x41, 0x74, 0x38, 0x43, 0x30, 0x6d, 0x0a, 0x09, 0x57, 0x51, 0x42, 0x57, 0x45, 0x31, 0x55, 0x64, 0x57, 0x69, 0x68, 0x70, 0x41, 0x47, 0x59, 0x54, 0x5a, 0x52, 0x78, 0x71, 0x4b, 0x48, 0x6f, 0x41, 0x64, 0x42, 0x4e, 0x32, 0x48, 0x48, 0x6f, 0x6f, 0x69, 0x52, 0x36, 0x56, 0x47, 0x4a, 0x6f, 0x6b, 0x6f, 0x68, 0x69, 0x74, 0x4a, 0x42, 0x46, 0x64, 0x41, 0x56, 0x30, 0x4a, 0x41, 0x52, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x4a, 0x79, 0x34, 0x42, 0x49, 0x79, 0x49, 0x47, 0x0a, 0x09, 0x46, 0x52, 0x51, 0x57, 0x46, 0x77, 0x63, 0x75, 0x41, 0x54, 0x55, 0x51, 0x41, 0x44, 0x4d, 0x79, 0x46, 0x68, 0x63, 0x33, 0x46, 0x77, 0x63, 0x65, 0x41, 0x52, 0x55, 0x51, 0x41, 0x43, 0x4d, 0x69, 0x4a, 0x69, 0x63, 0x48, 0x4a, 0x77, 0x4f, 0x4a, 0x2f, 0x68, 0x6b, 0x70, 0x5a, 0x30, 0x47, 0x54, 0x72, 0x42, 0x52, 0x63, 0x4b, 0x6d, 0x63, 0x2b, 0x6c, 0x36, 0x6b, 0x54, 0x46, 0x48, 0x30, 0x32, 0x4e, 0x67, 0x45, 0x52, 0x38, 0x56, 0x32, 0x66, 0x0a, 0x09, 0x51, 0x34, 0x74, 0x66, 0x6b, 0x6a, 0x55, 0x32, 0x2f, 0x75, 0x37, 0x77, 0x59, 0x4b, 0x45, 0x2f, 0x69, 0x32, 0x41, 0x44, 0x49, 0x66, 0x32, 0x77, 0x4b, 0x69, 0x6a, 0x6f, 0x79, 0x45, 0x39, 0x31, 0x6d, 0x69, 0x6b, 0x70, 0x36, 0x39, 0x4e, 0x49, 0x62, 0x69, 0x36, 0x58, 0x54, 0x63, 0x56, 0x33, 0x41, 0x52, 0x51, 0x42, 0x4f, 0x44, 0x4d, 0x30, 0x71, 0x45, 0x2b, 0x7a, 0x54, 0x63, 0x5a, 0x34, 0x2f, 0x75, 0x33, 0x2b, 0x78, 0x7a, 0x51, 0x7a, 0x0a, 0x09, 0x71, 0x45, 0x34, 0x41, 0x41, 0x67, 0x43, 0x50, 0x2f, 0x2b, 0x4d, 0x44, 0x72, 0x41, 0x58, 0x56, 0x41, 0x43, 0x41, 0x41, 0x4a, 0x41, 0x43, 0x47, 0x51, 0x43, 0x38, 0x67, 0x47, 0x67, 0x55, 0x43, 0x42, 0x41, 0x59, 0x5a, 0x41, 0x42, 0x43, 0x47, 0x44, 0x34, 0x67, 0x4d, 0x41, 0x43, 0x47, 0x44, 0x49, 0x77, 0x79, 0x56, 0x45, 0x34, 0x77, 0x6a, 0x67, 0x53, 0x55, 0x47, 0x49, 0x68, 0x6b, 0x57, 0x43, 0x51, 0x55, 0x42, 0x41, 0x42, 0x6f, 0x69, 0x0a, 0x09, 0x43, 0x51, 0x41, 0x63, 0x41, 0x53, 0x49, 0x63, 0x49, 0x53, 0x59, 0x50, 0x43, 0x52, 0x77, 0x57, 0x4a, 0x52, 0x44, 0x63, 0x37, 0x4e, 0x54, 0x38, 0x37, 0x4e, 0x54, 0x73, 0x45, 0x52, 0x49, 0x35, 0x45, 0x52, 0x49, 0x35, 0x45, 0x52, 0x49, 0x35, 0x45, 0x6a, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x6b, 0x39, 0x4f, 0x77, 0x51, 0x2f, 0x73, 0x30, 0x51, 0x39, 0x4f, 0x34, 0x53, 0x4f, 0x54, 0x6b, 0x58, 0x4f, 0x54, 0x41, 0x42, 0x53, 0x37, 0x41, 0x51, 0x0a, 0x09, 0x56, 0x45, 0x75, 0x77, 0x45, 0x6c, 0x52, 0x62, 0x53, 0x37, 0x41, 0x54, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x6c, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x6c, 0x41, 0x43, 0x55, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x51, 0x41, 0x74, 0x30, 0x42, 0x48, 0x51, 0x46, 0x64, 0x41, 0x5a, 0x30, 0x42, 0x33, 0x59, 0x63, 0x42, 0x56, 0x30, 0x42, 0x4d, 0x78, 0x55, 0x55, 0x42, 0x67, 0x38, 0x42, 0x44, 0x67, 0x45, 0x56, 0x0a, 0x09, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x33, 0x46, 0x51, 0x34, 0x42, 0x49, 0x79, 0x49, 0x6d, 0x4e, 0x54, 0x51, 0x32, 0x50, 0x77, 0x45, 0x2b, 0x41, 0x54, 0x63, 0x2b, 0x41, 0x54, 0x55, 0x54, 0x49, 0x7a, 0x55, 0x7a, 0x41, 0x66, 0x53, 0x2b, 0x4e, 0x31, 0x70, 0x61, 0x4f, 0x6a, 0x4f, 0x44, 0x62, 0x55, 0x36, 0x30, 0x59, 0x46, 0x37, 0x41, 0x5a, 0x37, 0x6a, 0x67, 0x53, 0x56, 0x6c, 0x59, 0x4d, 0x43, 0x59, 0x49, 0x42, 0x77, 0x62, 0x45, 0x0a, 0x09, 0x79, 0x73, 0x6f, 0x45, 0x52, 0x4a, 0x78, 0x6c, 0x67, 0x6c, 0x64, 0x59, 0x4e, 0x56, 0x34, 0x78, 0x57, 0x57, 0x35, 0x47, 0x51, 0x37, 0x77, 0x35, 0x4f, 0x4d, 0x4b, 0x66, 0x54, 0x49, 0x6c, 0x57, 0x56, 0x69, 0x38, 0x31, 0x47, 0x52, 0x55, 0x38, 0x4e, 0x67, 0x45, 0x4f, 0x2f, 0x67, 0x41, 0x43, 0x41, 0x54, 0x55, 0x41, 0x41, 0x41, 0x49, 0x41, 0x42, 0x64, 0x55, 0x41, 0x41, 0x77, 0x41, 0x4a, 0x41, 0x47, 0x4a, 0x41, 0x44, 0x77, 0x63, 0x41, 0x0a, 0x09, 0x67, 0x77, 0x4b, 0x42, 0x42, 0x41, 0x67, 0x48, 0x42, 0x41, 0x41, 0x44, 0x42, 0x51, 0x45, 0x41, 0x43, 0x68, 0x44, 0x38, 0x50, 0x4f, 0x77, 0x79, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x43, 0x2f, 0x30, 0x2f, 0x4d, 0x77, 0x77, 0x41, 0x55, 0x75, 0x77, 0x43, 0x31, 0x52, 0x59, 0x76, 0x51, 0x41, 0x4b, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4b, 0x41, 0x41, 0x72, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x55, 0x75, 0x77, 0x0a, 0x09, 0x44, 0x31, 0x52, 0x4c, 0x73, 0x42, 0x42, 0x55, 0x57, 0x30, 0x75, 0x77, 0x45, 0x31, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x43, 0x76, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x43, 0x67, 0x41, 0x4b, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x62, 0x59, 0x41, 0x43, 0x79, 0x41, 0x4c, 0x55, 0x41, 0x73, 0x44, 0x58, 0x51, 0x45, 0x6a, 0x4e, 0x54, 0x4d, 0x52, 0x49, 0x78, 0x45, 0x54, 0x4d, 0x78, 0x4d, 0x43, 0x41, 0x4d, 0x76, 0x4c, 0x0a, 0x09, 0x79, 0x78, 0x57, 0x69, 0x46, 0x41, 0x54, 0x58, 0x2f, 0x76, 0x6f, 0x72, 0x41, 0x6f, 0x38, 0x42, 0x5a, 0x66, 0x36, 0x62, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4e, 0x6b, 0x42, 0x48, 0x77, 0x58, 0x62, 0x41, 0x31, 0x34, 0x41, 0x42, 0x51, 0x41, 0x58, 0x51, 0x41, 0x6f, 0x45, 0x6e, 0x41, 0x49, 0x41, 0x42, 0x67, 0x4d, 0x58, 0x41, 0x51, 0x41, 0x47, 0x45, 0x4e, 0x7a, 0x55, 0x37, 0x44, 0x45, 0x41, 0x45, 0x4e, 0x54, 0x45, 0x37, 0x44, 0x41, 0x54, 0x0a, 0x09, 0x49, 0x52, 0x45, 0x6a, 0x45, 0x53, 0x48, 0x5a, 0x42, 0x51, 0x4b, 0x6f, 0x2b, 0x36, 0x59, 0x44, 0x58, 0x76, 0x33, 0x42, 0x41, 0x5a, 0x55, 0x41, 0x41, 0x41, 0x45, 0x41, 0x50, 0x66, 0x2f, 0x58, 0x42, 0x52, 0x6b, 0x47, 0x66, 0x51, 0x41, 0x4b, 0x41, 0x43, 0x70, 0x41, 0x47, 0x41, 0x6f, 0x4a, 0x43, 0x41, 0x63, 0x47, 0x42, 0x51, 0x73, 0x43, 0x42, 0x41, 0x49, 0x41, 0x43, 0x77, 0x6f, 0x4a, 0x42, 0x77, 0x59, 0x46, 0x42, 0x41, 0x4d, 0x41, 0x0a, 0x09, 0x43, 0x41, 0x45, 0x49, 0x43, 0x78, 0x44, 0x55, 0x7a, 0x42, 0x63, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x31, 0x4d, 0x7a, 0x45, 0x45, 0x52, 0x49, 0x58, 0x4f, 0x54, 0x41, 0x42, 0x4d, 0x78, 0x55, 0x6a, 0x41, 0x53, 0x4d, 0x42, 0x42, 0x79, 0x63, 0x6c, 0x41, 0x51, 0x52, 0x63, 0x76, 0x58, 0x50, 0x39, 0x72, 0x6b, 0x4c, 0x2b, 0x77, 0x58, 0x30, 0x5a, 0x41, 0x52, 0x73, 0x42, 0x41, 0x41, 0x5a, 0x39, 0x59, 0x50, 0x6d, 0x36, 0x41, 0x33, 0x4d, 0x74, 0x0a, 0x09, 0x55, 0x47, 0x4c, 0x39, 0x4f, 0x77, 0x41, 0x42, 0x41, 0x42, 0x2f, 0x2b, 0x56, 0x67, 0x55, 0x43, 0x42, 0x68, 0x51, 0x41, 0x49, 0x77, 0x43, 0x4b, 0x51, 0x45, 0x41, 0x4f, 0x44, 0x51, 0x49, 0x50, 0x44, 0x42, 0x45, 0x5a, 0x48, 0x68, 0x6b, 0x4c, 0x43, 0x67, 0x6b, 0x49, 0x42, 0x41, 0x63, 0x52, 0x48, 0x68, 0x34, 0x5a, 0x51, 0x68, 0x6b, 0x4d, 0x45, 0x77, 0x6f, 0x48, 0x48, 0x67, 0x45, 0x61, 0x43, 0x71, 0x6b, 0x49, 0x45, 0x34, 0x6f, 0x53, 0x0a, 0x09, 0x35, 0x68, 0x61, 0x70, 0x44, 0x77, 0x47, 0x4b, 0x41, 0x4f, 0x59, 0x45, 0x71, 0x53, 0x47, 0x58, 0x44, 0x78, 0x77, 0x49, 0x4a, 0x42, 0x34, 0x64, 0x47, 0x78, 0x6f, 0x5a, 0x44, 0x41, 0x73, 0x4a, 0x43, 0x41, 0x63, 0x4b, 0x41, 0x42, 0x49, 0x6b, 0x45, 0x4e, 0x54, 0x4d, 0x46, 0x7a, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x45, 0x4d, 0x73, 0x54, 0x38, 0x37, 0x50, 0x54, 0x73, 0x45, 0x4f, 0x37, 0x32, 0x37, 0x68, 0x44, 0x75, 0x4d, 0x68, 0x49, 0x35, 0x0a, 0x09, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x46, 0x37, 0x52, 0x63, 0x79, 0x42, 0x78, 0x41, 0x46, 0x37, 0x52, 0x45, 0x58, 0x4f, 0x56, 0x6b, 0x69, 0x41, 0x55, 0x75, 0x77, 0x44, 0x46, 0x52, 0x59, 0x76, 0x51, 0x41, 0x6b, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x6b, 0x41, 0x43, 0x51, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x52, 0x55, 0x75, 0x41, 0x53, 0x4d, 0x69, 0x0a, 0x09, 0x42, 0x67, 0x63, 0x44, 0x49, 0x52, 0x55, 0x68, 0x41, 0x77, 0x49, 0x47, 0x49, 0x79, 0x49, 0x6d, 0x4a, 0x7a, 0x55, 0x65, 0x41, 0x54, 0x4d, 0x79, 0x4e, 0x6a, 0x63, 0x54, 0x49, 0x7a, 0x55, 0x68, 0x45, 0x7a, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x57, 0x42, 0x51, 0x49, 0x6d, 0x55, 0x43, 0x78, 0x67, 0x63, 0x68, 0x6b, 0x38, 0x41, 0x52, 0x2f, 0x2b, 0x77, 0x33, 0x38, 0x36, 0x76, 0x4c, 0x6f, 0x36, 0x5a, 0x43, 0x38, 0x30, 0x59, 0x53, 0x39, 0x68, 0x0a, 0x09, 0x62, 0x53, 0x4b, 0x4a, 0x2b, 0x41, 0x45, 0x58, 0x50, 0x79, 0x54, 0x47, 0x6c, 0x7a, 0x56, 0x6b, 0x42, 0x66, 0x43, 0x6b, 0x48, 0x52, 0x78, 0x36, 0x68, 0x50, 0x37, 0x4a, 0x6a, 0x2f, 0x32, 0x46, 0x2f, 0x75, 0x50, 0x54, 0x46, 0x52, 0x61, 0x6d, 0x49, 0x53, 0x47, 0x4a, 0x70, 0x67, 0x4b, 0x74, 0x6a, 0x77, 0x46, 0x4b, 0x74, 0x38, 0x4d, 0x53, 0x41, 0x41, 0x49, 0x41, 0x32, 0x51, 0x45, 0x51, 0x42, 0x64, 0x73, 0x44, 0x39, 0x41, 0x41, 0x64, 0x0a, 0x09, 0x41, 0x44, 0x73, 0x41, 0x50, 0x30, 0x41, 0x66, 0x4c, 0x68, 0x38, 0x35, 0x4b, 0x67, 0x41, 0x74, 0x49, 0x68, 0x4d, 0x42, 0x45, 0x42, 0x73, 0x4d, 0x48, 0x69, 0x71, 0x63, 0x4d, 0x54, 0x6d, 0x63, 0x49, 0x67, 0x53, 0x63, 0x47, 0x77, 0x79, 0x63, 0x45, 0x7a, 0x77, 0x65, 0x41, 0x43, 0x30, 0x50, 0x50, 0x42, 0x44, 0x55, 0x50, 0x4d, 0x51, 0x79, 0x4d, 0x51, 0x41, 0x51, 0x31, 0x4f, 0x7a, 0x55, 0x37, 0x4e, 0x7a, 0x38, 0x31, 0x4f, 0x7a, 0x41, 0x0a, 0x09, 0x45, 0x52, 0x49, 0x35, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x4d, 0x41, 0x45, 0x56, 0x42, 0x67, 0x59, 0x6a, 0x49, 0x69, 0x63, 0x6d, 0x4a, 0x79, 0x59, 0x6e, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x67, 0x63, 0x31, 0x4e, 0x6a, 0x59, 0x7a, 0x4d, 0x68, 0x63, 0x57, 0x46, 0x78, 0x59, 0x58, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x68, 0x4d, 0x56, 0x42, 0x67, 0x59, 0x6a, 0x49, 0x69, 0x63, 0x6d, 0x4a, 0x79, 0x59, 0x6e, 0x0a, 0x09, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x67, 0x63, 0x31, 0x4e, 0x6a, 0x59, 0x7a, 0x4d, 0x68, 0x63, 0x57, 0x46, 0x78, 0x59, 0x58, 0x46, 0x6a, 0x4d, 0x79, 0x4e, 0x67, 0x58, 0x62, 0x61, 0x62, 0x4e, 0x68, 0x62, 0x70, 0x49, 0x4b, 0x42, 0x77, 0x59, 0x50, 0x6d, 0x31, 0x35, 0x59, 0x72, 0x47, 0x4a, 0x70, 0x73, 0x32, 0x46, 0x75, 0x6b, 0x77, 0x73, 0x46, 0x42, 0x67, 0x2b, 0x62, 0x58, 0x6c, 0x61, 0x70, 0x5a, 0x32, 0x6d, 0x7a, 0x59, 0x57, 0x36, 0x53, 0x0a, 0x09, 0x43, 0x67, 0x63, 0x47, 0x44, 0x35, 0x74, 0x65, 0x57, 0x4b, 0x78, 0x69, 0x61, 0x62, 0x4e, 0x68, 0x62, 0x70, 0x4d, 0x4b, 0x42, 0x51, 0x63, 0x50, 0x6d, 0x31, 0x35, 0x57, 0x71, 0x51, 0x4a, 0x76, 0x73, 0x30, 0x35, 0x46, 0x4f, 0x77, 0x51, 0x44, 0x41, 0x67, 0x59, 0x39, 0x54, 0x46, 0x53, 0x7a, 0x54, 0x6b, 0x55, 0x37, 0x42, 0x51, 0x49, 0x43, 0x42, 0x6a, 0x31, 0x4c, 0x41, 0x64, 0x71, 0x79, 0x54, 0x30, 0x55, 0x37, 0x42, 0x41, 0x4d, 0x43, 0x0a, 0x09, 0x42, 0x6a, 0x31, 0x4d, 0x55, 0x37, 0x4a, 0x4f, 0x52, 0x54, 0x73, 0x45, 0x41, 0x67, 0x4d, 0x47, 0x50, 0x55, 0x73, 0x41, 0x41, 0x76, 0x2f, 0x36, 0x41, 0x41, 0x41, 0x46, 0x59, 0x41, 0x58, 0x42, 0x41, 0x41, 0x49, 0x41, 0x42, 0x67, 0x41, 0x34, 0x51, 0x41, 0x38, 0x41, 0x41, 0x77, 0x45, 0x44, 0x42, 0x51, 0x51, 0x44, 0x41, 0x67, 0x45, 0x41, 0x42, 0x51, 0x63, 0x46, 0x42, 0x67, 0x63, 0x51, 0x31, 0x4d, 0x77, 0x52, 0x46, 0x7a, 0x6b, 0x78, 0x0a, 0x09, 0x41, 0x43, 0x2f, 0x45, 0x7a, 0x42, 0x45, 0x35, 0x4d, 0x45, 0x41, 0x55, 0x59, 0x77, 0x46, 0x74, 0x41, 0x6e, 0x41, 0x42, 0x65, 0x41, 0x4a, 0x2f, 0x41, 0x6e, 0x6b, 0x46, 0x64, 0x67, 0x59, 0x48, 0x62, 0x67, 0x42, 0x2f, 0x41, 0x41, 0x4a, 0x64, 0x41, 0x56, 0x30, 0x4a, 0x41, 0x53, 0x45, 0x42, 0x4d, 0x77, 0x45, 0x68, 0x41, 0x71, 0x7a, 0x2b, 0x58, 0x67, 0x4e, 0x45, 0x2f, 0x65, 0x2f, 0x67, 0x41, 0x6b, 0x50, 0x36, 0x6d, 0x67, 0x54, 0x75, 0x0a, 0x09, 0x2b, 0x38, 0x51, 0x46, 0x44, 0x2f, 0x6f, 0x2f, 0x41, 0x41, 0x49, 0x41, 0x6e, 0x67, 0x43, 0x4e, 0x42, 0x43, 0x55, 0x45, 0x49, 0x77, 0x41, 0x47, 0x41, 0x41, 0x30, 0x41, 0x68, 0x6b, 0x42, 0x4a, 0x41, 0x2b, 0x67, 0x45, 0x42, 0x51, 0x51, 0x43, 0x36, 0x41, 0x45, 0x43, 0x42, 0x51, 0x55, 0x45, 0x41, 0x75, 0x67, 0x44, 0x41, 0x67, 0x59, 0x41, 0x42, 0x67, 0x48, 0x6f, 0x41, 0x41, 0x41, 0x47, 0x43, 0x75, 0x67, 0x4c, 0x44, 0x41, 0x73, 0x4a, 0x0a, 0x09, 0x36, 0x41, 0x67, 0x4a, 0x44, 0x41, 0x77, 0x4c, 0x43, 0x65, 0x67, 0x4b, 0x43, 0x51, 0x30, 0x48, 0x44, 0x51, 0x6a, 0x6f, 0x42, 0x77, 0x63, 0x4e, 0x51, 0x67, 0x6b, 0x43, 0x43, 0x77, 0x54, 0x6e, 0x42, 0x77, 0x43, 0x6d, 0x44, 0x67, 0x6b, 0x4d, 0x42, 0x51, 0x49, 0x48, 0x41, 0x77, 0x42, 0x76, 0x42, 0x51, 0x6f, 0x48, 0x62, 0x77, 0x78, 0x75, 0x44, 0x68, 0x44, 0x38, 0x2f, 0x44, 0x7a, 0x55, 0x37, 0x44, 0x49, 0x52, 0x4f, 0x52, 0x45, 0x53, 0x0a, 0x09, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x51, 0x38, 0x37, 0x44, 0x49, 0x35, 0x4f, 0x54, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x54, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x54, 0x74, 0x42, 0x78, 0x41, 0x45, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x45, 0x37, 0x56, 0x6b, 0x69, 0x41, 0x52, 0x55, 0x42, 0x41, 0x52, 0x55, 0x42, 0x0a, 0x09, 0x4e, 0x52, 0x4d, 0x56, 0x41, 0x51, 0x45, 0x56, 0x41, 0x54, 0x55, 0x45, 0x4a, 0x66, 0x37, 0x54, 0x41, 0x53, 0x33, 0x2b, 0x4b, 0x79, 0x50, 0x2b, 0x30, 0x77, 0x45, 0x74, 0x2f, 0x69, 0x73, 0x45, 0x49, 0x37, 0x2f, 0x2b, 0x39, 0x50, 0x37, 0x30, 0x76, 0x77, 0x47, 0x69, 0x55, 0x67, 0x47, 0x69, 0x76, 0x2f, 0x37, 0x30, 0x2f, 0x76, 0x53, 0x2f, 0x41, 0x61, 0x4a, 0x53, 0x41, 0x41, 0x41, 0x43, 0x41, 0x4d, 0x45, 0x41, 0x6a, 0x51, 0x52, 0x49, 0x0a, 0x09, 0x42, 0x43, 0x4d, 0x41, 0x42, 0x67, 0x41, 0x4e, 0x41, 0x49, 0x5a, 0x41, 0x53, 0x51, 0x7a, 0x6f, 0x44, 0x51, 0x77, 0x4a, 0x43, 0x67, 0x6b, 0x4c, 0x36, 0x41, 0x6f, 0x4b, 0x43, 0x51, 0x33, 0x6f, 0x42, 0x77, 0x67, 0x48, 0x44, 0x4f, 0x67, 0x4c, 0x44, 0x41, 0x67, 0x49, 0x42, 0x77, 0x58, 0x6f, 0x42, 0x67, 0x55, 0x43, 0x41, 0x77, 0x49, 0x45, 0x36, 0x41, 0x4d, 0x44, 0x41, 0x67, 0x62, 0x6f, 0x41, 0x41, 0x45, 0x41, 0x42, 0x65, 0x67, 0x45, 0x0a, 0x09, 0x42, 0x51, 0x45, 0x42, 0x41, 0x45, 0x49, 0x4d, 0x42, 0x51, 0x6f, 0x44, 0x35, 0x77, 0x63, 0x41, 0x70, 0x67, 0x34, 0x4d, 0x43, 0x41, 0x45, 0x46, 0x41, 0x41, 0x68, 0x76, 0x43, 0x67, 0x63, 0x42, 0x62, 0x77, 0x4d, 0x41, 0x63, 0x41, 0x34, 0x51, 0x2f, 0x44, 0x7a, 0x38, 0x31, 0x44, 0x7a, 0x73, 0x45, 0x6a, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x30, 0x50, 0x4f, 0x77, 0x79, 0x4f, 0x54, 0x6b, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x0a, 0x09, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x54, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x54, 0x74, 0x42, 0x78, 0x41, 0x45, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x31, 0x5a, 0x49, 0x68, 0x4d, 0x42, 0x46, 0x51, 0x45, 0x31, 0x41, 0x51, 0x45, 0x6c, 0x41, 0x52, 0x55, 0x42, 0x4e, 0x51, 0x45, 0x42, 0x77, 0x51, 0x48, 0x56, 0x2f, 0x69, 0x73, 0x42, 0x0a, 0x09, 0x4c, 0x66, 0x37, 0x54, 0x41, 0x62, 0x49, 0x42, 0x31, 0x66, 0x34, 0x72, 0x41, 0x53, 0x33, 0x2b, 0x30, 0x77, 0x51, 0x6a, 0x2f, 0x6c, 0x35, 0x53, 0x2f, 0x6c, 0x36, 0x2f, 0x41, 0x51, 0x77, 0x42, 0x44, 0x4c, 0x2f, 0x2b, 0x58, 0x6c, 0x4c, 0x2b, 0x58, 0x72, 0x38, 0x42, 0x44, 0x41, 0x45, 0x4d, 0x41, 0x41, 0x4d, 0x41, 0x37, 0x41, 0x41, 0x41, 0x42, 0x78, 0x51, 0x41, 0x2f, 0x67, 0x41, 0x44, 0x41, 0x41, 0x63, 0x41, 0x43, 0x77, 0x41, 0x6a, 0x0a, 0x09, 0x51, 0x42, 0x45, 0x49, 0x42, 0x41, 0x43, 0x44, 0x43, 0x67, 0x59, 0x43, 0x42, 0x42, 0x6b, 0x46, 0x41, 0x42, 0x6b, 0x42, 0x43, 0x52, 0x6b, 0x49, 0x44, 0x42, 0x44, 0x55, 0x2f, 0x4e, 0x54, 0x73, 0x31, 0x4f, 0x77, 0x78, 0x41, 0x43, 0x38, 0x38, 0x50, 0x4f, 0x77, 0x79, 0x4d, 0x6a, 0x41, 0x6c, 0x4d, 0x78, 0x55, 0x6a, 0x4a, 0x54, 0x4d, 0x56, 0x49, 0x79, 0x55, 0x7a, 0x46, 0x53, 0x4d, 0x44, 0x6c, 0x74, 0x54, 0x55, 0x41, 0x71, 0x6e, 0x56, 0x0a, 0x09, 0x31, 0x66, 0x71, 0x74, 0x31, 0x64, 0x58, 0x2b, 0x2f, 0x76, 0x37, 0x2b, 0x2f, 0x76, 0x34, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x45, 0x41, 0x41, 0x41, 0x42, 0x57, 0x67, 0x48, 0x61, 0x77, 0x49, 0x6e, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x42, 0x67, 0x43, 0x38, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x41, 0x51, 0x41, 0x41, 0x41, 0x46, 0x61, 0x41, 0x64, 0x65, 0x41, 0x69, 0x63, 0x41, 0x4a, 0x41, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x46, 0x41, 0x4c, 0x77, 0x42, 0x64, 0x66, 0x2f, 0x2f, 0x41, 0x48, 0x50, 0x2f, 0x34, 0x77, 0x58, 0x5a, 0x42, 0x31, 0x34, 0x43, 0x4a, 0x77, 0x41, 0x79, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x51, 0x55, 0x42, 0x4a, 0x77, 0x46, 0x31, 0x41, 0x41, 0x49, 0x41, 0x63, 0x77, 0x41, 0x41, 0x43, 0x41, 0x77, 0x46, 0x31, 0x51, 0x41, 0x51, 0x41, 0x42, 0x6b, 0x41, 0x4f, 0x30, 0x41, 0x66, 0x0a, 0x09, 0x42, 0x5a, 0x55, 0x44, 0x45, 0x51, 0x47, 0x56, 0x41, 0x49, 0x45, 0x59, 0x42, 0x35, 0x55, 0x44, 0x72, 0x51, 0x6b, 0x59, 0x45, 0x68, 0x41, 0x4b, 0x46, 0x51, 0x59, 0x43, 0x48, 0x42, 0x45, 0x41, 0x42, 0x41, 0x67, 0x56, 0x47, 0x51, 0x30, 0x51, 0x47, 0x68, 0x44, 0x38, 0x37, 0x4e, 0x54, 0x45, 0x78, 0x4e, 0x54, 0x73, 0x4d, 0x68, 0x49, 0x35, 0x4f, 0x54, 0x6b, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x4f, 0x77, 0x79, 0x39, 0x4f, 0x77, 0x79, 0x0a, 0x09, 0x45, 0x4f, 0x34, 0x77, 0x41, 0x52, 0x55, 0x68, 0x45, 0x53, 0x45, 0x56, 0x49, 0x52, 0x45, 0x68, 0x46, 0x53, 0x45, 0x67, 0x41, 0x42, 0x45, 0x51, 0x41, 0x43, 0x45, 0x58, 0x49, 0x79, 0x41, 0x41, 0x45, 0x52, 0x41, 0x41, 0x49, 0x54, 0x4d, 0x48, 0x2b, 0x76, 0x30, 0x61, 0x41, 0x73, 0x66, 0x39, 0x4f, 0x51, 0x4c, 0x34, 0x2b, 0x39, 0x66, 0x2b, 0x54, 0x2f, 0x35, 0x42, 0x41, 0x62, 0x38, 0x42, 0x73, 0x57, 0x65, 0x42, 0x2f, 0x72, 0x2f, 0x2b, 0x0a, 0x09, 0x77, 0x41, 0x46, 0x41, 0x41, 0x55, 0x47, 0x42, 0x42, 0x64, 0x57, 0x71, 0x2f, 0x6b, 0x61, 0x71, 0x2f, 0x65, 0x4f, 0x71, 0x41, 0x58, 0x77, 0x42, 0x63, 0x41, 0x46, 0x74, 0x41, 0x58, 0x79, 0x71, 0x2f, 0x75, 0x48, 0x2b, 0x34, 0x50, 0x37, 0x66, 0x2f, 0x74, 0x38, 0x41, 0x41, 0x77, 0x42, 0x78, 0x2f, 0x2b, 0x4d, 0x48, 0x77, 0x77, 0x52, 0x37, 0x41, 0x41, 0x59, 0x41, 0x4a, 0x77, 0x41, 0x7a, 0x41, 0x49, 0x52, 0x41, 0x4d, 0x51, 0x63, 0x49, 0x0a, 0x09, 0x41, 0x42, 0x43, 0x47, 0x44, 0x34, 0x67, 0x4d, 0x41, 0x4b, 0x6b, 0x49, 0x4c, 0x67, 0x79, 0x35, 0x46, 0x68, 0x4d, 0x6f, 0x41, 0x37, 0x6b, 0x49, 0x75, 0x79, 0x49, 0x6c, 0x48, 0x37, 0x67, 0x5a, 0x45, 0x34, 0x77, 0x30, 0x42, 0x67, 0x41, 0x57, 0x49, 0x6a, 0x45, 0x4a, 0x44, 0x77, 0x41, 0x49, 0x42, 0x30, 0x73, 0x78, 0x45, 0x67, 0x6c, 0x52, 0x4b, 0x78, 0x49, 0x63, 0x52, 0x54, 0x51, 0x51, 0x2f, 0x4f, 0x7a, 0x30, 0x2f, 0x50, 0x54, 0x73, 0x0a, 0x09, 0x78, 0x42, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x53, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x4f, 0x51, 0x79, 0x39, 0x44, 0x7a, 0x45, 0x35, 0x4f, 0x77, 0x79, 0x45, 0x4d, 0x54, 0x75, 0x4d, 0x68, 0x44, 0x75, 0x45, 0x50, 0x54, 0x75, 0x45, 0x52, 0x49, 0x35, 0x4d, 0x45, 0x41, 0x6c, 0x50, 0x7a, 0x56, 0x66, 0x4e, 0x58, 0x41, 0x31, 0x6e, 0x7a, 0x58, 0x50, 0x4e, 0x64, 0x41, 0x31, 0x38, 0x44, 0x55, 0x48, 0x50, 0x77, 0x41, 0x2f, 0x42, 0x6a, 0x38, 0x48, 0x0a, 0x09, 0x50, 0x77, 0x67, 0x2f, 0x43, 0x51, 0x56, 0x76, 0x41, 0x47, 0x38, 0x47, 0x62, 0x77, 0x64, 0x76, 0x43, 0x47, 0x38, 0x4a, 0x42, 0x56, 0x31, 0x78, 0x41, 0x56, 0x30, 0x42, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x59, 0x48, 0x42, 0x52, 0x55, 0x68, 0x48, 0x67, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x33, 0x46, 0x51, 0x34, 0x42, 0x49, 0x79, 0x49, 0x6d, 0x4a, 0x77, 0x34, 0x42, 0x49, 0x79, 0x49, 0x41, 0x45, 0x52, 0x41, 0x41, 0x4d, 0x7a, 0x49, 0x57, 0x0a, 0x09, 0x46, 0x7a, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x41, 0x4a, 0x53, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x42, 0x77, 0x6f, 0x43, 0x70, 0x49, 0x6d, 0x5a, 0x75, 0x51, 0x34, 0x44, 0x53, 0x50, 0x79, 0x79, 0x44, 0x4d, 0x79, 0x33, 0x61, 0x73, 0x68, 0x69, 0x5a, 0x4e, 0x42, 0x71, 0x6f, 0x50, 0x4a, 0x52, 0x52, 0x39, 0x47, 0x4d, 0x38, 0x66, 0x37, 0x76, 0x41, 0x52, 0x48, 0x78, 0x6a, 0x4e, 0x4e, 0x43, 0x0a, 0x09, 0x54, 0x75, 0x69, 0x50, 0x34, 0x67, 0x45, 0x49, 0x2b, 0x72, 0x43, 0x55, 0x72, 0x4b, 0x75, 0x56, 0x6b, 0x36, 0x79, 0x73, 0x41, 0x70, 0x53, 0x59, 0x73, 0x36, 0x36, 0x65, 0x4e, 0x56, 0x71, 0x2b, 0x78, 0x7a, 0x51, 0x30, 0x72, 0x69, 0x6f, 0x73, 0x62, 0x6d, 0x31, 0x75, 0x62, 0x51, 0x45, 0x35, 0x41, 0x52, 0x4d, 0x42, 0x46, 0x41, 0x45, 0x34, 0x62, 0x32, 0x78, 0x72, 0x63, 0x50, 0x37, 0x64, 0x68, 0x2b, 0x66, 0x4a, 0x79, 0x65, 0x66, 0x6f, 0x0a, 0x09, 0x79, 0x4d, 0x66, 0x70, 0x41, 0x41, 0x41, 0x42, 0x41, 0x41, 0x41, 0x42, 0x36, 0x51, 0x51, 0x41, 0x41, 0x6e, 0x6b, 0x41, 0x41, 0x77, 0x41, 0x51, 0x74, 0x67, 0x4b, 0x70, 0x41, 0x4f, 0x6b, 0x45, 0x41, 0x51, 0x41, 0x76, 0x78, 0x6a, 0x45, 0x41, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x42, 0x45, 0x68, 0x46, 0x53, 0x45, 0x45, 0x41, 0x50, 0x77, 0x41, 0x41, 0x6e, 0x6d, 0x51, 0x41, 0x41, 0x41, 0x42, 0x41, 0x41, 0x41, 0x42, 0x36, 0x51, 0x67, 0x41, 0x0a, 0x09, 0x41, 0x6e, 0x6b, 0x41, 0x41, 0x77, 0x41, 0x50, 0x74, 0x51, 0x4b, 0x70, 0x41, 0x41, 0x51, 0x42, 0x41, 0x43, 0x2f, 0x4d, 0x4d, 0x51, 0x41, 0x51, 0x31, 0x4f, 0x77, 0x77, 0x45, 0x53, 0x45, 0x56, 0x49, 0x51, 0x67, 0x41, 0x2b, 0x41, 0x41, 0x43, 0x65, 0x5a, 0x41, 0x41, 0x41, 0x67, 0x43, 0x75, 0x41, 0x2b, 0x6b, 0x44, 0x62, 0x51, 0x58, 0x56, 0x41, 0x41, 0x55, 0x41, 0x43, 0x77, 0x41, 0x6e, 0x51, 0x42, 0x4d, 0x47, 0x41, 0x4a, 0x34, 0x4a, 0x0a, 0x09, 0x41, 0x34, 0x45, 0x4d, 0x43, 0x51, 0x6f, 0x47, 0x47, 0x51, 0x63, 0x44, 0x42, 0x41, 0x63, 0x41, 0x47, 0x51, 0x45, 0x4d, 0x45, 0x4e, 0x7a, 0x38, 0x7a, 0x4e, 0x54, 0x4d, 0x45, 0x50, 0x37, 0x55, 0x7a, 0x6a, 0x45, 0x41, 0x45, 0x50, 0x51, 0x38, 0x37, 0x44, 0x49, 0x77, 0x41, 0x53, 0x4d, 0x31, 0x45, 0x7a, 0x4d, 0x44, 0x42, 0x53, 0x4d, 0x31, 0x45, 0x7a, 0x4d, 0x44, 0x41, 0x59, 0x48, 0x54, 0x70, 0x49, 0x46, 0x53, 0x41, 0x5a, 0x72, 0x54, 0x0a, 0x09, 0x70, 0x49, 0x46, 0x53, 0x41, 0x2b, 0x6d, 0x74, 0x41, 0x54, 0x2f, 0x2b, 0x77, 0x61, 0x32, 0x74, 0x41, 0x54, 0x2f, 0x2b, 0x77, 0x51, 0x41, 0x43, 0x41, 0x4b, 0x34, 0x44, 0x36, 0x51, 0x4e, 0x74, 0x42, 0x64, 0x55, 0x41, 0x42, 0x51, 0x41, 0x4c, 0x41, 0x43, 0x64, 0x41, 0x45, 0x77, 0x6b, 0x44, 0x6e, 0x67, 0x59, 0x41, 0x67, 0x51, 0x77, 0x4a, 0x43, 0x67, 0x63, 0x5a, 0x42, 0x67, 0x45, 0x44, 0x42, 0x41, 0x45, 0x5a, 0x41, 0x41, 0x77, 0x51, 0x0a, 0x09, 0x33, 0x4f, 0x7a, 0x55, 0x7a, 0x42, 0x44, 0x63, 0x37, 0x74, 0x54, 0x4f, 0x4d, 0x51, 0x41, 0x51, 0x39, 0x44, 0x7a, 0x73, 0x4d, 0x6a, 0x41, 0x42, 0x4d, 0x78, 0x55, 0x44, 0x49, 0x78, 0x4d, 0x6c, 0x4d, 0x78, 0x55, 0x44, 0x49, 0x78, 0x4d, 0x42, 0x41, 0x4e, 0x4f, 0x6b, 0x67, 0x56, 0x49, 0x42, 0x6d, 0x74, 0x4f, 0x6b, 0x67, 0x56, 0x49, 0x46, 0x31, 0x61, 0x7a, 0x2b, 0x77, 0x41, 0x46, 0x41, 0x72, 0x4b, 0x7a, 0x2b, 0x77, 0x41, 0x46, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x72, 0x67, 0x50, 0x70, 0x41, 0x64, 0x4d, 0x46, 0x31, 0x51, 0x41, 0x46, 0x41, 0x42, 0x68, 0x41, 0x43, 0x77, 0x43, 0x65, 0x41, 0x34, 0x45, 0x47, 0x41, 0x77, 0x51, 0x41, 0x47, 0x51, 0x45, 0x47, 0x45, 0x4e, 0x7a, 0x38, 0x31, 0x4d, 0x77, 0x78, 0x41, 0x42, 0x44, 0x30, 0x37, 0x44, 0x41, 0x42, 0x49, 0x7a, 0x55, 0x54, 0x4d, 0x77, 0x4d, 0x42, 0x67, 0x64, 0x4f, 0x6b, 0x67, 0x56, 0x49, 0x44, 0x36, 0x61, 0x30, 0x42, 0x0a, 0x09, 0x50, 0x2f, 0x37, 0x42, 0x41, 0x41, 0x41, 0x42, 0x41, 0x4c, 0x49, 0x44, 0x2f, 0x67, 0x48, 0x58, 0x42, 0x64, 0x55, 0x41, 0x42, 0x51, 0x41, 0x59, 0x51, 0x41, 0x73, 0x44, 0x6e, 0x67, 0x43, 0x42, 0x42, 0x67, 0x4d, 0x45, 0x41, 0x58, 0x45, 0x41, 0x42, 0x68, 0x44, 0x63, 0x37, 0x4e, 0x54, 0x4d, 0x4d, 0x51, 0x41, 0x51, 0x39, 0x4f, 0x77, 0x77, 0x41, 0x54, 0x4d, 0x56, 0x41, 0x79, 0x4d, 0x54, 0x41, 0x51, 0x54, 0x54, 0x70, 0x49, 0x46, 0x53, 0x0a, 0x09, 0x42, 0x64, 0x57, 0x59, 0x2f, 0x73, 0x45, 0x42, 0x50, 0x77, 0x41, 0x41, 0x41, 0x77, 0x44, 0x5a, 0x41, 0x4a, 0x59, 0x46, 0x32, 0x77, 0x52, 0x76, 0x41, 0x41, 0x4d, 0x41, 0x42, 0x77, 0x41, 0x4c, 0x41, 0x43, 0x6c, 0x41, 0x46, 0x41, 0x44, 0x71, 0x41, 0x67, 0x62, 0x71, 0x42, 0x41, 0x49, 0x49, 0x6e, 0x41, 0x51, 0x4b, 0x44, 0x41, 0x6b, 0x46, 0x41, 0x58, 0x49, 0x45, 0x41, 0x41, 0x67, 0x4d, 0x45, 0x4e, 0x7a, 0x55, 0x50, 0x50, 0x77, 0x38, 0x0a, 0x09, 0x78, 0x44, 0x45, 0x41, 0x45, 0x4e, 0x54, 0x45, 0x2f, 0x4d, 0x51, 0x51, 0x37, 0x68, 0x44, 0x75, 0x4d, 0x41, 0x45, 0x7a, 0x46, 0x53, 0x4d, 0x52, 0x4d, 0x78, 0x55, 0x6a, 0x41, 0x53, 0x45, 0x56, 0x49, 0x51, 0x4c, 0x66, 0x39, 0x76, 0x62, 0x32, 0x39, 0x76, 0x33, 0x36, 0x42, 0x51, 0x4c, 0x36, 0x2f, 0x67, 0x52, 0x76, 0x39, 0x76, 0x34, 0x53, 0x39, 0x51, 0x4a, 0x42, 0x71, 0x67, 0x41, 0x43, 0x41, 0x41, 0x62, 0x2b, 0x49, 0x77, 0x50, 0x75, 0x0a, 0x09, 0x42, 0x6e, 0x55, 0x41, 0x41, 0x77, 0x41, 0x48, 0x41, 0x43, 0x4a, 0x41, 0x45, 0x51, 0x49, 0x47, 0x41, 0x41, 0x67, 0x45, 0x42, 0x67, 0x67, 0x47, 0x42, 0x41, 0x4d, 0x43, 0x41, 0x51, 0x41, 0x47, 0x42, 0x51, 0x63, 0x49, 0x45, 0x4e, 0x54, 0x4d, 0x46, 0x7a, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x55, 0x7a, 0x42, 0x45, 0x35, 0x45, 0x6a, 0x6b, 0x77, 0x43, 0x51, 0x63, 0x42, 0x2b, 0x76, 0x35, 0x2f, 0x41, 0x59, 0x45, 0x42, 0x67, 0x66, 0x35, 0x2f, 0x0a, 0x09, 0x41, 0x66, 0x54, 0x2b, 0x44, 0x50, 0x34, 0x4d, 0x42, 0x59, 0x48, 0x38, 0x7a, 0x2f, 0x7a, 0x48, 0x41, 0x7a, 0x6b, 0x45, 0x4a, 0x66, 0x76, 0x62, 0x2b, 0x39, 0x4d, 0x45, 0x4c, 0x66, 0x2f, 0x2f, 0x41, 0x44, 0x33, 0x2b, 0x56, 0x67, 0x52, 0x2f, 0x42, 0x68, 0x41, 0x43, 0x4a, 0x77, 0x42, 0x63, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x49, 0x34, 0x41, 0x58, 0x67, 0x41, 0x41, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x41, 0x41, 0x41, 0x0a, 0x09, 0x42, 0x4f, 0x63, 0x48, 0x54, 0x67, 0x49, 0x6e, 0x41, 0x44, 0x77, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x41, 0x77, 0x42, 0x7a, 0x41, 0x58, 0x55, 0x41, 0x41, 0x66, 0x36, 0x4a, 0x2f, 0x2b, 0x4d, 0x43, 0x7a, 0x51, 0x58, 0x77, 0x41, 0x41, 0x4d, 0x41, 0x4b, 0x30, 0x41, 0x54, 0x41, 0x41, 0x38, 0x42, 0x41, 0x67, 0x45, 0x43, 0x44, 0x77, 0x4d, 0x41, 0x41, 0x30, 0x49, 0x43, 0x6a, 0x41, 0x43, 0x52, 0x42, 0x41, 0x45, 0x44, 0x0a, 0x09, 0x42, 0x42, 0x44, 0x55, 0x7a, 0x44, 0x45, 0x41, 0x45, 0x4f, 0x54, 0x6b, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x58, 0x74, 0x57, 0x53, 0x49, 0x42, 0x4d, 0x77, 0x45, 0x6a, 0x41, 0x69, 0x32, 0x67, 0x2f, 0x46, 0x79, 0x67, 0x42, 0x66, 0x44, 0x35, 0x38, 0x77, 0x41, 0x41, 0x41, 0x67, 0x42, 0x65, 0x41, 0x46, 0x49, 0x45, 0x76, 0x41, 0x53, 0x79, 0x41, 0x43, 0x4d, 0x41, 0x4c, 0x77, 0x43, 0x44, 0x0a, 0x09, 0x51, 0x45, 0x6b, 0x44, 0x43, 0x52, 0x73, 0x56, 0x42, 0x43, 0x30, 0x65, 0x41, 0x43, 0x63, 0x63, 0x41, 0x69, 0x45, 0x64, 0x44, 0x42, 0x49, 0x74, 0x46, 0x41, 0x73, 0x4b, 0x41, 0x78, 0x4d, 0x50, 0x41, 0x52, 0x30, 0x74, 0x75, 0x52, 0x50, 0x72, 0x44, 0x2b, 0x77, 0x6e, 0x75, 0x52, 0x33, 0x72, 0x49, 0x54, 0x41, 0x65, 0x44, 0x41, 0x41, 0x53, 0x42, 0x43, 0x6f, 0x6b, 0x46, 0x44, 0x41, 0x63, 0x46, 0x52, 0x73, 0x71, 0x48, 0x52, 0x4d, 0x63, 0x0a, 0x09, 0x47, 0x41, 0x6b, 0x44, 0x4a, 0x41, 0x73, 0x4b, 0x41, 0x51, 0x4d, 0x43, 0x4a, 0x43, 0x67, 0x43, 0x63, 0x77, 0x5a, 0x30, 0x4b, 0x69, 0x67, 0x63, 0x63, 0x78, 0x67, 0x77, 0x45, 0x4e, 0x7a, 0x6b, 0x37, 0x50, 0x54, 0x6b, 0x37, 0x42, 0x49, 0x58, 0x4f, 0x52, 0x49, 0x35, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x53, 0x4f, 0x54, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x52, 0x45, 0x68, 0x63, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x31, 0x4f, 0x54, 0x73, 0x0a, 0x09, 0x39, 0x4f, 0x54, 0x73, 0x45, 0x4d, 0x41, 0x52, 0x45, 0x68, 0x63, 0x35, 0x45, 0x6a, 0x6b, 0x35, 0x45, 0x52, 0x49, 0x35, 0x4f, 0x52, 0x45, 0x35, 0x4f, 0x52, 0x49, 0x58, 0x4f, 0x54, 0x41, 0x42, 0x4e, 0x78, 0x63, 0x48, 0x46, 0x68, 0x59, 0x56, 0x46, 0x41, 0x59, 0x48, 0x46, 0x77, 0x63, 0x6e, 0x42, 0x67, 0x59, 0x6a, 0x49, 0x69, 0x59, 0x6e, 0x42, 0x79, 0x63, 0x33, 0x4a, 0x69, 0x59, 0x31, 0x4e, 0x44, 0x59, 0x33, 0x4a, 0x7a, 0x63, 0x58, 0x0a, 0x09, 0x4e, 0x6a, 0x59, 0x7a, 0x4d, 0x68, 0x59, 0x54, 0x4e, 0x43, 0x59, 0x6a, 0x49, 0x67, 0x59, 0x56, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x44, 0x65, 0x38, 0x39, 0x79, 0x7a, 0x69, 0x55, 0x6b, 0x4a, 0x69, 0x6a, 0x52, 0x63, 0x73, 0x38, 0x37, 0x64, 0x44, 0x30, 0x36, 0x65, 0x44, 0x33, 0x50, 0x63, 0x63, 0x38, 0x6c, 0x4a, 0x53, 0x59, 0x6d, 0x7a, 0x33, 0x50, 0x50, 0x4e, 0x33, 0x52, 0x41, 0x50, 0x48, 0x56, 0x63, 0x6d, 0x33, 0x4a, 0x77, 0x0a, 0x09, 0x6e, 0x70, 0x31, 0x78, 0x63, 0x5a, 0x77, 0x44, 0x34, 0x64, 0x46, 0x7a, 0x7a, 0x6a, 0x74, 0x33, 0x50, 0x6a, 0x39, 0x7a, 0x4f, 0x63, 0x39, 0x78, 0x7a, 0x79, 0x67, 0x6d, 0x4a, 0x53, 0x58, 0x50, 0x63, 0x38, 0x34, 0x2b, 0x64, 0x6a, 0x70, 0x41, 0x64, 0x44, 0x6a, 0x4f, 0x63, 0x38, 0x38, 0x6e, 0x4a, 0x53, 0x54, 0x2b, 0x66, 0x48, 0x43, 0x61, 0x6d, 0x6e, 0x42, 0x79, 0x6e, 0x4a, 0x30, 0x41, 0x41, 0x41, 0x45, 0x41, 0x6e, 0x67, 0x43, 0x4e, 0x0a, 0x09, 0x41, 0x6e, 0x4d, 0x45, 0x49, 0x77, 0x41, 0x47, 0x41, 0x45, 0x64, 0x41, 0x4a, 0x51, 0x50, 0x6f, 0x42, 0x41, 0x55, 0x45, 0x41, 0x75, 0x67, 0x42, 0x41, 0x67, 0x55, 0x46, 0x42, 0x41, 0x4c, 0x6f, 0x41, 0x77, 0x49, 0x47, 0x41, 0x41, 0x59, 0x42, 0x36, 0x41, 0x41, 0x47, 0x51, 0x67, 0x49, 0x45, 0x35, 0x77, 0x43, 0x6d, 0x42, 0x77, 0x49, 0x44, 0x41, 0x47, 0x38, 0x46, 0x62, 0x67, 0x63, 0x51, 0x2f, 0x4f, 0x77, 0x79, 0x4f, 0x54, 0x45, 0x41, 0x0a, 0x09, 0x45, 0x50, 0x54, 0x73, 0x4f, 0x54, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x42, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x4f, 0x31, 0x5a, 0x49, 0x67, 0x45, 0x56, 0x41, 0x51, 0x45, 0x56, 0x41, 0x54, 0x55, 0x43, 0x63, 0x2f, 0x37, 0x54, 0x41, 0x53, 0x33, 0x2b, 0x4b, 0x77, 0x51, 0x6a, 0x76, 0x2f, 0x37, 0x30, 0x2f, 0x76, 0x53, 0x2f, 0x41, 0x61, 0x4a, 0x53, 0x41, 0x41, 0x41, 0x42, 0x0a, 0x09, 0x41, 0x4d, 0x45, 0x41, 0x6a, 0x51, 0x4b, 0x57, 0x42, 0x43, 0x4d, 0x41, 0x42, 0x67, 0x42, 0x4a, 0x51, 0x43, 0x59, 0x46, 0x36, 0x41, 0x59, 0x46, 0x41, 0x67, 0x4d, 0x43, 0x42, 0x4f, 0x67, 0x44, 0x41, 0x77, 0x49, 0x47, 0x36, 0x41, 0x41, 0x42, 0x41, 0x41, 0x58, 0x6f, 0x42, 0x41, 0x55, 0x42, 0x41, 0x51, 0x42, 0x43, 0x42, 0x51, 0x50, 0x6e, 0x41, 0x4b, 0x59, 0x48, 0x42, 0x51, 0x46, 0x76, 0x41, 0x77, 0x42, 0x77, 0x42, 0x78, 0x44, 0x38, 0x0a, 0x09, 0x50, 0x4f, 0x77, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x39, 0x4f, 0x77, 0x35, 0x4d, 0x45, 0x74, 0x54, 0x57, 0x41, 0x63, 0x51, 0x43, 0x4f, 0x30, 0x48, 0x45, 0x41, 0x54, 0x74, 0x42, 0x78, 0x41, 0x45, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x31, 0x5a, 0x49, 0x68, 0x4d, 0x42, 0x46, 0x51, 0x45, 0x31, 0x41, 0x51, 0x48, 0x42, 0x41, 0x64, 0x58, 0x2b, 0x4b, 0x77, 0x45, 0x74, 0x2f, 0x74, 0x4d, 0x45, 0x49, 0x2f, 0x35, 0x65, 0x55, 0x76, 0x35, 0x65, 0x0a, 0x09, 0x76, 0x77, 0x45, 0x4d, 0x41, 0x51, 0x77, 0x41, 0x41, 0x41, 0x49, 0x41, 0x4c, 0x77, 0x41, 0x41, 0x42, 0x45, 0x6f, 0x47, 0x46, 0x41, 0x41, 0x56, 0x41, 0x42, 0x6b, 0x41, 0x6d, 0x30, 0x41, 0x6f, 0x43, 0x78, 0x51, 0x59, 0x42, 0x77, 0x4f, 0x70, 0x41, 0x42, 0x43, 0x48, 0x44, 0x68, 0x69, 0x2b, 0x46, 0x72, 0x45, 0x4f, 0x6c, 0x77, 0x6b, 0x41, 0x76, 0x41, 0x55, 0x42, 0x45, 0x51, 0x34, 0x50, 0x42, 0x42, 0x59, 0x43, 0x43, 0x41, 0x41, 0x50, 0x0a, 0x09, 0x46, 0x41, 0x51, 0x49, 0x43, 0x42, 0x63, 0x41, 0x43, 0x67, 0x5a, 0x4d, 0x47, 0x68, 0x44, 0x38, 0x50, 0x4d, 0x51, 0x79, 0x78, 0x50, 0x77, 0x38, 0x78, 0x42, 0x44, 0x75, 0x4d, 0x68, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x43, 0x38, 0x38, 0x35, 0x6a, 0x4c, 0x75, 0x2f, 0x75, 0x34, 0x51, 0x37, 0x68, 0x44, 0x75, 0x4d, 0x68, 0x49, 0x35, 0x4f, 0x54, 0x41, 0x42, 0x53, 0x37, 0x41, 0x4b, 0x56, 0x46, 0x69, 0x39, 0x41, 0x42, 0x72, 0x2f, 0x0a, 0x09, 0x77, 0x41, 0x41, 0x42, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x67, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x53, 0x37, 0x41, 0x4f, 0x56, 0x46, 0x69, 0x39, 0x41, 0x42, 0x6f, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x76, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x47, 0x68, 0x41, 0x57, 0x45, 0x42, 0x63, 0x51, 0x47, 0x42, 0x41, 0x5a, 0x42, 0x44, 0x41, 0x62, 0x55, 0x42, 0x75, 0x41, 0x0a, 0x09, 0x44, 0x34, 0x41, 0x51, 0x67, 0x42, 0x75, 0x67, 0x47, 0x39, 0x41, 0x62, 0x37, 0x78, 0x73, 0x49, 0x58, 0x51, 0x42, 0x64, 0x41, 0x52, 0x45, 0x6a, 0x45, 0x53, 0x45, 0x52, 0x49, 0x78, 0x45, 0x6a, 0x4e, 0x54, 0x4d, 0x31, 0x4e, 0x44, 0x59, 0x37, 0x41, 0x52, 0x55, 0x6a, 0x49, 0x67, 0x59, 0x64, 0x41, 0x51, 0x45, 0x7a, 0x46, 0x53, 0x4d, 0x45, 0x53, 0x72, 0x6e, 0x2b, 0x42, 0x37, 0x6d, 0x77, 0x73, 0x4b, 0x32, 0x7a, 0x75, 0x62, 0x42, 0x6a, 0x0a, 0x09, 0x54, 0x51, 0x48, 0x35, 0x75, 0x62, 0x6b, 0x45, 0x59, 0x50, 0x75, 0x67, 0x41, 0x39, 0x48, 0x38, 0x4c, 0x77, 0x50, 0x52, 0x6a, 0x30, 0x36, 0x33, 0x72, 0x35, 0x6c, 0x51, 0x61, 0x47, 0x4d, 0x42, 0x73, 0x75, 0x6b, 0x41, 0x41, 0x51, 0x41, 0x76, 0x41, 0x41, 0x41, 0x45, 0x53, 0x67, 0x59, 0x55, 0x41, 0x42, 0x55, 0x41, 0x68, 0x45, 0x41, 0x68, 0x43, 0x42, 0x4d, 0x45, 0x44, 0x77, 0x75, 0x70, 0x43, 0x51, 0x53, 0x48, 0x41, 0x4a, 0x63, 0x52, 0x0a, 0x09, 0x43, 0x62, 0x77, 0x4e, 0x41, 0x67, 0x55, 0x41, 0x43, 0x67, 0x67, 0x44, 0x43, 0x41, 0x45, 0x4b, 0x44, 0x41, 0x67, 0x49, 0x45, 0x41, 0x45, 0x53, 0x44, 0x6b, 0x77, 0x57, 0x45, 0x50, 0x77, 0x38, 0x78, 0x4d, 0x54, 0x38, 0x50, 0x4d, 0x51, 0x51, 0x37, 0x68, 0x45, 0x53, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x43, 0x38, 0x38, 0x35, 0x6a, 0x4c, 0x2b, 0x37, 0x68, 0x44, 0x75, 0x4d, 0x68, 0x49, 0x35, 0x4f, 0x54, 0x41, 0x42, 0x53, 0x37, 0x41, 0x4b, 0x0a, 0x09, 0x56, 0x46, 0x69, 0x39, 0x41, 0x42, 0x62, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x42, 0x59, 0x41, 0x46, 0x67, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x53, 0x37, 0x41, 0x4f, 0x56, 0x46, 0x69, 0x39, 0x41, 0x42, 0x59, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x42, 0x59, 0x41, 0x46, 0x76, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x45, 0x54, 0x41, 0x58, 0x55, 0x42, 0x65, 0x41, 0x43, 0x6f, 0x41, 0x4c, 0x0a, 0x09, 0x67, 0x42, 0x65, 0x67, 0x46, 0x39, 0x41, 0x58, 0x37, 0x78, 0x63, 0x49, 0x58, 0x51, 0x45, 0x68, 0x45, 0x53, 0x4d, 0x52, 0x49, 0x53, 0x49, 0x47, 0x48, 0x51, 0x45, 0x68, 0x46, 0x53, 0x45, 0x52, 0x49, 0x78, 0x45, 0x6a, 0x4e, 0x54, 0x4d, 0x31, 0x4e, 0x44, 0x59, 0x43, 0x53, 0x67, 0x49, 0x41, 0x75, 0x66, 0x36, 0x33, 0x59, 0x30, 0x30, 0x42, 0x4c, 0x2f, 0x37, 0x52, 0x75, 0x62, 0x43, 0x77, 0x72, 0x67, 0x59, 0x55, 0x2b, 0x65, 0x77, 0x46, 0x0a, 0x09, 0x65, 0x31, 0x42, 0x6f, 0x59, 0x34, 0x2f, 0x38, 0x4c, 0x77, 0x50, 0x52, 0x6a, 0x30, 0x36, 0x37, 0x71, 0x77, 0x41, 0x41, 0x41, 0x51, 0x41, 0x35, 0x2f, 0x7a, 0x73, 0x44, 0x78, 0x77, 0x58, 0x56, 0x41, 0x42, 0x4d, 0x41, 0x50, 0x6b, 0x41, 0x67, 0x45, 0x67, 0x61, 0x35, 0x41, 0x42, 0x41, 0x49, 0x75, 0x51, 0x6f, 0x45, 0x41, 0x41, 0x49, 0x4f, 0x43, 0x67, 0x79, 0x42, 0x41, 0x73, 0x49, 0x55, 0x44, 0x77, 0x42, 0x5a, 0x45, 0x51, 0x30, 0x42, 0x0a, 0x09, 0x56, 0x77, 0x6b, 0x46, 0x57, 0x51, 0x73, 0x48, 0x41, 0x78, 0x51, 0x51, 0x31, 0x44, 0x77, 0x38, 0x37, 0x44, 0x4c, 0x38, 0x50, 0x44, 0x7a, 0x73, 0x4d, 0x6a, 0x45, 0x41, 0x45, 0x4f, 0x54, 0x30, 0x78, 0x44, 0x49, 0x51, 0x78, 0x44, 0x49, 0x51, 0x37, 0x6a, 0x49, 0x51, 0x37, 0x6a, 0x49, 0x77, 0x4a, 0x53, 0x45, 0x52, 0x49, 0x78, 0x45, 0x68, 0x4e, 0x53, 0x45, 0x52, 0x49, 0x54, 0x55, 0x68, 0x45, 0x54, 0x4d, 0x52, 0x49, 0x52, 0x55, 0x68, 0x0a, 0x09, 0x45, 0x53, 0x45, 0x44, 0x78, 0x2f, 0x36, 0x52, 0x73, 0x50, 0x36, 0x52, 0x41, 0x57, 0x2f, 0x2b, 0x6b, 0x51, 0x46, 0x76, 0x73, 0x41, 0x46, 0x76, 0x2f, 0x70, 0x45, 0x42, 0x62, 0x39, 0x2f, 0x2b, 0x58, 0x41, 0x47, 0x6b, 0x6d, 0x67, 0x49, 0x66, 0x6d, 0x51, 0x47, 0x6b, 0x2f, 0x6c, 0x79, 0x5a, 0x2f, 0x65, 0x45, 0x41, 0x41, 0x51, 0x44, 0x62, 0x41, 0x6b, 0x67, 0x42, 0x72, 0x67, 0x4e, 0x47, 0x41, 0x41, 0x4d, 0x41, 0x45, 0x72, 0x63, 0x43, 0x0a, 0x09, 0x67, 0x77, 0x41, 0x45, 0x41, 0x52, 0x6b, 0x41, 0x42, 0x42, 0x44, 0x55, 0x37, 0x44, 0x45, 0x41, 0x45, 0x4e, 0x54, 0x73, 0x4d, 0x42, 0x4d, 0x7a, 0x46, 0x53, 0x50, 0x62, 0x30, 0x39, 0x4d, 0x44, 0x52, 0x76, 0x34, 0x41, 0x41, 0x51, 0x43, 0x75, 0x2f, 0x78, 0x49, 0x42, 0x30, 0x77, 0x44, 0x2b, 0x41, 0x41, 0x55, 0x41, 0x47, 0x45, 0x41, 0x4c, 0x41, 0x35, 0x34, 0x41, 0x67, 0x77, 0x59, 0x44, 0x42, 0x41, 0x45, 0x5a, 0x41, 0x41, 0x59, 0x51, 0x0a, 0x09, 0x31, 0x4f, 0x7a, 0x55, 0x7a, 0x44, 0x45, 0x41, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x43, 0x55, 0x7a, 0x46, 0x51, 0x4d, 0x6a, 0x45, 0x77, 0x45, 0x41, 0x30, 0x36, 0x53, 0x42, 0x55, 0x76, 0x36, 0x73, 0x2f, 0x73, 0x41, 0x42, 0x51, 0x41, 0x41, 0x43, 0x41, 0x4b, 0x37, 0x2f, 0x45, 0x67, 0x4e, 0x74, 0x41, 0x50, 0x34, 0x41, 0x42, 0x51, 0x41, 0x4c, 0x41, 0x43, 0x64, 0x41, 0x45, 0x77, 0x6b, 0x44, 0x6e, 0x67, 0x59, 0x41, 0x67, 0x77, 0x77, 0x44, 0x0a, 0x09, 0x42, 0x41, 0x45, 0x5a, 0x41, 0x41, 0x63, 0x4a, 0x43, 0x67, 0x63, 0x5a, 0x42, 0x67, 0x77, 0x51, 0x33, 0x4f, 0x7a, 0x55, 0x7a, 0x42, 0x44, 0x63, 0x37, 0x74, 0x54, 0x4f, 0x4d, 0x51, 0x41, 0x51, 0x2f, 0x44, 0x7a, 0x73, 0x4d, 0x6a, 0x41, 0x6c, 0x4d, 0x78, 0x55, 0x44, 0x49, 0x78, 0x4d, 0x6c, 0x4d, 0x78, 0x55, 0x44, 0x49, 0x78, 0x4d, 0x43, 0x6d, 0x74, 0x4f, 0x6b, 0x67, 0x56, 0x4c, 0x2b, 0x5a, 0x74, 0x4f, 0x6b, 0x67, 0x56, 0x4c, 0x2b, 0x0a, 0x09, 0x72, 0x50, 0x37, 0x41, 0x41, 0x55, 0x43, 0x73, 0x72, 0x50, 0x37, 0x41, 0x41, 0x55, 0x41, 0x41, 0x41, 0x41, 0x63, 0x41, 0x63, 0x66, 0x2f, 0x6a, 0x43, 0x6b, 0x77, 0x46, 0x38, 0x41, 0x41, 0x4c, 0x41, 0x42, 0x63, 0x41, 0x49, 0x77, 0x41, 0x6e, 0x41, 0x44, 0x4d, 0x41, 0x50, 0x77, 0x42, 0x4c, 0x41, 0x4b, 0x35, 0x41, 0x52, 0x43, 0x51, 0x50, 0x4a, 0x53, 0x59, 0x6c, 0x4a, 0x67, 0x38, 0x6e, 0x4a, 0x43, 0x64, 0x43, 0x51, 0x41, 0x43, 0x53, 0x0a, 0x09, 0x44, 0x43, 0x36, 0x53, 0x48, 0x6f, 0x30, 0x6f, 0x6b, 0x68, 0x68, 0x47, 0x42, 0x70, 0x49, 0x30, 0x44, 0x49, 0x30, 0x36, 0x4a, 0x68, 0x4b, 0x4d, 0x4a, 0x42, 0x69, 0x52, 0x54, 0x43, 0x56, 0x4a, 0x51, 0x79, 0x63, 0x78, 0x4b, 0x30, 0x4d, 0x4e, 0x50, 0x51, 0x6b, 0x4e, 0x44, 0x77, 0x34, 0x44, 0x44, 0x52, 0x55, 0x78, 0x44, 0x52, 0x73, 0x39, 0x44, 0x6b, 0x6b, 0x4e, 0x46, 0x54, 0x63, 0x72, 0x44, 0x52, 0x73, 0x4f, 0x49, 0x51, 0x74, 0x4d, 0x0a, 0x09, 0x45, 0x50, 0x7a, 0x6b, 0x37, 0x4e, 0x54, 0x45, 0x37, 0x4f, 0x51, 0x51, 0x37, 0x68, 0x44, 0x75, 0x39, 0x75, 0x34, 0x51, 0x37, 0x68, 0x45, 0x53, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x4f, 0x51, 0x79, 0x39, 0x44, 0x77, 0x38, 0x35, 0x44, 0x4c, 0x73, 0x4d, 0x68, 0x44, 0x75, 0x39, 0x75, 0x34, 0x51, 0x37, 0x6a, 0x49, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x31, 0x5a, 0x0a, 0x09, 0x49, 0x67, 0x46, 0x4c, 0x73, 0x42, 0x52, 0x55, 0x53, 0x37, 0x41, 0x4a, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x41, 0x74, 0x55, 0x57, 0x30, 0x75, 0x77, 0x44, 0x46, 0x52, 0x62, 0x53, 0x37, 0x41, 0x4e, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x41, 0x35, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x45, 0x77, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x45, 0x77, 0x41, 0x54, 0x50, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x49, 0x67, 0x59, 0x56, 0x0a, 0x09, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x6e, 0x4d, 0x68, 0x59, 0x56, 0x46, 0x41, 0x59, 0x6a, 0x49, 0x69, 0x59, 0x31, 0x4e, 0x44, 0x59, 0x42, 0x4d, 0x68, 0x59, 0x56, 0x46, 0x41, 0x59, 0x6a, 0x49, 0x69, 0x59, 0x31, 0x4e, 0x44, 0x59, 0x68, 0x4d, 0x77, 0x45, 0x6a, 0x45, 0x79, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x41, 0x54, 0x49, 0x57, 0x46, 0x52, 0x51, 0x47, 0x0a, 0x09, 0x49, 0x79, 0x49, 0x6d, 0x4e, 0x54, 0x51, 0x32, 0x46, 0x79, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x43, 0x50, 0x52, 0x58, 0x5a, 0x47, 0x52, 0x58, 0x56, 0x57, 0x4e, 0x6a, 0x56, 0x5a, 0x36, 0x36, 0x75, 0x35, 0x32, 0x67, 0x75, 0x72, 0x76, 0x35, 0x64, 0x4a, 0x36, 0x38, 0x75, 0x35, 0x2b, 0x66, 0x75, 0x62, 0x6f, 0x45, 0x4a, 0x61, 0x44, 0x38, 0x57, 0x71, 0x41, 0x66, 0x56, 0x6d, 0x4e, 0x69, 0x0a, 0x09, 0x56, 0x31, 0x64, 0x6a, 0x5a, 0x41, 0x4f, 0x79, 0x6e, 0x72, 0x71, 0x37, 0x6e, 0x61, 0x43, 0x36, 0x75, 0x35, 0x39, 0x58, 0x59, 0x32, 0x4e, 0x58, 0x56, 0x57, 0x4e, 0x6a, 0x41, 0x70, 0x47, 0x55, 0x68, 0x49, 0x4b, 0x56, 0x6c, 0x59, 0x4b, 0x44, 0x6c, 0x58, 0x2f, 0x63, 0x75, 0x37, 0x76, 0x62, 0x32, 0x37, 0x75, 0x38, 0x32, 0x77, 0x4c, 0x67, 0x32, 0x37, 0x75, 0x39, 0x32, 0x74, 0x75, 0x38, 0x75, 0x74, 0x7a, 0x35, 0x38, 0x77, 0x57, 0x4f, 0x0a, 0x09, 0x6c, 0x59, 0x4b, 0x45, 0x6c, 0x4a, 0x53, 0x45, 0x67, 0x5a, 0x62, 0x39, 0x6e, 0x39, 0x79, 0x37, 0x75, 0x39, 0x76, 0x62, 0x75, 0x37, 0x7a, 0x62, 0x66, 0x35, 0x53, 0x45, 0x67, 0x70, 0x57, 0x56, 0x67, 0x6f, 0x4f, 0x56, 0x41, 0x50, 0x2f, 0x2f, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x56, 0x6f, 0x42, 0x32, 0x30, 0x43, 0x4a, 0x77, 0x41, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x51, 0x63, 0x41, 0x76, 0x41, 0x46, 0x31, 0x0a, 0x09, 0x2f, 0x2f, 0x38, 0x41, 0x79, 0x51, 0x41, 0x41, 0x42, 0x49, 0x73, 0x48, 0x62, 0x51, 0x49, 0x6e, 0x41, 0x43, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x42, 0x77, 0x43, 0x65, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x41, 0x51, 0x41, 0x41, 0x41, 0x46, 0x61, 0x41, 0x64, 0x72, 0x41, 0x69, 0x63, 0x41, 0x4a, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x45, 0x41, 0x4c, 0x77, 0x42, 0x64, 0x66, 0x2f, 0x2f, 0x0a, 0x09, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x53, 0x4c, 0x42, 0x30, 0x34, 0x43, 0x4a, 0x77, 0x41, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x51, 0x4d, 0x41, 0x6e, 0x67, 0x46, 0x31, 0x2f, 0x2f, 0x38, 0x41, 0x79, 0x51, 0x41, 0x41, 0x42, 0x49, 0x73, 0x48, 0x61, 0x77, 0x49, 0x6e, 0x41, 0x43, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x42, 0x67, 0x43, 0x65, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x43, 0x69, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x43, 0x48, 0x77, 0x64, 0x72, 0x41, 0x69, 0x63, 0x41, 0x4c, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x45, 0x2f, 0x79, 0x38, 0x42, 0x64, 0x66, 0x2f, 0x2f, 0x2f, 0x2f, 0x34, 0x41, 0x41, 0x41, 0x4a, 0x67, 0x42, 0x32, 0x30, 0x43, 0x4a, 0x77, 0x41, 0x73, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x51, 0x66, 0x2f, 0x4c, 0x77, 0x46, 0x31, 0x2f, 0x2f, 0x38, 0x41, 0x42, 0x67, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x6c, 0x67, 0x48, 0x54, 0x67, 0x49, 0x6e, 0x41, 0x43, 0x77, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x41, 0x2f, 0x38, 0x76, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x41, 0x37, 0x41, 0x41, 0x41, 0x42, 0x75, 0x67, 0x64, 0x72, 0x41, 0x69, 0x63, 0x41, 0x4c, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x47, 0x2f, 0x79, 0x38, 0x42, 0x64, 0x66, 0x2f, 0x2f, 0x41, 0x48, 0x50, 0x2f, 0x34, 0x77, 0x58, 0x5a, 0x0a, 0x09, 0x42, 0x32, 0x73, 0x43, 0x4a, 0x77, 0x41, 0x79, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x51, 0x51, 0x42, 0x4a, 0x77, 0x46, 0x31, 0x2f, 0x2f, 0x38, 0x41, 0x63, 0x2f, 0x2f, 0x6a, 0x42, 0x64, 0x6b, 0x48, 0x62, 0x51, 0x49, 0x6e, 0x41, 0x44, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x42, 0x77, 0x45, 0x6e, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x42, 0x7a, 0x2f, 0x2b, 0x4d, 0x46, 0x32, 0x51, 0x64, 0x72, 0x0a, 0x09, 0x41, 0x69, 0x63, 0x41, 0x4d, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x47, 0x41, 0x53, 0x63, 0x42, 0x64, 0x66, 0x2f, 0x2f, 0x41, 0x4c, 0x4c, 0x2f, 0x34, 0x77, 0x55, 0x70, 0x42, 0x32, 0x73, 0x43, 0x4a, 0x77, 0x41, 0x34, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x51, 0x51, 0x41, 0x37, 0x67, 0x46, 0x31, 0x2f, 0x2f, 0x38, 0x41, 0x73, 0x76, 0x2f, 0x6a, 0x42, 0x53, 0x6b, 0x48, 0x62, 0x51, 0x49, 0x6e, 0x0a, 0x09, 0x41, 0x44, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x42, 0x77, 0x44, 0x75, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x43, 0x79, 0x2f, 0x2b, 0x4d, 0x46, 0x4b, 0x51, 0x64, 0x72, 0x41, 0x69, 0x63, 0x41, 0x4f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x47, 0x41, 0x4f, 0x34, 0x42, 0x64, 0x51, 0x41, 0x42, 0x41, 0x4d, 0x45, 0x41, 0x41, 0x41, 0x46, 0x35, 0x42, 0x47, 0x41, 0x41, 0x41, 0x77, 0x41, 0x67, 0x0a, 0x09, 0x74, 0x77, 0x43, 0x2f, 0x41, 0x67, 0x45, 0x49, 0x41, 0x45, 0x59, 0x45, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x44, 0x42, 0x41, 0x43, 0x78, 0x41, 0x46, 0x51, 0x41, 0x56, 0x51, 0x42, 0x57, 0x41, 0x46, 0x63, 0x41, 0x55, 0x46, 0x41, 0x56, 0x30, 0x54, 0x4d, 0x78, 0x45, 0x6a, 0x77, 0x62, 0x69, 0x34, 0x42, 0x47, 0x44, 0x37, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x51, 0x44, 0x42, 0x42, 0x4f, 0x34, 0x44, 0x50, 0x77, 0x5a, 0x6d, 0x0a, 0x09, 0x41, 0x41, 0x59, 0x41, 0x4e, 0x30, 0x41, 0x4d, 0x42, 0x41, 0x55, 0x43, 0x74, 0x41, 0x43, 0x7a, 0x42, 0x77, 0x51, 0x43, 0x64, 0x51, 0x59, 0x48, 0x45, 0x4e, 0x7a, 0x73, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x54, 0x73, 0x4d, 0x6a, 0x6b, 0x77, 0x41, 0x45, 0x75, 0x77, 0x43, 0x56, 0x52, 0x4c, 0x73, 0x41, 0x35, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x41, 0x66, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x41, 0x63, 0x41, 0x42, 0x77, 0x42, 0x41, 0x0a, 0x09, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x4d, 0x78, 0x4d, 0x6a, 0x4a, 0x77, 0x63, 0x6a, 0x41, 0x62, 0x61, 0x55, 0x39, 0x59, 0x75, 0x30, 0x74, 0x49, 0x73, 0x47, 0x5a, 0x76, 0x36, 0x49, 0x39, 0x66, 0x55, 0x41, 0x41, 0x51, 0x43, 0x32, 0x42, 0x52, 0x30, 0x44, 0x53, 0x67, 0x59, 0x33, 0x41, 0x42, 0x73, 0x41, 0x59, 0x30, 0x41, 0x6b, 0x41, 0x42, 0x49, 0x48, 0x44, 0x67, 0x73, 0x45, 0x41, 0x52, 0x49, 0x48, 0x44, 0x77, 0x73, 0x45, 0x0a, 0x09, 0x45, 0x73, 0x4d, 0x5a, 0x42, 0x77, 0x54, 0x44, 0x46, 0x51, 0x76, 0x74, 0x48, 0x41, 0x38, 0x42, 0x44, 0x67, 0x41, 0x48, 0x46, 0x56, 0x59, 0x57, 0x64, 0x77, 0x64, 0x57, 0x43, 0x48, 0x59, 0x63, 0x45, 0x50, 0x54, 0x73, 0x2f, 0x4f, 0x77, 0x52, 0x4f, 0x54, 0x6b, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x77, 0x38, 0x2f, 0x4e, 0x51, 0x38, 0x37, 0x42, 0x45, 0x53, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x52, 0x45, 0x53, 0x0a, 0x09, 0x4f, 0x54, 0x41, 0x41, 0x53, 0x37, 0x41, 0x4a, 0x56, 0x45, 0x75, 0x77, 0x44, 0x46, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x48, 0x50, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x48, 0x41, 0x41, 0x63, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x45, 0x6e, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x59, 0x48, 0x49, 0x7a, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x57, 0x48, 0x77, 0x45, 0x65, 0x41, 0x54, 0x4d, 0x79, 0x4e, 0x6a, 0x63, 0x7a, 0x0a, 0x09, 0x44, 0x67, 0x45, 0x6a, 0x49, 0x69, 0x59, 0x42, 0x2f, 0x44, 0x6b, 0x57, 0x49, 0x51, 0x30, 0x6d, 0x4a, 0x41, 0x4a, 0x39, 0x41, 0x6d, 0x5a, 0x62, 0x4a, 0x6b, 0x41, 0x6c, 0x4f, 0x52, 0x59, 0x68, 0x44, 0x53, 0x59, 0x6b, 0x41, 0x6e, 0x30, 0x43, 0x5a, 0x6c, 0x73, 0x6d, 0x51, 0x41, 0x56, 0x61, 0x4e, 0x78, 0x51, 0x54, 0x53, 0x56, 0x4b, 0x48, 0x6b, 0x78, 0x77, 0x68, 0x4e, 0x78, 0x51, 0x54, 0x53, 0x56, 0x4b, 0x48, 0x6b, 0x78, 0x77, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x31, 0x51, 0x56, 0x69, 0x41, 0x79, 0x73, 0x46, 0x39, 0x67, 0x41, 0x44, 0x41, 0x43, 0x2b, 0x33, 0x41, 0x75, 0x38, 0x41, 0x37, 0x67, 0x51, 0x42, 0x41, 0x41, 0x51, 0x51, 0x31, 0x4d, 0x77, 0x78, 0x41, 0x42, 0x44, 0x38, 0x37, 0x44, 0x41, 0x41, 0x53, 0x37, 0x41, 0x4a, 0x56, 0x45, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x42, 0x50, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x42, 0x41, 0x41, 0x45, 0x0a, 0x09, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x52, 0x4d, 0x68, 0x46, 0x53, 0x48, 0x56, 0x41, 0x6c, 0x62, 0x39, 0x71, 0x67, 0x58, 0x32, 0x6c, 0x41, 0x41, 0x41, 0x41, 0x51, 0x44, 0x48, 0x42, 0x53, 0x6b, 0x44, 0x4f, 0x51, 0x5a, 0x49, 0x41, 0x41, 0x30, 0x41, 0x56, 0x30, 0x41, 0x4f, 0x43, 0x2f, 0x41, 0x45, 0x42, 0x77, 0x43, 0x7a, 0x44, 0x67, 0x64, 0x57, 0x43, 0x41, 0x46, 0x57, 0x41, 0x41, 0x34, 0x51, 0x33, 0x4f, 0x7a, 0x55, 0x0a, 0x09, 0x37, 0x44, 0x45, 0x41, 0x45, 0x50, 0x51, 0x38, 0x31, 0x4f, 0x77, 0x77, 0x41, 0x45, 0x75, 0x77, 0x43, 0x56, 0x52, 0x59, 0x76, 0x51, 0x41, 0x4f, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4f, 0x41, 0x41, 0x34, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x45, 0x75, 0x77, 0x44, 0x31, 0x52, 0x4c, 0x73, 0x42, 0x42, 0x55, 0x57, 0x30, 0x75, 0x77, 0x45, 0x56, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x44, 0x67, 0x42, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x44, 0x67, 0x41, 0x4f, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x52, 0x4d, 0x7a, 0x48, 0x67, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x33, 0x4d, 0x77, 0x34, 0x42, 0x49, 0x79, 0x49, 0x6d, 0x78, 0x33, 0x59, 0x4c, 0x59, 0x56, 0x64, 0x57, 0x59, 0x41, 0x31, 0x32, 0x43, 0x70, 0x36, 0x52, 0x6b, 0x5a, 0x34, 0x47, 0x53, 0x45, 0x74, 0x4c, 0x53, 0x6b, 0x79, 0x50, 0x6b, 0x4a, 0x41, 0x41, 0x41, 0x51, 0x47, 0x61, 0x0a, 0x09, 0x42, 0x55, 0x51, 0x43, 0x5a, 0x67, 0x59, 0x51, 0x41, 0x41, 0x4d, 0x41, 0x4c, 0x45, 0x41, 0x4a, 0x41, 0x73, 0x34, 0x41, 0x7a, 0x51, 0x51, 0x42, 0x5a, 0x41, 0x41, 0x45, 0x45, 0x4e, 0x54, 0x73, 0x4d, 0x51, 0x41, 0x51, 0x2f, 0x4f, 0x77, 0x77, 0x41, 0x45, 0x75, 0x77, 0x43, 0x56, 0x52, 0x59, 0x76, 0x51, 0x41, 0x45, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x45, 0x41, 0x41, 0x51, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x0a, 0x09, 0x41, 0x54, 0x4d, 0x56, 0x49, 0x77, 0x47, 0x61, 0x7a, 0x4d, 0x77, 0x47, 0x45, 0x4d, 0x77, 0x41, 0x41, 0x41, 0x49, 0x41, 0x37, 0x67, 0x54, 0x68, 0x41, 0x78, 0x49, 0x48, 0x42, 0x67, 0x41, 0x4c, 0x41, 0x42, 0x63, 0x41, 0x58, 0x30, 0x41, 0x52, 0x41, 0x38, 0x45, 0x56, 0x38, 0x67, 0x6e, 0x42, 0x44, 0x2f, 0x45, 0x59, 0x41, 0x46, 0x59, 0x4d, 0x65, 0x41, 0x5a, 0x57, 0x45, 0x68, 0x67, 0x51, 0x31, 0x4f, 0x7a, 0x30, 0x37, 0x44, 0x45, 0x41, 0x0a, 0x09, 0x45, 0x50, 0x54, 0x73, 0x39, 0x4f, 0x77, 0x77, 0x41, 0x45, 0x75, 0x77, 0x43, 0x56, 0x52, 0x4c, 0x73, 0x41, 0x78, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x42, 0x6a, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x42, 0x67, 0x41, 0x47, 0x41, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x53, 0x37, 0x41, 0x4b, 0x56, 0x45, 0x75, 0x77, 0x43, 0x31, 0x52, 0x62, 0x53, 0x37, 0x41, 0x4d, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x59, 0x0a, 0x09, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x59, 0x41, 0x42, 0x67, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x54, 0x51, 0x6d, 0x49, 0x79, 0x49, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x78, 0x51, 0x47, 0x49, 0x79, 0x49, 0x6d, 0x4e, 0x54, 0x51, 0x32, 0x4d, 0x7a, 0x49, 0x57, 0x41, 0x70, 0x68, 0x59, 0x51, 0x45, 0x46, 0x58, 0x56, 0x30, 0x46, 0x41, 0x57, 0x48, 0x71, 0x66, 0x63, 0x33, 0x4f, 0x66, 0x0a, 0x09, 0x6e, 0x33, 0x4e, 0x7a, 0x6e, 0x77, 0x58, 0x30, 0x50, 0x31, 0x68, 0x58, 0x51, 0x45, 0x46, 0x58, 0x57, 0x45, 0x42, 0x7a, 0x6f, 0x4b, 0x42, 0x7a, 0x63, 0x35, 0x2b, 0x66, 0x41, 0x41, 0x41, 0x42, 0x41, 0x53, 0x50, 0x2b, 0x64, 0x51, 0x4c, 0x42, 0x41, 0x41, 0x41, 0x41, 0x45, 0x77, 0x41, 0x66, 0x51, 0x41, 0x34, 0x4a, 0x42, 0x67, 0x6f, 0x4e, 0x38, 0x77, 0x59, 0x41, 0x45, 0x77, 0x41, 0x51, 0x4a, 0x77, 0x4d, 0x4a, 0x46, 0x42, 0x44, 0x63, 0x0a, 0x09, 0x31, 0x4f, 0x7a, 0x55, 0x7a, 0x44, 0x45, 0x41, 0x4c, 0x39, 0x54, 0x38, 0x78, 0x42, 0x49, 0x35, 0x4d, 0x43, 0x45, 0x57, 0x46, 0x68, 0x55, 0x55, 0x42, 0x69, 0x4d, 0x69, 0x4a, 0x69, 0x63, 0x31, 0x46, 0x68, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x6e, 0x41, 0x6c, 0x51, 0x33, 0x4e, 0x6e, 0x68, 0x32, 0x4c, 0x6c, 0x63, 0x72, 0x49, 0x6b, 0x6f, 0x76, 0x4f, 0x7a, 0x77, 0x72, 0x4c, 0x54, 0x35, 0x70, 0x4d, 0x46, 0x6c, 0x62, 0x0a, 0x09, 0x44, 0x41, 0x79, 0x44, 0x45, 0x51, 0x38, 0x77, 0x4c, 0x68, 0x35, 0x58, 0x50, 0x51, 0x41, 0x43, 0x41, 0x50, 0x41, 0x45, 0x37, 0x67, 0x4f, 0x75, 0x42, 0x6d, 0x59, 0x41, 0x41, 0x77, 0x41, 0x48, 0x41, 0x45, 0x4a, 0x41, 0x45, 0x51, 0x59, 0x43, 0x74, 0x41, 0x51, 0x41, 0x73, 0x77, 0x67, 0x45, 0x42, 0x77, 0x4d, 0x41, 0x42, 0x51, 0x45, 0x44, 0x42, 0x51, 0x63, 0x49, 0x45, 0x4e, 0x54, 0x63, 0x31, 0x4d, 0x77, 0x52, 0x4f, 0x52, 0x45, 0x53, 0x0a, 0x09, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x51, 0x38, 0x37, 0x44, 0x49, 0x77, 0x41, 0x45, 0x75, 0x77, 0x43, 0x56, 0x52, 0x4c, 0x73, 0x41, 0x35, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x41, 0x6a, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x41, 0x67, 0x41, 0x43, 0x41, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x4d, 0x77, 0x4d, 0x6a, 0x41, 0x7a, 0x4d, 0x44, 0x49, 0x77, 0x4c, 0x38, 0x73, 0x76, 0x69, 0x48, 0x67, 0x61, 0x72, 0x66, 0x0a, 0x09, 0x69, 0x51, 0x5a, 0x6d, 0x2f, 0x6f, 0x67, 0x42, 0x65, 0x50, 0x36, 0x49, 0x41, 0x41, 0x41, 0x42, 0x41, 0x55, 0x7a, 0x2b, 0x64, 0x51, 0x4c, 0x42, 0x41, 0x41, 0x41, 0x41, 0x45, 0x77, 0x41, 0x67, 0x51, 0x41, 0x38, 0x4c, 0x44, 0x67, 0x6f, 0x48, 0x38, 0x77, 0x37, 0x30, 0x41, 0x41, 0x45, 0x41, 0x43, 0x67, 0x51, 0x6e, 0x45, 0x52, 0x51, 0x51, 0x31, 0x4f, 0x7a, 0x45, 0x31, 0x4d, 0x77, 0x78, 0x41, 0x43, 0x2f, 0x38, 0x2f, 0x4d, 0x51, 0x53, 0x0a, 0x09, 0x4f, 0x54, 0x41, 0x68, 0x4d, 0x77, 0x59, 0x47, 0x46, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x78, 0x55, 0x47, 0x42, 0x69, 0x4d, 0x69, 0x4a, 0x6a, 0x55, 0x30, 0x4e, 0x67, 0x47, 0x34, 0x64, 0x79, 0x30, 0x72, 0x4e, 0x7a, 0x59, 0x67, 0x50, 0x68, 0x38, 0x6d, 0x52, 0x42, 0x35, 0x36, 0x63, 0x7a, 0x55, 0x39, 0x57, 0x42, 0x38, 0x75, 0x4c, 0x67, 0x38, 0x50, 0x68, 0x51, 0x6f, 0x4b, 0x56, 0x31, 0x30, 0x77, 0x61, 0x51, 0x41, 0x42, 0x0a, 0x09, 0x41, 0x4d, 0x45, 0x45, 0x37, 0x67, 0x4d, 0x2f, 0x42, 0x6d, 0x59, 0x41, 0x42, 0x67, 0x41, 0x33, 0x51, 0x41, 0x77, 0x44, 0x41, 0x4c, 0x51, 0x45, 0x41, 0x62, 0x4d, 0x48, 0x41, 0x77, 0x56, 0x31, 0x41, 0x51, 0x63, 0x51, 0x33, 0x4f, 0x77, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x39, 0x44, 0x7a, 0x73, 0x4f, 0x54, 0x41, 0x41, 0x53, 0x37, 0x41, 0x4a, 0x56, 0x45, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x62, 0x57, 0x4c, 0x30, 0x41, 0x42, 0x2f, 0x2f, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x42, 0x77, 0x41, 0x48, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x45, 0x44, 0x4d, 0x78, 0x63, 0x33, 0x4d, 0x77, 0x4d, 0x42, 0x74, 0x76, 0x57, 0x4c, 0x74, 0x4c, 0x53, 0x4c, 0x39, 0x51, 0x54, 0x75, 0x41, 0x58, 0x6a, 0x31, 0x39, 0x66, 0x36, 0x49, 0x41, 0x41, 0x48, 0x2f, 0x38, 0x67, 0x41, 0x41, 0x42, 0x48, 0x55, 0x46, 0x31, 0x51, 0x41, 0x4e, 0x41, 0x44, 0x39, 0x41, 0x48, 0x67, 0x77, 0x4c, 0x0a, 0x09, 0x43, 0x67, 0x51, 0x44, 0x41, 0x67, 0x59, 0x41, 0x42, 0x70, 0x55, 0x41, 0x67, 0x51, 0x67, 0x44, 0x42, 0x41, 0x45, 0x4c, 0x44, 0x67, 0x41, 0x45, 0x42, 0x51, 0x45, 0x63, 0x44, 0x41, 0x63, 0x36, 0x43, 0x51, 0x42, 0x35, 0x44, 0x68, 0x44, 0x30, 0x50, 0x4f, 0x7a, 0x45, 0x2f, 0x44, 0x7a, 0x45, 0x45, 0x52, 0x49, 0x35, 0x45, 0x52, 0x49, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x35, 0x4f, 0x77, 0x52, 0x46, 0x7a, 0x6b, 0x77, 0x74, 0x44, 0x41, 0x50, 0x0a, 0x09, 0x55, 0x41, 0x38, 0x43, 0x41, 0x56, 0x30, 0x54, 0x4d, 0x78, 0x45, 0x6c, 0x46, 0x77, 0x45, 0x52, 0x49, 0x52, 0x55, 0x68, 0x45, 0x51, 0x63, 0x6e, 0x4e, 0x39, 0x50, 0x4c, 0x41, 0x54, 0x6c, 0x51, 0x2f, 0x6e, 0x63, 0x43, 0x31, 0x2f, 0x78, 0x65, 0x6c, 0x45, 0x33, 0x68, 0x42, 0x64, 0x58, 0x39, 0x6d, 0x4e, 0x74, 0x76, 0x2f, 0x75, 0x37, 0x39, 0x34, 0x36, 0x6f, 0x43, 0x4f, 0x32, 0x70, 0x75, 0x6e, 0x67, 0x41, 0x41, 0x41, 0x51, 0x41, 0x43, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x43, 0x53, 0x41, 0x59, 0x55, 0x41, 0x41, 0x73, 0x41, 0x58, 0x6b, 0x41, 0x61, 0x43, 0x67, 0x6b, 0x49, 0x42, 0x41, 0x4d, 0x43, 0x42, 0x67, 0x43, 0x58, 0x42, 0x67, 0x4d, 0x45, 0x41, 0x51, 0x6b, 0x4b, 0x41, 0x41, 0x52, 0x36, 0x42, 0x51, 0x45, 0x49, 0x43, 0x6e, 0x6f, 0x48, 0x41, 0x41, 0x77, 0x51, 0x31, 0x44, 0x7a, 0x6b, 0x2f, 0x44, 0x7a, 0x6b, 0x45, 0x52, 0x49, 0x35, 0x45, 0x52, 0x49, 0x35, 0x4d, 0x51, 0x41, 0x76, 0x0a, 0x09, 0x37, 0x42, 0x63, 0x35, 0x4d, 0x41, 0x46, 0x4c, 0x73, 0x42, 0x42, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x44, 0x41, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x44, 0x41, 0x41, 0x4d, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x55, 0x41, 0x54, 0x45, 0x41, 0x31, 0x41, 0x44, 0x56, 0x41, 0x4e, 0x59, 0x41, 0x31, 0x7a, 0x42, 0x48, 0x6f, 0x4b, 0x63, 0x41, 0x33, 0x67, 0x44, 0x66, 0x41, 0x4e, 0x43, 0x56, 0x30, 0x54, 0x4d, 0x78, 0x45, 0x33, 0x0a, 0x09, 0x46, 0x77, 0x63, 0x52, 0x49, 0x78, 0x45, 0x48, 0x4a, 0x7a, 0x66, 0x48, 0x75, 0x48, 0x31, 0x4d, 0x79, 0x62, 0x68, 0x37, 0x53, 0x73, 0x55, 0x47, 0x46, 0x50, 0x32, 0x6d, 0x57, 0x6d, 0x71, 0x4e, 0x2f, 0x4f, 0x4d, 0x43, 0x6d, 0x6c, 0x68, 0x71, 0x6a, 0x51, 0x44, 0x2f, 0x2f, 0x77, 0x43, 0x48, 0x2f, 0x2b, 0x4d, 0x45, 0x6f, 0x67, 0x64, 0x74, 0x41, 0x69, 0x63, 0x41, 0x4e, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x49, 0x0a, 0x09, 0x41, 0x49, 0x73, 0x42, 0x64, 0x66, 0x2f, 0x2f, 0x41, 0x47, 0x2f, 0x2f, 0x34, 0x77, 0x50, 0x48, 0x42, 0x6d, 0x59, 0x43, 0x4a, 0x77, 0x42, 0x57, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x4f, 0x41, 0x41, 0x46, 0x77, 0x41, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x58, 0x41, 0x41, 0x41, 0x42, 0x52, 0x38, 0x48, 0x62, 0x51, 0x49, 0x6e, 0x41, 0x44, 0x30, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x43, 0x41, 0x43, 0x2b, 0x0a, 0x09, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x42, 0x59, 0x41, 0x41, 0x41, 0x44, 0x32, 0x77, 0x5a, 0x6d, 0x41, 0x69, 0x63, 0x41, 0x58, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x44, 0x67, 0x41, 0x42, 0x73, 0x41, 0x41, 0x41, 0x41, 0x43, 0x41, 0x51, 0x54, 0x2b, 0x6f, 0x67, 0x47, 0x75, 0x42, 0x5a, 0x67, 0x41, 0x41, 0x77, 0x41, 0x48, 0x41, 0x42, 0x78, 0x41, 0x44, 0x51, 0x48, 0x31, 0x41, 0x41, 0x54, 0x31, 0x42, 0x51, 0x67, 0x45, 0x0a, 0x09, 0x41, 0x41, 0x55, 0x47, 0x41, 0x67, 0x67, 0x51, 0x33, 0x44, 0x7a, 0x73, 0x4d, 0x6a, 0x45, 0x41, 0x45, 0x4e, 0x54, 0x73, 0x31, 0x4f, 0x77, 0x77, 0x41, 0x52, 0x45, 0x6a, 0x45, 0x52, 0x4d, 0x52, 0x49, 0x78, 0x45, 0x42, 0x72, 0x71, 0x71, 0x71, 0x71, 0x67, 0x47, 0x59, 0x2f, 0x51, 0x6f, 0x43, 0x39, 0x67, 0x51, 0x41, 0x2f, 0x51, 0x6f, 0x43, 0x39, 0x67, 0x41, 0x41, 0x41, 0x67, 0x41, 0x4b, 0x41, 0x41, 0x41, 0x46, 0x75, 0x67, 0x58, 0x56, 0x0a, 0x09, 0x41, 0x41, 0x77, 0x41, 0x47, 0x51, 0x42, 0x6e, 0x51, 0x43, 0x41, 0x51, 0x43, 0x61, 0x6b, 0x4c, 0x44, 0x5a, 0x55, 0x41, 0x67, 0x52, 0x4b, 0x56, 0x44, 0x67, 0x73, 0x48, 0x42, 0x77, 0x45, 0x5a, 0x45, 0x77, 0x51, 0x50, 0x44, 0x52, 0x59, 0x5a, 0x42, 0x44, 0x49, 0x4b, 0x45, 0x51, 0x30, 0x63, 0x43, 0x41, 0x42, 0x35, 0x47, 0x68, 0x44, 0x30, 0x50, 0x4f, 0x77, 0x79, 0x78, 0x50, 0x54, 0x73, 0x45, 0x4d, 0x51, 0x58, 0x4f, 0x54, 0x45, 0x41, 0x0a, 0x09, 0x4c, 0x38, 0x59, 0x79, 0x37, 0x76, 0x62, 0x75, 0x45, 0x4f, 0x34, 0x79, 0x4d, 0x45, 0x41, 0x6f, 0x49, 0x42, 0x74, 0x2f, 0x47, 0x37, 0x41, 0x62, 0x41, 0x35, 0x38, 0x4a, 0x6e, 0x77, 0x71, 0x66, 0x43, 0x35, 0x38, 0x4d, 0x6e, 0x77, 0x36, 0x66, 0x44, 0x35, 0x38, 0x51, 0x6e, 0x78, 0x47, 0x2f, 0x43, 0x62, 0x38, 0x4b, 0x76, 0x77, 0x75, 0x2f, 0x44, 0x4c, 0x38, 0x4f, 0x76, 0x77, 0x2b, 0x2f, 0x45, 0x4c, 0x38, 0x52, 0x45, 0x46, 0x30, 0x42, 0x0a, 0x09, 0x58, 0x52, 0x4d, 0x68, 0x49, 0x41, 0x41, 0x52, 0x45, 0x41, 0x41, 0x70, 0x41, 0x52, 0x45, 0x6a, 0x4e, 0x54, 0x4d, 0x54, 0x45, 0x53, 0x45, 0x56, 0x49, 0x52, 0x45, 0x7a, 0x49, 0x41, 0x41, 0x52, 0x45, 0x41, 0x41, 0x68, 0x30, 0x77, 0x47, 0x67, 0x41, 0x62, 0x45, 0x42, 0x6c, 0x76, 0x35, 0x70, 0x2f, 0x6c, 0x44, 0x2b, 0x59, 0x4d, 0x6e, 0x4a, 0x79, 0x77, 0x46, 0x51, 0x2f, 0x72, 0x44, 0x7a, 0x41, 0x54, 0x55, 0x42, 0x48, 0x2f, 0x37, 0x68, 0x0a, 0x09, 0x2f, 0x73, 0x73, 0x46, 0x31, 0x66, 0x36, 0x58, 0x2f, 0x6f, 0x44, 0x2b, 0x66, 0x76, 0x36, 0x57, 0x41, 0x72, 0x79, 0x51, 0x41, 0x65, 0x50, 0x2b, 0x48, 0x5a, 0x44, 0x39, 0x36, 0x67, 0x45, 0x59, 0x41, 0x53, 0x34, 0x42, 0x4c, 0x41, 0x45, 0x58, 0x41, 0x41, 0x49, 0x41, 0x63, 0x66, 0x2f, 0x6a, 0x42, 0x48, 0x55, 0x47, 0x46, 0x41, 0x41, 0x4f, 0x41, 0x43, 0x67, 0x42, 0x4a, 0x30, 0x42, 0x65, 0x4a, 0x58, 0x73, 0x6d, 0x4a, 0x52, 0x34, 0x6a, 0x0a, 0x09, 0x48, 0x69, 0x52, 0x37, 0x49, 0x79, 0x4d, 0x65, 0x44, 0x33, 0x73, 0x6a, 0x48, 0x69, 0x68, 0x37, 0x4a, 0x79, 0x67, 0x65, 0x49, 0x78, 0x34, 0x6d, 0x4a, 0x79, 0x67, 0x6e, 0x4a, 0x53, 0x51, 0x6c, 0x4b, 0x43, 0x67, 0x6e, 0x49, 0x69, 0x4d, 0x69, 0x48, 0x79, 0x41, 0x66, 0x49, 0x53, 0x41, 0x67, 0x48, 0x30, 0x49, 0x6f, 0x4a, 0x79, 0x59, 0x6c, 0x49, 0x69, 0x45, 0x67, 0x48, 0x77, 0x67, 0x6a, 0x48, 0x67, 0x4d, 0x50, 0x49, 0x77, 0x4f, 0x35, 0x0a, 0x09, 0x47, 0x77, 0x6d, 0x35, 0x46, 0x59, 0x77, 0x62, 0x49, 0x37, 0x45, 0x70, 0x4a, 0x69, 0x63, 0x53, 0x44, 0x43, 0x45, 0x67, 0x47, 0x43, 0x67, 0x6c, 0x49, 0x79, 0x49, 0x66, 0x42, 0x52, 0x34, 0x50, 0x42, 0x67, 0x77, 0x53, 0x45, 0x6c, 0x45, 0x47, 0x45, 0x68, 0x68, 0x46, 0x4b, 0x52, 0x44, 0x38, 0x37, 0x50, 0x54, 0x73, 0x45, 0x54, 0x6b, 0x35, 0x46, 0x7a, 0x6b, 0x53, 0x4f, 0x54, 0x6b, 0x52, 0x45, 0x6a, 0x6b, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x0a, 0x09, 0x37, 0x4d, 0x54, 0x30, 0x37, 0x42, 0x44, 0x75, 0x45, 0x6a, 0x6b, 0x53, 0x4f, 0x52, 0x49, 0x58, 0x4f, 0x54, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x37, 0x4a, 0x42, 0x78, 0x41, 0x49, 0x79, 0x51, 0x63, 0x51, 0x43, 0x4d, 0x6b, 0x48, 0x45, 0x41, 0x37, 0x4a, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x4f, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x57, 0x53, 0x4b, 0x79, 0x50, 0x79, 0x6f, 0x42, 0x0a, 0x09, 0x41, 0x56, 0x31, 0x41, 0x64, 0x68, 0x59, 0x6c, 0x4b, 0x78, 0x38, 0x6f, 0x49, 0x69, 0x38, 0x6a, 0x4c, 0x79, 0x51, 0x70, 0x4a, 0x53, 0x30, 0x6d, 0x4c, 0x53, 0x63, 0x71, 0x4b, 0x44, 0x59, 0x6c, 0x52, 0x69, 0x56, 0x59, 0x49, 0x46, 0x67, 0x68, 0x59, 0x43, 0x42, 0x67, 0x49, 0x57, 0x59, 0x69, 0x64, 0x53, 0x42, 0x31, 0x49, 0x58, 0x55, 0x69, 0x45, 0x79, 0x55, 0x6a, 0x4a, 0x53, 0x51, 0x6d, 0x4a, 0x69, 0x59, 0x6e, 0x4a, 0x79, 0x67, 0x32, 0x0a, 0x09, 0x4a, 0x44, 0x59, 0x6c, 0x52, 0x69, 0x52, 0x46, 0x4a, 0x56, 0x6f, 0x67, 0x57, 0x69, 0x46, 0x69, 0x49, 0x47, 0x49, 0x68, 0x66, 0x77, 0x42, 0x2f, 0x41, 0x58, 0x38, 0x43, 0x65, 0x67, 0x4e, 0x37, 0x43, 0x58, 0x38, 0x4b, 0x66, 0x77, 0x74, 0x2f, 0x44, 0x48, 0x38, 0x4e, 0x66, 0x77, 0x35, 0x2f, 0x44, 0x33, 0x38, 0x51, 0x66, 0x78, 0x46, 0x2f, 0x45, 0x6e, 0x38, 0x54, 0x66, 0x78, 0x52, 0x37, 0x46, 0x58, 0x6f, 0x62, 0x65, 0x68, 0x78, 0x2f, 0x0a, 0x09, 0x48, 0x58, 0x38, 0x65, 0x64, 0x69, 0x42, 0x32, 0x49, 0x58, 0x67, 0x69, 0x6f, 0x43, 0x72, 0x77, 0x4b, 0x69, 0x64, 0x64, 0x41, 0x46, 0x30, 0x42, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x59, 0x56, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x31, 0x4e, 0x43, 0x59, 0x54, 0x46, 0x68, 0x49, 0x56, 0x46, 0x41, 0x41, 0x6a, 0x49, 0x67, 0x41, 0x31, 0x4e, 0x41, 0x41, 0x7a, 0x4d, 0x68, 0x59, 0x58, 0x4a, 0x77, 0x55, 0x6e, 0x4a, 0x53, 0x63, 0x7a, 0x0a, 0x09, 0x46, 0x79, 0x55, 0x58, 0x42, 0x51, 0x4e, 0x47, 0x4d, 0x6c, 0x67, 0x70, 0x70, 0x37, 0x6d, 0x75, 0x6b, 0x70, 0x47, 0x75, 0x4e, 0x67, 0x6c, 0x2b, 0x63, 0x76, 0x37, 0x6b, 0x35, 0x75, 0x66, 0x2b, 0x35, 0x51, 0x45, 0x55, 0x33, 0x52, 0x49, 0x30, 0x4b, 0x70, 0x2f, 0x2b, 0x77, 0x53, 0x45, 0x42, 0x47, 0x62, 0x58, 0x6b, 0x66, 0x77, 0x46, 0x4e, 0x49, 0x66, 0x37, 0x5a, 0x41, 0x35, 0x4d, 0x52, 0x45, 0x4e, 0x6a, 0x44, 0x76, 0x4e, 0x37, 0x65, 0x0a, 0x09, 0x76, 0x48, 0x71, 0x38, 0x41, 0x53, 0x61, 0x50, 0x2f, 0x75, 0x43, 0x74, 0x2f, 0x2f, 0x37, 0x4a, 0x41, 0x54, 0x66, 0x2f, 0x2b, 0x67, 0x45, 0x33, 0x42, 0x51, 0x57, 0x30, 0x61, 0x32, 0x4e, 0x63, 0x7a, 0x4a, 0x46, 0x76, 0x59, 0x57, 0x49, 0x41, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x41, 0x41, 0x41, 0x42, 0x4f, 0x63, 0x48, 0x61, 0x77, 0x49, 0x6e, 0x41, 0x44, 0x77, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x42, 0x41, 0x42, 0x7a, 0x0a, 0x09, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x41, 0x39, 0x2f, 0x6c, 0x59, 0x45, 0x66, 0x77, 0x5a, 0x6d, 0x41, 0x69, 0x63, 0x41, 0x58, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x43, 0x4e, 0x41, 0x46, 0x34, 0x41, 0x41, 0x41, 0x41, 0x43, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x53, 0x4e, 0x42, 0x64, 0x55, 0x41, 0x44, 0x41, 0x41, 0x56, 0x41, 0x44, 0x31, 0x41, 0x47, 0x77, 0x36, 0x56, 0x43, 0x51, 0x32, 0x56, 0x41, 0x76, 0x59, 0x41, 0x0a, 0x09, 0x67, 0x51, 0x73, 0x56, 0x44, 0x77, 0x6b, 0x44, 0x42, 0x41, 0x45, 0x53, 0x47, 0x51, 0x59, 0x2f, 0x44, 0x51, 0x6f, 0x42, 0x48, 0x41, 0x41, 0x45, 0x46, 0x68, 0x44, 0x38, 0x37, 0x44, 0x49, 0x79, 0x2f, 0x4f, 0x77, 0x52, 0x46, 0x7a, 0x6b, 0x78, 0x41, 0x43, 0x2f, 0x30, 0x2f, 0x4f, 0x7a, 0x55, 0x37, 0x44, 0x42, 0x41, 0x43, 0x51, 0x38, 0x58, 0x48, 0x78, 0x63, 0x2f, 0x46, 0x31, 0x38, 0x58, 0x42, 0x41, 0x46, 0x64, 0x45, 0x7a, 0x4d, 0x52, 0x0a, 0x09, 0x4d, 0x7a, 0x49, 0x45, 0x46, 0x52, 0x51, 0x45, 0x4b, 0x77, 0x45, 0x52, 0x49, 0x78, 0x4d, 0x52, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x49, 0x38, 0x6e, 0x4b, 0x2f, 0x76, 0x73, 0x42, 0x41, 0x66, 0x37, 0x2f, 0x2b, 0x2f, 0x37, 0x4b, 0x79, 0x76, 0x36, 0x4e, 0x6d, 0x70, 0x6d, 0x4f, 0x42, 0x64, 0x58, 0x2b, 0x2b, 0x4f, 0x48, 0x63, 0x33, 0x4f, 0x4c, 0x2b, 0x72, 0x67, 0x51, 0x6e, 0x2f, 0x64, 0x47, 0x53, 0x68, 0x6f, 0x61, 0x52, 0x0a, 0x09, 0x41, 0x41, 0x49, 0x41, 0x75, 0x76, 0x35, 0x57, 0x42, 0x4b, 0x51, 0x47, 0x46, 0x41, 0x41, 0x51, 0x41, 0x42, 0x77, 0x41, 0x50, 0x6b, 0x41, 0x62, 0x46, 0x4c, 0x6b, 0x46, 0x43, 0x42, 0x71, 0x35, 0x41, 0x41, 0x36, 0x4d, 0x43, 0x4c, 0x67, 0x42, 0x76, 0x51, 0x4f, 0x58, 0x48, 0x52, 0x45, 0x53, 0x43, 0x30, 0x63, 0x58, 0x42, 0x41, 0x41, 0x49, 0x41, 0x6b, 0x59, 0x64, 0x45, 0x50, 0x7a, 0x73, 0x4d, 0x6a, 0x4c, 0x30, 0x37, 0x44, 0x45, 0x41, 0x0a, 0x09, 0x45, 0x4f, 0x7a, 0x6b, 0x35, 0x50, 0x54, 0x45, 0x37, 0x42, 0x44, 0x47, 0x37, 0x6a, 0x42, 0x41, 0x43, 0x57, 0x41, 0x65, 0x67, 0x42, 0x36, 0x67, 0x48, 0x75, 0x41, 0x65, 0x42, 0x41, 0x46, 0x64, 0x4a, 0x52, 0x45, 0x6a, 0x45, 0x54, 0x4d, 0x52, 0x50, 0x67, 0x45, 0x7a, 0x4d, 0x68, 0x49, 0x52, 0x45, 0x41, 0x49, 0x6a, 0x49, 0x69, 0x59, 0x42, 0x4e, 0x43, 0x59, 0x6a, 0x49, 0x67, 0x59, 0x56, 0x46, 0x42, 0x59, 0x7a, 0x4d, 0x6a, 0x59, 0x42, 0x0a, 0x09, 0x63, 0x37, 0x6d, 0x35, 0x4f, 0x72, 0x46, 0x37, 0x7a, 0x50, 0x2f, 0x2f, 0x7a, 0x48, 0x75, 0x78, 0x41, 0x6a, 0x69, 0x6e, 0x6b, 0x70, 0x4b, 0x6e, 0x70, 0x35, 0x4b, 0x53, 0x70, 0x36, 0x6a, 0x39, 0x72, 0x67, 0x65, 0x2b, 0x2f, 0x61, 0x4a, 0x6b, 0x59, 0x66, 0x36, 0x38, 0x2f, 0x76, 0x6a, 0x2b, 0x2b, 0x50, 0x36, 0x38, 0x59, 0x51, 0x48, 0x72, 0x79, 0x2b, 0x66, 0x6e, 0x79, 0x38, 0x76, 0x6e, 0x35, 0x77, 0x41, 0x41, 0x41, 0x51, 0x44, 0x5a, 0x0a, 0x09, 0x41, 0x69, 0x30, 0x46, 0x32, 0x77, 0x4c, 0x58, 0x41, 0x41, 0x4d, 0x41, 0x45, 0x62, 0x59, 0x41, 0x6e, 0x41, 0x49, 0x45, 0x41, 0x51, 0x41, 0x45, 0x45, 0x4e, 0x54, 0x45, 0x4d, 0x51, 0x41, 0x51, 0x31, 0x4f, 0x77, 0x77, 0x45, 0x79, 0x45, 0x56, 0x49, 0x64, 0x6b, 0x46, 0x41, 0x76, 0x72, 0x2b, 0x41, 0x74, 0x65, 0x71, 0x41, 0x41, 0x41, 0x42, 0x41, 0x52, 0x6b, 0x41, 0x50, 0x77, 0x57, 0x63, 0x42, 0x4d, 0x55, 0x41, 0x43, 0x77, 0x43, 0x46, 0x0a, 0x09, 0x51, 0x45, 0x30, 0x4b, 0x6e, 0x41, 0x73, 0x4b, 0x42, 0x77, 0x67, 0x48, 0x43, 0x5a, 0x77, 0x49, 0x43, 0x41, 0x63, 0x45, 0x6e, 0x41, 0x4d, 0x45, 0x42, 0x77, 0x63, 0x47, 0x42, 0x5a, 0x77, 0x47, 0x42, 0x77, 0x59, 0x45, 0x6e, 0x41, 0x55, 0x45, 0x41, 0x51, 0x49, 0x42, 0x41, 0x35, 0x77, 0x43, 0x41, 0x67, 0x45, 0x4c, 0x6e, 0x41, 0x41, 0x42, 0x41, 0x41, 0x71, 0x63, 0x43, 0x51, 0x6f, 0x42, 0x41, 0x51, 0x42, 0x43, 0x43, 0x67, 0x67, 0x48, 0x0a, 0x09, 0x42, 0x67, 0x51, 0x43, 0x41, 0x51, 0x41, 0x49, 0x42, 0x51, 0x4d, 0x4c, 0x43, 0x51, 0x77, 0x4c, 0x43, 0x67, 0x6b, 0x48, 0x42, 0x51, 0x51, 0x44, 0x41, 0x51, 0x67, 0x43, 0x41, 0x41, 0x67, 0x47, 0x44, 0x42, 0x44, 0x55, 0x50, 0x4d, 0x77, 0x79, 0x46, 0x7a, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x55, 0x50, 0x4d, 0x77, 0x79, 0x46, 0x7a, 0x6b, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x0a, 0x09, 0x45, 0x41, 0x58, 0x74, 0x42, 0x78, 0x41, 0x49, 0x37, 0x51, 0x63, 0x51, 0x42, 0x65, 0x30, 0x48, 0x45, 0x41, 0x6a, 0x74, 0x42, 0x78, 0x41, 0x46, 0x37, 0x51, 0x63, 0x51, 0x43, 0x4f, 0x31, 0x5a, 0x49, 0x67, 0x6b, 0x43, 0x42, 0x77, 0x45, 0x42, 0x4a, 0x77, 0x45, 0x42, 0x4e, 0x77, 0x45, 0x42, 0x42, 0x5a, 0x7a, 0x2b, 0x4e, 0x77, 0x48, 0x4a, 0x64, 0x2f, 0x34, 0x31, 0x2f, 0x6a, 0x56, 0x32, 0x41, 0x63, 0x6a, 0x2b, 0x4f, 0x48, 0x59, 0x42, 0x0a, 0x09, 0x79, 0x77, 0x48, 0x4c, 0x42, 0x45, 0x7a, 0x2b, 0x4e, 0x66, 0x34, 0x33, 0x65, 0x51, 0x48, 0x4c, 0x2f, 0x6a, 0x56, 0x35, 0x41, 0x63, 0x6b, 0x42, 0x79, 0x33, 0x6e, 0x2b, 0x4e, 0x51, 0x48, 0x4c, 0x41, 0x41, 0x45, 0x41, 0x69, 0x51, 0x4b, 0x63, 0x41, 0x73, 0x55, 0x46, 0x33, 0x77, 0x41, 0x4b, 0x41, 0x43, 0x78, 0x41, 0x47, 0x41, 0x63, 0x41, 0x33, 0x51, 0x6b, 0x44, 0x33, 0x51, 0x51, 0x43, 0x33, 0x51, 0x6e, 0x33, 0x42, 0x5a, 0x45, 0x4c, 0x0a, 0x09, 0x43, 0x48, 0x77, 0x47, 0x58, 0x51, 0x4e, 0x38, 0x41, 0x58, 0x77, 0x41, 0x43, 0x78, 0x44, 0x63, 0x39, 0x4f, 0x54, 0x38, 0x35, 0x44, 0x45, 0x41, 0x45, 0x50, 0x54, 0x73, 0x37, 0x4e, 0x54, 0x73, 0x45, 0x4f, 0x34, 0x79, 0x4d, 0x42, 0x4d, 0x7a, 0x45, 0x51, 0x63, 0x31, 0x4e, 0x7a, 0x4d, 0x52, 0x4d, 0x78, 0x55, 0x68, 0x6e, 0x4d, 0x7a, 0x66, 0x35, 0x6f, 0x6e, 0x4e, 0x2f, 0x64, 0x63, 0x44, 0x43, 0x67, 0x4a, 0x6a, 0x4b, 0x58, 0x51, 0x6e, 0x0a, 0x09, 0x2f, 0x53, 0x74, 0x75, 0x41, 0x41, 0x41, 0x42, 0x41, 0x46, 0x34, 0x43, 0x6e, 0x41, 0x4b, 0x30, 0x42, 0x66, 0x41, 0x41, 0x47, 0x41, 0x42, 0x4b, 0x51, 0x43, 0x51, 0x41, 0x66, 0x51, 0x59, 0x45, 0x41, 0x42, 0x64, 0x39, 0x42, 0x67, 0x59, 0x45, 0x51, 0x67, 0x51, 0x43, 0x41, 0x41, 0x37, 0x64, 0x44, 0x77, 0x44, 0x64, 0x41, 0x76, 0x63, 0x4c, 0x33, 0x51, 0x38, 0x53, 0x6b, 0x52, 0x6b, 0x41, 0x44, 0x67, 0x68, 0x2b, 0x41, 0x52, 0x55, 0x4f, 0x0a, 0x09, 0x41, 0x78, 0x6b, 0x51, 0x33, 0x4d, 0x54, 0x55, 0x78, 0x4f, 0x77, 0x52, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x54, 0x45, 0x37, 0x50, 0x7a, 0x73, 0x45, 0x4f, 0x34, 0x52, 0x45, 0x6a, 0x6b, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x46, 0x37, 0x52, 0x63, 0x79, 0x42, 0x77, 0x58, 0x74, 0x57, 0x53, 0x49, 0x42, 0x49, 0x52, 0x55, 0x68, 0x4e, 0x54, 0x59, 0x33, 0x41, 0x44, 0x55, 0x30, 0x4a, 0x69, 0x4d, 0x69, 0x42, 0x67, 0x63, 0x31, 0x0a, 0x09, 0x4e, 0x6a, 0x59, 0x7a, 0x4d, 0x68, 0x59, 0x56, 0x46, 0x41, 0x45, 0x47, 0x41, 0x51, 0x77, 0x42, 0x71, 0x50, 0x32, 0x71, 0x49, 0x6a, 0x38, 0x42, 0x57, 0x47, 0x68, 0x56, 0x4e, 0x48, 0x70, 0x49, 0x54, 0x59, 0x55, 0x35, 0x6b, 0x61, 0x37, 0x2b, 0x74, 0x54, 0x67, 0x44, 0x44, 0x6e, 0x4a, 0x75, 0x48, 0x7a, 0x67, 0x42, 0x4d, 0x56, 0x35, 0x43, 0x55, 0x53, 0x4d, 0x6a, 0x65, 0x78, 0x77, 0x63, 0x68, 0x47, 0x79, 0x4c, 0x2f, 0x75, 0x51, 0x77, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x59, 0x67, 0x4b, 0x4e, 0x41, 0x73, 0x30, 0x46, 0x38, 0x41, 0x41, 0x6f, 0x41, 0x45, 0x68, 0x41, 0x4a, 0x77, 0x41, 0x56, 0x45, 0x77, 0x72, 0x64, 0x43, 0x52, 0x2f, 0x64, 0x49, 0x42, 0x50, 0x64, 0x46, 0x51, 0x33, 0x64, 0x43, 0x66, 0x67, 0x47, 0x39, 0x78, 0x7a, 0x64, 0x49, 0x50, 0x67, 0x6a, 0x6b, 0x53, 0x6b, 0x57, 0x45, 0x77, 0x41, 0x55, 0x47, 0x58, 0x34, 0x6d, 0x45, 0x48, 0x34, 0x44, 0x46, 0x42, 0x38, 0x4a, 0x0a, 0x09, 0x4b, 0x52, 0x44, 0x63, 0x78, 0x4d, 0x54, 0x55, 0x37, 0x4e, 0x54, 0x73, 0x45, 0x54, 0x6b, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x50, 0x54, 0x6b, 0x37, 0x50, 0x7a, 0x6b, 0x37, 0x4e, 0x54, 0x73, 0x45, 0x4f, 0x34, 0x51, 0x37, 0x68, 0x45, 0x53, 0x4f, 0x54, 0x41, 0x42, 0x46, 0x68, 0x59, 0x56, 0x46, 0x41, 0x59, 0x6a, 0x49, 0x69, 0x59, 0x6e, 0x4e, 0x52, 0x59, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x49, 0x79, 0x4d, 0x31, 0x0a, 0x09, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x49, 0x79, 0x49, 0x47, 0x42, 0x7a, 0x55, 0x32, 0x4e, 0x6a, 0x4d, 0x79, 0x46, 0x68, 0x55, 0x55, 0x42, 0x67, 0x49, 0x4d, 0x58, 0x47, 0x57, 0x2b, 0x73, 0x54, 0x6c, 0x39, 0x52, 0x6a, 0x52, 0x33, 0x51, 0x32, 0x31, 0x34, 0x62, 0x32, 0x78, 0x57, 0x58, 0x6c, 0x35, 0x68, 0x5a, 0x46, 0x38, 0x6f, 0x5a, 0x6c, 0x46, 0x4a, 0x67, 0x44, 0x65, 0x51, 0x71, 0x56, 0x6f, 0x45, 0x59, 0x42, 0x4a, 0x74, 0x0a, 0x09, 0x55, 0x6e, 0x79, 0x47, 0x46, 0x52, 0x52, 0x35, 0x47, 0x78, 0x70, 0x50, 0x52, 0x6b, 0x70, 0x4d, 0x62, 0x44, 0x38, 0x38, 0x4f, 0x6a, 0x30, 0x53, 0x46, 0x33, 0x4d, 0x52, 0x45, 0x6e, 0x5a, 0x6a, 0x52, 0x57, 0x44, 0x2f, 0x2f, 0x77, 0x43, 0x4a, 0x2f, 0x2b, 0x4d, 0x48, 0x66, 0x77, 0x58, 0x77, 0x41, 0x43, 0x63, 0x41, 0x38, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x4a, 0x77, 0x43, 0x38, 0x41, 0x7a, 0x55, 0x41, 0x41, 0x41, 0x41, 0x48, 0x0a, 0x09, 0x41, 0x51, 0x6b, 0x45, 0x69, 0x2f, 0x31, 0x6b, 0x2f, 0x2f, 0x38, 0x41, 0x69, 0x66, 0x2f, 0x6a, 0x42, 0x7a, 0x38, 0x46, 0x38, 0x41, 0x41, 0x6e, 0x41, 0x50, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43, 0x63, 0x41, 0x76, 0x41, 0x4d, 0x31, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x44, 0x78, 0x42, 0x49, 0x76, 0x39, 0x5a, 0x50, 0x2f, 0x2f, 0x41, 0x47, 0x4c, 0x2f, 0x34, 0x77, 0x64, 0x2f, 0x42, 0x66, 0x41, 0x41, 0x4a, 0x77, 0x44, 0x79, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x6e, 0x41, 0x4c, 0x77, 0x44, 0x4e, 0x51, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x43, 0x51, 0x53, 0x4c, 0x2f, 0x57, 0x54, 0x2f, 0x2f, 0x77, 0x42, 0x7a, 0x2f, 0x2b, 0x4d, 0x46, 0x69, 0x77, 0x64, 0x74, 0x41, 0x69, 0x63, 0x41, 0x4b, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x45, 0x4b, 0x41, 0x52, 0x73, 0x42, 0x64, 0x66, 0x2f, 0x2f, 0x41, 0x48, 0x48, 0x2b, 0x56, 0x67, 0x52, 0x61, 0x0a, 0x09, 0x42, 0x6b, 0x67, 0x43, 0x4a, 0x77, 0x42, 0x4b, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x4e, 0x6f, 0x41, 0x69, 0x77, 0x41, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x79, 0x51, 0x41, 0x41, 0x41, 0x5a, 0x55, 0x48, 0x55, 0x41, 0x49, 0x6e, 0x41, 0x43, 0x77, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x43, 0x2f, 0x38, 0x76, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x43, 0x48, 0x2f, 0x6e, 0x55, 0x45, 0x6f, 0x67, 0x58, 0x77, 0x0a, 0x09, 0x41, 0x69, 0x63, 0x41, 0x4e, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x44, 0x64, 0x41, 0x49, 0x73, 0x41, 0x41, 0x50, 0x2f, 0x2f, 0x41, 0x47, 0x2f, 0x2b, 0x64, 0x51, 0x50, 0x48, 0x42, 0x48, 0x73, 0x43, 0x4a, 0x77, 0x42, 0x57, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x4e, 0x30, 0x41, 0x46, 0x77, 0x41, 0x41, 0x2f, 0x2f, 0x38, 0x41, 0x63, 0x2f, 0x2f, 0x6a, 0x42, 0x53, 0x63, 0x48, 0x61, 0x77, 0x49, 0x6e, 0x0a, 0x09, 0x41, 0x43, 0x59, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x42, 0x42, 0x41, 0x45, 0x74, 0x41, 0x58, 0x58, 0x2f, 0x2f, 0x77, 0x42, 0x78, 0x2f, 0x2b, 0x4d, 0x44, 0x35, 0x77, 0x5a, 0x6d, 0x41, 0x69, 0x63, 0x41, 0x52, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x42, 0x77, 0x43, 0x4e, 0x41, 0x49, 0x6b, 0x41, 0x41, 0x50, 0x2f, 0x2f, 0x41, 0x48, 0x50, 0x2f, 0x34, 0x77, 0x55, 0x6e, 0x42, 0x32, 0x30, 0x43, 0x4a, 0x77, 0x41, 0x6d, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x48, 0x41, 0x51, 0x67, 0x42, 0x4c, 0x51, 0x46, 0x31, 0x2f, 0x2f, 0x38, 0x41, 0x63, 0x66, 0x2f, 0x6a, 0x41, 0x2b, 0x63, 0x47, 0x5a, 0x67, 0x49, 0x6e, 0x41, 0x45, 0x59, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x63, 0x41, 0x34, 0x41, 0x43, 0x4a, 0x41, 0x41, 0x41, 0x41, 0x41, 0x67, 0x42, 0x78, 0x2f, 0x2b, 0x4d, 0x45, 0x39, 0x41, 0x59, 0x55, 0x41, 0x42, 0x67, 0x41, 0x4a, 0x41, 0x42, 0x4b, 0x0a, 0x09, 0x51, 0x43, 0x51, 0x48, 0x41, 0x39, 0x4d, 0x4a, 0x41, 0x66, 0x6b, 0x69, 0x75, 0x51, 0x41, 0x57, 0x48, 0x4c, 0x6b, 0x4e, 0x45, 0x49, 0x77, 0x57, 0x75, 0x41, 0x57, 0x58, 0x43, 0x77, 0x49, 0x66, 0x44, 0x41, 0x51, 0x44, 0x41, 0x41, 0x67, 0x49, 0x43, 0x67, 0x5a, 0x48, 0x47, 0x52, 0x49, 0x54, 0x52, 0x53, 0x55, 0x51, 0x2f, 0x4f, 0x7a, 0x30, 0x50, 0x4d, 0x54, 0x38, 0x46, 0x7a, 0x7a, 0x45, 0x4d, 0x51, 0x41, 0x76, 0x37, 0x4f, 0x54, 0x30, 0x0a, 0x09, 0x78, 0x4f, 0x77, 0x51, 0x78, 0x4f, 0x37, 0x39, 0x50, 0x4f, 0x34, 0x79, 0x4d, 0x4c, 0x5a, 0x67, 0x4a, 0x6f, 0x41, 0x6d, 0x6f, 0x43, 0x59, 0x44, 0x41, 0x56, 0x30, 0x42, 0x45, 0x53, 0x45, 0x31, 0x49, 0x54, 0x55, 0x7a, 0x46, 0x54, 0x4d, 0x56, 0x49, 0x78, 0x45, 0x6a, 0x4e, 0x51, 0x34, 0x42, 0x49, 0x79, 0x49, 0x43, 0x45, 0x52, 0x41, 0x53, 0x4d, 0x7a, 0x49, 0x57, 0x41, 0x52, 0x51, 0x57, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x54, 0x51, 0x6d, 0x0a, 0x09, 0x49, 0x79, 0x49, 0x47, 0x41, 0x36, 0x4c, 0x2b, 0x75, 0x67, 0x46, 0x47, 0x75, 0x4a, 0x71, 0x61, 0x75, 0x44, 0x71, 0x78, 0x66, 0x4d, 0x76, 0x2f, 0x2f, 0x38, 0x74, 0x38, 0x73, 0x66, 0x33, 0x48, 0x70, 0x35, 0x4b, 0x53, 0x71, 0x4b, 0x69, 0x53, 0x6b, 0x71, 0x63, 0x44, 0x74, 0x67, 0x46, 0x4f, 0x66, 0x5a, 0x4f, 0x54, 0x66, 0x66, 0x72, 0x38, 0x71, 0x47, 0x52, 0x68, 0x41, 0x55, 0x51, 0x42, 0x43, 0x41, 0x45, 0x49, 0x41, 0x55, 0x52, 0x68, 0x0a, 0x09, 0x2f, 0x68, 0x58, 0x4c, 0x35, 0x2b, 0x66, 0x4c, 0x79, 0x2b, 0x66, 0x6e, 0x41, 0x41, 0x41, 0x42, 0x41, 0x47, 0x51, 0x42, 0x33, 0x77, 0x4a, 0x2f, 0x41, 0x6f, 0x4d, 0x41, 0x41, 0x77, 0x41, 0x52, 0x74, 0x67, 0x43, 0x63, 0x41, 0x67, 0x51, 0x42, 0x41, 0x41, 0x51, 0x51, 0x33, 0x4d, 0x77, 0x78, 0x41, 0x42, 0x44, 0x55, 0x37, 0x44, 0x41, 0x54, 0x49, 0x52, 0x55, 0x68, 0x5a, 0x41, 0x49, 0x62, 0x2f, 0x65, 0x55, 0x43, 0x67, 0x36, 0x51, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x32, 0x77, 0x4a, 0x49, 0x41, 0x61, 0x34, 0x44, 0x52, 0x67, 0x41, 0x44, 0x41, 0x42, 0x4b, 0x33, 0x41, 0x6f, 0x4d, 0x41, 0x42, 0x41, 0x45, 0x5a, 0x41, 0x41, 0x51, 0x51, 0x31, 0x4f, 0x77, 0x78, 0x41, 0x42, 0x44, 0x55, 0x37, 0x44, 0x41, 0x54, 0x4d, 0x78, 0x55, 0x6a, 0x32, 0x39, 0x50, 0x54, 0x41, 0x30, 0x62, 0x2b, 0x41, 0x41, 0x45, 0x41, 0x41, 0x50, 0x2f, 0x6a, 0x42, 0x49, 0x38, 0x46, 0x38, 0x41, 0x41, 0x78, 0x0a, 0x09, 0x41, 0x52, 0x78, 0x41, 0x4f, 0x69, 0x41, 0x53, 0x30, 0x79, 0x49, 0x51, 0x4b, 0x77, 0x66, 0x54, 0x43, 0x52, 0x6d, 0x68, 0x47, 0x71, 0x34, 0x57, 0x6c, 0x52, 0x30, 0x42, 0x6f, 0x51, 0x43, 0x75, 0x42, 0x4a, 0x55, 0x76, 0x6b, 0x52, 0x32, 0x4d, 0x4b, 0x51, 0x6b, 0x79, 0x4b, 0x79, 0x49, 0x68, 0x4b, 0x53, 0x4d, 0x6d, 0x45, 0x68, 0x41, 0x4b, 0x41, 0x77, 0x30, 0x4a, 0x45, 0x51, 0x67, 0x73, 0x49, 0x43, 0x59, 0x54, 0x42, 0x78, 0x45, 0x49, 0x0a, 0x09, 0x45, 0x51, 0x30, 0x63, 0x47, 0x51, 0x41, 0x6d, 0x4b, 0x69, 0x45, 0x76, 0x50, 0x4e, 0x54, 0x45, 0x4d, 0x76, 0x7a, 0x45, 0x78, 0x42, 0x49, 0x35, 0x4f, 0x52, 0x49, 0x35, 0x4f, 0x52, 0x45, 0x53, 0x4f, 0x52, 0x45, 0x58, 0x4f, 0x52, 0x49, 0x35, 0x4f, 0x52, 0x45, 0x35, 0x4f, 0x54, 0x45, 0x41, 0x45, 0x4d, 0x51, 0x79, 0x35, 0x50, 0x54, 0x73, 0x39, 0x4f, 0x77, 0x51, 0x37, 0x76, 0x62, 0x75, 0x45, 0x4f, 0x34, 0x79, 0x33, 0x54, 0x7a, 0x75, 0x0a, 0x09, 0x4d, 0x6a, 0x41, 0x42, 0x53, 0x37, 0x41, 0x4a, 0x56, 0x45, 0x75, 0x77, 0x44, 0x46, 0x52, 0x62, 0x53, 0x37, 0x41, 0x4e, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x41, 0x39, 0x55, 0x57, 0x30, 0x75, 0x77, 0x46, 0x31, 0x52, 0x62, 0x53, 0x37, 0x41, 0x59, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x79, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x79, 0x41, 0x44, 0x49, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x51, 0x48, 0x6f, 0x4f, 0x0a, 0x09, 0x41, 0x41, 0x34, 0x42, 0x43, 0x77, 0x49, 0x4c, 0x4d, 0x56, 0x51, 0x55, 0x61, 0x51, 0x78, 0x73, 0x44, 0x6d, 0x34, 0x50, 0x62, 0x78, 0x42, 0x76, 0x45, 0x57, 0x38, 0x53, 0x62, 0x78, 0x4e, 0x70, 0x46, 0x47, 0x73, 0x66, 0x62, 0x79, 0x42, 0x76, 0x49, 0x57, 0x38, 0x69, 0x62, 0x79, 0x4e, 0x75, 0x4a, 0x47, 0x77, 0x6c, 0x61, 0x53, 0x64, 0x70, 0x4c, 0x5a, 0x38, 0x48, 0x6e, 0x77, 0x69, 0x66, 0x43, 0x5a, 0x38, 0x4b, 0x6e, 0x77, 0x75, 0x66, 0x0a, 0x09, 0x44, 0x4a, 0x38, 0x4e, 0x6e, 0x77, 0x36, 0x66, 0x44, 0x35, 0x38, 0x51, 0x6e, 0x78, 0x47, 0x66, 0x45, 0x70, 0x38, 0x54, 0x6c, 0x68, 0x2b, 0x66, 0x49, 0x4a, 0x38, 0x68, 0x6e, 0x79, 0x4b, 0x66, 0x49, 0x35, 0x38, 0x6b, 0x6e, 0x79, 0x57, 0x66, 0x4a, 0x70, 0x38, 0x6e, 0x6e, 0x79, 0x69, 0x66, 0x4b, 0x5a, 0x38, 0x71, 0x6e, 0x79, 0x75, 0x66, 0x4c, 0x4a, 0x30, 0x74, 0x4d, 0x67, 0x41, 0x49, 0x41, 0x41, 0x6b, 0x51, 0x43, 0x42, 0x41, 0x4a, 0x0a, 0x09, 0x49, 0x41, 0x67, 0x67, 0x43, 0x56, 0x55, 0x56, 0x55, 0x78, 0x35, 0x71, 0x46, 0x57, 0x63, 0x66, 0x43, 0x6c, 0x30, 0x41, 0x58, 0x51, 0x45, 0x56, 0x4c, 0x67, 0x45, 0x6a, 0x49, 0x67, 0x59, 0x48, 0x49, 0x51, 0x63, 0x68, 0x44, 0x67, 0x45, 0x56, 0x46, 0x42, 0x59, 0x58, 0x49, 0x51, 0x63, 0x68, 0x48, 0x67, 0x45, 0x7a, 0x4d, 0x6a, 0x59, 0x33, 0x46, 0x51, 0x34, 0x42, 0x49, 0x79, 0x49, 0x41, 0x41, 0x79, 0x4d, 0x33, 0x4d, 0x7a, 0x51, 0x6d, 0x0a, 0x09, 0x4e, 0x54, 0x51, 0x32, 0x4e, 0x53, 0x4d, 0x33, 0x4d, 0x78, 0x49, 0x41, 0x4d, 0x7a, 0x49, 0x57, 0x42, 0x49, 0x39, 0x62, 0x71, 0x57, 0x61, 0x64, 0x79, 0x69, 0x41, 0x43, 0x51, 0x54, 0x66, 0x39, 0x35, 0x67, 0x49, 0x42, 0x41, 0x51, 0x49, 0x42, 0x76, 0x6a, 0x6a, 0x2b, 0x69, 0x69, 0x44, 0x4b, 0x6e, 0x57, 0x61, 0x70, 0x57, 0x31, 0x6d, 0x35, 0x59, 0x4f, 0x33, 0x2b, 0x79, 0x79, 0x6a, 0x54, 0x4e, 0x34, 0x73, 0x42, 0x41, 0x63, 0x49, 0x33, 0x0a, 0x09, 0x6e, 0x43, 0x67, 0x42, 0x4e, 0x75, 0x78, 0x69, 0x75, 0x51, 0x56, 0x69, 0x31, 0x57, 0x6c, 0x61, 0x79, 0x4c, 0x74, 0x37, 0x47, 0x43, 0x34, 0x6a, 0x49, 0x43, 0x34, 0x59, 0x65, 0x37, 0x76, 0x4b, 0x57, 0x6d, 0x6e, 0x54, 0x53, 0x45, 0x67, 0x42, 0x49, 0x67, 0x45, 0x44, 0x65, 0x78, 0x63, 0x76, 0x49, 0x43, 0x4d, 0x76, 0x46, 0x33, 0x73, 0x42, 0x41, 0x51, 0x45, 0x69, 0x52, 0x77, 0x41, 0x43, 0x41, 0x4e, 0x63, 0x46, 0x44, 0x67, 0x4d, 0x70, 0x0a, 0x09, 0x42, 0x64, 0x6b, 0x41, 0x41, 0x77, 0x41, 0x48, 0x41, 0x4b, 0x56, 0x41, 0x44, 0x51, 0x51, 0x41, 0x7a, 0x67, 0x59, 0x43, 0x43, 0x41, 0x46, 0x6b, 0x41, 0x41, 0x56, 0x6b, 0x42, 0x41, 0x67, 0x51, 0x31, 0x50, 0x7a, 0x63, 0x37, 0x44, 0x45, 0x41, 0x45, 0x4e, 0x51, 0x38, 0x37, 0x44, 0x49, 0x77, 0x41, 0x45, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x4c, 0x73, 0x42, 0x46, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x41, 0x67, 0x41, 0x51, 0x41, 0x41, 0x42, 0x0a, 0x09, 0x41, 0x41, 0x67, 0x41, 0x43, 0x50, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x53, 0x37, 0x41, 0x4f, 0x56, 0x45, 0x75, 0x77, 0x44, 0x56, 0x52, 0x62, 0x53, 0x37, 0x41, 0x58, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x49, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x49, 0x41, 0x41, 0x67, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x55, 0x75, 0x77, 0x45, 0x56, 0x52, 0x4c, 0x73, 0x42, 0x6c, 0x55, 0x0a, 0x09, 0x57, 0x31, 0x69, 0x39, 0x41, 0x41, 0x67, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x41, 0x67, 0x41, 0x43, 0x50, 0x2f, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x41, 0x53, 0x37, 0x41, 0x59, 0x56, 0x46, 0x69, 0x39, 0x41, 0x41, 0x6a, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x41, 0x67, 0x41, 0x43, 0x41, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x45, 0x57, 0x41, 0x42, 0x59, 0x41, 0x4a, 0x67, 0x42, 0x57, 0x41, 0x47, 0x0a, 0x09, 0x63, 0x41, 0x46, 0x77, 0x41, 0x6e, 0x41, 0x46, 0x63, 0x41, 0x59, 0x49, 0x41, 0x56, 0x30, 0x42, 0x4d, 0x78, 0x55, 0x6a, 0x4a, 0x54, 0x4d, 0x56, 0x49, 0x77, 0x4a, 0x65, 0x79, 0x38, 0x76, 0x2b, 0x65, 0x63, 0x76, 0x4c, 0x42, 0x64, 0x6e, 0x4c, 0x79, 0x38, 0x73, 0x41, 0x41, 0x51, 0x46, 0x7a, 0x42, 0x4f, 0x34, 0x43, 0x38, 0x41, 0x58, 0x32, 0x41, 0x41, 0x4d, 0x41, 0x66, 0x30, 0x41, 0x52, 0x41, 0x67, 0x4d, 0x41, 0x41, 0x77, 0x45, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x4e, 0x43, 0x41, 0x41, 0x4c, 0x36, 0x42, 0x41, 0x45, 0x44, 0x41, 0x77, 0x51, 0x51, 0x78, 0x42, 0x44, 0x41, 0x4d, 0x51, 0x41, 0x51, 0x39, 0x4d, 0x77, 0x77, 0x53, 0x31, 0x4e, 0x59, 0x42, 0x78, 0x41, 0x46, 0x79, 0x51, 0x63, 0x51, 0x42, 0x63, 0x6c, 0x5a, 0x49, 0x67, 0x42, 0x4c, 0x73, 0x41, 0x78, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x42, 0x50, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x42, 0x41, 0x41, 0x45, 0x41, 0x45, 0x41, 0x34, 0x0a, 0x09, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x42, 0x4c, 0x73, 0x41, 0x35, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x42, 0x41, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x42, 0x41, 0x41, 0x45, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x55, 0x41, 0x67, 0x42, 0x67, 0x49, 0x56, 0x41, 0x69, 0x55, 0x42, 0x4a, 0x51, 0x49, 0x32, 0x41, 0x6b, 0x59, 0x43, 0x56, 0x67, 0x4a, 0x71, 0x41, 0x57, 0x63, 0x43, 0x43, 0x51, 0x38, 0x41, 0x44, 0x77, 0x45, 0x66, 0x0a, 0x09, 0x41, 0x42, 0x38, 0x42, 0x4c, 0x77, 0x41, 0x76, 0x41, 0x51, 0x5a, 0x64, 0x41, 0x56, 0x30, 0x42, 0x4d, 0x77, 0x4d, 0x6a, 0x41, 0x6a, 0x65, 0x35, 0x35, 0x4a, 0x6b, 0x46, 0x39, 0x76, 0x37, 0x34, 0x41, 0x41, 0x45, 0x41, 0x74, 0x67, 0x55, 0x4f, 0x41, 0x30, 0x6f, 0x46, 0x36, 0x51, 0x41, 0x64, 0x41, 0x48, 0x56, 0x41, 0x49, 0x52, 0x59, 0x51, 0x44, 0x77, 0x4d, 0x54, 0x44, 0x41, 0x63, 0x42, 0x41, 0x41, 0x4d, 0x49, 0x46, 0x77, 0x7a, 0x44, 0x0a, 0x09, 0x42, 0x42, 0x50, 0x44, 0x47, 0x77, 0x6a, 0x36, 0x48, 0x68, 0x41, 0x42, 0x44, 0x77, 0x41, 0x48, 0x46, 0x6c, 0x59, 0x59, 0x42, 0x31, 0x59, 0x4a, 0x48, 0x68, 0x44, 0x55, 0x37, 0x4e, 0x54, 0x73, 0x45, 0x54, 0x6b, 0x35, 0x4f, 0x54, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x30, 0x50, 0x4f, 0x7a, 0x55, 0x37, 0x44, 0x49, 0x53, 0x46, 0x7a, 0x6b, 0x52, 0x45, 0x68, 0x63, 0x35, 0x4d, 0x41, 0x42, 0x4c, 0x73, 0x41, 0x78, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x0a, 0x09, 0x48, 0x76, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x48, 0x67, 0x41, 0x65, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x42, 0x4c, 0x73, 0x41, 0x35, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x48, 0x67, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x48, 0x67, 0x41, 0x65, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x62, 0x51, 0x51, 0x43, 0x78, 0x38, 0x61, 0x41, 0x6c, 0x30, 0x42, 0x4a, 0x79, 0x34, 0x42, 0x49, 0x79, 0x49, 0x47, 0x0a, 0x09, 0x48, 0x51, 0x45, 0x6a, 0x4e, 0x44, 0x59, 0x7a, 0x4d, 0x68, 0x59, 0x66, 0x41, 0x52, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x32, 0x50, 0x51, 0x45, 0x7a, 0x44, 0x67, 0x45, 0x6a, 0x49, 0x69, 0x59, 0x42, 0x2f, 0x44, 0x6b, 0x5a, 0x48, 0x77, 0x77, 0x6b, 0x4b, 0x48, 0x31, 0x6e, 0x56, 0x69, 0x51, 0x39, 0x4d, 0x44, 0x6b, 0x58, 0x49, 0x67, 0x38, 0x67, 0x4b, 0x48, 0x30, 0x43, 0x5a, 0x31, 0x51, 0x69, 0x4f, 0x77, 0x55, 0x35, 0x49, 0x51, 0x34, 0x4c, 0x0a, 0x09, 0x4d, 0x69, 0x30, 0x47, 0x5a, 0x58, 0x59, 0x51, 0x47, 0x78, 0x34, 0x4e, 0x44, 0x44, 0x4d, 0x70, 0x42, 0x6d, 0x52, 0x33, 0x45, 0x41, 0x41, 0x42, 0x41, 0x51, 0x77, 0x45, 0x37, 0x67, 0x4b, 0x4c, 0x42, 0x66, 0x59, 0x41, 0x41, 0x77, 0x43, 0x4a, 0x51, 0x42, 0x45, 0x42, 0x41, 0x67, 0x4d, 0x43, 0x41, 0x41, 0x4d, 0x44, 0x41, 0x6b, 0x49, 0x41, 0x41, 0x66, 0x6f, 0x45, 0x41, 0x51, 0x4d, 0x44, 0x42, 0x42, 0x44, 0x45, 0x45, 0x4d, 0x41, 0x78, 0x0a, 0x09, 0x41, 0x42, 0x44, 0x30, 0x7a, 0x44, 0x42, 0x4c, 0x55, 0x31, 0x67, 0x48, 0x45, 0x41, 0x58, 0x4a, 0x42, 0x78, 0x41, 0x46, 0x79, 0x56, 0x6b, 0x69, 0x41, 0x45, 0x75, 0x77, 0x44, 0x46, 0x52, 0x59, 0x76, 0x51, 0x41, 0x45, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x45, 0x41, 0x41, 0x51, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x45, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x59, 0x76, 0x51, 0x41, 0x45, 0x41, 0x45, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x51, 0x41, 0x45, 0x41, 0x41, 0x54, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x51, 0x43, 0x6f, 0x47, 0x41, 0x41, 0x59, 0x42, 0x46, 0x67, 0x41, 0x53, 0x41, 0x53, 0x51, 0x41, 0x4a, 0x41, 0x45, 0x31, 0x41, 0x55, 0x4d, 0x42, 0x56, 0x51, 0x42, 0x56, 0x41, 0x5a, 0x38, 0x41, 0x6e, 0x77, 0x47, 0x76, 0x41, 0x4b, 0x38, 0x42, 0x44, 0x67, 0x38, 0x41, 0x44, 0x77, 0x4d, 0x66, 0x41, 0x42, 0x38, 0x44, 0x4c, 0x77, 0x41, 0x76, 0x0a, 0x09, 0x41, 0x77, 0x5a, 0x64, 0x41, 0x56, 0x30, 0x42, 0x45, 0x79, 0x4d, 0x44, 0x41, 0x63, 0x66, 0x45, 0x6d, 0x65, 0x59, 0x46, 0x39, 0x76, 0x37, 0x34, 0x41, 0x51, 0x67, 0x41, 0x41, 0x51, 0x44, 0x50, 0x42, 0x4f, 0x34, 0x44, 0x4d, 0x51, 0x58, 0x34, 0x41, 0x41, 0x59, 0x41, 0x64, 0x30, 0x41, 0x4b, 0x42, 0x41, 0x41, 0x46, 0x41, 0x76, 0x6f, 0x48, 0x42, 0x41, 0x49, 0x47, 0x42, 0x78, 0x44, 0x55, 0x78, 0x44, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x30, 0x0a, 0x09, 0x50, 0x4d, 0x51, 0x35, 0x4d, 0x41, 0x42, 0x4c, 0x73, 0x41, 0x78, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x42, 0x2f, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x42, 0x77, 0x41, 0x48, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x42, 0x4c, 0x73, 0x41, 0x35, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x42, 0x77, 0x42, 0x41, 0x41, 0x41, 0x45, 0x41, 0x42, 0x77, 0x41, 0x48, 0x2f, 0x38, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x51, 0x46, 0x4c, 0x0a, 0x09, 0x73, 0x41, 0x35, 0x55, 0x57, 0x4c, 0x30, 0x41, 0x42, 0x2f, 0x2f, 0x41, 0x41, 0x41, 0x45, 0x41, 0x42, 0x77, 0x41, 0x48, 0x41, 0x45, 0x41, 0x34, 0x45, 0x54, 0x63, 0x34, 0x57, 0x55, 0x41, 0x54, 0x44, 0x77, 0x41, 0x50, 0x41, 0x51, 0x77, 0x45, 0x48, 0x77, 0x41, 0x66, 0x41, 0x52, 0x30, 0x45, 0x4c, 0x77, 0x41, 0x76, 0x41, 0x53, 0x30, 0x45, 0x43, 0x51, 0x42, 0x64, 0x41, 0x54, 0x4d, 0x54, 0x49, 0x79, 0x63, 0x48, 0x49, 0x77, 0x47, 0x69, 0x0a, 0x09, 0x76, 0x4e, 0x4f, 0x4c, 0x70, 0x71, 0x61, 0x4c, 0x42, 0x66, 0x6a, 0x2b, 0x39, 0x72, 0x4b, 0x79, 0x41, 0x41, 0x45, 0x41, 0x7a, 0x77, 0x54, 0x75, 0x41, 0x7a, 0x45, 0x46, 0x2b, 0x41, 0x41, 0x47, 0x41, 0x49, 0x5a, 0x41, 0x43, 0x67, 0x4d, 0x45, 0x41, 0x51, 0x44, 0x36, 0x42, 0x77, 0x4d, 0x46, 0x41, 0x51, 0x63, 0x51, 0x31, 0x4d, 0x51, 0x35, 0x4d, 0x51, 0x41, 0x51, 0x39, 0x4d, 0x51, 0x79, 0x4f, 0x54, 0x41, 0x41, 0x53, 0x37, 0x41, 0x4d, 0x0a, 0x09, 0x56, 0x45, 0x75, 0x77, 0x43, 0x56, 0x52, 0x62, 0x53, 0x37, 0x41, 0x4b, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x41, 0x74, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x41, 0x66, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x41, 0x63, 0x41, 0x42, 0x77, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x41, 0x53, 0x37, 0x41, 0x4f, 0x56, 0x46, 0x69, 0x39, 0x41, 0x41, 0x63, 0x41, 0x51, 0x41, 0x41, 0x42, 0x41, 0x41, 0x63, 0x41, 0x42, 0x2f, 0x2f, 0x41, 0x0a, 0x09, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x42, 0x53, 0x37, 0x41, 0x4f, 0x56, 0x46, 0x69, 0x39, 0x41, 0x41, 0x66, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x41, 0x63, 0x41, 0x42, 0x77, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x45, 0x77, 0x41, 0x41, 0x41, 0x77, 0x4d, 0x41, 0x42, 0x68, 0x41, 0x41, 0x45, 0x67, 0x4d, 0x51, 0x42, 0x69, 0x41, 0x41, 0x49, 0x67, 0x4d, 0x67, 0x42, 0x67, 0x6b, 0x41, 0x58, 0x51, 0x45, 0x44, 0x0a, 0x09, 0x4d, 0x78, 0x63, 0x33, 0x4d, 0x77, 0x4d, 0x42, 0x6f, 0x74, 0x4f, 0x4c, 0x70, 0x71, 0x61, 0x4c, 0x30, 0x77, 0x54, 0x75, 0x41, 0x51, 0x71, 0x79, 0x73, 0x76, 0x37, 0x32, 0x41, 0x41, 0x41, 0x43, 0x41, 0x44, 0x38, 0x43, 0x6e, 0x41, 0x4c, 0x30, 0x42, 0x64, 0x38, 0x41, 0x41, 0x67, 0x41, 0x4e, 0x41, 0x4e, 0x52, 0x41, 0x46, 0x67, 0x41, 0x44, 0x43, 0x77, 0x66, 0x64, 0x42, 0x51, 0x45, 0x4a, 0x39, 0x77, 0x4f, 0x52, 0x44, 0x67, 0x45, 0x4d, 0x0a, 0x09, 0x43, 0x67, 0x42, 0x64, 0x42, 0x67, 0x67, 0x45, 0x44, 0x41, 0x34, 0x51, 0x33, 0x4e, 0x51, 0x38, 0x78, 0x4f, 0x77, 0x79, 0x45, 0x54, 0x6b, 0x78, 0x41, 0x42, 0x44, 0x30, 0x2f, 0x4e, 0x51, 0x38, 0x37, 0x44, 0x49, 0x53, 0x4f, 0x54, 0x41, 0x42, 0x53, 0x37, 0x41, 0x4f, 0x56, 0x45, 0x75, 0x77, 0x44, 0x31, 0x52, 0x62, 0x53, 0x37, 0x41, 0x51, 0x56, 0x46, 0x74, 0x4c, 0x73, 0x42, 0x46, 0x55, 0x57, 0x30, 0x75, 0x77, 0x43, 0x31, 0x52, 0x62, 0x0a, 0x09, 0x53, 0x37, 0x41, 0x4b, 0x56, 0x46, 0x74, 0x59, 0x76, 0x51, 0x41, 0x4f, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4f, 0x41, 0x41, 0x37, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x45, 0x75, 0x77, 0x45, 0x56, 0x52, 0x4c, 0x73, 0x41, 0x35, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x41, 0x37, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x41, 0x34, 0x41, 0x44, 0x67, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6c, 0x41, 0x0a, 0x09, 0x56, 0x41, 0x73, 0x42, 0x48, 0x51, 0x45, 0x76, 0x41, 0x54, 0x6b, 0x42, 0x53, 0x51, 0x46, 0x47, 0x41, 0x31, 0x6b, 0x44, 0x61, 0x51, 0x4f, 0x4c, 0x41, 0x36, 0x73, 0x44, 0x75, 0x77, 0x4d, 0x4c, 0x41, 0x51, 0x41, 0x50, 0x41, 0x51, 0x38, 0x43, 0x44, 0x77, 0x55, 0x50, 0x42, 0x67, 0x38, 0x48, 0x44, 0x77, 0x67, 0x50, 0x43, 0x77, 0x38, 0x4d, 0x44, 0x77, 0x30, 0x54, 0x41, 0x42, 0x38, 0x42, 0x48, 0x77, 0x49, 0x66, 0x42, 0x52, 0x38, 0x47, 0x0a, 0x09, 0x48, 0x77, 0x63, 0x66, 0x43, 0x42, 0x38, 0x4c, 0x48, 0x77, 0x77, 0x66, 0x44, 0x53, 0x49, 0x41, 0x4e, 0x51, 0x42, 0x48, 0x41, 0x45, 0x73, 0x4e, 0x55, 0x77, 0x42, 0x62, 0x44, 0x57, 0x55, 0x41, 0x68, 0x41, 0x43, 0x6c, 0x41, 0x4c, 0x55, 0x41, 0x48, 0x6c, 0x30, 0x42, 0x58, 0x51, 0x6b, 0x42, 0x49, 0x51, 0x4d, 0x7a, 0x45, 0x54, 0x4d, 0x56, 0x49, 0x78, 0x55, 0x6a, 0x4e, 0x53, 0x45, 0x31, 0x41, 0x64, 0x33, 0x2b, 0x79, 0x77, 0x45, 0x31, 0x0a, 0x09, 0x46, 0x71, 0x61, 0x48, 0x68, 0x35, 0x44, 0x2b, 0x59, 0x67, 0x56, 0x6d, 0x2f, 0x6c, 0x30, 0x43, 0x48, 0x50, 0x33, 0x6b, 0x62, 0x62, 0x71, 0x36, 0x65, 0x51, 0x41, 0x41, 0x41, 0x51, 0x44, 0x48, 0x42, 0x51, 0x59, 0x44, 0x4f, 0x51, 0x58, 0x34, 0x41, 0x41, 0x30, 0x41, 0x61, 0x6b, 0x41, 0x4f, 0x42, 0x77, 0x41, 0x45, 0x77, 0x77, 0x76, 0x36, 0x44, 0x67, 0x64, 0x57, 0x43, 0x41, 0x46, 0x57, 0x41, 0x41, 0x34, 0x51, 0x31, 0x4f, 0x7a, 0x55, 0x0a, 0x09, 0x37, 0x44, 0x45, 0x41, 0x45, 0x50, 0x54, 0x38, 0x78, 0x44, 0x49, 0x77, 0x41, 0x45, 0x75, 0x77, 0x44, 0x46, 0x52, 0x59, 0x76, 0x51, 0x41, 0x4f, 0x2f, 0x38, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4f, 0x41, 0x41, 0x34, 0x41, 0x51, 0x44, 0x67, 0x52, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x45, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x59, 0x76, 0x51, 0x41, 0x4f, 0x41, 0x45, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4f, 0x41, 0x41, 0x37, 0x2f, 0x77, 0x44, 0x67, 0x52, 0x0a, 0x09, 0x4e, 0x7a, 0x68, 0x5a, 0x41, 0x55, 0x75, 0x77, 0x44, 0x6c, 0x52, 0x4c, 0x73, 0x41, 0x39, 0x55, 0x57, 0x31, 0x69, 0x39, 0x41, 0x41, 0x37, 0x2f, 0x77, 0x41, 0x41, 0x42, 0x41, 0x41, 0x34, 0x41, 0x44, 0x67, 0x42, 0x41, 0x4f, 0x42, 0x45, 0x33, 0x4f, 0x46, 0x6b, 0x54, 0x4d, 0x78, 0x34, 0x42, 0x4d, 0x7a, 0x49, 0x32, 0x4e, 0x7a, 0x4d, 0x4f, 0x41, 0x53, 0x4d, 0x69, 0x4a, 0x73, 0x64, 0x32, 0x44, 0x57, 0x4e, 0x54, 0x55, 0x6d, 0x45, 0x51, 0x0a, 0x09, 0x64, 0x67, 0x71, 0x67, 0x6a, 0x35, 0x43, 0x66, 0x42, 0x66, 0x67, 0x32, 0x4f, 0x54, 0x63, 0x34, 0x64, 0x33, 0x74, 0x36, 0x41, 0x41, 0x41, 0x42, 0x41, 0x5a, 0x6f, 0x46, 0x44, 0x67, 0x4a, 0x6d, 0x42, 0x64, 0x73, 0x41, 0x41, 0x77, 0x41, 0x52, 0x74, 0x67, 0x41, 0x43, 0x2b, 0x67, 0x51, 0x42, 0x41, 0x41, 0x51, 0x51, 0x31, 0x4d, 0x77, 0x78, 0x41, 0x42, 0x44, 0x30, 0x7a, 0x44, 0x41, 0x42, 0x4d, 0x78, 0x55, 0x6a, 0x41, 0x5a, 0x72, 0x4d, 0x0a, 0x09, 0x7a, 0x41, 0x58, 0x62, 0x7a, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x67, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x55, 0x41, 0x41, 0x4d, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x52, 0x6f, 0x41, 0x41, 0x41, 0x45, 0x47, 0x41, 0x41, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x45, 0x44, 0x41, 0x41, 0x41, 0x41, 0x41, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x45, 0x41, 0x41, 0x41, 0x4d, 0x45, 0x42, 0x51, 0x59, 0x48, 0x43, 0x41, 0x6b, 0x4b, 0x43, 0x77, 0x77, 0x4e, 0x44, 0x67, 0x38, 0x51, 0x45, 0x52, 0x49, 0x54, 0x46, 0x42, 0x55, 0x57, 0x46, 0x78, 0x67, 0x5a, 0x47, 0x68, 0x73, 0x63, 0x48, 0x52, 0x34, 0x66, 0x49, 0x43, 0x45, 0x69, 0x49, 0x79, 0x51, 0x6c, 0x4a, 0x69, 0x63, 0x6f, 0x4b, 0x53, 0x6f, 0x72, 0x4c, 0x43, 0x30, 0x75, 0x0a, 0x09, 0x4c, 0x7a, 0x41, 0x78, 0x4d, 0x6a, 0x4d, 0x30, 0x4e, 0x54, 0x59, 0x33, 0x4f, 0x44, 0x6b, 0x36, 0x4f, 0x7a, 0x77, 0x39, 0x50, 0x6a, 0x39, 0x41, 0x51, 0x55, 0x4a, 0x44, 0x52, 0x45, 0x56, 0x47, 0x52, 0x30, 0x68, 0x4a, 0x53, 0x6b, 0x74, 0x4d, 0x54, 0x55, 0x35, 0x50, 0x55, 0x46, 0x46, 0x53, 0x55, 0x31, 0x52, 0x56, 0x56, 0x6c, 0x64, 0x59, 0x57, 0x56, 0x70, 0x62, 0x58, 0x46, 0x31, 0x65, 0x58, 0x32, 0x42, 0x68, 0x41, 0x47, 0x4a, 0x6a, 0x0a, 0x09, 0x5a, 0x47, 0x56, 0x6d, 0x5a, 0x32, 0x68, 0x70, 0x61, 0x6d, 0x74, 0x73, 0x62, 0x57, 0x35, 0x76, 0x63, 0x48, 0x46, 0x79, 0x63, 0x33, 0x52, 0x31, 0x64, 0x6e, 0x64, 0x34, 0x65, 0x58, 0x70, 0x37, 0x66, 0x48, 0x31, 0x2b, 0x66, 0x34, 0x43, 0x42, 0x67, 0x6f, 0x4f, 0x45, 0x68, 0x59, 0x61, 0x48, 0x69, 0x49, 0x6d, 0x4b, 0x69, 0x34, 0x79, 0x4e, 0x6a, 0x6f, 0x2b, 0x51, 0x6b, 0x5a, 0x4b, 0x54, 0x6c, 0x4a, 0x57, 0x57, 0x6c, 0x35, 0x69, 0x5a, 0x0a, 0x09, 0x6d, 0x70, 0x75, 0x63, 0x6e, 0x5a, 0x36, 0x66, 0x6f, 0x4b, 0x47, 0x69, 0x6f, 0x36, 0x53, 0x6c, 0x70, 0x71, 0x65, 0x6f, 0x71, 0x61, 0x71, 0x72, 0x72, 0x4b, 0x32, 0x75, 0x72, 0x37, 0x43, 0x78, 0x73, 0x72, 0x4f, 0x30, 0x74, 0x62, 0x61, 0x33, 0x75, 0x4c, 0x6d, 0x36, 0x75, 0x37, 0x79, 0x39, 0x76, 0x72, 0x2f, 0x41, 0x77, 0x63, 0x4c, 0x44, 0x78, 0x4d, 0x58, 0x47, 0x78, 0x38, 0x6a, 0x4a, 0x79, 0x73, 0x76, 0x4d, 0x7a, 0x63, 0x37, 0x50, 0x0a, 0x09, 0x30, 0x4e, 0x45, 0x41, 0x30, 0x74, 0x50, 0x55, 0x31, 0x64, 0x62, 0x58, 0x32, 0x4e, 0x6e, 0x61, 0x32, 0x39, 0x7a, 0x64, 0x33, 0x74, 0x2f, 0x67, 0x41, 0x41, 0x51, 0x43, 0x50, 0x67, 0x41, 0x41, 0x41, 0x44, 0x6f, 0x41, 0x49, 0x41, 0x41, 0x45, 0x41, 0x42, 0x6f, 0x41, 0x66, 0x67, 0x44, 0x2f, 0x41, 0x51, 0x63, 0x42, 0x45, 0x51, 0x45, 0x66, 0x41, 0x54, 0x45, 0x42, 0x51, 0x67, 0x46, 0x54, 0x41, 0x57, 0x45, 0x42, 0x65, 0x41, 0x46, 0x2b, 0x0a, 0x09, 0x41, 0x5a, 0x49, 0x43, 0x78, 0x77, 0x4c, 0x64, 0x41, 0x36, 0x6b, 0x44, 0x77, 0x43, 0x41, 0x6d, 0x49, 0x44, 0x41, 0x67, 0x4f, 0x69, 0x43, 0x73, 0x49, 0x53, 0x49, 0x69, 0x42, 0x69, 0x49, 0x65, 0x49, 0x69, 0x73, 0x69, 0x53, 0x43, 0x4a, 0x6c, 0x4a, 0x63, 0x72, 0x37, 0x41, 0x76, 0x2f, 0x2f, 0x41, 0x41, 0x41, 0x41, 0x49, 0x41, 0x43, 0x67, 0x41, 0x51, 0x59, 0x42, 0x44, 0x41, 0x45, 0x65, 0x41, 0x54, 0x41, 0x42, 0x51, 0x51, 0x46, 0x53, 0x0a, 0x09, 0x41, 0x56, 0x34, 0x42, 0x65, 0x41, 0x46, 0x39, 0x41, 0x5a, 0x49, 0x43, 0x78, 0x67, 0x4c, 0x59, 0x41, 0x36, 0x6b, 0x44, 0x77, 0x43, 0x41, 0x54, 0x49, 0x44, 0x41, 0x67, 0x4f, 0x53, 0x43, 0x73, 0x49, 0x53, 0x49, 0x69, 0x41, 0x69, 0x49, 0x50, 0x49, 0x69, 0x73, 0x69, 0x53, 0x43, 0x4a, 0x67, 0x4a, 0x63, 0x72, 0x37, 0x41, 0x66, 0x2f, 0x2f, 0x2f, 0x2b, 0x4d, 0x41, 0x41, 0x50, 0x2f, 0x31, 0x41, 0x41, 0x44, 0x2f, 0x32, 0x41, 0x41, 0x41, 0x0a, 0x09, 0x2f, 0x36, 0x44, 0x2f, 0x58, 0x67, 0x41, 0x41, 0x2f, 0x30, 0x50, 0x2f, 0x61, 0x50, 0x38, 0x55, 0x41, 0x41, 0x41, 0x41, 0x41, 0x50, 0x7a, 0x32, 0x2f, 0x4e, 0x73, 0x41, 0x41, 0x4f, 0x43, 0x57, 0x34, 0x49, 0x58, 0x67, 0x56, 0x74, 0x39, 0x71, 0x41, 0x41, 0x41, 0x41, 0x41, 0x4e, 0x35, 0x78, 0x33, 0x6c, 0x38, 0x41, 0x41, 0x4e, 0x72, 0x76, 0x42, 0x62, 0x38, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x44, 0x67, 0x41, 0x41, 0x41, 0x44, 0x30, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x2f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x2b, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x44, 0x36, 0x41, 0x50, 0x77, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x51, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x45, 0x67, 0x41, 0x53, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x55, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x72, 0x41, 0x43, 0x6a, 0x0a, 0x09, 0x41, 0x49, 0x51, 0x41, 0x68, 0x51, 0x43, 0x39, 0x41, 0x4a, 0x59, 0x41, 0x35, 0x77, 0x43, 0x47, 0x41, 0x49, 0x34, 0x41, 0x69, 0x77, 0x43, 0x64, 0x41, 0x4b, 0x6b, 0x41, 0x70, 0x41, 0x45, 0x41, 0x41, 0x49, 0x6f, 0x41, 0x32, 0x51, 0x43, 0x44, 0x41, 0x4a, 0x4d, 0x41, 0x38, 0x51, 0x44, 0x79, 0x41, 0x49, 0x30, 0x41, 0x6c, 0x77, 0x43, 0x49, 0x41, 0x4d, 0x4d, 0x41, 0x33, 0x51, 0x44, 0x77, 0x41, 0x4a, 0x34, 0x41, 0x71, 0x67, 0x44, 0x7a, 0x0a, 0x09, 0x41, 0x50, 0x51, 0x41, 0x39, 0x51, 0x43, 0x69, 0x41, 0x4b, 0x30, 0x41, 0x79, 0x51, 0x44, 0x48, 0x41, 0x4b, 0x34, 0x41, 0x59, 0x67, 0x42, 0x6a, 0x41, 0x4a, 0x41, 0x41, 0x5a, 0x41, 0x44, 0x4c, 0x41, 0x47, 0x55, 0x41, 0x79, 0x41, 0x44, 0x4b, 0x41, 0x4d, 0x38, 0x41, 0x7a, 0x41, 0x44, 0x4e, 0x41, 0x4d, 0x34, 0x41, 0x36, 0x41, 0x42, 0x6d, 0x41, 0x4e, 0x49, 0x41, 0x30, 0x41, 0x44, 0x52, 0x41, 0x4b, 0x38, 0x41, 0x5a, 0x77, 0x44, 0x76, 0x0a, 0x09, 0x41, 0x4a, 0x45, 0x41, 0x31, 0x51, 0x44, 0x54, 0x41, 0x4e, 0x51, 0x41, 0x61, 0x41, 0x44, 0x71, 0x41, 0x4f, 0x77, 0x41, 0x69, 0x51, 0x42, 0x71, 0x41, 0x47, 0x6b, 0x41, 0x61, 0x77, 0x42, 0x74, 0x41, 0x47, 0x77, 0x41, 0x62, 0x67, 0x43, 0x67, 0x41, 0x47, 0x38, 0x41, 0x63, 0x51, 0x42, 0x77, 0x41, 0x48, 0x49, 0x41, 0x63, 0x77, 0x42, 0x31, 0x41, 0x48, 0x51, 0x41, 0x64, 0x67, 0x42, 0x33, 0x41, 0x4f, 0x6b, 0x41, 0x65, 0x41, 0x42, 0x36, 0x0a, 0x09, 0x41, 0x48, 0x6b, 0x41, 0x65, 0x77, 0x42, 0x39, 0x41, 0x48, 0x77, 0x41, 0x75, 0x41, 0x43, 0x68, 0x41, 0x48, 0x38, 0x41, 0x66, 0x67, 0x43, 0x41, 0x41, 0x49, 0x45, 0x41, 0x36, 0x77, 0x44, 0x74, 0x41, 0x4c, 0x6f, 0x41, 0x2f, 0x51, 0x44, 0x2b, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x50, 0x38, 0x41, 0x2b, 0x41, 0x44, 0x57, 0x41, 0x50, 0x6b, 0x41, 0x2b, 0x67, 0x44, 0x6a, 0x41, 0x4f, 0x51, 0x41, 0x31, 0x77, 0x44, 0x67, 0x0a, 0x09, 0x41, 0x4e, 0x6f, 0x41, 0x32, 0x77, 0x44, 0x63, 0x41, 0x4e, 0x38, 0x41, 0x32, 0x41, 0x44, 0x65, 0x41, 0x4c, 0x49, 0x41, 0x73, 0x77, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43, 0x32, 0x41, 0x4c, 0x63, 0x41, 0x78, 0x41, 0x41, 0x41, 0x41, 0x4c, 0x51, 0x41, 0x74, 0x51, 0x44, 0x46, 0x41, 0x41, 0x41, 0x41, 0x67, 0x67, 0x44, 0x43, 0x41, 0x49, 0x63, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x71, 0x77, 0x43, 0x59, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x4b, 0x67, 0x41, 0x6d, 0x67, 0x41, 0x41, 0x41, 0x4a, 0x6b, 0x41, 0x37, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x76, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x45, 0x42, 0x41, 0x4b, 0x55, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x67, 0x43, 0x50, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x4a, 0x51, 0x41, 0x6c, 0x51, 0x54, 0x4e, 0x0a, 0x09, 0x41, 0x47, 0x59, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x6f, 0x73, 0x41, 0x41, 0x41, 0x4b, 0x4c, 0x41, 0x41, 0x41, 0x44, 0x4e, 0x51, 0x45, 0x31, 0x41, 0x36, 0x34, 0x41, 0x78, 0x51, 0x61, 0x30, 0x41, 0x4a, 0x34, 0x46, 0x46, 0x77, 0x43, 0x71, 0x42, 0x35, 0x6f, 0x41, 0x63, 0x51, 0x59, 0x39, 0x41, 0x49, 0x45, 0x43, 0x4d, 0x77, 0x44, 0x46, 0x41, 0x78, 0x38, 0x41, 0x73, 0x41, 0x4d, 0x66, 0x41, 0x4b, 0x51, 0x45, 0x41, 0x41, 0x41, 0x39, 0x0a, 0x09, 0x42, 0x72, 0x51, 0x41, 0x32, 0x51, 0x4b, 0x4c, 0x41, 0x4a, 0x34, 0x43, 0x34, 0x77, 0x42, 0x6b, 0x41, 0x6f, 0x73, 0x41, 0x32, 0x77, 0x4b, 0x79, 0x41, 0x41, 0x41, 0x46, 0x46, 0x77, 0x43, 0x48, 0x42, 0x52, 0x63, 0x41, 0x34, 0x51, 0x55, 0x58, 0x41, 0x4a, 0x59, 0x46, 0x46, 0x77, 0x43, 0x63, 0x42, 0x52, 0x63, 0x41, 0x5a, 0x41, 0x55, 0x58, 0x41, 0x4a, 0x34, 0x46, 0x46, 0x77, 0x43, 0x50, 0x42, 0x52, 0x63, 0x41, 0x71, 0x41, 0x55, 0x58, 0x0a, 0x09, 0x41, 0x49, 0x73, 0x46, 0x46, 0x77, 0x43, 0x42, 0x41, 0x72, 0x49, 0x41, 0x38, 0x41, 0x4b, 0x79, 0x41, 0x4a, 0x34, 0x47, 0x74, 0x41, 0x44, 0x5a, 0x42, 0x72, 0x51, 0x41, 0x32, 0x51, 0x61, 0x30, 0x41, 0x4e, 0x6b, 0x45, 0x50, 0x77, 0x43, 0x54, 0x43, 0x41, 0x41, 0x41, 0x68, 0x77, 0x56, 0x35, 0x41, 0x42, 0x41, 0x46, 0x66, 0x51, 0x44, 0x4a, 0x42, 0x5a, 0x59, 0x41, 0x63, 0x77, 0x59, 0x70, 0x41, 0x4d, 0x6b, 0x46, 0x44, 0x67, 0x44, 0x4a, 0x0a, 0x09, 0x42, 0x4a, 0x6f, 0x41, 0x79, 0x51, 0x59, 0x7a, 0x41, 0x48, 0x4d, 0x47, 0x42, 0x41, 0x44, 0x4a, 0x41, 0x6c, 0x77, 0x41, 0x79, 0x51, 0x4a, 0x63, 0x2f, 0x35, 0x59, 0x46, 0x50, 0x77, 0x44, 0x4a, 0x42, 0x48, 0x55, 0x41, 0x79, 0x51, 0x62, 0x6e, 0x41, 0x4d, 0x6b, 0x46, 0x2f, 0x41, 0x44, 0x4a, 0x42, 0x6b, 0x77, 0x41, 0x63, 0x77, 0x54, 0x54, 0x41, 0x4d, 0x6b, 0x47, 0x54, 0x41, 0x42, 0x7a, 0x42, 0x59, 0x38, 0x41, 0x79, 0x51, 0x55, 0x55, 0x0a, 0x09, 0x41, 0x49, 0x63, 0x45, 0x34, 0x2f, 0x2f, 0x36, 0x42, 0x64, 0x73, 0x41, 0x73, 0x67, 0x56, 0x35, 0x41, 0x42, 0x41, 0x48, 0x36, 0x51, 0x42, 0x45, 0x42, 0x58, 0x73, 0x41, 0x50, 0x51, 0x54, 0x6a, 0x2f, 0x2f, 0x77, 0x46, 0x65, 0x77, 0x42, 0x63, 0x41, 0x78, 0x38, 0x41, 0x73, 0x41, 0x4b, 0x79, 0x41, 0x41, 0x41, 0x44, 0x48, 0x77, 0x44, 0x48, 0x42, 0x72, 0x51, 0x41, 0x32, 0x51, 0x51, 0x41, 0x2f, 0x2b, 0x77, 0x45, 0x41, 0x41, 0x43, 0x71, 0x0a, 0x09, 0x42, 0x4f, 0x63, 0x41, 0x65, 0x77, 0x55, 0x55, 0x41, 0x4c, 0x6f, 0x45, 0x5a, 0x67, 0x42, 0x78, 0x42, 0x52, 0x51, 0x41, 0x63, 0x51, 0x54, 0x73, 0x41, 0x48, 0x45, 0x43, 0x30, 0x51, 0x41, 0x76, 0x42, 0x52, 0x51, 0x41, 0x63, 0x51, 0x55, 0x53, 0x41, 0x4c, 0x6f, 0x43, 0x4f, 0x51, 0x44, 0x42, 0x41, 0x6a, 0x6e, 0x2f, 0x32, 0x77, 0x53, 0x69, 0x41, 0x4c, 0x6f, 0x43, 0x4f, 0x51, 0x44, 0x42, 0x42, 0x38, 0x73, 0x41, 0x75, 0x67, 0x55, 0x53, 0x0a, 0x09, 0x41, 0x4c, 0x6f, 0x45, 0x35, 0x51, 0x42, 0x78, 0x42, 0x52, 0x51, 0x41, 0x75, 0x67, 0x55, 0x55, 0x41, 0x48, 0x45, 0x44, 0x53, 0x67, 0x43, 0x36, 0x42, 0x43, 0x73, 0x41, 0x62, 0x77, 0x4d, 0x6a, 0x41, 0x44, 0x63, 0x46, 0x45, 0x67, 0x43, 0x75, 0x42, 0x4c, 0x77, 0x41, 0x50, 0x51, 0x61, 0x4c, 0x41, 0x46, 0x59, 0x45, 0x76, 0x41, 0x41, 0x37, 0x42, 0x4c, 0x77, 0x41, 0x50, 0x51, 0x51, 0x7a, 0x41, 0x46, 0x67, 0x46, 0x46, 0x77, 0x45, 0x41, 0x0a, 0x09, 0x41, 0x72, 0x49, 0x42, 0x42, 0x41, 0x55, 0x58, 0x41, 0x51, 0x41, 0x47, 0x74, 0x41, 0x44, 0x5a, 0x42, 0x58, 0x6b, 0x41, 0x45, 0x41, 0x56, 0x35, 0x41, 0x42, 0x41, 0x46, 0x6c, 0x67, 0x42, 0x7a, 0x42, 0x51, 0x34, 0x41, 0x79, 0x51, 0x58, 0x38, 0x41, 0x4d, 0x6b, 0x47, 0x54, 0x41, 0x42, 0x7a, 0x42, 0x64, 0x73, 0x41, 0x73, 0x67, 0x54, 0x6e, 0x41, 0x48, 0x73, 0x45, 0x35, 0x77, 0x42, 0x37, 0x42, 0x4f, 0x63, 0x41, 0x65, 0x77, 0x54, 0x6e, 0x0a, 0x09, 0x41, 0x48, 0x73, 0x45, 0x35, 0x77, 0x42, 0x37, 0x42, 0x4f, 0x63, 0x41, 0x65, 0x77, 0x52, 0x6d, 0x41, 0x48, 0x45, 0x45, 0x37, 0x41, 0x42, 0x78, 0x42, 0x4f, 0x77, 0x41, 0x63, 0x51, 0x54, 0x73, 0x41, 0x48, 0x45, 0x45, 0x37, 0x41, 0x42, 0x78, 0x41, 0x6a, 0x6b, 0x41, 0x6b, 0x41, 0x49, 0x35, 0x2f, 0x38, 0x63, 0x43, 0x4f, 0x66, 0x2f, 0x65, 0x41, 0x6a, 0x6e, 0x2f, 0x39, 0x41, 0x55, 0x53, 0x41, 0x4c, 0x6f, 0x45, 0x35, 0x51, 0x42, 0x78, 0x0a, 0x09, 0x42, 0x4f, 0x55, 0x41, 0x63, 0x51, 0x54, 0x6c, 0x41, 0x48, 0x45, 0x45, 0x35, 0x51, 0x42, 0x78, 0x42, 0x4f, 0x55, 0x41, 0x63, 0x51, 0x55, 0x53, 0x41, 0x4b, 0x34, 0x46, 0x45, 0x67, 0x43, 0x75, 0x42, 0x52, 0x49, 0x41, 0x72, 0x67, 0x55, 0x53, 0x41, 0x4b, 0x34, 0x45, 0x41, 0x41, 0x41, 0x35, 0x42, 0x41, 0x41, 0x41, 0x77, 0x77, 0x55, 0x58, 0x41, 0x4b, 0x77, 0x46, 0x46, 0x77, 0x43, 0x42, 0x42, 0x41, 0x41, 0x41, 0x58, 0x41, 0x53, 0x34, 0x0a, 0x09, 0x41, 0x54, 0x4d, 0x46, 0x46, 0x77, 0x43, 0x65, 0x42, 0x51, 0x6f, 0x41, 0x75, 0x67, 0x67, 0x41, 0x41, 0x52, 0x73, 0x49, 0x41, 0x41, 0x45, 0x62, 0x43, 0x41, 0x41, 0x42, 0x4a, 0x77, 0x51, 0x41, 0x41, 0x58, 0x4d, 0x45, 0x41, 0x41, 0x44, 0x58, 0x42, 0x72, 0x51, 0x41, 0x32, 0x51, 0x66, 0x4c, 0x41, 0x41, 0x67, 0x47, 0x54, 0x41, 0x42, 0x6d, 0x42, 0x71, 0x6f, 0x41, 0x33, 0x51, 0x61, 0x30, 0x41, 0x4e, 0x6b, 0x47, 0x74, 0x41, 0x44, 0x5a, 0x0a, 0x09, 0x42, 0x72, 0x51, 0x41, 0x32, 0x51, 0x55, 0x58, 0x41, 0x46, 0x49, 0x46, 0x46, 0x77, 0x43, 0x75, 0x42, 0x43, 0x4d, 0x41, 0x61, 0x41, 0x56, 0x6b, 0x41, 0x42, 0x6b, 0x47, 0x44, 0x67, 0x43, 0x63, 0x42, 0x4c, 0x62, 0x2f, 0x34, 0x51, 0x51, 0x72, 0x41, 0x43, 0x38, 0x44, 0x78, 0x51, 0x42, 0x7a, 0x41, 0x38, 0x55, 0x41, 0x59, 0x41, 0x59, 0x64, 0x41, 0x45, 0x34, 0x48, 0x32, 0x77, 0x42, 0x37, 0x42, 0x4f, 0x55, 0x41, 0x53, 0x41, 0x51, 0x2f, 0x0a, 0x09, 0x41, 0x49, 0x38, 0x44, 0x4e, 0x51, 0x45, 0x31, 0x42, 0x72, 0x51, 0x41, 0x32, 0x51, 0x55, 0x5a, 0x41, 0x44, 0x30, 0x46, 0x46, 0x77, 0x41, 0x66, 0x42, 0x72, 0x51, 0x41, 0x32, 0x51, 0x56, 0x61, 0x2f, 0x2f, 0x6f, 0x45, 0x35, 0x51, 0x43, 0x65, 0x42, 0x4f, 0x55, 0x41, 0x77, 0x51, 0x67, 0x41, 0x41, 0x4f, 0x77, 0x46, 0x46, 0x77, 0x41, 0x41, 0x42, 0x58, 0x6b, 0x41, 0x45, 0x41, 0x56, 0x35, 0x41, 0x42, 0x41, 0x47, 0x54, 0x41, 0x42, 0x7a, 0x0a, 0x09, 0x43, 0x49, 0x38, 0x41, 0x63, 0x77, 0x67, 0x76, 0x41, 0x48, 0x45, 0x45, 0x41, 0x41, 0x41, 0x41, 0x43, 0x41, 0x41, 0x41, 0x41, 0x41, 0x51, 0x6c, 0x41, 0x4b, 0x34, 0x45, 0x4a, 0x51, 0x43, 0x75, 0x41, 0x6f, 0x73, 0x41, 0x72, 0x67, 0x4b, 0x4c, 0x41, 0x4c, 0x49, 0x47, 0x74, 0x41, 0x44, 0x5a, 0x41, 0x2f, 0x51, 0x41, 0x42, 0x67, 0x53, 0x38, 0x41, 0x44, 0x30, 0x45, 0x34, 0x2f, 0x2f, 0x38, 0x41, 0x56, 0x62, 0x2b, 0x69, 0x51, 0x55, 0x58, 0x0a, 0x09, 0x41, 0x46, 0x34, 0x44, 0x4d, 0x77, 0x43, 0x65, 0x41, 0x7a, 0x4d, 0x41, 0x77, 0x51, 0x55, 0x4b, 0x41, 0x43, 0x38, 0x46, 0x43, 0x67, 0x41, 0x76, 0x42, 0x41, 0x41, 0x41, 0x4f, 0x51, 0x4b, 0x4c, 0x41, 0x4e, 0x73, 0x43, 0x69, 0x77, 0x43, 0x75, 0x42, 0x43, 0x55, 0x41, 0x72, 0x67, 0x71, 0x38, 0x41, 0x48, 0x45, 0x46, 0x65, 0x51, 0x41, 0x51, 0x42, 0x51, 0x34, 0x41, 0x79, 0x51, 0x56, 0x35, 0x41, 0x42, 0x41, 0x46, 0x44, 0x67, 0x44, 0x4a, 0x0a, 0x09, 0x42, 0x51, 0x34, 0x41, 0x79, 0x51, 0x4a, 0x63, 0x41, 0x4b, 0x49, 0x43, 0x58, 0x50, 0x2f, 0x2b, 0x41, 0x6c, 0x77, 0x41, 0x42, 0x67, 0x4a, 0x63, 0x41, 0x44, 0x73, 0x47, 0x54, 0x41, 0x42, 0x7a, 0x42, 0x6b, 0x77, 0x41, 0x63, 0x77, 0x5a, 0x4d, 0x41, 0x48, 0x4d, 0x46, 0x32, 0x77, 0x43, 0x79, 0x42, 0x64, 0x73, 0x41, 0x73, 0x67, 0x58, 0x62, 0x41, 0x4c, 0x49, 0x43, 0x4f, 0x51, 0x44, 0x42, 0x42, 0x41, 0x41, 0x41, 0x77, 0x51, 0x51, 0x41, 0x0a, 0x09, 0x41, 0x4c, 0x59, 0x45, 0x41, 0x41, 0x44, 0x56, 0x42, 0x41, 0x41, 0x41, 0x78, 0x77, 0x51, 0x41, 0x41, 0x5a, 0x6f, 0x45, 0x41, 0x41, 0x44, 0x75, 0x42, 0x41, 0x41, 0x42, 0x49, 0x77, 0x51, 0x41, 0x41, 0x50, 0x41, 0x45, 0x41, 0x41, 0x46, 0x4d, 0x42, 0x41, 0x41, 0x41, 0x77, 0x51, 0x52, 0x2f, 0x2f, 0x2f, 0x49, 0x43, 0x52, 0x67, 0x41, 0x43, 0x42, 0x52, 0x51, 0x41, 0x68, 0x77, 0x51, 0x72, 0x41, 0x47, 0x38, 0x46, 0x65, 0x77, 0x42, 0x63, 0x0a, 0x09, 0x42, 0x44, 0x4d, 0x41, 0x57, 0x41, 0x4b, 0x79, 0x41, 0x51, 0x51, 0x47, 0x4d, 0x77, 0x41, 0x4b, 0x42, 0x4f, 0x55, 0x41, 0x63, 0x51, 0x54, 0x6a, 0x2f, 0x2f, 0x77, 0x45, 0x76, 0x41, 0x41, 0x39, 0x42, 0x4e, 0x63, 0x41, 0x79, 0x51, 0x55, 0x55, 0x41, 0x4c, 0x6f, 0x47, 0x74, 0x41, 0x44, 0x5a, 0x42, 0x72, 0x51, 0x42, 0x47, 0x51, 0x4d, 0x31, 0x41, 0x49, 0x6b, 0x44, 0x4e, 0x51, 0x42, 0x65, 0x41, 0x7a, 0x55, 0x41, 0x59, 0x67, 0x66, 0x42, 0x0a, 0x09, 0x41, 0x49, 0x6b, 0x48, 0x77, 0x51, 0x43, 0x4a, 0x42, 0x38, 0x45, 0x41, 0x59, 0x67, 0x59, 0x7a, 0x41, 0x48, 0x4d, 0x46, 0x46, 0x41, 0x42, 0x78, 0x41, 0x6c, 0x77, 0x41, 0x79, 0x51, 0x55, 0x55, 0x41, 0x49, 0x63, 0x45, 0x4b, 0x77, 0x42, 0x76, 0x42, 0x5a, 0x59, 0x41, 0x63, 0x77, 0x52, 0x6d, 0x41, 0x48, 0x45, 0x46, 0x6c, 0x67, 0x42, 0x7a, 0x42, 0x47, 0x59, 0x41, 0x63, 0x51, 0x55, 0x55, 0x41, 0x48, 0x45, 0x43, 0x34, 0x77, 0x42, 0x6b, 0x0a, 0x09, 0x41, 0x6f, 0x73, 0x41, 0x32, 0x77, 0x55, 0x58, 0x41, 0x41, 0x41, 0x45, 0x41, 0x41, 0x44, 0x58, 0x42, 0x41, 0x41, 0x42, 0x63, 0x77, 0x51, 0x41, 0x41, 0x4c, 0x59, 0x45, 0x41, 0x41, 0x45, 0x4d, 0x42, 0x41, 0x41, 0x41, 0x7a, 0x77, 0x51, 0x41, 0x41, 0x4d, 0x38, 0x44, 0x4e, 0x51, 0x41, 0x2f, 0x42, 0x41, 0x41, 0x41, 0x78, 0x77, 0x51, 0x41, 0x41, 0x5a, 0x6f, 0x41, 0x41, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x50, 0x38, 0x72, 0x0a, 0x09, 0x41, 0x49, 0x38, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x45, 0x4d, 0x41, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x43, 0x41, 0x41, 0x4d, 0x41, 0x42, 0x41, 0x41, 0x46, 0x41, 0x41, 0x59, 0x41, 0x42, 0x77, 0x41, 0x49, 0x41, 0x41, 0x6b, 0x41, 0x43, 0x67, 0x41, 0x4c, 0x41, 0x41, 0x77, 0x41, 0x44, 0x51, 0x41, 0x4f, 0x0a, 0x09, 0x41, 0x41, 0x38, 0x41, 0x45, 0x41, 0x41, 0x52, 0x41, 0x42, 0x49, 0x41, 0x45, 0x77, 0x41, 0x55, 0x41, 0x42, 0x55, 0x41, 0x46, 0x67, 0x41, 0x58, 0x41, 0x42, 0x67, 0x41, 0x47, 0x51, 0x41, 0x61, 0x41, 0x42, 0x73, 0x41, 0x48, 0x41, 0x41, 0x64, 0x41, 0x42, 0x34, 0x41, 0x48, 0x77, 0x41, 0x67, 0x41, 0x43, 0x45, 0x41, 0x49, 0x67, 0x41, 0x6a, 0x41, 0x43, 0x51, 0x41, 0x4a, 0x51, 0x41, 0x6d, 0x41, 0x43, 0x63, 0x41, 0x4b, 0x41, 0x41, 0x70, 0x0a, 0x09, 0x41, 0x43, 0x6f, 0x41, 0x4b, 0x77, 0x41, 0x73, 0x41, 0x43, 0x30, 0x41, 0x4c, 0x67, 0x41, 0x76, 0x41, 0x44, 0x41, 0x41, 0x4d, 0x51, 0x41, 0x79, 0x41, 0x44, 0x4d, 0x41, 0x4e, 0x41, 0x41, 0x31, 0x41, 0x44, 0x59, 0x41, 0x4e, 0x77, 0x41, 0x34, 0x41, 0x44, 0x6b, 0x41, 0x4f, 0x67, 0x41, 0x37, 0x41, 0x44, 0x77, 0x41, 0x50, 0x51, 0x41, 0x2b, 0x41, 0x44, 0x38, 0x41, 0x51, 0x41, 0x42, 0x42, 0x41, 0x45, 0x49, 0x41, 0x51, 0x77, 0x42, 0x45, 0x0a, 0x09, 0x41, 0x45, 0x55, 0x41, 0x52, 0x67, 0x42, 0x48, 0x41, 0x45, 0x67, 0x41, 0x53, 0x51, 0x42, 0x4b, 0x41, 0x45, 0x73, 0x41, 0x54, 0x41, 0x42, 0x4e, 0x41, 0x45, 0x34, 0x41, 0x54, 0x77, 0x42, 0x51, 0x41, 0x46, 0x45, 0x41, 0x55, 0x67, 0x42, 0x54, 0x41, 0x46, 0x51, 0x41, 0x56, 0x51, 0x42, 0x57, 0x41, 0x46, 0x63, 0x41, 0x57, 0x41, 0x42, 0x5a, 0x41, 0x46, 0x6f, 0x41, 0x57, 0x77, 0x42, 0x63, 0x41, 0x46, 0x30, 0x41, 0x58, 0x67, 0x42, 0x66, 0x0a, 0x09, 0x41, 0x47, 0x41, 0x41, 0x59, 0x51, 0x42, 0x69, 0x41, 0x47, 0x4d, 0x41, 0x5a, 0x41, 0x42, 0x6c, 0x41, 0x47, 0x59, 0x41, 0x5a, 0x77, 0x42, 0x6f, 0x41, 0x47, 0x6b, 0x41, 0x61, 0x67, 0x42, 0x72, 0x41, 0x47, 0x77, 0x41, 0x62, 0x51, 0x42, 0x75, 0x41, 0x47, 0x38, 0x41, 0x63, 0x41, 0x42, 0x78, 0x41, 0x48, 0x49, 0x41, 0x63, 0x77, 0x42, 0x30, 0x41, 0x48, 0x55, 0x41, 0x64, 0x67, 0x42, 0x33, 0x41, 0x48, 0x67, 0x41, 0x65, 0x51, 0x42, 0x36, 0x0a, 0x09, 0x41, 0x48, 0x73, 0x41, 0x66, 0x41, 0x42, 0x39, 0x41, 0x48, 0x34, 0x41, 0x66, 0x77, 0x43, 0x41, 0x41, 0x49, 0x45, 0x41, 0x67, 0x67, 0x43, 0x44, 0x41, 0x49, 0x51, 0x41, 0x68, 0x51, 0x43, 0x47, 0x41, 0x49, 0x63, 0x41, 0x69, 0x41, 0x43, 0x4a, 0x41, 0x49, 0x6f, 0x41, 0x69, 0x77, 0x43, 0x4d, 0x41, 0x49, 0x30, 0x41, 0x6a, 0x67, 0x43, 0x50, 0x41, 0x4a, 0x41, 0x41, 0x6b, 0x51, 0x43, 0x53, 0x41, 0x4a, 0x4d, 0x41, 0x6c, 0x41, 0x43, 0x56, 0x0a, 0x09, 0x41, 0x4a, 0x59, 0x41, 0x6c, 0x77, 0x43, 0x59, 0x41, 0x4a, 0x6b, 0x41, 0x6d, 0x67, 0x43, 0x62, 0x41, 0x4a, 0x77, 0x41, 0x6e, 0x51, 0x43, 0x65, 0x41, 0x4a, 0x38, 0x41, 0x6f, 0x41, 0x43, 0x68, 0x41, 0x4b, 0x49, 0x41, 0x6f, 0x77, 0x43, 0x6b, 0x41, 0x4b, 0x55, 0x41, 0x70, 0x67, 0x43, 0x6e, 0x41, 0x4b, 0x67, 0x41, 0x71, 0x51, 0x43, 0x71, 0x41, 0x4b, 0x73, 0x41, 0x72, 0x41, 0x43, 0x74, 0x41, 0x4b, 0x34, 0x41, 0x72, 0x77, 0x43, 0x77, 0x0a, 0x09, 0x41, 0x4c, 0x45, 0x41, 0x73, 0x67, 0x43, 0x7a, 0x41, 0x4c, 0x51, 0x41, 0x74, 0x51, 0x43, 0x32, 0x41, 0x4c, 0x63, 0x41, 0x75, 0x41, 0x43, 0x35, 0x41, 0x4c, 0x6f, 0x41, 0x75, 0x77, 0x43, 0x38, 0x41, 0x4c, 0x30, 0x41, 0x76, 0x67, 0x43, 0x2f, 0x41, 0x4d, 0x41, 0x41, 0x77, 0x51, 0x44, 0x43, 0x41, 0x4d, 0x4d, 0x41, 0x78, 0x41, 0x44, 0x46, 0x41, 0x4d, 0x59, 0x41, 0x78, 0x77, 0x44, 0x49, 0x41, 0x4d, 0x6b, 0x41, 0x79, 0x67, 0x44, 0x4c, 0x0a, 0x09, 0x41, 0x4d, 0x77, 0x41, 0x7a, 0x51, 0x44, 0x4f, 0x41, 0x4d, 0x38, 0x41, 0x30, 0x41, 0x44, 0x52, 0x41, 0x4e, 0x4d, 0x41, 0x31, 0x41, 0x44, 0x56, 0x41, 0x4e, 0x59, 0x41, 0x31, 0x77, 0x44, 0x59, 0x41, 0x4e, 0x6b, 0x41, 0x32, 0x67, 0x44, 0x62, 0x41, 0x4e, 0x77, 0x41, 0x33, 0x51, 0x44, 0x65, 0x41, 0x4e, 0x38, 0x41, 0x34, 0x41, 0x44, 0x68, 0x41, 0x4f, 0x49, 0x41, 0x34, 0x77, 0x44, 0x6b, 0x41, 0x4f, 0x55, 0x41, 0x35, 0x67, 0x44, 0x6e, 0x0a, 0x09, 0x41, 0x4f, 0x67, 0x41, 0x36, 0x51, 0x44, 0x71, 0x41, 0x4f, 0x73, 0x41, 0x37, 0x41, 0x44, 0x74, 0x41, 0x4f, 0x34, 0x41, 0x37, 0x77, 0x44, 0x77, 0x41, 0x50, 0x45, 0x41, 0x38, 0x67, 0x44, 0x7a, 0x41, 0x50, 0x55, 0x41, 0x39, 0x41, 0x44, 0x32, 0x41, 0x50, 0x67, 0x41, 0x2b, 0x51, 0x44, 0x36, 0x41, 0x50, 0x73, 0x41, 0x2f, 0x41, 0x44, 0x39, 0x41, 0x50, 0x34, 0x41, 0x2f, 0x77, 0x45, 0x41, 0x41, 0x51, 0x45, 0x42, 0x41, 0x67, 0x45, 0x44, 0x0a, 0x09, 0x41, 0x51, 0x51, 0x42, 0x42, 0x51, 0x45, 0x47, 0x41, 0x51, 0x63, 0x42, 0x43, 0x41, 0x45, 0x4a, 0x41, 0x51, 0x6f, 0x42, 0x43, 0x77, 0x45, 0x4d, 0x41, 0x51, 0x30, 0x4a, 0x63, 0x32, 0x5a, 0x30, 0x61, 0x48, 0x6c, 0x77, 0x61, 0x47, 0x56, 0x75, 0x44, 0x6e, 0x42, 0x6c, 0x63, 0x6d, 0x6c, 0x76, 0x5a, 0x47, 0x4e, 0x6c, 0x62, 0x6e, 0x52, 0x6c, 0x63, 0x6d, 0x56, 0x6b, 0x42, 0x45, 0x56, 0x31, 0x63, 0x6d, 0x38, 0x46, 0x59, 0x7a, 0x59, 0x30, 0x0a, 0x09, 0x4e, 0x54, 0x6b, 0x46, 0x59, 0x7a, 0x59, 0x30, 0x4e, 0x6a, 0x41, 0x46, 0x59, 0x7a, 0x59, 0x30, 0x4e, 0x6a, 0x45, 0x46, 0x59, 0x7a, 0x59, 0x30, 0x4e, 0x6a, 0x49, 0x46, 0x59, 0x7a, 0x59, 0x30, 0x4e, 0x6a, 0x4d, 0x46, 0x59, 0x7a, 0x59, 0x30, 0x4e, 0x6a, 0x59, 0x46, 0x59, 0x7a, 0x59, 0x30, 0x4e, 0x6a, 0x63, 0x46, 0x59, 0x7a, 0x59, 0x30, 0x4e, 0x6a, 0x67, 0x46, 0x59, 0x7a, 0x59, 0x30, 0x4e, 0x6a, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x43, 0x49, 0x41, 0x49, 0x67, 0x41, 0x69, 0x41, 0x43, 0x49, 0x41, 0x57, 0x41, 0x43, 0x54, 0x41, 0x50, 0x38, 0x42, 0x74, 0x67, 0x4a, 0x50, 0x41, 0x34, 0x4d, 0x44, 0x73, 0x67, 0x50, 0x32, 0x42, 0x43, 0x45, 0x45, 0x62, 0x67, 0x53, 0x59, 0x42, 0x4c, 0x51, 0x45, 0x79, 0x67, 0x54, 0x65, 0x42, 0x51, 0x4d, 0x46, 0x52, 0x51, 0x57, 0x43, 0x42, 0x67, 0x55, 0x47, 0x66, 0x67, 0x62, 0x68, 0x42, 0x30, 0x77, 0x48, 0x74, 0x77, 0x66, 0x38, 0x0a, 0x09, 0x43, 0x47, 0x55, 0x49, 0x7a, 0x77, 0x6a, 0x75, 0x43, 0x52, 0x59, 0x4a, 0x55, 0x67, 0x6c, 0x7a, 0x43, 0x61, 0x34, 0x4b, 0x48, 0x77, 0x72, 0x66, 0x43, 0x31, 0x67, 0x4c, 0x73, 0x41, 0x76, 0x37, 0x44, 0x44, 0x6f, 0x4d, 0x61, 0x51, 0x79, 0x54, 0x44, 0x4f, 0x59, 0x4e, 0x46, 0x41, 0x30, 0x39, 0x44, 0x58, 0x6f, 0x4f, 0x44, 0x51, 0x34, 0x76, 0x44, 0x71, 0x77, 0x50, 0x41, 0x41, 0x39, 0x46, 0x44, 0x34, 0x55, 0x50, 0x36, 0x78, 0x42, 0x31, 0x0a, 0x09, 0x45, 0x50, 0x45, 0x52, 0x4b, 0x52, 0x46, 0x77, 0x45, 0x65, 0x41, 0x53, 0x76, 0x52, 0x4f, 0x4b, 0x45, 0x2b, 0x73, 0x55, 0x55, 0x42, 0x53, 0x4c, 0x46, 0x4c, 0x45, 0x55, 0x34, 0x52, 0x55, 0x44, 0x46, 0x52, 0x67, 0x56, 0x51, 0x42, 0x58, 0x57, 0x46, 0x69, 0x49, 0x57, 0x62, 0x52, 0x61, 0x35, 0x46, 0x79, 0x4d, 0x58, 0x65, 0x78, 0x66, 0x66, 0x47, 0x42, 0x73, 0x59, 0x51, 0x78, 0x69, 0x41, 0x47, 0x50, 0x67, 0x5a, 0x46, 0x68, 0x6c, 0x33, 0x0a, 0x09, 0x47, 0x62, 0x4d, 0x61, 0x42, 0x42, 0x70, 0x53, 0x47, 0x71, 0x45, 0x61, 0x32, 0x42, 0x75, 0x48, 0x47, 0x38, 0x51, 0x63, 0x41, 0x42, 0x79, 0x64, 0x48, 0x62, 0x6f, 0x65, 0x68, 0x78, 0x39, 0x33, 0x48, 0x2b, 0x67, 0x67, 0x57, 0x79, 0x42, 0x79, 0x49, 0x50, 0x4d, 0x68, 0x4e, 0x53, 0x46, 0x43, 0x49, 0x65, 0x49, 0x68, 0x37, 0x79, 0x48, 0x38, 0x49, 0x67, 0x6b, 0x69, 0x46, 0x69, 0x49, 0x6a, 0x49, 0x6a, 0x41, 0x69, 0x50, 0x53, 0x4a, 0x4b, 0x0a, 0x09, 0x49, 0x6c, 0x63, 0x69, 0x5a, 0x43, 0x4a, 0x78, 0x49, 0x6e, 0x34, 0x69, 0x69, 0x79, 0x4b, 0x59, 0x49, 0x71, 0x55, 0x69, 0x73, 0x69, 0x4b, 0x2f, 0x49, 0x73, 0x77, 0x69, 0x32, 0x53, 0x4c, 0x6d, 0x49, 0x76, 0x4d, 0x6a, 0x41, 0x43, 0x4d, 0x4e, 0x49, 0x78, 0x6f, 0x6a, 0x4a, 0x79, 0x4d, 0x30, 0x49, 0x30, 0x45, 0x6a, 0x54, 0x69, 0x4e, 0x62, 0x49, 0x32, 0x67, 0x6a, 0x6c, 0x43, 0x50, 0x50, 0x4a, 0x44, 0x51, 0x6b, 0x6a, 0x79, 0x55, 0x7a, 0x0a, 0x09, 0x4a, 0x56, 0x4d, 0x6c, 0x67, 0x53, 0x59, 0x55, 0x4a, 0x72, 0x6f, 0x6e, 0x53, 0x79, 0x65, 0x51, 0x4a, 0x37, 0x63, 0x6f, 0x45, 0x79, 0x68, 0x59, 0x4b, 0x4d, 0x4d, 0x70, 0x58, 0x79, 0x6f, 0x6c, 0x4b, 0x6c, 0x77, 0x71, 0x6f, 0x79, 0x72, 0x70, 0x4b, 0x33, 0x6f, 0x72, 0x30, 0x79, 0x78, 0x45, 0x4c, 0x49, 0x38, 0x73, 0x73, 0x53, 0x31, 0x51, 0x4c, 0x61, 0x41, 0x75, 0x44, 0x69, 0x35, 0x53, 0x4c, 0x71, 0x6f, 0x76, 0x68, 0x7a, 0x42, 0x42, 0x0a, 0x09, 0x4d, 0x4c, 0x30, 0x78, 0x42, 0x54, 0x45, 0x68, 0x4d, 0x56, 0x41, 0x78, 0x7a, 0x7a, 0x4a, 0x49, 0x4d, 0x6e, 0x6f, 0x79, 0x33, 0x7a, 0x4e, 0x47, 0x4d, 0x33, 0x41, 0x7a, 0x63, 0x44, 0x4e, 0x39, 0x4d, 0x34, 0x6f, 0x7a, 0x6c, 0x7a, 0x50, 0x6d, 0x4e, 0x48, 0x6f, 0x30, 0x6a, 0x7a, 0x53, 0x6a, 0x4e, 0x4e, 0x45, 0x30, 0x2f, 0x7a, 0x55, 0x63, 0x4e, 0x54, 0x6b, 0x31, 0x5a, 0x7a, 0x57, 0x52, 0x4e, 0x5a, 0x34, 0x31, 0x71, 0x7a, 0x58, 0x50, 0x0a, 0x09, 0x4e, 0x6c, 0x73, 0x32, 0x6b, 0x7a, 0x62, 0x4e, 0x4e, 0x30, 0x4d, 0x33, 0x71, 0x54, 0x66, 0x72, 0x4f, 0x41, 0x41, 0x34, 0x48, 0x44, 0x68, 0x4b, 0x4f, 0x51, 0x38, 0x35, 0x48, 0x44, 0x6b, 0x70, 0x4f, 0x54, 0x59, 0x35, 0x51, 0x7a, 0x6c, 0x51, 0x4f, 0x56, 0x30, 0x35, 0x61, 0x6a, 0x6c, 0x33, 0x4f, 0x59, 0x51, 0x35, 0x6b, 0x54, 0x6d, 0x65, 0x4f, 0x61, 0x73, 0x35, 0x75, 0x44, 0x6e, 0x46, 0x4f, 0x64, 0x49, 0x35, 0x37, 0x7a, 0x6f, 0x63, 0x0a, 0x09, 0x4f, 0x6e, 0x73, 0x36, 0x6f, 0x44, 0x72, 0x6c, 0x4f, 0x77, 0x67, 0x37, 0x58, 0x6a, 0x75, 0x4f, 0x4f, 0x38, 0x51, 0x37, 0x39, 0x44, 0x77, 0x69, 0x50, 0x46, 0x38, 0x38, 0x70, 0x7a, 0x79, 0x30, 0x50, 0x4d, 0x45, 0x38, 0x7a, 0x6a, 0x7a, 0x62, 0x50, 0x50, 0x34, 0x39, 0x59, 0x7a, 0x34, 0x37, 0x50, 0x6b, 0x67, 0x2b, 0x56, 0x54, 0x36, 0x59, 0x50, 0x75, 0x63, 0x2b, 0x2f, 0x54, 0x39, 0x68, 0x50, 0x34, 0x30, 0x2f, 0x33, 0x45, 0x41, 0x36, 0x0a, 0x09, 0x51, 0x45, 0x74, 0x41, 0x58, 0x45, 0x42, 0x74, 0x51, 0x48, 0x70, 0x41, 0x68, 0x30, 0x43, 0x55, 0x51, 0x4b, 0x46, 0x41, 0x72, 0x6b, 0x43, 0x37, 0x51, 0x4d, 0x68, 0x41, 0x31, 0x55, 0x44, 0x69, 0x51, 0x55, 0x42, 0x42, 0x56, 0x6b, 0x46, 0x72, 0x51, 0x6b, 0x56, 0x43, 0x71, 0x6b, 0x4c, 0x33, 0x51, 0x31, 0x39, 0x44, 0x73, 0x6b, 0x50, 0x2f, 0x52, 0x46, 0x56, 0x45, 0x32, 0x30, 0x55, 0x71, 0x52, 0x54, 0x38, 0x41, 0x41, 0x41, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x45, 0x41, 0x41, 0x43, 0x32, 0x47, 0x41, 0x41, 0x45, 0x48, 0x6c, 0x42, 0x67, 0x41, 0x41, 0x41, 0x6f, 0x56, 0x65, 0x41, 0x41, 0x51, 0x41, 0x43, 0x54, 0x2f, 0x30, 0x77, 0x41, 0x51, 0x41, 0x43, 0x58, 0x2f, 0x74, 0x77, 0x41, 0x51, 0x41, 0x43, 0x59, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x43, 0x63, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x43, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x43, 0x6f, 0x41, 0x53, 0x77, 0x41, 0x51, 0x0a, 0x09, 0x41, 0x43, 0x73, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x43, 0x30, 0x41, 0x63, 0x67, 0x41, 0x51, 0x41, 0x43, 0x34, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x43, 0x38, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x44, 0x49, 0x41, 0x4f, 0x51, 0x41, 0x51, 0x41, 0x44, 0x4d, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x44, 0x51, 0x41, 0x53, 0x77, 0x41, 0x51, 0x41, 0x44, 0x55, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x44, 0x66, 0x2f, 0x52, 0x41, 0x41, 0x51, 0x0a, 0x09, 0x41, 0x44, 0x6e, 0x2f, 0x69, 0x41, 0x41, 0x51, 0x41, 0x44, 0x72, 0x2f, 0x72, 0x51, 0x41, 0x51, 0x41, 0x44, 0x76, 0x2f, 0x6d, 0x67, 0x41, 0x51, 0x41, 0x44, 0x7a, 0x2f, 0x44, 0x51, 0x41, 0x51, 0x41, 0x44, 0x30, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x45, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x46, 0x45, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x46, 0x49, 0x41, 0x4a, 0x67, 0x41, 0x51, 0x41, 0x46, 0x55, 0x41, 0x41, 0x41, 0x41, 0x51, 0x0a, 0x09, 0x41, 0x46, 0x6e, 0x2f, 0x79, 0x51, 0x41, 0x51, 0x41, 0x46, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x46, 0x7a, 0x2f, 0x33, 0x41, 0x41, 0x51, 0x41, 0x47, 0x4c, 0x2f, 0x30, 0x77, 0x41, 0x51, 0x41, 0x47, 0x51, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x47, 0x63, 0x41, 0x4f, 0x51, 0x41, 0x51, 0x41, 0x48, 0x67, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x48, 0x6b, 0x41, 0x4a, 0x67, 0x41, 0x51, 0x41, 0x48, 0x6f, 0x41, 0x4a, 0x67, 0x41, 0x51, 0x0a, 0x09, 0x41, 0x48, 0x73, 0x41, 0x4a, 0x67, 0x41, 0x51, 0x41, 0x48, 0x77, 0x41, 0x4a, 0x67, 0x41, 0x51, 0x41, 0x48, 0x30, 0x41, 0x4a, 0x67, 0x41, 0x51, 0x41, 0x49, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4a, 0x41, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4b, 0x33, 0x2f, 0x30, 0x77, 0x41, 0x51, 0x41, 0x4b, 0x37, 0x2f, 0x30, 0x77, 0x41, 0x51, 0x41, 0x4b, 0x38, 0x41, 0x4f, 0x51, 0x41, 0x51, 0x41, 0x4c, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x51, 0x0a, 0x09, 0x41, 0x4c, 0x76, 0x2f, 0x44, 0x51, 0x41, 0x51, 0x41, 0x4d, 0x66, 0x2f, 0x30, 0x77, 0x41, 0x51, 0x41, 0x4d, 0x6e, 0x2f, 0x30, 0x77, 0x41, 0x51, 0x41, 0x4e, 0x41, 0x41, 0x4f, 0x51, 0x41, 0x51, 0x41, 0x4e, 0x45, 0x41, 0x4f, 0x51, 0x41, 0x51, 0x41, 0x4e, 0x49, 0x41, 0x4f, 0x51, 0x41, 0x51, 0x41, 0x4f, 0x55, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4f, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x4f, 0x72, 0x2f, 0x44, 0x51, 0x41, 0x51, 0x0a, 0x09, 0x41, 0x4f, 0x76, 0x2f, 0x33, 0x41, 0x41, 0x51, 0x41, 0x4f, 0x77, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x50, 0x59, 0x41, 0x53, 0x77, 0x41, 0x51, 0x41, 0x50, 0x73, 0x41, 0x41, 0x41, 0x41, 0x51, 0x41, 0x50, 0x30, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x42, 0x44, 0x2f, 0x30, 0x77, 0x41, 0x6b, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x43, 0x51, 0x41, 0x4f, 0x51, 0x41, 0x6b, 0x0a, 0x09, 0x41, 0x43, 0x62, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x43, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x44, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x44, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x44, 0x66, 0x2f, 0x59, 0x51, 0x41, 0x6b, 0x41, 0x44, 0x67, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x44, 0x6e, 0x2f, 0x66, 0x51, 0x41, 0x6b, 0x41, 0x44, 0x72, 0x2f, 0x6b, 0x41, 0x41, 0x6b, 0x0a, 0x09, 0x41, 0x44, 0x73, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x44, 0x7a, 0x2f, 0x59, 0x51, 0x41, 0x6b, 0x41, 0x45, 0x62, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x45, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x45, 0x6a, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x45, 0x6e, 0x2f, 0x74, 0x77, 0x41, 0x6b, 0x41, 0x46, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x46, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x46, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x0a, 0x09, 0x41, 0x46, 0x67, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x46, 0x6e, 0x2f, 0x69, 0x41, 0x41, 0x6b, 0x41, 0x46, 0x72, 0x2f, 0x72, 0x51, 0x41, 0x6b, 0x41, 0x46, 0x7a, 0x2f, 0x64, 0x51, 0x41, 0x6b, 0x41, 0x47, 0x49, 0x41, 0x4f, 0x51, 0x41, 0x6b, 0x41, 0x47, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x47, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x47, 0x67, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x47, 0x2f, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x0a, 0x09, 0x41, 0x48, 0x44, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x48, 0x48, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x48, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x48, 0x50, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x48, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x48, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x48, 0x76, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x48, 0x7a, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x48, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x0a, 0x09, 0x41, 0x48, 0x34, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x48, 0x38, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x49, 0x45, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x4b, 0x6e, 0x2f, 0x74, 0x77, 0x41, 0x6b, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x4b, 0x30, 0x41, 0x4f, 0x51, 0x41, 0x6b, 0x41, 0x4b, 0x34, 0x41, 0x4f, 0x51, 0x41, 0x6b, 0x41, 0x4b, 0x2f, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x0a, 0x09, 0x41, 0x4c, 0x54, 0x2b, 0x2b, 0x41, 0x41, 0x6b, 0x41, 0x4c, 0x58, 0x2f, 0x41, 0x77, 0x41, 0x6b, 0x41, 0x4c, 0x72, 0x2f, 0x64, 0x51, 0x41, 0x6b, 0x41, 0x4c, 0x76, 0x2f, 0x59, 0x51, 0x41, 0x6b, 0x41, 0x4d, 0x55, 0x41, 0x4c, 0x77, 0x41, 0x6b, 0x41, 0x4d, 0x63, 0x41, 0x4f, 0x51, 0x41, 0x6b, 0x41, 0x4d, 0x6b, 0x41, 0x4f, 0x51, 0x41, 0x6b, 0x41, 0x4e, 0x44, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x4e, 0x48, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x0a, 0x09, 0x41, 0x4e, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x4e, 0x4d, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x4e, 0x51, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x4e, 0x55, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x41, 0x4f, 0x72, 0x2f, 0x59, 0x51, 0x41, 0x6b, 0x41, 0x4f, 0x76, 0x2f, 0x64, 0x51, 0x41, 0x6b, 0x41, 0x50, 0x62, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x6b, 0x0a, 0x09, 0x41, 0x50, 0x76, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x50, 0x7a, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x50, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x6b, 0x41, 0x50, 0x37, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x6c, 0x41, 0x43, 0x62, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x43, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x44, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x44, 0x62, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x0a, 0x09, 0x41, 0x44, 0x6e, 0x2f, 0x77, 0x51, 0x41, 0x6c, 0x41, 0x44, 0x72, 0x2f, 0x74, 0x77, 0x41, 0x6c, 0x41, 0x44, 0x7a, 0x2f, 0x6b, 0x41, 0x41, 0x6c, 0x41, 0x47, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x47, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x4b, 0x6e, 0x2f, 0x77, 0x51, 0x41, 0x6c, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x4b, 0x2f, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x4c, 0x54, 0x2f, 0x6b, 0x41, 0x41, 0x6c, 0x0a, 0x09, 0x41, 0x4c, 0x58, 0x2f, 0x6b, 0x41, 0x41, 0x6c, 0x41, 0x4c, 0x76, 0x2f, 0x6b, 0x41, 0x41, 0x6c, 0x41, 0x4d, 0x58, 0x2f, 0x72, 0x51, 0x41, 0x6c, 0x41, 0x4e, 0x44, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x4e, 0x48, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x4e, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x4f, 0x50, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x4f, 0x72, 0x2f, 0x6b, 0x41, 0x41, 0x6c, 0x41, 0x50, 0x62, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x0a, 0x09, 0x41, 0x50, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x50, 0x76, 0x2f, 0x33, 0x41, 0x41, 0x6c, 0x41, 0x50, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x6d, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x44, 0x7a, 0x2f, 0x33, 0x41, 0x41, 0x6d, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x6d, 0x0a, 0x09, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x6d, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x4c, 0x55, 0x41, 0x4a, 0x67, 0x41, 0x6d, 0x41, 0x4c, 0x76, 0x2f, 0x33, 0x41, 0x41, 0x6d, 0x41, 0x4d, 0x55, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x0a, 0x09, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x41, 0x6d, 0x41, 0x4f, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x6d, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x6e, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x6e, 0x41, 0x43, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x6e, 0x41, 0x44, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x6e, 0x41, 0x44, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x6e, 0x41, 0x44, 0x7a, 0x2f, 0x6b, 0x41, 0x41, 0x6e, 0x41, 0x47, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x6e, 0x0a, 0x09, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x6e, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x6e, 0x41, 0x4b, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x6e, 0x41, 0x4b, 0x37, 0x2f, 0x33, 0x41, 0x41, 0x6e, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x41, 0x6e, 0x41, 0x4c, 0x58, 0x2f, 0x79, 0x51, 0x41, 0x6e, 0x41, 0x4c, 0x76, 0x2f, 0x6b, 0x41, 0x41, 0x6e, 0x41, 0x4d, 0x58, 0x2f, 0x52, 0x41, 0x41, 0x6e, 0x41, 0x4d, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x6e, 0x0a, 0x09, 0x41, 0x4d, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x6e, 0x41, 0x4f, 0x72, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x70, 0x41, 0x42, 0x48, 0x2b, 0x74, 0x77, 0x41, 0x70, 0x41, 0x42, 0x33, 0x2f, 0x59, 0x51, 0x41, 0x70, 0x41, 0x43, 0x54, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x44, 0x62, 0x2f, 0x33, 0x41, 0x41, 0x70, 0x41, 0x44, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x70, 0x41, 0x45, 0x54, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x0a, 0x09, 0x41, 0x45, 0x6a, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x45, 0x7a, 0x2f, 0x61, 0x77, 0x41, 0x70, 0x41, 0x46, 0x4c, 0x2f, 0x74, 0x77, 0x41, 0x70, 0x41, 0x46, 0x58, 0x2f, 0x61, 0x77, 0x41, 0x70, 0x41, 0x46, 0x6a, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x46, 0x7a, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x47, 0x4c, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x47, 0x6e, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x47, 0x72, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x0a, 0x09, 0x41, 0x47, 0x76, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x47, 0x7a, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x47, 0x33, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x47, 0x37, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x48, 0x44, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x48, 0x48, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x48, 0x4c, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x48, 0x50, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x48, 0x6e, 0x2f, 0x74, 0x77, 0x41, 0x70, 0x0a, 0x09, 0x41, 0x48, 0x72, 0x2f, 0x74, 0x77, 0x41, 0x70, 0x41, 0x48, 0x76, 0x2f, 0x74, 0x77, 0x41, 0x70, 0x41, 0x48, 0x7a, 0x2f, 0x74, 0x77, 0x41, 0x70, 0x41, 0x48, 0x33, 0x2f, 0x74, 0x77, 0x41, 0x70, 0x41, 0x48, 0x37, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x48, 0x2f, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x49, 0x44, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x49, 0x48, 0x2f, 0x6b, 0x41, 0x41, 0x70, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x70, 0x0a, 0x09, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x70, 0x41, 0x4b, 0x33, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x4b, 0x37, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x41, 0x70, 0x41, 0x4c, 0x55, 0x41, 0x41, 0x41, 0x41, 0x70, 0x41, 0x4c, 0x72, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x4d, 0x58, 0x2b, 0x69, 0x41, 0x41, 0x70, 0x41, 0x4d, 0x66, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x4d, 0x6e, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x0a, 0x09, 0x41, 0x4f, 0x50, 0x2f, 0x33, 0x41, 0x41, 0x70, 0x41, 0x4f, 0x76, 0x2f, 0x52, 0x41, 0x41, 0x70, 0x41, 0x50, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x71, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x71, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x41, 0x71, 0x41, 0x44, 0x66, 0x2f, 0x74, 0x77, 0x41, 0x71, 0x41, 0x44, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x71, 0x41, 0x44, 0x7a, 0x2f, 0x6d, 0x67, 0x41, 0x71, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x41, 0x71, 0x0a, 0x09, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x71, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x71, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x41, 0x71, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x41, 0x71, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x41, 0x71, 0x41, 0x4c, 0x58, 0x2f, 0x30, 0x77, 0x41, 0x71, 0x41, 0x4c, 0x76, 0x2f, 0x6d, 0x67, 0x41, 0x71, 0x41, 0x4d, 0x58, 0x2f, 0x79, 0x51, 0x41, 0x71, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x41, 0x71, 0x0a, 0x09, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x71, 0x41, 0x4f, 0x72, 0x2f, 0x6d, 0x67, 0x41, 0x72, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x72, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x41, 0x72, 0x41, 0x42, 0x30, 0x41, 0x41, 0x41, 0x41, 0x72, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x72, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x72, 0x41, 0x4c, 0x54, 0x2f, 0x74, 0x77, 0x41, 0x72, 0x41, 0x4c, 0x58, 0x2f, 0x77, 0x51, 0x41, 0x72, 0x0a, 0x09, 0x41, 0x4d, 0x58, 0x2f, 0x74, 0x77, 0x41, 0x74, 0x41, 0x42, 0x44, 0x2f, 0x74, 0x77, 0x41, 0x74, 0x41, 0x43, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x74, 0x41, 0x47, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x74, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x74, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x74, 0x41, 0x4b, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x74, 0x41, 0x4b, 0x37, 0x2f, 0x33, 0x41, 0x41, 0x74, 0x41, 0x4c, 0x54, 0x2f, 0x74, 0x77, 0x41, 0x74, 0x0a, 0x09, 0x41, 0x4c, 0x58, 0x2f, 0x77, 0x51, 0x41, 0x74, 0x41, 0x4d, 0x58, 0x2f, 0x6b, 0x41, 0x41, 0x74, 0x41, 0x4d, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x74, 0x41, 0x4d, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x42, 0x44, 0x2f, 0x4b, 0x51, 0x41, 0x75, 0x41, 0x43, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x43, 0x62, 0x2f, 0x6b, 0x41, 0x41, 0x75, 0x41, 0x44, 0x4c, 0x2f, 0x6b, 0x41, 0x41, 0x75, 0x41, 0x44, 0x66, 0x2f, 0x59, 0x51, 0x41, 0x75, 0x0a, 0x09, 0x41, 0x44, 0x6a, 0x2f, 0x79, 0x51, 0x41, 0x75, 0x41, 0x44, 0x72, 0x2f, 0x74, 0x77, 0x41, 0x75, 0x41, 0x44, 0x7a, 0x2f, 0x74, 0x77, 0x41, 0x75, 0x41, 0x45, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x45, 0x6a, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x46, 0x4c, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x46, 0x6a, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x46, 0x7a, 0x2f, 0x61, 0x77, 0x41, 0x75, 0x41, 0x47, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x0a, 0x09, 0x41, 0x47, 0x54, 0x2f, 0x6b, 0x41, 0x41, 0x75, 0x41, 0x47, 0x66, 0x2f, 0x6b, 0x41, 0x41, 0x75, 0x41, 0x47, 0x6a, 0x2f, 0x79, 0x51, 0x41, 0x75, 0x41, 0x47, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x47, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x47, 0x76, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x47, 0x7a, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x47, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x47, 0x37, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x0a, 0x09, 0x41, 0x48, 0x44, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x48, 0x48, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x48, 0x4c, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x48, 0x50, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x48, 0x6e, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x48, 0x72, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x48, 0x76, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x48, 0x7a, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x48, 0x33, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x0a, 0x09, 0x41, 0x48, 0x37, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x48, 0x2f, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x49, 0x44, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x49, 0x48, 0x2f, 0x6d, 0x67, 0x41, 0x75, 0x41, 0x4b, 0x6e, 0x2f, 0x66, 0x51, 0x41, 0x75, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x75, 0x41, 0x4b, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x4b, 0x37, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x4b, 0x2f, 0x2f, 0x6b, 0x41, 0x41, 0x75, 0x0a, 0x09, 0x41, 0x4c, 0x54, 0x2f, 0x77, 0x51, 0x41, 0x75, 0x41, 0x4c, 0x58, 0x2f, 0x77, 0x51, 0x41, 0x75, 0x41, 0x4c, 0x72, 0x2f, 0x61, 0x77, 0x41, 0x75, 0x41, 0x4c, 0x76, 0x2f, 0x74, 0x77, 0x41, 0x75, 0x41, 0x4d, 0x55, 0x41, 0x41, 0x41, 0x41, 0x75, 0x41, 0x4d, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x4d, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x75, 0x41, 0x4e, 0x44, 0x2f, 0x6b, 0x41, 0x41, 0x75, 0x41, 0x4e, 0x48, 0x2f, 0x6b, 0x41, 0x41, 0x75, 0x0a, 0x09, 0x41, 0x4e, 0x4c, 0x2f, 0x6b, 0x41, 0x41, 0x75, 0x41, 0x4e, 0x50, 0x2f, 0x79, 0x51, 0x41, 0x75, 0x41, 0x4e, 0x54, 0x2f, 0x79, 0x51, 0x41, 0x75, 0x41, 0x4e, 0x58, 0x2f, 0x79, 0x51, 0x41, 0x75, 0x41, 0x4f, 0x72, 0x2f, 0x74, 0x77, 0x41, 0x75, 0x41, 0x4f, 0x76, 0x2f, 0x61, 0x77, 0x41, 0x75, 0x41, 0x50, 0x76, 0x2f, 0x6b, 0x41, 0x41, 0x75, 0x41, 0x50, 0x33, 0x2f, 0x6b, 0x41, 0x41, 0x76, 0x41, 0x42, 0x44, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x0a, 0x09, 0x41, 0x43, 0x51, 0x41, 0x4c, 0x77, 0x41, 0x76, 0x41, 0x44, 0x4c, 0x2f, 0x74, 0x77, 0x41, 0x76, 0x41, 0x44, 0x66, 0x2b, 0x35, 0x67, 0x41, 0x76, 0x41, 0x44, 0x6a, 0x2f, 0x6d, 0x67, 0x41, 0x76, 0x41, 0x44, 0x6e, 0x2f, 0x48, 0x77, 0x41, 0x76, 0x41, 0x44, 0x72, 0x2f, 0x52, 0x41, 0x41, 0x76, 0x41, 0x44, 0x7a, 0x2b, 0x38, 0x41, 0x41, 0x76, 0x41, 0x45, 0x51, 0x41, 0x41, 0x41, 0x41, 0x76, 0x41, 0x45, 0x6a, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x0a, 0x09, 0x41, 0x46, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x46, 0x6a, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x46, 0x7a, 0x2f, 0x52, 0x41, 0x41, 0x76, 0x41, 0x47, 0x49, 0x41, 0x4c, 0x77, 0x41, 0x76, 0x41, 0x47, 0x66, 0x2f, 0x74, 0x77, 0x41, 0x76, 0x41, 0x47, 0x6a, 0x2f, 0x6d, 0x67, 0x41, 0x76, 0x41, 0x47, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x76, 0x41, 0x47, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x76, 0x41, 0x47, 0x73, 0x41, 0x41, 0x41, 0x41, 0x76, 0x0a, 0x09, 0x41, 0x47, 0x77, 0x41, 0x41, 0x41, 0x41, 0x76, 0x41, 0x47, 0x30, 0x41, 0x41, 0x41, 0x41, 0x76, 0x41, 0x47, 0x34, 0x41, 0x41, 0x41, 0x41, 0x76, 0x41, 0x48, 0x44, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x48, 0x48, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x48, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x48, 0x50, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x48, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x48, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x0a, 0x09, 0x41, 0x48, 0x76, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x48, 0x7a, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x48, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x48, 0x37, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x48, 0x2f, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x49, 0x44, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x49, 0x48, 0x2f, 0x33, 0x41, 0x41, 0x76, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x76, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x76, 0x0a, 0x09, 0x41, 0x4b, 0x30, 0x41, 0x4c, 0x77, 0x41, 0x76, 0x41, 0x4b, 0x34, 0x41, 0x4c, 0x77, 0x41, 0x76, 0x41, 0x4b, 0x2f, 0x2f, 0x74, 0x77, 0x41, 0x76, 0x41, 0x4c, 0x54, 0x2b, 0x59, 0x51, 0x41, 0x76, 0x41, 0x4c, 0x58, 0x39, 0x35, 0x67, 0x41, 0x76, 0x41, 0x4c, 0x72, 0x2f, 0x52, 0x41, 0x41, 0x76, 0x41, 0x4c, 0x76, 0x2b, 0x38, 0x41, 0x41, 0x76, 0x41, 0x4d, 0x55, 0x41, 0x41, 0x41, 0x41, 0x76, 0x41, 0x4d, 0x63, 0x41, 0x4c, 0x77, 0x41, 0x76, 0x0a, 0x09, 0x41, 0x4d, 0x6b, 0x41, 0x4c, 0x77, 0x41, 0x76, 0x41, 0x4e, 0x44, 0x2f, 0x74, 0x77, 0x41, 0x76, 0x41, 0x4e, 0x48, 0x2f, 0x74, 0x77, 0x41, 0x76, 0x41, 0x4e, 0x4c, 0x2f, 0x74, 0x77, 0x41, 0x76, 0x41, 0x4e, 0x50, 0x2f, 0x6d, 0x67, 0x41, 0x76, 0x41, 0x4e, 0x54, 0x2f, 0x6d, 0x67, 0x41, 0x76, 0x41, 0x4e, 0x58, 0x2f, 0x6d, 0x67, 0x41, 0x76, 0x41, 0x4f, 0x72, 0x2b, 0x38, 0x41, 0x41, 0x76, 0x41, 0x4f, 0x76, 0x2f, 0x52, 0x41, 0x41, 0x79, 0x0a, 0x09, 0x41, 0x42, 0x41, 0x41, 0x4f, 0x51, 0x41, 0x79, 0x41, 0x42, 0x48, 0x2f, 0x72, 0x51, 0x41, 0x79, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x79, 0x41, 0x43, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x79, 0x41, 0x44, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x79, 0x41, 0x44, 0x76, 0x2f, 0x66, 0x51, 0x41, 0x79, 0x41, 0x44, 0x7a, 0x2f, 0x6b, 0x41, 0x41, 0x79, 0x41, 0x47, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x79, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x79, 0x0a, 0x09, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x79, 0x41, 0x4b, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x79, 0x41, 0x4b, 0x37, 0x2f, 0x33, 0x41, 0x41, 0x79, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x41, 0x79, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x41, 0x79, 0x41, 0x4c, 0x76, 0x2f, 0x6b, 0x41, 0x41, 0x79, 0x41, 0x4d, 0x58, 0x2f, 0x52, 0x41, 0x41, 0x79, 0x41, 0x4d, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x79, 0x41, 0x4d, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x79, 0x0a, 0x09, 0x41, 0x4f, 0x72, 0x2f, 0x6b, 0x41, 0x41, 0x7a, 0x41, 0x42, 0x44, 0x2f, 0x30, 0x77, 0x41, 0x7a, 0x41, 0x42, 0x48, 0x2b, 0x77, 0x51, 0x41, 0x7a, 0x41, 0x42, 0x30, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x43, 0x54, 0x2f, 0x66, 0x51, 0x41, 0x7a, 0x41, 0x44, 0x67, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x44, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x44, 0x7a, 0x2f, 0x30, 0x77, 0x41, 0x7a, 0x41, 0x45, 0x54, 0x2f, 0x70, 0x41, 0x41, 0x7a, 0x0a, 0x09, 0x41, 0x45, 0x6a, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x45, 0x7a, 0x2f, 0x30, 0x77, 0x41, 0x7a, 0x41, 0x46, 0x48, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x41, 0x46, 0x4c, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x46, 0x58, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x41, 0x46, 0x62, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x41, 0x46, 0x6a, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x41, 0x46, 0x77, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x47, 0x4c, 0x2f, 0x66, 0x51, 0x41, 0x7a, 0x0a, 0x09, 0x41, 0x47, 0x67, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x47, 0x6e, 0x2f, 0x70, 0x41, 0x41, 0x7a, 0x41, 0x47, 0x72, 0x2f, 0x70, 0x41, 0x41, 0x7a, 0x41, 0x47, 0x76, 0x2f, 0x70, 0x41, 0x41, 0x7a, 0x41, 0x47, 0x7a, 0x2f, 0x70, 0x41, 0x41, 0x7a, 0x41, 0x47, 0x33, 0x2f, 0x70, 0x41, 0x41, 0x7a, 0x41, 0x47, 0x37, 0x2f, 0x70, 0x41, 0x41, 0x7a, 0x41, 0x48, 0x44, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x48, 0x48, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x0a, 0x09, 0x41, 0x48, 0x4c, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x48, 0x50, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x48, 0x6a, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x41, 0x48, 0x6e, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x48, 0x72, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x48, 0x76, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x48, 0x7a, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x48, 0x33, 0x2f, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x48, 0x37, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x0a, 0x09, 0x41, 0x48, 0x2f, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x41, 0x49, 0x44, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x41, 0x49, 0x48, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x4b, 0x33, 0x2f, 0x66, 0x51, 0x41, 0x7a, 0x41, 0x4b, 0x37, 0x2f, 0x66, 0x51, 0x41, 0x7a, 0x41, 0x4c, 0x51, 0x41, 0x4a, 0x67, 0x41, 0x7a, 0x41, 0x4c, 0x55, 0x41, 0x4a, 0x67, 0x41, 0x7a, 0x0a, 0x09, 0x41, 0x4c, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x4c, 0x76, 0x2f, 0x30, 0x77, 0x41, 0x7a, 0x41, 0x4d, 0x58, 0x2b, 0x74, 0x77, 0x41, 0x7a, 0x41, 0x4d, 0x66, 0x2f, 0x66, 0x51, 0x41, 0x7a, 0x41, 0x4d, 0x6e, 0x2f, 0x66, 0x51, 0x41, 0x7a, 0x41, 0x4e, 0x4d, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x4e, 0x51, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x4e, 0x55, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x4f, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x7a, 0x0a, 0x09, 0x41, 0x4f, 0x72, 0x2f, 0x30, 0x77, 0x41, 0x7a, 0x41, 0x4f, 0x73, 0x41, 0x41, 0x41, 0x41, 0x7a, 0x41, 0x50, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x30, 0x41, 0x42, 0x41, 0x41, 0x4f, 0x51, 0x41, 0x30, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x30, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x30, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x41, 0x30, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x41, 0x30, 0x41, 0x4d, 0x58, 0x2f, 0x66, 0x51, 0x41, 0x31, 0x0a, 0x09, 0x41, 0x42, 0x44, 0x2f, 0x72, 0x51, 0x41, 0x31, 0x41, 0x42, 0x48, 0x2f, 0x74, 0x77, 0x41, 0x31, 0x41, 0x42, 0x33, 0x2f, 0x77, 0x51, 0x41, 0x31, 0x41, 0x43, 0x54, 0x2f, 0x72, 0x51, 0x41, 0x31, 0x41, 0x43, 0x62, 0x2f, 0x6d, 0x67, 0x41, 0x31, 0x41, 0x44, 0x66, 0x2f, 0x61, 0x77, 0x41, 0x31, 0x41, 0x44, 0x6e, 0x2f, 0x6b, 0x41, 0x41, 0x31, 0x41, 0x44, 0x72, 0x2f, 0x72, 0x51, 0x41, 0x31, 0x41, 0x44, 0x7a, 0x2f, 0x66, 0x51, 0x41, 0x31, 0x0a, 0x09, 0x41, 0x45, 0x54, 0x2f, 0x30, 0x77, 0x41, 0x31, 0x41, 0x45, 0x6a, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x46, 0x4c, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x46, 0x6a, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x46, 0x7a, 0x2f, 0x6b, 0x41, 0x41, 0x31, 0x41, 0x47, 0x4c, 0x2f, 0x72, 0x51, 0x41, 0x31, 0x41, 0x47, 0x54, 0x2f, 0x6d, 0x67, 0x41, 0x31, 0x41, 0x47, 0x6e, 0x2f, 0x30, 0x77, 0x41, 0x31, 0x41, 0x47, 0x72, 0x2f, 0x30, 0x77, 0x41, 0x31, 0x0a, 0x09, 0x41, 0x47, 0x76, 0x2f, 0x30, 0x77, 0x41, 0x31, 0x41, 0x47, 0x7a, 0x2f, 0x30, 0x77, 0x41, 0x31, 0x41, 0x47, 0x33, 0x2f, 0x30, 0x77, 0x41, 0x31, 0x41, 0x47, 0x37, 0x2f, 0x30, 0x77, 0x41, 0x31, 0x41, 0x48, 0x44, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x48, 0x48, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x48, 0x4c, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x48, 0x50, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x48, 0x6e, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x0a, 0x09, 0x41, 0x48, 0x72, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x48, 0x76, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x48, 0x7a, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x48, 0x33, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x48, 0x37, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x48, 0x2f, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x49, 0x44, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x49, 0x48, 0x2f, 0x70, 0x41, 0x41, 0x31, 0x41, 0x4b, 0x6e, 0x2f, 0x6b, 0x41, 0x41, 0x31, 0x0a, 0x09, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x31, 0x41, 0x4b, 0x33, 0x2f, 0x72, 0x51, 0x41, 0x31, 0x41, 0x4b, 0x37, 0x2f, 0x72, 0x51, 0x41, 0x31, 0x41, 0x4c, 0x54, 0x2f, 0x61, 0x77, 0x41, 0x31, 0x41, 0x4c, 0x58, 0x2f, 0x66, 0x51, 0x41, 0x31, 0x41, 0x4c, 0x72, 0x2f, 0x6b, 0x41, 0x41, 0x31, 0x41, 0x4c, 0x76, 0x2f, 0x66, 0x51, 0x41, 0x31, 0x41, 0x4d, 0x58, 0x2f, 0x33, 0x41, 0x41, 0x31, 0x41, 0x4d, 0x66, 0x2f, 0x72, 0x51, 0x41, 0x31, 0x0a, 0x09, 0x41, 0x4d, 0x6e, 0x2f, 0x72, 0x51, 0x41, 0x31, 0x41, 0x4f, 0x72, 0x2f, 0x66, 0x51, 0x41, 0x31, 0x41, 0x4f, 0x76, 0x2f, 0x6b, 0x41, 0x41, 0x31, 0x41, 0x50, 0x76, 0x2f, 0x6d, 0x67, 0x41, 0x31, 0x41, 0x50, 0x33, 0x2f, 0x6d, 0x67, 0x41, 0x32, 0x41, 0x43, 0x51, 0x41, 0x4a, 0x67, 0x41, 0x32, 0x41, 0x43, 0x59, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x43, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x44, 0x49, 0x41, 0x41, 0x41, 0x41, 0x32, 0x0a, 0x09, 0x41, 0x44, 0x51, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x47, 0x49, 0x41, 0x4a, 0x67, 0x41, 0x32, 0x41, 0x47, 0x51, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x47, 0x63, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x4b, 0x30, 0x41, 0x4a, 0x67, 0x41, 0x32, 0x41, 0x4b, 0x34, 0x41, 0x4a, 0x67, 0x41, 0x32, 0x41, 0x4b, 0x38, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x4d, 0x63, 0x41, 0x4a, 0x67, 0x41, 0x32, 0x0a, 0x09, 0x41, 0x4d, 0x6b, 0x41, 0x4a, 0x67, 0x41, 0x32, 0x41, 0x4e, 0x41, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x4e, 0x45, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x4e, 0x49, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x50, 0x59, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x50, 0x73, 0x41, 0x41, 0x41, 0x41, 0x32, 0x41, 0x50, 0x30, 0x41, 0x41, 0x41, 0x41, 0x33, 0x0a, 0x09, 0x41, 0x42, 0x44, 0x2f, 0x52, 0x41, 0x41, 0x33, 0x41, 0x42, 0x48, 0x2f, 0x44, 0x51, 0x41, 0x33, 0x41, 0x42, 0x33, 0x2f, 0x48, 0x77, 0x41, 0x33, 0x41, 0x43, 0x54, 0x2f, 0x59, 0x51, 0x41, 0x33, 0x41, 0x43, 0x62, 0x2f, 0x69, 0x41, 0x41, 0x33, 0x41, 0x44, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x33, 0x41, 0x45, 0x54, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x45, 0x62, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x45, 0x6a, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x0a, 0x09, 0x41, 0x45, 0x7a, 0x2f, 0x77, 0x51, 0x41, 0x33, 0x41, 0x46, 0x4c, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x46, 0x58, 0x2b, 0x30, 0x77, 0x41, 0x33, 0x41, 0x46, 0x62, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x46, 0x6a, 0x2b, 0x79, 0x51, 0x41, 0x33, 0x41, 0x46, 0x72, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x46, 0x7a, 0x2b, 0x77, 0x51, 0x41, 0x33, 0x41, 0x47, 0x4c, 0x2f, 0x59, 0x51, 0x41, 0x33, 0x41, 0x47, 0x54, 0x2f, 0x69, 0x41, 0x41, 0x33, 0x0a, 0x09, 0x41, 0x47, 0x6e, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x47, 0x72, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x47, 0x76, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x47, 0x7a, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x47, 0x33, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x47, 0x37, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x47, 0x2f, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x48, 0x44, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x48, 0x48, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x0a, 0x09, 0x41, 0x48, 0x4c, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x48, 0x50, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x48, 0x6e, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x48, 0x72, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x48, 0x76, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x48, 0x7a, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x48, 0x33, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x48, 0x37, 0x2b, 0x79, 0x51, 0x41, 0x33, 0x41, 0x48, 0x2f, 0x2b, 0x79, 0x51, 0x41, 0x33, 0x0a, 0x09, 0x41, 0x49, 0x44, 0x2b, 0x79, 0x51, 0x41, 0x33, 0x41, 0x49, 0x48, 0x2b, 0x79, 0x51, 0x41, 0x33, 0x41, 0x4b, 0x6e, 0x2f, 0x52, 0x41, 0x41, 0x33, 0x41, 0x4b, 0x72, 0x2f, 0x6b, 0x41, 0x41, 0x33, 0x41, 0x4b, 0x33, 0x2f, 0x59, 0x51, 0x41, 0x33, 0x41, 0x4b, 0x37, 0x2f, 0x59, 0x51, 0x41, 0x33, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x41, 0x33, 0x41, 0x4c, 0x58, 0x2f, 0x30, 0x77, 0x41, 0x33, 0x41, 0x4c, 0x72, 0x2b, 0x77, 0x51, 0x41, 0x33, 0x0a, 0x09, 0x41, 0x4d, 0x58, 0x2b, 0x2b, 0x41, 0x41, 0x33, 0x41, 0x4d, 0x66, 0x2f, 0x59, 0x51, 0x41, 0x33, 0x41, 0x4d, 0x6e, 0x2f, 0x59, 0x51, 0x41, 0x33, 0x41, 0x4f, 0x54, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x4f, 0x76, 0x2b, 0x77, 0x51, 0x41, 0x33, 0x41, 0x50, 0x72, 0x2b, 0x72, 0x51, 0x41, 0x33, 0x41, 0x50, 0x76, 0x2f, 0x69, 0x41, 0x41, 0x33, 0x41, 0x50, 0x7a, 0x2b, 0x70, 0x41, 0x41, 0x33, 0x41, 0x50, 0x33, 0x2f, 0x69, 0x41, 0x41, 0x33, 0x0a, 0x09, 0x41, 0x50, 0x37, 0x2b, 0x70, 0x41, 0x41, 0x34, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x41, 0x34, 0x41, 0x43, 0x30, 0x41, 0x41, 0x41, 0x41, 0x34, 0x41, 0x44, 0x33, 0x2f, 0x33, 0x41, 0x41, 0x34, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x41, 0x34, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x41, 0x34, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x41, 0x34, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x41, 0x34, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x34, 0x0a, 0x09, 0x41, 0x4f, 0x58, 0x2f, 0x33, 0x41, 0x41, 0x35, 0x41, 0x42, 0x44, 0x2f, 0x69, 0x41, 0x41, 0x35, 0x41, 0x42, 0x48, 0x2b, 0x2b, 0x41, 0x41, 0x35, 0x41, 0x42, 0x33, 0x2f, 0x57, 0x51, 0x41, 0x35, 0x41, 0x43, 0x54, 0x2f, 0x66, 0x51, 0x41, 0x35, 0x41, 0x44, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x35, 0x41, 0x45, 0x54, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x45, 0x6a, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x45, 0x7a, 0x2f, 0x30, 0x77, 0x41, 0x35, 0x0a, 0x09, 0x41, 0x46, 0x4c, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x46, 0x6a, 0x2f, 0x64, 0x51, 0x41, 0x35, 0x41, 0x46, 0x7a, 0x2f, 0x79, 0x51, 0x41, 0x35, 0x41, 0x47, 0x4c, 0x2f, 0x66, 0x51, 0x41, 0x35, 0x41, 0x47, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x35, 0x41, 0x47, 0x6e, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x47, 0x72, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x47, 0x76, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x47, 0x7a, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x0a, 0x09, 0x41, 0x47, 0x33, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x47, 0x37, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x48, 0x44, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x48, 0x48, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x48, 0x4c, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x48, 0x50, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x48, 0x6e, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x48, 0x72, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x48, 0x76, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x0a, 0x09, 0x41, 0x48, 0x7a, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x48, 0x33, 0x2f, 0x59, 0x51, 0x41, 0x35, 0x41, 0x48, 0x37, 0x2f, 0x64, 0x51, 0x41, 0x35, 0x41, 0x48, 0x2f, 0x2f, 0x64, 0x51, 0x41, 0x35, 0x41, 0x49, 0x44, 0x2f, 0x64, 0x51, 0x41, 0x35, 0x41, 0x49, 0x48, 0x2f, 0x64, 0x51, 0x41, 0x35, 0x41, 0x4b, 0x6e, 0x2f, 0x54, 0x67, 0x41, 0x35, 0x41, 0x4b, 0x72, 0x2f, 0x6b, 0x41, 0x41, 0x35, 0x41, 0x4b, 0x33, 0x2f, 0x66, 0x51, 0x41, 0x35, 0x0a, 0x09, 0x41, 0x4b, 0x37, 0x2f, 0x66, 0x51, 0x41, 0x35, 0x41, 0x4b, 0x2f, 0x2f, 0x33, 0x41, 0x41, 0x35, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x41, 0x35, 0x41, 0x4c, 0x55, 0x41, 0x41, 0x41, 0x41, 0x35, 0x41, 0x4c, 0x72, 0x2f, 0x79, 0x51, 0x41, 0x35, 0x41, 0x4d, 0x58, 0x2b, 0x35, 0x67, 0x41, 0x35, 0x41, 0x4d, 0x66, 0x2f, 0x66, 0x51, 0x41, 0x35, 0x41, 0x4d, 0x6e, 0x2f, 0x66, 0x51, 0x41, 0x35, 0x41, 0x4e, 0x44, 0x2f, 0x33, 0x41, 0x41, 0x35, 0x0a, 0x09, 0x41, 0x4e, 0x48, 0x2f, 0x33, 0x41, 0x41, 0x35, 0x41, 0x4e, 0x4c, 0x2f, 0x33, 0x41, 0x41, 0x35, 0x41, 0x4f, 0x76, 0x2f, 0x79, 0x51, 0x41, 0x36, 0x41, 0x42, 0x44, 0x2f, 0x72, 0x51, 0x41, 0x36, 0x41, 0x42, 0x48, 0x2f, 0x46, 0x51, 0x41, 0x36, 0x41, 0x42, 0x33, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x41, 0x43, 0x54, 0x2f, 0x6b, 0x41, 0x41, 0x36, 0x41, 0x45, 0x54, 0x2f, 0x66, 0x51, 0x41, 0x36, 0x41, 0x45, 0x6a, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x0a, 0x09, 0x41, 0x45, 0x7a, 0x2f, 0x30, 0x77, 0x41, 0x36, 0x41, 0x46, 0x4c, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x41, 0x46, 0x58, 0x2f, 0x70, 0x41, 0x41, 0x36, 0x41, 0x46, 0x6a, 0x2f, 0x74, 0x77, 0x41, 0x36, 0x41, 0x46, 0x7a, 0x2f, 0x33, 0x41, 0x41, 0x36, 0x41, 0x47, 0x4c, 0x2f, 0x6b, 0x41, 0x41, 0x36, 0x41, 0x47, 0x6e, 0x2f, 0x66, 0x51, 0x41, 0x36, 0x41, 0x47, 0x72, 0x2f, 0x66, 0x51, 0x41, 0x36, 0x41, 0x47, 0x76, 0x2f, 0x66, 0x51, 0x41, 0x36, 0x0a, 0x09, 0x41, 0x47, 0x7a, 0x2f, 0x66, 0x51, 0x41, 0x36, 0x41, 0x47, 0x33, 0x2f, 0x66, 0x51, 0x41, 0x36, 0x41, 0x47, 0x37, 0x2f, 0x66, 0x51, 0x41, 0x36, 0x41, 0x48, 0x44, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x41, 0x48, 0x48, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x41, 0x48, 0x4c, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x41, 0x48, 0x50, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x41, 0x48, 0x6e, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x41, 0x48, 0x72, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x0a, 0x09, 0x41, 0x48, 0x76, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x41, 0x48, 0x7a, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x41, 0x48, 0x33, 0x2f, 0x69, 0x41, 0x41, 0x36, 0x41, 0x48, 0x37, 0x2f, 0x74, 0x77, 0x41, 0x36, 0x41, 0x48, 0x2f, 0x2f, 0x74, 0x77, 0x41, 0x36, 0x41, 0x49, 0x44, 0x2f, 0x74, 0x77, 0x41, 0x36, 0x41, 0x49, 0x48, 0x2f, 0x74, 0x77, 0x41, 0x36, 0x41, 0x4b, 0x6e, 0x2f, 0x6b, 0x41, 0x41, 0x36, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x36, 0x0a, 0x09, 0x41, 0x4b, 0x33, 0x2f, 0x6b, 0x41, 0x41, 0x36, 0x41, 0x4b, 0x37, 0x2f, 0x6b, 0x41, 0x41, 0x36, 0x41, 0x4c, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x36, 0x41, 0x4c, 0x55, 0x41, 0x41, 0x41, 0x41, 0x36, 0x41, 0x4c, 0x72, 0x2f, 0x33, 0x41, 0x41, 0x36, 0x41, 0x4d, 0x58, 0x2b, 0x2b, 0x41, 0x41, 0x36, 0x41, 0x4d, 0x66, 0x2f, 0x6b, 0x41, 0x41, 0x36, 0x41, 0x4d, 0x6e, 0x2f, 0x6b, 0x41, 0x41, 0x36, 0x41, 0x4f, 0x76, 0x2f, 0x33, 0x41, 0x41, 0x37, 0x0a, 0x09, 0x41, 0x42, 0x44, 0x2f, 0x6d, 0x67, 0x41, 0x37, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x41, 0x37, 0x41, 0x43, 0x62, 0x2f, 0x61, 0x77, 0x41, 0x37, 0x41, 0x44, 0x4c, 0x2f, 0x66, 0x51, 0x41, 0x37, 0x41, 0x44, 0x66, 0x2f, 0x33, 0x41, 0x41, 0x37, 0x41, 0x45, 0x6a, 0x2f, 0x70, 0x41, 0x41, 0x37, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x41, 0x37, 0x41, 0x47, 0x54, 0x2f, 0x61, 0x77, 0x41, 0x37, 0x41, 0x47, 0x66, 0x2f, 0x66, 0x51, 0x41, 0x37, 0x0a, 0x09, 0x41, 0x48, 0x44, 0x2f, 0x70, 0x41, 0x41, 0x37, 0x41, 0x48, 0x48, 0x2f, 0x70, 0x41, 0x41, 0x37, 0x41, 0x48, 0x4c, 0x2f, 0x70, 0x41, 0x41, 0x37, 0x41, 0x48, 0x50, 0x2f, 0x70, 0x41, 0x41, 0x37, 0x41, 0x4b, 0x6e, 0x2f, 0x6b, 0x41, 0x41, 0x37, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x37, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x41, 0x37, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x41, 0x37, 0x41, 0x4b, 0x2f, 0x2f, 0x66, 0x51, 0x41, 0x37, 0x0a, 0x09, 0x41, 0x4c, 0x54, 0x2f, 0x59, 0x51, 0x41, 0x37, 0x41, 0x4c, 0x58, 0x2f, 0x72, 0x51, 0x41, 0x37, 0x41, 0x4d, 0x58, 0x2f, 0x30, 0x77, 0x41, 0x37, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x41, 0x37, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x37, 0x41, 0x4e, 0x44, 0x2f, 0x66, 0x51, 0x41, 0x37, 0x41, 0x4e, 0x48, 0x2f, 0x66, 0x51, 0x41, 0x37, 0x41, 0x4e, 0x4c, 0x2f, 0x66, 0x51, 0x41, 0x37, 0x41, 0x50, 0x76, 0x2f, 0x61, 0x77, 0x41, 0x37, 0x0a, 0x09, 0x41, 0x50, 0x33, 0x2f, 0x61, 0x77, 0x41, 0x38, 0x41, 0x42, 0x44, 0x2f, 0x44, 0x51, 0x41, 0x38, 0x41, 0x42, 0x48, 0x2b, 0x59, 0x51, 0x41, 0x38, 0x41, 0x42, 0x33, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x41, 0x43, 0x54, 0x2f, 0x59, 0x51, 0x41, 0x38, 0x41, 0x43, 0x62, 0x2f, 0x6b, 0x41, 0x41, 0x38, 0x41, 0x44, 0x4c, 0x2f, 0x6b, 0x41, 0x41, 0x38, 0x41, 0x45, 0x54, 0x2b, 0x35, 0x67, 0x41, 0x38, 0x41, 0x45, 0x6a, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x0a, 0x09, 0x41, 0x45, 0x7a, 0x2f, 0x74, 0x77, 0x41, 0x38, 0x41, 0x46, 0x4c, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x41, 0x46, 0x6a, 0x2f, 0x46, 0x51, 0x41, 0x38, 0x41, 0x47, 0x4c, 0x2f, 0x59, 0x51, 0x41, 0x38, 0x41, 0x47, 0x54, 0x2f, 0x6b, 0x41, 0x41, 0x38, 0x41, 0x47, 0x66, 0x2f, 0x6b, 0x41, 0x41, 0x38, 0x41, 0x47, 0x6e, 0x2b, 0x35, 0x67, 0x41, 0x38, 0x41, 0x47, 0x72, 0x2b, 0x35, 0x67, 0x41, 0x38, 0x41, 0x47, 0x76, 0x2b, 0x35, 0x67, 0x41, 0x38, 0x0a, 0x09, 0x41, 0x47, 0x7a, 0x2b, 0x35, 0x67, 0x41, 0x38, 0x41, 0x47, 0x33, 0x2b, 0x35, 0x67, 0x41, 0x38, 0x41, 0x47, 0x37, 0x2b, 0x35, 0x67, 0x41, 0x38, 0x41, 0x48, 0x44, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x41, 0x48, 0x48, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x41, 0x48, 0x4c, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x41, 0x48, 0x50, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x41, 0x48, 0x6e, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x41, 0x48, 0x72, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x0a, 0x09, 0x41, 0x48, 0x76, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x41, 0x48, 0x7a, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x41, 0x48, 0x33, 0x2b, 0x38, 0x41, 0x41, 0x38, 0x41, 0x48, 0x37, 0x2f, 0x46, 0x51, 0x41, 0x38, 0x41, 0x48, 0x2f, 0x2f, 0x46, 0x51, 0x41, 0x38, 0x41, 0x49, 0x44, 0x2f, 0x46, 0x51, 0x41, 0x38, 0x41, 0x49, 0x48, 0x2f, 0x46, 0x51, 0x41, 0x38, 0x41, 0x4b, 0x6e, 0x2f, 0x48, 0x77, 0x41, 0x38, 0x41, 0x4b, 0x72, 0x2f, 0x61, 0x77, 0x41, 0x38, 0x0a, 0x09, 0x41, 0x4b, 0x33, 0x2f, 0x59, 0x51, 0x41, 0x38, 0x41, 0x4b, 0x37, 0x2f, 0x59, 0x51, 0x41, 0x38, 0x41, 0x4b, 0x2f, 0x2f, 0x6b, 0x41, 0x41, 0x38, 0x41, 0x4c, 0x54, 0x2f, 0x6b, 0x41, 0x41, 0x38, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x41, 0x38, 0x41, 0x4d, 0x58, 0x2b, 0x2b, 0x41, 0x41, 0x38, 0x41, 0x4d, 0x66, 0x2f, 0x59, 0x51, 0x41, 0x38, 0x41, 0x4d, 0x6e, 0x2f, 0x59, 0x51, 0x41, 0x38, 0x41, 0x4e, 0x44, 0x2f, 0x6b, 0x41, 0x41, 0x38, 0x0a, 0x09, 0x41, 0x4e, 0x48, 0x2f, 0x6b, 0x41, 0x41, 0x38, 0x41, 0x4e, 0x4c, 0x2f, 0x6b, 0x41, 0x41, 0x38, 0x41, 0x50, 0x76, 0x2f, 0x6b, 0x41, 0x41, 0x38, 0x41, 0x50, 0x33, 0x2f, 0x6b, 0x41, 0x41, 0x39, 0x41, 0x42, 0x44, 0x2f, 0x33, 0x41, 0x41, 0x39, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x39, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x41, 0x39, 0x41, 0x4c, 0x54, 0x2f, 0x33, 0x41, 0x41, 0x39, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x41, 0x39, 0x0a, 0x09, 0x41, 0x4d, 0x58, 0x2f, 0x33, 0x41, 0x42, 0x49, 0x41, 0x46, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x4a, 0x41, 0x42, 0x44, 0x2f, 0x6b, 0x41, 0x42, 0x4a, 0x41, 0x42, 0x48, 0x2f, 0x61, 0x77, 0x42, 0x4a, 0x41, 0x42, 0x33, 0x2f, 0x74, 0x77, 0x42, 0x4a, 0x41, 0x46, 0x66, 0x2f, 0x33, 0x41, 0x42, 0x4a, 0x41, 0x46, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x4a, 0x41, 0x46, 0x7a, 0x2f, 0x33, 0x41, 0x42, 0x4a, 0x41, 0x4b, 0x6e, 0x2f, 0x74, 0x77, 0x42, 0x4a, 0x0a, 0x09, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x4a, 0x41, 0x4c, 0x51, 0x41, 0x51, 0x51, 0x42, 0x4a, 0x41, 0x4c, 0x55, 0x41, 0x41, 0x41, 0x42, 0x4a, 0x41, 0x4c, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x4a, 0x41, 0x4d, 0x58, 0x2f, 0x46, 0x51, 0x42, 0x4a, 0x41, 0x4f, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x4f, 0x41, 0x45, 0x54, 0x2f, 0x33, 0x41, 0x42, 0x4f, 0x41, 0x45, 0x6a, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x46, 0x4c, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x0a, 0x09, 0x41, 0x46, 0x6a, 0x2f, 0x77, 0x51, 0x42, 0x4f, 0x41, 0x46, 0x7a, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x47, 0x6e, 0x2f, 0x33, 0x41, 0x42, 0x4f, 0x41, 0x47, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x4f, 0x41, 0x47, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x4f, 0x41, 0x47, 0x7a, 0x2f, 0x33, 0x41, 0x42, 0x4f, 0x41, 0x47, 0x33, 0x2f, 0x33, 0x41, 0x42, 0x4f, 0x41, 0x47, 0x37, 0x2f, 0x33, 0x41, 0x42, 0x4f, 0x41, 0x48, 0x44, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x0a, 0x09, 0x41, 0x48, 0x48, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x48, 0x4c, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x48, 0x50, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x48, 0x6e, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x48, 0x72, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x48, 0x76, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x48, 0x7a, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x48, 0x33, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x48, 0x37, 0x2f, 0x77, 0x51, 0x42, 0x4f, 0x0a, 0x09, 0x41, 0x48, 0x2f, 0x2f, 0x77, 0x51, 0x42, 0x4f, 0x41, 0x49, 0x44, 0x2f, 0x77, 0x51, 0x42, 0x4f, 0x41, 0x49, 0x48, 0x2f, 0x77, 0x51, 0x42, 0x4f, 0x41, 0x4c, 0x72, 0x2f, 0x74, 0x77, 0x42, 0x4f, 0x41, 0x4f, 0x76, 0x2f, 0x74, 0x77, 0x42, 0x52, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x42, 0x52, 0x41, 0x42, 0x45, 0x41, 0x41, 0x41, 0x42, 0x52, 0x41, 0x42, 0x30, 0x41, 0x41, 0x41, 0x42, 0x52, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x52, 0x0a, 0x09, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x52, 0x41, 0x4c, 0x54, 0x2f, 0x61, 0x77, 0x42, 0x52, 0x41, 0x4c, 0x58, 0x2f, 0x6b, 0x41, 0x42, 0x52, 0x41, 0x4d, 0x58, 0x2f, 0x70, 0x41, 0x42, 0x53, 0x41, 0x42, 0x41, 0x41, 0x4a, 0x67, 0x42, 0x53, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x42, 0x53, 0x41, 0x42, 0x30, 0x41, 0x41, 0x41, 0x42, 0x53, 0x41, 0x46, 0x76, 0x2f, 0x77, 0x51, 0x42, 0x53, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x53, 0x0a, 0x09, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x53, 0x41, 0x4c, 0x54, 0x2f, 0x61, 0x77, 0x42, 0x53, 0x41, 0x4c, 0x58, 0x2f, 0x74, 0x77, 0x42, 0x53, 0x41, 0x4d, 0x58, 0x2f, 0x66, 0x51, 0x42, 0x56, 0x41, 0x42, 0x44, 0x2f, 0x66, 0x51, 0x42, 0x56, 0x41, 0x42, 0x48, 0x2f, 0x52, 0x41, 0x42, 0x56, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x42, 0x56, 0x41, 0x45, 0x62, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x45, 0x66, 0x2f, 0x33, 0x41, 0x42, 0x56, 0x0a, 0x09, 0x41, 0x45, 0x6a, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x45, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x45, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x56, 0x41, 0x45, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x56, 0x41, 0x46, 0x44, 0x2f, 0x33, 0x41, 0x42, 0x56, 0x41, 0x46, 0x48, 0x2f, 0x33, 0x41, 0x42, 0x56, 0x41, 0x46, 0x4c, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x46, 0x54, 0x2f, 0x33, 0x41, 0x42, 0x56, 0x41, 0x46, 0x58, 0x2f, 0x33, 0x41, 0x42, 0x56, 0x0a, 0x09, 0x41, 0x46, 0x67, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x46, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x46, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x46, 0x76, 0x2f, 0x79, 0x51, 0x42, 0x56, 0x41, 0x46, 0x77, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x46, 0x30, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x47, 0x2f, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x48, 0x44, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x48, 0x48, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x0a, 0x09, 0x41, 0x48, 0x4c, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x48, 0x50, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x48, 0x6a, 0x2f, 0x33, 0x41, 0x42, 0x56, 0x41, 0x48, 0x6e, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x48, 0x72, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x48, 0x76, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x48, 0x7a, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x48, 0x33, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x48, 0x34, 0x41, 0x41, 0x41, 0x42, 0x56, 0x0a, 0x09, 0x41, 0x48, 0x38, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x49, 0x41, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x49, 0x45, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x4b, 0x6e, 0x2f, 0x74, 0x77, 0x42, 0x56, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x56, 0x67, 0x42, 0x56, 0x41, 0x4c, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x4d, 0x58, 0x2b, 0x79, 0x51, 0x42, 0x56, 0x0a, 0x09, 0x41, 0x4f, 0x59, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x4f, 0x73, 0x41, 0x41, 0x41, 0x42, 0x56, 0x41, 0x50, 0x66, 0x2f, 0x33, 0x41, 0x42, 0x56, 0x41, 0x50, 0x7a, 0x2f, 0x30, 0x77, 0x42, 0x56, 0x41, 0x50, 0x37, 0x2f, 0x30, 0x77, 0x42, 0x5a, 0x41, 0x42, 0x44, 0x2f, 0x79, 0x51, 0x42, 0x5a, 0x41, 0x42, 0x48, 0x2f, 0x59, 0x51, 0x42, 0x5a, 0x41, 0x42, 0x33, 0x2f, 0x6b, 0x41, 0x42, 0x5a, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x42, 0x5a, 0x0a, 0x09, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x5a, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x42, 0x5a, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x42, 0x5a, 0x41, 0x4d, 0x58, 0x2b, 0x38, 0x41, 0x42, 0x61, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x42, 0x61, 0x41, 0x42, 0x48, 0x2f, 0x52, 0x41, 0x42, 0x61, 0x41, 0x42, 0x33, 0x2f, 0x6b, 0x41, 0x42, 0x61, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x42, 0x61, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x61, 0x0a, 0x09, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x42, 0x61, 0x41, 0x4c, 0x55, 0x41, 0x41, 0x41, 0x42, 0x61, 0x41, 0x4d, 0x58, 0x2f, 0x4b, 0x51, 0x42, 0x62, 0x41, 0x45, 0x62, 0x2f, 0x33, 0x41, 0x42, 0x62, 0x41, 0x45, 0x6a, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x41, 0x46, 0x4c, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x41, 0x47, 0x2f, 0x2f, 0x33, 0x41, 0x42, 0x62, 0x41, 0x48, 0x44, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x41, 0x48, 0x48, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x0a, 0x09, 0x41, 0x48, 0x4c, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x41, 0x48, 0x50, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x41, 0x48, 0x6e, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x41, 0x48, 0x72, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x41, 0x48, 0x76, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x41, 0x48, 0x7a, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x41, 0x48, 0x33, 0x2f, 0x77, 0x51, 0x42, 0x62, 0x41, 0x50, 0x7a, 0x2f, 0x33, 0x41, 0x42, 0x62, 0x41, 0x50, 0x37, 0x2f, 0x33, 0x41, 0x42, 0x63, 0x0a, 0x09, 0x41, 0x42, 0x44, 0x2f, 0x33, 0x41, 0x42, 0x63, 0x41, 0x42, 0x48, 0x2b, 0x33, 0x41, 0x42, 0x63, 0x41, 0x42, 0x33, 0x2f, 0x61, 0x77, 0x42, 0x63, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x42, 0x63, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x63, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x42, 0x63, 0x41, 0x4c, 0x55, 0x41, 0x41, 0x41, 0x42, 0x63, 0x41, 0x4d, 0x58, 0x2b, 0x30, 0x77, 0x42, 0x69, 0x41, 0x42, 0x44, 0x2f, 0x30, 0x77, 0x42, 0x69, 0x0a, 0x09, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x43, 0x51, 0x41, 0x4f, 0x51, 0x42, 0x69, 0x41, 0x43, 0x62, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x43, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x44, 0x4c, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x44, 0x54, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x44, 0x66, 0x2f, 0x59, 0x51, 0x42, 0x69, 0x0a, 0x09, 0x41, 0x44, 0x67, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x44, 0x6e, 0x2f, 0x66, 0x51, 0x42, 0x69, 0x41, 0x44, 0x72, 0x2f, 0x6b, 0x41, 0x42, 0x69, 0x41, 0x44, 0x73, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x44, 0x7a, 0x2f, 0x59, 0x51, 0x42, 0x69, 0x41, 0x45, 0x62, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x45, 0x66, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x45, 0x6a, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x45, 0x6e, 0x2f, 0x74, 0x77, 0x42, 0x69, 0x0a, 0x09, 0x41, 0x46, 0x4c, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x46, 0x54, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x46, 0x66, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x46, 0x67, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x46, 0x6e, 0x2f, 0x69, 0x41, 0x42, 0x69, 0x41, 0x46, 0x72, 0x2f, 0x72, 0x51, 0x42, 0x69, 0x41, 0x46, 0x7a, 0x2f, 0x64, 0x51, 0x42, 0x69, 0x41, 0x47, 0x49, 0x41, 0x4f, 0x51, 0x42, 0x69, 0x41, 0x47, 0x54, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x0a, 0x09, 0x41, 0x47, 0x66, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x47, 0x67, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x47, 0x2f, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x48, 0x44, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x48, 0x48, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x48, 0x4c, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x48, 0x50, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x48, 0x6e, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x48, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x0a, 0x09, 0x41, 0x48, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x48, 0x7a, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x48, 0x33, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x48, 0x34, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x48, 0x38, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x49, 0x41, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x49, 0x45, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x4b, 0x6e, 0x2f, 0x74, 0x77, 0x42, 0x69, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x69, 0x0a, 0x09, 0x41, 0x4b, 0x30, 0x41, 0x4f, 0x51, 0x42, 0x69, 0x41, 0x4b, 0x34, 0x41, 0x4f, 0x51, 0x42, 0x69, 0x41, 0x4b, 0x2f, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x4c, 0x54, 0x2b, 0x2b, 0x41, 0x42, 0x69, 0x41, 0x4c, 0x58, 0x2f, 0x41, 0x77, 0x42, 0x69, 0x41, 0x4c, 0x72, 0x2f, 0x64, 0x51, 0x42, 0x69, 0x41, 0x4c, 0x76, 0x2f, 0x59, 0x51, 0x42, 0x69, 0x41, 0x4d, 0x55, 0x41, 0x4c, 0x77, 0x42, 0x69, 0x41, 0x4d, 0x63, 0x41, 0x4f, 0x51, 0x42, 0x69, 0x0a, 0x09, 0x41, 0x4d, 0x6b, 0x41, 0x4f, 0x51, 0x42, 0x69, 0x41, 0x4e, 0x44, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x4e, 0x48, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x4e, 0x4c, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x4e, 0x4d, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x4e, 0x51, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x4e, 0x55, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x4f, 0x72, 0x2f, 0x59, 0x51, 0x42, 0x69, 0x0a, 0x09, 0x41, 0x4f, 0x76, 0x2f, 0x64, 0x51, 0x42, 0x69, 0x41, 0x50, 0x62, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x69, 0x41, 0x50, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x50, 0x7a, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x50, 0x33, 0x2f, 0x33, 0x41, 0x42, 0x69, 0x41, 0x50, 0x37, 0x2f, 0x33, 0x41, 0x42, 0x6b, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x0a, 0x09, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x41, 0x44, 0x7a, 0x2f, 0x33, 0x41, 0x42, 0x6b, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x42, 0x6b, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x6b, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x41, 0x4c, 0x55, 0x41, 0x4a, 0x67, 0x42, 0x6b, 0x0a, 0x09, 0x41, 0x4c, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x6b, 0x41, 0x4d, 0x55, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x42, 0x6b, 0x41, 0x4f, 0x72, 0x2f, 0x33, 0x41, 0x42, 0x6b, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x6e, 0x41, 0x42, 0x41, 0x41, 0x4f, 0x51, 0x42, 0x6e, 0x41, 0x42, 0x48, 0x2f, 0x72, 0x51, 0x42, 0x6e, 0x0a, 0x09, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x42, 0x6e, 0x41, 0x43, 0x54, 0x2f, 0x33, 0x41, 0x42, 0x6e, 0x41, 0x44, 0x6e, 0x2f, 0x33, 0x41, 0x42, 0x6e, 0x41, 0x44, 0x76, 0x2f, 0x66, 0x51, 0x42, 0x6e, 0x41, 0x44, 0x7a, 0x2f, 0x6b, 0x41, 0x42, 0x6e, 0x41, 0x47, 0x4c, 0x2f, 0x33, 0x41, 0x42, 0x6e, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x42, 0x6e, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x6e, 0x41, 0x4b, 0x33, 0x2f, 0x33, 0x41, 0x42, 0x6e, 0x0a, 0x09, 0x41, 0x4b, 0x37, 0x2f, 0x33, 0x41, 0x42, 0x6e, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x42, 0x6e, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x42, 0x6e, 0x41, 0x4c, 0x76, 0x2f, 0x6b, 0x41, 0x42, 0x6e, 0x41, 0x4d, 0x58, 0x2f, 0x52, 0x41, 0x42, 0x6e, 0x41, 0x4d, 0x66, 0x2f, 0x33, 0x41, 0x42, 0x6e, 0x41, 0x4d, 0x6e, 0x2f, 0x33, 0x41, 0x42, 0x6e, 0x41, 0x4f, 0x72, 0x2f, 0x6b, 0x41, 0x42, 0x6f, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x42, 0x6f, 0x0a, 0x09, 0x41, 0x43, 0x30, 0x41, 0x41, 0x41, 0x42, 0x6f, 0x41, 0x44, 0x33, 0x2f, 0x33, 0x41, 0x42, 0x6f, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x42, 0x6f, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x42, 0x6f, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x42, 0x6f, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x42, 0x6f, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x6f, 0x41, 0x4f, 0x58, 0x2f, 0x33, 0x41, 0x42, 0x77, 0x41, 0x46, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x78, 0x0a, 0x09, 0x41, 0x46, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x79, 0x41, 0x46, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x7a, 0x41, 0x46, 0x76, 0x2f, 0x33, 0x41, 0x42, 0x34, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x42, 0x34, 0x41, 0x42, 0x45, 0x41, 0x41, 0x41, 0x42, 0x34, 0x41, 0x42, 0x30, 0x41, 0x41, 0x41, 0x42, 0x34, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x34, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x34, 0x41, 0x4c, 0x54, 0x2f, 0x61, 0x77, 0x42, 0x34, 0x0a, 0x09, 0x41, 0x4c, 0x58, 0x2f, 0x6b, 0x41, 0x42, 0x34, 0x41, 0x4d, 0x58, 0x2f, 0x70, 0x41, 0x42, 0x35, 0x41, 0x42, 0x41, 0x41, 0x4a, 0x67, 0x42, 0x35, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x42, 0x35, 0x41, 0x42, 0x30, 0x41, 0x41, 0x41, 0x42, 0x35, 0x41, 0x46, 0x76, 0x2f, 0x77, 0x51, 0x42, 0x35, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x35, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x35, 0x41, 0x4c, 0x54, 0x2f, 0x61, 0x77, 0x42, 0x35, 0x0a, 0x09, 0x41, 0x4c, 0x58, 0x2f, 0x74, 0x77, 0x42, 0x35, 0x41, 0x4d, 0x58, 0x2f, 0x66, 0x51, 0x42, 0x36, 0x41, 0x42, 0x41, 0x41, 0x4a, 0x67, 0x42, 0x36, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x42, 0x36, 0x41, 0x42, 0x30, 0x41, 0x41, 0x41, 0x42, 0x36, 0x41, 0x46, 0x76, 0x2f, 0x77, 0x51, 0x42, 0x36, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x36, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x36, 0x41, 0x4c, 0x54, 0x2f, 0x61, 0x77, 0x42, 0x36, 0x0a, 0x09, 0x41, 0x4c, 0x58, 0x2f, 0x74, 0x77, 0x42, 0x36, 0x41, 0x4d, 0x58, 0x2f, 0x66, 0x51, 0x42, 0x37, 0x41, 0x42, 0x41, 0x41, 0x4a, 0x67, 0x42, 0x37, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x42, 0x37, 0x41, 0x42, 0x30, 0x41, 0x41, 0x41, 0x42, 0x37, 0x41, 0x46, 0x76, 0x2f, 0x77, 0x51, 0x42, 0x37, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x37, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x37, 0x41, 0x4c, 0x54, 0x2f, 0x61, 0x77, 0x42, 0x37, 0x0a, 0x09, 0x41, 0x4c, 0x58, 0x2f, 0x74, 0x77, 0x42, 0x37, 0x41, 0x4d, 0x58, 0x2f, 0x66, 0x51, 0x42, 0x38, 0x41, 0x42, 0x41, 0x41, 0x4a, 0x67, 0x42, 0x38, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x42, 0x38, 0x41, 0x42, 0x30, 0x41, 0x41, 0x41, 0x42, 0x38, 0x41, 0x46, 0x76, 0x2f, 0x77, 0x51, 0x42, 0x38, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x38, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x38, 0x41, 0x4c, 0x54, 0x2f, 0x61, 0x77, 0x42, 0x38, 0x0a, 0x09, 0x41, 0x4c, 0x58, 0x2f, 0x74, 0x77, 0x42, 0x38, 0x41, 0x4d, 0x58, 0x2f, 0x66, 0x51, 0x42, 0x39, 0x41, 0x42, 0x41, 0x41, 0x4a, 0x67, 0x42, 0x39, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x42, 0x39, 0x41, 0x42, 0x30, 0x41, 0x41, 0x41, 0x42, 0x39, 0x41, 0x46, 0x76, 0x2f, 0x77, 0x51, 0x42, 0x39, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x42, 0x39, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x42, 0x39, 0x41, 0x4c, 0x54, 0x2f, 0x61, 0x77, 0x42, 0x39, 0x0a, 0x09, 0x41, 0x4c, 0x58, 0x2f, 0x74, 0x77, 0x42, 0x39, 0x41, 0x4d, 0x58, 0x2f, 0x66, 0x51, 0x43, 0x4a, 0x41, 0x42, 0x41, 0x41, 0x4a, 0x67, 0x43, 0x4a, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x4a, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x43, 0x4a, 0x41, 0x4c, 0x54, 0x2f, 0x6b, 0x41, 0x43, 0x4a, 0x41, 0x4c, 0x58, 0x2f, 0x6b, 0x41, 0x43, 0x4a, 0x41, 0x4d, 0x58, 0x2f, 0x72, 0x51, 0x43, 0x51, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x43, 0x51, 0x0a, 0x09, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x51, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x43, 0x51, 0x41, 0x4c, 0x54, 0x2f, 0x72, 0x51, 0x43, 0x51, 0x41, 0x4c, 0x58, 0x2f, 0x70, 0x41, 0x43, 0x51, 0x41, 0x4d, 0x58, 0x2f, 0x6b, 0x41, 0x43, 0x70, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x43, 0x58, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x43, 0x62, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x43, 0x66, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x0a, 0x09, 0x41, 0x43, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x43, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x43, 0x73, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x43, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x43, 0x34, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x43, 0x38, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x44, 0x49, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x44, 0x4d, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x44, 0x51, 0x41, 0x41, 0x41, 0x43, 0x70, 0x0a, 0x09, 0x41, 0x44, 0x55, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x44, 0x66, 0x2f, 0x6b, 0x41, 0x43, 0x70, 0x41, 0x44, 0x6e, 0x2f, 0x6b, 0x41, 0x43, 0x70, 0x41, 0x44, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x44, 0x73, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x44, 0x7a, 0x2f, 0x61, 0x77, 0x43, 0x70, 0x41, 0x44, 0x30, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x45, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x46, 0x45, 0x41, 0x41, 0x41, 0x43, 0x70, 0x0a, 0x09, 0x41, 0x46, 0x49, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x46, 0x55, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x46, 0x6e, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x46, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x46, 0x7a, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x47, 0x54, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x47, 0x63, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x48, 0x67, 0x41, 0x41, 0x41, 0x43, 0x70, 0x0a, 0x09, 0x41, 0x48, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x48, 0x6f, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x48, 0x73, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x48, 0x77, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x48, 0x30, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x49, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x4a, 0x41, 0x41, 0x6c, 0x77, 0x43, 0x70, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x43, 0x70, 0x0a, 0x09, 0x41, 0x4b, 0x38, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x4c, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x4c, 0x76, 0x2f, 0x61, 0x77, 0x43, 0x70, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x4e, 0x41, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x4e, 0x45, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x4e, 0x49, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x4f, 0x55, 0x41, 0x41, 0x41, 0x43, 0x70, 0x0a, 0x09, 0x41, 0x4f, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x4f, 0x72, 0x2f, 0x61, 0x77, 0x43, 0x70, 0x41, 0x4f, 0x76, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x4f, 0x77, 0x41, 0x41, 0x41, 0x43, 0x70, 0x41, 0x50, 0x62, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x50, 0x76, 0x2f, 0x33, 0x41, 0x43, 0x70, 0x41, 0x50, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x43, 0x54, 0x2f, 0x74, 0x77, 0x43, 0x71, 0x41, 0x43, 0x58, 0x2f, 0x74, 0x77, 0x43, 0x71, 0x0a, 0x09, 0x41, 0x43, 0x62, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x43, 0x66, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x43, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x43, 0x6f, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x43, 0x73, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x43, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x43, 0x34, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x43, 0x38, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x44, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x0a, 0x09, 0x41, 0x44, 0x4d, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x44, 0x51, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x44, 0x55, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x44, 0x66, 0x2f, 0x52, 0x41, 0x43, 0x71, 0x41, 0x44, 0x6e, 0x2f, 0x54, 0x67, 0x43, 0x71, 0x41, 0x44, 0x72, 0x2f, 0x6b, 0x41, 0x43, 0x71, 0x41, 0x44, 0x76, 0x2f, 0x6b, 0x41, 0x43, 0x71, 0x41, 0x44, 0x7a, 0x2f, 0x48, 0x77, 0x43, 0x71, 0x41, 0x44, 0x30, 0x41, 0x41, 0x41, 0x43, 0x71, 0x0a, 0x09, 0x41, 0x45, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x46, 0x45, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x46, 0x49, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x46, 0x55, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x46, 0x6e, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x46, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x46, 0x7a, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x47, 0x4c, 0x2f, 0x74, 0x77, 0x43, 0x71, 0x41, 0x47, 0x54, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x0a, 0x09, 0x41, 0x47, 0x66, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x48, 0x67, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x48, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x48, 0x6f, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x48, 0x73, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x48, 0x77, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x48, 0x30, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x49, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x4a, 0x41, 0x41, 0x41, 0x41, 0x43, 0x71, 0x0a, 0x09, 0x41, 0x4b, 0x33, 0x2f, 0x74, 0x77, 0x43, 0x71, 0x41, 0x4b, 0x37, 0x2f, 0x74, 0x77, 0x43, 0x71, 0x41, 0x4b, 0x2f, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x4c, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x4c, 0x76, 0x2f, 0x48, 0x77, 0x43, 0x71, 0x41, 0x4d, 0x66, 0x2f, 0x74, 0x77, 0x43, 0x71, 0x41, 0x4d, 0x6e, 0x2f, 0x74, 0x77, 0x43, 0x71, 0x41, 0x4e, 0x44, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x4e, 0x48, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x0a, 0x09, 0x41, 0x4e, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x4f, 0x55, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x4f, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x4f, 0x72, 0x2f, 0x48, 0x77, 0x43, 0x71, 0x41, 0x4f, 0x76, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x4f, 0x77, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x50, 0x59, 0x41, 0x41, 0x41, 0x43, 0x71, 0x41, 0x50, 0x76, 0x2f, 0x33, 0x41, 0x43, 0x71, 0x41, 0x50, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x0a, 0x09, 0x41, 0x42, 0x44, 0x2f, 0x30, 0x77, 0x43, 0x74, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x43, 0x51, 0x41, 0x4f, 0x51, 0x43, 0x74, 0x41, 0x43, 0x62, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x43, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x44, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x44, 0x54, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x43, 0x74, 0x0a, 0x09, 0x41, 0x44, 0x66, 0x2f, 0x59, 0x51, 0x43, 0x74, 0x41, 0x44, 0x67, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x44, 0x6e, 0x2f, 0x66, 0x51, 0x43, 0x74, 0x41, 0x44, 0x72, 0x2f, 0x6b, 0x41, 0x43, 0x74, 0x41, 0x44, 0x73, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x44, 0x7a, 0x2f, 0x59, 0x51, 0x43, 0x74, 0x41, 0x45, 0x62, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x45, 0x66, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x45, 0x6a, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x0a, 0x09, 0x41, 0x45, 0x6e, 0x2f, 0x74, 0x77, 0x43, 0x74, 0x41, 0x46, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x46, 0x54, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x46, 0x66, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x46, 0x67, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x46, 0x6e, 0x2f, 0x69, 0x41, 0x43, 0x74, 0x41, 0x46, 0x72, 0x2f, 0x72, 0x51, 0x43, 0x74, 0x41, 0x46, 0x7a, 0x2f, 0x64, 0x51, 0x43, 0x74, 0x41, 0x47, 0x49, 0x41, 0x4f, 0x51, 0x43, 0x74, 0x0a, 0x09, 0x41, 0x47, 0x54, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x47, 0x66, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x47, 0x67, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x47, 0x2f, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x48, 0x44, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x48, 0x48, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x48, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x48, 0x50, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x48, 0x6e, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x0a, 0x09, 0x41, 0x48, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x48, 0x76, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x48, 0x7a, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x48, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x48, 0x34, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x48, 0x38, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x49, 0x41, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x49, 0x45, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x4b, 0x6e, 0x2f, 0x74, 0x77, 0x43, 0x74, 0x0a, 0x09, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x4b, 0x30, 0x41, 0x4f, 0x51, 0x43, 0x74, 0x41, 0x4b, 0x34, 0x41, 0x4f, 0x51, 0x43, 0x74, 0x41, 0x4b, 0x2f, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x4c, 0x54, 0x2b, 0x2b, 0x41, 0x43, 0x74, 0x41, 0x4c, 0x58, 0x2f, 0x41, 0x77, 0x43, 0x74, 0x41, 0x4c, 0x72, 0x2f, 0x64, 0x51, 0x43, 0x74, 0x41, 0x4c, 0x76, 0x2f, 0x59, 0x51, 0x43, 0x74, 0x41, 0x4d, 0x55, 0x41, 0x4c, 0x77, 0x43, 0x74, 0x0a, 0x09, 0x41, 0x4d, 0x63, 0x41, 0x4f, 0x51, 0x43, 0x74, 0x41, 0x4d, 0x6b, 0x41, 0x4f, 0x51, 0x43, 0x74, 0x41, 0x4e, 0x44, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x4e, 0x48, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x4e, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x4e, 0x4d, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x4e, 0x51, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x4e, 0x55, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x43, 0x74, 0x0a, 0x09, 0x41, 0x4f, 0x72, 0x2f, 0x59, 0x51, 0x43, 0x74, 0x41, 0x4f, 0x76, 0x2f, 0x64, 0x51, 0x43, 0x74, 0x41, 0x50, 0x62, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x74, 0x41, 0x50, 0x76, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x50, 0x7a, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x50, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x74, 0x41, 0x50, 0x37, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x42, 0x44, 0x2f, 0x30, 0x77, 0x43, 0x75, 0x0a, 0x09, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x43, 0x51, 0x41, 0x4f, 0x51, 0x43, 0x75, 0x41, 0x43, 0x62, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x43, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x44, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x44, 0x54, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x44, 0x66, 0x2f, 0x59, 0x51, 0x43, 0x75, 0x0a, 0x09, 0x41, 0x44, 0x67, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x44, 0x6e, 0x2f, 0x66, 0x51, 0x43, 0x75, 0x41, 0x44, 0x72, 0x2f, 0x6b, 0x41, 0x43, 0x75, 0x41, 0x44, 0x73, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x44, 0x7a, 0x2f, 0x59, 0x51, 0x43, 0x75, 0x41, 0x45, 0x62, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x45, 0x66, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x45, 0x6a, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x45, 0x6e, 0x2f, 0x74, 0x77, 0x43, 0x75, 0x0a, 0x09, 0x41, 0x46, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x46, 0x54, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x46, 0x66, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x46, 0x67, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x46, 0x6e, 0x2f, 0x69, 0x41, 0x43, 0x75, 0x41, 0x46, 0x72, 0x2f, 0x72, 0x51, 0x43, 0x75, 0x41, 0x46, 0x7a, 0x2f, 0x64, 0x51, 0x43, 0x75, 0x41, 0x47, 0x49, 0x41, 0x4f, 0x51, 0x43, 0x75, 0x41, 0x47, 0x54, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x0a, 0x09, 0x41, 0x47, 0x66, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x47, 0x67, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x47, 0x2f, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x48, 0x44, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x48, 0x48, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x48, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x48, 0x50, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x48, 0x6e, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x48, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x0a, 0x09, 0x41, 0x48, 0x76, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x48, 0x7a, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x48, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x48, 0x34, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x48, 0x38, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x49, 0x41, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x49, 0x45, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x4b, 0x6e, 0x2f, 0x74, 0x77, 0x43, 0x75, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x43, 0x75, 0x0a, 0x09, 0x41, 0x4b, 0x30, 0x41, 0x4f, 0x51, 0x43, 0x75, 0x41, 0x4b, 0x34, 0x41, 0x4f, 0x51, 0x43, 0x75, 0x41, 0x4b, 0x2f, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x4c, 0x54, 0x2b, 0x2b, 0x41, 0x43, 0x75, 0x41, 0x4c, 0x58, 0x2f, 0x41, 0x77, 0x43, 0x75, 0x41, 0x4c, 0x72, 0x2f, 0x64, 0x51, 0x43, 0x75, 0x41, 0x4c, 0x76, 0x2f, 0x59, 0x51, 0x43, 0x75, 0x41, 0x4d, 0x55, 0x41, 0x4c, 0x77, 0x43, 0x75, 0x41, 0x4d, 0x63, 0x41, 0x4f, 0x51, 0x43, 0x75, 0x0a, 0x09, 0x41, 0x4d, 0x6b, 0x41, 0x4f, 0x51, 0x43, 0x75, 0x41, 0x4e, 0x44, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x4e, 0x48, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x4e, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x4e, 0x4d, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x4e, 0x51, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x4e, 0x55, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x4f, 0x72, 0x2f, 0x59, 0x51, 0x43, 0x75, 0x0a, 0x09, 0x41, 0x4f, 0x76, 0x2f, 0x64, 0x51, 0x43, 0x75, 0x41, 0x50, 0x62, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x75, 0x41, 0x50, 0x76, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x50, 0x7a, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x50, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x75, 0x41, 0x50, 0x37, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x41, 0x42, 0x41, 0x41, 0x4f, 0x51, 0x43, 0x76, 0x41, 0x42, 0x48, 0x2f, 0x72, 0x51, 0x43, 0x76, 0x0a, 0x09, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x41, 0x43, 0x54, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x41, 0x44, 0x6e, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x41, 0x44, 0x76, 0x2f, 0x66, 0x51, 0x43, 0x76, 0x41, 0x44, 0x7a, 0x2f, 0x6b, 0x41, 0x43, 0x76, 0x41, 0x47, 0x4c, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x43, 0x76, 0x41, 0x4b, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x0a, 0x09, 0x41, 0x4b, 0x37, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x43, 0x76, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x41, 0x4c, 0x76, 0x2f, 0x6b, 0x41, 0x43, 0x76, 0x41, 0x4d, 0x58, 0x2f, 0x52, 0x41, 0x43, 0x76, 0x41, 0x4d, 0x66, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x41, 0x4d, 0x6e, 0x2f, 0x33, 0x41, 0x43, 0x76, 0x41, 0x4f, 0x72, 0x2f, 0x6b, 0x41, 0x43, 0x30, 0x41, 0x43, 0x54, 0x2b, 0x2b, 0x41, 0x43, 0x30, 0x0a, 0x09, 0x41, 0x43, 0x58, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x41, 0x43, 0x62, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x43, 0x66, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x41, 0x43, 0x6e, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x41, 0x43, 0x72, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x43, 0x76, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x41, 0x43, 0x33, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x41, 0x43, 0x37, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x41, 0x43, 0x2f, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x0a, 0x09, 0x41, 0x44, 0x4c, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x44, 0x50, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x41, 0x44, 0x54, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x44, 0x58, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x41, 0x44, 0x63, 0x41, 0x41, 0x41, 0x43, 0x30, 0x41, 0x44, 0x6b, 0x41, 0x41, 0x41, 0x43, 0x30, 0x41, 0x44, 0x6f, 0x41, 0x41, 0x41, 0x43, 0x30, 0x41, 0x44, 0x76, 0x2f, 0x69, 0x41, 0x43, 0x30, 0x41, 0x44, 0x77, 0x41, 0x41, 0x41, 0x43, 0x30, 0x0a, 0x09, 0x41, 0x44, 0x33, 0x2f, 0x33, 0x41, 0x43, 0x30, 0x41, 0x45, 0x6e, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x46, 0x48, 0x2f, 0x6b, 0x41, 0x43, 0x30, 0x41, 0x46, 0x4c, 0x2f, 0x61, 0x77, 0x43, 0x30, 0x41, 0x46, 0x58, 0x2f, 0x6b, 0x41, 0x43, 0x30, 0x41, 0x46, 0x6e, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x46, 0x72, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x46, 0x7a, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x47, 0x4c, 0x2b, 0x2b, 0x41, 0x43, 0x30, 0x0a, 0x09, 0x41, 0x47, 0x54, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x47, 0x66, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x48, 0x6a, 0x2f, 0x6b, 0x41, 0x43, 0x30, 0x41, 0x48, 0x6e, 0x2f, 0x61, 0x77, 0x43, 0x30, 0x41, 0x48, 0x72, 0x2f, 0x61, 0x77, 0x43, 0x30, 0x41, 0x48, 0x76, 0x2f, 0x61, 0x77, 0x43, 0x30, 0x41, 0x48, 0x7a, 0x2f, 0x61, 0x77, 0x43, 0x30, 0x41, 0x48, 0x33, 0x2f, 0x61, 0x77, 0x43, 0x30, 0x41, 0x49, 0x6e, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x0a, 0x09, 0x41, 0x4a, 0x44, 0x2b, 0x66, 0x51, 0x43, 0x30, 0x41, 0x4b, 0x33, 0x2b, 0x2b, 0x41, 0x43, 0x30, 0x41, 0x4b, 0x37, 0x2b, 0x2b, 0x41, 0x43, 0x30, 0x41, 0x4b, 0x2f, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x4c, 0x72, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x4c, 0x73, 0x41, 0x41, 0x41, 0x43, 0x30, 0x41, 0x4d, 0x66, 0x2b, 0x2b, 0x41, 0x43, 0x30, 0x41, 0x4d, 0x6e, 0x2b, 0x2b, 0x41, 0x43, 0x30, 0x41, 0x4e, 0x44, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x0a, 0x09, 0x41, 0x4e, 0x48, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x4e, 0x4c, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x4f, 0x58, 0x2f, 0x33, 0x41, 0x43, 0x30, 0x41, 0x4f, 0x6e, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x4f, 0x6f, 0x41, 0x41, 0x41, 0x43, 0x30, 0x41, 0x4f, 0x76, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x4f, 0x7a, 0x2f, 0x77, 0x51, 0x43, 0x30, 0x41, 0x50, 0x62, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x41, 0x50, 0x76, 0x2f, 0x74, 0x77, 0x43, 0x30, 0x0a, 0x09, 0x41, 0x50, 0x33, 0x2f, 0x74, 0x77, 0x43, 0x36, 0x41, 0x42, 0x44, 0x2f, 0x33, 0x41, 0x43, 0x36, 0x41, 0x42, 0x48, 0x2b, 0x33, 0x41, 0x43, 0x36, 0x41, 0x42, 0x33, 0x2f, 0x61, 0x77, 0x43, 0x36, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x43, 0x36, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x43, 0x36, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x43, 0x36, 0x41, 0x4c, 0x55, 0x41, 0x41, 0x41, 0x43, 0x36, 0x41, 0x4d, 0x58, 0x2b, 0x30, 0x77, 0x43, 0x37, 0x0a, 0x09, 0x41, 0x42, 0x44, 0x2f, 0x44, 0x51, 0x43, 0x37, 0x41, 0x42, 0x48, 0x2b, 0x59, 0x51, 0x43, 0x37, 0x41, 0x42, 0x33, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x43, 0x54, 0x2f, 0x59, 0x51, 0x43, 0x37, 0x41, 0x43, 0x62, 0x2f, 0x6b, 0x41, 0x43, 0x37, 0x41, 0x44, 0x4c, 0x2f, 0x6b, 0x41, 0x43, 0x37, 0x41, 0x45, 0x54, 0x2b, 0x35, 0x67, 0x43, 0x37, 0x41, 0x45, 0x6a, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x45, 0x7a, 0x2f, 0x74, 0x77, 0x43, 0x37, 0x0a, 0x09, 0x41, 0x46, 0x4c, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x46, 0x6a, 0x2f, 0x46, 0x51, 0x43, 0x37, 0x41, 0x47, 0x4c, 0x2f, 0x59, 0x51, 0x43, 0x37, 0x41, 0x47, 0x54, 0x2f, 0x6b, 0x41, 0x43, 0x37, 0x41, 0x47, 0x66, 0x2f, 0x6b, 0x41, 0x43, 0x37, 0x41, 0x47, 0x6e, 0x2b, 0x35, 0x67, 0x43, 0x37, 0x41, 0x47, 0x72, 0x2b, 0x35, 0x67, 0x43, 0x37, 0x41, 0x47, 0x76, 0x2b, 0x35, 0x67, 0x43, 0x37, 0x41, 0x47, 0x7a, 0x2b, 0x35, 0x67, 0x43, 0x37, 0x0a, 0x09, 0x41, 0x47, 0x33, 0x2b, 0x35, 0x67, 0x43, 0x37, 0x41, 0x47, 0x37, 0x2b, 0x35, 0x67, 0x43, 0x37, 0x41, 0x48, 0x44, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x48, 0x48, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x48, 0x4c, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x48, 0x50, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x48, 0x6e, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x48, 0x72, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x48, 0x76, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x0a, 0x09, 0x41, 0x48, 0x7a, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x48, 0x33, 0x2b, 0x38, 0x41, 0x43, 0x37, 0x41, 0x48, 0x37, 0x2f, 0x46, 0x51, 0x43, 0x37, 0x41, 0x48, 0x2f, 0x2f, 0x46, 0x51, 0x43, 0x37, 0x41, 0x49, 0x44, 0x2f, 0x46, 0x51, 0x43, 0x37, 0x41, 0x49, 0x48, 0x2f, 0x46, 0x51, 0x43, 0x37, 0x41, 0x4b, 0x6e, 0x2f, 0x48, 0x77, 0x43, 0x37, 0x41, 0x4b, 0x72, 0x2f, 0x61, 0x77, 0x43, 0x37, 0x41, 0x4b, 0x33, 0x2f, 0x59, 0x51, 0x43, 0x37, 0x0a, 0x09, 0x41, 0x4b, 0x37, 0x2f, 0x59, 0x51, 0x43, 0x37, 0x41, 0x4b, 0x2f, 0x2f, 0x6b, 0x41, 0x43, 0x37, 0x41, 0x4c, 0x54, 0x2f, 0x6b, 0x41, 0x43, 0x37, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x43, 0x37, 0x41, 0x4d, 0x58, 0x2b, 0x2b, 0x41, 0x43, 0x37, 0x41, 0x4d, 0x66, 0x2f, 0x59, 0x51, 0x43, 0x37, 0x41, 0x4d, 0x6e, 0x2f, 0x59, 0x51, 0x43, 0x37, 0x41, 0x4e, 0x44, 0x2f, 0x6b, 0x41, 0x43, 0x37, 0x41, 0x4e, 0x48, 0x2f, 0x6b, 0x41, 0x43, 0x37, 0x0a, 0x09, 0x41, 0x4e, 0x4c, 0x2f, 0x6b, 0x41, 0x43, 0x37, 0x41, 0x50, 0x76, 0x2f, 0x6b, 0x41, 0x43, 0x37, 0x41, 0x50, 0x33, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x43, 0x51, 0x41, 0x4a, 0x67, 0x44, 0x46, 0x41, 0x43, 0x58, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x43, 0x62, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x43, 0x66, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x43, 0x6e, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x43, 0x72, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x0a, 0x09, 0x41, 0x43, 0x76, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x43, 0x30, 0x41, 0x4c, 0x77, 0x44, 0x46, 0x41, 0x43, 0x37, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x43, 0x2f, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x44, 0x4c, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x44, 0x50, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x44, 0x54, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x44, 0x58, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x44, 0x66, 0x2b, 0x35, 0x67, 0x44, 0x46, 0x0a, 0x09, 0x41, 0x44, 0x6e, 0x2b, 0x69, 0x41, 0x44, 0x46, 0x41, 0x44, 0x72, 0x2f, 0x41, 0x77, 0x44, 0x46, 0x41, 0x44, 0x76, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x44, 0x7a, 0x2b, 0x69, 0x41, 0x44, 0x46, 0x41, 0x44, 0x30, 0x41, 0x41, 0x41, 0x44, 0x46, 0x41, 0x45, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x46, 0x41, 0x46, 0x48, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x46, 0x4c, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x46, 0x58, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x0a, 0x09, 0x41, 0x46, 0x6e, 0x2f, 0x46, 0x51, 0x44, 0x46, 0x41, 0x46, 0x72, 0x2f, 0x50, 0x41, 0x44, 0x46, 0x41, 0x46, 0x7a, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x47, 0x49, 0x41, 0x4a, 0x67, 0x44, 0x46, 0x41, 0x47, 0x54, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x47, 0x66, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x48, 0x6a, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x48, 0x6e, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x48, 0x72, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x0a, 0x09, 0x41, 0x48, 0x76, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x48, 0x7a, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x48, 0x33, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x49, 0x6e, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x4a, 0x41, 0x41, 0x4a, 0x67, 0x44, 0x46, 0x41, 0x4b, 0x30, 0x41, 0x4a, 0x67, 0x44, 0x46, 0x41, 0x4b, 0x34, 0x41, 0x4a, 0x67, 0x44, 0x46, 0x41, 0x4b, 0x2f, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x4c, 0x72, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x0a, 0x09, 0x41, 0x4c, 0x76, 0x2b, 0x69, 0x41, 0x44, 0x46, 0x41, 0x4d, 0x63, 0x41, 0x4a, 0x67, 0x44, 0x46, 0x41, 0x4d, 0x6b, 0x41, 0x4a, 0x67, 0x44, 0x46, 0x41, 0x4e, 0x44, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x4e, 0x48, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x4e, 0x4c, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x4f, 0x55, 0x41, 0x41, 0x41, 0x44, 0x46, 0x41, 0x4f, 0x6e, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x4f, 0x72, 0x2b, 0x69, 0x41, 0x44, 0x46, 0x0a, 0x09, 0x41, 0x4f, 0x76, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x4f, 0x7a, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x50, 0x62, 0x2f, 0x74, 0x77, 0x44, 0x46, 0x41, 0x50, 0x76, 0x2f, 0x6b, 0x41, 0x44, 0x46, 0x41, 0x50, 0x33, 0x2f, 0x6b, 0x41, 0x44, 0x48, 0x41, 0x42, 0x44, 0x2f, 0x30, 0x77, 0x44, 0x48, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x43, 0x51, 0x41, 0x4f, 0x51, 0x44, 0x48, 0x0a, 0x09, 0x41, 0x43, 0x62, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x43, 0x72, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x44, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x44, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x44, 0x66, 0x2f, 0x59, 0x51, 0x44, 0x48, 0x41, 0x44, 0x67, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x44, 0x6e, 0x2f, 0x66, 0x51, 0x44, 0x48, 0x41, 0x44, 0x72, 0x2f, 0x6b, 0x41, 0x44, 0x48, 0x0a, 0x09, 0x41, 0x44, 0x73, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x44, 0x7a, 0x2f, 0x59, 0x51, 0x44, 0x48, 0x41, 0x45, 0x62, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x45, 0x66, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x45, 0x6a, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x45, 0x6e, 0x2f, 0x74, 0x77, 0x44, 0x48, 0x41, 0x46, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x46, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x46, 0x66, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x0a, 0x09, 0x41, 0x46, 0x67, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x46, 0x6e, 0x2f, 0x69, 0x41, 0x44, 0x48, 0x41, 0x46, 0x72, 0x2f, 0x72, 0x51, 0x44, 0x48, 0x41, 0x46, 0x7a, 0x2f, 0x64, 0x51, 0x44, 0x48, 0x41, 0x47, 0x49, 0x41, 0x4f, 0x51, 0x44, 0x48, 0x41, 0x47, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x47, 0x66, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x47, 0x67, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x47, 0x2f, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x0a, 0x09, 0x41, 0x48, 0x44, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x48, 0x48, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x48, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x48, 0x50, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x48, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x48, 0x72, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x48, 0x76, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x48, 0x7a, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x48, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x0a, 0x09, 0x41, 0x48, 0x34, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x48, 0x38, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x49, 0x41, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x49, 0x45, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x4b, 0x6e, 0x2f, 0x74, 0x77, 0x44, 0x48, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x4b, 0x30, 0x41, 0x4f, 0x51, 0x44, 0x48, 0x41, 0x4b, 0x34, 0x41, 0x4f, 0x51, 0x44, 0x48, 0x41, 0x4b, 0x2f, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x0a, 0x09, 0x41, 0x4c, 0x54, 0x2b, 0x2b, 0x41, 0x44, 0x48, 0x41, 0x4c, 0x58, 0x2f, 0x41, 0x77, 0x44, 0x48, 0x41, 0x4c, 0x72, 0x2f, 0x64, 0x51, 0x44, 0x48, 0x41, 0x4c, 0x76, 0x2f, 0x59, 0x51, 0x44, 0x48, 0x41, 0x4d, 0x55, 0x41, 0x4c, 0x77, 0x44, 0x48, 0x41, 0x4d, 0x63, 0x41, 0x4f, 0x51, 0x44, 0x48, 0x41, 0x4d, 0x6b, 0x41, 0x4f, 0x51, 0x44, 0x48, 0x41, 0x4e, 0x44, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x4e, 0x48, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x0a, 0x09, 0x41, 0x4e, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x4e, 0x4d, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x4e, 0x51, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x4e, 0x55, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x44, 0x48, 0x41, 0x4f, 0x72, 0x2f, 0x59, 0x51, 0x44, 0x48, 0x41, 0x4f, 0x76, 0x2f, 0x64, 0x51, 0x44, 0x48, 0x41, 0x50, 0x62, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x48, 0x0a, 0x09, 0x41, 0x50, 0x76, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x50, 0x7a, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x50, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x48, 0x41, 0x50, 0x37, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x42, 0x44, 0x2f, 0x30, 0x77, 0x44, 0x4a, 0x41, 0x42, 0x48, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x43, 0x51, 0x41, 0x4f, 0x51, 0x44, 0x4a, 0x41, 0x43, 0x62, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x0a, 0x09, 0x41, 0x43, 0x72, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x44, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x44, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x44, 0x66, 0x2f, 0x59, 0x51, 0x44, 0x4a, 0x41, 0x44, 0x67, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x44, 0x6e, 0x2f, 0x66, 0x51, 0x44, 0x4a, 0x41, 0x44, 0x72, 0x2f, 0x6b, 0x41, 0x44, 0x4a, 0x41, 0x44, 0x73, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x0a, 0x09, 0x41, 0x44, 0x7a, 0x2f, 0x59, 0x51, 0x44, 0x4a, 0x41, 0x45, 0x62, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x45, 0x66, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x45, 0x6a, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x45, 0x6e, 0x2f, 0x74, 0x77, 0x44, 0x4a, 0x41, 0x46, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x46, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x46, 0x66, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x46, 0x67, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x0a, 0x09, 0x41, 0x46, 0x6e, 0x2f, 0x69, 0x41, 0x44, 0x4a, 0x41, 0x46, 0x72, 0x2f, 0x72, 0x51, 0x44, 0x4a, 0x41, 0x46, 0x7a, 0x2f, 0x64, 0x51, 0x44, 0x4a, 0x41, 0x47, 0x49, 0x41, 0x4f, 0x51, 0x44, 0x4a, 0x41, 0x47, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x47, 0x66, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x47, 0x67, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x47, 0x2f, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x48, 0x44, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x0a, 0x09, 0x41, 0x48, 0x48, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x48, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x48, 0x50, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x48, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x48, 0x72, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x48, 0x76, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x48, 0x7a, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x48, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x48, 0x34, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x0a, 0x09, 0x41, 0x48, 0x38, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x49, 0x41, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x49, 0x45, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x4b, 0x6e, 0x2f, 0x74, 0x77, 0x44, 0x4a, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x4b, 0x30, 0x41, 0x4f, 0x51, 0x44, 0x4a, 0x41, 0x4b, 0x34, 0x41, 0x4f, 0x51, 0x44, 0x4a, 0x41, 0x4b, 0x2f, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x4c, 0x54, 0x2b, 0x2b, 0x41, 0x44, 0x4a, 0x0a, 0x09, 0x41, 0x4c, 0x58, 0x2f, 0x41, 0x77, 0x44, 0x4a, 0x41, 0x4c, 0x72, 0x2f, 0x64, 0x51, 0x44, 0x4a, 0x41, 0x4c, 0x76, 0x2f, 0x59, 0x51, 0x44, 0x4a, 0x41, 0x4d, 0x55, 0x41, 0x4c, 0x77, 0x44, 0x4a, 0x41, 0x4d, 0x63, 0x41, 0x4f, 0x51, 0x44, 0x4a, 0x41, 0x4d, 0x6b, 0x41, 0x4f, 0x51, 0x44, 0x4a, 0x41, 0x4e, 0x44, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x4e, 0x48, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x4e, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x0a, 0x09, 0x41, 0x4e, 0x4d, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x4e, 0x51, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x4e, 0x55, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x4f, 0x72, 0x2f, 0x59, 0x51, 0x44, 0x4a, 0x41, 0x4f, 0x76, 0x2f, 0x64, 0x51, 0x44, 0x4a, 0x41, 0x50, 0x62, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x4a, 0x41, 0x50, 0x76, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x0a, 0x09, 0x41, 0x50, 0x7a, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x50, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x4a, 0x41, 0x50, 0x37, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x42, 0x41, 0x41, 0x4f, 0x51, 0x44, 0x51, 0x41, 0x42, 0x48, 0x2f, 0x72, 0x51, 0x44, 0x51, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x43, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x44, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x44, 0x76, 0x2f, 0x66, 0x51, 0x44, 0x51, 0x0a, 0x09, 0x41, 0x44, 0x7a, 0x2f, 0x6b, 0x41, 0x44, 0x51, 0x41, 0x47, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x51, 0x41, 0x4b, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x4b, 0x37, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x44, 0x51, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x4c, 0x76, 0x2f, 0x6b, 0x41, 0x44, 0x51, 0x0a, 0x09, 0x41, 0x4d, 0x58, 0x2f, 0x52, 0x41, 0x44, 0x51, 0x41, 0x4d, 0x66, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x4d, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x51, 0x41, 0x4f, 0x72, 0x2f, 0x6b, 0x41, 0x44, 0x52, 0x41, 0x42, 0x41, 0x41, 0x4f, 0x51, 0x44, 0x52, 0x41, 0x42, 0x48, 0x2f, 0x72, 0x51, 0x44, 0x52, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x52, 0x41, 0x43, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x52, 0x41, 0x44, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x52, 0x0a, 0x09, 0x41, 0x44, 0x76, 0x2f, 0x66, 0x51, 0x44, 0x52, 0x41, 0x44, 0x7a, 0x2f, 0x6b, 0x41, 0x44, 0x52, 0x41, 0x47, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x52, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x52, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x52, 0x41, 0x4b, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x52, 0x41, 0x4b, 0x37, 0x2f, 0x33, 0x41, 0x44, 0x52, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x44, 0x52, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x44, 0x52, 0x0a, 0x09, 0x41, 0x4c, 0x76, 0x2f, 0x6b, 0x41, 0x44, 0x52, 0x41, 0x4d, 0x58, 0x2f, 0x52, 0x41, 0x44, 0x52, 0x41, 0x4d, 0x66, 0x2f, 0x33, 0x41, 0x44, 0x52, 0x41, 0x4d, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x52, 0x41, 0x4f, 0x72, 0x2f, 0x6b, 0x41, 0x44, 0x53, 0x41, 0x42, 0x41, 0x41, 0x4f, 0x51, 0x44, 0x53, 0x41, 0x42, 0x48, 0x2f, 0x72, 0x51, 0x44, 0x53, 0x41, 0x42, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x53, 0x41, 0x43, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x53, 0x0a, 0x09, 0x41, 0x44, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x53, 0x41, 0x44, 0x76, 0x2f, 0x66, 0x51, 0x44, 0x53, 0x41, 0x44, 0x7a, 0x2f, 0x6b, 0x41, 0x44, 0x53, 0x41, 0x47, 0x4c, 0x2f, 0x33, 0x41, 0x44, 0x53, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x53, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x53, 0x41, 0x4b, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x53, 0x41, 0x4b, 0x37, 0x2f, 0x33, 0x41, 0x44, 0x53, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x44, 0x53, 0x0a, 0x09, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x44, 0x53, 0x41, 0x4c, 0x76, 0x2f, 0x6b, 0x41, 0x44, 0x53, 0x41, 0x4d, 0x58, 0x2f, 0x52, 0x41, 0x44, 0x53, 0x41, 0x4d, 0x66, 0x2f, 0x33, 0x41, 0x44, 0x53, 0x41, 0x4d, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x53, 0x41, 0x4f, 0x72, 0x2f, 0x6b, 0x41, 0x44, 0x54, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x44, 0x54, 0x41, 0x43, 0x30, 0x41, 0x41, 0x41, 0x44, 0x54, 0x41, 0x44, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x54, 0x0a, 0x09, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x44, 0x54, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x44, 0x54, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x44, 0x54, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x44, 0x54, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x54, 0x41, 0x4f, 0x58, 0x2f, 0x33, 0x41, 0x44, 0x55, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x44, 0x55, 0x41, 0x43, 0x30, 0x41, 0x41, 0x41, 0x44, 0x55, 0x41, 0x44, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x55, 0x0a, 0x09, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x44, 0x55, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x44, 0x55, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x44, 0x55, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x44, 0x55, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x55, 0x41, 0x4f, 0x58, 0x2f, 0x33, 0x41, 0x44, 0x56, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x44, 0x56, 0x41, 0x43, 0x30, 0x41, 0x41, 0x41, 0x44, 0x56, 0x41, 0x44, 0x33, 0x2f, 0x33, 0x41, 0x44, 0x56, 0x0a, 0x09, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x44, 0x56, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x44, 0x56, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x44, 0x56, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x44, 0x56, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x56, 0x41, 0x4f, 0x58, 0x2f, 0x33, 0x41, 0x44, 0x6a, 0x41, 0x43, 0x51, 0x41, 0x4a, 0x67, 0x44, 0x6a, 0x41, 0x43, 0x59, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x43, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x0a, 0x09, 0x41, 0x44, 0x49, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x44, 0x51, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x47, 0x49, 0x41, 0x4a, 0x67, 0x44, 0x6a, 0x41, 0x47, 0x51, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x47, 0x63, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x4b, 0x30, 0x41, 0x4a, 0x67, 0x44, 0x6a, 0x41, 0x4b, 0x34, 0x41, 0x4a, 0x67, 0x44, 0x6a, 0x41, 0x4b, 0x38, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x0a, 0x09, 0x41, 0x4d, 0x63, 0x41, 0x4a, 0x67, 0x44, 0x6a, 0x41, 0x4d, 0x6b, 0x41, 0x4a, 0x67, 0x44, 0x6a, 0x41, 0x4e, 0x41, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x4e, 0x45, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x4e, 0x49, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x50, 0x59, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x41, 0x50, 0x73, 0x41, 0x41, 0x41, 0x44, 0x6a, 0x0a, 0x09, 0x41, 0x50, 0x30, 0x41, 0x41, 0x41, 0x44, 0x6c, 0x41, 0x42, 0x44, 0x2f, 0x33, 0x41, 0x44, 0x6c, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x6c, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x6c, 0x41, 0x4c, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x6c, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x44, 0x6c, 0x41, 0x4d, 0x58, 0x2f, 0x33, 0x41, 0x44, 0x70, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x44, 0x70, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x70, 0x0a, 0x09, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x70, 0x41, 0x4c, 0x54, 0x2f, 0x70, 0x41, 0x44, 0x70, 0x41, 0x4c, 0x58, 0x2f, 0x6b, 0x41, 0x44, 0x70, 0x41, 0x4d, 0x58, 0x2f, 0x74, 0x77, 0x44, 0x71, 0x41, 0x42, 0x44, 0x2f, 0x44, 0x51, 0x44, 0x71, 0x41, 0x42, 0x48, 0x2b, 0x59, 0x51, 0x44, 0x71, 0x41, 0x42, 0x33, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x43, 0x54, 0x2f, 0x59, 0x51, 0x44, 0x71, 0x41, 0x43, 0x62, 0x2f, 0x6b, 0x41, 0x44, 0x71, 0x0a, 0x09, 0x41, 0x44, 0x4c, 0x2f, 0x6b, 0x41, 0x44, 0x71, 0x41, 0x45, 0x54, 0x2b, 0x35, 0x67, 0x44, 0x71, 0x41, 0x45, 0x6a, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x45, 0x7a, 0x2f, 0x74, 0x77, 0x44, 0x71, 0x41, 0x46, 0x4c, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x46, 0x6a, 0x2f, 0x46, 0x51, 0x44, 0x71, 0x41, 0x47, 0x4c, 0x2f, 0x59, 0x51, 0x44, 0x71, 0x41, 0x47, 0x54, 0x2f, 0x6b, 0x41, 0x44, 0x71, 0x41, 0x47, 0x66, 0x2f, 0x6b, 0x41, 0x44, 0x71, 0x0a, 0x09, 0x41, 0x47, 0x6e, 0x2b, 0x35, 0x67, 0x44, 0x71, 0x41, 0x47, 0x72, 0x2b, 0x35, 0x67, 0x44, 0x71, 0x41, 0x47, 0x76, 0x2b, 0x35, 0x67, 0x44, 0x71, 0x41, 0x47, 0x7a, 0x2b, 0x35, 0x67, 0x44, 0x71, 0x41, 0x47, 0x33, 0x2b, 0x35, 0x67, 0x44, 0x71, 0x41, 0x47, 0x37, 0x2b, 0x35, 0x67, 0x44, 0x71, 0x41, 0x48, 0x44, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x48, 0x48, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x48, 0x4c, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x0a, 0x09, 0x41, 0x48, 0x50, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x48, 0x6e, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x48, 0x72, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x48, 0x76, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x48, 0x7a, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x48, 0x33, 0x2b, 0x38, 0x41, 0x44, 0x71, 0x41, 0x48, 0x37, 0x2f, 0x46, 0x51, 0x44, 0x71, 0x41, 0x48, 0x2f, 0x2f, 0x46, 0x51, 0x44, 0x71, 0x41, 0x49, 0x44, 0x2f, 0x46, 0x51, 0x44, 0x71, 0x0a, 0x09, 0x41, 0x49, 0x48, 0x2f, 0x46, 0x51, 0x44, 0x71, 0x41, 0x4b, 0x6e, 0x2f, 0x48, 0x77, 0x44, 0x71, 0x41, 0x4b, 0x72, 0x2f, 0x61, 0x77, 0x44, 0x71, 0x41, 0x4b, 0x33, 0x2f, 0x59, 0x51, 0x44, 0x71, 0x41, 0x4b, 0x37, 0x2f, 0x59, 0x51, 0x44, 0x71, 0x41, 0x4b, 0x2f, 0x2f, 0x6b, 0x41, 0x44, 0x71, 0x41, 0x4c, 0x54, 0x2f, 0x6b, 0x41, 0x44, 0x71, 0x41, 0x4c, 0x58, 0x2f, 0x33, 0x41, 0x44, 0x71, 0x41, 0x4d, 0x58, 0x2b, 0x2b, 0x41, 0x44, 0x71, 0x0a, 0x09, 0x41, 0x4d, 0x66, 0x2f, 0x59, 0x51, 0x44, 0x71, 0x41, 0x4d, 0x6e, 0x2f, 0x59, 0x51, 0x44, 0x71, 0x41, 0x4e, 0x44, 0x2f, 0x6b, 0x41, 0x44, 0x71, 0x41, 0x4e, 0x48, 0x2f, 0x6b, 0x41, 0x44, 0x71, 0x41, 0x4e, 0x4c, 0x2f, 0x6b, 0x41, 0x44, 0x71, 0x41, 0x50, 0x76, 0x2f, 0x6b, 0x41, 0x44, 0x71, 0x41, 0x50, 0x33, 0x2f, 0x6b, 0x41, 0x44, 0x72, 0x41, 0x42, 0x44, 0x2f, 0x33, 0x41, 0x44, 0x72, 0x41, 0x42, 0x48, 0x2b, 0x33, 0x41, 0x44, 0x72, 0x0a, 0x09, 0x41, 0x42, 0x33, 0x2f, 0x61, 0x77, 0x44, 0x72, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x72, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x44, 0x72, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x44, 0x72, 0x41, 0x4c, 0x55, 0x41, 0x41, 0x41, 0x44, 0x72, 0x41, 0x4d, 0x58, 0x2b, 0x30, 0x77, 0x44, 0x73, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x44, 0x73, 0x41, 0x42, 0x48, 0x2f, 0x61, 0x77, 0x44, 0x73, 0x41, 0x42, 0x33, 0x2f, 0x74, 0x77, 0x44, 0x73, 0x0a, 0x09, 0x41, 0x4b, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x73, 0x41, 0x4b, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x73, 0x41, 0x4c, 0x54, 0x2f, 0x33, 0x41, 0x44, 0x73, 0x41, 0x4c, 0x55, 0x41, 0x41, 0x41, 0x44, 0x73, 0x41, 0x4d, 0x58, 0x2f, 0x52, 0x41, 0x44, 0x32, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x44, 0x32, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x44, 0x32, 0x41, 0x44, 0x66, 0x2f, 0x74, 0x77, 0x44, 0x32, 0x41, 0x44, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x32, 0x0a, 0x09, 0x41, 0x44, 0x7a, 0x2f, 0x6d, 0x67, 0x44, 0x32, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x44, 0x32, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x32, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x44, 0x32, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x44, 0x32, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x44, 0x32, 0x41, 0x4c, 0x54, 0x2f, 0x30, 0x77, 0x44, 0x32, 0x41, 0x4c, 0x58, 0x2f, 0x30, 0x77, 0x44, 0x32, 0x41, 0x4c, 0x76, 0x2f, 0x6d, 0x67, 0x44, 0x32, 0x0a, 0x09, 0x41, 0x4d, 0x58, 0x2f, 0x79, 0x51, 0x44, 0x32, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x44, 0x32, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x32, 0x41, 0x4f, 0x72, 0x2f, 0x6d, 0x67, 0x44, 0x35, 0x41, 0x43, 0x51, 0x41, 0x4a, 0x67, 0x44, 0x35, 0x41, 0x43, 0x59, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x43, 0x6f, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x44, 0x49, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x44, 0x51, 0x41, 0x41, 0x41, 0x44, 0x35, 0x0a, 0x09, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x47, 0x49, 0x41, 0x4a, 0x67, 0x44, 0x35, 0x41, 0x47, 0x51, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x47, 0x63, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x4b, 0x30, 0x41, 0x4a, 0x67, 0x44, 0x35, 0x41, 0x4b, 0x34, 0x41, 0x4a, 0x67, 0x44, 0x35, 0x41, 0x4b, 0x38, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x4d, 0x63, 0x41, 0x4a, 0x67, 0x44, 0x35, 0x41, 0x4d, 0x6b, 0x41, 0x4a, 0x67, 0x44, 0x35, 0x0a, 0x09, 0x41, 0x4e, 0x41, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x4e, 0x45, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x4e, 0x49, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x50, 0x59, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x50, 0x73, 0x41, 0x41, 0x41, 0x44, 0x35, 0x41, 0x50, 0x30, 0x41, 0x41, 0x41, 0x44, 0x37, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x44, 0x37, 0x0a, 0x09, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x44, 0x37, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x44, 0x37, 0x41, 0x44, 0x7a, 0x2f, 0x33, 0x41, 0x44, 0x37, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x44, 0x37, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x37, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x44, 0x37, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x44, 0x37, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x44, 0x37, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x44, 0x37, 0x0a, 0x09, 0x41, 0x4c, 0x55, 0x41, 0x4a, 0x67, 0x44, 0x37, 0x41, 0x4c, 0x76, 0x2f, 0x33, 0x41, 0x44, 0x37, 0x41, 0x4d, 0x55, 0x41, 0x41, 0x41, 0x44, 0x37, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x44, 0x37, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x37, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x44, 0x37, 0x41, 0x4f, 0x72, 0x2f, 0x33, 0x41, 0x44, 0x37, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x39, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x44, 0x39, 0x0a, 0x09, 0x41, 0x43, 0x51, 0x41, 0x41, 0x41, 0x44, 0x39, 0x41, 0x44, 0x59, 0x41, 0x41, 0x41, 0x44, 0x39, 0x41, 0x44, 0x7a, 0x2f, 0x33, 0x41, 0x44, 0x39, 0x41, 0x47, 0x49, 0x41, 0x41, 0x41, 0x44, 0x39, 0x41, 0x4b, 0x6e, 0x2f, 0x33, 0x41, 0x44, 0x39, 0x41, 0x4b, 0x72, 0x2f, 0x33, 0x41, 0x44, 0x39, 0x41, 0x4b, 0x30, 0x41, 0x41, 0x41, 0x44, 0x39, 0x41, 0x4b, 0x34, 0x41, 0x41, 0x41, 0x44, 0x39, 0x41, 0x4c, 0x51, 0x41, 0x41, 0x41, 0x44, 0x39, 0x0a, 0x09, 0x41, 0x4c, 0x55, 0x41, 0x4a, 0x67, 0x44, 0x39, 0x41, 0x4c, 0x76, 0x2f, 0x33, 0x41, 0x44, 0x39, 0x41, 0x4d, 0x55, 0x41, 0x41, 0x41, 0x44, 0x39, 0x41, 0x4d, 0x63, 0x41, 0x41, 0x41, 0x44, 0x39, 0x41, 0x4d, 0x6b, 0x41, 0x41, 0x41, 0x44, 0x39, 0x41, 0x4f, 0x4d, 0x41, 0x41, 0x41, 0x44, 0x39, 0x41, 0x4f, 0x72, 0x2f, 0x33, 0x41, 0x44, 0x39, 0x41, 0x50, 0x6b, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x45, 0x41, 0x41, 0x41, 0x45, 0x4d, 0x0a, 0x09, 0x41, 0x45, 0x30, 0x41, 0x42, 0x77, 0x42, 0x43, 0x41, 0x41, 0x51, 0x41, 0x41, 0x67, 0x41, 0x51, 0x41, 0x45, 0x41, 0x41, 0x42, 0x77, 0x41, 0x41, 0x42, 0x42, 0x55, 0x46, 0x61, 0x41, 0x41, 0x44, 0x41, 0x41, 0x45, 0x41, 0x41, 0x51, 0x41, 0x41, 0x42, 0x32, 0x33, 0x2b, 0x48, 0x51, 0x41, 0x41, 0x43, 0x72, 0x7a, 0x2b, 0x69, 0x66, 0x36, 0x4a, 0x43, 0x6b, 0x77, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x51, 0x77, 0x41, 0x41, 0x51, 0x51, 0x4f, 0x41, 0x5a, 0x41, 0x41, 0x42, 0x51, 0x41, 0x45, 0x42, 0x55, 0x63, 0x45, 0x7a, 0x41, 0x41, 0x41, 0x2f, 0x6b, 0x49, 0x46, 0x52, 0x77, 0x54, 0x4d, 0x41, 0x41, 0x41, 0x43, 0x55, 0x77, 0x43, 0x50, 0x41, 0x6d, 0x59, 0x49, 0x41, 0x67, 0x49, 0x4c, 0x42, 0x67, 0x4d, 0x44, 0x43, 0x41, 0x51, 0x43, 0x41, 0x67, 0x53, 0x41, 0x41, 0x41, 0x43, 0x76, 0x0a, 0x09, 0x45, 0x41, 0x41, 0x67, 0x53, 0x67, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x51, 0x6d, 0x6c, 0x30, 0x63, 0x77, 0x42, 0x41, 0x41, 0x43, 0x44, 0x37, 0x41, 0x67, 0x59, 0x55, 0x2f, 0x68, 0x51, 0x42, 0x6d, 0x67, 0x64, 0x74, 0x41, 0x65, 0x4d, 0x41, 0x41, 0x41, 0x41, 0x42, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x45, 0x41, 0x41, 0x45, 0x49, 0x41, 0x48, 0x62, 0x45, 0x43, 0x69, 0x77, 0x52, 0x67, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x6a, 0x59, 0x77, 0x58, 0x56, 0x41, 0x41, 0x42, 0x57, 0x5a, 0x58, 0x4a, 0x68, 0x55, 0x32, 0x46, 0x75, 0x63, 0x77, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x7a, 0x62, 0x2f, 0x2f, 0x2f, 0x34, 0x32, 0x4d, 0x6a, 0x68, 0x53, 0x4d, 0x44, 0x41, 0x41, 0x41, 0x45, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x55, 0x41, 0x41, 0x41, 0x42, 0x45, 0x41, 0x6b, 0x4d, 0x0a, 0x09, 0x42, 0x51, 0x41, 0x44, 0x41, 0x77, 0x4d, 0x45, 0x43, 0x41, 0x59, 0x4a, 0x43, 0x41, 0x49, 0x45, 0x42, 0x41, 0x55, 0x49, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x44, 0x41, 0x77, 0x67, 0x49, 0x43, 0x41, 0x55, 0x4b, 0x42, 0x67, 0x63, 0x48, 0x42, 0x77, 0x59, 0x47, 0x42, 0x77, 0x63, 0x44, 0x41, 0x77, 0x59, 0x46, 0x43, 0x41, 0x63, 0x48, 0x42, 0x67, 0x63, 0x47, 0x0a, 0x09, 0x42, 0x77, 0x55, 0x48, 0x42, 0x67, 0x63, 0x47, 0x42, 0x51, 0x55, 0x45, 0x41, 0x77, 0x51, 0x49, 0x42, 0x51, 0x55, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x4d, 0x47, 0x42, 0x67, 0x4d, 0x44, 0x42, 0x51, 0x4d, 0x4a, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x51, 0x46, 0x42, 0x41, 0x59, 0x46, 0x42, 0x77, 0x55, 0x46, 0x42, 0x67, 0x55, 0x44, 0x42, 0x51, 0x67, 0x47, 0x42, 0x67, 0x63, 0x47, 0x42, 0x77, 0x63, 0x48, 0x42, 0x67, 0x59, 0x47, 0x0a, 0x09, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x55, 0x46, 0x42, 0x67, 0x59, 0x46, 0x42, 0x51, 0x59, 0x47, 0x43, 0x51, 0x6b, 0x4a, 0x42, 0x51, 0x55, 0x49, 0x43, 0x51, 0x63, 0x49, 0x43, 0x41, 0x67, 0x49, 0x42, 0x67, 0x59, 0x46, 0x42, 0x67, 0x63, 0x46, 0x42, 0x51, 0x51, 0x45, 0x42, 0x77, 0x6b, 0x47, 0x0a, 0x09, 0x42, 0x51, 0x4d, 0x49, 0x42, 0x67, 0x59, 0x49, 0x42, 0x67, 0x59, 0x47, 0x43, 0x51, 0x59, 0x47, 0x42, 0x67, 0x63, 0x4b, 0x43, 0x51, 0x55, 0x4a, 0x42, 0x51, 0x55, 0x44, 0x41, 0x77, 0x67, 0x45, 0x42, 0x51, 0x55, 0x43, 0x42, 0x67, 0x51, 0x45, 0x42, 0x67, 0x59, 0x46, 0x41, 0x77, 0x4d, 0x46, 0x44, 0x41, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x4d, 0x46, 0x0a, 0x09, 0x42, 0x51, 0x55, 0x46, 0x42, 0x51, 0x55, 0x46, 0x42, 0x51, 0x55, 0x46, 0x42, 0x51, 0x4d, 0x48, 0x42, 0x51, 0x55, 0x47, 0x41, 0x77, 0x63, 0x47, 0x42, 0x51, 0x55, 0x47, 0x42, 0x67, 0x67, 0x49, 0x42, 0x41, 0x51, 0x45, 0x43, 0x51, 0x6b, 0x4a, 0x42, 0x77, 0x59, 0x44, 0x42, 0x77, 0x55, 0x48, 0x42, 0x67, 0x63, 0x47, 0x42, 0x67, 0x4d, 0x44, 0x42, 0x67, 0x55, 0x46, 0x42, 0x51, 0x55, 0x46, 0x42, 0x51, 0x51, 0x46, 0x42, 0x51, 0x41, 0x41, 0x0a, 0x09, 0x43, 0x67, 0x30, 0x47, 0x41, 0x41, 0x4d, 0x44, 0x42, 0x41, 0x55, 0x49, 0x42, 0x67, 0x6f, 0x4a, 0x41, 0x77, 0x51, 0x45, 0x42, 0x51, 0x67, 0x44, 0x42, 0x41, 0x4d, 0x44, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x4d, 0x44, 0x43, 0x41, 0x67, 0x49, 0x42, 0x51, 0x73, 0x48, 0x42, 0x77, 0x67, 0x49, 0x42, 0x77, 0x59, 0x49, 0x43, 0x41, 0x4d, 0x44, 0x42, 0x77, 0x59, 0x4a, 0x43, 0x41, 0x67, 0x48, 0x0a, 0x09, 0x43, 0x41, 0x63, 0x48, 0x42, 0x51, 0x67, 0x48, 0x43, 0x51, 0x59, 0x48, 0x42, 0x67, 0x51, 0x44, 0x42, 0x41, 0x67, 0x46, 0x42, 0x51, 0x59, 0x47, 0x42, 0x51, 0x59, 0x47, 0x42, 0x41, 0x59, 0x47, 0x41, 0x67, 0x49, 0x46, 0x41, 0x67, 0x6f, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x41, 0x55, 0x45, 0x42, 0x67, 0x59, 0x49, 0x42, 0x67, 0x59, 0x46, 0x42, 0x67, 0x4d, 0x47, 0x43, 0x41, 0x63, 0x48, 0x43, 0x41, 0x63, 0x49, 0x43, 0x41, 0x67, 0x47, 0x0a, 0x09, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x46, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x51, 0x55, 0x47, 0x42, 0x67, 0x55, 0x47, 0x42, 0x67, 0x59, 0x4b, 0x43, 0x67, 0x6f, 0x46, 0x42, 0x51, 0x67, 0x4b, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x47, 0x42, 0x77, 0x55, 0x48, 0x43, 0x41, 0x59, 0x46, 0x42, 0x51, 0x55, 0x49, 0x0a, 0x09, 0x43, 0x67, 0x59, 0x46, 0x42, 0x41, 0x67, 0x47, 0x42, 0x67, 0x67, 0x48, 0x42, 0x67, 0x59, 0x4b, 0x42, 0x67, 0x63, 0x48, 0x43, 0x41, 0x73, 0x4b, 0x42, 0x51, 0x6f, 0x46, 0x42, 0x51, 0x4d, 0x44, 0x43, 0x41, 0x55, 0x47, 0x42, 0x77, 0x49, 0x47, 0x42, 0x41, 0x51, 0x47, 0x42, 0x67, 0x55, 0x44, 0x41, 0x77, 0x55, 0x4e, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x0a, 0x09, 0x41, 0x67, 0x55, 0x46, 0x42, 0x51, 0x55, 0x46, 0x42, 0x51, 0x55, 0x46, 0x42, 0x51, 0x55, 0x47, 0x41, 0x67, 0x63, 0x46, 0x42, 0x67, 0x55, 0x44, 0x43, 0x41, 0x59, 0x48, 0x42, 0x67, 0x63, 0x47, 0x43, 0x41, 0x67, 0x45, 0x42, 0x41, 0x51, 0x4b, 0x43, 0x67, 0x6f, 0x49, 0x42, 0x67, 0x4d, 0x48, 0x42, 0x51, 0x67, 0x46, 0x43, 0x41, 0x55, 0x47, 0x42, 0x41, 0x4d, 0x47, 0x42, 0x51, 0x55, 0x46, 0x42, 0x51, 0x55, 0x46, 0x42, 0x41, 0x55, 0x46, 0x0a, 0x09, 0x41, 0x41, 0x41, 0x4c, 0x44, 0x77, 0x63, 0x41, 0x41, 0x77, 0x4d, 0x44, 0x42, 0x51, 0x6b, 0x48, 0x43, 0x67, 0x6f, 0x44, 0x42, 0x41, 0x51, 0x47, 0x43, 0x51, 0x51, 0x45, 0x42, 0x41, 0x51, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x41, 0x51, 0x4a, 0x43, 0x51, 0x6b, 0x47, 0x44, 0x41, 0x63, 0x49, 0x43, 0x41, 0x67, 0x48, 0x42, 0x67, 0x6b, 0x49, 0x41, 0x77, 0x4d, 0x48, 0x42, 0x67, 0x6b, 0x49, 0x0a, 0x09, 0x43, 0x51, 0x63, 0x4a, 0x42, 0x77, 0x67, 0x48, 0x43, 0x41, 0x63, 0x4a, 0x42, 0x77, 0x63, 0x4a, 0x42, 0x41, 0x51, 0x45, 0x43, 0x51, 0x59, 0x47, 0x42, 0x77, 0x63, 0x47, 0x42, 0x77, 0x63, 0x45, 0x42, 0x77, 0x63, 0x44, 0x41, 0x77, 0x59, 0x44, 0x43, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x46, 0x42, 0x77, 0x51, 0x48, 0x42, 0x67, 0x6b, 0x47, 0x42, 0x67, 0x55, 0x48, 0x42, 0x41, 0x63, 0x4a, 0x42, 0x77, 0x63, 0x49, 0x42, 0x77, 0x67, 0x4a, 0x0a, 0x09, 0x43, 0x41, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x59, 0x48, 0x42, 0x77, 0x63, 0x48, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x47, 0x42, 0x67, 0x63, 0x48, 0x42, 0x67, 0x59, 0x48, 0x42, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x59, 0x47, 0x43, 0x51, 0x73, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x63, 0x48, 0x42, 0x67, 0x63, 0x49, 0x42, 0x67, 0x59, 0x46, 0x0a, 0x09, 0x42, 0x51, 0x67, 0x4c, 0x42, 0x77, 0x59, 0x44, 0x43, 0x51, 0x63, 0x48, 0x43, 0x51, 0x63, 0x48, 0x42, 0x77, 0x73, 0x48, 0x42, 0x77, 0x63, 0x4a, 0x44, 0x41, 0x73, 0x47, 0x43, 0x77, 0x59, 0x47, 0x42, 0x41, 0x51, 0x4a, 0x42, 0x51, 0x59, 0x48, 0x41, 0x67, 0x63, 0x45, 0x42, 0x41, 0x63, 0x48, 0x42, 0x67, 0x51, 0x45, 0x42, 0x67, 0x38, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x4a, 0x43, 0x51, 0x6b, 0x49, 0x0a, 0x09, 0x43, 0x41, 0x67, 0x44, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x44, 0x43, 0x41, 0x63, 0x4a, 0x42, 0x51, 0x51, 0x49, 0x42, 0x77, 0x63, 0x47, 0x42, 0x77, 0x63, 0x4a, 0x43, 0x51, 0x51, 0x45, 0x42, 0x41, 0x73, 0x4c, 0x43, 0x77, 0x6b, 0x48, 0x41, 0x77, 0x67, 0x48, 0x43, 0x41, 0x59, 0x49, 0x42, 0x67, 0x63, 0x45, 0x42, 0x41, 0x63, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x45, 0x0a, 0x09, 0x42, 0x67, 0x59, 0x41, 0x41, 0x41, 0x77, 0x51, 0x42, 0x77, 0x41, 0x45, 0x42, 0x41, 0x55, 0x46, 0x43, 0x67, 0x67, 0x4c, 0x43, 0x67, 0x4d, 0x46, 0x42, 0x51, 0x59, 0x4b, 0x42, 0x41, 0x51, 0x45, 0x42, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x45, 0x42, 0x41, 0x6f, 0x4b, 0x43, 0x67, 0x59, 0x4e, 0x43, 0x41, 0x67, 0x49, 0x43, 0x51, 0x67, 0x48, 0x43, 0x51, 0x6b, 0x44, 0x41, 0x77, 0x63, 0x47, 0x0a, 0x09, 0x43, 0x67, 0x6b, 0x4a, 0x43, 0x41, 0x6b, 0x49, 0x43, 0x41, 0x63, 0x4a, 0x43, 0x41, 0x73, 0x4a, 0x42, 0x77, 0x6b, 0x46, 0x42, 0x41, 0x55, 0x4b, 0x42, 0x67, 0x59, 0x49, 0x43, 0x41, 0x63, 0x49, 0x43, 0x41, 0x51, 0x49, 0x43, 0x41, 0x4d, 0x44, 0x42, 0x77, 0x4d, 0x4c, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x55, 0x48, 0x42, 0x51, 0x67, 0x47, 0x43, 0x51, 0x59, 0x47, 0x42, 0x51, 0x67, 0x45, 0x43, 0x41, 0x6f, 0x49, 0x43, 0x41, 0x67, 0x49, 0x0a, 0x09, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x42, 0x77, 0x67, 0x49, 0x43, 0x41, 0x67, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x59, 0x47, 0x43, 0x41, 0x67, 0x47, 0x42, 0x77, 0x67, 0x49, 0x44, 0x41, 0x77, 0x4d, 0x42, 0x67, 0x59, 0x4b, 0x44, 0x41, 0x6b, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x41, 0x67, 0x47, 0x43, 0x41, 0x6b, 0x48, 0x0a, 0x09, 0x42, 0x67, 0x59, 0x47, 0x43, 0x51, 0x77, 0x49, 0x42, 0x67, 0x55, 0x4b, 0x43, 0x41, 0x67, 0x4b, 0x43, 0x41, 0x63, 0x48, 0x44, 0x41, 0x67, 0x49, 0x43, 0x41, 0x6b, 0x4e, 0x44, 0x51, 0x59, 0x4d, 0x42, 0x67, 0x59, 0x45, 0x42, 0x41, 0x6f, 0x47, 0x42, 0x67, 0x63, 0x43, 0x43, 0x41, 0x55, 0x46, 0x42, 0x77, 0x63, 0x47, 0x42, 0x41, 0x51, 0x47, 0x45, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x6b, 0x4a, 0x0a, 0x09, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x4d, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x4d, 0x49, 0x42, 0x77, 0x6b, 0x46, 0x42, 0x41, 0x6b, 0x49, 0x42, 0x77, 0x59, 0x49, 0x43, 0x41, 0x6f, 0x4b, 0x42, 0x51, 0x55, 0x46, 0x44, 0x41, 0x77, 0x4d, 0x43, 0x51, 0x67, 0x44, 0x43, 0x41, 0x63, 0x49, 0x42, 0x77, 0x67, 0x48, 0x43, 0x41, 0x51, 0x45, 0x43, 0x41, 0x59, 0x47, 0x42, 0x67, 0x59, 0x47, 0x0a, 0x09, 0x42, 0x67, 0x55, 0x47, 0x42, 0x67, 0x41, 0x41, 0x44, 0x52, 0x45, 0x49, 0x41, 0x41, 0x51, 0x45, 0x42, 0x51, 0x55, 0x4c, 0x43, 0x41, 0x77, 0x4c, 0x41, 0x77, 0x55, 0x46, 0x42, 0x77, 0x73, 0x45, 0x42, 0x51, 0x51, 0x45, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x51, 0x45, 0x43, 0x77, 0x73, 0x4c, 0x42, 0x77, 0x30, 0x4a, 0x43, 0x51, 0x6b, 0x4b, 0x43, 0x41, 0x63, 0x4b, 0x43, 0x67, 0x4d, 0x44, 0x0a, 0x09, 0x43, 0x41, 0x63, 0x4c, 0x43, 0x67, 0x6f, 0x49, 0x43, 0x67, 0x67, 0x4a, 0x42, 0x77, 0x6f, 0x4a, 0x43, 0x77, 0x6f, 0x48, 0x43, 0x67, 0x55, 0x45, 0x42, 0x51, 0x73, 0x48, 0x42, 0x77, 0x67, 0x49, 0x42, 0x77, 0x67, 0x49, 0x42, 0x41, 0x67, 0x49, 0x41, 0x77, 0x4d, 0x48, 0x41, 0x77, 0x30, 0x49, 0x43, 0x41, 0x67, 0x49, 0x42, 0x51, 0x63, 0x46, 0x43, 0x41, 0x63, 0x4a, 0x42, 0x77, 0x63, 0x48, 0x43, 0x41, 0x51, 0x49, 0x43, 0x77, 0x6b, 0x4a, 0x0a, 0x09, 0x43, 0x51, 0x67, 0x4b, 0x43, 0x67, 0x6f, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x48, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x42, 0x77, 0x63, 0x49, 0x43, 0x41, 0x63, 0x49, 0x43, 0x41, 0x67, 0x4e, 0x44, 0x51, 0x30, 0x48, 0x42, 0x77, 0x73, 0x4e, 0x43, 0x67, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x49, 0x43, 0x41, 0x63, 0x4a, 0x0a, 0x09, 0x43, 0x67, 0x67, 0x48, 0x42, 0x67, 0x59, 0x4b, 0x44, 0x51, 0x67, 0x48, 0x42, 0x51, 0x73, 0x49, 0x43, 0x41, 0x73, 0x4a, 0x43, 0x41, 0x67, 0x4e, 0x43, 0x41, 0x6b, 0x4a, 0x43, 0x67, 0x34, 0x4e, 0x42, 0x77, 0x30, 0x48, 0x42, 0x77, 0x51, 0x45, 0x43, 0x77, 0x59, 0x48, 0x42, 0x77, 0x49, 0x49, 0x42, 0x51, 0x55, 0x49, 0x43, 0x41, 0x63, 0x45, 0x42, 0x41, 0x63, 0x52, 0x43, 0x51, 0x67, 0x4a, 0x43, 0x41, 0x67, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x0a, 0x09, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x41, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x41, 0x77, 0x6b, 0x48, 0x43, 0x67, 0x63, 0x45, 0x43, 0x67, 0x67, 0x48, 0x42, 0x77, 0x67, 0x49, 0x43, 0x77, 0x73, 0x46, 0x42, 0x51, 0x55, 0x4e, 0x44, 0x51, 0x30, 0x4b, 0x43, 0x41, 0x4d, 0x4a, 0x42, 0x77, 0x6b, 0x48, 0x43, 0x51, 0x63, 0x49, 0x42, 0x51, 0x51, 0x49, 0x42, 0x77, 0x63, 0x48, 0x0a, 0x09, 0x42, 0x77, 0x63, 0x48, 0x42, 0x51, 0x63, 0x48, 0x41, 0x41, 0x41, 0x4f, 0x45, 0x77, 0x67, 0x41, 0x42, 0x41, 0x51, 0x46, 0x42, 0x51, 0x77, 0x4a, 0x44, 0x51, 0x77, 0x44, 0x42, 0x51, 0x55, 0x48, 0x44, 0x41, 0x51, 0x46, 0x42, 0x41, 0x55, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x42, 0x51, 0x55, 0x4d, 0x44, 0x41, 0x77, 0x48, 0x44, 0x67, 0x6b, 0x4b, 0x43, 0x67, 0x73, 0x4a, 0x43, 0x41, 0x73, 0x4b, 0x0a, 0x09, 0x41, 0x77, 0x4d, 0x4a, 0x42, 0x77, 0x77, 0x4b, 0x43, 0x77, 0x6b, 0x4c, 0x43, 0x67, 0x6b, 0x4a, 0x43, 0x67, 0x6b, 0x4e, 0x43, 0x77, 0x6b, 0x4b, 0x42, 0x51, 0x55, 0x46, 0x44, 0x41, 0x63, 0x48, 0x43, 0x41, 0x6b, 0x49, 0x43, 0x51, 0x6b, 0x45, 0x43, 0x51, 0x6b, 0x44, 0x41, 0x77, 0x67, 0x44, 0x44, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x46, 0x43, 0x41, 0x55, 0x4a, 0x42, 0x77, 0x73, 0x48, 0x42, 0x77, 0x67, 0x4a, 0x42, 0x51, 0x6b, 0x4d, 0x0a, 0x09, 0x43, 0x51, 0x6b, 0x4b, 0x43, 0x51, 0x6f, 0x4c, 0x43, 0x67, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x48, 0x42, 0x77, 0x6b, 0x4a, 0x42, 0x77, 0x67, 0x4a, 0x43, 0x51, 0x34, 0x4f, 0x44, 0x67, 0x63, 0x48, 0x44, 0x41, 0x34, 0x4c, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x6b, 0x4a, 0x0a, 0x09, 0x42, 0x77, 0x6b, 0x4c, 0x43, 0x41, 0x63, 0x48, 0x42, 0x77, 0x73, 0x4f, 0x43, 0x51, 0x63, 0x46, 0x44, 0x41, 0x6b, 0x4a, 0x44, 0x41, 0x6b, 0x4a, 0x43, 0x51, 0x34, 0x4a, 0x43, 0x51, 0x6b, 0x4c, 0x44, 0x77, 0x38, 0x48, 0x44, 0x67, 0x63, 0x48, 0x42, 0x41, 0x51, 0x4d, 0x42, 0x77, 0x63, 0x4a, 0x41, 0x67, 0x6b, 0x47, 0x42, 0x67, 0x67, 0x49, 0x42, 0x77, 0x51, 0x45, 0x42, 0x78, 0x4d, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x4d, 0x44, 0x0a, 0x09, 0x41, 0x77, 0x4d, 0x4c, 0x43, 0x77, 0x73, 0x4b, 0x43, 0x67, 0x6f, 0x44, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x44, 0x43, 0x51, 0x67, 0x4b, 0x43, 0x41, 0x55, 0x4c, 0x43, 0x51, 0x6b, 0x48, 0x43, 0x51, 0x6b, 0x4d, 0x44, 0x41, 0x59, 0x47, 0x42, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x73, 0x4a, 0x41, 0x77, 0x6b, 0x49, 0x43, 0x67, 0x67, 0x4b, 0x43, 0x41, 0x6b, 0x46, 0x42, 0x41, 0x6b, 0x48, 0x0a, 0x09, 0x42, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x47, 0x42, 0x77, 0x63, 0x41, 0x41, 0x41, 0x38, 0x55, 0x43, 0x51, 0x41, 0x46, 0x42, 0x51, 0x59, 0x47, 0x44, 0x51, 0x6f, 0x4f, 0x43, 0x77, 0x4d, 0x47, 0x42, 0x67, 0x67, 0x4e, 0x42, 0x51, 0x55, 0x46, 0x42, 0x51, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x46, 0x42, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x67, 0x50, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x77, 0x6b, 0x4a, 0x0a, 0x09, 0x44, 0x41, 0x73, 0x44, 0x41, 0x77, 0x6f, 0x49, 0x44, 0x51, 0x73, 0x4d, 0x43, 0x51, 0x77, 0x4b, 0x43, 0x67, 0x6b, 0x4c, 0x43, 0x67, 0x38, 0x4b, 0x43, 0x51, 0x73, 0x47, 0x42, 0x51, 0x59, 0x4e, 0x43, 0x41, 0x67, 0x4a, 0x43, 0x51, 0x67, 0x4a, 0x43, 0x51, 0x55, 0x4a, 0x43, 0x51, 0x4d, 0x44, 0x43, 0x41, 0x4d, 0x50, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x59, 0x49, 0x42, 0x67, 0x6b, 0x49, 0x44, 0x51, 0x6f, 0x49, 0x43, 0x41, 0x6f, 0x46, 0x0a, 0x09, 0x43, 0x67, 0x30, 0x4b, 0x43, 0x67, 0x6f, 0x4a, 0x43, 0x77, 0x77, 0x4c, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x41, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x67, 0x49, 0x43, 0x67, 0x6f, 0x49, 0x43, 0x51, 0x6f, 0x4a, 0x44, 0x77, 0x38, 0x50, 0x43, 0x41, 0x67, 0x4e, 0x44, 0x77, 0x77, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x0a, 0x09, 0x43, 0x67, 0x6b, 0x49, 0x43, 0x67, 0x73, 0x4a, 0x43, 0x41, 0x63, 0x48, 0x43, 0x77, 0x38, 0x4a, 0x43, 0x41, 0x59, 0x4e, 0x43, 0x67, 0x6f, 0x4e, 0x43, 0x67, 0x6b, 0x4a, 0x44, 0x77, 0x6f, 0x4b, 0x43, 0x67, 0x77, 0x51, 0x44, 0x77, 0x67, 0x50, 0x43, 0x41, 0x67, 0x46, 0x42, 0x51, 0x30, 0x48, 0x43, 0x41, 0x6b, 0x44, 0x43, 0x67, 0x59, 0x47, 0x43, 0x51, 0x6b, 0x49, 0x42, 0x51, 0x55, 0x49, 0x46, 0x41, 0x6f, 0x4a, 0x43, 0x67, 0x6b, 0x4a, 0x0a, 0x09, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x77, 0x4d, 0x44, 0x41, 0x73, 0x4c, 0x43, 0x77, 0x4d, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x4d, 0x4b, 0x43, 0x41, 0x73, 0x49, 0x42, 0x51, 0x77, 0x4a, 0x43, 0x51, 0x67, 0x4a, 0x43, 0x51, 0x30, 0x4e, 0x42, 0x67, 0x59, 0x47, 0x44, 0x77, 0x38, 0x50, 0x44, 0x41, 0x6b, 0x44, 0x43, 0x67, 0x67, 0x4b, 0x43, 0x41, 0x6f, 0x49, 0x43, 0x51, 0x55, 0x46, 0x0a, 0x09, 0x43, 0x67, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x59, 0x49, 0x43, 0x41, 0x41, 0x41, 0x45, 0x42, 0x55, 0x4b, 0x41, 0x41, 0x55, 0x46, 0x42, 0x67, 0x59, 0x4e, 0x43, 0x67, 0x38, 0x4d, 0x41, 0x77, 0x59, 0x47, 0x43, 0x41, 0x30, 0x46, 0x42, 0x67, 0x55, 0x46, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x55, 0x46, 0x44, 0x51, 0x30, 0x4e, 0x43, 0x52, 0x41, 0x4c, 0x43, 0x77, 0x73, 0x4d, 0x0a, 0x09, 0x43, 0x67, 0x6b, 0x4d, 0x44, 0x41, 0x55, 0x46, 0x43, 0x67, 0x6b, 0x4e, 0x44, 0x41, 0x30, 0x4b, 0x44, 0x51, 0x73, 0x4b, 0x43, 0x51, 0x77, 0x4c, 0x45, 0x51, 0x73, 0x4a, 0x44, 0x41, 0x59, 0x46, 0x42, 0x67, 0x30, 0x49, 0x43, 0x41, 0x6b, 0x4b, 0x43, 0x51, 0x6f, 0x4a, 0x42, 0x67, 0x6f, 0x4b, 0x41, 0x77, 0x4d, 0x4a, 0x41, 0x77, 0x38, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x42, 0x77, 0x6b, 0x47, 0x43, 0x67, 0x6b, 0x4e, 0x43, 0x67, 0x6b, 0x4a, 0x0a, 0x09, 0x43, 0x67, 0x55, 0x4b, 0x44, 0x51, 0x73, 0x4c, 0x43, 0x77, 0x6f, 0x4d, 0x44, 0x51, 0x77, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x41, 0x67, 0x4b, 0x43, 0x67, 0x67, 0x4a, 0x43, 0x67, 0x6f, 0x51, 0x45, 0x42, 0x41, 0x49, 0x43, 0x41, 0x30, 0x51, 0x44, 0x51, 0x30, 0x4e, 0x0a, 0x09, 0x44, 0x51, 0x30, 0x4b, 0x43, 0x67, 0x67, 0x4c, 0x44, 0x41, 0x6b, 0x49, 0x43, 0x41, 0x67, 0x4d, 0x45, 0x41, 0x6f, 0x4a, 0x42, 0x67, 0x30, 0x4b, 0x43, 0x67, 0x30, 0x4c, 0x43, 0x67, 0x6f, 0x51, 0x43, 0x67, 0x73, 0x4c, 0x44, 0x52, 0x45, 0x50, 0x43, 0x42, 0x41, 0x49, 0x43, 0x41, 0x55, 0x46, 0x44, 0x51, 0x67, 0x4a, 0x43, 0x51, 0x4d, 0x4b, 0x42, 0x67, 0x59, 0x4b, 0x43, 0x67, 0x67, 0x46, 0x42, 0x51, 0x67, 0x56, 0x43, 0x77, 0x6f, 0x4c, 0x0a, 0x09, 0x43, 0x67, 0x6f, 0x46, 0x42, 0x51, 0x55, 0x46, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x41, 0x77, 0x4d, 0x41, 0x77, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x4a, 0x42, 0x41, 0x6f, 0x4a, 0x44, 0x41, 0x6b, 0x46, 0x44, 0x51, 0x6f, 0x4a, 0x43, 0x51, 0x6f, 0x4b, 0x44, 0x51, 0x30, 0x47, 0x42, 0x67, 0x59, 0x51, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x67, 0x55, 0x4b, 0x43, 0x51, 0x73, 0x4a, 0x43, 0x77, 0x6b, 0x4b, 0x0a, 0x09, 0x42, 0x67, 0x55, 0x4b, 0x43, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x49, 0x42, 0x67, 0x67, 0x49, 0x41, 0x41, 0x41, 0x52, 0x46, 0x77, 0x6f, 0x41, 0x42, 0x51, 0x55, 0x48, 0x43, 0x41, 0x34, 0x4c, 0x45, 0x41, 0x30, 0x46, 0x42, 0x77, 0x63, 0x4a, 0x44, 0x67, 0x55, 0x47, 0x42, 0x51, 0x59, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x42, 0x67, 0x59, 0x4f, 0x44, 0x67, 0x34, 0x4a, 0x45, 0x51, 0x73, 0x4d, 0x0a, 0x09, 0x44, 0x41, 0x30, 0x4c, 0x43, 0x67, 0x30, 0x4e, 0x42, 0x67, 0x59, 0x4d, 0x43, 0x51, 0x38, 0x4e, 0x44, 0x51, 0x6f, 0x4e, 0x44, 0x41, 0x73, 0x4b, 0x44, 0x51, 0x73, 0x53, 0x44, 0x51, 0x6f, 0x4d, 0x42, 0x77, 0x59, 0x48, 0x44, 0x67, 0x6b, 0x4a, 0x43, 0x67, 0x6f, 0x49, 0x43, 0x67, 0x6f, 0x47, 0x43, 0x67, 0x73, 0x46, 0x42, 0x51, 0x6f, 0x46, 0x45, 0x51, 0x73, 0x4b, 0x43, 0x67, 0x6f, 0x48, 0x43, 0x41, 0x63, 0x4c, 0x43, 0x67, 0x38, 0x4b, 0x0a, 0x09, 0x43, 0x67, 0x67, 0x4c, 0x42, 0x67, 0x73, 0x4f, 0x43, 0x77, 0x73, 0x4d, 0x43, 0x77, 0x30, 0x4e, 0x44, 0x51, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x67, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x42, 0x51, 0x55, 0x46, 0x42, 0x51, 0x73, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4a, 0x43, 0x51, 0x73, 0x4c, 0x43, 0x51, 0x6f, 0x4c, 0x43, 0x78, 0x45, 0x52, 0x45, 0x51, 0x6b, 0x4a, 0x44, 0x68, 0x41, 0x4e, 0x0a, 0x09, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x73, 0x4c, 0x43, 0x51, 0x73, 0x4e, 0x43, 0x67, 0x6b, 0x49, 0x43, 0x41, 0x30, 0x51, 0x43, 0x67, 0x6b, 0x48, 0x44, 0x67, 0x73, 0x4c, 0x44, 0x67, 0x73, 0x4b, 0x43, 0x68, 0x45, 0x4c, 0x43, 0x77, 0x73, 0x4e, 0x45, 0x68, 0x45, 0x4a, 0x45, 0x51, 0x6b, 0x4a, 0x42, 0x51, 0x55, 0x4f, 0x43, 0x41, 0x6f, 0x4b, 0x41, 0x77, 0x73, 0x48, 0x42, 0x77, 0x6f, 0x4b, 0x43, 0x51, 0x55, 0x46, 0x43, 0x52, 0x63, 0x4c, 0x0a, 0x09, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x59, 0x47, 0x42, 0x67, 0x59, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x46, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6f, 0x46, 0x43, 0x77, 0x67, 0x4d, 0x43, 0x41, 0x59, 0x4e, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4f, 0x44, 0x67, 0x63, 0x48, 0x42, 0x78, 0x41, 0x51, 0x45, 0x41, 0x30, 0x4b, 0x42, 0x67, 0x73, 0x49, 0x44, 0x41, 0x67, 0x4d, 0x0a, 0x09, 0x43, 0x41, 0x6f, 0x47, 0x42, 0x51, 0x73, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x48, 0x43, 0x51, 0x6b, 0x41, 0x41, 0x42, 0x49, 0x59, 0x43, 0x77, 0x41, 0x47, 0x42, 0x67, 0x63, 0x49, 0x44, 0x77, 0x73, 0x52, 0x44, 0x51, 0x51, 0x48, 0x42, 0x77, 0x6b, 0x50, 0x42, 0x67, 0x63, 0x47, 0x42, 0x67, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x47, 0x42, 0x67, 0x38, 0x50, 0x44, 0x77, 0x6f, 0x53, 0x0a, 0x09, 0x44, 0x41, 0x77, 0x4e, 0x44, 0x67, 0x73, 0x4b, 0x44, 0x67, 0x34, 0x47, 0x42, 0x67, 0x77, 0x4b, 0x45, 0x41, 0x34, 0x4f, 0x43, 0x77, 0x34, 0x4e, 0x43, 0x77, 0x77, 0x4f, 0x44, 0x42, 0x4d, 0x4e, 0x44, 0x41, 0x30, 0x48, 0x42, 0x67, 0x63, 0x50, 0x43, 0x51, 0x6b, 0x4b, 0x43, 0x77, 0x6b, 0x4c, 0x43, 0x77, 0x59, 0x4c, 0x43, 0x77, 0x55, 0x46, 0x43, 0x67, 0x55, 0x52, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x67, 0x49, 0x42, 0x77, 0x73, 0x4c, 0x0a, 0x09, 0x45, 0x41, 0x73, 0x4c, 0x43, 0x51, 0x73, 0x47, 0x43, 0x77, 0x38, 0x4d, 0x44, 0x41, 0x30, 0x4c, 0x44, 0x67, 0x34, 0x4f, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x51, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x46, 0x42, 0x51, 0x55, 0x46, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x6b, 0x4a, 0x43, 0x77, 0x73, 0x4a, 0x43, 0x77, 0x73, 0x4c, 0x45, 0x68, 0x49, 0x53, 0x43, 0x51, 0x6b, 0x50, 0x0a, 0x09, 0x45, 0x51, 0x34, 0x50, 0x44, 0x77, 0x38, 0x50, 0x43, 0x77, 0x73, 0x4a, 0x44, 0x41, 0x34, 0x4c, 0x43, 0x51, 0x67, 0x49, 0x44, 0x68, 0x45, 0x4c, 0x43, 0x67, 0x63, 0x50, 0x43, 0x77, 0x73, 0x50, 0x44, 0x41, 0x73, 0x4c, 0x45, 0x67, 0x73, 0x4d, 0x44, 0x41, 0x34, 0x54, 0x45, 0x77, 0x6b, 0x53, 0x43, 0x51, 0x6b, 0x47, 0x42, 0x67, 0x38, 0x4a, 0x43, 0x77, 0x77, 0x44, 0x43, 0x77, 0x63, 0x48, 0x43, 0x77, 0x73, 0x4a, 0x42, 0x67, 0x59, 0x4a, 0x0a, 0x09, 0x47, 0x41, 0x77, 0x4c, 0x44, 0x41, 0x73, 0x4c, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x55, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x67, 0x55, 0x4c, 0x43, 0x41, 0x30, 0x4a, 0x42, 0x67, 0x34, 0x4c, 0x44, 0x41, 0x73, 0x4c, 0x43, 0x77, 0x38, 0x50, 0x42, 0x77, 0x63, 0x48, 0x45, 0x52, 0x45, 0x52, 0x44, 0x67, 0x73, 0x47, 0x43, 0x77, 0x67, 0x4e, 0x0a, 0x09, 0x43, 0x51, 0x30, 0x4a, 0x43, 0x77, 0x63, 0x47, 0x43, 0x77, 0x6b, 0x4a, 0x43, 0x51, 0x6b, 0x4a, 0x43, 0x51, 0x63, 0x4a, 0x43, 0x51, 0x41, 0x41, 0x45, 0x78, 0x6f, 0x4c, 0x41, 0x41, 0x59, 0x47, 0x43, 0x41, 0x67, 0x51, 0x44, 0x42, 0x49, 0x4f, 0x42, 0x41, 0x63, 0x48, 0x43, 0x68, 0x41, 0x47, 0x42, 0x77, 0x59, 0x47, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x59, 0x47, 0x45, 0x42, 0x41, 0x51, 0x0a, 0x09, 0x43, 0x68, 0x4d, 0x4e, 0x44, 0x51, 0x30, 0x50, 0x44, 0x41, 0x73, 0x50, 0x44, 0x67, 0x59, 0x47, 0x44, 0x41, 0x73, 0x51, 0x44, 0x67, 0x38, 0x4d, 0x44, 0x77, 0x30, 0x4d, 0x44, 0x41, 0x34, 0x4e, 0x46, 0x41, 0x34, 0x4d, 0x44, 0x51, 0x63, 0x47, 0x42, 0x78, 0x41, 0x4b, 0x43, 0x67, 0x73, 0x4c, 0x43, 0x51, 0x73, 0x4c, 0x42, 0x67, 0x73, 0x4d, 0x42, 0x51, 0x55, 0x4c, 0x42, 0x52, 0x45, 0x4d, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x41, 0x6b, 0x49, 0x0a, 0x09, 0x44, 0x41, 0x73, 0x52, 0x43, 0x77, 0x73, 0x4c, 0x44, 0x41, 0x59, 0x4d, 0x45, 0x41, 0x30, 0x4e, 0x44, 0x51, 0x77, 0x4f, 0x44, 0x77, 0x34, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4a, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x55, 0x46, 0x42, 0x51, 0x55, 0x4d, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x43, 0x67, 0x6f, 0x4d, 0x44, 0x41, 0x6f, 0x4c, 0x44, 0x41, 0x77, 0x54, 0x45, 0x78, 0x4d, 0x4b, 0x0a, 0x09, 0x43, 0x68, 0x41, 0x53, 0x44, 0x78, 0x41, 0x51, 0x45, 0x42, 0x41, 0x4d, 0x44, 0x41, 0x6f, 0x4e, 0x44, 0x67, 0x73, 0x4b, 0x43, 0x51, 0x6b, 0x50, 0x45, 0x67, 0x73, 0x4b, 0x43, 0x42, 0x41, 0x4d, 0x44, 0x42, 0x41, 0x4e, 0x44, 0x41, 0x77, 0x54, 0x44, 0x41, 0x30, 0x4e, 0x44, 0x78, 0x51, 0x54, 0x43, 0x68, 0x4d, 0x4b, 0x43, 0x67, 0x59, 0x47, 0x45, 0x41, 0x6b, 0x4c, 0x44, 0x41, 0x4d, 0x4d, 0x43, 0x41, 0x67, 0x4c, 0x43, 0x77, 0x6f, 0x47, 0x0a, 0x09, 0x42, 0x67, 0x6f, 0x61, 0x44, 0x51, 0x77, 0x4e, 0x44, 0x41, 0x77, 0x47, 0x42, 0x67, 0x59, 0x47, 0x44, 0x77, 0x38, 0x50, 0x44, 0x67, 0x34, 0x4f, 0x42, 0x51, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4c, 0x42, 0x51, 0x77, 0x4a, 0x44, 0x51, 0x73, 0x47, 0x44, 0x77, 0x73, 0x4d, 0x43, 0x77, 0x77, 0x4c, 0x45, 0x42, 0x41, 0x49, 0x43, 0x41, 0x67, 0x53, 0x45, 0x68, 0x49, 0x50, 0x43, 0x77, 0x59, 0x4d, 0x0a, 0x09, 0x43, 0x51, 0x30, 0x4a, 0x44, 0x51, 0x6b, 0x4c, 0x42, 0x77, 0x59, 0x4d, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x41, 0x6f, 0x4b, 0x41, 0x41, 0x41, 0x55, 0x47, 0x77, 0x77, 0x41, 0x42, 0x67, 0x59, 0x49, 0x43, 0x68, 0x45, 0x4e, 0x45, 0x77, 0x38, 0x47, 0x43, 0x41, 0x67, 0x4b, 0x45, 0x51, 0x59, 0x48, 0x42, 0x67, 0x63, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x42, 0x77, 0x63, 0x52, 0x0a, 0x09, 0x45, 0x52, 0x45, 0x4c, 0x46, 0x41, 0x34, 0x4f, 0x44, 0x67, 0x38, 0x4e, 0x44, 0x42, 0x41, 0x50, 0x42, 0x67, 0x59, 0x4e, 0x43, 0x78, 0x45, 0x50, 0x45, 0x41, 0x77, 0x51, 0x44, 0x67, 0x30, 0x4d, 0x44, 0x77, 0x34, 0x55, 0x44, 0x67, 0x77, 0x4f, 0x43, 0x41, 0x63, 0x49, 0x45, 0x51, 0x6f, 0x4b, 0x44, 0x41, 0x30, 0x4c, 0x44, 0x51, 0x77, 0x48, 0x44, 0x51, 0x30, 0x47, 0x42, 0x67, 0x77, 0x47, 0x46, 0x41, 0x30, 0x4d, 0x44, 0x51, 0x30, 0x49, 0x0a, 0x09, 0x43, 0x67, 0x67, 0x4e, 0x43, 0x78, 0x45, 0x4c, 0x43, 0x77, 0x73, 0x4e, 0x42, 0x77, 0x30, 0x52, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x51, 0x38, 0x51, 0x44, 0x77, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x73, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x30, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4b, 0x43, 0x67, 0x30, 0x4e, 0x43, 0x67, 0x77, 0x4e, 0x44, 0x52, 0x51, 0x55, 0x0a, 0x09, 0x46, 0x41, 0x6f, 0x4b, 0x45, 0x52, 0x51, 0x51, 0x45, 0x52, 0x45, 0x52, 0x45, 0x51, 0x30, 0x4e, 0x43, 0x67, 0x30, 0x50, 0x44, 0x41, 0x6f, 0x4a, 0x43, 0x51, 0x38, 0x54, 0x44, 0x41, 0x73, 0x49, 0x45, 0x51, 0x30, 0x4e, 0x45, 0x51, 0x30, 0x4d, 0x44, 0x42, 0x51, 0x4e, 0x44, 0x67, 0x34, 0x51, 0x46, 0x52, 0x51, 0x4b, 0x46, 0x41, 0x6f, 0x4b, 0x42, 0x67, 0x59, 0x52, 0x43, 0x67, 0x73, 0x4d, 0x41, 0x77, 0x30, 0x49, 0x43, 0x41, 0x30, 0x4e, 0x0a, 0x09, 0x43, 0x67, 0x59, 0x47, 0x43, 0x68, 0x73, 0x4f, 0x44, 0x51, 0x34, 0x4e, 0x44, 0x51, 0x59, 0x47, 0x42, 0x67, 0x59, 0x51, 0x45, 0x42, 0x41, 0x50, 0x44, 0x77, 0x38, 0x47, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x73, 0x47, 0x44, 0x51, 0x6f, 0x4f, 0x43, 0x77, 0x63, 0x50, 0x44, 0x41, 0x77, 0x4c, 0x44, 0x41, 0x30, 0x52, 0x45, 0x51, 0x67, 0x49, 0x43, 0x42, 0x4d, 0x54, 0x45, 0x78, 0x41, 0x4e, 0x0a, 0x09, 0x42, 0x67, 0x30, 0x4b, 0x44, 0x67, 0x73, 0x4f, 0x43, 0x77, 0x30, 0x48, 0x42, 0x67, 0x30, 0x4b, 0x43, 0x67, 0x6f, 0x4b, 0x43, 0x67, 0x6f, 0x49, 0x43, 0x67, 0x6f, 0x41, 0x41, 0x42, 0x55, 0x63, 0x44, 0x51, 0x41, 0x48, 0x42, 0x77, 0x67, 0x4b, 0x45, 0x67, 0x30, 0x55, 0x45, 0x41, 0x59, 0x49, 0x43, 0x41, 0x73, 0x53, 0x42, 0x77, 0x67, 0x48, 0x42, 0x77, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x48, 0x0a, 0x09, 0x42, 0x78, 0x49, 0x53, 0x45, 0x67, 0x73, 0x56, 0x44, 0x67, 0x34, 0x50, 0x45, 0x41, 0x30, 0x4d, 0x45, 0x42, 0x41, 0x47, 0x42, 0x67, 0x34, 0x4d, 0x45, 0x68, 0x41, 0x52, 0x44, 0x52, 0x45, 0x50, 0x44, 0x51, 0x30, 0x50, 0x44, 0x68, 0x55, 0x4f, 0x44, 0x51, 0x34, 0x49, 0x42, 0x77, 0x67, 0x53, 0x43, 0x77, 0x73, 0x4e, 0x44, 0x51, 0x77, 0x4e, 0x44, 0x51, 0x63, 0x4e, 0x44, 0x51, 0x59, 0x47, 0x44, 0x41, 0x59, 0x55, 0x44, 0x67, 0x30, 0x4e, 0x0a, 0x09, 0x44, 0x51, 0x6b, 0x4c, 0x43, 0x41, 0x34, 0x4c, 0x45, 0x51, 0x30, 0x4e, 0x43, 0x77, 0x30, 0x48, 0x44, 0x52, 0x49, 0x4f, 0x44, 0x67, 0x38, 0x4e, 0x45, 0x42, 0x45, 0x50, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x41, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x47, 0x42, 0x67, 0x59, 0x47, 0x44, 0x67, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x73, 0x4c, 0x44, 0x51, 0x30, 0x4c, 0x44, 0x41, 0x30, 0x4e, 0x0a, 0x09, 0x46, 0x52, 0x55, 0x56, 0x43, 0x77, 0x73, 0x53, 0x46, 0x42, 0x45, 0x53, 0x45, 0x68, 0x49, 0x53, 0x44, 0x51, 0x34, 0x4c, 0x44, 0x68, 0x41, 0x4d, 0x43, 0x77, 0x6f, 0x4b, 0x45, 0x42, 0x51, 0x4e, 0x43, 0x77, 0x67, 0x53, 0x44, 0x51, 0x30, 0x53, 0x44, 0x67, 0x30, 0x4e, 0x46, 0x51, 0x30, 0x4f, 0x44, 0x68, 0x45, 0x57, 0x46, 0x67, 0x73, 0x56, 0x43, 0x77, 0x73, 0x48, 0x42, 0x78, 0x49, 0x4b, 0x44, 0x51, 0x30, 0x45, 0x44, 0x51, 0x67, 0x49, 0x0a, 0x09, 0x44, 0x51, 0x30, 0x4c, 0x42, 0x77, 0x63, 0x4c, 0x48, 0x41, 0x34, 0x4e, 0x44, 0x67, 0x30, 0x4e, 0x42, 0x67, 0x59, 0x47, 0x42, 0x68, 0x45, 0x52, 0x45, 0x51, 0x38, 0x50, 0x44, 0x77, 0x59, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x44, 0x41, 0x59, 0x4e, 0x43, 0x77, 0x34, 0x4c, 0x42, 0x78, 0x41, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x52, 0x49, 0x53, 0x43, 0x41, 0x67, 0x49, 0x46, 0x42, 0x51, 0x55, 0x0a, 0x09, 0x45, 0x41, 0x30, 0x47, 0x44, 0x51, 0x73, 0x50, 0x44, 0x41, 0x38, 0x4d, 0x44, 0x51, 0x67, 0x48, 0x44, 0x51, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x67, 0x4c, 0x43, 0x77, 0x41, 0x41, 0x46, 0x68, 0x34, 0x4e, 0x41, 0x41, 0x63, 0x48, 0x43, 0x51, 0x6f, 0x53, 0x44, 0x68, 0x55, 0x52, 0x42, 0x67, 0x6b, 0x4a, 0x43, 0x78, 0x49, 0x48, 0x43, 0x41, 0x63, 0x48, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x0a, 0x09, 0x44, 0x67, 0x63, 0x48, 0x45, 0x68, 0x49, 0x53, 0x44, 0x42, 0x59, 0x50, 0x44, 0x77, 0x38, 0x52, 0x44, 0x67, 0x30, 0x52, 0x45, 0x51, 0x59, 0x47, 0x44, 0x67, 0x77, 0x54, 0x45, 0x42, 0x45, 0x4e, 0x45, 0x51, 0x38, 0x4f, 0x44, 0x52, 0x41, 0x50, 0x46, 0x67, 0x38, 0x4e, 0x44, 0x77, 0x6b, 0x48, 0x43, 0x52, 0x49, 0x4c, 0x43, 0x77, 0x30, 0x4f, 0x44, 0x41, 0x34, 0x4e, 0x43, 0x41, 0x34, 0x4f, 0x42, 0x67, 0x59, 0x4e, 0x42, 0x68, 0x59, 0x4f, 0x0a, 0x09, 0x44, 0x51, 0x34, 0x4f, 0x43, 0x51, 0x73, 0x4a, 0x44, 0x67, 0x34, 0x53, 0x44, 0x67, 0x34, 0x4d, 0x44, 0x67, 0x63, 0x4f, 0x45, 0x67, 0x38, 0x50, 0x44, 0x77, 0x34, 0x51, 0x45, 0x52, 0x41, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4d, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x59, 0x47, 0x42, 0x67, 0x59, 0x4f, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x43, 0x77, 0x73, 0x4f, 0x44, 0x67, 0x73, 0x4e, 0x0a, 0x09, 0x44, 0x67, 0x34, 0x57, 0x46, 0x68, 0x59, 0x4c, 0x43, 0x78, 0x49, 0x56, 0x45, 0x52, 0x49, 0x53, 0x45, 0x68, 0x49, 0x4f, 0x44, 0x67, 0x73, 0x50, 0x45, 0x51, 0x30, 0x4c, 0x43, 0x67, 0x6f, 0x52, 0x46, 0x51, 0x30, 0x4d, 0x43, 0x52, 0x49, 0x4f, 0x44, 0x68, 0x49, 0x50, 0x44, 0x51, 0x30, 0x57, 0x44, 0x67, 0x38, 0x50, 0x45, 0x52, 0x67, 0x57, 0x43, 0x78, 0x59, 0x4c, 0x43, 0x77, 0x63, 0x48, 0x45, 0x67, 0x73, 0x4f, 0x44, 0x51, 0x51, 0x4f, 0x0a, 0x09, 0x43, 0x51, 0x6b, 0x4e, 0x44, 0x51, 0x73, 0x48, 0x42, 0x77, 0x73, 0x65, 0x44, 0x77, 0x34, 0x50, 0x44, 0x67, 0x34, 0x47, 0x42, 0x67, 0x59, 0x47, 0x45, 0x52, 0x45, 0x52, 0x45, 0x42, 0x41, 0x51, 0x42, 0x67, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4d, 0x42, 0x67, 0x34, 0x4c, 0x44, 0x77, 0x77, 0x48, 0x45, 0x51, 0x30, 0x4e, 0x44, 0x67, 0x30, 0x4f, 0x45, 0x68, 0x49, 0x4a, 0x43, 0x51, 0x6b, 0x56, 0x0a, 0x09, 0x46, 0x52, 0x55, 0x52, 0x44, 0x67, 0x59, 0x4f, 0x43, 0x77, 0x38, 0x4d, 0x44, 0x77, 0x77, 0x4f, 0x43, 0x41, 0x63, 0x4f, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x77, 0x73, 0x4c, 0x43, 0x51, 0x73, 0x4c, 0x41, 0x41, 0x41, 0x58, 0x48, 0x77, 0x34, 0x41, 0x42, 0x77, 0x63, 0x4a, 0x43, 0x78, 0x4d, 0x50, 0x46, 0x68, 0x49, 0x47, 0x43, 0x51, 0x6b, 0x4d, 0x45, 0x77, 0x63, 0x49, 0x42, 0x77, 0x67, 0x50, 0x44, 0x77, 0x38, 0x50, 0x44, 0x77, 0x38, 0x50, 0x0a, 0x09, 0x44, 0x77, 0x38, 0x50, 0x43, 0x41, 0x67, 0x54, 0x45, 0x78, 0x4d, 0x4d, 0x46, 0x78, 0x41, 0x51, 0x45, 0x42, 0x49, 0x50, 0x44, 0x52, 0x49, 0x52, 0x42, 0x77, 0x63, 0x50, 0x44, 0x52, 0x51, 0x52, 0x45, 0x67, 0x34, 0x53, 0x45, 0x41, 0x38, 0x4f, 0x45, 0x52, 0x41, 0x58, 0x45, 0x41, 0x34, 0x51, 0x43, 0x51, 0x67, 0x4a, 0x45, 0x77, 0x77, 0x4d, 0x44, 0x67, 0x38, 0x4e, 0x44, 0x77, 0x34, 0x49, 0x44, 0x77, 0x38, 0x47, 0x42, 0x67, 0x30, 0x47, 0x0a, 0x09, 0x46, 0x67, 0x38, 0x4f, 0x44, 0x67, 0x34, 0x4a, 0x44, 0x41, 0x6b, 0x50, 0x44, 0x68, 0x4d, 0x4f, 0x44, 0x67, 0x77, 0x50, 0x43, 0x41, 0x38, 0x54, 0x45, 0x42, 0x41, 0x51, 0x44, 0x78, 0x45, 0x53, 0x45, 0x51, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x30, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x42, 0x67, 0x59, 0x47, 0x42, 0x67, 0x38, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x38, 0x50, 0x44, 0x77, 0x38, 0x4d, 0x44, 0x41, 0x38, 0x50, 0x0a, 0x09, 0x44, 0x41, 0x34, 0x50, 0x44, 0x68, 0x63, 0x58, 0x46, 0x77, 0x77, 0x4d, 0x45, 0x78, 0x59, 0x53, 0x45, 0x78, 0x4d, 0x54, 0x45, 0x77, 0x38, 0x50, 0x44, 0x42, 0x41, 0x52, 0x44, 0x67, 0x77, 0x4c, 0x43, 0x78, 0x49, 0x56, 0x44, 0x67, 0x77, 0x4a, 0x45, 0x77, 0x38, 0x50, 0x45, 0x77, 0x38, 0x4f, 0x44, 0x68, 0x63, 0x50, 0x45, 0x42, 0x41, 0x53, 0x47, 0x52, 0x67, 0x4d, 0x46, 0x77, 0x77, 0x4d, 0x42, 0x77, 0x63, 0x54, 0x43, 0x77, 0x34, 0x4f, 0x0a, 0x09, 0x42, 0x41, 0x38, 0x4a, 0x43, 0x51, 0x38, 0x50, 0x44, 0x41, 0x63, 0x48, 0x44, 0x42, 0x38, 0x51, 0x44, 0x78, 0x41, 0x50, 0x44, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x53, 0x45, 0x68, 0x49, 0x52, 0x45, 0x52, 0x45, 0x47, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x30, 0x47, 0x44, 0x77, 0x77, 0x51, 0x44, 0x41, 0x67, 0x53, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x54, 0x45, 0x77, 0x6b, 0x4a, 0x0a, 0x09, 0x43, 0x52, 0x59, 0x57, 0x46, 0x68, 0x49, 0x50, 0x42, 0x77, 0x38, 0x4d, 0x45, 0x41, 0x30, 0x51, 0x44, 0x51, 0x38, 0x49, 0x42, 0x77, 0x38, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4a, 0x44, 0x41, 0x77, 0x41, 0x41, 0x42, 0x67, 0x67, 0x44, 0x67, 0x41, 0x49, 0x43, 0x41, 0x6f, 0x4c, 0x46, 0x41, 0x38, 0x58, 0x45, 0x77, 0x63, 0x4a, 0x43, 0x51, 0x77, 0x55, 0x43, 0x41, 0x6b, 0x49, 0x43, 0x41, 0x38, 0x50, 0x44, 0x77, 0x38, 0x50, 0x0a, 0x09, 0x44, 0x77, 0x38, 0x50, 0x44, 0x77, 0x38, 0x49, 0x43, 0x42, 0x51, 0x55, 0x46, 0x41, 0x30, 0x59, 0x45, 0x42, 0x41, 0x52, 0x45, 0x67, 0x38, 0x4f, 0x45, 0x78, 0x49, 0x48, 0x42, 0x78, 0x41, 0x4e, 0x46, 0x52, 0x49, 0x54, 0x44, 0x68, 0x4d, 0x52, 0x44, 0x77, 0x38, 0x53, 0x45, 0x42, 0x67, 0x51, 0x44, 0x78, 0x41, 0x4a, 0x43, 0x41, 0x6b, 0x55, 0x44, 0x41, 0x77, 0x4f, 0x44, 0x77, 0x30, 0x50, 0x44, 0x67, 0x67, 0x50, 0x44, 0x77, 0x63, 0x48, 0x0a, 0x09, 0x44, 0x67, 0x59, 0x59, 0x44, 0x77, 0x34, 0x50, 0x44, 0x77, 0x6f, 0x4d, 0x43, 0x51, 0x38, 0x50, 0x46, 0x41, 0x38, 0x50, 0x44, 0x51, 0x38, 0x49, 0x44, 0x78, 0x51, 0x51, 0x45, 0x42, 0x45, 0x50, 0x45, 0x68, 0x4d, 0x53, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x51, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x48, 0x42, 0x77, 0x63, 0x48, 0x44, 0x77, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x77, 0x38, 0x50, 0x44, 0x77, 0x77, 0x4d, 0x0a, 0x09, 0x44, 0x77, 0x38, 0x4d, 0x44, 0x67, 0x38, 0x50, 0x47, 0x42, 0x67, 0x59, 0x44, 0x41, 0x77, 0x55, 0x46, 0x78, 0x4d, 0x55, 0x46, 0x42, 0x51, 0x55, 0x44, 0x77, 0x38, 0x4d, 0x45, 0x42, 0x49, 0x4f, 0x44, 0x51, 0x73, 0x4c, 0x45, 0x68, 0x63, 0x4f, 0x44, 0x51, 0x6f, 0x55, 0x44, 0x77, 0x38, 0x55, 0x45, 0x41, 0x38, 0x50, 0x47, 0x41, 0x38, 0x51, 0x45, 0x42, 0x4d, 0x61, 0x47, 0x41, 0x77, 0x59, 0x44, 0x41, 0x77, 0x49, 0x43, 0x42, 0x51, 0x4d, 0x0a, 0x09, 0x44, 0x77, 0x38, 0x45, 0x44, 0x77, 0x6f, 0x4b, 0x44, 0x77, 0x38, 0x4d, 0x43, 0x41, 0x67, 0x4d, 0x49, 0x42, 0x41, 0x50, 0x45, 0x41, 0x38, 0x50, 0x42, 0x77, 0x63, 0x48, 0x42, 0x78, 0x4d, 0x54, 0x45, 0x78, 0x49, 0x53, 0x45, 0x67, 0x63, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x51, 0x59, 0x50, 0x44, 0x42, 0x41, 0x4e, 0x43, 0x42, 0x4d, 0x4f, 0x44, 0x77, 0x38, 0x50, 0x44, 0x78, 0x51, 0x55, 0x0a, 0x09, 0x43, 0x67, 0x6f, 0x4b, 0x46, 0x78, 0x63, 0x58, 0x45, 0x77, 0x38, 0x48, 0x44, 0x77, 0x77, 0x52, 0x44, 0x52, 0x45, 0x4e, 0x44, 0x77, 0x6b, 0x49, 0x44, 0x77, 0x77, 0x4d, 0x44, 0x41, 0x77, 0x4d, 0x44, 0x41, 0x6f, 0x4d, 0x44, 0x41, 0x41, 0x41, 0x47, 0x53, 0x49, 0x50, 0x41, 0x41, 0x67, 0x49, 0x43, 0x67, 0x77, 0x56, 0x45, 0x42, 0x67, 0x55, 0x42, 0x77, 0x6f, 0x4b, 0x44, 0x52, 0x55, 0x49, 0x43, 0x51, 0x67, 0x49, 0x45, 0x42, 0x41, 0x51, 0x0a, 0x09, 0x45, 0x42, 0x41, 0x51, 0x45, 0x42, 0x41, 0x51, 0x45, 0x41, 0x67, 0x49, 0x46, 0x52, 0x55, 0x56, 0x44, 0x52, 0x6b, 0x52, 0x45, 0x52, 0x45, 0x54, 0x45, 0x41, 0x34, 0x54, 0x45, 0x77, 0x63, 0x48, 0x45, 0x41, 0x34, 0x57, 0x45, 0x78, 0x51, 0x50, 0x46, 0x42, 0x45, 0x51, 0x44, 0x78, 0x49, 0x52, 0x47, 0x52, 0x45, 0x50, 0x45, 0x51, 0x6f, 0x49, 0x43, 0x68, 0x55, 0x4e, 0x44, 0x51, 0x38, 0x51, 0x44, 0x68, 0x41, 0x50, 0x43, 0x52, 0x41, 0x51, 0x0a, 0x09, 0x42, 0x77, 0x63, 0x4f, 0x42, 0x78, 0x67, 0x51, 0x44, 0x78, 0x41, 0x51, 0x43, 0x67, 0x30, 0x4b, 0x45, 0x41, 0x38, 0x55, 0x44, 0x77, 0x38, 0x4e, 0x45, 0x41, 0x67, 0x51, 0x46, 0x52, 0x45, 0x52, 0x45, 0x52, 0x41, 0x54, 0x46, 0x42, 0x49, 0x50, 0x44, 0x77, 0x38, 0x50, 0x44, 0x77, 0x38, 0x4f, 0x44, 0x77, 0x38, 0x50, 0x44, 0x77, 0x63, 0x48, 0x42, 0x77, 0x63, 0x51, 0x44, 0x77, 0x38, 0x50, 0x44, 0x77, 0x38, 0x51, 0x45, 0x42, 0x41, 0x51, 0x0a, 0x09, 0x44, 0x51, 0x30, 0x51, 0x45, 0x41, 0x30, 0x50, 0x45, 0x42, 0x41, 0x5a, 0x47, 0x52, 0x6b, 0x4e, 0x44, 0x52, 0x55, 0x59, 0x46, 0x42, 0x55, 0x56, 0x46, 0x52, 0x55, 0x51, 0x45, 0x41, 0x30, 0x52, 0x45, 0x77, 0x38, 0x4e, 0x44, 0x41, 0x77, 0x54, 0x47, 0x51, 0x38, 0x4e, 0x43, 0x68, 0x55, 0x51, 0x45, 0x42, 0x55, 0x52, 0x44, 0x77, 0x38, 0x5a, 0x45, 0x42, 0x45, 0x52, 0x46, 0x42, 0x73, 0x61, 0x44, 0x52, 0x6b, 0x4e, 0x44, 0x51, 0x67, 0x49, 0x0a, 0x09, 0x46, 0x51, 0x77, 0x50, 0x44, 0x77, 0x51, 0x51, 0x43, 0x67, 0x6f, 0x51, 0x45, 0x41, 0x30, 0x49, 0x43, 0x41, 0x30, 0x69, 0x45, 0x52, 0x41, 0x52, 0x45, 0x42, 0x41, 0x48, 0x42, 0x77, 0x63, 0x48, 0x46, 0x42, 0x51, 0x55, 0x45, 0x68, 0x49, 0x53, 0x42, 0x77, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4f, 0x42, 0x78, 0x41, 0x4e, 0x45, 0x51, 0x30, 0x49, 0x45, 0x77, 0x38, 0x50, 0x44, 0x77, 0x38, 0x51, 0x0a, 0x09, 0x46, 0x52, 0x55, 0x4b, 0x43, 0x67, 0x6f, 0x59, 0x47, 0x42, 0x67, 0x54, 0x45, 0x41, 0x63, 0x51, 0x44, 0x52, 0x45, 0x4f, 0x45, 0x51, 0x34, 0x51, 0x43, 0x51, 0x67, 0x51, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x43, 0x67, 0x30, 0x4e, 0x41, 0x41, 0x41, 0x61, 0x49, 0x78, 0x41, 0x41, 0x43, 0x41, 0x67, 0x4b, 0x44, 0x42, 0x59, 0x52, 0x47, 0x52, 0x51, 0x48, 0x43, 0x67, 0x6f, 0x4e, 0x46, 0x67, 0x67, 0x4a, 0x43, 0x41, 0x6b, 0x52, 0x0a, 0x09, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x43, 0x51, 0x6b, 0x57, 0x46, 0x68, 0x59, 0x4f, 0x47, 0x68, 0x49, 0x53, 0x45, 0x68, 0x51, 0x51, 0x44, 0x78, 0x51, 0x55, 0x43, 0x41, 0x67, 0x52, 0x44, 0x68, 0x59, 0x54, 0x46, 0x42, 0x41, 0x55, 0x45, 0x68, 0x45, 0x51, 0x45, 0x78, 0x49, 0x61, 0x45, 0x68, 0x41, 0x53, 0x43, 0x67, 0x6b, 0x4b, 0x46, 0x67, 0x30, 0x4e, 0x45, 0x42, 0x45, 0x4f, 0x45, 0x52, 0x41, 0x4a, 0x0a, 0x09, 0x45, 0x52, 0x41, 0x48, 0x42, 0x77, 0x38, 0x48, 0x47, 0x52, 0x41, 0x51, 0x45, 0x52, 0x45, 0x4c, 0x44, 0x67, 0x6f, 0x51, 0x44, 0x78, 0x55, 0x50, 0x44, 0x77, 0x34, 0x52, 0x43, 0x52, 0x45, 0x57, 0x45, 0x68, 0x49, 0x53, 0x45, 0x42, 0x4d, 0x55, 0x45, 0x78, 0x41, 0x51, 0x45, 0x42, 0x41, 0x51, 0x45, 0x41, 0x34, 0x51, 0x45, 0x42, 0x41, 0x51, 0x42, 0x77, 0x63, 0x48, 0x42, 0x78, 0x41, 0x51, 0x45, 0x42, 0x41, 0x51, 0x45, 0x42, 0x41, 0x51, 0x0a, 0x09, 0x45, 0x42, 0x41, 0x4e, 0x44, 0x52, 0x45, 0x52, 0x44, 0x51, 0x38, 0x52, 0x45, 0x42, 0x6f, 0x61, 0x47, 0x67, 0x30, 0x4e, 0x46, 0x68, 0x6b, 0x55, 0x46, 0x68, 0x59, 0x57, 0x46, 0x68, 0x45, 0x52, 0x44, 0x52, 0x49, 0x55, 0x44, 0x77, 0x34, 0x4d, 0x44, 0x42, 0x51, 0x61, 0x45, 0x41, 0x34, 0x4b, 0x46, 0x68, 0x45, 0x52, 0x46, 0x68, 0x45, 0x51, 0x45, 0x42, 0x6f, 0x52, 0x45, 0x68, 0x49, 0x55, 0x48, 0x42, 0x73, 0x4e, 0x47, 0x67, 0x30, 0x4e, 0x0a, 0x09, 0x43, 0x41, 0x67, 0x57, 0x44, 0x51, 0x38, 0x51, 0x42, 0x42, 0x45, 0x4b, 0x43, 0x68, 0x41, 0x51, 0x44, 0x51, 0x67, 0x49, 0x44, 0x53, 0x4d, 0x53, 0x45, 0x42, 0x49, 0x51, 0x45, 0x41, 0x67, 0x49, 0x43, 0x41, 0x67, 0x55, 0x46, 0x42, 0x51, 0x54, 0x45, 0x78, 0x4d, 0x48, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x38, 0x48, 0x45, 0x51, 0x34, 0x53, 0x44, 0x67, 0x6b, 0x55, 0x45, 0x42, 0x41, 0x50, 0x0a, 0x09, 0x45, 0x42, 0x45, 0x57, 0x46, 0x67, 0x6f, 0x4b, 0x43, 0x68, 0x6b, 0x5a, 0x47, 0x52, 0x51, 0x52, 0x43, 0x42, 0x45, 0x4f, 0x45, 0x67, 0x34, 0x53, 0x44, 0x68, 0x45, 0x4a, 0x43, 0x42, 0x45, 0x4e, 0x44, 0x51, 0x30, 0x4e, 0x44, 0x51, 0x30, 0x4b, 0x44, 0x51, 0x30, 0x41, 0x41, 0x42, 0x73, 0x6b, 0x45, 0x41, 0x41, 0x4a, 0x43, 0x51, 0x73, 0x4d, 0x46, 0x78, 0x45, 0x61, 0x46, 0x51, 0x63, 0x4c, 0x43, 0x77, 0x34, 0x58, 0x43, 0x51, 0x6f, 0x4a, 0x0a, 0x09, 0x43, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x4a, 0x43, 0x52, 0x63, 0x58, 0x46, 0x77, 0x34, 0x62, 0x45, 0x68, 0x4d, 0x54, 0x46, 0x52, 0x45, 0x51, 0x46, 0x52, 0x51, 0x49, 0x43, 0x42, 0x49, 0x50, 0x46, 0x78, 0x51, 0x56, 0x45, 0x42, 0x55, 0x54, 0x45, 0x52, 0x45, 0x55, 0x45, 0x68, 0x73, 0x54, 0x45, 0x52, 0x4d, 0x4c, 0x43, 0x51, 0x73, 0x58, 0x44, 0x67, 0x34, 0x52, 0x45, 0x51, 0x38, 0x52, 0x0a, 0x09, 0x45, 0x51, 0x6f, 0x52, 0x45, 0x51, 0x67, 0x49, 0x45, 0x41, 0x67, 0x61, 0x45, 0x52, 0x45, 0x52, 0x45, 0x51, 0x73, 0x4f, 0x43, 0x78, 0x45, 0x51, 0x46, 0x68, 0x41, 0x51, 0x44, 0x68, 0x45, 0x4a, 0x45, 0x52, 0x63, 0x53, 0x45, 0x68, 0x4d, 0x52, 0x46, 0x42, 0x55, 0x55, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x44, 0x78, 0x45, 0x52, 0x45, 0x52, 0x45, 0x49, 0x43, 0x41, 0x67, 0x49, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x0a, 0x09, 0x45, 0x52, 0x45, 0x52, 0x45, 0x51, 0x34, 0x4f, 0x45, 0x52, 0x45, 0x4f, 0x45, 0x42, 0x45, 0x52, 0x47, 0x78, 0x73, 0x62, 0x44, 0x67, 0x34, 0x58, 0x47, 0x68, 0x55, 0x57, 0x46, 0x78, 0x63, 0x58, 0x45, 0x52, 0x45, 0x4f, 0x45, 0x68, 0x51, 0x51, 0x44, 0x67, 0x30, 0x4e, 0x46, 0x52, 0x73, 0x52, 0x44, 0x67, 0x73, 0x58, 0x45, 0x52, 0x45, 0x58, 0x45, 0x68, 0x45, 0x52, 0x47, 0x78, 0x45, 0x53, 0x45, 0x68, 0x55, 0x64, 0x48, 0x41, 0x34, 0x62, 0x0a, 0x09, 0x44, 0x67, 0x34, 0x4a, 0x43, 0x52, 0x63, 0x4e, 0x45, 0x42, 0x45, 0x46, 0x45, 0x51, 0x73, 0x4c, 0x45, 0x52, 0x45, 0x4f, 0x43, 0x51, 0x6b, 0x4f, 0x4a, 0x42, 0x49, 0x52, 0x45, 0x68, 0x45, 0x52, 0x43, 0x41, 0x67, 0x49, 0x43, 0x42, 0x55, 0x56, 0x46, 0x52, 0x51, 0x55, 0x46, 0x41, 0x67, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x77, 0x67, 0x52, 0x44, 0x68, 0x4d, 0x4f, 0x43, 0x52, 0x55, 0x52, 0x0a, 0x09, 0x45, 0x52, 0x41, 0x51, 0x45, 0x52, 0x63, 0x58, 0x43, 0x77, 0x73, 0x4c, 0x47, 0x68, 0x6f, 0x61, 0x46, 0x52, 0x45, 0x49, 0x45, 0x51, 0x34, 0x54, 0x44, 0x78, 0x4d, 0x50, 0x45, 0x51, 0x6f, 0x4a, 0x45, 0x51, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x73, 0x4f, 0x44, 0x67, 0x41, 0x41, 0x48, 0x43, 0x59, 0x52, 0x41, 0x41, 0x6b, 0x4a, 0x43, 0x77, 0x30, 0x58, 0x45, 0x68, 0x73, 0x57, 0x43, 0x41, 0x73, 0x4c, 0x44, 0x68, 0x63, 0x4a, 0x0a, 0x09, 0x43, 0x67, 0x6b, 0x4a, 0x45, 0x68, 0x49, 0x53, 0x45, 0x68, 0x49, 0x53, 0x45, 0x68, 0x49, 0x53, 0x45, 0x67, 0x6b, 0x4a, 0x46, 0x78, 0x63, 0x58, 0x44, 0x78, 0x77, 0x54, 0x45, 0x78, 0x51, 0x57, 0x45, 0x68, 0x41, 0x57, 0x46, 0x51, 0x67, 0x49, 0x45, 0x68, 0x41, 0x59, 0x46, 0x52, 0x59, 0x52, 0x46, 0x68, 0x4d, 0x53, 0x45, 0x52, 0x55, 0x54, 0x48, 0x42, 0x4d, 0x52, 0x45, 0x77, 0x73, 0x4a, 0x43, 0x78, 0x63, 0x4f, 0x44, 0x68, 0x45, 0x53, 0x0a, 0x09, 0x44, 0x78, 0x49, 0x52, 0x43, 0x68, 0x49, 0x53, 0x43, 0x41, 0x67, 0x51, 0x43, 0x42, 0x73, 0x53, 0x45, 0x52, 0x49, 0x53, 0x44, 0x41, 0x38, 0x4c, 0x45, 0x68, 0x45, 0x58, 0x45, 0x52, 0x45, 0x50, 0x45, 0x67, 0x6b, 0x53, 0x46, 0x78, 0x4d, 0x54, 0x46, 0x42, 0x49, 0x56, 0x46, 0x68, 0x55, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x52, 0x45, 0x50, 0x45, 0x52, 0x45, 0x52, 0x45, 0x51, 0x67, 0x49, 0x43, 0x41, 0x67, 0x53, 0x45, 0x52, 0x45, 0x52, 0x0a, 0x09, 0x45, 0x52, 0x45, 0x53, 0x45, 0x68, 0x49, 0x53, 0x44, 0x67, 0x34, 0x53, 0x45, 0x67, 0x34, 0x52, 0x45, 0x68, 0x49, 0x63, 0x48, 0x42, 0x77, 0x4f, 0x44, 0x68, 0x63, 0x62, 0x46, 0x68, 0x63, 0x58, 0x46, 0x78, 0x63, 0x53, 0x45, 0x67, 0x34, 0x54, 0x46, 0x52, 0x41, 0x50, 0x44, 0x51, 0x30, 0x56, 0x48, 0x42, 0x45, 0x50, 0x43, 0x78, 0x63, 0x53, 0x45, 0x68, 0x63, 0x54, 0x45, 0x52, 0x45, 0x63, 0x45, 0x68, 0x4d, 0x54, 0x46, 0x68, 0x34, 0x64, 0x0a, 0x09, 0x44, 0x68, 0x77, 0x50, 0x44, 0x77, 0x6b, 0x4a, 0x46, 0x77, 0x34, 0x52, 0x45, 0x51, 0x55, 0x53, 0x43, 0x77, 0x73, 0x53, 0x45, 0x67, 0x34, 0x4a, 0x43, 0x51, 0x38, 0x6d, 0x45, 0x78, 0x49, 0x54, 0x45, 0x68, 0x49, 0x49, 0x43, 0x41, 0x67, 0x49, 0x46, 0x68, 0x59, 0x57, 0x46, 0x52, 0x55, 0x56, 0x43, 0x41, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x51, 0x43, 0x42, 0x49, 0x50, 0x45, 0x77, 0x38, 0x4a, 0x0a, 0x09, 0x46, 0x68, 0x45, 0x52, 0x45, 0x52, 0x45, 0x53, 0x46, 0x78, 0x63, 0x4c, 0x43, 0x77, 0x73, 0x62, 0x47, 0x78, 0x73, 0x57, 0x45, 0x67, 0x67, 0x53, 0x44, 0x78, 0x51, 0x50, 0x46, 0x41, 0x38, 0x53, 0x43, 0x67, 0x6b, 0x53, 0x44, 0x67, 0x34, 0x4f, 0x44, 0x67, 0x34, 0x4f, 0x43, 0x77, 0x34, 0x4f, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43, 0x41, 0x41, 0x67, 0x41, 0x41, 0x76, 0x2f, 0x2f, 0x41, 0x41, 0x4d, 0x41, 0x41, 0x51, 0x41, 0x41, 0x0a, 0x09, 0x41, 0x41, 0x49, 0x41, 0x41, 0x41, 0x78, 0x51, 0x43, 0x75, 0x78, 0x66, 0x44, 0x7a, 0x7a, 0x31, 0x41, 0x42, 0x38, 0x49, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x43, 0x36, 0x75, 0x66, 0x43, 0x34, 0x41, 0x41, 0x41, 0x41, 0x41, 0x4c, 0x72, 0x43, 0x5a, 0x35, 0x48, 0x2b, 0x69, 0x66, 0x34, 0x64, 0x43, 0x6b, 0x77, 0x48, 0x62, 0x51, 0x41, 0x41, 0x41, 0x41, 0x67, 0x41, 0x41, 0x51, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x3d, 0x3d, 0x0a, 0x09, 0x5d, 0x5d, 0x2c, 0x20, 0x22, 0x56, 0x65, 0x72, 0x61, 0x2e, 0x74, 0x74, 0x66, 0x22, 0x2c, 0x20, 0x22, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x22, 0x29, 0x0a, 0x09, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x20, 0x3d, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x20, 0x74, 0x79, 0x70, 0x65, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x5f, 0x6e, 0x65, 0x77, 0x46, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x77, 0x46, 0x6f, 0x6e, 0x74, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x77, 0x46, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x66, 0x6f, 0x6e, 0x74, 0x2c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x28, 0x66, 0x6f, 0x6e, 0x74, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x20, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x3d, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x72, 0x61, 0x5f, 0x74, 0x74, 0x66, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x5f, 0x6e, 0x65, 0x77, 0x46, 0x6f, 0x6e, 0x74, 0x28, 0x66, 0x6f, 0x6e, 0x74, 0x2c, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x31, 0x32, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x46, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x77, 0x46, 0x6f, 0x6e, 0x74, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x28, 0x66, 0x6f, 0x6e, 0x74, 0x29, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x5f, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x5f, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x74, 0x4e, 0x65, 0x77, 0x46, 0x6f, 0x6e, 0x74, 0x28, 0x31, 0x32, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x5f, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x28, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x77, 0x65, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x3d, 0x20, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x20, 0x3d, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x0a, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x67, 0x65, 0x74, 0x46, 0x6f, 0x6e, 0x74, 0x28, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x77, 0x65, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x20, 0x3d, 0x20, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x28, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x2d, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x44, 0x45, 0x52, 0x53, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x20, 0x3d, 0x20, 0x22, 0x23, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x32, 0x30, 0x22, 0x0a, 0x09, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x20, 0x3d, 0x20, 0x5b, 0x5b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x54, 0x65, 0x78, 0x65, 0x6c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x65, 0x73, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x5d, 0x5d, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x53, 0x20, 0x3d, 0x20, 0x5b, 0x5b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x67, 0x6c, 0x5f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x67, 0x6c, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x67, 0x6c, 0x5f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x69, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x20, 0x67, 0x6c, 0x5f, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x32, 0x44, 0x20, 0x5f, 0x74, 0x65, 0x78, 0x30, 0x5f, 0x3b, 0x0a, 0x75, 0x6e, 0x69, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x76, 0x65, 0x63, 0x34, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x3b, 0x5d, 0x5d, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x20, 0x3d, 0x20, 0x5b, 0x5b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x67, 0x6c, 0x5f, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x20, 0x67, 0x6c, 0x5f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x30, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x56, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x20, 0x67, 0x6c, 0x5f, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x5b, 0x30, 0x5d, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x56, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x0a, 0x2f, 0x2f, 0x20, 0x23, 0x69, 0x66, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x28, 0x47, 0x4c, 0x5f, 0x41, 0x52, 0x42, 0x5f, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x29, 0x0a, 0x2f, 0x2f, 0x09, 0x23, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x47, 0x4c, 0x5f, 0x41, 0x52, 0x42, 0x5f, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x64, 0x20, 0x3a, 0x20, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x0a, 0x2f, 0x2f, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x20, 0x67, 0x6c, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x41, 0x52, 0x42, 0x0a, 0x2f, 0x2f, 0x20, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x2f, 0x2f, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x50, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x3b, 0x0a, 0x2f, 0x2f, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x28, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x50, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x44, 0x29, 0x3b, 0x0a, 0x2f, 0x2f, 0x20, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0a, 0x5d, 0x5d, 0x2c, 0x0a, 0x09, 0x09, 0x46, 0x4f, 0x4f, 0x54, 0x45, 0x52, 0x20, 0x3d, 0x20, 0x5b, 0x5b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x20, 0x3d, 0x20, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x3b, 0x0a, 0x09, 0x56, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0a, 0x09, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x2c, 0x20, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0a, 0x7d, 0x5d, 0x5d, 0x2c, 0x0a, 0x09, 0x7d, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x50, 0x49, 0x58, 0x45, 0x4c, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x20, 0x3d, 0x20, 0x5b, 0x5b, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x50, 0x49, 0x58, 0x45, 0x4c, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x56, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x20, 0x67, 0x6c, 0x5f, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x5b, 0x30, 0x5d, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x56, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x67, 0x6c, 0x5f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x5d, 0x5d, 0x2c, 0x0a, 0x09, 0x09, 0x46, 0x4f, 0x4f, 0x54, 0x45, 0x52, 0x20, 0x3d, 0x20, 0x5b, 0x5b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x66, 0x69, 0x78, 0x20, 0x63, 0x72, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x73, 0x73, 0x75, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x4f, 0x53, 0x58, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x5f, 0x74, 0x65, 0x78, 0x30, 0x5f, 0x20, 0x69, 0x73, 0x20, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x28, 0x5f, 0x74, 0x65, 0x78, 0x30, 0x5f, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x2e, 0x35, 0x29, 0x29, 0x2e, 0x72, 0x3b, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x53, 0x65, 0x65, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x3a, 0x3a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x74, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x63, 0x70, 0x70, 0x2e, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x78, 0x2c, 0x20, 0x28, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x79, 0x20, 0x2a, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x09, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x28, 0x56, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, 0x74, 0x65, 0x78, 0x30, 0x5f, 0x2c, 0x20, 0x56, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x73, 0x74, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x29, 0x3b, 0x0a, 0x7d, 0x5d, 0x5d, 0x2c, 0x0a, 0x09, 0x09, 0x46, 0x4f, 0x4f, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x43, 0x41, 0x4e, 0x56, 0x41, 0x53, 0x20, 0x3d, 0x20, 0x5b, 0x5b, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x6d, 0x61, 0x69, 0x6e, 0x28, 0x29, 0x20, 0x7b, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x66, 0x69, 0x78, 0x20, 0x63, 0x72, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x73, 0x73, 0x75, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x4f, 0x53, 0x58, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x5f, 0x74, 0x65, 0x78, 0x30, 0x5f, 0x20, 0x69, 0x73, 0x20, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x28, 0x29, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x75, 0x6d, 0x6d, 0x79, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x32, 0x44, 0x28, 0x5f, 0x74, 0x65, 0x78, 0x30, 0x5f, 0x2c, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x2e, 0x35, 0x29, 0x29, 0x2e, 0x72, 0x3b, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x53, 0x65, 0x65, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x3a, 0x3a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x53, 0x65, 0x74, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x53, 0x68, 0x61, 0x64, 0x65, 0x72, 0x2e, 0x63, 0x70, 0x70, 0x2e, 0x0a, 0x09, 0x76, 0x65, 0x63, 0x32, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x20, 0x3d, 0x20, 0x76, 0x65, 0x63, 0x32, 0x28, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x78, 0x2c, 0x20, 0x28, 0x67, 0x6c, 0x5f, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x79, 0x20, 0x2a, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x7a, 0x29, 0x20, 0x2b, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x5f, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x2e, 0x77, 0x29, 0x3b, 0x0a, 0x09, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x28, 0x56, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x5f, 0x74, 0x65, 0x78, 0x30, 0x5f, 0x2c, 0x20, 0x56, 0x61, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x73, 0x74, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x29, 0x3b, 0x0a, 0x7d, 0x5d, 0x5d, 0x2c, 0x0a, 0x09, 0x7d, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x64, 0x65, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x2c, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58, 0x2e, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x2c, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x53, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x22, 0x23, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x30, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x56, 0x45, 0x52, 0x54, 0x45, 0x58, 0x2e, 0x46, 0x4f, 0x4f, 0x54, 0x45, 0x52, 0x2c, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2c, 0x20, 0x22, 0x5c, 0x6e, 0x22, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x7b, 0x0a, 0x09, 0x09, 0x09, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x2c, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x50, 0x49, 0x58, 0x45, 0x4c, 0x2e, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x2c, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x53, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x22, 0x23, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x30, 0x22, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x50, 0x49, 0x58, 0x45, 0x4c, 0x2e, 0x46, 0x4f, 0x4f, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x43, 0x41, 0x4e, 0x56, 0x41, 0x53, 0x20, 0x6f, 0x72, 0x20, 0x47, 0x4c, 0x53, 0x4c, 0x5f, 0x50, 0x49, 0x58, 0x45, 0x4c, 0x2e, 0x46, 0x4f, 0x4f, 0x54, 0x45, 0x52, 0x2c, 0x0a, 0x09, 0x09, 0x7d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x2c, 0x20, 0x22, 0x5c, 0x6e, 0x22, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x64, 0x65, 0x28, 0x63, 0x6f, 0x64, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x76, 0x65, 0x63, 0x34, 0x25, 0x73, 0x2a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x25, 0x28, 0x22, 0x29, 0x20, 0x7e, 0x3d, 0x20, 0x6e, 0x69, 0x6c, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x28, 0x63, 0x6f, 0x64, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x76, 0x65, 0x63, 0x34, 0x25, 0x73, 0x2a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x25, 0x28, 0x22, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x69, 0x66, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x76, 0x6f, 0x69, 0x64, 0x25, 0x73, 0x2a, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x25, 0x28, 0x22, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x2d, 0x2d, 0x20, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x20, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x65, 0x73, 0x20, 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x74, 0x61, 0x6e, 0x69, 0x6f, 0x75, 0x73, 0x6c, 0x79, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x0a, 0x09, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x5f, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x47, 0x4c, 0x53, 0x4c, 0x28, 0x61, 0x72, 0x67, 0x31, 0x2c, 0x20, 0x61, 0x72, 0x67, 0x32, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x2d, 0x2d, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x22, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x22, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x22, 0x0a, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x61, 0x72, 0x67, 0x31, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x72, 0x67, 0x31, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x22, 0x5c, 0x72, 0x5c, 0x6e, 0x5c, 0x74, 0x22, 0x2c, 0x20, 0x22, 0x20, 0x22, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x20, 0x3d, 0x20, 0x73, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x22, 0x28, 0x25, 0x77, 0x2b, 0x29, 0x28, 0x25, 0x73, 0x2b, 0x29, 0x25, 0x28, 0x22, 0x2c, 0x20, 0x22, 0x25, 0x31, 0x28, 0x22, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x22, 0x66, 0x75, 0x6e, 0x63, 0x20, 0x28, 0x29, 0x22, 0x20, 0x74, 0x6f, 0x20, 0x22, 0x66, 0x75, 0x6e, 0x63, 0x28, 0x29, 0x22, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x69, 0x73, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x64, 0x65, 0x28, 0x73, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x72, 0x67, 0x31, 0x20, 0x2d, 0x2d, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x73, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x69, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x28, 0x73, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x69, 0x73, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x72, 0x67, 0x31, 0x20, 0x2d, 0x2d, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x61, 0x72, 0x67, 0x32, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x61, 0x72, 0x67, 0x32, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x22, 0x5c, 0x72, 0x5c, 0x6e, 0x5c, 0x74, 0x22, 0x2c, 0x20, 0x22, 0x20, 0x22, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x20, 0x3d, 0x20, 0x73, 0x3a, 0x67, 0x73, 0x75, 0x62, 0x28, 0x22, 0x28, 0x25, 0x77, 0x2b, 0x29, 0x28, 0x25, 0x73, 0x2b, 0x29, 0x25, 0x28, 0x22, 0x2c, 0x20, 0x22, 0x25, 0x31, 0x28, 0x22, 0x29, 0x20, 0x2d, 0x2d, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x22, 0x66, 0x75, 0x6e, 0x63, 0x20, 0x28, 0x29, 0x22, 0x20, 0x74, 0x6f, 0x20, 0x22, 0x66, 0x75, 0x6e, 0x63, 0x28, 0x29, 0x22, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x69, 0x73, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x64, 0x65, 0x28, 0x73, 0x29, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x72, 0x67, 0x32, 0x20, 0x2d, 0x2d, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x20, 0x61, 0x72, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x20, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x73, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x69, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x28, 0x73, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x69, 0x73, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x61, 0x72, 0x67, 0x32, 0x20, 0x2d, 0x2d, 0x20, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x20, 0x61, 0x72, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x20, 0x3d, 0x20, 0x69, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x64, 0x65, 0x28, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x3d, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x28, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x69, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x29, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x63, 0x6f, 0x64, 0x65, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x2e, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, 0x73, 0x2e, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x47, 0x4c, 0x53, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x28, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x20, 0x3d, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x20, 0x28, 0x25, 0x61, 0x2b, 0x29, 0x20, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x7b, 0x22, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x20, 0x22, 0x2e, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x2e, 0x22, 0x20, 0x73, 0x68, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x3a, 0x22, 0x7d, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x6c, 0x20, 0x69, 0x6e, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x67, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x5b, 0x5e, 0x5c, 0x6e, 0x5d, 0x2b, 0x22, 0x29, 0x20, 0x64, 0x6f, 0x0a, 0x09, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x6e, 0x76, 0x69, 0x64, 0x69, 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x0a, 0x09, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x30, 0x28, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x3e, 0x29, 0x20, 0x3a, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x5b, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5d, 0x3a, 0x20, 0x3c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3e, 0x0a, 0x09, 0x09, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x20, 0x77, 0x68, 0x61, 0x74, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x5e, 0x30, 0x25, 0x28, 0x28, 0x25, 0x64, 0x2b, 0x29, 0x25, 0x29, 0x25, 0x73, 0x2a, 0x3a, 0x25, 0x73, 0x2a, 0x28, 0x25, 0x77, 0x2b, 0x29, 0x5b, 0x5e, 0x3a, 0x5d, 0x2b, 0x3a, 0x25, 0x73, 0x2a, 0x28, 0x2e, 0x2b, 0x29, 0x24, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x61, 0x74, 0x69, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x20, 0x30, 0x3a, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x3e, 0x3a, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x28, 0x23, 0x5b, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5d, 0x29, 0x20, 0x5b, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x4e, 0x41, 0x4d, 0x45, 0x5d, 0x3a, 0x20, 0x3c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x20, 0x77, 0x68, 0x61, 0x74, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x5e, 0x25, 0x77, 0x2b, 0x3a, 0x20, 0x30, 0x3a, 0x28, 0x25, 0x64, 0x2b, 0x29, 0x3a, 0x25, 0x73, 0x2a, 0x28, 0x25, 0x77, 0x2b, 0x29, 0x25, 0x28, 0x5b, 0x5e, 0x25, 0x29, 0x5d, 0x2b, 0x25, 0x29, 0x25, 0x73, 0x2a, 0x28, 0x2e, 0x2b, 0x29, 0x24, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x4f, 0x53, 0x58, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x28, 0x3f, 0x29, 0x3a, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x3a, 0x20, 0x30, 0x3a, 0x3c, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x3e, 0x3a, 0x20, 0x3c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x77, 0x68, 0x61, 0x74, 0x2c, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x3d, 0x20, 0x6c, 0x3a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x28, 0x22, 0x5e, 0x28, 0x25, 0x77, 0x2b, 0x29, 0x3a, 0x20, 0x25, 0x64, 0x2b, 0x3a, 0x28, 0x25, 0x64, 0x2b, 0x29, 0x3a, 0x20, 0x28, 0x2e, 0x2b, 0x29, 0x24, 0x22, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x5b, 0x23, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x22, 0x4c, 0x69, 0x6e, 0x65, 0x20, 0x25, 0x64, 0x3a, 0x20, 0x25, 0x73, 0x3a, 0x20, 0x25, 0x73, 0x22, 0x29, 0x3a, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x28, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x2c, 0x20, 0x77, 0x68, 0x61, 0x74, 0x2c, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x29, 0x0a, 0x09, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x2d, 0x2d, 0x20, 0x64, 0x69, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x23, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x31, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x61, 0x74, 0x28, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x2c, 0x20, 0x22, 0x5c, 0x6e, 0x22, 0x29, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a, }; // [graphics.lua] } // love love-0.9.1/src/Makefile.am0000644000000000000000000006350312316602274015321 0ustar00rootroot00000000000000AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/modules -I$(srcdir)/libraries -I$(srcdir)/libraries/enet/libenet/include $(LOVE_INCLUDES) $(FILE_OFFSET) $(SDL_CFLAGS) $(lua_CFLAGS) $(freetype2_CFLAGS) $(openal_CFLAGS) $(devil_CFLAGS) $(libmodplug_CFLAGS) $(vorbisfile_CFLAGS) AUTOMAKE_OPTIONS = subdir-objects SUBDIRS = SUFFIXES = .lua .lua.h if LOVE_BUILD_EXE # LÖVE executable bin_PROGRAMS = love #love_LDFLAGS = love_LDADD = liblove.la $(lua_LIBS) love_SOURCES = love.cpp if LOVE_TARGET_OSX love_LIBTOOLFLAGS = --tag=OBJCXX love_SOURCES += \ ../platform/macosx/OSX.h \ ../platform/macosx/OSX.mm else love_LIBTOOLFLAGS = --tag=CXX endif endif # Compile scripts .lua.lua.h: cd scripts; $(LUA_EXECUTABLE) auto.lua $< # libLÖVE lib_LTLIBRARIES = liblove.la liblove_la_LDFLAGS = -module -export-dynamic $(LDFLAGS) liblove_la_LIBADD = $(SDL_LIBS) $(freetype2_LIBS) $(lua_LIBS) $(openal_LIBS) $(devil_LIBS) $(libmodplug_LIBS) $(vorbisfile_LIBS) liblove_la_SOURCES = \ ./common/Module.cpp \ ./common/runtime.cpp \ ./common/utf8.cpp \ ./common/wrap_Data.h \ ./common/Object.cpp \ ./common/b64.cpp \ ./common/Data.h \ ./common/StringMap.h \ ./common/Matrix.cpp \ ./common/Object.h \ ./common/Memoizer.cpp \ ./common/int.h \ ./common/Exception.cpp \ ./common/Variant.h \ ./common/b64.h \ ./common/Memoizer.h \ ./common/EnumMap.h \ ./common/Reference.cpp \ ./common/types.h \ ./common/Vector.h \ ./common/version.h \ ./common/Matrix.h \ ./common/delay.cpp \ ./common/Reference.h \ ./common/wrap_Data.cpp \ ./common/Variant.cpp \ ./common/Vector.cpp \ ./common/runtime.h \ ./common/delay.h \ ./common/Module.h \ ./common/math.h \ ./common/config.h \ ./common/Exception.h \ ./common/utf8.h \ ./scripts/boot.lua.h \ ./scripts/graphics.lua.h if LOVE_MODULE_AUDIO if LOVE_IMPLEMENTATION_AUDIO_NULL liblove_la_SOURCES += \ ./modules/audio/null/Audio.cpp \ ./modules/audio/null/Source.cpp \ ./modules/audio/null/Source.h \ ./modules/audio/null/Audio.h endif if LOVE_IMPLEMENTATION_AUDIO_OPENAL liblove_la_SOURCES += \ ./modules/audio/openal/Pool.cpp \ ./modules/audio/openal/Audio.cpp \ ./modules/audio/openal/Source.cpp \ ./modules/audio/openal/Source.h \ ./modules/audio/openal/Pool.h \ ./modules/audio/openal/Audio.h endif liblove_la_SOURCES += \ ./modules/audio/wrap_Audio.h \ ./modules/audio/wrap_Source.cpp \ ./modules/audio/Audio.cpp \ ./modules/audio/Source.cpp \ ./modules/audio/Source.h \ ./modules/audio/wrap_Audio.cpp \ ./modules/audio/wrap_Source.h \ ./modules/audio/Audio.h endif if LOVE_MODULE_EVENT if LOVE_IMPLEMENTATION_EVENT_SDL liblove_la_SOURCES += \ ./modules/event/sdl/Event.h \ ./modules/event/sdl/Event.cpp \ ./modules/event/sdl/wrap_Event.h \ ./modules/event/sdl/wrap_Event.cpp endif liblove_la_SOURCES += \ ./modules/event/Event.h \ ./modules/event/Event.cpp endif if LOVE_MODULE_FILESYSTEM if LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS liblove_la_SOURCES += \ ./modules/filesystem/physfs/Filesystem.h \ ./modules/filesystem/physfs/wrap_File.h \ ./modules/filesystem/physfs/wrap_FileData.cpp \ ./modules/filesystem/physfs/File.cpp \ ./modules/filesystem/physfs/wrap_File.cpp \ ./modules/filesystem/physfs/wrap_Filesystem.cpp \ ./modules/filesystem/physfs/wrap_Filesystem.h \ ./modules/filesystem/physfs/wrap_FileData.h \ ./modules/filesystem/physfs/File.h \ ./modules/filesystem/physfs/Filesystem.cpp endif liblove_la_SOURCES += \ ./modules/filesystem/FileData.h \ ./modules/filesystem/FileData.cpp \ ./modules/filesystem/File.cpp \ ./modules/filesystem/File.h endif if LOVE_MODULE_FONT if LOVE_IMPLEMENTATION_FONT_FREETYPE liblove_la_SOURCES += \ ./modules/font/freetype/Font.cpp \ ./modules/font/freetype/TrueTypeRasterizer.cpp \ ./modules/font/freetype/TrueTypeRasterizer.h \ ./modules/font/freetype/wrap_Font.h \ ./modules/font/freetype/Font.h \ ./modules/font/freetype/wrap_Font.cpp endif liblove_la_SOURCES += \ ./modules/font/wrap_Rasterizer.cpp \ ./modules/font/wrap_Rasterizer.h \ ./modules/font/Rasterizer.cpp \ ./modules/font/Rasterizer.h \ ./modules/font/ImageRasterizer.h \ ./modules/font/GlyphData.h \ ./modules/font/GlyphData.cpp \ ./modules/font/wrap_GlyphData.h \ ./modules/font/Font.h \ ./modules/font/wrap_GlyphData.cpp \ ./modules/font/ImageRasterizer.cpp endif if LOVE_MODULE_GRAPHICS if LOVE_IMPLEMENTATION_GRAPHICS_OPENGL liblove_la_SOURCES += \ ./modules/graphics/opengl/VertexBuffer.cpp \ ./modules/graphics/opengl/SpriteBatch.cpp \ ./modules/graphics/opengl/wrap_Quad.cpp \ ./modules/graphics/opengl/OpenGL.h \ ./modules/graphics/opengl/wrap_Shader.h \ ./modules/graphics/opengl/Font.cpp \ ./modules/graphics/opengl/GLee.c \ ./modules/graphics/opengl/wrap_SpriteBatch.cpp \ ./modules/graphics/opengl/wrap_SpriteBatch.h \ ./modules/graphics/opengl/OpenGL.cpp \ ./modules/graphics/opengl/VertexBuffer.h \ ./modules/graphics/opengl/wrap_Texture.h \ ./modules/graphics/opengl/wrap_Quad.h \ ./modules/graphics/opengl/ParticleSystem.cpp \ ./modules/graphics/opengl/wrap_Mesh.cpp \ ./modules/graphics/opengl/wrap_Shader.cpp \ ./modules/graphics/opengl/Canvas.h \ ./modules/graphics/opengl/wrap_Image.h \ ./modules/graphics/opengl/Graphics.h \ ./modules/graphics/opengl/GLee.h \ ./modules/graphics/opengl/wrap_Texture.cpp \ ./modules/graphics/opengl/Image.cpp \ ./modules/graphics/opengl/Graphics.cpp \ ./modules/graphics/opengl/Canvas.cpp \ ./modules/graphics/opengl/wrap_Image.cpp \ ./modules/graphics/opengl/Shader.cpp \ ./modules/graphics/opengl/wrap_Font.h \ ./modules/graphics/opengl/Mesh.cpp \ ./modules/graphics/opengl/wrap_Canvas.cpp \ ./modules/graphics/opengl/wrap_ParticleSystem.cpp \ ./modules/graphics/opengl/Shader.h \ ./modules/graphics/opengl/ParticleSystem.h \ ./modules/graphics/opengl/Mesh.h \ ./modules/graphics/opengl/wrap_Graphics.cpp \ ./modules/graphics/opengl/Image.h \ ./modules/graphics/opengl/Texture.h \ ./modules/graphics/opengl/wrap_Canvas.h \ ./modules/graphics/opengl/Font.h \ ./modules/graphics/opengl/wrap_Font.cpp \ ./modules/graphics/opengl/Polyline.cpp \ ./modules/graphics/opengl/SpriteBatch.h \ ./modules/graphics/opengl/wrap_Mesh.h \ ./modules/graphics/opengl/Polyline.h \ ./modules/graphics/opengl/wrap_ParticleSystem.h \ ./modules/graphics/opengl/wrap_Graphics.h endif liblove_la_SOURCES += \ ./modules/graphics/Texture.cpp \ ./modules/graphics/Quad.cpp \ ./modules/graphics/Graphics.h \ ./modules/graphics/Color.h \ ./modules/graphics/Graphics.cpp \ ./modules/graphics/Quad.h \ ./modules/graphics/Volatile.h \ ./modules/graphics/Drawable.h \ ./modules/graphics/Volatile.cpp \ ./modules/graphics/Texture.h endif if LOVE_MODULE_IMAGE if LOVE_IMPLEMENTATION_IMAGE_MAGPIE liblove_la_SOURCES += \ ./modules/image/magpie/ddsHandler.cpp \ ./modules/image/magpie/DevilHandler.h \ ./modules/image/magpie/FormatHandler.cpp \ ./modules/image/magpie/Image.cpp \ ./modules/image/magpie/CompressedData.h \ ./modules/image/magpie/ddsHandler.h \ ./modules/image/magpie/FormatHandler.h \ ./modules/image/magpie/Image.h \ ./modules/image/magpie/ImageData.cpp \ ./modules/image/magpie/ImageData.h \ ./modules/image/magpie/CompressedData.cpp \ ./modules/image/magpie/DevilHandler.cpp endif liblove_la_SOURCES += \ ./modules/image/wrap_CompressedData.cpp \ ./modules/image/wrap_CompressedData.h \ ./modules/image/wrap_Image.h \ ./modules/image/CompressedData.h \ ./modules/image/wrap_Image.cpp \ ./modules/image/wrap_ImageData.cpp \ ./modules/image/Image.h \ ./modules/image/ImageData.cpp \ ./modules/image/ImageData.h \ ./modules/image/CompressedData.cpp \ ./modules/image/wrap_ImageData.h endif if LOVE_MODULE_JOYSTICK if LOVE_IMPLEMENTATION_JOYSTICK_SDL liblove_la_SOURCES += \ ./modules/joystick/sdl/wrap_JoystickModule.h \ ./modules/joystick/sdl/wrap_Joystick.cpp \ ./modules/joystick/sdl/wrap_Joystick.h \ ./modules/joystick/sdl/wrap_JoystickModule.cpp \ ./modules/joystick/sdl/JoystickModule.h \ ./modules/joystick/sdl/JoystickModule.cpp \ ./modules/joystick/sdl/Joystick.h \ ./modules/joystick/sdl/Joystick.cpp endif liblove_la_SOURCES += \ ./modules/joystick/JoystickModule.h \ ./modules/joystick/Joystick.h \ ./modules/joystick/Joystick.cpp endif if LOVE_MODULE_KEYBOARD if LOVE_IMPLEMENTATION_KEYBOARD_SDL liblove_la_SOURCES += \ ./modules/keyboard/sdl/Keyboard.h \ ./modules/keyboard/sdl/Keyboard.cpp endif liblove_la_SOURCES += \ ./modules/keyboard/Keyboard.h \ ./modules/keyboard/wrap_Keyboard.cpp \ ./modules/keyboard/wrap_Keyboard.h \ ./modules/keyboard/Keyboard.cpp endif if LOVE_MODULE_LOVE liblove_la_SOURCES += \ ./modules/love/love.h \ ./modules/love/love.cpp endif if LOVE_MODULE_MATH liblove_la_SOURCES += \ ./modules/math/wrap_BezierCurve.cpp \ ./modules/math/MathModule.h \ ./modules/math/RandomGenerator.h \ ./modules/math/wrap_RandomGenerator.h \ ./modules/math/BezierCurve.cpp \ ./modules/math/RandomGenerator.cpp \ ./modules/math/wrap_Math.h \ ./modules/math/BezierCurve.h \ ./modules/math/wrap_RandomGenerator.cpp \ ./modules/math/wrap_BezierCurve.h \ ./modules/math/MathModule.cpp \ ./modules/math/wrap_Math.cpp endif if LOVE_MODULE_MOUSE if LOVE_IMPLEMENTATION_MOUSE_SDL liblove_la_SOURCES += \ ./modules/mouse/sdl/Cursor.cpp \ ./modules/mouse/sdl/Mouse.h \ ./modules/mouse/sdl/Mouse.cpp \ ./modules/mouse/sdl/Cursor.h endif liblove_la_SOURCES += \ ./modules/mouse/Cursor.cpp \ ./modules/mouse/Mouse.h \ ./modules/mouse/wrap_Mouse.cpp \ ./modules/mouse/Mouse.cpp \ ./modules/mouse/wrap_Mouse.h \ ./modules/mouse/wrap_Cursor.cpp \ ./modules/mouse/Cursor.h \ ./modules/mouse/wrap_Cursor.h endif if LOVE_MODULE_PHYSICS if LOVE_IMPLEMENTATION_PHYSICS_BOX2D liblove_la_SOURCES += \ ./modules/physics/box2d/wrap_EdgeShape.h \ ./modules/physics/box2d/EdgeShape.cpp \ ./modules/physics/box2d/Joint.h \ ./modules/physics/box2d/wrap_World.h \ ./modules/physics/box2d/wrap_Fixture.cpp \ ./modules/physics/box2d/World.cpp \ ./modules/physics/box2d/wrap_DistanceJoint.cpp \ ./modules/physics/box2d/DistanceJoint.cpp \ ./modules/physics/box2d/wrap_FrictionJoint.cpp \ ./modules/physics/box2d/RopeJoint.h \ ./modules/physics/box2d/wrap_Shape.cpp \ ./modules/physics/box2d/Physics.cpp \ ./modules/physics/box2d/Joint.cpp \ ./modules/physics/box2d/wrap_DistanceJoint.h \ ./modules/physics/box2d/wrap_Body.h \ ./modules/physics/box2d/wrap_CircleShape.cpp \ ./modules/physics/box2d/wrap_PulleyJoint.h \ ./modules/physics/box2d/wrap_PolygonShape.h \ ./modules/physics/box2d/RevoluteJoint.h \ ./modules/physics/box2d/Body.cpp \ ./modules/physics/box2d/wrap_GearJoint.cpp \ ./modules/physics/box2d/wrap_WheelJoint.h \ ./modules/physics/box2d/MouseJoint.h \ ./modules/physics/box2d/wrap_MouseJoint.cpp \ ./modules/physics/box2d/GearJoint.cpp \ ./modules/physics/box2d/wrap_EdgeShape.cpp \ ./modules/physics/box2d/FrictionJoint.cpp \ ./modules/physics/box2d/wrap_ChainShape.cpp \ ./modules/physics/box2d/wrap_Fixture.h \ ./modules/physics/box2d/wrap_CircleShape.h \ ./modules/physics/box2d/wrap_Physics.cpp \ ./modules/physics/box2d/WheelJoint.cpp \ ./modules/physics/box2d/CircleShape.h \ ./modules/physics/box2d/RopeJoint.cpp \ ./modules/physics/box2d/wrap_WeldJoint.h \ ./modules/physics/box2d/ChainShape.h \ ./modules/physics/box2d/PolygonShape.cpp \ ./modules/physics/box2d/CircleShape.cpp \ ./modules/physics/box2d/wrap_PolygonShape.cpp \ ./modules/physics/box2d/PolygonShape.h \ ./modules/physics/box2d/GearJoint.h \ ./modules/physics/box2d/wrap_Joint.cpp \ ./modules/physics/box2d/MotorJoint.cpp \ ./modules/physics/box2d/MouseJoint.cpp \ ./modules/physics/box2d/wrap_Body.cpp \ ./modules/physics/box2d/EdgeShape.h \ ./modules/physics/box2d/Contact.cpp \ ./modules/physics/box2d/wrap_PrismaticJoint.h \ ./modules/physics/box2d/PulleyJoint.cpp \ ./modules/physics/box2d/wrap_GearJoint.h \ ./modules/physics/box2d/wrap_Shape.h \ ./modules/physics/box2d/FrictionJoint.h \ ./modules/physics/box2d/WeldJoint.h \ ./modules/physics/box2d/wrap_RevoluteJoint.h \ ./modules/physics/box2d/wrap_Physics.h \ ./modules/physics/box2d/wrap_RopeJoint.h \ ./modules/physics/box2d/wrap_ChainShape.h \ ./modules/physics/box2d/wrap_MotorJoint.cpp \ ./modules/physics/box2d/PrismaticJoint.h \ ./modules/physics/box2d/WheelJoint.h \ ./modules/physics/box2d/Contact.h \ ./modules/physics/box2d/wrap_Contact.h \ ./modules/physics/box2d/wrap_WheelJoint.cpp \ ./modules/physics/box2d/World.h \ ./modules/physics/box2d/wrap_Joint.h \ ./modules/physics/box2d/wrap_WeldJoint.cpp \ ./modules/physics/box2d/MotorJoint.h \ ./modules/physics/box2d/wrap_World.cpp \ ./modules/physics/box2d/wrap_PrismaticJoint.cpp \ ./modules/physics/box2d/wrap_PulleyJoint.cpp \ ./modules/physics/box2d/ChainShape.cpp \ ./modules/physics/box2d/wrap_MouseJoint.h \ ./modules/physics/box2d/PrismaticJoint.cpp \ ./modules/physics/box2d/WeldJoint.cpp \ ./modules/physics/box2d/Shape.cpp \ ./modules/physics/box2d/RevoluteJoint.cpp \ ./modules/physics/box2d/wrap_RopeJoint.cpp \ ./modules/physics/box2d/DistanceJoint.h \ ./modules/physics/box2d/Physics.h \ ./modules/physics/box2d/Body.h \ ./modules/physics/box2d/wrap_Contact.cpp \ ./modules/physics/box2d/PulleyJoint.h \ ./modules/physics/box2d/wrap_FrictionJoint.h \ ./modules/physics/box2d/Fixture.h \ ./modules/physics/box2d/Fixture.cpp \ ./modules/physics/box2d/Shape.h \ ./modules/physics/box2d/wrap_RevoluteJoint.cpp \ ./modules/physics/box2d/wrap_MotorJoint.h endif liblove_la_SOURCES += \ ./modules/physics/Joint.h \ ./modules/physics/Joint.cpp \ ./modules/physics/Body.cpp \ ./modules/physics/Shape.cpp \ ./modules/physics/Body.h \ ./modules/physics/Shape.h endif if LOVE_MODULE_SOUND if LOVE_IMPLEMENTATION_SOUND_LULLABY liblove_la_SOURCES += \ ./modules/sound/lullaby/WaveDecoder.cpp \ ./modules/sound/lullaby/Decoder.h \ ./modules/sound/lullaby/ModPlugDecoder.h \ ./modules/sound/lullaby/GmeDecoder.h \ ./modules/sound/lullaby/VorbisDecoder.h \ ./modules/sound/lullaby/VorbisDecoder.cpp \ ./modules/sound/lullaby/Decoder.cpp \ ./modules/sound/lullaby/WaveDecoder.h \ ./modules/sound/lullaby/ModPlugDecoder.cpp \ ./modules/sound/lullaby/GmeDecoder.cpp \ ./modules/sound/lullaby/Sound.h \ ./modules/sound/lullaby/Sound.cpp endif liblove_la_SOURCES += \ ./modules/sound/wrap_SoundData.h \ ./modules/sound/SoundData.h \ ./modules/sound/SoundData.cpp \ ./modules/sound/wrap_Sound.cpp \ ./modules/sound/Decoder.h \ ./modules/sound/wrap_SoundData.cpp \ ./modules/sound/wrap_Sound.h \ ./modules/sound/wrap_Decoder.cpp \ ./modules/sound/Sound.h \ ./modules/sound/wrap_Decoder.h \ ./modules/sound/Sound.cpp endif if LOVE_MODULE_SYSTEM if LOVE_IMPLEMENTATION_SYSTEM_SDL liblove_la_SOURCES += \ ./modules/system/sdl/System.h \ ./modules/system/sdl/System.cpp endif liblove_la_SOURCES += \ ./modules/system/wrap_System.h \ ./modules/system/System.h \ ./modules/system/System.cpp \ ./modules/system/wrap_System.cpp endif if LOVE_MODULE_THREAD if LOVE_IMPLEMENTATION_THREAD_SDL liblove_la_SOURCES += \ ./modules/thread/sdl/Thread.cpp \ ./modules/thread/sdl/threads.h \ ./modules/thread/sdl/Thread.h \ ./modules/thread/sdl/threads.cpp endif liblove_la_SOURCES += \ ./modules/thread/LuaThread.h \ ./modules/thread/ThreadModule.cpp \ ./modules/thread/Channel.h \ ./modules/thread/threads.h \ ./modules/thread/wrap_LuaThread.h \ ./modules/thread/ThreadModule.h \ ./modules/thread/Thread.h \ ./modules/thread/threads.cpp \ ./modules/thread/wrap_LuaThread.cpp \ ./modules/thread/Channel.cpp \ ./modules/thread/wrap_ThreadModule.h \ ./modules/thread/wrap_ThreadModule.cpp \ ./modules/thread/wrap_Channel.cpp \ ./modules/thread/LuaThread.cpp \ ./modules/thread/wrap_Channel.h endif if LOVE_MODULE_TIMER if LOVE_IMPLEMENTATION_TIMER_SDL liblove_la_SOURCES += \ ./modules/timer/sdl/Timer.cpp \ ./modules/timer/sdl/Timer.h endif liblove_la_SOURCES += \ ./modules/timer/wrap_Timer.cpp \ ./modules/timer/wrap_Timer.h \ ./modules/timer/Timer.h endif if LOVE_MODULE_WINDOW if LOVE_IMPLEMENTATION_WINDOW_SDL liblove_la_SOURCES += \ ./modules/window/sdl/Window.cpp \ ./modules/window/sdl/Window.h endif liblove_la_SOURCES += \ ./modules/window/Window.cpp \ ./modules/window/wrap_Window.h \ ./modules/window/wrap_Window.cpp \ ./modules/window/Window.h endif if LOVE_LIBRARY_BOX2D liblove_la_SOURCES += \ ./libraries/Box2D/Box2D.h \ ./libraries/Box2D/Collision/b2BroadPhase.cpp \ ./libraries/Box2D/Collision/b2CollideEdge.cpp \ ./libraries/Box2D/Collision/b2DynamicTree.cpp \ ./libraries/Box2D/Collision/b2TimeOfImpact.h \ ./libraries/Box2D/Collision/b2BroadPhase.h \ ./libraries/Box2D/Collision/b2CollideCircle.cpp \ ./libraries/Box2D/Collision/b2Distance.h \ ./libraries/Box2D/Collision/b2Collision.h \ ./libraries/Box2D/Collision/b2Collision.cpp \ ./libraries/Box2D/Collision/b2TimeOfImpact.cpp \ ./libraries/Box2D/Collision/b2CollidePolygon.cpp \ ./libraries/Box2D/Collision/b2Distance.cpp \ ./libraries/Box2D/Collision/b2DynamicTree.h \ ./libraries/Box2D/Collision/Shapes/b2CircleShape.h \ ./libraries/Box2D/Collision/Shapes/b2ChainShape.cpp \ ./libraries/Box2D/Collision/Shapes/b2PolygonShape.cpp \ ./libraries/Box2D/Collision/Shapes/b2EdgeShape.h \ ./libraries/Box2D/Collision/Shapes/b2Shape.h \ ./libraries/Box2D/Collision/Shapes/b2EdgeShape.cpp \ ./libraries/Box2D/Collision/Shapes/b2ChainShape.h \ ./libraries/Box2D/Collision/Shapes/b2PolygonShape.h \ ./libraries/Box2D/Collision/Shapes/b2CircleShape.cpp \ ./libraries/Box2D/Common/b2GrowableStack.h \ ./libraries/Box2D/Common/b2StackAllocator.cpp \ ./libraries/Box2D/Common/b2StackAllocator.h \ ./libraries/Box2D/Common/b2Draw.cpp \ ./libraries/Box2D/Common/b2Timer.h \ ./libraries/Box2D/Common/b2Settings.h \ ./libraries/Box2D/Common/b2BlockAllocator.cpp \ ./libraries/Box2D/Common/b2Math.cpp \ ./libraries/Box2D/Common/b2Draw.h \ ./libraries/Box2D/Common/b2Math.h \ ./libraries/Box2D/Common/b2Settings.cpp \ ./libraries/Box2D/Common/b2Timer.cpp \ ./libraries/Box2D/Common/b2BlockAllocator.h \ ./libraries/Box2D/Rope/b2Rope.cpp \ ./libraries/Box2D/Rope/b2Rope.h \ ./libraries/Box2D/Dynamics/Joints/b2Joint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2PulleyJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2RopeJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2PulleyJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2MotorJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2FrictionJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2FrictionJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2GearJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2MouseJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2WeldJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2GearJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2DistanceJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2WheelJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2MotorJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2Joint.h \ ./libraries/Box2D/Dynamics/Joints/b2WheelJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2MouseJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2WeldJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2RopeJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2DistanceJoint.cpp \ ./libraries/Box2D/Dynamics/b2WorldCallbacks.cpp \ ./libraries/Box2D/Dynamics/b2Island.cpp \ ./libraries/Box2D/Dynamics/b2World.cpp \ ./libraries/Box2D/Dynamics/b2Island.h \ ./libraries/Box2D/Dynamics/b2Body.h \ ./libraries/Box2D/Dynamics/b2TimeStep.h \ ./libraries/Box2D/Dynamics/Contacts/b2CircleContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2ContactSolver.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2PolygonContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2Contact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2PolygonContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2CircleContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2ContactSolver.h \ ./libraries/Box2D/Dynamics/Contacts/b2Contact.h \ ./libraries/Box2D/Dynamics/b2WorldCallbacks.h \ ./libraries/Box2D/Dynamics/b2ContactManager.cpp \ ./libraries/Box2D/Dynamics/b2World.h \ ./libraries/Box2D/Dynamics/b2Fixture.cpp \ ./libraries/Box2D/Dynamics/b2Fixture.h \ ./libraries/Box2D/Dynamics/b2ContactManager.h \ ./libraries/Box2D/Dynamics/b2Body.cpp endif if LOVE_LIBRARY_WUFF liblove_la_SOURCES += \ ./libraries/Wuff/wuff_convert.h \ ./libraries/Wuff/wuff_memory.c \ ./libraries/Wuff/wuff.h \ ./libraries/Wuff/wuff_internal.h \ ./libraries/Wuff/wuff_config.h \ ./libraries/Wuff/wuff_convert.c \ ./libraries/Wuff/wuff.c \ ./libraries/Wuff/wuff_internal.c endif if LOVE_LIBRARY_DDSPARSE liblove_la_SOURCES += \ ./libraries/ddsparse/ddsinfo.h \ ./libraries/ddsparse/ddsparse.cpp \ ./libraries/ddsparse/ddsparse.h endif if LOVE_LIBRARY_ENET liblove_la_SOURCES += \ ./libraries/enet/libenet/packet.c \ ./libraries/enet/libenet/protocol.c \ ./libraries/enet/libenet/win32.c \ ./libraries/enet/libenet/callbacks.c \ ./libraries/enet/libenet/list.c \ ./libraries/enet/libenet/include/enet/protocol.h \ ./libraries/enet/libenet/include/enet/enet.h \ ./libraries/enet/libenet/include/enet/callbacks.h \ ./libraries/enet/libenet/include/enet/list.h \ ./libraries/enet/libenet/include/enet/time.h \ ./libraries/enet/libenet/include/enet/types.h \ ./libraries/enet/libenet/include/enet/utility.h \ ./libraries/enet/libenet/include/enet/unix.h \ ./libraries/enet/libenet/include/enet/win32.h \ ./libraries/enet/libenet/compress.c \ ./libraries/enet/libenet/unix.c \ ./libraries/enet/libenet/peer.c \ ./libraries/enet/libenet/host.c \ ./libraries/enet/enet.cpp \ ./libraries/enet/lua-enet.h endif if LOVE_LIBRARY_LUASOCKET liblove_la_SOURCES += \ ./libraries/luasocket/luasocket.cpp \ ./libraries/luasocket/luasocket.h \ ./libraries/luasocket/libluasocket/buffer.h \ ./libraries/luasocket/libluasocket/url.lua.h \ ./libraries/luasocket/libluasocket/lua.h \ ./libraries/luasocket/libluasocket/timeout.h \ ./libraries/luasocket/libluasocket/options.h \ ./libraries/luasocket/libluasocket/auxiliar.h \ ./libraries/luasocket/libluasocket/udp.c \ ./libraries/luasocket/libluasocket/ltn12.lua.h \ ./libraries/luasocket/libluasocket/select.h \ ./libraries/luasocket/libluasocket/usocket.c \ ./libraries/luasocket/libluasocket/auxiliar.c \ ./libraries/luasocket/libluasocket/io.h \ ./libraries/luasocket/libluasocket/io.c \ ./libraries/luasocket/libluasocket/ftp.lua.h \ ./libraries/luasocket/libluasocket/select.c \ ./libraries/luasocket/libluasocket/inet.h \ ./libraries/luasocket/libluasocket/tcp.c \ ./libraries/luasocket/libluasocket/inet.c \ ./libraries/luasocket/libluasocket/udp.h \ ./libraries/luasocket/libluasocket/usocket.h \ ./libraries/luasocket/libluasocket/luasocket.h \ ./libraries/luasocket/libluasocket/http.lua.h \ ./libraries/luasocket/libluasocket/mime.h \ ./libraries/luasocket/libluasocket/options.c \ ./libraries/luasocket/libluasocket/unix.c \ ./libraries/luasocket/libluasocket/timeout.c \ ./libraries/luasocket/libluasocket/except.c \ ./libraries/luasocket/libluasocket/tcp.h \ ./libraries/luasocket/libluasocket/unix.h \ ./libraries/luasocket/libluasocket/socket.h \ ./libraries/luasocket/libluasocket/buffer.c \ ./libraries/luasocket/libluasocket/mime.c \ ./libraries/luasocket/libluasocket/socket.lua.h \ ./libraries/luasocket/libluasocket/luasocket.c \ ./libraries/luasocket/libluasocket/tp.lua.h \ ./libraries/luasocket/libluasocket/smtp.lua.h \ ./libraries/luasocket/libluasocket/mime.lua.h \ ./libraries/luasocket/libluasocket/except.h endif if LOVE_LIBRARY_NOISE1234 liblove_la_SOURCES += \ ./libraries/noise1234/simplexnoise1234.cpp \ ./libraries/noise1234/simplexnoise1234.h endif if LOVE_LIBRARY_UTF8 liblove_la_SOURCES += \ ./libraries/utf8/utf8/unchecked.h \ ./libraries/utf8/utf8/core.h \ ./libraries/utf8/utf8/checked.h \ ./libraries/utf8/utf8.h endif if !LOVE_NOMPG123 liblove_la_SOURCES += \ ./modules/sound/lullaby/Mpg123Decoder.cpp \ ./modules/sound/lullaby/Mpg123Decoder.h endif love-0.9.1/src/love.cpp0000644000000000000000000001304112316602166014726 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "modules/love/love.h" #include #ifdef LOVE_BUILD_EXE // Lua extern "C" { #include #include #include } #ifdef LOVE_WINDOWS #include #endif // LOVE_WINDOWS #ifdef LOVE_MACOSX #include "OSX.h" #endif // LOVE_MACOSX #ifdef LOVE_LEGENDARY_UTF8_ARGV_HACK void get_utf8_arguments(int &argc, char **&argv) { LPWSTR cmd = GetCommandLineW(); if (!cmd) return; LPWSTR *argv_w = CommandLineToArgvW(cmd, &argc); argv = new char *[argc]; for (int i = 0; i < argc; ++i) { // Size of wide char buffer (plus one for trailing '\0'). size_t wide_len = wcslen(argv_w[i]) + 1; // Get size in UTF-8. int utf8_size = WideCharToMultiByte(CP_UTF8, 0, argv_w[i], wide_len, argv[i], 0, 0, 0); argv[i] = new char[utf8_size]; // Convert to UTF-8. int ok = WideCharToMultiByte(CP_UTF8, 0, argv_w[i], wide_len, argv[i], utf8_size, 0, 0); int len = strlen(argv[i]); if (!ok) printf("Warning: could not convert to UTF8.\n"); } LocalFree(argv_w); } #endif // LOVE_LEGENDARY_UTF8_ARGV_HACK #ifdef LOVE_LEGENDARY_APP_ARGV_HACK #include static void get_app_arguments(int argc, char **argv, int &new_argc, char **&new_argv) { std::vector temp_argv; for (int i = 0; i < argc; i++) { // Don't copy -psn_xxx argument from argv. if (i == 0 || strncmp(argv[i], "-psn_", 5) != 0) temp_argv.push_back(std::string(argv[i])); } // Check for a drop file string. std::string dropfilestr = love::osx::checkDropEvents(); if (!dropfilestr.empty()) { temp_argv.insert(temp_argv.begin() + 1, dropfilestr); } else { // If it exists, add the love file in love.app/Contents/Resources/ to argv. std::string loveResourcesPath = love::osx::getLoveInResources(); if (!loveResourcesPath.empty()) { // Run in pseudo-fused mode. std::vector::iterator it = temp_argv.begin(); it = temp_argv.insert(it + 1, loveResourcesPath); temp_argv.insert(it + 1, std::string("--fused")); } } // Copy temp argv vector to new argv array. new_argc = (int) temp_argv.size(); new_argv = new char *[new_argc+1]; for (int i = 0; i < new_argc; i++) { new_argv[i] = new char[temp_argv[i].length() + 1]; strcpy(new_argv[i], temp_argv[i].c_str()); } new_argv[new_argc] = NULL; } #endif // LOVE_LEGENDARY_APP_ARGV_HACK static int love_preload(lua_State *L, lua_CFunction f, const char *name) { lua_getglobal(L, "package"); lua_getfield(L, -1, "preload"); lua_pushcfunction(L, f); lua_setfield(L, -2, name); lua_pop(L, 2); return 0; } int main(int argc, char **argv) { #ifdef LOVE_LEGENDARY_UTF8_ARGV_HACK int hack_argc = 0; char **hack_argv = 0; get_utf8_arguments(hack_argc, hack_argv); argc = hack_argc; argv = hack_argv; #endif // LOVE_LEGENDARY_UTF8_ARGV_HACK #ifdef LOVE_LEGENDARY_APP_ARGV_HACK int hack_argc = 0; char **hack_argv = 0; get_app_arguments(argc, argv, hack_argc, hack_argv); argc = hack_argc; argv = hack_argv; #endif // LOVE_LEGENDARY_APP_ARGV_HACK // Oh, you just want the version? Okay! if (argc > 1 && strcmp(argv[1], "--version") == 0) { printf("LOVE %s (%s)\n", love_version(), love_codename()); return 0; } // Create the virtual machine. lua_State *L = luaL_newstate(); luaL_openlibs(L); // Add love to package.preload for easy requiring. love_preload(L, luaopen_love, "love"); // Add command line arguments to global arg (like stand-alone Lua). { lua_newtable(L); if (argc > 0) { lua_pushstring(L, argv[0]); lua_rawseti(L, -2, -2); } lua_pushstring(L, "embedded boot.lua"); lua_rawseti(L, -2, -1); for (int i = 1; i < argc; i++) { lua_pushstring(L, argv[i]); lua_rawseti(L, -2, i); } lua_setglobal(L, "arg"); } // require "love" lua_getglobal(L, "require"); lua_pushstring(L, "love"); lua_call(L, 1, 1); // leave the returned table on the stack. // Add love.__exe = true. // This indicates that we're running the standalone version of love, and not // the library version. { lua_pushboolean(L, 1); lua_setfield(L, -2, "_exe"); } // Pop the love table returned by require "love". lua_pop(L, 1); // require "love.boot" (preloaded when love was required.) lua_getglobal(L, "require"); lua_pushstring(L, "love.boot"); lua_call(L, 1, 1); // Call the returned boot function. lua_call(L, 0, 1); int retval = 0; if (lua_isnumber(L, -1)) retval = (int) lua_tonumber(L, -1); lua_close(L); #if defined(LOVE_LEGENDARY_UTF8_ARGV_HACK) || defined(LOVE_LEGENDARY_APP_ARGV_HACK) if (hack_argv) { for (int i = 0; i/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @LOVE_BUILD_EXE_TRUE@bin_PROGRAMS = love$(EXEEXT) @LOVE_BUILD_EXE_TRUE@@LOVE_TARGET_OSX_TRUE@am__append_1 = \ @LOVE_BUILD_EXE_TRUE@@LOVE_TARGET_OSX_TRUE@ ../platform/macosx/OSX.h \ @LOVE_BUILD_EXE_TRUE@@LOVE_TARGET_OSX_TRUE@ ../platform/macosx/OSX.mm @LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE@@LOVE_MODULE_AUDIO_TRUE@am__append_2 = \ @LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/null/Audio.cpp \ @LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/null/Source.cpp \ @LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/null/Source.h \ @LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/null/Audio.h @LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE@@LOVE_MODULE_AUDIO_TRUE@am__append_3 = \ @LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/openal/Pool.cpp \ @LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/openal/Audio.cpp \ @LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/openal/Source.cpp \ @LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/openal/Source.h \ @LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/openal/Pool.h \ @LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/openal/Audio.h @LOVE_MODULE_AUDIO_TRUE@am__append_4 = \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/wrap_Audio.h \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/wrap_Source.cpp \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/Audio.cpp \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/Source.cpp \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/Source.h \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/wrap_Audio.cpp \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/wrap_Source.h \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/Audio.h @LOVE_IMPLEMENTATION_EVENT_SDL_TRUE@@LOVE_MODULE_EVENT_TRUE@am__append_5 = \ @LOVE_IMPLEMENTATION_EVENT_SDL_TRUE@@LOVE_MODULE_EVENT_TRUE@ ./modules/event/sdl/Event.h \ @LOVE_IMPLEMENTATION_EVENT_SDL_TRUE@@LOVE_MODULE_EVENT_TRUE@ ./modules/event/sdl/Event.cpp \ @LOVE_IMPLEMENTATION_EVENT_SDL_TRUE@@LOVE_MODULE_EVENT_TRUE@ ./modules/event/sdl/wrap_Event.h \ @LOVE_IMPLEMENTATION_EVENT_SDL_TRUE@@LOVE_MODULE_EVENT_TRUE@ ./modules/event/sdl/wrap_Event.cpp @LOVE_MODULE_EVENT_TRUE@am__append_6 = \ @LOVE_MODULE_EVENT_TRUE@ ./modules/event/Event.h \ @LOVE_MODULE_EVENT_TRUE@ ./modules/event/Event.cpp @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@am__append_7 = \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/Filesystem.h \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/wrap_File.h \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/wrap_FileData.cpp \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/File.cpp \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/wrap_File.cpp \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/wrap_Filesystem.cpp \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/wrap_Filesystem.h \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/wrap_FileData.h \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/File.h \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/Filesystem.cpp @LOVE_MODULE_FILESYSTEM_TRUE@am__append_8 = \ @LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/FileData.h \ @LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/FileData.cpp \ @LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/File.cpp \ @LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/File.h @LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE@@LOVE_MODULE_FONT_TRUE@am__append_9 = \ @LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE@@LOVE_MODULE_FONT_TRUE@ ./modules/font/freetype/Font.cpp \ @LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE@@LOVE_MODULE_FONT_TRUE@ ./modules/font/freetype/TrueTypeRasterizer.cpp \ @LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE@@LOVE_MODULE_FONT_TRUE@ ./modules/font/freetype/TrueTypeRasterizer.h \ @LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE@@LOVE_MODULE_FONT_TRUE@ ./modules/font/freetype/wrap_Font.h \ @LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE@@LOVE_MODULE_FONT_TRUE@ ./modules/font/freetype/Font.h \ @LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE@@LOVE_MODULE_FONT_TRUE@ ./modules/font/freetype/wrap_Font.cpp @LOVE_MODULE_FONT_TRUE@am__append_10 = \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/wrap_Rasterizer.cpp \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/wrap_Rasterizer.h \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/Rasterizer.cpp \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/Rasterizer.h \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/ImageRasterizer.h \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/GlyphData.h \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/GlyphData.cpp \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/wrap_GlyphData.h \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/Font.h \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/wrap_GlyphData.cpp \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/ImageRasterizer.cpp @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@am__append_11 = \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/VertexBuffer.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/SpriteBatch.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Quad.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/OpenGL.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Shader.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Font.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/GLee.c \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_SpriteBatch.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_SpriteBatch.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/OpenGL.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/VertexBuffer.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Texture.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Quad.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/ParticleSystem.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Mesh.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Shader.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Canvas.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Image.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Graphics.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/GLee.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Texture.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Image.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Graphics.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Canvas.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Image.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Shader.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Font.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Mesh.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Canvas.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_ParticleSystem.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Shader.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/ParticleSystem.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Mesh.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Graphics.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Image.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Texture.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Canvas.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Font.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Font.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Polyline.cpp \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/SpriteBatch.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Mesh.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Polyline.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_ParticleSystem.h \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Graphics.h @LOVE_MODULE_GRAPHICS_TRUE@am__append_12 = \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Texture.cpp \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Quad.cpp \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Graphics.h \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Color.h \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Graphics.cpp \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Quad.h \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Volatile.h \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Drawable.h \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Volatile.cpp \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Texture.h @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@am__append_13 = \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/ddsHandler.cpp \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/DevilHandler.h \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/FormatHandler.cpp \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/Image.cpp \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/CompressedData.h \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/ddsHandler.h \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/FormatHandler.h \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/Image.h \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/ImageData.cpp \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/ImageData.h \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/CompressedData.cpp \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/DevilHandler.cpp @LOVE_MODULE_IMAGE_TRUE@am__append_14 = \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/wrap_CompressedData.cpp \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/wrap_CompressedData.h \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/wrap_Image.h \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/CompressedData.h \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/wrap_Image.cpp \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/wrap_ImageData.cpp \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/Image.h \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/ImageData.cpp \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/ImageData.h \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/CompressedData.cpp \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/wrap_ImageData.h @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@am__append_15 = \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/wrap_JoystickModule.h \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/wrap_Joystick.cpp \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/wrap_Joystick.h \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/wrap_JoystickModule.cpp \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/JoystickModule.h \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/JoystickModule.cpp \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/Joystick.h \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/Joystick.cpp @LOVE_MODULE_JOYSTICK_TRUE@am__append_16 = \ @LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/JoystickModule.h \ @LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/Joystick.h \ @LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/Joystick.cpp @LOVE_IMPLEMENTATION_KEYBOARD_SDL_TRUE@@LOVE_MODULE_KEYBOARD_TRUE@am__append_17 = \ @LOVE_IMPLEMENTATION_KEYBOARD_SDL_TRUE@@LOVE_MODULE_KEYBOARD_TRUE@ ./modules/keyboard/sdl/Keyboard.h \ @LOVE_IMPLEMENTATION_KEYBOARD_SDL_TRUE@@LOVE_MODULE_KEYBOARD_TRUE@ ./modules/keyboard/sdl/Keyboard.cpp @LOVE_MODULE_KEYBOARD_TRUE@am__append_18 = \ @LOVE_MODULE_KEYBOARD_TRUE@ ./modules/keyboard/Keyboard.h \ @LOVE_MODULE_KEYBOARD_TRUE@ ./modules/keyboard/wrap_Keyboard.cpp \ @LOVE_MODULE_KEYBOARD_TRUE@ ./modules/keyboard/wrap_Keyboard.h \ @LOVE_MODULE_KEYBOARD_TRUE@ ./modules/keyboard/Keyboard.cpp @LOVE_MODULE_LOVE_TRUE@am__append_19 = \ @LOVE_MODULE_LOVE_TRUE@ ./modules/love/love.h \ @LOVE_MODULE_LOVE_TRUE@ ./modules/love/love.cpp @LOVE_MODULE_MATH_TRUE@am__append_20 = \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/wrap_BezierCurve.cpp \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/MathModule.h \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/RandomGenerator.h \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/wrap_RandomGenerator.h \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/BezierCurve.cpp \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/RandomGenerator.cpp \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/wrap_Math.h \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/BezierCurve.h \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/wrap_RandomGenerator.cpp \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/wrap_BezierCurve.h \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/MathModule.cpp \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/wrap_Math.cpp @LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE@@LOVE_MODULE_MOUSE_TRUE@am__append_21 = \ @LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE@@LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/sdl/Cursor.cpp \ @LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE@@LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/sdl/Mouse.h \ @LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE@@LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/sdl/Mouse.cpp \ @LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE@@LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/sdl/Cursor.h @LOVE_MODULE_MOUSE_TRUE@am__append_22 = \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/Cursor.cpp \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/Mouse.h \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/wrap_Mouse.cpp \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/Mouse.cpp \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/wrap_Mouse.h \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/wrap_Cursor.cpp \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/Cursor.h \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/wrap_Cursor.h @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@am__append_23 = \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_EdgeShape.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/EdgeShape.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Joint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_World.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Fixture.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/World.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_DistanceJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/DistanceJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_FrictionJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/RopeJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Shape.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Physics.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Joint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_DistanceJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Body.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_CircleShape.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_PulleyJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_PolygonShape.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/RevoluteJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Body.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_GearJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_WheelJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/MouseJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_MouseJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/GearJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_EdgeShape.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/FrictionJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_ChainShape.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Fixture.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_CircleShape.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Physics.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/WheelJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/CircleShape.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/RopeJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_WeldJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/ChainShape.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/PolygonShape.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/CircleShape.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_PolygonShape.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/PolygonShape.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/GearJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Joint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/MotorJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/MouseJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Body.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/EdgeShape.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Contact.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_PrismaticJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/PulleyJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_GearJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Shape.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/FrictionJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/WeldJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_RevoluteJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Physics.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_RopeJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_ChainShape.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_MotorJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/PrismaticJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/WheelJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Contact.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Contact.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_WheelJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/World.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Joint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_WeldJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/MotorJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_World.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_PrismaticJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_PulleyJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/ChainShape.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_MouseJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/PrismaticJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/WeldJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Shape.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/RevoluteJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_RopeJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/DistanceJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Physics.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Body.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Contact.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/PulleyJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_FrictionJoint.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Fixture.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Fixture.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Shape.h \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_RevoluteJoint.cpp \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_MotorJoint.h @LOVE_MODULE_PHYSICS_TRUE@am__append_24 = \ @LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/Joint.h \ @LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/Joint.cpp \ @LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/Body.cpp \ @LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/Shape.cpp \ @LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/Body.h \ @LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/Shape.h @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@am__append_25 = \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/WaveDecoder.cpp \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/Decoder.h \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/ModPlugDecoder.h \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/GmeDecoder.h \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/VorbisDecoder.h \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/VorbisDecoder.cpp \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/Decoder.cpp \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/WaveDecoder.h \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/ModPlugDecoder.cpp \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/GmeDecoder.cpp \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/Sound.h \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/Sound.cpp @LOVE_MODULE_SOUND_TRUE@am__append_26 = \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/wrap_SoundData.h \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/SoundData.h \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/SoundData.cpp \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/wrap_Sound.cpp \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/Decoder.h \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/wrap_SoundData.cpp \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/wrap_Sound.h \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/wrap_Decoder.cpp \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/Sound.h \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/wrap_Decoder.h \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/Sound.cpp @LOVE_IMPLEMENTATION_SYSTEM_SDL_TRUE@@LOVE_MODULE_SYSTEM_TRUE@am__append_27 = \ @LOVE_IMPLEMENTATION_SYSTEM_SDL_TRUE@@LOVE_MODULE_SYSTEM_TRUE@ ./modules/system/sdl/System.h \ @LOVE_IMPLEMENTATION_SYSTEM_SDL_TRUE@@LOVE_MODULE_SYSTEM_TRUE@ ./modules/system/sdl/System.cpp @LOVE_MODULE_SYSTEM_TRUE@am__append_28 = \ @LOVE_MODULE_SYSTEM_TRUE@ ./modules/system/wrap_System.h \ @LOVE_MODULE_SYSTEM_TRUE@ ./modules/system/System.h \ @LOVE_MODULE_SYSTEM_TRUE@ ./modules/system/System.cpp \ @LOVE_MODULE_SYSTEM_TRUE@ ./modules/system/wrap_System.cpp @LOVE_IMPLEMENTATION_THREAD_SDL_TRUE@@LOVE_MODULE_THREAD_TRUE@am__append_29 = \ @LOVE_IMPLEMENTATION_THREAD_SDL_TRUE@@LOVE_MODULE_THREAD_TRUE@ ./modules/thread/sdl/Thread.cpp \ @LOVE_IMPLEMENTATION_THREAD_SDL_TRUE@@LOVE_MODULE_THREAD_TRUE@ ./modules/thread/sdl/threads.h \ @LOVE_IMPLEMENTATION_THREAD_SDL_TRUE@@LOVE_MODULE_THREAD_TRUE@ ./modules/thread/sdl/Thread.h \ @LOVE_IMPLEMENTATION_THREAD_SDL_TRUE@@LOVE_MODULE_THREAD_TRUE@ ./modules/thread/sdl/threads.cpp @LOVE_MODULE_THREAD_TRUE@am__append_30 = \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/LuaThread.h \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/ThreadModule.cpp \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/Channel.h \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/threads.h \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/wrap_LuaThread.h \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/ThreadModule.h \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/Thread.h \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/threads.cpp \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/wrap_LuaThread.cpp \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/Channel.cpp \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/wrap_ThreadModule.h \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/wrap_ThreadModule.cpp \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/wrap_Channel.cpp \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/LuaThread.cpp \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/wrap_Channel.h @LOVE_IMPLEMENTATION_TIMER_SDL_TRUE@@LOVE_MODULE_TIMER_TRUE@am__append_31 = \ @LOVE_IMPLEMENTATION_TIMER_SDL_TRUE@@LOVE_MODULE_TIMER_TRUE@ ./modules/timer/sdl/Timer.cpp \ @LOVE_IMPLEMENTATION_TIMER_SDL_TRUE@@LOVE_MODULE_TIMER_TRUE@ ./modules/timer/sdl/Timer.h @LOVE_MODULE_TIMER_TRUE@am__append_32 = \ @LOVE_MODULE_TIMER_TRUE@ ./modules/timer/wrap_Timer.cpp \ @LOVE_MODULE_TIMER_TRUE@ ./modules/timer/wrap_Timer.h \ @LOVE_MODULE_TIMER_TRUE@ ./modules/timer/Timer.h @LOVE_IMPLEMENTATION_WINDOW_SDL_TRUE@@LOVE_MODULE_WINDOW_TRUE@am__append_33 = \ @LOVE_IMPLEMENTATION_WINDOW_SDL_TRUE@@LOVE_MODULE_WINDOW_TRUE@ ./modules/window/sdl/Window.cpp \ @LOVE_IMPLEMENTATION_WINDOW_SDL_TRUE@@LOVE_MODULE_WINDOW_TRUE@ ./modules/window/sdl/Window.h @LOVE_MODULE_WINDOW_TRUE@am__append_34 = \ @LOVE_MODULE_WINDOW_TRUE@ ./modules/window/Window.cpp \ @LOVE_MODULE_WINDOW_TRUE@ ./modules/window/wrap_Window.h \ @LOVE_MODULE_WINDOW_TRUE@ ./modules/window/wrap_Window.cpp \ @LOVE_MODULE_WINDOW_TRUE@ ./modules/window/Window.h @LOVE_LIBRARY_BOX2D_TRUE@am__append_35 = \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Box2D.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2BroadPhase.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2CollideEdge.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2DynamicTree.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2TimeOfImpact.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2BroadPhase.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2CollideCircle.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2Distance.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2Collision.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2Collision.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2TimeOfImpact.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2CollidePolygon.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2Distance.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2DynamicTree.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2CircleShape.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2ChainShape.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2PolygonShape.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2EdgeShape.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2Shape.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2EdgeShape.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2ChainShape.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2PolygonShape.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2CircleShape.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2GrowableStack.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2StackAllocator.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2StackAllocator.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Draw.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Timer.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Settings.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2BlockAllocator.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Math.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Draw.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Math.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Settings.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Timer.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2BlockAllocator.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Rope/b2Rope.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Rope/b2Rope.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2Joint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2PulleyJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2RopeJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2PulleyJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2MotorJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2FrictionJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2FrictionJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2GearJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2MouseJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2WeldJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2GearJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2DistanceJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2WheelJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2MotorJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2Joint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2WheelJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2MouseJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2WeldJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2RopeJoint.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2DistanceJoint.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2WorldCallbacks.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2Island.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2World.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2Island.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2Body.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2TimeStep.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2CircleContact.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2ContactSolver.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2PolygonContact.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2Contact.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2PolygonContact.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2CircleContact.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2ContactSolver.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2Contact.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2WorldCallbacks.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2ContactManager.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2World.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2Fixture.cpp \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2Fixture.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2ContactManager.h \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2Body.cpp @LOVE_LIBRARY_WUFF_TRUE@am__append_36 = \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff_convert.h \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff_memory.c \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff.h \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff_internal.h \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff_config.h \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff_convert.c \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff.c \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff_internal.c @LOVE_LIBRARY_DDSPARSE_TRUE@am__append_37 = \ @LOVE_LIBRARY_DDSPARSE_TRUE@ ./libraries/ddsparse/ddsinfo.h \ @LOVE_LIBRARY_DDSPARSE_TRUE@ ./libraries/ddsparse/ddsparse.cpp \ @LOVE_LIBRARY_DDSPARSE_TRUE@ ./libraries/ddsparse/ddsparse.h @LOVE_LIBRARY_ENET_TRUE@am__append_38 = \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/packet.c \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/protocol.c \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/win32.c \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/callbacks.c \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/list.c \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/include/enet/protocol.h \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/include/enet/enet.h \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/include/enet/callbacks.h \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/include/enet/list.h \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/include/enet/time.h \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/include/enet/types.h \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/include/enet/utility.h \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/include/enet/unix.h \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/include/enet/win32.h \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/compress.c \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/unix.c \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/peer.c \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/host.c \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/enet.cpp \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/lua-enet.h @LOVE_LIBRARY_LUASOCKET_TRUE@am__append_39 = \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/luasocket.cpp \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/luasocket.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/buffer.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/url.lua.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/lua.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/timeout.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/options.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/auxiliar.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/udp.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/ltn12.lua.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/select.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/usocket.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/auxiliar.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/io.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/io.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/ftp.lua.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/select.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/inet.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/tcp.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/inet.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/udp.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/usocket.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/luasocket.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/http.lua.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/mime.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/options.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/unix.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/timeout.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/except.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/tcp.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/unix.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/socket.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/buffer.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/mime.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/socket.lua.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/luasocket.c \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/tp.lua.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/smtp.lua.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/mime.lua.h \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/except.h @LOVE_LIBRARY_NOISE1234_TRUE@am__append_40 = \ @LOVE_LIBRARY_NOISE1234_TRUE@ ./libraries/noise1234/simplexnoise1234.cpp \ @LOVE_LIBRARY_NOISE1234_TRUE@ ./libraries/noise1234/simplexnoise1234.h @LOVE_LIBRARY_UTF8_TRUE@am__append_41 = \ @LOVE_LIBRARY_UTF8_TRUE@ ./libraries/utf8/utf8/unchecked.h \ @LOVE_LIBRARY_UTF8_TRUE@ ./libraries/utf8/utf8/core.h \ @LOVE_LIBRARY_UTF8_TRUE@ ./libraries/utf8/utf8/checked.h \ @LOVE_LIBRARY_UTF8_TRUE@ ./libraries/utf8/utf8.h @LOVE_NOMPG123_FALSE@am__append_42 = \ @LOVE_NOMPG123_FALSE@ ./modules/sound/lullaby/Mpg123Decoder.cpp \ @LOVE_NOMPG123_FALSE@ ./modules/sound/lullaby/Mpg123Decoder.h subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure-modules.ac \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = liblove_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am__liblove_la_SOURCES_DIST = ./common/Module.cpp ./common/runtime.cpp \ ./common/utf8.cpp ./common/wrap_Data.h ./common/Object.cpp \ ./common/b64.cpp ./common/Data.h ./common/StringMap.h \ ./common/Matrix.cpp ./common/Object.h ./common/Memoizer.cpp \ ./common/int.h ./common/Exception.cpp ./common/Variant.h \ ./common/b64.h ./common/Memoizer.h ./common/EnumMap.h \ ./common/Reference.cpp ./common/types.h ./common/Vector.h \ ./common/version.h ./common/Matrix.h ./common/delay.cpp \ ./common/Reference.h ./common/wrap_Data.cpp \ ./common/Variant.cpp ./common/Vector.cpp ./common/runtime.h \ ./common/delay.h ./common/Module.h ./common/math.h \ ./common/config.h ./common/Exception.h ./common/utf8.h \ ./scripts/boot.lua.h ./scripts/graphics.lua.h \ ./modules/audio/null/Audio.cpp ./modules/audio/null/Source.cpp \ ./modules/audio/null/Source.h ./modules/audio/null/Audio.h \ ./modules/audio/openal/Pool.cpp \ ./modules/audio/openal/Audio.cpp \ ./modules/audio/openal/Source.cpp \ ./modules/audio/openal/Source.h ./modules/audio/openal/Pool.h \ ./modules/audio/openal/Audio.h ./modules/audio/wrap_Audio.h \ ./modules/audio/wrap_Source.cpp ./modules/audio/Audio.cpp \ ./modules/audio/Source.cpp ./modules/audio/Source.h \ ./modules/audio/wrap_Audio.cpp ./modules/audio/wrap_Source.h \ ./modules/audio/Audio.h ./modules/event/sdl/Event.h \ ./modules/event/sdl/Event.cpp ./modules/event/sdl/wrap_Event.h \ ./modules/event/sdl/wrap_Event.cpp ./modules/event/Event.h \ ./modules/event/Event.cpp \ ./modules/filesystem/physfs/Filesystem.h \ ./modules/filesystem/physfs/wrap_File.h \ ./modules/filesystem/physfs/wrap_FileData.cpp \ ./modules/filesystem/physfs/File.cpp \ ./modules/filesystem/physfs/wrap_File.cpp \ ./modules/filesystem/physfs/wrap_Filesystem.cpp \ ./modules/filesystem/physfs/wrap_Filesystem.h \ ./modules/filesystem/physfs/wrap_FileData.h \ ./modules/filesystem/physfs/File.h \ ./modules/filesystem/physfs/Filesystem.cpp \ ./modules/filesystem/FileData.h \ ./modules/filesystem/FileData.cpp \ ./modules/filesystem/File.cpp ./modules/filesystem/File.h \ ./modules/font/freetype/Font.cpp \ ./modules/font/freetype/TrueTypeRasterizer.cpp \ ./modules/font/freetype/TrueTypeRasterizer.h \ ./modules/font/freetype/wrap_Font.h \ ./modules/font/freetype/Font.h \ ./modules/font/freetype/wrap_Font.cpp \ ./modules/font/wrap_Rasterizer.cpp \ ./modules/font/wrap_Rasterizer.h ./modules/font/Rasterizer.cpp \ ./modules/font/Rasterizer.h ./modules/font/ImageRasterizer.h \ ./modules/font/GlyphData.h ./modules/font/GlyphData.cpp \ ./modules/font/wrap_GlyphData.h ./modules/font/Font.h \ ./modules/font/wrap_GlyphData.cpp \ ./modules/font/ImageRasterizer.cpp \ ./modules/graphics/opengl/VertexBuffer.cpp \ ./modules/graphics/opengl/SpriteBatch.cpp \ ./modules/graphics/opengl/wrap_Quad.cpp \ ./modules/graphics/opengl/OpenGL.h \ ./modules/graphics/opengl/wrap_Shader.h \ ./modules/graphics/opengl/Font.cpp \ ./modules/graphics/opengl/GLee.c \ ./modules/graphics/opengl/wrap_SpriteBatch.cpp \ ./modules/graphics/opengl/wrap_SpriteBatch.h \ ./modules/graphics/opengl/OpenGL.cpp \ ./modules/graphics/opengl/VertexBuffer.h \ ./modules/graphics/opengl/wrap_Texture.h \ ./modules/graphics/opengl/wrap_Quad.h \ ./modules/graphics/opengl/ParticleSystem.cpp \ ./modules/graphics/opengl/wrap_Mesh.cpp \ ./modules/graphics/opengl/wrap_Shader.cpp \ ./modules/graphics/opengl/Canvas.h \ ./modules/graphics/opengl/wrap_Image.h \ ./modules/graphics/opengl/Graphics.h \ ./modules/graphics/opengl/GLee.h \ ./modules/graphics/opengl/wrap_Texture.cpp \ ./modules/graphics/opengl/Image.cpp \ ./modules/graphics/opengl/Graphics.cpp \ ./modules/graphics/opengl/Canvas.cpp \ ./modules/graphics/opengl/wrap_Image.cpp \ ./modules/graphics/opengl/Shader.cpp \ ./modules/graphics/opengl/wrap_Font.h \ ./modules/graphics/opengl/Mesh.cpp \ ./modules/graphics/opengl/wrap_Canvas.cpp \ ./modules/graphics/opengl/wrap_ParticleSystem.cpp \ ./modules/graphics/opengl/Shader.h \ ./modules/graphics/opengl/ParticleSystem.h \ ./modules/graphics/opengl/Mesh.h \ ./modules/graphics/opengl/wrap_Graphics.cpp \ ./modules/graphics/opengl/Image.h \ ./modules/graphics/opengl/Texture.h \ ./modules/graphics/opengl/wrap_Canvas.h \ ./modules/graphics/opengl/Font.h \ ./modules/graphics/opengl/wrap_Font.cpp \ ./modules/graphics/opengl/Polyline.cpp \ ./modules/graphics/opengl/SpriteBatch.h \ ./modules/graphics/opengl/wrap_Mesh.h \ ./modules/graphics/opengl/Polyline.h \ ./modules/graphics/opengl/wrap_ParticleSystem.h \ ./modules/graphics/opengl/wrap_Graphics.h \ ./modules/graphics/Texture.cpp ./modules/graphics/Quad.cpp \ ./modules/graphics/Graphics.h ./modules/graphics/Color.h \ ./modules/graphics/Graphics.cpp ./modules/graphics/Quad.h \ ./modules/graphics/Volatile.h ./modules/graphics/Drawable.h \ ./modules/graphics/Volatile.cpp ./modules/graphics/Texture.h \ ./modules/image/magpie/ddsHandler.cpp \ ./modules/image/magpie/DevilHandler.h \ ./modules/image/magpie/FormatHandler.cpp \ ./modules/image/magpie/Image.cpp \ ./modules/image/magpie/CompressedData.h \ ./modules/image/magpie/ddsHandler.h \ ./modules/image/magpie/FormatHandler.h \ ./modules/image/magpie/Image.h \ ./modules/image/magpie/ImageData.cpp \ ./modules/image/magpie/ImageData.h \ ./modules/image/magpie/CompressedData.cpp \ ./modules/image/magpie/DevilHandler.cpp \ ./modules/image/wrap_CompressedData.cpp \ ./modules/image/wrap_CompressedData.h \ ./modules/image/wrap_Image.h ./modules/image/CompressedData.h \ ./modules/image/wrap_Image.cpp \ ./modules/image/wrap_ImageData.cpp ./modules/image/Image.h \ ./modules/image/ImageData.cpp ./modules/image/ImageData.h \ ./modules/image/CompressedData.cpp \ ./modules/image/wrap_ImageData.h \ ./modules/joystick/sdl/wrap_JoystickModule.h \ ./modules/joystick/sdl/wrap_Joystick.cpp \ ./modules/joystick/sdl/wrap_Joystick.h \ ./modules/joystick/sdl/wrap_JoystickModule.cpp \ ./modules/joystick/sdl/JoystickModule.h \ ./modules/joystick/sdl/JoystickModule.cpp \ ./modules/joystick/sdl/Joystick.h \ ./modules/joystick/sdl/Joystick.cpp \ ./modules/joystick/JoystickModule.h \ ./modules/joystick/Joystick.h ./modules/joystick/Joystick.cpp \ ./modules/keyboard/sdl/Keyboard.h \ ./modules/keyboard/sdl/Keyboard.cpp \ ./modules/keyboard/Keyboard.h \ ./modules/keyboard/wrap_Keyboard.cpp \ ./modules/keyboard/wrap_Keyboard.h \ ./modules/keyboard/Keyboard.cpp ./modules/love/love.h \ ./modules/love/love.cpp ./modules/math/wrap_BezierCurve.cpp \ ./modules/math/MathModule.h ./modules/math/RandomGenerator.h \ ./modules/math/wrap_RandomGenerator.h \ ./modules/math/BezierCurve.cpp \ ./modules/math/RandomGenerator.cpp ./modules/math/wrap_Math.h \ ./modules/math/BezierCurve.h \ ./modules/math/wrap_RandomGenerator.cpp \ ./modules/math/wrap_BezierCurve.h \ ./modules/math/MathModule.cpp ./modules/math/wrap_Math.cpp \ ./modules/mouse/sdl/Cursor.cpp ./modules/mouse/sdl/Mouse.h \ ./modules/mouse/sdl/Mouse.cpp ./modules/mouse/sdl/Cursor.h \ ./modules/mouse/Cursor.cpp ./modules/mouse/Mouse.h \ ./modules/mouse/wrap_Mouse.cpp ./modules/mouse/Mouse.cpp \ ./modules/mouse/wrap_Mouse.h ./modules/mouse/wrap_Cursor.cpp \ ./modules/mouse/Cursor.h ./modules/mouse/wrap_Cursor.h \ ./modules/physics/box2d/wrap_EdgeShape.h \ ./modules/physics/box2d/EdgeShape.cpp \ ./modules/physics/box2d/Joint.h \ ./modules/physics/box2d/wrap_World.h \ ./modules/physics/box2d/wrap_Fixture.cpp \ ./modules/physics/box2d/World.cpp \ ./modules/physics/box2d/wrap_DistanceJoint.cpp \ ./modules/physics/box2d/DistanceJoint.cpp \ ./modules/physics/box2d/wrap_FrictionJoint.cpp \ ./modules/physics/box2d/RopeJoint.h \ ./modules/physics/box2d/wrap_Shape.cpp \ ./modules/physics/box2d/Physics.cpp \ ./modules/physics/box2d/Joint.cpp \ ./modules/physics/box2d/wrap_DistanceJoint.h \ ./modules/physics/box2d/wrap_Body.h \ ./modules/physics/box2d/wrap_CircleShape.cpp \ ./modules/physics/box2d/wrap_PulleyJoint.h \ ./modules/physics/box2d/wrap_PolygonShape.h \ ./modules/physics/box2d/RevoluteJoint.h \ ./modules/physics/box2d/Body.cpp \ ./modules/physics/box2d/wrap_GearJoint.cpp \ ./modules/physics/box2d/wrap_WheelJoint.h \ ./modules/physics/box2d/MouseJoint.h \ ./modules/physics/box2d/wrap_MouseJoint.cpp \ ./modules/physics/box2d/GearJoint.cpp \ ./modules/physics/box2d/wrap_EdgeShape.cpp \ ./modules/physics/box2d/FrictionJoint.cpp \ ./modules/physics/box2d/wrap_ChainShape.cpp \ ./modules/physics/box2d/wrap_Fixture.h \ ./modules/physics/box2d/wrap_CircleShape.h \ ./modules/physics/box2d/wrap_Physics.cpp \ ./modules/physics/box2d/WheelJoint.cpp \ ./modules/physics/box2d/CircleShape.h \ ./modules/physics/box2d/RopeJoint.cpp \ ./modules/physics/box2d/wrap_WeldJoint.h \ ./modules/physics/box2d/ChainShape.h \ ./modules/physics/box2d/PolygonShape.cpp \ ./modules/physics/box2d/CircleShape.cpp \ ./modules/physics/box2d/wrap_PolygonShape.cpp \ ./modules/physics/box2d/PolygonShape.h \ ./modules/physics/box2d/GearJoint.h \ ./modules/physics/box2d/wrap_Joint.cpp \ ./modules/physics/box2d/MotorJoint.cpp \ ./modules/physics/box2d/MouseJoint.cpp \ ./modules/physics/box2d/wrap_Body.cpp \ ./modules/physics/box2d/EdgeShape.h \ ./modules/physics/box2d/Contact.cpp \ ./modules/physics/box2d/wrap_PrismaticJoint.h \ ./modules/physics/box2d/PulleyJoint.cpp \ ./modules/physics/box2d/wrap_GearJoint.h \ ./modules/physics/box2d/wrap_Shape.h \ ./modules/physics/box2d/FrictionJoint.h \ ./modules/physics/box2d/WeldJoint.h \ ./modules/physics/box2d/wrap_RevoluteJoint.h \ ./modules/physics/box2d/wrap_Physics.h \ ./modules/physics/box2d/wrap_RopeJoint.h \ ./modules/physics/box2d/wrap_ChainShape.h \ ./modules/physics/box2d/wrap_MotorJoint.cpp \ ./modules/physics/box2d/PrismaticJoint.h \ ./modules/physics/box2d/WheelJoint.h \ ./modules/physics/box2d/Contact.h \ ./modules/physics/box2d/wrap_Contact.h \ ./modules/physics/box2d/wrap_WheelJoint.cpp \ ./modules/physics/box2d/World.h \ ./modules/physics/box2d/wrap_Joint.h \ ./modules/physics/box2d/wrap_WeldJoint.cpp \ ./modules/physics/box2d/MotorJoint.h \ ./modules/physics/box2d/wrap_World.cpp \ ./modules/physics/box2d/wrap_PrismaticJoint.cpp \ ./modules/physics/box2d/wrap_PulleyJoint.cpp \ ./modules/physics/box2d/ChainShape.cpp \ ./modules/physics/box2d/wrap_MouseJoint.h \ ./modules/physics/box2d/PrismaticJoint.cpp \ ./modules/physics/box2d/WeldJoint.cpp \ ./modules/physics/box2d/Shape.cpp \ ./modules/physics/box2d/RevoluteJoint.cpp \ ./modules/physics/box2d/wrap_RopeJoint.cpp \ ./modules/physics/box2d/DistanceJoint.h \ ./modules/physics/box2d/Physics.h \ ./modules/physics/box2d/Body.h \ ./modules/physics/box2d/wrap_Contact.cpp \ ./modules/physics/box2d/PulleyJoint.h \ ./modules/physics/box2d/wrap_FrictionJoint.h \ ./modules/physics/box2d/Fixture.h \ ./modules/physics/box2d/Fixture.cpp \ ./modules/physics/box2d/Shape.h \ ./modules/physics/box2d/wrap_RevoluteJoint.cpp \ ./modules/physics/box2d/wrap_MotorJoint.h \ ./modules/physics/Joint.h ./modules/physics/Joint.cpp \ ./modules/physics/Body.cpp ./modules/physics/Shape.cpp \ ./modules/physics/Body.h ./modules/physics/Shape.h \ ./modules/sound/lullaby/WaveDecoder.cpp \ ./modules/sound/lullaby/Decoder.h \ ./modules/sound/lullaby/ModPlugDecoder.h \ ./modules/sound/lullaby/GmeDecoder.h \ ./modules/sound/lullaby/VorbisDecoder.h \ ./modules/sound/lullaby/VorbisDecoder.cpp \ ./modules/sound/lullaby/Decoder.cpp \ ./modules/sound/lullaby/WaveDecoder.h \ ./modules/sound/lullaby/ModPlugDecoder.cpp \ ./modules/sound/lullaby/GmeDecoder.cpp \ ./modules/sound/lullaby/Sound.h \ ./modules/sound/lullaby/Sound.cpp \ ./modules/sound/wrap_SoundData.h ./modules/sound/SoundData.h \ ./modules/sound/SoundData.cpp ./modules/sound/wrap_Sound.cpp \ ./modules/sound/Decoder.h ./modules/sound/wrap_SoundData.cpp \ ./modules/sound/wrap_Sound.h ./modules/sound/wrap_Decoder.cpp \ ./modules/sound/Sound.h ./modules/sound/wrap_Decoder.h \ ./modules/sound/Sound.cpp ./modules/system/sdl/System.h \ ./modules/system/sdl/System.cpp ./modules/system/wrap_System.h \ ./modules/system/System.h ./modules/system/System.cpp \ ./modules/system/wrap_System.cpp \ ./modules/thread/sdl/Thread.cpp ./modules/thread/sdl/threads.h \ ./modules/thread/sdl/Thread.h ./modules/thread/sdl/threads.cpp \ ./modules/thread/LuaThread.h ./modules/thread/ThreadModule.cpp \ ./modules/thread/Channel.h ./modules/thread/threads.h \ ./modules/thread/wrap_LuaThread.h \ ./modules/thread/ThreadModule.h ./modules/thread/Thread.h \ ./modules/thread/threads.cpp \ ./modules/thread/wrap_LuaThread.cpp \ ./modules/thread/Channel.cpp \ ./modules/thread/wrap_ThreadModule.h \ ./modules/thread/wrap_ThreadModule.cpp \ ./modules/thread/wrap_Channel.cpp \ ./modules/thread/LuaThread.cpp ./modules/thread/wrap_Channel.h \ ./modules/timer/sdl/Timer.cpp ./modules/timer/sdl/Timer.h \ ./modules/timer/wrap_Timer.cpp ./modules/timer/wrap_Timer.h \ ./modules/timer/Timer.h ./modules/window/sdl/Window.cpp \ ./modules/window/sdl/Window.h ./modules/window/Window.cpp \ ./modules/window/wrap_Window.h \ ./modules/window/wrap_Window.cpp ./modules/window/Window.h \ ./libraries/Box2D/Box2D.h \ ./libraries/Box2D/Collision/b2BroadPhase.cpp \ ./libraries/Box2D/Collision/b2CollideEdge.cpp \ ./libraries/Box2D/Collision/b2DynamicTree.cpp \ ./libraries/Box2D/Collision/b2TimeOfImpact.h \ ./libraries/Box2D/Collision/b2BroadPhase.h \ ./libraries/Box2D/Collision/b2CollideCircle.cpp \ ./libraries/Box2D/Collision/b2Distance.h \ ./libraries/Box2D/Collision/b2Collision.h \ ./libraries/Box2D/Collision/b2Collision.cpp \ ./libraries/Box2D/Collision/b2TimeOfImpact.cpp \ ./libraries/Box2D/Collision/b2CollidePolygon.cpp \ ./libraries/Box2D/Collision/b2Distance.cpp \ ./libraries/Box2D/Collision/b2DynamicTree.h \ ./libraries/Box2D/Collision/Shapes/b2CircleShape.h \ ./libraries/Box2D/Collision/Shapes/b2ChainShape.cpp \ ./libraries/Box2D/Collision/Shapes/b2PolygonShape.cpp \ ./libraries/Box2D/Collision/Shapes/b2EdgeShape.h \ ./libraries/Box2D/Collision/Shapes/b2Shape.h \ ./libraries/Box2D/Collision/Shapes/b2EdgeShape.cpp \ ./libraries/Box2D/Collision/Shapes/b2ChainShape.h \ ./libraries/Box2D/Collision/Shapes/b2PolygonShape.h \ ./libraries/Box2D/Collision/Shapes/b2CircleShape.cpp \ ./libraries/Box2D/Common/b2GrowableStack.h \ ./libraries/Box2D/Common/b2StackAllocator.cpp \ ./libraries/Box2D/Common/b2StackAllocator.h \ ./libraries/Box2D/Common/b2Draw.cpp \ ./libraries/Box2D/Common/b2Timer.h \ ./libraries/Box2D/Common/b2Settings.h \ ./libraries/Box2D/Common/b2BlockAllocator.cpp \ ./libraries/Box2D/Common/b2Math.cpp \ ./libraries/Box2D/Common/b2Draw.h \ ./libraries/Box2D/Common/b2Math.h \ ./libraries/Box2D/Common/b2Settings.cpp \ ./libraries/Box2D/Common/b2Timer.cpp \ ./libraries/Box2D/Common/b2BlockAllocator.h \ ./libraries/Box2D/Rope/b2Rope.cpp \ ./libraries/Box2D/Rope/b2Rope.h \ ./libraries/Box2D/Dynamics/Joints/b2Joint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2PulleyJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2RopeJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2PulleyJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2MotorJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2FrictionJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2FrictionJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2GearJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2MouseJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2WeldJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2GearJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2DistanceJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2WheelJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2MotorJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2Joint.h \ ./libraries/Box2D/Dynamics/Joints/b2WheelJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2MouseJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp \ ./libraries/Box2D/Dynamics/Joints/b2WeldJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2RopeJoint.h \ ./libraries/Box2D/Dynamics/Joints/b2DistanceJoint.cpp \ ./libraries/Box2D/Dynamics/b2WorldCallbacks.cpp \ ./libraries/Box2D/Dynamics/b2Island.cpp \ ./libraries/Box2D/Dynamics/b2World.cpp \ ./libraries/Box2D/Dynamics/b2Island.h \ ./libraries/Box2D/Dynamics/b2Body.h \ ./libraries/Box2D/Dynamics/b2TimeStep.h \ ./libraries/Box2D/Dynamics/Contacts/b2CircleContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2ContactSolver.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2PolygonContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2Contact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2PolygonContact.cpp \ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2CircleContact.h \ ./libraries/Box2D/Dynamics/Contacts/b2ContactSolver.h \ ./libraries/Box2D/Dynamics/Contacts/b2Contact.h \ ./libraries/Box2D/Dynamics/b2WorldCallbacks.h \ ./libraries/Box2D/Dynamics/b2ContactManager.cpp \ ./libraries/Box2D/Dynamics/b2World.h \ ./libraries/Box2D/Dynamics/b2Fixture.cpp \ ./libraries/Box2D/Dynamics/b2Fixture.h \ ./libraries/Box2D/Dynamics/b2ContactManager.h \ ./libraries/Box2D/Dynamics/b2Body.cpp \ ./libraries/Wuff/wuff_convert.h ./libraries/Wuff/wuff_memory.c \ ./libraries/Wuff/wuff.h ./libraries/Wuff/wuff_internal.h \ ./libraries/Wuff/wuff_config.h ./libraries/Wuff/wuff_convert.c \ ./libraries/Wuff/wuff.c ./libraries/Wuff/wuff_internal.c \ ./libraries/ddsparse/ddsinfo.h \ ./libraries/ddsparse/ddsparse.cpp \ ./libraries/ddsparse/ddsparse.h \ ./libraries/enet/libenet/packet.c \ ./libraries/enet/libenet/protocol.c \ ./libraries/enet/libenet/win32.c \ ./libraries/enet/libenet/callbacks.c \ ./libraries/enet/libenet/list.c \ ./libraries/enet/libenet/include/enet/protocol.h \ ./libraries/enet/libenet/include/enet/enet.h \ ./libraries/enet/libenet/include/enet/callbacks.h \ ./libraries/enet/libenet/include/enet/list.h \ ./libraries/enet/libenet/include/enet/time.h \ ./libraries/enet/libenet/include/enet/types.h \ ./libraries/enet/libenet/include/enet/utility.h \ ./libraries/enet/libenet/include/enet/unix.h \ ./libraries/enet/libenet/include/enet/win32.h \ ./libraries/enet/libenet/compress.c \ ./libraries/enet/libenet/unix.c \ ./libraries/enet/libenet/peer.c \ ./libraries/enet/libenet/host.c ./libraries/enet/enet.cpp \ ./libraries/enet/lua-enet.h \ ./libraries/luasocket/luasocket.cpp \ ./libraries/luasocket/luasocket.h \ ./libraries/luasocket/libluasocket/buffer.h \ ./libraries/luasocket/libluasocket/url.lua.h \ ./libraries/luasocket/libluasocket/lua.h \ ./libraries/luasocket/libluasocket/timeout.h \ ./libraries/luasocket/libluasocket/options.h \ ./libraries/luasocket/libluasocket/auxiliar.h \ ./libraries/luasocket/libluasocket/udp.c \ ./libraries/luasocket/libluasocket/ltn12.lua.h \ ./libraries/luasocket/libluasocket/select.h \ ./libraries/luasocket/libluasocket/usocket.c \ ./libraries/luasocket/libluasocket/auxiliar.c \ ./libraries/luasocket/libluasocket/io.h \ ./libraries/luasocket/libluasocket/io.c \ ./libraries/luasocket/libluasocket/ftp.lua.h \ ./libraries/luasocket/libluasocket/select.c \ ./libraries/luasocket/libluasocket/inet.h \ ./libraries/luasocket/libluasocket/tcp.c \ ./libraries/luasocket/libluasocket/inet.c \ ./libraries/luasocket/libluasocket/udp.h \ ./libraries/luasocket/libluasocket/usocket.h \ ./libraries/luasocket/libluasocket/luasocket.h \ ./libraries/luasocket/libluasocket/http.lua.h \ ./libraries/luasocket/libluasocket/mime.h \ ./libraries/luasocket/libluasocket/options.c \ ./libraries/luasocket/libluasocket/unix.c \ ./libraries/luasocket/libluasocket/timeout.c \ ./libraries/luasocket/libluasocket/except.c \ ./libraries/luasocket/libluasocket/tcp.h \ ./libraries/luasocket/libluasocket/unix.h \ ./libraries/luasocket/libluasocket/socket.h \ ./libraries/luasocket/libluasocket/buffer.c \ ./libraries/luasocket/libluasocket/mime.c \ ./libraries/luasocket/libluasocket/socket.lua.h \ ./libraries/luasocket/libluasocket/luasocket.c \ ./libraries/luasocket/libluasocket/tp.lua.h \ ./libraries/luasocket/libluasocket/smtp.lua.h \ ./libraries/luasocket/libluasocket/mime.lua.h \ ./libraries/luasocket/libluasocket/except.h \ ./libraries/noise1234/simplexnoise1234.cpp \ ./libraries/noise1234/simplexnoise1234.h \ ./libraries/utf8/utf8/unchecked.h ./libraries/utf8/utf8/core.h \ ./libraries/utf8/utf8/checked.h ./libraries/utf8/utf8.h \ ./modules/sound/lullaby/Mpg123Decoder.cpp \ ./modules/sound/lullaby/Mpg123Decoder.h am__dirstamp = $(am__leading_dot)dirstamp @LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE@@LOVE_MODULE_AUDIO_TRUE@am__objects_1 = ./modules/audio/null/Audio.lo \ @LOVE_IMPLEMENTATION_AUDIO_NULL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/null/Source.lo @LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE@@LOVE_MODULE_AUDIO_TRUE@am__objects_2 = ./modules/audio/openal/Pool.lo \ @LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/openal/Audio.lo \ @LOVE_IMPLEMENTATION_AUDIO_OPENAL_TRUE@@LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/openal/Source.lo @LOVE_MODULE_AUDIO_TRUE@am__objects_3 = \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/wrap_Source.lo \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/Audio.lo \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/Source.lo \ @LOVE_MODULE_AUDIO_TRUE@ ./modules/audio/wrap_Audio.lo @LOVE_IMPLEMENTATION_EVENT_SDL_TRUE@@LOVE_MODULE_EVENT_TRUE@am__objects_4 = ./modules/event/sdl/Event.lo \ @LOVE_IMPLEMENTATION_EVENT_SDL_TRUE@@LOVE_MODULE_EVENT_TRUE@ ./modules/event/sdl/wrap_Event.lo @LOVE_MODULE_EVENT_TRUE@am__objects_5 = ./modules/event/Event.lo @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@am__objects_6 = ./modules/filesystem/physfs/wrap_FileData.lo \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/File.lo \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/wrap_File.lo \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/wrap_Filesystem.lo \ @LOVE_IMPLEMENTATION_FILESYSTEM_PHYSFS_TRUE@@LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/physfs/Filesystem.lo @LOVE_MODULE_FILESYSTEM_TRUE@am__objects_7 = \ @LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/FileData.lo \ @LOVE_MODULE_FILESYSTEM_TRUE@ ./modules/filesystem/File.lo @LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE@@LOVE_MODULE_FONT_TRUE@am__objects_8 = ./modules/font/freetype/Font.lo \ @LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE@@LOVE_MODULE_FONT_TRUE@ ./modules/font/freetype/TrueTypeRasterizer.lo \ @LOVE_IMPLEMENTATION_FONT_FREETYPE_TRUE@@LOVE_MODULE_FONT_TRUE@ ./modules/font/freetype/wrap_Font.lo @LOVE_MODULE_FONT_TRUE@am__objects_9 = \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/wrap_Rasterizer.lo \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/Rasterizer.lo \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/GlyphData.lo \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/wrap_GlyphData.lo \ @LOVE_MODULE_FONT_TRUE@ ./modules/font/ImageRasterizer.lo @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@am__objects_10 = ./modules/graphics/opengl/VertexBuffer.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/SpriteBatch.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Quad.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Font.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/GLee.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_SpriteBatch.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/OpenGL.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/ParticleSystem.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Mesh.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Shader.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Texture.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Image.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Graphics.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Canvas.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Image.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Shader.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Mesh.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Canvas.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_ParticleSystem.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Graphics.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/wrap_Font.lo \ @LOVE_IMPLEMENTATION_GRAPHICS_OPENGL_TRUE@@LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/opengl/Polyline.lo @LOVE_MODULE_GRAPHICS_TRUE@am__objects_11 = \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Texture.lo \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Quad.lo \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Graphics.lo \ @LOVE_MODULE_GRAPHICS_TRUE@ ./modules/graphics/Volatile.lo @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@am__objects_12 = ./modules/image/magpie/ddsHandler.lo \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/FormatHandler.lo \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/Image.lo \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/ImageData.lo \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/CompressedData.lo \ @LOVE_IMPLEMENTATION_IMAGE_MAGPIE_TRUE@@LOVE_MODULE_IMAGE_TRUE@ ./modules/image/magpie/DevilHandler.lo @LOVE_MODULE_IMAGE_TRUE@am__objects_13 = ./modules/image/wrap_CompressedData.lo \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/wrap_Image.lo \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/wrap_ImageData.lo \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/ImageData.lo \ @LOVE_MODULE_IMAGE_TRUE@ ./modules/image/CompressedData.lo @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@am__objects_14 = ./modules/joystick/sdl/wrap_Joystick.lo \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/wrap_JoystickModule.lo \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/JoystickModule.lo \ @LOVE_IMPLEMENTATION_JOYSTICK_SDL_TRUE@@LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/sdl/Joystick.lo @LOVE_MODULE_JOYSTICK_TRUE@am__objects_15 = \ @LOVE_MODULE_JOYSTICK_TRUE@ ./modules/joystick/Joystick.lo @LOVE_IMPLEMENTATION_KEYBOARD_SDL_TRUE@@LOVE_MODULE_KEYBOARD_TRUE@am__objects_16 = ./modules/keyboard/sdl/Keyboard.lo @LOVE_MODULE_KEYBOARD_TRUE@am__objects_17 = ./modules/keyboard/wrap_Keyboard.lo \ @LOVE_MODULE_KEYBOARD_TRUE@ ./modules/keyboard/Keyboard.lo @LOVE_MODULE_LOVE_TRUE@am__objects_18 = ./modules/love/love.lo @LOVE_MODULE_MATH_TRUE@am__objects_19 = \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/wrap_BezierCurve.lo \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/BezierCurve.lo \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/RandomGenerator.lo \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/wrap_RandomGenerator.lo \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/MathModule.lo \ @LOVE_MODULE_MATH_TRUE@ ./modules/math/wrap_Math.lo @LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE@@LOVE_MODULE_MOUSE_TRUE@am__objects_20 = ./modules/mouse/sdl/Cursor.lo \ @LOVE_IMPLEMENTATION_MOUSE_SDL_TRUE@@LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/sdl/Mouse.lo @LOVE_MODULE_MOUSE_TRUE@am__objects_21 = ./modules/mouse/Cursor.lo \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/wrap_Mouse.lo \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/Mouse.lo \ @LOVE_MODULE_MOUSE_TRUE@ ./modules/mouse/wrap_Cursor.lo @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@am__objects_22 = ./modules/physics/box2d/EdgeShape.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Fixture.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/World.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_DistanceJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/DistanceJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_FrictionJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Shape.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Physics.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Joint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_CircleShape.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Body.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_GearJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_MouseJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/GearJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_EdgeShape.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/FrictionJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_ChainShape.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Physics.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/WheelJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/RopeJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/PolygonShape.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/CircleShape.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_PolygonShape.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Joint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/MotorJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/MouseJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Body.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Contact.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/PulleyJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_MotorJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_WheelJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_WeldJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_World.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_PrismaticJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_PulleyJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/ChainShape.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/PrismaticJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/WeldJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Shape.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/RevoluteJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_RopeJoint.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_Contact.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/Fixture.lo \ @LOVE_IMPLEMENTATION_PHYSICS_BOX2D_TRUE@@LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/box2d/wrap_RevoluteJoint.lo @LOVE_MODULE_PHYSICS_TRUE@am__objects_23 = ./modules/physics/Joint.lo \ @LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/Body.lo \ @LOVE_MODULE_PHYSICS_TRUE@ ./modules/physics/Shape.lo @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@am__objects_24 = ./modules/sound/lullaby/WaveDecoder.lo \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/VorbisDecoder.lo \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/Decoder.lo \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/ModPlugDecoder.lo \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/GmeDecoder.lo \ @LOVE_IMPLEMENTATION_SOUND_LULLABY_TRUE@@LOVE_MODULE_SOUND_TRUE@ ./modules/sound/lullaby/Sound.lo @LOVE_MODULE_SOUND_TRUE@am__objects_25 = ./modules/sound/SoundData.lo \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/wrap_Sound.lo \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/wrap_SoundData.lo \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/wrap_Decoder.lo \ @LOVE_MODULE_SOUND_TRUE@ ./modules/sound/Sound.lo @LOVE_IMPLEMENTATION_SYSTEM_SDL_TRUE@@LOVE_MODULE_SYSTEM_TRUE@am__objects_26 = ./modules/system/sdl/System.lo @LOVE_MODULE_SYSTEM_TRUE@am__objects_27 = ./modules/system/System.lo \ @LOVE_MODULE_SYSTEM_TRUE@ ./modules/system/wrap_System.lo @LOVE_IMPLEMENTATION_THREAD_SDL_TRUE@@LOVE_MODULE_THREAD_TRUE@am__objects_28 = ./modules/thread/sdl/Thread.lo \ @LOVE_IMPLEMENTATION_THREAD_SDL_TRUE@@LOVE_MODULE_THREAD_TRUE@ ./modules/thread/sdl/threads.lo @LOVE_MODULE_THREAD_TRUE@am__objects_29 = \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/ThreadModule.lo \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/threads.lo \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/wrap_LuaThread.lo \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/Channel.lo \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/wrap_ThreadModule.lo \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/wrap_Channel.lo \ @LOVE_MODULE_THREAD_TRUE@ ./modules/thread/LuaThread.lo @LOVE_IMPLEMENTATION_TIMER_SDL_TRUE@@LOVE_MODULE_TIMER_TRUE@am__objects_30 = ./modules/timer/sdl/Timer.lo @LOVE_MODULE_TIMER_TRUE@am__objects_31 = \ @LOVE_MODULE_TIMER_TRUE@ ./modules/timer/wrap_Timer.lo @LOVE_IMPLEMENTATION_WINDOW_SDL_TRUE@@LOVE_MODULE_WINDOW_TRUE@am__objects_32 = ./modules/window/sdl/Window.lo @LOVE_MODULE_WINDOW_TRUE@am__objects_33 = ./modules/window/Window.lo \ @LOVE_MODULE_WINDOW_TRUE@ ./modules/window/wrap_Window.lo @LOVE_LIBRARY_BOX2D_TRUE@am__objects_34 = ./libraries/Box2D/Collision/b2BroadPhase.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2CollideEdge.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2DynamicTree.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2CollideCircle.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2Collision.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2TimeOfImpact.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2CollidePolygon.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/b2Distance.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2ChainShape.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2PolygonShape.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2EdgeShape.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Collision/Shapes/b2CircleShape.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2StackAllocator.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Draw.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2BlockAllocator.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Math.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Settings.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Common/b2Timer.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Rope/b2Rope.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2Joint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2PulleyJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2RopeJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2MotorJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2FrictionJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2GearJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2WeldJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2WheelJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2MouseJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Joints/b2DistanceJoint.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2WorldCallbacks.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2Island.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2World.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2CircleContact.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2ContactSolver.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2Contact.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/Contacts/b2PolygonContact.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2ContactManager.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2Fixture.lo \ @LOVE_LIBRARY_BOX2D_TRUE@ ./libraries/Box2D/Dynamics/b2Body.lo @LOVE_LIBRARY_WUFF_TRUE@am__objects_35 = \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff_memory.lo \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff_convert.lo \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff.lo \ @LOVE_LIBRARY_WUFF_TRUE@ ./libraries/Wuff/wuff_internal.lo @LOVE_LIBRARY_DDSPARSE_TRUE@am__objects_36 = \ @LOVE_LIBRARY_DDSPARSE_TRUE@ ./libraries/ddsparse/ddsparse.lo @LOVE_LIBRARY_ENET_TRUE@am__objects_37 = \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/packet.lo \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/protocol.lo \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/win32.lo \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/callbacks.lo \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/list.lo \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/compress.lo \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/unix.lo \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/peer.lo \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/libenet/host.lo \ @LOVE_LIBRARY_ENET_TRUE@ ./libraries/enet/enet.lo @LOVE_LIBRARY_LUASOCKET_TRUE@am__objects_38 = ./libraries/luasocket/luasocket.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/udp.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/usocket.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/auxiliar.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/io.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/select.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/tcp.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/inet.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/options.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/unix.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/timeout.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/except.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/buffer.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/mime.lo \ @LOVE_LIBRARY_LUASOCKET_TRUE@ ./libraries/luasocket/libluasocket/luasocket.lo @LOVE_LIBRARY_NOISE1234_TRUE@am__objects_39 = ./libraries/noise1234/simplexnoise1234.lo am__objects_40 = @LOVE_NOMPG123_FALSE@am__objects_41 = \ @LOVE_NOMPG123_FALSE@ ./modules/sound/lullaby/Mpg123Decoder.lo am_liblove_la_OBJECTS = ./common/Module.lo ./common/runtime.lo \ ./common/utf8.lo ./common/Object.lo ./common/b64.lo \ ./common/Matrix.lo ./common/Memoizer.lo ./common/Exception.lo \ ./common/Reference.lo ./common/delay.lo ./common/wrap_Data.lo \ ./common/Variant.lo ./common/Vector.lo $(am__objects_1) \ $(am__objects_2) $(am__objects_3) $(am__objects_4) \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ $(am__objects_14) $(am__objects_15) $(am__objects_16) \ $(am__objects_17) $(am__objects_18) $(am__objects_19) \ $(am__objects_20) $(am__objects_21) $(am__objects_22) \ $(am__objects_23) $(am__objects_24) $(am__objects_25) \ $(am__objects_26) $(am__objects_27) $(am__objects_28) \ $(am__objects_29) $(am__objects_30) $(am__objects_31) \ $(am__objects_32) $(am__objects_33) $(am__objects_34) \ $(am__objects_35) $(am__objects_36) $(am__objects_37) \ $(am__objects_38) $(am__objects_39) $(am__objects_40) \ $(am__objects_41) liblove_la_OBJECTS = $(am_liblove_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent liblove_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(liblove_la_LDFLAGS) $(LDFLAGS) -o $@ PROGRAMS = $(bin_PROGRAMS) am__love_SOURCES_DIST = love.cpp ../platform/macosx/OSX.h \ ../platform/macosx/OSX.mm @LOVE_BUILD_EXE_TRUE@am_love_OBJECTS = love.$(OBJEXT) \ @LOVE_BUILD_EXE_TRUE@ $(am__objects_40) love_OBJECTS = $(am_love_OBJECTS) @LOVE_BUILD_EXE_TRUE@love_DEPENDENCIES = liblove.la \ @LOVE_BUILD_EXE_TRUE@ $(am__DEPENDENCIES_1) love_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(love_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/platform/unix/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(liblove_la_SOURCES) $(love_SOURCES) DIST_SOURCES = $(am__liblove_la_SOURCES_DIST) $(am__love_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FILE_OFFSET = @FILE_OFFSET@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOVE_INCLUDES = @LOVE_INCLUDES@ LOVE_SUFFIX = @LOVE_SUFFIX@ LTLIBOBJS = @LTLIBOBJS@ LUA_EXECUTABLE = @LUA_EXECUTABLE@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJCXX = @OBJCXX@ OBJCXXFLAGS = @OBJCXXFLAGS@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SDL2_CONFIG = @SDL2_CONFIG@ SDL_CFLAGS = @SDL_CFLAGS@ SDL_LIBS = @SDL_LIBS@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_OBJCXX = @ac_ct_OBJCXX@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ devil_CFLAGS = @devil_CFLAGS@ devil_LIBS = @devil_LIBS@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ freetype2_CFLAGS = @freetype2_CFLAGS@ freetype2_LIBS = @freetype2_LIBS@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ libmodplug_CFLAGS = @libmodplug_CFLAGS@ libmodplug_LIBS = @libmodplug_LIBS@ localedir = @localedir@ localstatedir = @localstatedir@ lua_CFLAGS = @lua_CFLAGS@ lua_LIBS = @lua_LIBS@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ openal_CFLAGS = @openal_CFLAGS@ openal_LIBS = @openal_LIBS@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ vorbisfile_CFLAGS = @vorbisfile_CFLAGS@ vorbisfile_LIBS = @vorbisfile_LIBS@ AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/modules -I$(srcdir)/libraries -I$(srcdir)/libraries/enet/libenet/include $(LOVE_INCLUDES) $(FILE_OFFSET) $(SDL_CFLAGS) $(lua_CFLAGS) $(freetype2_CFLAGS) $(openal_CFLAGS) $(devil_CFLAGS) $(libmodplug_CFLAGS) $(vorbisfile_CFLAGS) AUTOMAKE_OPTIONS = subdir-objects SUBDIRS = SUFFIXES = .lua .lua.h #love_LDFLAGS = @LOVE_BUILD_EXE_TRUE@love_LDADD = liblove.la $(lua_LIBS) @LOVE_BUILD_EXE_TRUE@love_SOURCES = love.cpp $(am__append_1) @LOVE_BUILD_EXE_TRUE@@LOVE_TARGET_OSX_FALSE@love_LIBTOOLFLAGS = --tag=CXX @LOVE_BUILD_EXE_TRUE@@LOVE_TARGET_OSX_TRUE@love_LIBTOOLFLAGS = --tag=OBJCXX # libLÖVE lib_LTLIBRARIES = liblove.la liblove_la_LDFLAGS = -module -export-dynamic $(LDFLAGS) liblove_la_LIBADD = $(SDL_LIBS) $(freetype2_LIBS) $(lua_LIBS) $(openal_LIBS) $(devil_LIBS) $(libmodplug_LIBS) $(vorbisfile_LIBS) liblove_la_SOURCES = ./common/Module.cpp ./common/runtime.cpp \ ./common/utf8.cpp ./common/wrap_Data.h ./common/Object.cpp \ ./common/b64.cpp ./common/Data.h ./common/StringMap.h \ ./common/Matrix.cpp ./common/Object.h ./common/Memoizer.cpp \ ./common/int.h ./common/Exception.cpp ./common/Variant.h \ ./common/b64.h ./common/Memoizer.h ./common/EnumMap.h \ ./common/Reference.cpp ./common/types.h ./common/Vector.h \ ./common/version.h ./common/Matrix.h ./common/delay.cpp \ ./common/Reference.h ./common/wrap_Data.cpp \ ./common/Variant.cpp ./common/Vector.cpp ./common/runtime.h \ ./common/delay.h ./common/Module.h ./common/math.h \ ./common/config.h ./common/Exception.h ./common/utf8.h \ ./scripts/boot.lua.h ./scripts/graphics.lua.h $(am__append_2) \ $(am__append_3) $(am__append_4) $(am__append_5) \ $(am__append_6) $(am__append_7) $(am__append_8) \ $(am__append_9) $(am__append_10) $(am__append_11) \ $(am__append_12) $(am__append_13) $(am__append_14) \ $(am__append_15) $(am__append_16) $(am__append_17) \ $(am__append_18) $(am__append_19) $(am__append_20) \ $(am__append_21) $(am__append_22) $(am__append_23) \ $(am__append_24) $(am__append_25) $(am__append_26) \ $(am__append_27) $(am__append_28) $(am__append_29) \ $(am__append_30) $(am__append_31) $(am__append_32) \ $(am__append_33) $(am__append_34) $(am__append_35) \ $(am__append_36) $(am__append_37) $(am__append_38) \ $(am__append_39) $(am__append_40) $(am__append_41) \ $(am__append_42) all: all-recursive .SUFFIXES: .SUFFIXES: .lua .lua.h .c .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done common/$(am__dirstamp): @$(MKDIR_P) ./common @: > common/$(am__dirstamp) common/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./common/$(DEPDIR) @: > common/$(DEPDIR)/$(am__dirstamp) ./common/Module.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/runtime.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/utf8.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/Object.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/b64.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/Matrix.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/Memoizer.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/Exception.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/Reference.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/delay.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/wrap_Data.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/Variant.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) ./common/Vector.lo: common/$(am__dirstamp) \ common/$(DEPDIR)/$(am__dirstamp) modules/audio/null/$(am__dirstamp): @$(MKDIR_P) ./modules/audio/null @: > modules/audio/null/$(am__dirstamp) modules/audio/null/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/audio/null/$(DEPDIR) @: > modules/audio/null/$(DEPDIR)/$(am__dirstamp) ./modules/audio/null/Audio.lo: modules/audio/null/$(am__dirstamp) \ modules/audio/null/$(DEPDIR)/$(am__dirstamp) ./modules/audio/null/Source.lo: modules/audio/null/$(am__dirstamp) \ modules/audio/null/$(DEPDIR)/$(am__dirstamp) modules/audio/openal/$(am__dirstamp): @$(MKDIR_P) ./modules/audio/openal @: > modules/audio/openal/$(am__dirstamp) modules/audio/openal/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/audio/openal/$(DEPDIR) @: > modules/audio/openal/$(DEPDIR)/$(am__dirstamp) ./modules/audio/openal/Pool.lo: modules/audio/openal/$(am__dirstamp) \ modules/audio/openal/$(DEPDIR)/$(am__dirstamp) ./modules/audio/openal/Audio.lo: modules/audio/openal/$(am__dirstamp) \ modules/audio/openal/$(DEPDIR)/$(am__dirstamp) ./modules/audio/openal/Source.lo: \ modules/audio/openal/$(am__dirstamp) \ modules/audio/openal/$(DEPDIR)/$(am__dirstamp) modules/audio/$(am__dirstamp): @$(MKDIR_P) ./modules/audio @: > modules/audio/$(am__dirstamp) modules/audio/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/audio/$(DEPDIR) @: > modules/audio/$(DEPDIR)/$(am__dirstamp) ./modules/audio/wrap_Source.lo: modules/audio/$(am__dirstamp) \ modules/audio/$(DEPDIR)/$(am__dirstamp) ./modules/audio/Audio.lo: modules/audio/$(am__dirstamp) \ modules/audio/$(DEPDIR)/$(am__dirstamp) ./modules/audio/Source.lo: modules/audio/$(am__dirstamp) \ modules/audio/$(DEPDIR)/$(am__dirstamp) ./modules/audio/wrap_Audio.lo: modules/audio/$(am__dirstamp) \ modules/audio/$(DEPDIR)/$(am__dirstamp) modules/event/sdl/$(am__dirstamp): @$(MKDIR_P) ./modules/event/sdl @: > modules/event/sdl/$(am__dirstamp) modules/event/sdl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/event/sdl/$(DEPDIR) @: > modules/event/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/event/sdl/Event.lo: modules/event/sdl/$(am__dirstamp) \ modules/event/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/event/sdl/wrap_Event.lo: modules/event/sdl/$(am__dirstamp) \ modules/event/sdl/$(DEPDIR)/$(am__dirstamp) modules/event/$(am__dirstamp): @$(MKDIR_P) ./modules/event @: > modules/event/$(am__dirstamp) modules/event/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/event/$(DEPDIR) @: > modules/event/$(DEPDIR)/$(am__dirstamp) ./modules/event/Event.lo: modules/event/$(am__dirstamp) \ modules/event/$(DEPDIR)/$(am__dirstamp) modules/filesystem/physfs/$(am__dirstamp): @$(MKDIR_P) ./modules/filesystem/physfs @: > modules/filesystem/physfs/$(am__dirstamp) modules/filesystem/physfs/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/filesystem/physfs/$(DEPDIR) @: > modules/filesystem/physfs/$(DEPDIR)/$(am__dirstamp) ./modules/filesystem/physfs/wrap_FileData.lo: \ modules/filesystem/physfs/$(am__dirstamp) \ modules/filesystem/physfs/$(DEPDIR)/$(am__dirstamp) ./modules/filesystem/physfs/File.lo: \ modules/filesystem/physfs/$(am__dirstamp) \ modules/filesystem/physfs/$(DEPDIR)/$(am__dirstamp) ./modules/filesystem/physfs/wrap_File.lo: \ modules/filesystem/physfs/$(am__dirstamp) \ modules/filesystem/physfs/$(DEPDIR)/$(am__dirstamp) ./modules/filesystem/physfs/wrap_Filesystem.lo: \ modules/filesystem/physfs/$(am__dirstamp) \ modules/filesystem/physfs/$(DEPDIR)/$(am__dirstamp) ./modules/filesystem/physfs/Filesystem.lo: \ modules/filesystem/physfs/$(am__dirstamp) \ modules/filesystem/physfs/$(DEPDIR)/$(am__dirstamp) modules/filesystem/$(am__dirstamp): @$(MKDIR_P) ./modules/filesystem @: > modules/filesystem/$(am__dirstamp) modules/filesystem/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/filesystem/$(DEPDIR) @: > modules/filesystem/$(DEPDIR)/$(am__dirstamp) ./modules/filesystem/FileData.lo: modules/filesystem/$(am__dirstamp) \ modules/filesystem/$(DEPDIR)/$(am__dirstamp) ./modules/filesystem/File.lo: modules/filesystem/$(am__dirstamp) \ modules/filesystem/$(DEPDIR)/$(am__dirstamp) modules/font/freetype/$(am__dirstamp): @$(MKDIR_P) ./modules/font/freetype @: > modules/font/freetype/$(am__dirstamp) modules/font/freetype/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/font/freetype/$(DEPDIR) @: > modules/font/freetype/$(DEPDIR)/$(am__dirstamp) ./modules/font/freetype/Font.lo: \ modules/font/freetype/$(am__dirstamp) \ modules/font/freetype/$(DEPDIR)/$(am__dirstamp) ./modules/font/freetype/TrueTypeRasterizer.lo: \ modules/font/freetype/$(am__dirstamp) \ modules/font/freetype/$(DEPDIR)/$(am__dirstamp) ./modules/font/freetype/wrap_Font.lo: \ modules/font/freetype/$(am__dirstamp) \ modules/font/freetype/$(DEPDIR)/$(am__dirstamp) modules/font/$(am__dirstamp): @$(MKDIR_P) ./modules/font @: > modules/font/$(am__dirstamp) modules/font/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/font/$(DEPDIR) @: > modules/font/$(DEPDIR)/$(am__dirstamp) ./modules/font/wrap_Rasterizer.lo: modules/font/$(am__dirstamp) \ modules/font/$(DEPDIR)/$(am__dirstamp) ./modules/font/Rasterizer.lo: modules/font/$(am__dirstamp) \ modules/font/$(DEPDIR)/$(am__dirstamp) ./modules/font/GlyphData.lo: modules/font/$(am__dirstamp) \ modules/font/$(DEPDIR)/$(am__dirstamp) ./modules/font/wrap_GlyphData.lo: modules/font/$(am__dirstamp) \ modules/font/$(DEPDIR)/$(am__dirstamp) ./modules/font/ImageRasterizer.lo: modules/font/$(am__dirstamp) \ modules/font/$(DEPDIR)/$(am__dirstamp) modules/graphics/opengl/$(am__dirstamp): @$(MKDIR_P) ./modules/graphics/opengl @: > modules/graphics/opengl/$(am__dirstamp) modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/graphics/opengl/$(DEPDIR) @: > modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/VertexBuffer.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/SpriteBatch.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/wrap_Quad.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/Font.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/GLee.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/wrap_SpriteBatch.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/OpenGL.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/ParticleSystem.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/wrap_Mesh.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/wrap_Shader.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/wrap_Texture.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/Image.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/Graphics.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/Canvas.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/wrap_Image.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/Shader.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/Mesh.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/wrap_Canvas.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/wrap_ParticleSystem.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/wrap_Graphics.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/wrap_Font.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/opengl/Polyline.lo: \ modules/graphics/opengl/$(am__dirstamp) \ modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) modules/graphics/$(am__dirstamp): @$(MKDIR_P) ./modules/graphics @: > modules/graphics/$(am__dirstamp) modules/graphics/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/graphics/$(DEPDIR) @: > modules/graphics/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/Texture.lo: modules/graphics/$(am__dirstamp) \ modules/graphics/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/Quad.lo: modules/graphics/$(am__dirstamp) \ modules/graphics/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/Graphics.lo: modules/graphics/$(am__dirstamp) \ modules/graphics/$(DEPDIR)/$(am__dirstamp) ./modules/graphics/Volatile.lo: modules/graphics/$(am__dirstamp) \ modules/graphics/$(DEPDIR)/$(am__dirstamp) modules/image/magpie/$(am__dirstamp): @$(MKDIR_P) ./modules/image/magpie @: > modules/image/magpie/$(am__dirstamp) modules/image/magpie/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/image/magpie/$(DEPDIR) @: > modules/image/magpie/$(DEPDIR)/$(am__dirstamp) ./modules/image/magpie/ddsHandler.lo: \ modules/image/magpie/$(am__dirstamp) \ modules/image/magpie/$(DEPDIR)/$(am__dirstamp) ./modules/image/magpie/FormatHandler.lo: \ modules/image/magpie/$(am__dirstamp) \ modules/image/magpie/$(DEPDIR)/$(am__dirstamp) ./modules/image/magpie/Image.lo: modules/image/magpie/$(am__dirstamp) \ modules/image/magpie/$(DEPDIR)/$(am__dirstamp) ./modules/image/magpie/ImageData.lo: \ modules/image/magpie/$(am__dirstamp) \ modules/image/magpie/$(DEPDIR)/$(am__dirstamp) ./modules/image/magpie/CompressedData.lo: \ modules/image/magpie/$(am__dirstamp) \ modules/image/magpie/$(DEPDIR)/$(am__dirstamp) ./modules/image/magpie/DevilHandler.lo: \ modules/image/magpie/$(am__dirstamp) \ modules/image/magpie/$(DEPDIR)/$(am__dirstamp) modules/image/$(am__dirstamp): @$(MKDIR_P) ./modules/image @: > modules/image/$(am__dirstamp) modules/image/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/image/$(DEPDIR) @: > modules/image/$(DEPDIR)/$(am__dirstamp) ./modules/image/wrap_CompressedData.lo: modules/image/$(am__dirstamp) \ modules/image/$(DEPDIR)/$(am__dirstamp) ./modules/image/wrap_Image.lo: modules/image/$(am__dirstamp) \ modules/image/$(DEPDIR)/$(am__dirstamp) ./modules/image/wrap_ImageData.lo: modules/image/$(am__dirstamp) \ modules/image/$(DEPDIR)/$(am__dirstamp) ./modules/image/ImageData.lo: modules/image/$(am__dirstamp) \ modules/image/$(DEPDIR)/$(am__dirstamp) ./modules/image/CompressedData.lo: modules/image/$(am__dirstamp) \ modules/image/$(DEPDIR)/$(am__dirstamp) modules/joystick/sdl/$(am__dirstamp): @$(MKDIR_P) ./modules/joystick/sdl @: > modules/joystick/sdl/$(am__dirstamp) modules/joystick/sdl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/joystick/sdl/$(DEPDIR) @: > modules/joystick/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/joystick/sdl/wrap_Joystick.lo: \ modules/joystick/sdl/$(am__dirstamp) \ modules/joystick/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/joystick/sdl/wrap_JoystickModule.lo: \ modules/joystick/sdl/$(am__dirstamp) \ modules/joystick/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/joystick/sdl/JoystickModule.lo: \ modules/joystick/sdl/$(am__dirstamp) \ modules/joystick/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/joystick/sdl/Joystick.lo: \ modules/joystick/sdl/$(am__dirstamp) \ modules/joystick/sdl/$(DEPDIR)/$(am__dirstamp) modules/joystick/$(am__dirstamp): @$(MKDIR_P) ./modules/joystick @: > modules/joystick/$(am__dirstamp) modules/joystick/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/joystick/$(DEPDIR) @: > modules/joystick/$(DEPDIR)/$(am__dirstamp) ./modules/joystick/Joystick.lo: modules/joystick/$(am__dirstamp) \ modules/joystick/$(DEPDIR)/$(am__dirstamp) modules/keyboard/sdl/$(am__dirstamp): @$(MKDIR_P) ./modules/keyboard/sdl @: > modules/keyboard/sdl/$(am__dirstamp) modules/keyboard/sdl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/keyboard/sdl/$(DEPDIR) @: > modules/keyboard/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/keyboard/sdl/Keyboard.lo: \ modules/keyboard/sdl/$(am__dirstamp) \ modules/keyboard/sdl/$(DEPDIR)/$(am__dirstamp) modules/keyboard/$(am__dirstamp): @$(MKDIR_P) ./modules/keyboard @: > modules/keyboard/$(am__dirstamp) modules/keyboard/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/keyboard/$(DEPDIR) @: > modules/keyboard/$(DEPDIR)/$(am__dirstamp) ./modules/keyboard/wrap_Keyboard.lo: modules/keyboard/$(am__dirstamp) \ modules/keyboard/$(DEPDIR)/$(am__dirstamp) ./modules/keyboard/Keyboard.lo: modules/keyboard/$(am__dirstamp) \ modules/keyboard/$(DEPDIR)/$(am__dirstamp) modules/love/$(am__dirstamp): @$(MKDIR_P) ./modules/love @: > modules/love/$(am__dirstamp) modules/love/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/love/$(DEPDIR) @: > modules/love/$(DEPDIR)/$(am__dirstamp) ./modules/love/love.lo: modules/love/$(am__dirstamp) \ modules/love/$(DEPDIR)/$(am__dirstamp) modules/math/$(am__dirstamp): @$(MKDIR_P) ./modules/math @: > modules/math/$(am__dirstamp) modules/math/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/math/$(DEPDIR) @: > modules/math/$(DEPDIR)/$(am__dirstamp) ./modules/math/wrap_BezierCurve.lo: modules/math/$(am__dirstamp) \ modules/math/$(DEPDIR)/$(am__dirstamp) ./modules/math/BezierCurve.lo: modules/math/$(am__dirstamp) \ modules/math/$(DEPDIR)/$(am__dirstamp) ./modules/math/RandomGenerator.lo: modules/math/$(am__dirstamp) \ modules/math/$(DEPDIR)/$(am__dirstamp) ./modules/math/wrap_RandomGenerator.lo: modules/math/$(am__dirstamp) \ modules/math/$(DEPDIR)/$(am__dirstamp) ./modules/math/MathModule.lo: modules/math/$(am__dirstamp) \ modules/math/$(DEPDIR)/$(am__dirstamp) ./modules/math/wrap_Math.lo: modules/math/$(am__dirstamp) \ modules/math/$(DEPDIR)/$(am__dirstamp) modules/mouse/sdl/$(am__dirstamp): @$(MKDIR_P) ./modules/mouse/sdl @: > modules/mouse/sdl/$(am__dirstamp) modules/mouse/sdl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/mouse/sdl/$(DEPDIR) @: > modules/mouse/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/mouse/sdl/Cursor.lo: modules/mouse/sdl/$(am__dirstamp) \ modules/mouse/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/mouse/sdl/Mouse.lo: modules/mouse/sdl/$(am__dirstamp) \ modules/mouse/sdl/$(DEPDIR)/$(am__dirstamp) modules/mouse/$(am__dirstamp): @$(MKDIR_P) ./modules/mouse @: > modules/mouse/$(am__dirstamp) modules/mouse/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/mouse/$(DEPDIR) @: > modules/mouse/$(DEPDIR)/$(am__dirstamp) ./modules/mouse/Cursor.lo: modules/mouse/$(am__dirstamp) \ modules/mouse/$(DEPDIR)/$(am__dirstamp) ./modules/mouse/wrap_Mouse.lo: modules/mouse/$(am__dirstamp) \ modules/mouse/$(DEPDIR)/$(am__dirstamp) ./modules/mouse/Mouse.lo: modules/mouse/$(am__dirstamp) \ modules/mouse/$(DEPDIR)/$(am__dirstamp) ./modules/mouse/wrap_Cursor.lo: modules/mouse/$(am__dirstamp) \ modules/mouse/$(DEPDIR)/$(am__dirstamp) modules/physics/box2d/$(am__dirstamp): @$(MKDIR_P) ./modules/physics/box2d @: > modules/physics/box2d/$(am__dirstamp) modules/physics/box2d/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/physics/box2d/$(DEPDIR) @: > modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/EdgeShape.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_Fixture.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/World.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_DistanceJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/DistanceJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_FrictionJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_Shape.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/Physics.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/Joint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_CircleShape.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/Body.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_GearJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_MouseJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/GearJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_EdgeShape.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/FrictionJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_ChainShape.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_Physics.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/WheelJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/RopeJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/PolygonShape.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/CircleShape.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_PolygonShape.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_Joint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/MotorJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/MouseJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_Body.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/Contact.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/PulleyJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_MotorJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_WheelJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_WeldJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_World.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_PrismaticJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_PulleyJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/ChainShape.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/PrismaticJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/WeldJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/Shape.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/RevoluteJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_RopeJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_Contact.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/Fixture.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) ./modules/physics/box2d/wrap_RevoluteJoint.lo: \ modules/physics/box2d/$(am__dirstamp) \ modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) modules/physics/$(am__dirstamp): @$(MKDIR_P) ./modules/physics @: > modules/physics/$(am__dirstamp) modules/physics/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/physics/$(DEPDIR) @: > modules/physics/$(DEPDIR)/$(am__dirstamp) ./modules/physics/Joint.lo: modules/physics/$(am__dirstamp) \ modules/physics/$(DEPDIR)/$(am__dirstamp) ./modules/physics/Body.lo: modules/physics/$(am__dirstamp) \ modules/physics/$(DEPDIR)/$(am__dirstamp) ./modules/physics/Shape.lo: modules/physics/$(am__dirstamp) \ modules/physics/$(DEPDIR)/$(am__dirstamp) modules/sound/lullaby/$(am__dirstamp): @$(MKDIR_P) ./modules/sound/lullaby @: > modules/sound/lullaby/$(am__dirstamp) modules/sound/lullaby/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/sound/lullaby/$(DEPDIR) @: > modules/sound/lullaby/$(DEPDIR)/$(am__dirstamp) ./modules/sound/lullaby/WaveDecoder.lo: \ modules/sound/lullaby/$(am__dirstamp) \ modules/sound/lullaby/$(DEPDIR)/$(am__dirstamp) ./modules/sound/lullaby/VorbisDecoder.lo: \ modules/sound/lullaby/$(am__dirstamp) \ modules/sound/lullaby/$(DEPDIR)/$(am__dirstamp) ./modules/sound/lullaby/Decoder.lo: \ modules/sound/lullaby/$(am__dirstamp) \ modules/sound/lullaby/$(DEPDIR)/$(am__dirstamp) ./modules/sound/lullaby/ModPlugDecoder.lo: \ modules/sound/lullaby/$(am__dirstamp) \ modules/sound/lullaby/$(DEPDIR)/$(am__dirstamp) ./modules/sound/lullaby/GmeDecoder.lo: \ modules/sound/lullaby/$(am__dirstamp) \ modules/sound/lullaby/$(DEPDIR)/$(am__dirstamp) ./modules/sound/lullaby/Sound.lo: \ modules/sound/lullaby/$(am__dirstamp) \ modules/sound/lullaby/$(DEPDIR)/$(am__dirstamp) modules/sound/$(am__dirstamp): @$(MKDIR_P) ./modules/sound @: > modules/sound/$(am__dirstamp) modules/sound/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/sound/$(DEPDIR) @: > modules/sound/$(DEPDIR)/$(am__dirstamp) ./modules/sound/SoundData.lo: modules/sound/$(am__dirstamp) \ modules/sound/$(DEPDIR)/$(am__dirstamp) ./modules/sound/wrap_Sound.lo: modules/sound/$(am__dirstamp) \ modules/sound/$(DEPDIR)/$(am__dirstamp) ./modules/sound/wrap_SoundData.lo: modules/sound/$(am__dirstamp) \ modules/sound/$(DEPDIR)/$(am__dirstamp) ./modules/sound/wrap_Decoder.lo: modules/sound/$(am__dirstamp) \ modules/sound/$(DEPDIR)/$(am__dirstamp) ./modules/sound/Sound.lo: modules/sound/$(am__dirstamp) \ modules/sound/$(DEPDIR)/$(am__dirstamp) modules/system/sdl/$(am__dirstamp): @$(MKDIR_P) ./modules/system/sdl @: > modules/system/sdl/$(am__dirstamp) modules/system/sdl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/system/sdl/$(DEPDIR) @: > modules/system/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/system/sdl/System.lo: modules/system/sdl/$(am__dirstamp) \ modules/system/sdl/$(DEPDIR)/$(am__dirstamp) modules/system/$(am__dirstamp): @$(MKDIR_P) ./modules/system @: > modules/system/$(am__dirstamp) modules/system/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/system/$(DEPDIR) @: > modules/system/$(DEPDIR)/$(am__dirstamp) ./modules/system/System.lo: modules/system/$(am__dirstamp) \ modules/system/$(DEPDIR)/$(am__dirstamp) ./modules/system/wrap_System.lo: modules/system/$(am__dirstamp) \ modules/system/$(DEPDIR)/$(am__dirstamp) modules/thread/sdl/$(am__dirstamp): @$(MKDIR_P) ./modules/thread/sdl @: > modules/thread/sdl/$(am__dirstamp) modules/thread/sdl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/thread/sdl/$(DEPDIR) @: > modules/thread/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/thread/sdl/Thread.lo: modules/thread/sdl/$(am__dirstamp) \ modules/thread/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/thread/sdl/threads.lo: modules/thread/sdl/$(am__dirstamp) \ modules/thread/sdl/$(DEPDIR)/$(am__dirstamp) modules/thread/$(am__dirstamp): @$(MKDIR_P) ./modules/thread @: > modules/thread/$(am__dirstamp) modules/thread/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/thread/$(DEPDIR) @: > modules/thread/$(DEPDIR)/$(am__dirstamp) ./modules/thread/ThreadModule.lo: modules/thread/$(am__dirstamp) \ modules/thread/$(DEPDIR)/$(am__dirstamp) ./modules/thread/threads.lo: modules/thread/$(am__dirstamp) \ modules/thread/$(DEPDIR)/$(am__dirstamp) ./modules/thread/wrap_LuaThread.lo: modules/thread/$(am__dirstamp) \ modules/thread/$(DEPDIR)/$(am__dirstamp) ./modules/thread/Channel.lo: modules/thread/$(am__dirstamp) \ modules/thread/$(DEPDIR)/$(am__dirstamp) ./modules/thread/wrap_ThreadModule.lo: modules/thread/$(am__dirstamp) \ modules/thread/$(DEPDIR)/$(am__dirstamp) ./modules/thread/wrap_Channel.lo: modules/thread/$(am__dirstamp) \ modules/thread/$(DEPDIR)/$(am__dirstamp) ./modules/thread/LuaThread.lo: modules/thread/$(am__dirstamp) \ modules/thread/$(DEPDIR)/$(am__dirstamp) modules/timer/sdl/$(am__dirstamp): @$(MKDIR_P) ./modules/timer/sdl @: > modules/timer/sdl/$(am__dirstamp) modules/timer/sdl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/timer/sdl/$(DEPDIR) @: > modules/timer/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/timer/sdl/Timer.lo: modules/timer/sdl/$(am__dirstamp) \ modules/timer/sdl/$(DEPDIR)/$(am__dirstamp) modules/timer/$(am__dirstamp): @$(MKDIR_P) ./modules/timer @: > modules/timer/$(am__dirstamp) modules/timer/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/timer/$(DEPDIR) @: > modules/timer/$(DEPDIR)/$(am__dirstamp) ./modules/timer/wrap_Timer.lo: modules/timer/$(am__dirstamp) \ modules/timer/$(DEPDIR)/$(am__dirstamp) modules/window/sdl/$(am__dirstamp): @$(MKDIR_P) ./modules/window/sdl @: > modules/window/sdl/$(am__dirstamp) modules/window/sdl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/window/sdl/$(DEPDIR) @: > modules/window/sdl/$(DEPDIR)/$(am__dirstamp) ./modules/window/sdl/Window.lo: modules/window/sdl/$(am__dirstamp) \ modules/window/sdl/$(DEPDIR)/$(am__dirstamp) modules/window/$(am__dirstamp): @$(MKDIR_P) ./modules/window @: > modules/window/$(am__dirstamp) modules/window/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./modules/window/$(DEPDIR) @: > modules/window/$(DEPDIR)/$(am__dirstamp) ./modules/window/Window.lo: modules/window/$(am__dirstamp) \ modules/window/$(DEPDIR)/$(am__dirstamp) ./modules/window/wrap_Window.lo: modules/window/$(am__dirstamp) \ modules/window/$(DEPDIR)/$(am__dirstamp) libraries/Box2D/Collision/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Collision @: > libraries/Box2D/Collision/$(am__dirstamp) libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Collision/$(DEPDIR) @: > libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/b2BroadPhase.lo: \ libraries/Box2D/Collision/$(am__dirstamp) \ libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/b2CollideEdge.lo: \ libraries/Box2D/Collision/$(am__dirstamp) \ libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/b2DynamicTree.lo: \ libraries/Box2D/Collision/$(am__dirstamp) \ libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/b2CollideCircle.lo: \ libraries/Box2D/Collision/$(am__dirstamp) \ libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/b2Collision.lo: \ libraries/Box2D/Collision/$(am__dirstamp) \ libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/b2TimeOfImpact.lo: \ libraries/Box2D/Collision/$(am__dirstamp) \ libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/b2CollidePolygon.lo: \ libraries/Box2D/Collision/$(am__dirstamp) \ libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/b2Distance.lo: \ libraries/Box2D/Collision/$(am__dirstamp) \ libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp) libraries/Box2D/Collision/Shapes/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Collision/Shapes @: > libraries/Box2D/Collision/Shapes/$(am__dirstamp) libraries/Box2D/Collision/Shapes/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Collision/Shapes/$(DEPDIR) @: > libraries/Box2D/Collision/Shapes/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/Shapes/b2ChainShape.lo: \ libraries/Box2D/Collision/Shapes/$(am__dirstamp) \ libraries/Box2D/Collision/Shapes/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/Shapes/b2PolygonShape.lo: \ libraries/Box2D/Collision/Shapes/$(am__dirstamp) \ libraries/Box2D/Collision/Shapes/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/Shapes/b2EdgeShape.lo: \ libraries/Box2D/Collision/Shapes/$(am__dirstamp) \ libraries/Box2D/Collision/Shapes/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Collision/Shapes/b2CircleShape.lo: \ libraries/Box2D/Collision/Shapes/$(am__dirstamp) \ libraries/Box2D/Collision/Shapes/$(DEPDIR)/$(am__dirstamp) libraries/Box2D/Common/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Common @: > libraries/Box2D/Common/$(am__dirstamp) libraries/Box2D/Common/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Common/$(DEPDIR) @: > libraries/Box2D/Common/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Common/b2StackAllocator.lo: \ libraries/Box2D/Common/$(am__dirstamp) \ libraries/Box2D/Common/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Common/b2Draw.lo: \ libraries/Box2D/Common/$(am__dirstamp) \ libraries/Box2D/Common/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Common/b2BlockAllocator.lo: \ libraries/Box2D/Common/$(am__dirstamp) \ libraries/Box2D/Common/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Common/b2Math.lo: \ libraries/Box2D/Common/$(am__dirstamp) \ libraries/Box2D/Common/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Common/b2Settings.lo: \ libraries/Box2D/Common/$(am__dirstamp) \ libraries/Box2D/Common/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Common/b2Timer.lo: \ libraries/Box2D/Common/$(am__dirstamp) \ libraries/Box2D/Common/$(DEPDIR)/$(am__dirstamp) libraries/Box2D/Rope/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Rope @: > libraries/Box2D/Rope/$(am__dirstamp) libraries/Box2D/Rope/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Rope/$(DEPDIR) @: > libraries/Box2D/Rope/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Rope/b2Rope.lo: \ libraries/Box2D/Rope/$(am__dirstamp) \ libraries/Box2D/Rope/$(DEPDIR)/$(am__dirstamp) libraries/Box2D/Dynamics/Joints/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Dynamics/Joints @: > libraries/Box2D/Dynamics/Joints/$(am__dirstamp) libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Dynamics/Joints/$(DEPDIR) @: > libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2Joint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2PulleyJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2RopeJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2MotorJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2FrictionJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2GearJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2WeldJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2WheelJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2MouseJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Joints/b2DistanceJoint.lo: \ libraries/Box2D/Dynamics/Joints/$(am__dirstamp) \ libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) libraries/Box2D/Dynamics/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Dynamics @: > libraries/Box2D/Dynamics/$(am__dirstamp) libraries/Box2D/Dynamics/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Dynamics/$(DEPDIR) @: > libraries/Box2D/Dynamics/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/b2WorldCallbacks.lo: \ libraries/Box2D/Dynamics/$(am__dirstamp) \ libraries/Box2D/Dynamics/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/b2Island.lo: \ libraries/Box2D/Dynamics/$(am__dirstamp) \ libraries/Box2D/Dynamics/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/b2World.lo: \ libraries/Box2D/Dynamics/$(am__dirstamp) \ libraries/Box2D/Dynamics/$(DEPDIR)/$(am__dirstamp) libraries/Box2D/Dynamics/Contacts/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Dynamics/Contacts @: > libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/Box2D/Dynamics/Contacts/$(DEPDIR) @: > libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Contacts/b2CircleContact.lo: \ libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) \ libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.lo: \ libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) \ libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.lo: \ libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) \ libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.lo: \ libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) \ libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Contacts/b2ContactSolver.lo: \ libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) \ libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.lo: \ libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) \ libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Contacts/b2Contact.lo: \ libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) \ libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.lo: \ libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) \ libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/Contacts/b2PolygonContact.lo: \ libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) \ libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/b2ContactManager.lo: \ libraries/Box2D/Dynamics/$(am__dirstamp) \ libraries/Box2D/Dynamics/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/b2Fixture.lo: \ libraries/Box2D/Dynamics/$(am__dirstamp) \ libraries/Box2D/Dynamics/$(DEPDIR)/$(am__dirstamp) ./libraries/Box2D/Dynamics/b2Body.lo: \ libraries/Box2D/Dynamics/$(am__dirstamp) \ libraries/Box2D/Dynamics/$(DEPDIR)/$(am__dirstamp) libraries/Wuff/$(am__dirstamp): @$(MKDIR_P) ./libraries/Wuff @: > libraries/Wuff/$(am__dirstamp) libraries/Wuff/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/Wuff/$(DEPDIR) @: > libraries/Wuff/$(DEPDIR)/$(am__dirstamp) ./libraries/Wuff/wuff_memory.lo: libraries/Wuff/$(am__dirstamp) \ libraries/Wuff/$(DEPDIR)/$(am__dirstamp) ./libraries/Wuff/wuff_convert.lo: libraries/Wuff/$(am__dirstamp) \ libraries/Wuff/$(DEPDIR)/$(am__dirstamp) ./libraries/Wuff/wuff.lo: libraries/Wuff/$(am__dirstamp) \ libraries/Wuff/$(DEPDIR)/$(am__dirstamp) ./libraries/Wuff/wuff_internal.lo: libraries/Wuff/$(am__dirstamp) \ libraries/Wuff/$(DEPDIR)/$(am__dirstamp) libraries/ddsparse/$(am__dirstamp): @$(MKDIR_P) ./libraries/ddsparse @: > libraries/ddsparse/$(am__dirstamp) libraries/ddsparse/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/ddsparse/$(DEPDIR) @: > libraries/ddsparse/$(DEPDIR)/$(am__dirstamp) ./libraries/ddsparse/ddsparse.lo: libraries/ddsparse/$(am__dirstamp) \ libraries/ddsparse/$(DEPDIR)/$(am__dirstamp) libraries/enet/libenet/$(am__dirstamp): @$(MKDIR_P) ./libraries/enet/libenet @: > libraries/enet/libenet/$(am__dirstamp) libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/enet/libenet/$(DEPDIR) @: > libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) ./libraries/enet/libenet/packet.lo: \ libraries/enet/libenet/$(am__dirstamp) \ libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) ./libraries/enet/libenet/protocol.lo: \ libraries/enet/libenet/$(am__dirstamp) \ libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) ./libraries/enet/libenet/win32.lo: \ libraries/enet/libenet/$(am__dirstamp) \ libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) ./libraries/enet/libenet/callbacks.lo: \ libraries/enet/libenet/$(am__dirstamp) \ libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) ./libraries/enet/libenet/list.lo: \ libraries/enet/libenet/$(am__dirstamp) \ libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) ./libraries/enet/libenet/compress.lo: \ libraries/enet/libenet/$(am__dirstamp) \ libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) ./libraries/enet/libenet/unix.lo: \ libraries/enet/libenet/$(am__dirstamp) \ libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) ./libraries/enet/libenet/peer.lo: \ libraries/enet/libenet/$(am__dirstamp) \ libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) ./libraries/enet/libenet/host.lo: \ libraries/enet/libenet/$(am__dirstamp) \ libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) libraries/enet/$(am__dirstamp): @$(MKDIR_P) ./libraries/enet @: > libraries/enet/$(am__dirstamp) libraries/enet/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/enet/$(DEPDIR) @: > libraries/enet/$(DEPDIR)/$(am__dirstamp) ./libraries/enet/enet.lo: libraries/enet/$(am__dirstamp) \ libraries/enet/$(DEPDIR)/$(am__dirstamp) libraries/luasocket/$(am__dirstamp): @$(MKDIR_P) ./libraries/luasocket @: > libraries/luasocket/$(am__dirstamp) libraries/luasocket/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/luasocket/$(DEPDIR) @: > libraries/luasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/luasocket.lo: \ libraries/luasocket/$(am__dirstamp) \ libraries/luasocket/$(DEPDIR)/$(am__dirstamp) libraries/luasocket/libluasocket/$(am__dirstamp): @$(MKDIR_P) ./libraries/luasocket/libluasocket @: > libraries/luasocket/libluasocket/$(am__dirstamp) libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/luasocket/libluasocket/$(DEPDIR) @: > libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/udp.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/usocket.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/auxiliar.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/io.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/select.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/tcp.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/inet.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/options.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/unix.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/timeout.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/except.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/buffer.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/mime.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) ./libraries/luasocket/libluasocket/luasocket.lo: \ libraries/luasocket/libluasocket/$(am__dirstamp) \ libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) libraries/noise1234/$(am__dirstamp): @$(MKDIR_P) ./libraries/noise1234 @: > libraries/noise1234/$(am__dirstamp) libraries/noise1234/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ./libraries/noise1234/$(DEPDIR) @: > libraries/noise1234/$(DEPDIR)/$(am__dirstamp) ./libraries/noise1234/simplexnoise1234.lo: \ libraries/noise1234/$(am__dirstamp) \ libraries/noise1234/$(DEPDIR)/$(am__dirstamp) ./modules/sound/lullaby/Mpg123Decoder.lo: \ modules/sound/lullaby/$(am__dirstamp) \ modules/sound/lullaby/$(DEPDIR)/$(am__dirstamp) liblove.la: $(liblove_la_OBJECTS) $(liblove_la_DEPENDENCIES) $(EXTRA_liblove_la_DEPENDENCIES) $(AM_V_CXXLD)$(liblove_la_LINK) -rpath $(libdir) $(liblove_la_OBJECTS) $(liblove_la_LIBADD) $(LIBS) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list love$(EXEEXT): $(love_OBJECTS) $(love_DEPENDENCIES) $(EXTRA_love_DEPENDENCIES) @rm -f love$(EXEEXT) $(AM_V_CXXLD)$(love_LINK) $(love_OBJECTS) $(love_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f ./common/Exception.$(OBJEXT) -rm -f ./common/Exception.lo -rm -f ./common/Matrix.$(OBJEXT) -rm -f ./common/Matrix.lo -rm -f ./common/Memoizer.$(OBJEXT) -rm -f ./common/Memoizer.lo -rm -f ./common/Module.$(OBJEXT) -rm -f ./common/Module.lo -rm -f ./common/Object.$(OBJEXT) -rm -f ./common/Object.lo -rm -f ./common/Reference.$(OBJEXT) -rm -f ./common/Reference.lo -rm -f ./common/Variant.$(OBJEXT) -rm -f ./common/Variant.lo -rm -f ./common/Vector.$(OBJEXT) -rm -f ./common/Vector.lo -rm -f ./common/b64.$(OBJEXT) -rm -f ./common/b64.lo -rm -f ./common/delay.$(OBJEXT) -rm -f ./common/delay.lo -rm -f ./common/runtime.$(OBJEXT) -rm -f ./common/runtime.lo -rm -f ./common/utf8.$(OBJEXT) -rm -f ./common/utf8.lo -rm -f ./common/wrap_Data.$(OBJEXT) -rm -f ./common/wrap_Data.lo -rm -f ./libraries/Box2D/Collision/Shapes/b2ChainShape.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/Shapes/b2ChainShape.lo -rm -f ./libraries/Box2D/Collision/Shapes/b2CircleShape.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/Shapes/b2CircleShape.lo -rm -f ./libraries/Box2D/Collision/Shapes/b2EdgeShape.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/Shapes/b2EdgeShape.lo -rm -f ./libraries/Box2D/Collision/Shapes/b2PolygonShape.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/Shapes/b2PolygonShape.lo -rm -f ./libraries/Box2D/Collision/b2BroadPhase.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/b2BroadPhase.lo -rm -f ./libraries/Box2D/Collision/b2CollideCircle.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/b2CollideCircle.lo -rm -f ./libraries/Box2D/Collision/b2CollideEdge.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/b2CollideEdge.lo -rm -f ./libraries/Box2D/Collision/b2CollidePolygon.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/b2CollidePolygon.lo -rm -f ./libraries/Box2D/Collision/b2Collision.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/b2Collision.lo -rm -f ./libraries/Box2D/Collision/b2Distance.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/b2Distance.lo -rm -f ./libraries/Box2D/Collision/b2DynamicTree.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/b2DynamicTree.lo -rm -f ./libraries/Box2D/Collision/b2TimeOfImpact.$(OBJEXT) -rm -f ./libraries/Box2D/Collision/b2TimeOfImpact.lo -rm -f ./libraries/Box2D/Common/b2BlockAllocator.$(OBJEXT) -rm -f ./libraries/Box2D/Common/b2BlockAllocator.lo -rm -f ./libraries/Box2D/Common/b2Draw.$(OBJEXT) -rm -f ./libraries/Box2D/Common/b2Draw.lo -rm -f ./libraries/Box2D/Common/b2Math.$(OBJEXT) -rm -f ./libraries/Box2D/Common/b2Math.lo -rm -f ./libraries/Box2D/Common/b2Settings.$(OBJEXT) -rm -f ./libraries/Box2D/Common/b2Settings.lo -rm -f ./libraries/Box2D/Common/b2StackAllocator.$(OBJEXT) -rm -f ./libraries/Box2D/Common/b2StackAllocator.lo -rm -f ./libraries/Box2D/Common/b2Timer.$(OBJEXT) -rm -f ./libraries/Box2D/Common/b2Timer.lo -rm -f ./libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.lo -rm -f ./libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.lo -rm -f ./libraries/Box2D/Dynamics/Contacts/b2CircleContact.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Contacts/b2CircleContact.lo -rm -f ./libraries/Box2D/Dynamics/Contacts/b2Contact.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Contacts/b2Contact.lo -rm -f ./libraries/Box2D/Dynamics/Contacts/b2ContactSolver.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Contacts/b2ContactSolver.lo -rm -f ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.lo -rm -f ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.lo -rm -f ./libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.lo -rm -f ./libraries/Box2D/Dynamics/Contacts/b2PolygonContact.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Contacts/b2PolygonContact.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2DistanceJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2DistanceJoint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2FrictionJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2FrictionJoint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2GearJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2GearJoint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2Joint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2Joint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2MotorJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2MotorJoint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2MouseJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2MouseJoint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2PulleyJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2PulleyJoint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2RopeJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2RopeJoint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2WeldJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2WeldJoint.lo -rm -f ./libraries/Box2D/Dynamics/Joints/b2WheelJoint.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/Joints/b2WheelJoint.lo -rm -f ./libraries/Box2D/Dynamics/b2Body.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/b2Body.lo -rm -f ./libraries/Box2D/Dynamics/b2ContactManager.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/b2ContactManager.lo -rm -f ./libraries/Box2D/Dynamics/b2Fixture.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/b2Fixture.lo -rm -f ./libraries/Box2D/Dynamics/b2Island.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/b2Island.lo -rm -f ./libraries/Box2D/Dynamics/b2World.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/b2World.lo -rm -f ./libraries/Box2D/Dynamics/b2WorldCallbacks.$(OBJEXT) -rm -f ./libraries/Box2D/Dynamics/b2WorldCallbacks.lo -rm -f ./libraries/Box2D/Rope/b2Rope.$(OBJEXT) -rm -f ./libraries/Box2D/Rope/b2Rope.lo -rm -f ./libraries/Wuff/wuff.$(OBJEXT) -rm -f ./libraries/Wuff/wuff.lo -rm -f ./libraries/Wuff/wuff_convert.$(OBJEXT) -rm -f ./libraries/Wuff/wuff_convert.lo -rm -f ./libraries/Wuff/wuff_internal.$(OBJEXT) -rm -f ./libraries/Wuff/wuff_internal.lo -rm -f ./libraries/Wuff/wuff_memory.$(OBJEXT) -rm -f ./libraries/Wuff/wuff_memory.lo -rm -f ./libraries/ddsparse/ddsparse.$(OBJEXT) -rm -f ./libraries/ddsparse/ddsparse.lo -rm -f ./libraries/enet/enet.$(OBJEXT) -rm -f ./libraries/enet/enet.lo -rm -f ./libraries/enet/libenet/callbacks.$(OBJEXT) -rm -f ./libraries/enet/libenet/callbacks.lo -rm -f ./libraries/enet/libenet/compress.$(OBJEXT) -rm -f ./libraries/enet/libenet/compress.lo -rm -f ./libraries/enet/libenet/host.$(OBJEXT) -rm -f ./libraries/enet/libenet/host.lo -rm -f ./libraries/enet/libenet/list.$(OBJEXT) -rm -f ./libraries/enet/libenet/list.lo -rm -f ./libraries/enet/libenet/packet.$(OBJEXT) -rm -f ./libraries/enet/libenet/packet.lo -rm -f ./libraries/enet/libenet/peer.$(OBJEXT) -rm -f ./libraries/enet/libenet/peer.lo -rm -f ./libraries/enet/libenet/protocol.$(OBJEXT) -rm -f ./libraries/enet/libenet/protocol.lo -rm -f ./libraries/enet/libenet/unix.$(OBJEXT) -rm -f ./libraries/enet/libenet/unix.lo -rm -f ./libraries/enet/libenet/win32.$(OBJEXT) -rm -f ./libraries/enet/libenet/win32.lo -rm -f ./libraries/luasocket/libluasocket/auxiliar.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/auxiliar.lo -rm -f ./libraries/luasocket/libluasocket/buffer.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/buffer.lo -rm -f ./libraries/luasocket/libluasocket/except.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/except.lo -rm -f ./libraries/luasocket/libluasocket/inet.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/inet.lo -rm -f ./libraries/luasocket/libluasocket/io.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/io.lo -rm -f ./libraries/luasocket/libluasocket/luasocket.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/luasocket.lo -rm -f ./libraries/luasocket/libluasocket/mime.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/mime.lo -rm -f ./libraries/luasocket/libluasocket/options.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/options.lo -rm -f ./libraries/luasocket/libluasocket/select.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/select.lo -rm -f ./libraries/luasocket/libluasocket/tcp.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/tcp.lo -rm -f ./libraries/luasocket/libluasocket/timeout.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/timeout.lo -rm -f ./libraries/luasocket/libluasocket/udp.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/udp.lo -rm -f ./libraries/luasocket/libluasocket/unix.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/unix.lo -rm -f ./libraries/luasocket/libluasocket/usocket.$(OBJEXT) -rm -f ./libraries/luasocket/libluasocket/usocket.lo -rm -f ./libraries/luasocket/luasocket.$(OBJEXT) -rm -f ./libraries/luasocket/luasocket.lo -rm -f ./libraries/noise1234/simplexnoise1234.$(OBJEXT) -rm -f ./libraries/noise1234/simplexnoise1234.lo -rm -f ./modules/audio/Audio.$(OBJEXT) -rm -f ./modules/audio/Audio.lo -rm -f ./modules/audio/Source.$(OBJEXT) -rm -f ./modules/audio/Source.lo -rm -f ./modules/audio/null/Audio.$(OBJEXT) -rm -f ./modules/audio/null/Audio.lo -rm -f ./modules/audio/null/Source.$(OBJEXT) -rm -f ./modules/audio/null/Source.lo -rm -f ./modules/audio/openal/Audio.$(OBJEXT) -rm -f ./modules/audio/openal/Audio.lo -rm -f ./modules/audio/openal/Pool.$(OBJEXT) -rm -f ./modules/audio/openal/Pool.lo -rm -f ./modules/audio/openal/Source.$(OBJEXT) -rm -f ./modules/audio/openal/Source.lo -rm -f ./modules/audio/wrap_Audio.$(OBJEXT) -rm -f ./modules/audio/wrap_Audio.lo -rm -f ./modules/audio/wrap_Source.$(OBJEXT) -rm -f ./modules/audio/wrap_Source.lo -rm -f ./modules/event/Event.$(OBJEXT) -rm -f ./modules/event/Event.lo -rm -f ./modules/event/sdl/Event.$(OBJEXT) -rm -f ./modules/event/sdl/Event.lo -rm -f ./modules/event/sdl/wrap_Event.$(OBJEXT) -rm -f ./modules/event/sdl/wrap_Event.lo -rm -f ./modules/filesystem/File.$(OBJEXT) -rm -f ./modules/filesystem/File.lo -rm -f ./modules/filesystem/FileData.$(OBJEXT) -rm -f ./modules/filesystem/FileData.lo -rm -f ./modules/filesystem/physfs/File.$(OBJEXT) -rm -f ./modules/filesystem/physfs/File.lo -rm -f ./modules/filesystem/physfs/Filesystem.$(OBJEXT) -rm -f ./modules/filesystem/physfs/Filesystem.lo -rm -f ./modules/filesystem/physfs/wrap_File.$(OBJEXT) -rm -f ./modules/filesystem/physfs/wrap_File.lo -rm -f ./modules/filesystem/physfs/wrap_FileData.$(OBJEXT) -rm -f ./modules/filesystem/physfs/wrap_FileData.lo -rm -f ./modules/filesystem/physfs/wrap_Filesystem.$(OBJEXT) -rm -f ./modules/filesystem/physfs/wrap_Filesystem.lo -rm -f ./modules/font/GlyphData.$(OBJEXT) -rm -f ./modules/font/GlyphData.lo -rm -f ./modules/font/ImageRasterizer.$(OBJEXT) -rm -f ./modules/font/ImageRasterizer.lo -rm -f ./modules/font/Rasterizer.$(OBJEXT) -rm -f ./modules/font/Rasterizer.lo -rm -f ./modules/font/freetype/Font.$(OBJEXT) -rm -f ./modules/font/freetype/Font.lo -rm -f ./modules/font/freetype/TrueTypeRasterizer.$(OBJEXT) -rm -f ./modules/font/freetype/TrueTypeRasterizer.lo -rm -f ./modules/font/freetype/wrap_Font.$(OBJEXT) -rm -f ./modules/font/freetype/wrap_Font.lo -rm -f ./modules/font/wrap_GlyphData.$(OBJEXT) -rm -f ./modules/font/wrap_GlyphData.lo -rm -f ./modules/font/wrap_Rasterizer.$(OBJEXT) -rm -f ./modules/font/wrap_Rasterizer.lo -rm -f ./modules/graphics/Graphics.$(OBJEXT) -rm -f ./modules/graphics/Graphics.lo -rm -f ./modules/graphics/Quad.$(OBJEXT) -rm -f ./modules/graphics/Quad.lo -rm -f ./modules/graphics/Texture.$(OBJEXT) -rm -f ./modules/graphics/Texture.lo -rm -f ./modules/graphics/Volatile.$(OBJEXT) -rm -f ./modules/graphics/Volatile.lo -rm -f ./modules/graphics/opengl/Canvas.$(OBJEXT) -rm -f ./modules/graphics/opengl/Canvas.lo -rm -f ./modules/graphics/opengl/Font.$(OBJEXT) -rm -f ./modules/graphics/opengl/Font.lo -rm -f ./modules/graphics/opengl/GLee.$(OBJEXT) -rm -f ./modules/graphics/opengl/GLee.lo -rm -f ./modules/graphics/opengl/Graphics.$(OBJEXT) -rm -f ./modules/graphics/opengl/Graphics.lo -rm -f ./modules/graphics/opengl/Image.$(OBJEXT) -rm -f ./modules/graphics/opengl/Image.lo -rm -f ./modules/graphics/opengl/Mesh.$(OBJEXT) -rm -f ./modules/graphics/opengl/Mesh.lo -rm -f ./modules/graphics/opengl/OpenGL.$(OBJEXT) -rm -f ./modules/graphics/opengl/OpenGL.lo -rm -f ./modules/graphics/opengl/ParticleSystem.$(OBJEXT) -rm -f ./modules/graphics/opengl/ParticleSystem.lo -rm -f ./modules/graphics/opengl/Polyline.$(OBJEXT) -rm -f ./modules/graphics/opengl/Polyline.lo -rm -f ./modules/graphics/opengl/Shader.$(OBJEXT) -rm -f ./modules/graphics/opengl/Shader.lo -rm -f ./modules/graphics/opengl/SpriteBatch.$(OBJEXT) -rm -f ./modules/graphics/opengl/SpriteBatch.lo -rm -f ./modules/graphics/opengl/VertexBuffer.$(OBJEXT) -rm -f ./modules/graphics/opengl/VertexBuffer.lo -rm -f ./modules/graphics/opengl/wrap_Canvas.$(OBJEXT) -rm -f ./modules/graphics/opengl/wrap_Canvas.lo -rm -f ./modules/graphics/opengl/wrap_Font.$(OBJEXT) -rm -f ./modules/graphics/opengl/wrap_Font.lo -rm -f ./modules/graphics/opengl/wrap_Graphics.$(OBJEXT) -rm -f ./modules/graphics/opengl/wrap_Graphics.lo -rm -f ./modules/graphics/opengl/wrap_Image.$(OBJEXT) -rm -f ./modules/graphics/opengl/wrap_Image.lo -rm -f ./modules/graphics/opengl/wrap_Mesh.$(OBJEXT) -rm -f ./modules/graphics/opengl/wrap_Mesh.lo -rm -f ./modules/graphics/opengl/wrap_ParticleSystem.$(OBJEXT) -rm -f ./modules/graphics/opengl/wrap_ParticleSystem.lo -rm -f ./modules/graphics/opengl/wrap_Quad.$(OBJEXT) -rm -f ./modules/graphics/opengl/wrap_Quad.lo -rm -f ./modules/graphics/opengl/wrap_Shader.$(OBJEXT) -rm -f ./modules/graphics/opengl/wrap_Shader.lo -rm -f ./modules/graphics/opengl/wrap_SpriteBatch.$(OBJEXT) -rm -f ./modules/graphics/opengl/wrap_SpriteBatch.lo -rm -f ./modules/graphics/opengl/wrap_Texture.$(OBJEXT) -rm -f ./modules/graphics/opengl/wrap_Texture.lo -rm -f ./modules/image/CompressedData.$(OBJEXT) -rm -f ./modules/image/CompressedData.lo -rm -f ./modules/image/ImageData.$(OBJEXT) -rm -f ./modules/image/ImageData.lo -rm -f ./modules/image/magpie/CompressedData.$(OBJEXT) -rm -f ./modules/image/magpie/CompressedData.lo -rm -f ./modules/image/magpie/DevilHandler.$(OBJEXT) -rm -f ./modules/image/magpie/DevilHandler.lo -rm -f ./modules/image/magpie/FormatHandler.$(OBJEXT) -rm -f ./modules/image/magpie/FormatHandler.lo -rm -f ./modules/image/magpie/Image.$(OBJEXT) -rm -f ./modules/image/magpie/Image.lo -rm -f ./modules/image/magpie/ImageData.$(OBJEXT) -rm -f ./modules/image/magpie/ImageData.lo -rm -f ./modules/image/magpie/ddsHandler.$(OBJEXT) -rm -f ./modules/image/magpie/ddsHandler.lo -rm -f ./modules/image/wrap_CompressedData.$(OBJEXT) -rm -f ./modules/image/wrap_CompressedData.lo -rm -f ./modules/image/wrap_Image.$(OBJEXT) -rm -f ./modules/image/wrap_Image.lo -rm -f ./modules/image/wrap_ImageData.$(OBJEXT) -rm -f ./modules/image/wrap_ImageData.lo -rm -f ./modules/joystick/Joystick.$(OBJEXT) -rm -f ./modules/joystick/Joystick.lo -rm -f ./modules/joystick/sdl/Joystick.$(OBJEXT) -rm -f ./modules/joystick/sdl/Joystick.lo -rm -f ./modules/joystick/sdl/JoystickModule.$(OBJEXT) -rm -f ./modules/joystick/sdl/JoystickModule.lo -rm -f ./modules/joystick/sdl/wrap_Joystick.$(OBJEXT) -rm -f ./modules/joystick/sdl/wrap_Joystick.lo -rm -f ./modules/joystick/sdl/wrap_JoystickModule.$(OBJEXT) -rm -f ./modules/joystick/sdl/wrap_JoystickModule.lo -rm -f ./modules/keyboard/Keyboard.$(OBJEXT) -rm -f ./modules/keyboard/Keyboard.lo -rm -f ./modules/keyboard/sdl/Keyboard.$(OBJEXT) -rm -f ./modules/keyboard/sdl/Keyboard.lo -rm -f ./modules/keyboard/wrap_Keyboard.$(OBJEXT) -rm -f ./modules/keyboard/wrap_Keyboard.lo -rm -f ./modules/love/love.$(OBJEXT) -rm -f ./modules/love/love.lo -rm -f ./modules/math/BezierCurve.$(OBJEXT) -rm -f ./modules/math/BezierCurve.lo -rm -f ./modules/math/MathModule.$(OBJEXT) -rm -f ./modules/math/MathModule.lo -rm -f ./modules/math/RandomGenerator.$(OBJEXT) -rm -f ./modules/math/RandomGenerator.lo -rm -f ./modules/math/wrap_BezierCurve.$(OBJEXT) -rm -f ./modules/math/wrap_BezierCurve.lo -rm -f ./modules/math/wrap_Math.$(OBJEXT) -rm -f ./modules/math/wrap_Math.lo -rm -f ./modules/math/wrap_RandomGenerator.$(OBJEXT) -rm -f ./modules/math/wrap_RandomGenerator.lo -rm -f ./modules/mouse/Cursor.$(OBJEXT) -rm -f ./modules/mouse/Cursor.lo -rm -f ./modules/mouse/Mouse.$(OBJEXT) -rm -f ./modules/mouse/Mouse.lo -rm -f ./modules/mouse/sdl/Cursor.$(OBJEXT) -rm -f ./modules/mouse/sdl/Cursor.lo -rm -f ./modules/mouse/sdl/Mouse.$(OBJEXT) -rm -f ./modules/mouse/sdl/Mouse.lo -rm -f ./modules/mouse/wrap_Cursor.$(OBJEXT) -rm -f ./modules/mouse/wrap_Cursor.lo -rm -f ./modules/mouse/wrap_Mouse.$(OBJEXT) -rm -f ./modules/mouse/wrap_Mouse.lo -rm -f ./modules/physics/Body.$(OBJEXT) -rm -f ./modules/physics/Body.lo -rm -f ./modules/physics/Joint.$(OBJEXT) -rm -f ./modules/physics/Joint.lo -rm -f ./modules/physics/Shape.$(OBJEXT) -rm -f ./modules/physics/Shape.lo -rm -f ./modules/physics/box2d/Body.$(OBJEXT) -rm -f ./modules/physics/box2d/Body.lo -rm -f ./modules/physics/box2d/ChainShape.$(OBJEXT) -rm -f ./modules/physics/box2d/ChainShape.lo -rm -f ./modules/physics/box2d/CircleShape.$(OBJEXT) -rm -f ./modules/physics/box2d/CircleShape.lo -rm -f ./modules/physics/box2d/Contact.$(OBJEXT) -rm -f ./modules/physics/box2d/Contact.lo -rm -f ./modules/physics/box2d/DistanceJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/DistanceJoint.lo -rm -f ./modules/physics/box2d/EdgeShape.$(OBJEXT) -rm -f ./modules/physics/box2d/EdgeShape.lo -rm -f ./modules/physics/box2d/Fixture.$(OBJEXT) -rm -f ./modules/physics/box2d/Fixture.lo -rm -f ./modules/physics/box2d/FrictionJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/FrictionJoint.lo -rm -f ./modules/physics/box2d/GearJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/GearJoint.lo -rm -f ./modules/physics/box2d/Joint.$(OBJEXT) -rm -f ./modules/physics/box2d/Joint.lo -rm -f ./modules/physics/box2d/MotorJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/MotorJoint.lo -rm -f ./modules/physics/box2d/MouseJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/MouseJoint.lo -rm -f ./modules/physics/box2d/Physics.$(OBJEXT) -rm -f ./modules/physics/box2d/Physics.lo -rm -f ./modules/physics/box2d/PolygonShape.$(OBJEXT) -rm -f ./modules/physics/box2d/PolygonShape.lo -rm -f ./modules/physics/box2d/PrismaticJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/PrismaticJoint.lo -rm -f ./modules/physics/box2d/PulleyJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/PulleyJoint.lo -rm -f ./modules/physics/box2d/RevoluteJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/RevoluteJoint.lo -rm -f ./modules/physics/box2d/RopeJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/RopeJoint.lo -rm -f ./modules/physics/box2d/Shape.$(OBJEXT) -rm -f ./modules/physics/box2d/Shape.lo -rm -f ./modules/physics/box2d/WeldJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/WeldJoint.lo -rm -f ./modules/physics/box2d/WheelJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/WheelJoint.lo -rm -f ./modules/physics/box2d/World.$(OBJEXT) -rm -f ./modules/physics/box2d/World.lo -rm -f ./modules/physics/box2d/wrap_Body.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_Body.lo -rm -f ./modules/physics/box2d/wrap_ChainShape.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_ChainShape.lo -rm -f ./modules/physics/box2d/wrap_CircleShape.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_CircleShape.lo -rm -f ./modules/physics/box2d/wrap_Contact.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_Contact.lo -rm -f ./modules/physics/box2d/wrap_DistanceJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_DistanceJoint.lo -rm -f ./modules/physics/box2d/wrap_EdgeShape.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_EdgeShape.lo -rm -f ./modules/physics/box2d/wrap_Fixture.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_Fixture.lo -rm -f ./modules/physics/box2d/wrap_FrictionJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_FrictionJoint.lo -rm -f ./modules/physics/box2d/wrap_GearJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_GearJoint.lo -rm -f ./modules/physics/box2d/wrap_Joint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_Joint.lo -rm -f ./modules/physics/box2d/wrap_MotorJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_MotorJoint.lo -rm -f ./modules/physics/box2d/wrap_MouseJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_MouseJoint.lo -rm -f ./modules/physics/box2d/wrap_Physics.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_Physics.lo -rm -f ./modules/physics/box2d/wrap_PolygonShape.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_PolygonShape.lo -rm -f ./modules/physics/box2d/wrap_PrismaticJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_PrismaticJoint.lo -rm -f ./modules/physics/box2d/wrap_PulleyJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_PulleyJoint.lo -rm -f ./modules/physics/box2d/wrap_RevoluteJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_RevoluteJoint.lo -rm -f ./modules/physics/box2d/wrap_RopeJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_RopeJoint.lo -rm -f ./modules/physics/box2d/wrap_Shape.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_Shape.lo -rm -f ./modules/physics/box2d/wrap_WeldJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_WeldJoint.lo -rm -f ./modules/physics/box2d/wrap_WheelJoint.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_WheelJoint.lo -rm -f ./modules/physics/box2d/wrap_World.$(OBJEXT) -rm -f ./modules/physics/box2d/wrap_World.lo -rm -f ./modules/sound/Sound.$(OBJEXT) -rm -f ./modules/sound/Sound.lo -rm -f ./modules/sound/SoundData.$(OBJEXT) -rm -f ./modules/sound/SoundData.lo -rm -f ./modules/sound/lullaby/Decoder.$(OBJEXT) -rm -f ./modules/sound/lullaby/Decoder.lo -rm -f ./modules/sound/lullaby/GmeDecoder.$(OBJEXT) -rm -f ./modules/sound/lullaby/GmeDecoder.lo -rm -f ./modules/sound/lullaby/ModPlugDecoder.$(OBJEXT) -rm -f ./modules/sound/lullaby/ModPlugDecoder.lo -rm -f ./modules/sound/lullaby/Mpg123Decoder.$(OBJEXT) -rm -f ./modules/sound/lullaby/Mpg123Decoder.lo -rm -f ./modules/sound/lullaby/Sound.$(OBJEXT) -rm -f ./modules/sound/lullaby/Sound.lo -rm -f ./modules/sound/lullaby/VorbisDecoder.$(OBJEXT) -rm -f ./modules/sound/lullaby/VorbisDecoder.lo -rm -f ./modules/sound/lullaby/WaveDecoder.$(OBJEXT) -rm -f ./modules/sound/lullaby/WaveDecoder.lo -rm -f ./modules/sound/wrap_Decoder.$(OBJEXT) -rm -f ./modules/sound/wrap_Decoder.lo -rm -f ./modules/sound/wrap_Sound.$(OBJEXT) -rm -f ./modules/sound/wrap_Sound.lo -rm -f ./modules/sound/wrap_SoundData.$(OBJEXT) -rm -f ./modules/sound/wrap_SoundData.lo -rm -f ./modules/system/System.$(OBJEXT) -rm -f ./modules/system/System.lo -rm -f ./modules/system/sdl/System.$(OBJEXT) -rm -f ./modules/system/sdl/System.lo -rm -f ./modules/system/wrap_System.$(OBJEXT) -rm -f ./modules/system/wrap_System.lo -rm -f ./modules/thread/Channel.$(OBJEXT) -rm -f ./modules/thread/Channel.lo -rm -f ./modules/thread/LuaThread.$(OBJEXT) -rm -f ./modules/thread/LuaThread.lo -rm -f ./modules/thread/ThreadModule.$(OBJEXT) -rm -f ./modules/thread/ThreadModule.lo -rm -f ./modules/thread/sdl/Thread.$(OBJEXT) -rm -f ./modules/thread/sdl/Thread.lo -rm -f ./modules/thread/sdl/threads.$(OBJEXT) -rm -f ./modules/thread/sdl/threads.lo -rm -f ./modules/thread/threads.$(OBJEXT) -rm -f ./modules/thread/threads.lo -rm -f ./modules/thread/wrap_Channel.$(OBJEXT) -rm -f ./modules/thread/wrap_Channel.lo -rm -f ./modules/thread/wrap_LuaThread.$(OBJEXT) -rm -f ./modules/thread/wrap_LuaThread.lo -rm -f ./modules/thread/wrap_ThreadModule.$(OBJEXT) -rm -f ./modules/thread/wrap_ThreadModule.lo -rm -f ./modules/timer/sdl/Timer.$(OBJEXT) -rm -f ./modules/timer/sdl/Timer.lo -rm -f ./modules/timer/wrap_Timer.$(OBJEXT) -rm -f ./modules/timer/wrap_Timer.lo -rm -f ./modules/window/Window.$(OBJEXT) -rm -f ./modules/window/Window.lo -rm -f ./modules/window/sdl/Window.$(OBJEXT) -rm -f ./modules/window/sdl/Window.lo -rm -f ./modules/window/wrap_Window.$(OBJEXT) -rm -f ./modules/window/wrap_Window.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/love.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/Exception.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/Matrix.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/Memoizer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/Module.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/Object.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/Reference.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/Variant.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/Vector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/b64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/delay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/runtime.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/utf8.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./common/$(DEPDIR)/wrap_Data.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/$(DEPDIR)/b2BroadPhase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/$(DEPDIR)/b2CollideCircle.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/$(DEPDIR)/b2CollideEdge.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/$(DEPDIR)/b2CollidePolygon.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/$(DEPDIR)/b2Collision.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/$(DEPDIR)/b2Distance.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/$(DEPDIR)/b2DynamicTree.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/$(DEPDIR)/b2TimeOfImpact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/Shapes/$(DEPDIR)/b2ChainShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/Shapes/$(DEPDIR)/b2CircleShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/Shapes/$(DEPDIR)/b2EdgeShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Collision/Shapes/$(DEPDIR)/b2PolygonShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Common/$(DEPDIR)/b2BlockAllocator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Common/$(DEPDIR)/b2Draw.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Common/$(DEPDIR)/b2Math.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Common/$(DEPDIR)/b2Settings.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Common/$(DEPDIR)/b2StackAllocator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Common/$(DEPDIR)/b2Timer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/$(DEPDIR)/b2Body.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/$(DEPDIR)/b2ContactManager.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/$(DEPDIR)/b2Fixture.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/$(DEPDIR)/b2Island.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/$(DEPDIR)/b2World.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/$(DEPDIR)/b2WorldCallbacks.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/b2ChainAndCircleContact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/b2ChainAndPolygonContact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/b2CircleContact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/b2Contact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/b2ContactSolver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/b2EdgeAndCircleContact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/b2EdgeAndPolygonContact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/b2PolygonAndCircleContact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/b2PolygonContact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2DistanceJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2FrictionJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2GearJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2Joint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2MotorJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2MouseJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2PrismaticJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2PulleyJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2RevoluteJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2RopeJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2WeldJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Dynamics/Joints/$(DEPDIR)/b2WheelJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Box2D/Rope/$(DEPDIR)/b2Rope.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Wuff/$(DEPDIR)/wuff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Wuff/$(DEPDIR)/wuff_convert.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Wuff/$(DEPDIR)/wuff_internal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/Wuff/$(DEPDIR)/wuff_memory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/ddsparse/$(DEPDIR)/ddsparse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/enet/$(DEPDIR)/enet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/enet/libenet/$(DEPDIR)/callbacks.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/enet/libenet/$(DEPDIR)/compress.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/enet/libenet/$(DEPDIR)/host.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/enet/libenet/$(DEPDIR)/list.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/enet/libenet/$(DEPDIR)/packet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/enet/libenet/$(DEPDIR)/peer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/enet/libenet/$(DEPDIR)/protocol.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/enet/libenet/$(DEPDIR)/unix.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/enet/libenet/$(DEPDIR)/win32.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/$(DEPDIR)/luasocket.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/auxiliar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/buffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/except.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/inet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/io.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/luasocket.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/mime.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/options.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/select.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/tcp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/timeout.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/udp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/unix.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/luasocket/libluasocket/$(DEPDIR)/usocket.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./libraries/noise1234/$(DEPDIR)/simplexnoise1234.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/audio/$(DEPDIR)/Audio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/audio/$(DEPDIR)/Source.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/audio/$(DEPDIR)/wrap_Audio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/audio/$(DEPDIR)/wrap_Source.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/audio/null/$(DEPDIR)/Audio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/audio/null/$(DEPDIR)/Source.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/audio/openal/$(DEPDIR)/Audio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/audio/openal/$(DEPDIR)/Pool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/audio/openal/$(DEPDIR)/Source.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/event/$(DEPDIR)/Event.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/event/sdl/$(DEPDIR)/Event.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/event/sdl/$(DEPDIR)/wrap_Event.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/filesystem/$(DEPDIR)/File.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/filesystem/$(DEPDIR)/FileData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/filesystem/physfs/$(DEPDIR)/File.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/filesystem/physfs/$(DEPDIR)/Filesystem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/filesystem/physfs/$(DEPDIR)/wrap_File.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/filesystem/physfs/$(DEPDIR)/wrap_FileData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/filesystem/physfs/$(DEPDIR)/wrap_Filesystem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/font/$(DEPDIR)/GlyphData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/font/$(DEPDIR)/ImageRasterizer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/font/$(DEPDIR)/Rasterizer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/font/$(DEPDIR)/wrap_GlyphData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/font/$(DEPDIR)/wrap_Rasterizer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/font/freetype/$(DEPDIR)/Font.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/font/freetype/$(DEPDIR)/TrueTypeRasterizer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/font/freetype/$(DEPDIR)/wrap_Font.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/$(DEPDIR)/Graphics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/$(DEPDIR)/Quad.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/$(DEPDIR)/Texture.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/$(DEPDIR)/Volatile.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/Canvas.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/Font.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/GLee.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/Graphics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/Image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/Mesh.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/OpenGL.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/ParticleSystem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/Polyline.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/Shader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/SpriteBatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/VertexBuffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/wrap_Canvas.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/wrap_Font.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/wrap_Graphics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/wrap_Image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/wrap_Mesh.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/wrap_ParticleSystem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/wrap_Quad.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/wrap_Shader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/wrap_SpriteBatch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/graphics/opengl/$(DEPDIR)/wrap_Texture.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/$(DEPDIR)/CompressedData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/$(DEPDIR)/ImageData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/$(DEPDIR)/wrap_CompressedData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/$(DEPDIR)/wrap_Image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/$(DEPDIR)/wrap_ImageData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/magpie/$(DEPDIR)/CompressedData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/magpie/$(DEPDIR)/DevilHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/magpie/$(DEPDIR)/FormatHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/magpie/$(DEPDIR)/Image.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/magpie/$(DEPDIR)/ImageData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/image/magpie/$(DEPDIR)/ddsHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/joystick/$(DEPDIR)/Joystick.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/joystick/sdl/$(DEPDIR)/Joystick.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/joystick/sdl/$(DEPDIR)/JoystickModule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/joystick/sdl/$(DEPDIR)/wrap_Joystick.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/joystick/sdl/$(DEPDIR)/wrap_JoystickModule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/keyboard/$(DEPDIR)/Keyboard.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/keyboard/$(DEPDIR)/wrap_Keyboard.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/keyboard/sdl/$(DEPDIR)/Keyboard.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/love/$(DEPDIR)/love.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/math/$(DEPDIR)/BezierCurve.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/math/$(DEPDIR)/MathModule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/math/$(DEPDIR)/RandomGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/math/$(DEPDIR)/wrap_BezierCurve.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/math/$(DEPDIR)/wrap_Math.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/math/$(DEPDIR)/wrap_RandomGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/mouse/$(DEPDIR)/Cursor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/mouse/$(DEPDIR)/Mouse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/mouse/$(DEPDIR)/wrap_Cursor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/mouse/$(DEPDIR)/wrap_Mouse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/mouse/sdl/$(DEPDIR)/Cursor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/mouse/sdl/$(DEPDIR)/Mouse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/$(DEPDIR)/Body.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/$(DEPDIR)/Joint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/$(DEPDIR)/Shape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/Body.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/ChainShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/CircleShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/Contact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/DistanceJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/EdgeShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/Fixture.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/FrictionJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/GearJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/Joint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/MotorJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/MouseJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/Physics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/PolygonShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/PrismaticJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/PulleyJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/RevoluteJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/RopeJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/Shape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/WeldJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/WheelJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/World.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_Body.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_ChainShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_CircleShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_Contact.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_DistanceJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_EdgeShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_Fixture.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_FrictionJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_GearJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_Joint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_MotorJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_MouseJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_Physics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_PolygonShape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_PrismaticJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_PulleyJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_RevoluteJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_RopeJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_Shape.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_WeldJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_WheelJoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/physics/box2d/$(DEPDIR)/wrap_World.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/$(DEPDIR)/Sound.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/$(DEPDIR)/SoundData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/$(DEPDIR)/wrap_Decoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/$(DEPDIR)/wrap_Sound.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/$(DEPDIR)/wrap_SoundData.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/lullaby/$(DEPDIR)/Decoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/lullaby/$(DEPDIR)/GmeDecoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/lullaby/$(DEPDIR)/ModPlugDecoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/lullaby/$(DEPDIR)/Mpg123Decoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/lullaby/$(DEPDIR)/Sound.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/lullaby/$(DEPDIR)/VorbisDecoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/sound/lullaby/$(DEPDIR)/WaveDecoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/system/$(DEPDIR)/System.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/system/$(DEPDIR)/wrap_System.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/system/sdl/$(DEPDIR)/System.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/thread/$(DEPDIR)/Channel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/thread/$(DEPDIR)/LuaThread.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/thread/$(DEPDIR)/ThreadModule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/thread/$(DEPDIR)/threads.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/thread/$(DEPDIR)/wrap_Channel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/thread/$(DEPDIR)/wrap_LuaThread.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/thread/$(DEPDIR)/wrap_ThreadModule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/thread/sdl/$(DEPDIR)/Thread.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/thread/sdl/$(DEPDIR)/threads.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/timer/$(DEPDIR)/wrap_Timer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/timer/sdl/$(DEPDIR)/Timer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/window/$(DEPDIR)/Window.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/window/$(DEPDIR)/wrap_Window.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./modules/window/sdl/$(DEPDIR)/Window.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf ./common/.libs ./common/_libs -rm -rf ./libraries/Box2D/Collision/.libs ./libraries/Box2D/Collision/_libs -rm -rf ./libraries/Box2D/Collision/Shapes/.libs ./libraries/Box2D/Collision/Shapes/_libs -rm -rf ./libraries/Box2D/Common/.libs ./libraries/Box2D/Common/_libs -rm -rf ./libraries/Box2D/Dynamics/.libs ./libraries/Box2D/Dynamics/_libs -rm -rf ./libraries/Box2D/Dynamics/Contacts/.libs ./libraries/Box2D/Dynamics/Contacts/_libs -rm -rf ./libraries/Box2D/Dynamics/Joints/.libs ./libraries/Box2D/Dynamics/Joints/_libs -rm -rf ./libraries/Box2D/Rope/.libs ./libraries/Box2D/Rope/_libs -rm -rf ./libraries/Wuff/.libs ./libraries/Wuff/_libs -rm -rf ./libraries/ddsparse/.libs ./libraries/ddsparse/_libs -rm -rf ./libraries/enet/.libs ./libraries/enet/_libs -rm -rf ./libraries/enet/libenet/.libs ./libraries/enet/libenet/_libs -rm -rf ./libraries/luasocket/.libs ./libraries/luasocket/_libs -rm -rf ./libraries/luasocket/libluasocket/.libs ./libraries/luasocket/libluasocket/_libs -rm -rf ./libraries/noise1234/.libs ./libraries/noise1234/_libs -rm -rf ./modules/audio/.libs ./modules/audio/_libs -rm -rf ./modules/audio/null/.libs ./modules/audio/null/_libs -rm -rf ./modules/audio/openal/.libs ./modules/audio/openal/_libs -rm -rf ./modules/event/.libs ./modules/event/_libs -rm -rf ./modules/event/sdl/.libs ./modules/event/sdl/_libs -rm -rf ./modules/filesystem/.libs ./modules/filesystem/_libs -rm -rf ./modules/filesystem/physfs/.libs ./modules/filesystem/physfs/_libs -rm -rf ./modules/font/.libs ./modules/font/_libs -rm -rf ./modules/font/freetype/.libs ./modules/font/freetype/_libs -rm -rf ./modules/graphics/.libs ./modules/graphics/_libs -rm -rf ./modules/graphics/opengl/.libs ./modules/graphics/opengl/_libs -rm -rf ./modules/image/.libs ./modules/image/_libs -rm -rf ./modules/image/magpie/.libs ./modules/image/magpie/_libs -rm -rf ./modules/joystick/.libs ./modules/joystick/_libs -rm -rf ./modules/joystick/sdl/.libs ./modules/joystick/sdl/_libs -rm -rf ./modules/keyboard/.libs ./modules/keyboard/_libs -rm -rf ./modules/keyboard/sdl/.libs ./modules/keyboard/sdl/_libs -rm -rf ./modules/love/.libs ./modules/love/_libs -rm -rf ./modules/math/.libs ./modules/math/_libs -rm -rf ./modules/mouse/.libs ./modules/mouse/_libs -rm -rf ./modules/mouse/sdl/.libs ./modules/mouse/sdl/_libs -rm -rf ./modules/physics/.libs ./modules/physics/_libs -rm -rf ./modules/physics/box2d/.libs ./modules/physics/box2d/_libs -rm -rf ./modules/sound/.libs ./modules/sound/_libs -rm -rf ./modules/sound/lullaby/.libs ./modules/sound/lullaby/_libs -rm -rf ./modules/system/.libs ./modules/system/_libs -rm -rf ./modules/system/sdl/.libs ./modules/system/sdl/_libs -rm -rf ./modules/thread/.libs ./modules/thread/_libs -rm -rf ./modules/thread/sdl/.libs ./modules/thread/sdl/_libs -rm -rf ./modules/timer/.libs ./modules/timer/_libs -rm -rf ./modules/timer/sdl/.libs ./modules/timer/sdl/_libs -rm -rf ./modules/window/.libs ./modules/window/_libs -rm -rf ./modules/window/sdl/.libs ./modules/window/sdl/_libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) install-binPROGRAMS: install-libLTLIBRARIES installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f common/$(DEPDIR)/$(am__dirstamp) -rm -f common/$(am__dirstamp) -rm -f libraries/Box2D/Collision/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/Box2D/Collision/$(am__dirstamp) -rm -f libraries/Box2D/Collision/Shapes/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/Box2D/Collision/Shapes/$(am__dirstamp) -rm -f libraries/Box2D/Common/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/Box2D/Common/$(am__dirstamp) -rm -f libraries/Box2D/Dynamics/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/Box2D/Dynamics/$(am__dirstamp) -rm -f libraries/Box2D/Dynamics/Contacts/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/Box2D/Dynamics/Contacts/$(am__dirstamp) -rm -f libraries/Box2D/Dynamics/Joints/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/Box2D/Dynamics/Joints/$(am__dirstamp) -rm -f libraries/Box2D/Rope/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/Box2D/Rope/$(am__dirstamp) -rm -f libraries/Wuff/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/Wuff/$(am__dirstamp) -rm -f libraries/ddsparse/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/ddsparse/$(am__dirstamp) -rm -f libraries/enet/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/enet/$(am__dirstamp) -rm -f libraries/enet/libenet/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/enet/libenet/$(am__dirstamp) -rm -f libraries/luasocket/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/luasocket/$(am__dirstamp) -rm -f libraries/luasocket/libluasocket/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/luasocket/libluasocket/$(am__dirstamp) -rm -f libraries/noise1234/$(DEPDIR)/$(am__dirstamp) -rm -f libraries/noise1234/$(am__dirstamp) -rm -f modules/audio/$(DEPDIR)/$(am__dirstamp) -rm -f modules/audio/$(am__dirstamp) -rm -f modules/audio/null/$(DEPDIR)/$(am__dirstamp) -rm -f modules/audio/null/$(am__dirstamp) -rm -f modules/audio/openal/$(DEPDIR)/$(am__dirstamp) -rm -f modules/audio/openal/$(am__dirstamp) -rm -f modules/event/$(DEPDIR)/$(am__dirstamp) -rm -f modules/event/$(am__dirstamp) -rm -f modules/event/sdl/$(DEPDIR)/$(am__dirstamp) -rm -f modules/event/sdl/$(am__dirstamp) -rm -f modules/filesystem/$(DEPDIR)/$(am__dirstamp) -rm -f modules/filesystem/$(am__dirstamp) -rm -f modules/filesystem/physfs/$(DEPDIR)/$(am__dirstamp) -rm -f modules/filesystem/physfs/$(am__dirstamp) -rm -f modules/font/$(DEPDIR)/$(am__dirstamp) -rm -f modules/font/$(am__dirstamp) -rm -f modules/font/freetype/$(DEPDIR)/$(am__dirstamp) -rm -f modules/font/freetype/$(am__dirstamp) -rm -f modules/graphics/$(DEPDIR)/$(am__dirstamp) -rm -f modules/graphics/$(am__dirstamp) -rm -f modules/graphics/opengl/$(DEPDIR)/$(am__dirstamp) -rm -f modules/graphics/opengl/$(am__dirstamp) -rm -f modules/image/$(DEPDIR)/$(am__dirstamp) -rm -f modules/image/$(am__dirstamp) -rm -f modules/image/magpie/$(DEPDIR)/$(am__dirstamp) -rm -f modules/image/magpie/$(am__dirstamp) -rm -f modules/joystick/$(DEPDIR)/$(am__dirstamp) -rm -f modules/joystick/$(am__dirstamp) -rm -f modules/joystick/sdl/$(DEPDIR)/$(am__dirstamp) -rm -f modules/joystick/sdl/$(am__dirstamp) -rm -f modules/keyboard/$(DEPDIR)/$(am__dirstamp) -rm -f modules/keyboard/$(am__dirstamp) -rm -f modules/keyboard/sdl/$(DEPDIR)/$(am__dirstamp) -rm -f modules/keyboard/sdl/$(am__dirstamp) -rm -f modules/love/$(DEPDIR)/$(am__dirstamp) -rm -f modules/love/$(am__dirstamp) -rm -f modules/math/$(DEPDIR)/$(am__dirstamp) -rm -f modules/math/$(am__dirstamp) -rm -f modules/mouse/$(DEPDIR)/$(am__dirstamp) -rm -f modules/mouse/$(am__dirstamp) -rm -f modules/mouse/sdl/$(DEPDIR)/$(am__dirstamp) -rm -f modules/mouse/sdl/$(am__dirstamp) -rm -f modules/physics/$(DEPDIR)/$(am__dirstamp) -rm -f modules/physics/$(am__dirstamp) -rm -f modules/physics/box2d/$(DEPDIR)/$(am__dirstamp) -rm -f modules/physics/box2d/$(am__dirstamp) -rm -f modules/sound/$(DEPDIR)/$(am__dirstamp) -rm -f modules/sound/$(am__dirstamp) -rm -f modules/sound/lullaby/$(DEPDIR)/$(am__dirstamp) -rm -f modules/sound/lullaby/$(am__dirstamp) -rm -f modules/system/$(DEPDIR)/$(am__dirstamp) -rm -f modules/system/$(am__dirstamp) -rm -f modules/system/sdl/$(DEPDIR)/$(am__dirstamp) -rm -f modules/system/sdl/$(am__dirstamp) -rm -f modules/thread/$(DEPDIR)/$(am__dirstamp) -rm -f modules/thread/$(am__dirstamp) -rm -f modules/thread/sdl/$(DEPDIR)/$(am__dirstamp) -rm -f modules/thread/sdl/$(am__dirstamp) -rm -f modules/timer/$(DEPDIR)/$(am__dirstamp) -rm -f modules/timer/$(am__dirstamp) -rm -f modules/timer/sdl/$(DEPDIR)/$(am__dirstamp) -rm -f modules/timer/sdl/$(am__dirstamp) -rm -f modules/window/$(DEPDIR)/$(am__dirstamp) -rm -f modules/window/$(am__dirstamp) -rm -f modules/window/sdl/$(DEPDIR)/$(am__dirstamp) -rm -f modules/window/sdl/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ clean-libtool mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) ./common/$(DEPDIR) ./libraries/Box2D/Collision/$(DEPDIR) ./libraries/Box2D/Collision/Shapes/$(DEPDIR) ./libraries/Box2D/Common/$(DEPDIR) ./libraries/Box2D/Dynamics/$(DEPDIR) ./libraries/Box2D/Dynamics/Contacts/$(DEPDIR) ./libraries/Box2D/Dynamics/Joints/$(DEPDIR) ./libraries/Box2D/Rope/$(DEPDIR) ./libraries/Wuff/$(DEPDIR) ./libraries/ddsparse/$(DEPDIR) ./libraries/enet/$(DEPDIR) ./libraries/enet/libenet/$(DEPDIR) ./libraries/luasocket/$(DEPDIR) ./libraries/luasocket/libluasocket/$(DEPDIR) ./libraries/noise1234/$(DEPDIR) ./modules/audio/$(DEPDIR) ./modules/audio/null/$(DEPDIR) ./modules/audio/openal/$(DEPDIR) ./modules/event/$(DEPDIR) ./modules/event/sdl/$(DEPDIR) ./modules/filesystem/$(DEPDIR) ./modules/filesystem/physfs/$(DEPDIR) ./modules/font/$(DEPDIR) ./modules/font/freetype/$(DEPDIR) ./modules/graphics/$(DEPDIR) ./modules/graphics/opengl/$(DEPDIR) ./modules/image/$(DEPDIR) ./modules/image/magpie/$(DEPDIR) ./modules/joystick/$(DEPDIR) ./modules/joystick/sdl/$(DEPDIR) ./modules/keyboard/$(DEPDIR) ./modules/keyboard/sdl/$(DEPDIR) ./modules/love/$(DEPDIR) ./modules/math/$(DEPDIR) ./modules/mouse/$(DEPDIR) ./modules/mouse/sdl/$(DEPDIR) ./modules/physics/$(DEPDIR) ./modules/physics/box2d/$(DEPDIR) ./modules/sound/$(DEPDIR) ./modules/sound/lullaby/$(DEPDIR) ./modules/system/$(DEPDIR) ./modules/system/sdl/$(DEPDIR) ./modules/thread/$(DEPDIR) ./modules/thread/sdl/$(DEPDIR) ./modules/timer/$(DEPDIR) ./modules/timer/sdl/$(DEPDIR) ./modules/window/$(DEPDIR) ./modules/window/sdl/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-libLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) ./common/$(DEPDIR) ./libraries/Box2D/Collision/$(DEPDIR) ./libraries/Box2D/Collision/Shapes/$(DEPDIR) ./libraries/Box2D/Common/$(DEPDIR) ./libraries/Box2D/Dynamics/$(DEPDIR) ./libraries/Box2D/Dynamics/Contacts/$(DEPDIR) ./libraries/Box2D/Dynamics/Joints/$(DEPDIR) ./libraries/Box2D/Rope/$(DEPDIR) ./libraries/Wuff/$(DEPDIR) ./libraries/ddsparse/$(DEPDIR) ./libraries/enet/$(DEPDIR) ./libraries/enet/libenet/$(DEPDIR) ./libraries/luasocket/$(DEPDIR) ./libraries/luasocket/libluasocket/$(DEPDIR) ./libraries/noise1234/$(DEPDIR) ./modules/audio/$(DEPDIR) ./modules/audio/null/$(DEPDIR) ./modules/audio/openal/$(DEPDIR) ./modules/event/$(DEPDIR) ./modules/event/sdl/$(DEPDIR) ./modules/filesystem/$(DEPDIR) ./modules/filesystem/physfs/$(DEPDIR) ./modules/font/$(DEPDIR) ./modules/font/freetype/$(DEPDIR) ./modules/graphics/$(DEPDIR) ./modules/graphics/opengl/$(DEPDIR) ./modules/image/$(DEPDIR) ./modules/image/magpie/$(DEPDIR) ./modules/joystick/$(DEPDIR) ./modules/joystick/sdl/$(DEPDIR) ./modules/keyboard/$(DEPDIR) ./modules/keyboard/sdl/$(DEPDIR) ./modules/love/$(DEPDIR) ./modules/math/$(DEPDIR) ./modules/mouse/$(DEPDIR) ./modules/mouse/sdl/$(DEPDIR) ./modules/physics/$(DEPDIR) ./modules/physics/box2d/$(DEPDIR) ./modules/sound/$(DEPDIR) ./modules/sound/lullaby/$(DEPDIR) ./modules/system/$(DEPDIR) ./modules/system/sdl/$(DEPDIR) ./modules/thread/$(DEPDIR) ./modules/thread/sdl/$(DEPDIR) ./modules/timer/$(DEPDIR) ./modules/timer/sdl/$(DEPDIR) ./modules/window/$(DEPDIR) ./modules/window/sdl/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-libLTLIBRARIES .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libLTLIBRARIES clean-libtool ctags \ ctags-recursive distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-libLTLIBRARIES \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-libLTLIBRARIES # Compile scripts .lua.lua.h: cd scripts; $(LUA_EXECUTABLE) auto.lua $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: love-0.9.1/src/modules/0000755000000000000000000000000012316602462014725 5ustar00rootroot00000000000000love-0.9.1/src/modules/math/0000755000000000000000000000000012316602462015656 5ustar00rootroot00000000000000love-0.9.1/src/modules/math/wrap_BezierCurve.cpp0000644000000000000000000001140712316602166021644 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/Exception.h" #include "wrap_BezierCurve.h" #include namespace love { namespace math { BezierCurve *luax_checkbeziercurve(lua_State *L, int idx) { return luax_checktype(L, idx, "BezierCurve", MATH_BEZIER_CURVE_T); } int w_BezierCurve_getDegree(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); lua_pushnumber(L, curve->getDegree()); return 1; } int w_BezierCurve_getDerivative(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); BezierCurve *deriv = new BezierCurve(curve->getDerivative()); luax_pushtype(L, "BezierCurve", MATH_BEZIER_CURVE_T, deriv); return 1; } int w_BezierCurve_getControlPoint(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); int idx = luaL_checkinteger(L, 2); if (idx > 0) // 1-indexing idx--; EXCEPT_GUARD( Vector v = curve->getControlPoint(idx); lua_pushnumber(L, v.x); lua_pushnumber(L, v.y); ) return 2; } int w_BezierCurve_setControlPoint(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); int idx = luaL_checkinteger(L, 2); float vx = (float) luaL_checknumber(L, 3); float vy = (float) luaL_checknumber(L, 4); if (idx > 0) // 1-indexing idx--; EXCEPT_GUARD(curve->setControlPoint(idx, Vector(vx,vy));) return 0; } int w_BezierCurve_insertControlPoint(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); float vx = (float) luaL_checknumber(L, 2); float vy = (float) luaL_checknumber(L, 3); int idx = luaL_optinteger(L, 4, -1); if (idx > 0) // 1-indexing idx--; EXCEPT_GUARD(curve->insertControlPoint(Vector(vx,vy), idx);) return 0; } int w_BezierCurve_getControlPointCount(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); lua_pushinteger(L, curve->getControlPointCount()); return 1; } int w_BezierCurve_translate(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); float dx = (float) luaL_checknumber(L, 2); float dy = (float) luaL_checknumber(L, 3); curve->translate(Vector(dx,dy)); return 0; } int w_BezierCurve_rotate(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); double phi = luaL_checknumber(L, 2); float ox = (float) luaL_optnumber(L, 3, 0); float oy = (float) luaL_optnumber(L, 4, 0); curve->rotate(phi, Vector(ox,oy)); return 0; } int w_BezierCurve_scale(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); double s = luaL_checknumber(L, 2); float ox = (float) luaL_optnumber(L, 3, 0); float oy = (float) luaL_optnumber(L, 4, 0); curve->scale(s, Vector(ox,oy)); return 0; } int w_BezierCurve_evaluate(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); double t = luaL_checknumber(L, 2); EXCEPT_GUARD( Vector v = curve->evaluate(t); lua_pushnumber(L, v.x); lua_pushnumber(L, v.y); ) return 2; } int w_BezierCurve_render(lua_State *L) { BezierCurve *curve = luax_checkbeziercurve(L, 1); int accuracy = luaL_optinteger(L, 2, 5); std::vector points; EXCEPT_GUARD(points = curve->render(accuracy);) lua_createtable(L, points.size()*2, 0); for (size_t i = 0; i < points.size(); ++i) { lua_pushnumber(L, points[i].x); lua_rawseti(L, -2, 2*i+1); lua_pushnumber(L, points[i].y); lua_rawseti(L, -2, 2*i+2); } return 1; } static const luaL_Reg functions[] = { {"getDegree", w_BezierCurve_getDegree}, {"getDerivative", w_BezierCurve_getDerivative}, {"getControlPoint", w_BezierCurve_getControlPoint}, {"setControlPoint", w_BezierCurve_setControlPoint}, {"insertControlPoint", w_BezierCurve_insertControlPoint}, {"getControlPointCount", w_BezierCurve_getControlPointCount}, {"translate", w_BezierCurve_translate}, {"rotate", w_BezierCurve_rotate}, {"scale", w_BezierCurve_scale}, {"evaluate", w_BezierCurve_evaluate}, {"render", w_BezierCurve_render}, { 0, 0 } }; extern "C" int luaopen_beziercurve(lua_State *L) { return luax_register_type(L, "BezierCurve", functions); } } // math } // love love-0.9.1/src/modules/math/MathModule.h0000644000000000000000000000763112316602166020076 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MATH_MODMATH_H #define LOVE_MATH_MODMATH_H #include "RandomGenerator.h" // LOVE #include "common/Module.h" #include "common/math.h" #include "common/Vector.h" #include "common/int.h" // Noise #include "libraries/noise1234/simplexnoise1234.h" // STL #include namespace love { namespace math { class BezierCurve; class Math : public Module { private: RandomGenerator rng; public: virtual ~Math() {} /** * @copydoc RandomGenerator::random() **/ inline double random() { return rng.random(); } /** * @copydoc RandomGenerator::random(double) **/ inline double random(double max) { return rng.random(max); } /** * @copydoc RandomGenerator::random(double,double) **/ inline double random(double min, double max) { return rng.random(min, max); } /** * @copydoc RandomGenerator::randomNormal() **/ inline double randomNormal(double stddev) { return rng.randomNormal(stddev); } inline void setRandomSeed(RandomGenerator::Seed seed) { rng.setSeed(seed); } inline RandomGenerator::Seed getRandomSeed() const { return rng.getSeed(); } inline void setRandomState(const std::string &statestr) { rng.setState(statestr); } inline std::string getRandomState() const { return rng.getState(); } /** * Create a new random number generator. **/ RandomGenerator *newRandomGenerator(); /** * Creates a new bezier curve. **/ BezierCurve *newBezierCurve(const std::vector &points); virtual const char *getName() const { return "love.math"; } /** * Triangulate a simple polygon. * * @param polygon Polygon to triangulate. Must not intersect itself. * @return List of triangles the polygon is composed of. **/ std::vector triangulate(const std::vector &polygon); /** * Checks whether a polygon is convex. * * @param polygon Polygon to test. * @return True if the polygon is convex, false otherwise. **/ bool isConvex(const std::vector &polygon); /** * Converts a value from the sRGB (gamma) colorspace to linear RGB. **/ float gammaToLinear(float c) const; /** * Converts a value from linear RGB to the sRGB (gamma) colorspace. **/ float linearToGamma(float c) const; /** * Calculate Simplex noise for the specified coordinate(s). * * @return Noise value in the range of [0, 1]. **/ float noise(float x) const; float noise(float x, float y) const; float noise(float x, float y, float z) const; float noise(float x, float y, float z, float w) const; static Math instance; private: Math(); }; // Math inline float Math::noise(float x) const { return SimplexNoise1234::noise(x) * 0.5f + 0.5f; } inline float Math::noise(float x, float y) const { return SimplexNoise1234::noise(x, y) * 0.5f + 0.5f; } inline float Math::noise(float x, float y, float z) const { return SimplexNoise1234::noise(x, y, z) * 0.5f + 0.5f; } inline float Math::noise(float x, float y, float z, float w) const { return SimplexNoise1234::noise(x, y, z, w) * 0.5f + 0.5f; } } // math } // love #endif love-0.9.1/src/modules/math/RandomGenerator.h0000644000000000000000000000604612316602166021125 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MATH_RANDOM_GENERATOR_H #define LOVE_MATH_RANDOM_GENERATOR_H // LOVE #include "common/config.h" #include "common/Exception.h" #include "common/math.h" #include "common/int.h" #include "common/Object.h" // C++ #include #include namespace love { namespace math { class RandomGenerator : public Object { public: union Seed { uint64 b64; struct { #ifdef LOVE_BIG_ENDIAN uint32 high; uint32 low; #else uint32 low; uint32 high; #endif } b32; }; RandomGenerator(); virtual ~RandomGenerator() {} /** * Return uniformly distributed pseudo random integer. * * @return Pseudo random integer in [0,2^64). **/ uint64 rand(); /** * Get uniformly distributed pseudo random number in [0,1). * * @return Pseudo random number in [0,1). **/ inline double random() { return double(rand()) / (double(std::numeric_limits::max()) + 1.0); } /** * Get uniformly distributed pseudo random number in [0,max). * * @return Pseudo random number in [0,max). **/ inline double random(double max) { return random() * max; } /** * Get uniformly distributed pseudo random number in [min, max). * * @return Pseudo random number in [min, max). **/ inline double random(double min, double max) { return random() * (max - min) + min; } /** * Get normally distributed pseudo random number. * * @param stddev Standard deviation of the distribution. * @return Normally distributed random number with mean 0 and variance (stddev)². **/ double randomNormal(double stddev); /** * Set pseudo-random seed. * It's up to the implementation how to use this. **/ void setSeed(Seed seed); /** * Get the previously set pseudo-random seed. **/ Seed getSeed() const; /** * Set the internal implementation-dependent state value based on a string. **/ void setState(const std::string &statestr); /** * Get a string representation of the implementation-dependent internal * state value. **/ std::string getState() const; private: Seed seed; Seed rng_state; double last_randomnormal; }; // RandomGenerator } // math } // love #endif // LOVE_MATH_RANDOM_GENERATOR_H love-0.9.1/src/modules/math/wrap_RandomGenerator.h0000644000000000000000000000332312316602166022151 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MATH_WRAP_RANDOM_GENERATOR_H #define LOVE_MATH_WRAP_RANDOM_GENERATOR_H // LOVE #include "RandomGenerator.h" #include "common/config.h" #include "common/runtime.h" namespace love { namespace math { // Helper functions. RandomGenerator::Seed luax_checkrandomseed(lua_State *L, int idx); int luax_getrandom(lua_State *L, int startidx, double r); RandomGenerator *luax_checkrandomgenerator(lua_State *L, int idx); int w_RandomGenerator_random(lua_State *L); int w_RandomGenerator_randomNormal(lua_State *L); int w_RandomGenerator_setSeed(lua_State *L); int w_RandomGenerator_getSeed(lua_State *L); int w_RandomGenerator_setState(lua_State *L); int w_RandomGenerator_getState(lua_State *L); extern "C" int luaopen_randomgenerator(lua_State *L); } // math } // love #endif // LOVE_MATH_WRAP_RANDOM_GENERATOR_H love-0.9.1/src/modules/math/BezierCurve.cpp0000644000000000000000000001146312316602166020615 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "BezierCurve.h" #include "common/Exception.h" #include using namespace std; namespace { /** * Subdivide Bezier polygon. **/ void subdivide(vector &points, int k) { if (k <= 0) return; // subdivision using de casteljau - subdivided control polygons are // on the 'edges' of the computation scheme, e.g: // // ------LEFT-------> // b00 b10 b20 b30 // b01 b11 b21 .--- // b02 b12 .---' // b03 .---'RIGHT // <--' // // the subdivided control polygon is: // b00, b10, b20, b30, b21, b12, b03 vector left, right; left.reserve(points.size()); right.reserve(points.size()); for (size_t step = 1; step < points.size(); ++step) { left.push_back(points[0]); right.push_back(points[points.size() - step]); for (size_t i = 0; i < points.size() - step; ++i) points[i] = (points[i] + points[i+1]) * .5; } left.push_back(points[0]); right.push_back(points[0]); // recurse subdivide(left, k-1); subdivide(right, k-1); // merge (right is in reversed order) points.resize(left.size() + right.size() - 1); for (size_t i = 0; i < left.size(); ++i) points[i] = left[i]; for (size_t i = 1; i < right.size(); ++i) points[i-1 + left.size()] = right[right.size() - i - 1]; } } namespace love { namespace math { BezierCurve::BezierCurve(const vector &pts) : controlPoints(pts) { } BezierCurve BezierCurve::getDerivative() const { if (getDegree() < 1) throw Exception("Cannot derive a curve of degree < 1."); // actually we can, it just doesn't make any sense. vector forward_differences(controlPoints.size()-1); float degree = float(getDegree()); for (size_t i = 0; i < forward_differences.size(); ++i) forward_differences[i] = (controlPoints[i+1] - controlPoints[i]) * degree; return BezierCurve(forward_differences); } const Vector &BezierCurve::getControlPoint(int i) const { if (i < 0) i += controlPoints.size(); if (i < 0 || (size_t) i >= controlPoints.size()) throw Exception("Invalid control point index"); return controlPoints[i]; } void BezierCurve::setControlPoint(int i, const Vector &point) { if (i < 0) i += controlPoints.size(); if (i < 0 || (size_t) i >= controlPoints.size()) throw Exception("Invalid control point index"); controlPoints[i] = point; } void BezierCurve::insertControlPoint(const Vector &point, int pos) { if (pos < 0) pos += controlPoints.size() + 1; if (pos < 0 ||(size_t) pos > controlPoints.size()) throw Exception("Invalid control point index"); controlPoints.insert(controlPoints.begin() + pos, point); } void BezierCurve::translate(const Vector &t) { for (size_t i = 0; i < controlPoints.size(); ++i) controlPoints[i] += t; } void BezierCurve::rotate(double phi, const Vector ¢er) { float c = cos(phi), s = sin(phi); for (size_t i = 0; i < controlPoints.size(); ++i) { Vector v = controlPoints[i] - center; controlPoints[i].x = c * v.x - s * v.y + center.x; controlPoints[i].y = s * v.x + c * v.y + center.y; } } void BezierCurve::scale(double s, const Vector ¢er) { for (size_t i = 0; i < controlPoints.size(); ++i) controlPoints[i] = (controlPoints[i] - center) * s + center; } Vector BezierCurve::evaluate(double t) const { if (t < 0 || t > 1) throw Exception("Invalid evaluation parameter: must be between 0 and 1"); if (controlPoints.size() < 2) throw Exception("Invalid Bezier curve: Not enough control points."); // de casteljau vector points(controlPoints); for (size_t step = 1; step < controlPoints.size(); ++step) for (size_t i = 0; i < controlPoints.size() - step; ++i) points[i] = points[i] * (1-t) + points[i+1] * t; return points[0]; } vector BezierCurve::render(size_t accuracy) const { if (controlPoints.size() < 2) throw Exception("Invalid Bezier curve: Not enough control points."); vector vertices(controlPoints); subdivide(vertices, accuracy); return vertices; } } // namespace math } // namespace love love-0.9.1/src/modules/math/RandomGenerator.cpp0000644000000000000000000000762712316602166021466 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "RandomGenerator.h" // C++ #include #include #include // C #include namespace love { namespace math { // 64 bit Xorshift implementation taken from the end of Sec. 3 (page 4) in // George Marsaglia, "Xorshift RNGs", Journal of Statistical Software, Vol.8 (Issue 14), 2003 RandomGenerator::RandomGenerator() : last_randomnormal(std::numeric_limits::infinity()) { // because it is too big for some compilers to handle ... if you know what // i mean Seed newseed; newseed.b32.low = 0xCBBF7A44; newseed.b32.high = 0x0139408D; setSeed(newseed); } uint64 RandomGenerator::rand() { rng_state.b64 ^= (rng_state.b64 << 13); rng_state.b64 ^= (rng_state.b64 >> 7); rng_state.b64 ^= (rng_state.b64 << 17); return rng_state.b64; } // Box–Muller transform double RandomGenerator::randomNormal(double stddev) { // use cached number if possible if (last_randomnormal != std::numeric_limits::infinity()) { double r = last_randomnormal; last_randomnormal = std::numeric_limits::infinity(); return r * stddev; } double r = sqrt(-2.0 * log(1. - random())); double phi = 2.0 * LOVE_M_PI * (1. - random()); last_randomnormal = r * cos(phi); return r * sin(phi) * stddev; } void RandomGenerator::setSeed(RandomGenerator::Seed newseed) { // 0 xor 0 is still 0, so Xorshift can't generate new numbers. if (newseed.b64 == 0) throw love::Exception("Invalid random seed."); seed = newseed; rng_state = seed; } RandomGenerator::Seed RandomGenerator::getSeed() const { return seed; } void RandomGenerator::setState(const std::string &statestr) { // For this implementation we'll accept a hex string representing the // 64-bit state integer xorshift uses. Seed state = {}; // Hex string must start with 0x. if (statestr.find("0x") != 0 || statestr.size() < 3) throw love::Exception("Invalid random state."); // standardized strtoull (or 64 bit integer support for stringstream) // requires C++11's standard library, which we can't use yet. // I use strtol like this not because it's the best solution, but because // it's "good enough". // Convert the hex string to the state integer character-by-character. for (size_t i = 2; i < statestr.size(); i++) { char hex[2] = {statestr[i], 0}; char *end = nullptr; // Convert the current hex character to a number. int nibble = strtol(hex, &end, 16); // Check if strtol failed to convert it. if (end != nullptr && *end != 0) throw love::Exception("Invalid random state."); state.b64 = (state.b64 << 4) + nibble; } rng_state = state; } std::string RandomGenerator::getState() const { // For this implementation we'll return a hex string representing the 64-bit // state integer xorshift uses. std::stringstream ss; ss << "0x"; // Again with the stringstream not dealing with 64 bit integers... ss << std::setfill('0') << std::setw(8) << std::hex << rng_state.b32.high; ss << std::setfill('0') << std::setw(8) << std::hex << rng_state.b32.low; return ss.str(); } } // math } // love love-0.9.1/src/modules/math/wrap_Math.h0000644000000000000000000000315112316602166017752 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MATH_WRAP_MATH_H #define LOVE_MATH_WRAP_MATH_H // LOVE #include "common/config.h" #include "common/runtime.h" namespace love { namespace math { int w_random(lua_State *L); int w_randomNormal(lua_State *L); int w_setRandomSeed(lua_State *L); int w_getRandomSeed(lua_State *L); int w_setRandomState(lua_State *L); int w_getRandomState(lua_State *L); int w_newRandomGenerator(lua_State *L); int w_newBezierCurve(lua_State *L); int w_triangulate(lua_State *L); int w_isConvex(lua_State *L); int w_gammaToLinear(lua_State *L); int w_linearToGamma(lua_State *L); int w_noise(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_math(lua_State *L); } // random } // love #endif // LOVE_MATH_WRAP_MATH_H love-0.9.1/src/modules/math/BezierCurve.h0000644000000000000000000000556712316602166020272 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MATH_BEZIER_CURVE_H #define LOVE_MATH_BEZIER_CURVE_H // LOVE #include "common/Object.h" #include "common/Vector.h" #include namespace love { namespace math { class BezierCurve : public Object { public: /** * @param controlPoints Control polygon of the curve. **/ BezierCurve(const std::vector &controlPoints); /** * @returns Degree of the curve **/ size_t getDegree() const { return controlPoints.size() - 1; } /** * @returns First derivative of the curve. */ BezierCurve getDerivative() const; /** * @returns i'th control point. **/ const Vector &getControlPoint(int i) const; /** * Sets the i'th control point. * @param i Control point to change. * @param point New control point. **/ void setControlPoint(int i, const Vector &point); /** * Insert a new control point before the i'th control point. * If i < 0, Lua string indexing rules apply. * @param point Control point to insert. * @param pos Position to insert. **/ void insertControlPoint(const Vector &point, int pos = -1); /** * @returns Number of control points. **/ size_t getControlPointCount() const { return controlPoints.size(); } /** * Move the curve. * @param t Translation vector. */ void translate(const Vector &t); /** * Rotate the curve. * @param phi Rotation angle (radians). * @param center Rotation center. */ void rotate(double phi, const Vector ¢er); /** * Scale the curve. * @param phi Scale factor. * @param center Scale center. */ void scale(double phi, const Vector ¢er); /** * Evaluates the curve at time t. * @param t Curve parameter, must satisfy 0 <= t <= 1. **/ Vector evaluate(double t) const; /** * Renders the curve by subdivision. * @param accuracy The 'fineness' of the curve. * @returns A polygon chain that approximates the bezier curve. **/ std::vector render(size_t accuracy = 4) const; private: std::vector controlPoints; }; } } #endif love-0.9.1/src/modules/math/wrap_RandomGenerator.cpp0000644000000000000000000001003712316602166022504 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_RandomGenerator.h" #include #include namespace love { namespace math { template static T checkrandomseed_part(lua_State *L, int idx) { double num = luaL_checknumber(L, idx); double inf = std::numeric_limits::infinity(); // Disallow conversions from infinity and NaN. if (num == inf || num == -inf || num != num) luaL_argerror(L, idx, "invalid random seed"); return (T) num; } RandomGenerator::Seed luax_checkrandomseed(lua_State *L, int idx) { RandomGenerator::Seed s; if (!lua_isnoneornil(L, idx + 1)) { s.b32.low = checkrandomseed_part(L, idx); s.b32.high = checkrandomseed_part(L, idx + 1); } else s.b64 = checkrandomseed_part(L, idx); return s; } int luax_getrandom(lua_State *L, int startidx, double r) { int l, u; // from lua 5.1.4 source code: lmathlib.c:185 ff. switch (lua_gettop(L) - (startidx - 1)) { case 0: lua_pushnumber(L, r); break; case 1: u = luaL_checkint(L, startidx); luaL_argcheck(L, 1 <= u, startidx, "interval is empty"); lua_pushnumber(L, floor(r * u) + 1); break; case 2: l = luaL_checkint(L, startidx); u = luaL_checkint(L, startidx + 1); luaL_argcheck(L, l <= u, startidx + 1, "interval is empty"); lua_pushnumber(L, floor(r * (u - l + 1)) + l); break; default: return luaL_error(L, "wrong number of arguments"); } return 1; } RandomGenerator *luax_checkrandomgenerator(lua_State *L, int idx) { return luax_checktype(L, idx, "RandomGenerator", MATH_RANDOM_GENERATOR_T); } int w_RandomGenerator_random(lua_State *L) { RandomGenerator *rng = luax_checkrandomgenerator(L, 1); return luax_getrandom(L, 2, rng->random()); } int w_RandomGenerator_randomNormal(lua_State *L) { RandomGenerator *rng = luax_checkrandomgenerator(L, 1); double stddev = luaL_optnumber(L, 2, 1.0); double mean = luaL_optnumber(L, 3, 0.0); double r = rng->randomNormal(stddev); lua_pushnumber(L, r + mean); return 1; } int w_RandomGenerator_setSeed(lua_State *L) { RandomGenerator *rng = luax_checkrandomgenerator(L, 1); EXCEPT_GUARD(rng->setSeed(luax_checkrandomseed(L, 2));) return 0; } int w_RandomGenerator_getSeed(lua_State *L) { RandomGenerator *rng = luax_checkrandomgenerator(L, 1); RandomGenerator::Seed s = rng->getSeed(); lua_pushnumber(L, (lua_Number) s.b32.low); lua_pushnumber(L, (lua_Number) s.b32.high); return 2; } int w_RandomGenerator_setState(lua_State *L) { RandomGenerator *rng = luax_checkrandomgenerator(L, 1); EXCEPT_GUARD(rng->setState(luax_checkstring(L, 2));) return 0; } int w_RandomGenerator_getState(lua_State *L) { RandomGenerator *rng = luax_checkrandomgenerator(L, 1); luax_pushstring(L, rng->getState()); return 1; } static const luaL_Reg functions[] = { { "random", w_RandomGenerator_random }, { "randomNormal", w_RandomGenerator_randomNormal }, { "setSeed", w_RandomGenerator_setSeed }, { "getSeed", w_RandomGenerator_getSeed }, { "setState", w_RandomGenerator_setState }, { "getState", w_RandomGenerator_getState }, { 0, 0 } }; extern "C" int luaopen_randomgenerator(lua_State *L) { return luax_register_type(L, "RandomGenerator", functions); } } // math } // love love-0.9.1/src/modules/math/wrap_BezierCurve.h0000644000000000000000000000335312316602166021312 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MATH_WRAP_BEZIER_CURVE_H #define LOVE_MATH_WRAP_BEZIER_CURVE_H // LOVE #include "BezierCurve.h" #include "common/runtime.h" namespace love { namespace math { BezierCurve *luax_checkbeziercurve(lua_State *L, int idx); int w_BezierCurve_getDegree(lua_State *L); int w_BezierCurve_getDerivative(lua_State *L); int w_BezierCurve_getControlPoint(lua_State *L); int w_BezierCurve_setControlPoint(lua_State *L); int w_BezierCurve_insertControlPoint(lua_State *L); int w_BezierCurve_getControlPointCount(lua_State *L); int w_BezierCurve_translate(lua_State *L); int w_BezierCurve_rotate(lua_State *L); int w_BezierCurve_scale(lua_State *L); int w_BezierCurve_evaluate(lua_State *L); int w_BezierCurve_render(lua_State *L); extern "C" int luaopen_beziercurve(lua_State *L); } // math } // love #endif // LOVE_MATH_WRAP_RANDOM_GENERATOR_H love-0.9.1/src/modules/math/MathModule.cpp0000644000000000000000000001422412316602166020425 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "MathModule.h" #include "common/Vector.h" #include "BezierCurve.h" // STL #include #include #include using std::list; using std::vector; using love::Vertex; namespace { // check if an angle is oriented counter clockwise inline bool is_oriented_ccw(const Vertex &a, const Vertex &b, const Vertex &c) { // return det(b-a, c-a) >= 0 return ((b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x)) >= 0; } // check if a and b are on the same side of the line c->d bool on_same_side(const Vertex &a, const Vertex &b, const Vertex &c, const Vertex &d) { float px = d.x - c.x, py = d.y - c.y; // return det(p, a-c) * det(p, b-c) >= 0 float l = px * (a.y - c.y) - py * (a.x - c.x); float m = px * (b.y - c.y) - py * (b.x - c.x); return l * m >= 0; } // checks is p is contained in the triangle abc inline bool point_in_triangle(const Vertex &p, const Vertex &a, const Vertex &b, const Vertex &c) { return on_same_side(p,a, b,c) && on_same_side(p,b, a,c) && on_same_side(p,c, a,b); } // checks if any vertex in `vertices' is in the triangle abc. bool any_point_in_triangle(const list &vertices, const Vertex &a, const Vertex &b, const Vertex &c) { list::const_iterator it, end = vertices.end(); for (it = vertices.begin(); it != end; ++it) { const Vertex *p = *it; if ((p != &a) && (p != &b) && (p != &c) && point_in_triangle(*p, a,b,c)) // oh god... return true; } return false; } inline bool is_ear(const Vertex &a, const Vertex &b, const Vertex &c, const list &vertices) { return is_oriented_ccw(a,b,c) && !any_point_in_triangle(vertices, a,b,c); } } namespace love { namespace math { Math Math::instance; Math::Math() : rng() { // prevent the runtime from free()-ing this retain(); } RandomGenerator *Math::newRandomGenerator() { return new RandomGenerator(); } BezierCurve *Math::newBezierCurve(const vector &points) { return new BezierCurve(points); } vector Math::triangulate(const vector &polygon) { if (polygon.size() < 3) throw love::Exception("Not a polygon"); else if (polygon.size() == 3) return vector(1, Triangle(polygon[0], polygon[1], polygon[2])); // collect list of connections and record leftmost item to check if the polygon // has the expected winding vector next_idx(polygon.size()), prev_idx(polygon.size()); size_t idx_lm = 0; for (size_t i = 0; i < polygon.size(); ++i) { const Vertex &lm = polygon[idx_lm], &p = polygon[i]; if (p.x < lm.x || (p.x == lm.x && p.y < lm.y)) idx_lm = i; next_idx[i] = i+1; prev_idx[i] = i-1; } next_idx[next_idx.size()-1] = 0; prev_idx[0] = prev_idx.size()-1; // check if the polygon has the expected winding and reverse polygon if needed if (!is_oriented_ccw(polygon[prev_idx[idx_lm]], polygon[idx_lm], polygon[next_idx[idx_lm]])) next_idx.swap(prev_idx); // collect list of concave polygons list concave_vertices; for (size_t i = 0; i < polygon.size(); ++i) { if (!is_oriented_ccw(polygon[prev_idx[i]], polygon[i], polygon[next_idx[i]])) concave_vertices.push_back(&polygon[i]); } // triangulation according to kong vector triangles; size_t n_vertices = polygon.size(); size_t current = 1, skipped = 0, next, prev; while (n_vertices > 3) { next = next_idx[current]; prev = prev_idx[current]; const Vertex &a = polygon[prev], &b = polygon[current], &c = polygon[next]; if (is_ear(a,b,c, concave_vertices)) { triangles.push_back(Triangle(a,b,c)); next_idx[prev] = next; prev_idx[next] = prev; concave_vertices.remove(&b); --n_vertices; skipped = 0; } else if (++skipped > n_vertices) { throw love::Exception("Cannot triangulate polygon."); } current = next; } next = next_idx[current]; prev = prev_idx[current]; triangles.push_back(Triangle(polygon[prev], polygon[current], polygon[next])); return triangles; } bool Math::isConvex(const std::vector &polygon) { if (polygon.size() < 3) return false; // a polygon is convex if all corners turn in the same direction // turning direction can be determined using the cross-product of // the forward difference vectors size_t i = polygon.size() - 2, j = polygon.size() - 1, k = 0; Vector p(polygon[j].x - polygon[i].x, polygon[j].y - polygon[i].y); Vector q(polygon[k].x - polygon[j].x, polygon[k].y - polygon[j].y); float winding = p ^ q; while (k+1 < polygon.size()) { i = j; j = k; k++; p.x = polygon[j].x - polygon[i].x; p.y = polygon[j].y - polygon[i].y; q.x = polygon[k].x - polygon[j].x; q.y = polygon[k].y - polygon[j].y; if ((p^q) * winding < 0) return false; } return true; } /** * http://en.wikipedia.org/wiki/SRGB#The_reverse_transformation **/ float Math::gammaToLinear(float c) const { if (c > 1.0f) return 1.0f; else if (c < 0.0f) return 0.0f; else if (c <= 0.04045) return c / 12.92f; else return powf((c + 0.055f) / 1.055f, 2.4f); } /** * http://en.wikipedia.org/wiki/SRGB#The_forward_transformation_.28CIE_xyY_or_CIE_XYZ_to_sRGB.29 **/ float Math::linearToGamma(float c) const { if (c > 1.0f) return 1.0f; else if (c < 0.0f) return 0.0f; else if (c < 0.0031308f) return c * 12.92f; else return 1.055f * powf(c, 0.41666f) - 0.055f; } } // math } // love love-0.9.1/src/modules/math/wrap_Math.cpp0000644000000000000000000002025412316602166020310 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Math.h" #include "wrap_RandomGenerator.h" #include "wrap_BezierCurve.h" #include "MathModule.h" #include "BezierCurve.h" #include #include namespace love { namespace math { int w_random(lua_State *L) { return luax_getrandom(L, 1, Math::instance.random()); } int w_randomNormal(lua_State *L) { double stddev = luaL_optnumber(L, 1, 1.0); double mean = luaL_optnumber(L, 2, 0.0); double r = Math::instance.randomNormal(stddev); lua_pushnumber(L, r + mean); return 1; } int w_setRandomSeed(lua_State *L) { EXCEPT_GUARD(Math::instance.setRandomSeed(luax_checkrandomseed(L, 1));) return 0; } int w_getRandomSeed(lua_State *L) { RandomGenerator::Seed s = Math::instance.getRandomSeed(); lua_pushnumber(L, (lua_Number) s.b32.low); lua_pushnumber(L, (lua_Number) s.b32.high); return 2; } int w_setRandomState(lua_State *L) { EXCEPT_GUARD(Math::instance.setRandomState(luax_checkstring(L, 1));) return 0; } int w_getRandomState(lua_State *L) { luax_pushstring(L, Math::instance.getRandomState()); return 1; } int w_newRandomGenerator(lua_State *L) { RandomGenerator::Seed s; if (lua_gettop(L) > 0) s = luax_checkrandomseed(L, 1); RandomGenerator *t = Math::instance.newRandomGenerator(); if (lua_gettop(L) > 0) { bool should_error = false; try { t->setSeed(s); } catch (love::Exception &e) { t->release(); should_error = true; lua_pushstring(L, e.what()); } if (should_error) return luaL_error(L, "%s", lua_tostring(L, -1)); } luax_pushtype(L, "RandomGenerator", MATH_RANDOM_GENERATOR_T, t); return 1; } int w_newBezierCurve(lua_State *L) { std::vector points; if (lua_istable(L, 1)) { size_t top = lua_objlen(L, 1); points.reserve(top / 2); for (size_t i = 1; i <= top; i += 2) { lua_rawgeti(L, 1, i); lua_rawgeti(L, 1, i+1); Vector v; v.x = (float) luaL_checknumber(L, -2); v.y = (float) luaL_checknumber(L, -1); points.push_back(v); lua_pop(L, 2); } } else { size_t top = lua_gettop(L); points.reserve(top / 2); for (size_t i = 1; i <= top; i += 2) { Vector v; v.x = (float) luaL_checknumber(L, i); v.y = (float) luaL_checknumber(L, i+1); points.push_back(v); } } BezierCurve *curve = Math::instance.newBezierCurve(points); luax_pushtype(L, "BezierCurve", MATH_BEZIER_CURVE_T, curve); return 1; } int w_triangulate(lua_State *L) { std::vector vertices; if (lua_istable(L, 1)) { size_t top = lua_objlen(L, 1); vertices.reserve(top / 2); for (size_t i = 1; i <= top; i += 2) { lua_rawgeti(L, 1, i); lua_rawgeti(L, 1, i+1); Vertex v; v.x = (float) luaL_checknumber(L, -2); v.y = (float) luaL_checknumber(L, -1); vertices.push_back(v); lua_pop(L, 2); } } else { size_t top = lua_gettop(L); vertices.reserve(top / 2); for (size_t i = 1; i <= top; i += 2) { Vertex v; v.x = (float) luaL_checknumber(L, i); v.y = (float) luaL_checknumber(L, i+1); vertices.push_back(v); } } if (vertices.size() < 3) return luaL_error(L, "Need at least 3 vertices to triangulate"); std::vector triangles; EXCEPT_GUARD( if (vertices.size() == 3) triangles.push_back(Triangle(vertices[0], vertices[1], vertices[2])); else triangles = Math::instance.triangulate(vertices); ) lua_createtable(L, triangles.size(), 0); for (size_t i = 0; i < triangles.size(); ++i) { const Triangle &tri = triangles[i]; lua_createtable(L, 6, 0); lua_pushnumber(L, tri.a.x); lua_rawseti(L, -2, 1); lua_pushnumber(L, tri.a.y); lua_rawseti(L, -2, 2); lua_pushnumber(L, tri.b.x); lua_rawseti(L, -2, 3); lua_pushnumber(L, tri.b.y); lua_rawseti(L, -2, 4); lua_pushnumber(L, tri.c.x); lua_rawseti(L, -2, 5); lua_pushnumber(L, tri.c.y); lua_rawseti(L, -2, 6); lua_rawseti(L, -2, i+1); } return 1; } int w_isConvex(lua_State *L) { std::vector vertices; if (lua_istable(L, 1)) { size_t top = lua_objlen(L, 1); vertices.reserve(top / 2); for (size_t i = 1; i <= top; i += 2) { lua_rawgeti(L, 1, i); lua_rawgeti(L, 1, i+1); Vertex v; v.x = (float) luaL_checknumber(L, -2); v.y = (float) luaL_checknumber(L, -1); vertices.push_back(v); lua_pop(L, 2); } } else { int top = lua_gettop(L); vertices.reserve(top / 2); for (int i = 1; i <= top; i += 2) { Vertex v; v.x = (float) luaL_checknumber(L, i); v.y = (float) luaL_checknumber(L, i+1); vertices.push_back(v); } } lua_pushboolean(L, Math::instance.isConvex(vertices)); return 1; } static int getGammaArgs(lua_State *L, float color[4]) { int numcomponents = 0; if (lua_istable(L, 1)) { int n = lua_objlen(L, 1); for (int i = 1; i <= n && i <= 4; i++) { lua_rawgeti(L, 1, i); color[i - 1] = (float) luaL_checknumber(L, -1) / 255.0f; numcomponents++; } lua_pop(L, numcomponents); } else { int n = lua_gettop(L); for (int i = 1; i <= n && i <= 4; i++) { color[i - 1] = (float) luaL_checknumber(L, i) / 255.0f; numcomponents++; } } if (numcomponents == 0) luaL_checknumber(L, 1); return numcomponents; } int w_gammaToLinear(lua_State *L) { float color[4]; int numcomponents = getGammaArgs(L, color); for (int i = 0; i < numcomponents; i++) { // Alpha should always be linear. if (i < 3) color[i] = Math::instance.gammaToLinear(color[i]); lua_pushnumber(L, color[i] * 255); } return numcomponents; } int w_linearToGamma(lua_State *L) { float color[4]; int numcomponents = getGammaArgs(L, color); for (int i = 0; i < numcomponents; i++) { // Alpha should always be linear. if (i < 3) color[i] = Math::instance.linearToGamma(color[i]); lua_pushnumber(L, color[i] * 255); } return numcomponents; } int w_noise(lua_State *L) { float w, x, y, z; float val; switch (lua_gettop(L)) { case 1: x = (float) luaL_checknumber(L, 1); val = Math::instance.noise(x); break; case 2: x = (float) luaL_checknumber(L, 1); y = (float) luaL_checknumber(L, 2); val = Math::instance.noise(x, y); break; case 3: x = (float) luaL_checknumber(L, 1); y = (float) luaL_checknumber(L, 2); z = (float) luaL_checknumber(L, 3); val = Math::instance.noise(x, y, z); break; case 4: default: x = (float) luaL_checknumber(L, 1); y = (float) luaL_checknumber(L, 2); z = (float) luaL_checknumber(L, 3); w = (float) luaL_checknumber(L, 4); val = Math::instance.noise(x, y, z, w); break; } lua_pushnumber(L, (lua_Number) val); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "random", w_random }, { "randomNormal", w_randomNormal }, { "setRandomSeed", w_setRandomSeed }, { "getRandomSeed", w_getRandomSeed }, { "setRandomState", w_setRandomState }, { "getRandomState", w_getRandomState }, { "newRandomGenerator", w_newRandomGenerator }, { "newBezierCurve", w_newBezierCurve }, { "triangulate", w_triangulate }, { "isConvex", w_isConvex }, { "gammaToLinear", w_gammaToLinear }, { "linearToGamma", w_linearToGamma }, { "noise", w_noise }, { 0, 0 } }; static const lua_CFunction types[] = { luaopen_randomgenerator, luaopen_beziercurve, 0 }; extern "C" int luaopen_love_math(lua_State *L) { Math::instance.retain(); WrappedModule w; w.module = &Math::instance; w.name = "math"; w.flags = MODULE_T; w.functions = functions; w.types = types; int n = luax_register_module(L, w); return n; } } // math } // love love-0.9.1/src/modules/system/0000755000000000000000000000000012316602463016252 5ustar00rootroot00000000000000love-0.9.1/src/modules/system/wrap_System.h0000644000000000000000000000256112316602166020744 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_WRAP_SYSTEM_H #define LOVE_WRAP_SYSTEM_H // LOVE #include "System.h" #include "common/runtime.h" namespace love { namespace system { int w_getOS(lua_State *L); int w_getProcessorCount(lua_State *L); int w_setClipboardText(lua_State *L); int w_getClipboardText(lua_State *L); int w_getPowerInfo(lua_State *L); int w_openURL(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_system(lua_State *L); } // system } // love #endif // LOVE_WRAP_SYSTEM_H love-0.9.1/src/modules/system/System.h0000644000000000000000000000563412316602166017717 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SYSTEM_H #define LOVE_SYSTEM_H // LOVE #include "common/config.h" #include "common/Module.h" #include "common/StringMap.h" // stdlib #include namespace love { namespace system { class System : public Module { public: enum PowerState { POWER_UNKNOWN, POWER_BATTERY, POWER_NO_BATTERY, POWER_CHARGING, POWER_CHARGED, POWER_MAX_ENUM }; virtual ~System() {} /** * Gets the current operating system. **/ std::string getOS() const; /** * Gets the number of reported CPU cores on the current system. * Does not account for technologies such as Hyperthreading: a 4-core * Hyperthreading-enabled Intel CPU will report 8, instead of 4. **/ virtual int getProcessorCount() const = 0; /** * Replaces the contents of the system's text clipboard with a string. * @param text The clipboard text to set. **/ virtual void setClipboardText(const std::string &text) const = 0; /** * Gets the contents of the system's text clipboard. **/ virtual std::string getClipboardText() const = 0; /** * Gets information about the system's power supply. * * @param[out] seconds Time in seconds of battery life left. * -1 if a value can't be determined. * @param[out] percent The percentage of battery life left (0-100.) * -1 if a value can't be determined. * * @return The current state of the battery. **/ virtual PowerState getPowerInfo(int &seconds, int &percent) const = 0; /** * Opens the specified URL with the user's default program to handle that * particular URL type. * * @param url The URL to open. * * @return Whether the URL was opened successfully. **/ virtual bool openURL(const std::string &url) const; static bool getConstant(const char *in, PowerState &out); static bool getConstant(PowerState in, const char *&out); private: static StringMap::Entry powerEntries[]; static StringMap powerStates; }; // System } // system } // love #endif // LOVE_SYSTEM_H love-0.9.1/src/modules/system/System.cpp0000755000000000000000000000727112316602166020254 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "common/config.h" #include "System.h" #if defined(LOVE_MACOSX) #include #elif defined(LOVE_LINUX) #include #include #include #elif defined(LOVE_WINDOWS) #include "common/utf8.h" #include #include #pragma comment(lib, "shell32.lib") #endif namespace love { namespace system { std::string System::getOS() const { #if defined(LOVE_MACOSX) return "OS X"; #elif defined(LOVE_WINDOWS) return "Windows"; #elif defined(LOVE_LINUX) return "Linux"; #else return "Unknown"; #endif } bool System::openURL(const std::string &url) const { bool success = false; #if defined(LOVE_MACOSX) // We could be lazy and use system("open " + url), but this is safer. CFURLRef cfurl = CFURLCreateWithBytes(nullptr, (const UInt8 *) url.c_str(), url.length(), kCFStringEncodingUTF8, nullptr); success = LSOpenCFURLRef(cfurl, nullptr) == noErr; CFRelease(cfurl); #elif defined(LOVE_LINUX) // Spawn a child process, which we'll replace with xdg-open. pid_t pid = vfork(); if (pid == 0) // Child process. { // Replace the child process with xdg-open and pass in the URL. execlp("xdg-open", "xdg-open", url.c_str(), nullptr); // exec will only return if it errored, so we should exit with non-zero. _exit(1); } else if (pid > 0) // Parent process. { // Wait for xdg-open to complete (or fail.) int status = 0; if (waitpid(pid, &status, 0) == pid) success = (status == 0); else success = false; } else { // vfork() failed. success = false; } #elif defined(LOVE_WINDOWS) // Unicode-aware WinAPI functions don't accept UTF-8, so we need to convert. std::wstring wurl = to_widestr(url); HINSTANCE result = ShellExecuteW(nullptr, L"open", wurl.c_str(), nullptr, nullptr, SW_SHOW); success = (int) result > 32; #endif return success; } bool System::getConstant(const char *in, System::PowerState &out) { return powerStates.find(in, out); } bool System::getConstant(System::PowerState in, const char *&out) { return powerStates.find(in, out); } StringMap::Entry System::powerEntries[] = { {"unknown", System::POWER_UNKNOWN}, {"battery", System::POWER_BATTERY}, {"nobattery", System::POWER_NO_BATTERY}, {"charging", System::POWER_CHARGING}, {"charged", System::POWER_CHARGED}, }; StringMap System::powerStates(System::powerEntries, sizeof(System::powerEntries)); } // system } // love love-0.9.1/src/modules/system/sdl/0000755000000000000000000000000012316602463017034 5ustar00rootroot00000000000000love-0.9.1/src/modules/system/sdl/System.h0000644000000000000000000000326612316602166020500 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SYSTEM_SDL_SYSTEM_H #define LOVE_SYSTEM_SDL_SYSTEM_H // LOVE #include "system/System.h" #include "common/EnumMap.h" // SDL #include namespace love { namespace system { namespace sdl { class System : public love::system::System { public: System(); virtual ~System() {} // Implements Module. const char *getName() const; int getProcessorCount() const; void setClipboardText(const std::string &text) const; std::string getClipboardText() const; PowerState getPowerInfo(int &seconds, int &percent) const; private: static EnumMap::Entry powerEntries[]; static EnumMap powerStates; }; // System } // sdl } // system } // love #endif // LOVE_SYSTEM_SDL_SYSTEM_H love-0.9.1/src/modules/system/sdl/System.cpp0000644000000000000000000000440512316602166021027 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "System.h" // SDL #include #include namespace love { namespace system { namespace sdl { System::System() { } const char *System::getName() const { return "love.system.sdl"; } int System::getProcessorCount() const { return SDL_GetCPUCount(); } void System::setClipboardText(const std::string &text) const { SDL_SetClipboardText(text.c_str()); } std::string System::getClipboardText() const { std::string text(""); char *ctext = SDL_GetClipboardText(); if (ctext) { text = std::string(ctext); SDL_free(ctext); } return text; } love::system::System::PowerState System::getPowerInfo(int &seconds, int &percent) const { SDL_PowerState sdlstate = SDL_GetPowerInfo(&seconds, &percent); PowerState state = POWER_UNKNOWN; powerStates.find(sdlstate, state); return state; } EnumMap::Entry System::powerEntries[] = { {System::POWER_UNKNOWN, SDL_POWERSTATE_UNKNOWN}, {System::POWER_BATTERY, SDL_POWERSTATE_ON_BATTERY}, {System::POWER_NO_BATTERY, SDL_POWERSTATE_NO_BATTERY}, {System::POWER_CHARGING, SDL_POWERSTATE_CHARGING}, {System::POWER_CHARGED, SDL_POWERSTATE_CHARGED}, }; EnumMap System::powerStates(System::powerEntries, sizeof(System::powerEntries)); } // sdl } // system } // love love-0.9.1/src/modules/system/wrap_System.cpp0000644000000000000000000000510012316602166021267 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_System.h" #include "sdl/System.h" namespace love { namespace system { static System *instance = 0; int w_getOS(lua_State *L) { luax_pushstring(L, instance->getOS()); return 1; } int w_getProcessorCount(lua_State *L) { lua_pushinteger(L, instance->getProcessorCount()); return 1; } int w_setClipboardText(lua_State *L) { const char *text = luaL_checkstring(L, 1); instance->setClipboardText(text); return 0; } int w_getClipboardText(lua_State *L) { luax_pushstring(L, instance->getClipboardText()); return 1; } int w_getPowerInfo(lua_State *L) { int seconds = -1, percent = -1; const char *str; System::PowerState state = instance->getPowerInfo(seconds, percent); if (!System::getConstant(state, str)) str = "unknown"; lua_pushstring(L, str); if (percent >= 0) lua_pushinteger(L, percent); else lua_pushnil(L); if (seconds >= 0) lua_pushinteger(L, seconds); else lua_pushnil(L); return 3; } int w_openURL(lua_State *L) { std::string url = luax_checkstring(L, 1); luax_pushboolean(L, instance->openURL(url)); return 1; } static const luaL_Reg functions[] = { { "getOS", w_getOS }, { "getProcessorCount", w_getProcessorCount }, { "setClipboardText", w_setClipboardText }, { "getClipboardText", w_getClipboardText }, { "getPowerInfo", w_getPowerInfo }, { "openURL", w_openURL }, { 0, 0 } }; extern "C" int luaopen_love_system(lua_State *L) { if (instance == 0) { instance = new love::system::sdl::System(); } else instance->retain(); WrappedModule w; w.module = instance; w.name = "system"; w.flags = MODULE_T; w.functions = functions; w.types = 0; return luax_register_module(L, w); } } // system } // love love-0.9.1/src/modules/joystick/0000755000000000000000000000000012316602462016564 5ustar00rootroot00000000000000love-0.9.1/src/modules/joystick/JoystickModule.h0000644000000000000000000000551212316602166021706 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_JOYSTICK_JOYSTICK_MODULE_H #define LOVE_JOYSTICK_JOYSTICK_MODULE_H // LOVE #include "common/Module.h" #include "Joystick.h" namespace love { namespace joystick { class JoystickModule : public Module { public: virtual ~JoystickModule() {} /** * Adds a connected Joystick device and opens it for use. * Returns NULL if the Joystick could not be added. **/ virtual Joystick *addJoystick(int deviceindex) = 0; /** * Removes a disconnected Joystick device. **/ virtual void removeJoystick(Joystick *joystick) = 0; /** * Gets a connected Joystick from its unique Instance ID. * Returns NULL if the instance ID does not correspond to a connected stick. **/ virtual Joystick *getJoystickFromID(int instanceid) = 0; /** * Gets a connected Joystick. * Returns NULL if joyindex is not in the range of [0, getJoystickCount()). **/ virtual Joystick *getJoystick(int joyindex) = 0; /** * Gets the index of a connected joystick. * Returns -1 if the joystick is not connected. **/ virtual int getIndex(const Joystick *joystick) = 0; /** * Gets the number of currently connected Joysticks. **/ virtual int getJoystickCount() const = 0; /** * Sets the virtual Gamepad mapping for a joystick input value for all * joystick devices with the specified joystick product GUID. * If any joysticks with the specified GUID are connected, they will be * added as Gamepads if they aren't already, otherwise their Gamepad mapping * will be updated. **/ virtual bool setGamepadMapping(const std::string &pguid, Joystick::GamepadInput gpinput, Joystick::JoystickInput joyinput) = 0; /** * Gets the joystick input value the gamepad input value is bound to for the * specified joystick product GUID. **/ virtual Joystick::JoystickInput getGamepadMapping(const std::string &pguid, Joystick::GamepadInput gpinput) = 0; }; // JoystickModule } // joystick } // love #endif // LOVE_JOYSTICK_JOYSTICK_MODULE_H love-0.9.1/src/modules/joystick/Joystick.h0000644000000000000000000001144212316602166020537 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_JOYSTICK_JOYSTICK_H #define LOVE_JOYSTICK_JOYSTICK_H // LOVE #include "common/Object.h" #include "common/StringMap.h" // stdlib #include #include namespace love { namespace joystick { class Joystick : public Object { public: // Joystick hat values. enum Hat { HAT_INVALID, HAT_CENTERED, HAT_UP, HAT_RIGHT, HAT_DOWN, HAT_LEFT, HAT_RIGHTUP, HAT_RIGHTDOWN, HAT_LEFTUP, HAT_LEFTDOWN, HAT_MAX_ENUM = 16 }; // Valid Gamepad axes. enum GamepadAxis { GAMEPAD_AXIS_INVALID, GAMEPAD_AXIS_LEFTX, GAMEPAD_AXIS_LEFTY, GAMEPAD_AXIS_RIGHTX, GAMEPAD_AXIS_RIGHTY, GAMEPAD_AXIS_TRIGGERLEFT, GAMEPAD_AXIS_TRIGGERRIGHT, GAMEPAD_AXIS_MAX_ENUM }; // Valid Gamepad buttons. enum GamepadButton { GAMEPAD_BUTTON_INVALID, GAMEPAD_BUTTON_A, GAMEPAD_BUTTON_B, GAMEPAD_BUTTON_X, GAMEPAD_BUTTON_Y, GAMEPAD_BUTTON_BACK, GAMEPAD_BUTTON_GUIDE, GAMEPAD_BUTTON_START, GAMEPAD_BUTTON_LEFTSTICK, GAMEPAD_BUTTON_RIGHTSTICK, GAMEPAD_BUTTON_LEFTSHOULDER, GAMEPAD_BUTTON_RIGHTSHOULDER, GAMEPAD_BUTTON_DPAD_UP, GAMEPAD_BUTTON_DPAD_DOWN, GAMEPAD_BUTTON_DPAD_LEFT, GAMEPAD_BUTTON_DPAD_RIGHT, GAMEPAD_BUTTON_MAX_ENUM }; // Different types of inputs for a joystick. enum InputType { INPUT_TYPE_AXIS, INPUT_TYPE_BUTTON, INPUT_TYPE_HAT, INPUT_TYPE_MAX_ENUM }; // Represents a gamepad input value, e.g. the "x" button or the left trigger. struct GamepadInput { InputType type; union { GamepadAxis axis; GamepadButton button; }; }; // Represents a joystick input value, e.g. button 6 or axis 1. struct JoystickInput { InputType type; union { int axis; int button; struct { int index; Hat value; } hat; }; }; virtual ~Joystick() {} virtual bool open(int deviceindex) = 0; virtual void close() = 0; virtual bool isConnected() const = 0; virtual const char *getName() const = 0; virtual int getAxisCount() const = 0; virtual int getButtonCount() const = 0; virtual int getHatCount() const = 0; virtual float getAxis(int axisindex) const = 0; virtual std::vector getAxes() const = 0; virtual Hat getHat(int hatindex) const = 0; virtual bool isDown(const std::vector &buttonlist) const = 0; virtual bool openGamepad(int deviceindex) = 0; virtual bool isGamepad() const = 0; virtual float getGamepadAxis(GamepadAxis axis) const = 0; virtual bool isGamepadDown(const std::vector &blist) const = 0; virtual void *getHandle() const = 0; virtual std::string getGUID() const = 0; virtual int getInstanceID() const = 0; virtual int getID() const = 0; virtual bool isVibrationSupported() = 0; virtual bool setVibration(float left, float right) = 0; virtual bool setVibration() = 0; virtual void getVibration(float &left, float &right) const = 0; static bool getConstant(const char *in, Hat &out); static bool getConstant(Hat in, const char *&out); static bool getConstant(const char *in, GamepadAxis &out); static bool getConstant(GamepadAxis in, const char *&out); static bool getConstant(const char *in, GamepadButton &out); static bool getConstant(GamepadButton in, const char *&out); static bool getConstant(const char *in, InputType &out); static bool getConstant(InputType in, const char *&out); protected: float clampval(float x) const; private: static StringMap::Entry hatEntries[]; static StringMap hats; static StringMap::Entry gpAxisEntries[]; static StringMap gpAxes; static StringMap::Entry gpButtonEntries[]; static StringMap gpButtons; static StringMap::Entry inputTypeEntries[]; static StringMap inputTypes; }; // Joystick } // joystick } // love #endif // LOVE_JOYSTICK_JOYSTICK_H love-0.9.1/src/modules/joystick/Joystick.cpp0000644000000000000000000001011212316602166021063 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "Joystick.h" // STL #include namespace love { namespace joystick { float Joystick::clampval(float x) const { if (fabsf(x) < 0.01) return 0.0f; if (x < -0.99f) return -1.0f; if (x > 0.99f) return 1.0f; return x; } bool Joystick::getConstant(const char *in, Joystick::Hat &out) { return hats.find(in, out); } bool Joystick::getConstant(Joystick::Hat in, const char *&out) { return hats.find(in, out); } bool Joystick::getConstant(const char *in, Joystick::GamepadAxis &out) { return gpAxes.find(in, out); } bool Joystick::getConstant(Joystick::GamepadAxis in, const char *&out) { return gpAxes.find(in, out); } bool Joystick::getConstant(const char *in, Joystick::GamepadButton &out) { return gpButtons.find(in, out); } bool Joystick::getConstant(Joystick::GamepadButton in, const char *&out) { return gpButtons.find(in, out); } bool Joystick::getConstant(const char *in, Joystick::InputType &out) { return inputTypes.find(in, out); } bool Joystick::getConstant(Joystick::InputType in, const char *&out) { return inputTypes.find(in, out); } StringMap::Entry Joystick::hatEntries[] = { {"c", Joystick::HAT_CENTERED}, {"u", Joystick::HAT_UP}, {"r", Joystick::HAT_RIGHT}, {"d", Joystick::HAT_DOWN}, {"l", Joystick::HAT_LEFT}, {"ru", Joystick::HAT_RIGHTUP}, {"rd", Joystick::HAT_RIGHTDOWN}, {"lu", Joystick::HAT_LEFTUP}, {"ld", Joystick::HAT_LEFTDOWN}, }; StringMap Joystick::hats(Joystick::hatEntries, sizeof(Joystick::hatEntries)); StringMap::Entry Joystick::gpAxisEntries[] = { {"leftx", GAMEPAD_AXIS_LEFTX}, {"lefty", GAMEPAD_AXIS_LEFTY}, {"rightx", GAMEPAD_AXIS_RIGHTX}, {"righty", GAMEPAD_AXIS_RIGHTY}, {"triggerleft", GAMEPAD_AXIS_TRIGGERLEFT}, {"triggerright", GAMEPAD_AXIS_TRIGGERRIGHT}, }; StringMap Joystick::gpAxes(Joystick::gpAxisEntries, sizeof(Joystick::gpAxisEntries)); StringMap::Entry Joystick::gpButtonEntries[] = { {"a", GAMEPAD_BUTTON_A}, {"b", GAMEPAD_BUTTON_B}, {"x", GAMEPAD_BUTTON_X}, {"y", GAMEPAD_BUTTON_Y}, {"back", GAMEPAD_BUTTON_BACK}, {"guide", GAMEPAD_BUTTON_GUIDE}, {"start", GAMEPAD_BUTTON_START}, {"leftstick", GAMEPAD_BUTTON_LEFTSTICK}, {"rightstick", GAMEPAD_BUTTON_RIGHTSTICK}, {"leftshoulder", GAMEPAD_BUTTON_LEFTSHOULDER}, {"rightshoulder", GAMEPAD_BUTTON_RIGHTSHOULDER}, {"dpup", GAMEPAD_BUTTON_DPAD_UP}, {"dpdown", GAMEPAD_BUTTON_DPAD_DOWN}, {"dpleft", GAMEPAD_BUTTON_DPAD_LEFT}, {"dpright", GAMEPAD_BUTTON_DPAD_RIGHT}, }; StringMap Joystick::gpButtons(Joystick::gpButtonEntries, sizeof(Joystick::gpButtonEntries)); StringMap::Entry Joystick::inputTypeEntries[] = { {"axis", Joystick::INPUT_TYPE_AXIS}, {"button", Joystick::INPUT_TYPE_BUTTON}, {"hat", Joystick::INPUT_TYPE_HAT}, }; StringMap Joystick::inputTypes(Joystick::inputTypeEntries, sizeof(Joystick::inputTypeEntries)); } // joystick } // love love-0.9.1/src/modules/joystick/sdl/0000755000000000000000000000000012316602462017346 5ustar00rootroot00000000000000love-0.9.1/src/modules/joystick/sdl/wrap_JoystickModule.h0000644000000000000000000000273412316602166023524 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_JOYSTICK_SDL_WRAP_JOYSTICK_MODULE_H #define LOVE_JOYSTICK_SDL_WRAP_JOYSTICK_MODULE_H // LOVE #include "common/config.h" #include "common/runtime.h" #include "JoystickModule.h" namespace love { namespace joystick { namespace sdl { int w_getJoysticks(lua_State *L); int w_getIndex(lua_State *L); int w_getJoystickCount(lua_State *L); int w_setGamepadMapping(lua_State *L); int w_getGamepadMapping(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_joystick(lua_State *L); } // sdl } // joystick } // love #endif // LOVE_JOYSTICK_SDL_WRAP_JOYSTICK_MODULE_H love-0.9.1/src/modules/joystick/sdl/wrap_Joystick.cpp0000644000000000000000000001373712316602166022716 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Joystick.h" #include "wrap_JoystickModule.h" #include namespace love { namespace joystick { namespace sdl { Joystick *luax_checkjoystick(lua_State *L, int idx) { return luax_checktype(L, idx, "Joystick", JOYSTICK_JOYSTICK_T); } int w_Joystick_isConnected(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); luax_pushboolean(L, j->isConnected()); return 1; } int w_Joystick_getName(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); lua_pushstring(L, j->getName()); return 1; } int w_Joystick_getID(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); // IDs are 1-based in Lua. lua_pushinteger(L, j->getID() + 1); int instanceid = j->getInstanceID(); if (instanceid >= 0) lua_pushinteger(L, instanceid + 1); else lua_pushnil(L); return 2; } int w_Joystick_getGUID(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); luax_pushstring(L, j->getGUID()); return 1; } int w_Joystick_getAxisCount(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); lua_pushinteger(L, j->getAxisCount()); return 1; } int w_Joystick_getButtonCount(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); lua_pushinteger(L, j->getButtonCount()); return 1; } int w_Joystick_getHatCount(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); lua_pushinteger(L, j->getHatCount()); return 1; } int w_Joystick_getAxis(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); int axisindex = luaL_checkint(L, 2) - 1; lua_pushnumber(L, j->getAxis(axisindex)); return 1; } int w_Joystick_getAxes(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); std::vector axes = j->getAxes(); for (size_t i = 0; i < axes.size(); i++) lua_pushnumber(L, axes[i]); return (int) axes.size(); } int w_Joystick_getHat(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); int hatindex = luaL_checkint(L, 2) - 1; Joystick::Hat h = j->getHat(hatindex); const char *direction = ""; love::joystick::Joystick::getConstant(h, direction); lua_pushstring(L, direction); return 1; } int w_Joystick_isDown(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); luaL_checkinteger(L, 2); std::vector buttons; for (int i = 2; i <= lua_gettop(L); i++) buttons.push_back(luaL_checkint(L, i) - 1); luax_pushboolean(L, j->isDown(buttons)); return 1; } int w_Joystick_isGamepad(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); luax_pushboolean(L, j->isGamepad()); return 1; } int w_Joystick_getGamepadAxis(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); const char *str = luaL_checkstring(L, 2); Joystick::GamepadAxis axis; if (!joystick::Joystick::getConstant(str, axis)) return luaL_error(L, "Invalid gamepad axis: %s", str); lua_pushnumber(L, j->getGamepadAxis(axis)); return 1; } int w_Joystick_isGamepadDown(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); std::vector buttons; buttons.reserve(lua_gettop(L) - 1); luaL_checkstring(L, 2); for (int i = 2; i <= lua_gettop(L); i++) { const char *str = luaL_checkstring(L, i); Joystick::GamepadButton button; if (!joystick::Joystick::getConstant(str, button)) return luaL_error(L, "Invalid gamepad button: %s", str); buttons.push_back(button); } luax_pushboolean(L, j->isGamepadDown(buttons)); return 1; } int w_Joystick_isVibrationSupported(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); luax_pushboolean(L, j->isVibrationSupported()); return 1; } int w_Joystick_setVibration(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); bool success = false; if (lua_isnoneornil(L, 2)) { // Disable joystick vibration if no argument is given. success = j->setVibration(); } else { float left = (float) luaL_checknumber(L, 2); float right = (float) luaL_optnumber(L, 3, left); success = j->setVibration(left, right); } luax_pushboolean(L, success); return 1; } int w_Joystick_getVibration(lua_State *L) { Joystick *j = luax_checkjoystick(L, 1); float left, right; j->getVibration(left, right); lua_pushnumber(L, left); lua_pushnumber(L, right); return 2; } // List of functions to wrap. static const luaL_Reg functions[] = { { "isConnected", w_Joystick_isConnected }, { "getName", w_Joystick_getName }, { "getID", w_Joystick_getID }, { "getGUID", w_Joystick_getGUID }, { "getAxisCount", w_Joystick_getAxisCount }, { "getButtonCount", w_Joystick_getButtonCount }, { "getHatCount", w_Joystick_getHatCount }, { "getAxis", w_Joystick_getAxis }, { "getAxes", w_Joystick_getAxes }, { "getHat", w_Joystick_getHat }, { "isDown", w_Joystick_isDown }, { "isGamepad", w_Joystick_isGamepad }, { "getGamepadAxis", w_Joystick_getGamepadAxis }, { "isGamepadDown", w_Joystick_isGamepadDown }, { "isVibrationSupported", w_Joystick_isVibrationSupported }, { "setVibration", w_Joystick_setVibration }, { "getVibration", w_Joystick_getVibration }, // From wrap_JoystickModule. { "getConnectedIndex", w_getIndex }, { "getGamepadMapping", w_getGamepadMapping }, { 0, 0 }, }; extern "C" int luaopen_joystick(lua_State *L) { return luax_register_type(L, "Joystick", functions); } } // sdl } // joystick } // love love-0.9.1/src/modules/joystick/sdl/wrap_Joystick.h0000644000000000000000000000375512316602166022362 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_JOYSTICK_SDL_WRAP_JOYSTICK_H #define LOVE_JOYSTICK_SDL_WRAP_JOYSTICK_H // LOVE #include "common/config.h" #include "Joystick.h" #include "common/runtime.h" namespace love { namespace joystick { namespace sdl { Joystick *luax_checkjoystick(lua_State *L, int idx); int w_Joystick_isConnected(lua_State *L); int w_Joystick_getName(lua_State *L); int w_Joystick_getID(lua_State *L); int w_Joystick_getGUID(lua_State *L); int w_Joystick_getAxisCount(lua_State *L); int w_Joystick_getButtonCount(lua_State *L); int w_Joystick_getHatCount(lua_State *L); int w_Joystick_getAxis(lua_State *L); int w_Joystick_getAxes(lua_State *L); int w_Joystick_getHat(lua_State *L); int w_Joystick_isDown(lua_State *L); int w_Joystick_isGamepad(lua_State *L); int w_Joystick_getGamepadAxis(lua_State *L); int w_Joystick_isGamepadDown(lua_State *L); int w_Joystick_isVibrationSupported(lua_State *L); int w_Joystick_setVibration(lua_State *L); int w_Joystick_getVibration(lua_State *L); extern "C" int luaopen_joystick(lua_State *L); } // sdl } // joystick } // love #endif // LOVE_JOYSTICK_SDL_WRAP_JOYSTICK_H love-0.9.1/src/modules/joystick/sdl/wrap_JoystickModule.cpp0000644000000000000000000001323412316602166024054 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_JoystickModule.h" #include "wrap_Joystick.h" namespace love { namespace joystick { namespace sdl { static JoystickModule *instance = 0; int w_getJoysticks(lua_State *L) { int stickcount = instance->getJoystickCount(); lua_createtable(L, stickcount, 0); for (int i = 0; i < stickcount; i++) { love::joystick::Joystick *stick = instance->getJoystick(i); stick->retain(); luax_pushtype(L, "Joystick", JOYSTICK_JOYSTICK_T, stick); lua_rawseti(L, -2, i + 1); } return 1; } int w_getIndex(lua_State *L) { love::joystick::Joystick *j = luax_checkjoystick(L, 1); int index = instance->getIndex(j); if (index >= 0) lua_pushinteger(L, index + 1); else lua_pushnil(L); return 1; } int w_getJoystickCount(lua_State *L) { lua_pushinteger(L, instance->getJoystickCount()); return 1; } int w_setGamepadMapping(lua_State *L) { // Only accept a GUID string. We don't accept a Joystick object because // the gamepad mapping applies to all joysticks with the same GUID (e.g. all // Xbox 360 controllers on the system), rather than individual objects. const char *guid = luaL_checkstring(L, 1); const char *gpbindstr = luaL_checkstring(L, 2); Joystick::GamepadInput gpinput; if (love::joystick::Joystick::getConstant(gpbindstr, gpinput.axis)) gpinput.type = Joystick::INPUT_TYPE_AXIS; else if (love::joystick::Joystick::getConstant(gpbindstr, gpinput.button)) gpinput.type = Joystick::INPUT_TYPE_BUTTON; else return luaL_error(L, "Invalid gamepad axis/button: %s", gpbindstr); const char *jinputtypestr = luaL_checkstring(L, 3); Joystick::JoystickInput jinput; if (!love::joystick::Joystick::getConstant(jinputtypestr, jinput.type)) return luaL_error(L, "Invalid joystick input type: %s", jinputtypestr); const char *hatstr; switch (jinput.type) { case Joystick::INPUT_TYPE_AXIS: jinput.axis = luaL_checkint(L, 4) - 1; break; case Joystick::INPUT_TYPE_BUTTON: jinput.button = luaL_checkint(L, 4) - 1; break; case Joystick::INPUT_TYPE_HAT: // Hats need both a hat index and a hat value. jinput.hat.index = luaL_checkint(L, 4) - 1; hatstr = luaL_checkstring(L, 5); if (!love::joystick::Joystick::getConstant(hatstr, jinput.hat.value)) return luaL_error(L, "Invalid joystick hat: %s", hatstr); break; default: return luaL_error(L, "Invalid joystick input type: %s", jinputtypestr); } bool success = false; EXCEPT_GUARD(success = instance->setGamepadMapping(guid, gpinput, jinput);) luax_pushboolean(L, success); return 1; } int w_getGamepadMapping(lua_State *L) { std::string guid; // Accept either a GUID string or a Joystick object. This way we can re-use // the function for Joystick:getGamepadMapping. if (lua_type(L, 1) == LUA_TSTRING) guid = luax_checkstring(L, 1); else { love::joystick::Joystick *stick = luax_checkjoystick(L, 1); guid = stick->getGUID(); } const char *gpbindstr = luaL_checkstring(L, 2); Joystick::GamepadInput gpinput; if (love::joystick::Joystick::getConstant(gpbindstr, gpinput.axis)) gpinput.type = Joystick::INPUT_TYPE_AXIS; else if (love::joystick::Joystick::getConstant(gpbindstr, gpinput.button)) gpinput.type = Joystick::INPUT_TYPE_BUTTON; else return luaL_error(L, "Invalid gamepad axis/button: %s", gpbindstr); Joystick::JoystickInput jinput; jinput.type = Joystick::INPUT_TYPE_MAX_ENUM; EXCEPT_GUARD(jinput = instance->getGamepadMapping(guid, gpinput);) if (jinput.type == Joystick::INPUT_TYPE_MAX_ENUM) return 0; const char *inputtypestr; if (!love::joystick::Joystick::getConstant(jinput.type, inputtypestr)) return luaL_error(L, "Unknown joystick input type."); lua_pushstring(L, inputtypestr); const char *hatstr; switch (jinput.type) { case Joystick::INPUT_TYPE_AXIS: lua_pushinteger(L, jinput.axis + 1); return 2; case Joystick::INPUT_TYPE_BUTTON: lua_pushinteger(L, jinput.button + 1); return 2; case Joystick::INPUT_TYPE_HAT: lua_pushinteger(L, jinput.hat.index + 1); if (love::joystick::Joystick::getConstant(jinput.hat.value, hatstr)) { lua_pushstring(L, hatstr); return 3; } else return luaL_error(L, "Unknown joystick hat."); default: break; // ? } return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "getJoysticks", w_getJoysticks }, { "getJoystickCount", w_getJoystickCount }, { "setGamepadMapping", w_setGamepadMapping }, { "getGamepadMapping", w_getGamepadMapping }, { 0, 0 } }; static const lua_CFunction types[] = { luaopen_joystick, 0, }; extern "C" int luaopen_love_joystick(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new JoystickModule();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "joystick"; w.flags = MODULE_T; w.functions = functions; w.types = types; return luax_register_module(L, w); } } // sdl } // joystick } // love love-0.9.1/src/modules/joystick/sdl/JoystickModule.h0000644000000000000000000000513312316602166022467 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_JOYSTICK_SDL_JOYSTICK_MODULE_H #define LOVE_JOYSTICK_SDL_JOYSTICK_MODULE_H // LOVE #include "joystick/JoystickModule.h" // C++ #include #include #include namespace love { namespace joystick { namespace sdl { class JoystickModule : public love::joystick::JoystickModule { public: JoystickModule(); virtual ~JoystickModule(); // Implements Module. const char *getName() const; // Implements JoystickModule. love::joystick::Joystick *addJoystick(int deviceindex); void removeJoystick(love::joystick::Joystick *joystick); love::joystick::Joystick *getJoystickFromID(int instanceid); love::joystick::Joystick *getJoystick(int joyindex); int getIndex(const love::joystick::Joystick *joystick); int getJoystickCount() const; bool setGamepadMapping(const std::string &guid, Joystick::GamepadInput gpinput, Joystick::JoystickInput joyinput); Joystick::JoystickInput getGamepadMapping(const std::string &guid, Joystick::GamepadInput gpinput); private: std::string stringFromGamepadInput(Joystick::GamepadInput gpinput) const; Joystick::JoystickInput JoystickInputFromString(const std::string &str) const; void removeBindFromMapString(std::string &mapstr, const std::string &joybindstr) const; void checkGamepads(const std::string &guid) const; // SDL2's GUIDs identify *classes* of devices, instead of unique devices. std::string getDeviceGUID(int deviceindex) const; // Lists of currently connected Joysticks. std::vector activeSticks; // Persistent list of all Joysticks which have been connected at some point. std::list joysticks; }; // JoystickModule } // sdl } // joystick } // love #endif // LOVE_JOYSTICK_SDL_JOYSTICK_MODULE_H love-0.9.1/src/modules/joystick/sdl/JoystickModule.cpp0000644000000000000000000003024012316602166023017 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" #include "JoystickModule.h" #include "Joystick.h" // SDL #include // C++ #include #include // C #include namespace love { namespace joystick { namespace sdl { JoystickModule::JoystickModule() { if (SDL_InitSubSystem(SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER) < 0) throw love::Exception("%s", SDL_GetError()); // Initialize any joysticks which are already connected. for (int i = 0; i < SDL_NumJoysticks(); i++) addJoystick(i); // Start joystick event watching. Joysticks are automatically added and // removed via love.event. SDL_JoystickEventState(SDL_ENABLE); SDL_GameControllerEventState(SDL_ENABLE); } JoystickModule::~JoystickModule() { // Close any open Joysticks. for (auto it = joysticks.begin(); it != joysticks.end(); ++it) { (*it)->close(); (*it)->release(); } if (SDL_WasInit(SDL_INIT_HAPTIC) != 0) SDL_QuitSubSystem(SDL_INIT_HAPTIC); SDL_QuitSubSystem(SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER); } const char *JoystickModule::getName() const { return "love.joystick.sdl"; } love::joystick::Joystick *JoystickModule::getJoystick(int joyindex) { if (joyindex < 0 || (size_t) joyindex >= activeSticks.size()) return 0; return activeSticks[joyindex]; } int JoystickModule::getIndex(const love::joystick::Joystick *joystick) { for (size_t i = 0; i < activeSticks.size(); i++) { if (activeSticks[i] == joystick) return i; } // Joystick is not connected. return -1; } int JoystickModule::getJoystickCount() const { return (int) activeSticks.size(); } love::joystick::Joystick *JoystickModule::getJoystickFromID(int instanceid) { for (size_t i = 0; i < activeSticks.size(); i++) { if (instanceid == activeSticks[i]->getInstanceID()) return activeSticks[i]; } return 0; } love::joystick::Joystick *JoystickModule::addJoystick(int deviceindex) { if (deviceindex < 0 || deviceindex >= SDL_NumJoysticks()) return 0; std::string guidstr = getDeviceGUID(deviceindex); joystick::Joystick *joystick = 0; bool reused = false; for (auto it = joysticks.begin(); it != joysticks.end(); ++it) { // Try to re-use a disconnected Joystick with the same GUID. if (!(*it)->isConnected() && (*it)->getGUID() == guidstr) { joystick = *it; reused = true; break; } } if (!joystick) { joystick = new Joystick(joysticks.size()); joysticks.push_back(joystick); } // Make sure the Joystick object isn't in the active list already. removeJoystick(joystick); if (!joystick->open(deviceindex)) return 0; // Make sure multiple instances of the same physical joystick aren't added // to the active list. for (auto it = activeSticks.begin(); it != activeSticks.end(); ++it) { if (joystick->getHandle() == (*it)->getHandle()) { joystick->close(); // If we just created the stick, remove it since it's a duplicate. if (!reused) { joysticks.remove(joystick); joystick->release(); } return *it; } } activeSticks.push_back(joystick); return joystick; } void JoystickModule::removeJoystick(love::joystick::Joystick *joystick) { if (!joystick) return; // Close the Joystick and remove it from the active joystick list. auto it = std::find(activeSticks.begin(), activeSticks.end(), joystick); if (it != activeSticks.end()) { (*it)->close(); activeSticks.erase(it); } } bool JoystickModule::setGamepadMapping(const std::string &guid, Joystick::GamepadInput gpinput, Joystick::JoystickInput joyinput) { // All SDL joystick GUID strings are 32 characters. if (guid.length() != 32) throw love::Exception("Invalid joystick GUID: %s", guid.c_str()); SDL_JoystickGUID sdlguid = SDL_JoystickGetGUIDFromString(guid.c_str()); std::string mapstr; char *sdlmapstr = SDL_GameControllerMappingForGUID(sdlguid); if (sdlmapstr) { mapstr = sdlmapstr; SDL_free(sdlmapstr); } else { // Use a generic name if we have to create a new mapping string. mapstr = guid + ",Controller,"; } std::stringstream joyinputstream; Uint8 sdlhat; // We can't have negative int values in the bind string. switch (joyinput.type) { case Joystick::INPUT_TYPE_AXIS: if (joyinput.axis >= 0) joyinputstream << "a" << joyinput.axis; break; case Joystick::INPUT_TYPE_BUTTON: if (joyinput.button >= 0) joyinputstream << "b" << joyinput.button; break; case Joystick::INPUT_TYPE_HAT: if (joyinput.hat.value >= 0 && Joystick::getConstant(joyinput.hat.value, sdlhat)) joyinputstream << "h" << joyinput.hat.value << "." << int(sdlhat); break; default: break; } std::string joyinputstr = joyinputstream.str(); if (joyinputstr.length() == 0) throw love::Exception("Invalid joystick input value."); // SDL's name for the gamepad input value, e.g. "guide". std::string gpinputname = stringFromGamepadInput(gpinput); // We should remove any existing joystick bind for this gamepad buttton/axis // so SDL's parser doesn't get mixed up. removeBindFromMapString(mapstr, joyinputstr); // The string we'll be adding to the mapping string, e.g. "guide:b10," std::string insertstr = gpinputname + ":" + joyinputstr + ","; // We should replace any existing gamepad bind. size_t findpos = mapstr.find(gpinputname + ":"); if (findpos != std::string::npos) { // The bind string ends at the next comma, or the end of the string. size_t endpos = mapstr.find_first_of(',', findpos); if (endpos == std::string::npos) endpos = mapstr.length() - 1; mapstr.replace(findpos, endpos - findpos + 1, insertstr); } else { // Just append to the end if we don't need to replace anything. mapstr += insertstr; } // 1 == added, 0 == updated, -1 == error. int status = SDL_GameControllerAddMapping(mapstr.c_str()); // FIXME: massive hack until missing APIs are added to SDL 2: // https://bugzilla.libsdl.org/show_bug.cgi?id=1975 if (status == 1) checkGamepads(guid); return status >= 0; } Joystick::JoystickInput JoystickModule::getGamepadMapping(const std::string &guid, Joystick::GamepadInput gpinput) { // All SDL joystick GUID strings are 32 characters. if (guid.length() != 32) throw love::Exception("Invalid joystick GUID: %s", guid.c_str()); Joystick::JoystickInput jinput; jinput.type = Joystick::INPUT_TYPE_MAX_ENUM; SDL_JoystickGUID sdlguid = SDL_JoystickGetGUIDFromString(guid.c_str()); std::string mapstr; char *sdlmapstr = SDL_GameControllerMappingForGUID(sdlguid); if (!sdlmapstr) return jinput; mapstr = sdlmapstr; SDL_free(sdlmapstr); std::string gpbindname = stringFromGamepadInput(gpinput); size_t findpos = mapstr.find(std::string(",") + gpbindname + ":"); if (findpos == std::string::npos) return jinput; size_t endpos = mapstr.find_first_of(',', findpos); if (endpos == std::string::npos) { // Assume end-of-string if we can't find the next comma. endpos = mapstr.length() - 1; } if (endpos >= mapstr.length()) return jinput; // Something went wrong. // Strip out the trailing comma from our search position, if it exists. if (mapstr[endpos] == ',') endpos--; // New start position: comma + gamepadinputlength + ":". findpos += 1 + gpbindname.length() + 1; std::string jbindstr = mapstr.substr(findpos, endpos - findpos + 1); jinput = JoystickInputFromString(jbindstr); return jinput; } std::string JoystickModule::stringFromGamepadInput(Joystick::GamepadInput gpinput) const { SDL_GameControllerAxis sdlaxis; SDL_GameControllerButton sdlbutton; const char *gpinputname = 0; switch (gpinput.type) { case Joystick::INPUT_TYPE_AXIS: if (Joystick::getConstant(gpinput.axis, sdlaxis)) gpinputname = SDL_GameControllerGetStringForAxis(sdlaxis); break; case Joystick::INPUT_TYPE_BUTTON: if (Joystick::getConstant(gpinput.button, sdlbutton)) gpinputname = SDL_GameControllerGetStringForButton(sdlbutton); break; default: break; } if (!gpinputname) throw love::Exception("Invalid gamepad axis/button."); return std::string(gpinputname); } Joystick::JoystickInput JoystickModule::JoystickInputFromString(const std::string &str) const { Joystick::JoystickInput jinput; jinput.type = Joystick::INPUT_TYPE_MAX_ENUM; // Return an invalid value rather than throwing an exception. if (str.length() < 2) return jinput; // The input type will always be the first character in the string. char inputtype = str[0]; std::string bindvalues = str.substr(1); Uint8 sdlhat; switch (inputtype) { case 'a': jinput.type = Joystick::INPUT_TYPE_AXIS; jinput.axis = atoi(bindvalues.c_str()); break; case 'b': jinput.type = Joystick::INPUT_TYPE_BUTTON; jinput.button = atoi(bindvalues.c_str()); break; case 'h': // Hat string syntax is "index.value". if (bindvalues.length() < 3) break; jinput.type = Joystick::INPUT_TYPE_HAT; jinput.hat.index = atoi(bindvalues.substr(0, 1).c_str()); sdlhat = (Uint8) atoi(bindvalues.substr(2, 1).c_str()); if (!Joystick::getConstant(sdlhat, jinput.hat.value)) { // Return an invalid value if we can't find the hat constant. jinput.type = Joystick::INPUT_TYPE_MAX_ENUM; return jinput; } break; default: break; } return jinput; } void JoystickModule::removeBindFromMapString(std::string &mapstr, const std::string &joybindstr) const { // Find the joystick part of the bind in the string. size_t joybindpos = mapstr.find(joybindstr + ","); if (joybindpos == std::string::npos) { joybindpos = mapstr.rfind(joybindstr); if (joybindpos != mapstr.length() - joybindstr.length()) return; } if (joybindpos == std::string::npos) return; // Find the start of the entire bind. size_t bindstart = mapstr.rfind(',', joybindpos); if (bindstart != std::string::npos && bindstart < mapstr.length() - 1) { size_t bindend = mapstr.find(',', bindstart + 1); if (bindend == std::string::npos) bindend = mapstr.length() - 1; // Replace it with an empty string (remove it.) mapstr.replace(bindstart, bindend - bindstart + 1, ""); } } void JoystickModule::checkGamepads(const std::string &guid) const { // FIXME: massive hack until missing APIs are added to SDL 2: // https://bugzilla.libsdl.org/show_bug.cgi?id=1975 // Make sure all connected joysticks of a certain guid that are // gamepad-capable are opened as such. for (int d_index = 0; d_index < SDL_NumJoysticks(); d_index++) { if (!SDL_IsGameController(d_index)) continue; if (guid.compare(getDeviceGUID(d_index)) != 0) continue; for (auto it = activeSticks.begin(); it != activeSticks.end(); ++it) { if ((*it)->isGamepad() || guid.compare((*it)->getGUID()) != 0) continue; // Big hack time: open the index as a game controller and compare // the underlying joystick handle to the active stick's. SDL_GameController *ctrl = SDL_GameControllerOpen(d_index); if (ctrl == NULL) continue; SDL_Joystick *stick = SDL_GameControllerGetJoystick(ctrl); if (stick == (SDL_Joystick *) (*it)->getHandle()) (*it)->openGamepad(d_index); SDL_GameControllerClose(ctrl); } } } std::string JoystickModule::getDeviceGUID(int deviceindex) const { if (deviceindex < 0 || deviceindex >= SDL_NumJoysticks()) return std::string(""); // SDL_JoystickGetGUIDString uses 32 bytes plus the null terminator. char guidstr[33] = {'\0'}; // SDL2's GUIDs identify *classes* of devices, instead of unique devices. SDL_JoystickGUID guid = SDL_JoystickGetDeviceGUID(deviceindex); SDL_JoystickGetGUIDString(guid, guidstr, sizeof(guidstr)); return std::string(guidstr); } } // sdl } // joystick } // love love-0.9.1/src/modules/joystick/sdl/Joystick.h0000644000000000000000000000663312316602166021327 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_JOYSTICK_SDL_JOYSTICK_H #define LOVE_JOYSTICK_SDL_JOYSTICK_H // LOVE #include "joystick/Joystick.h" #include "common/EnumMap.h" // SDL #include namespace love { namespace joystick { namespace sdl { class Joystick : public love::joystick::Joystick { public: Joystick(int id); Joystick(int id, int joyindex); virtual ~Joystick(); bool open(int deviceindex); void close(); bool isConnected() const; const char *getName() const; int getAxisCount() const; int getButtonCount() const; int getHatCount() const; float getAxis(int axisindex) const; std::vector getAxes() const; Hat getHat(int hatindex) const; bool isDown(const std::vector &buttonlist) const; bool openGamepad(int deviceindex); bool isGamepad() const; float getGamepadAxis(GamepadAxis axis) const; bool isGamepadDown(const std::vector &blist) const; void *getHandle() const; std::string getGUID() const; int getInstanceID() const; int getID() const; bool isVibrationSupported(); bool setVibration(float left, float right); bool setVibration(); void getVibration(float &left, float &right) const; static bool getConstant(Hat in, Uint8 &out); static bool getConstant(Uint8 in, Hat &out); static bool getConstant(SDL_GameControllerAxis in, GamepadAxis &out); static bool getConstant(GamepadAxis in, SDL_GameControllerAxis &out); static bool getConstant(SDL_GameControllerButton in, GamepadButton &out); static bool getConstant(GamepadButton in, SDL_GameControllerButton &out); private: Joystick() {} bool checkCreateHaptic(); bool runVibrationEffect(); SDL_Joystick *joyhandle; SDL_GameController *controller; SDL_Haptic *haptic; SDL_JoystickID instanceid; std::string pguid; int id; std::string name; struct Vibration { float left, right; SDL_HapticEffect effect; Uint16 data[4]; int id; Vibration() : left(0.0f), right(0.0f), effect(), data(), id(-1) {} } vibration; static EnumMap::Entry hatEntries[]; static EnumMap hats; static EnumMap::Entry gpAxisEntries[]; static EnumMap gpAxes; static EnumMap::Entry gpButtonEntries[]; static EnumMap gpButtons; }; } // sdl } // joystick } // love #endif // LOVE_JOYSTICK_SDL_JOYSTICK_H love-0.9.1/src/modules/joystick/sdl/Joystick.cpp0000644000000000000000000003133112316602166021653 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "common/config.h" #include "Joystick.h" #include "common/int.h" // C++ #include namespace love { namespace joystick { namespace sdl { Joystick::Joystick(int id) : joyhandle(0) , controller(0) , haptic(0) , instanceid(-1) , id(id) , vibration() { } Joystick::Joystick(int id, int joyindex) : joyhandle(0) , controller(0) , haptic(0) , instanceid(-1) , id(id) , vibration() { open(joyindex); } Joystick::~Joystick() { close(); } bool Joystick::open(int deviceindex) { close(); joyhandle = SDL_JoystickOpen(deviceindex); if (joyhandle) { instanceid = SDL_JoystickInstanceID(joyhandle); // SDL_JoystickGetGUIDString uses 32 bytes plus the null terminator. char cstr[33]; SDL_JoystickGUID sdlguid = SDL_JoystickGetGUID(joyhandle); SDL_JoystickGetGUIDString(sdlguid, cstr, (int) sizeof(cstr)); pguid = std::string(cstr); // See if SDL thinks this is a Game Controller. openGamepad(deviceindex); // Prefer the Joystick name for consistency. const char *joyname = SDL_JoystickName(joyhandle); if (!joyname && controller) joyname = SDL_GameControllerName(controller); if (joyname) name = joyname; } return isConnected(); } void Joystick::close() { if (haptic) { SDL_HapticRumbleStop(haptic); SDL_HapticClose(haptic); } if (controller) SDL_GameControllerClose(controller); if (joyhandle) SDL_JoystickClose(joyhandle); joyhandle = 0; controller = 0; haptic = 0; instanceid = -1; vibration = Vibration(); } bool Joystick::isConnected() const { return joyhandle != 0 && SDL_JoystickGetAttached(joyhandle); } const char *Joystick::getName() const { // Use the saved name if this Joystick isn't connected anymore. if (!isConnected()) return name.c_str(); // Prefer the Joystick name for consistency. const char *joyname = SDL_JoystickName(joyhandle); if (!joyname && isGamepad()) joyname = SDL_GameControllerName(controller); return joyname; } int Joystick::getAxisCount() const { return isConnected() ? SDL_JoystickNumAxes(joyhandle) : 0; } int Joystick::getButtonCount() const { return isConnected() ? SDL_JoystickNumButtons(joyhandle) : 0; } int Joystick::getHatCount() const { return isConnected() ? SDL_JoystickNumHats(joyhandle) : 0; } float Joystick::getAxis(int axisindex) const { if (!isConnected() || axisindex < 0 || axisindex >= getAxisCount()) return 0; return clampval(((float) SDL_JoystickGetAxis(joyhandle, axisindex))/32768.0f); } std::vector Joystick::getAxes() const { std::vector axes; int count = getAxisCount(); if (!isConnected() || count <= 0) return axes; axes.reserve(count); for (int i = 0; i < count; i++) axes.push_back(clampval(((float) SDL_JoystickGetAxis(joyhandle, i))/32768.0f)); return axes; } Joystick::Hat Joystick::getHat(int hatindex) const { Hat h = HAT_INVALID; if (!isConnected() || hatindex < 0 || hatindex >= getHatCount()) return h; getConstant(SDL_JoystickGetHat(joyhandle, hatindex), h); return h; } bool Joystick::isDown(const std::vector &buttonlist) const { if (!isConnected()) return false; int num = getButtonCount(); for (size_t i = 0; i < buttonlist.size(); i++) { int button = buttonlist[i]; if (button >= 0 && button < num && SDL_JoystickGetButton(joyhandle, button) == 1) return true; } return false; } bool Joystick::openGamepad(int deviceindex) { if (!SDL_IsGameController(deviceindex)) return false; if (isGamepad()) { SDL_GameControllerClose(controller); controller = 0; } controller = SDL_GameControllerOpen(deviceindex); return isGamepad(); } bool Joystick::isGamepad() const { return controller != 0; } float Joystick::getGamepadAxis(love::joystick::Joystick::GamepadAxis axis) const { if (!isConnected() || !isGamepad()) return 0.f; SDL_GameControllerAxis sdlaxis; if (!getConstant(axis, sdlaxis)) return 0.f; Sint16 value = SDL_GameControllerGetAxis(controller, sdlaxis); return clampval((float) value / 32768.0f); } bool Joystick::isGamepadDown(const std::vector &blist) const { if (!isConnected() || !isGamepad()) return false; SDL_GameControllerButton sdlbutton; for (size_t i = 0; i < blist.size(); i++) { if (!getConstant(blist[i], sdlbutton)) continue; if (SDL_GameControllerGetButton(controller, sdlbutton) == 1) return true; } return false; } void *Joystick::getHandle() const { return joyhandle; } std::string Joystick::getGUID() const { // SDL2's GUIDs identify *classes* of devices, instead of unique devices. return pguid; } int Joystick::getInstanceID() const { return instanceid; } int Joystick::getID() const { return id; } bool Joystick::checkCreateHaptic() { if (!isConnected()) return false; if (!SDL_WasInit(SDL_INIT_HAPTIC) && SDL_InitSubSystem(SDL_INIT_HAPTIC) < 0) return false; if (haptic && SDL_HapticIndex(haptic) != -1) return true; if (haptic) { SDL_HapticClose(haptic); haptic = 0; } haptic = SDL_HapticOpenFromJoystick(joyhandle); vibration = Vibration(); return haptic != 0; } bool Joystick::isVibrationSupported() { if (!checkCreateHaptic()) return false; unsigned int features = SDL_HapticQuery(haptic); if ((features & SDL_HAPTIC_LEFTRIGHT) != 0) return true; // Some gamepad drivers only support left/right motors via a custom effect. if (isGamepad() && (features & SDL_HAPTIC_CUSTOM) != 0) return true; // Check SDL's simple rumble as a last resort. if (SDL_HapticRumbleSupported(haptic) == 1) return true; return false; } bool Joystick::runVibrationEffect() { if (vibration.id != -1) { if (SDL_HapticUpdateEffect(haptic, vibration.id, &vibration.effect) == 0) { if (SDL_HapticRunEffect(haptic, vibration.id, 1) != -1) return true; } // If the effect fails to update, we should destroy and re-create it. SDL_HapticDestroyEffect(haptic, vibration.id); vibration.id = -1; } vibration.id = SDL_HapticNewEffect(haptic, &vibration.effect); if (vibration.id != -1 && SDL_HapticRunEffect(haptic, vibration.id, 1) != -1) return true; return false; } bool Joystick::setVibration(float left, float right) { // TODO: support non-infinite durations? The working Tattiebogle Xbox // controller driver in OS X seems to ignore durations under 1 second. left = std::min(std::max(left, 0.0f), 1.0f); right = std::min(std::max(right, 0.0f), 1.0f); if (left == 0.0f && right == 0.0f) return setVibration(); if (!checkCreateHaptic()) return false; bool success = false; unsigned int features = SDL_HapticQuery(haptic); if ((features & SDL_HAPTIC_LEFTRIGHT) != 0) { memset(&vibration.effect, 0, sizeof(SDL_HapticEffect)); vibration.effect.type = SDL_HAPTIC_LEFTRIGHT; vibration.effect.leftright.length = SDL_HAPTIC_INFINITY; vibration.effect.leftright.large_magnitude = Uint16(left * LOVE_UINT16_MAX); vibration.effect.leftright.small_magnitude = Uint16(right * LOVE_UINT16_MAX); success = runVibrationEffect(); } // Some gamepad drivers only give support for controlling the motors via // a custom FF effect. if (!success && isGamepad() && (features & SDL_HAPTIC_CUSTOM) != 0) { // NOTE: this may cause issues with drivers which support custom effects // but aren't similar to https://github.com/d235j/360Controller . // Custom effect data is clamped to 0x7FFF in SDL. vibration.data[0] = vibration.data[2] = Uint16(left * 0x7FFF); vibration.data[1] = vibration.data[3] = Uint16(right * 0x7FFF); memset(&vibration.effect, 0, sizeof(SDL_HapticEffect)); vibration.effect.type = SDL_HAPTIC_CUSTOM; vibration.effect.custom.length = SDL_HAPTIC_INFINITY; vibration.effect.custom.channels = 2; vibration.effect.custom.period = 10; vibration.effect.custom.samples = 2; vibration.effect.custom.data = vibration.data; success = runVibrationEffect(); } // Fall back to a simple rumble if all else fails. SDL's simple rumble API // only supports a single strength value. if (!success && SDL_HapticRumbleInit(haptic) == 0) { float strength = std::max(left, right); int played = SDL_HapticRumblePlay(haptic, strength, SDL_HAPTIC_INFINITY); success = (played == 0); } if (success) { vibration.left = left; vibration.right = right; } return success; } bool Joystick::setVibration() { bool success = true; if (SDL_WasInit(SDL_INIT_HAPTIC) && haptic && SDL_HapticIndex(haptic) != -1) { // Stop all playing effects on the haptic device. // FIXME: We should only stop the vibration effect, in case we use the // Haptic API for other things in the future. success = (SDL_HapticStopAll(haptic) == 0); } if (success) vibration.left = vibration.right = 0.0f; return success; } void Joystick::getVibration(float &left, float &right) const { left = vibration.left; right = vibration.right; } bool Joystick::getConstant(Uint8 in, Joystick::Hat &out) { return hats.find(in, out); } bool Joystick::getConstant(Joystick::Hat in, Uint8 &out) { return hats.find(in, out); } bool Joystick::getConstant(SDL_GameControllerAxis in, Joystick::GamepadAxis &out) { return gpAxes.find(in, out); } bool Joystick::getConstant(Joystick::GamepadAxis in, SDL_GameControllerAxis &out) { return gpAxes.find(in, out); } bool Joystick::getConstant(SDL_GameControllerButton in, Joystick::GamepadButton &out) { return gpButtons.find(in, out); } bool Joystick::getConstant(Joystick::GamepadButton in, SDL_GameControllerButton &out) { return gpButtons.find(in, out); } EnumMap::Entry Joystick::hatEntries[] = { {Joystick::HAT_CENTERED, SDL_HAT_CENTERED}, {Joystick::HAT_UP, SDL_HAT_UP}, {Joystick::HAT_RIGHT, SDL_HAT_RIGHT}, {Joystick::HAT_DOWN, SDL_HAT_DOWN}, {Joystick::HAT_LEFT, SDL_HAT_LEFT}, {Joystick::HAT_RIGHTUP, SDL_HAT_RIGHTUP}, {Joystick::HAT_RIGHTDOWN, SDL_HAT_RIGHTDOWN}, {Joystick::HAT_LEFTUP, SDL_HAT_LEFTUP}, {Joystick::HAT_LEFTDOWN, SDL_HAT_LEFTDOWN}, }; EnumMap Joystick::hats(Joystick::hatEntries, sizeof(Joystick::hatEntries)); EnumMap::Entry Joystick::gpAxisEntries[] = { {Joystick::GAMEPAD_AXIS_LEFTX, SDL_CONTROLLER_AXIS_LEFTX}, {Joystick::GAMEPAD_AXIS_LEFTY, SDL_CONTROLLER_AXIS_LEFTY}, {Joystick::GAMEPAD_AXIS_RIGHTX, SDL_CONTROLLER_AXIS_RIGHTX}, {Joystick::GAMEPAD_AXIS_RIGHTY, SDL_CONTROLLER_AXIS_RIGHTY}, {Joystick::GAMEPAD_AXIS_TRIGGERLEFT, SDL_CONTROLLER_AXIS_TRIGGERLEFT}, {Joystick::GAMEPAD_AXIS_TRIGGERRIGHT, SDL_CONTROLLER_AXIS_TRIGGERRIGHT}, }; EnumMap Joystick::gpAxes(Joystick::gpAxisEntries, sizeof(Joystick::gpAxisEntries)); EnumMap::Entry Joystick::gpButtonEntries[] = { {Joystick::GAMEPAD_BUTTON_A, SDL_CONTROLLER_BUTTON_A}, {Joystick::GAMEPAD_BUTTON_B, SDL_CONTROLLER_BUTTON_B}, {Joystick::GAMEPAD_BUTTON_X, SDL_CONTROLLER_BUTTON_X}, {Joystick::GAMEPAD_BUTTON_Y, SDL_CONTROLLER_BUTTON_Y}, {Joystick::GAMEPAD_BUTTON_BACK, SDL_CONTROLLER_BUTTON_BACK}, {Joystick::GAMEPAD_BUTTON_GUIDE, SDL_CONTROLLER_BUTTON_GUIDE}, {Joystick::GAMEPAD_BUTTON_START, SDL_CONTROLLER_BUTTON_START}, {Joystick::GAMEPAD_BUTTON_LEFTSTICK, SDL_CONTROLLER_BUTTON_LEFTSTICK}, {Joystick::GAMEPAD_BUTTON_RIGHTSTICK, SDL_CONTROLLER_BUTTON_RIGHTSTICK}, {Joystick::GAMEPAD_BUTTON_LEFTSHOULDER, SDL_CONTROLLER_BUTTON_LEFTSHOULDER}, {Joystick::GAMEPAD_BUTTON_RIGHTSHOULDER, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER}, {Joystick::GAMEPAD_BUTTON_DPAD_UP, SDL_CONTROLLER_BUTTON_DPAD_UP}, {Joystick::GAMEPAD_BUTTON_DPAD_DOWN, SDL_CONTROLLER_BUTTON_DPAD_DOWN}, {Joystick::GAMEPAD_BUTTON_DPAD_LEFT, SDL_CONTROLLER_BUTTON_DPAD_LEFT}, {Joystick::GAMEPAD_BUTTON_DPAD_RIGHT, SDL_CONTROLLER_BUTTON_DPAD_RIGHT}, }; EnumMap Joystick::gpButtons(Joystick::gpButtonEntries, sizeof(Joystick::gpButtonEntries)); } // sdl } // joystick } // love love-0.9.1/src/modules/filesystem/0000755000000000000000000000000012316602462017111 5ustar00rootroot00000000000000love-0.9.1/src/modules/filesystem/FileData.h0000644000000000000000000000376612316602166020750 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FILESYSTEM_FILE_DATA_H #define LOVE_FILESYSTEM_FILE_DATA_H // LOVE #include #include "common/Data.h" #include "common/StringMap.h" #include "common/int.h" namespace love { namespace filesystem { class FileData : public Data { public: enum Decoder { FILE, BASE64, DECODE_MAX_ENUM }; // Decoder FileData(uint64 size, const std::string &filename); virtual ~FileData(); // Implements Data. void *getData() const; size_t getSize() const; const std::string &getFilename() const; const std::string &getExtension() const; static bool getConstant(const char *in, Decoder &out); static bool getConstant(Decoder in, const char *&out); private: // The actual data. char *data; // Size of the data. uint64 size; // The filename used for error purposes. std::string filename; // The extension (without dot). Used to identify file type. std::string extension; static StringMap::Entry decoderEntries[]; static StringMap decoders; }; // FileData } // filesystem } // love #endif // LOVE_FILESYSTEM_FILE_DATA_H love-0.9.1/src/modules/filesystem/FileData.cpp0000644000000000000000000000420212316602166021265 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "FileData.h" // C++ #include #include namespace love { namespace filesystem { FileData::FileData(uint64 size, const std::string &filename) : data(new char[(size_t) size]) , size((size_t) size) , filename(filename) { if (filename.rfind('.') != std::string::npos) extension = filename.substr(filename.rfind('.')+1); } FileData::~FileData() { delete [] data; } void *FileData::getData() const { return (void *)data; } size_t FileData::getSize() const { size_t sizemax = std::numeric_limits::max(); return size > sizemax ? sizemax : (size_t) size; } const std::string &FileData::getFilename() const { return filename; } const std::string &FileData::getExtension() const { return extension; } bool FileData::getConstant(const char *in, Decoder &out) { return decoders.find(in, out); } bool FileData::getConstant(Decoder in, const char *&out) { return decoders.find(in, out); } StringMap::Entry FileData::decoderEntries[] = { {"file", FileData::FILE}, {"base64", FileData::BASE64}, }; StringMap FileData::decoders(FileData::decoderEntries, sizeof(FileData::decoderEntries)); } // filesystem } // love love-0.9.1/src/modules/filesystem/physfs/0000755000000000000000000000000012316602462020425 5ustar00rootroot00000000000000love-0.9.1/src/modules/filesystem/physfs/Filesystem.h0000644000000000000000000001643512316602166022734 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FILESYSTEM_PHYSFS_FILESYSTEM_H #define LOVE_FILESYSTEM_PHYSFS_FILESYSTEM_H // STD #include #include #include #include // LOVE #include "common/Module.h" #include "common/config.h" #include "common/int.h" #include "common/runtime.h" #include "filesystem/FileData.h" #include "File.h" // For great CWD. (Current Working Directory) // Using this instead of boost::filesystem which totally // cramped our style. #ifdef LOVE_WINDOWS # include # include #else # include # include #endif // In Windows, we would like to use "LOVE" as the // application folder, but in Linux, we like .love. #define LOVE_APPDATA_PREFIX "" #ifdef LOVE_WINDOWS # define LOVE_APPDATA_FOLDER "LOVE" # define LOVE_PATH_SEPARATOR "/" # define LOVE_MAX_PATH _MAX_PATH #else # ifdef LOVE_MACOSX # define LOVE_APPDATA_FOLDER "LOVE" # elif defined(LOVE_LINUX) # define LOVE_APPDATA_FOLDER "love" # else # define LOVE_APPDATA_PREFIX "." # define LOVE_APPDATA_FOLDER "love" # endif # define LOVE_PATH_SEPARATOR "/" # define LOVE_MAX_PATH MAXPATHLEN #endif namespace love { namespace filesystem { namespace physfs { class Filesystem : public Module { public: Filesystem(); virtual ~Filesystem(); const char *getName() const; void init(const char *arg0); void setFused(bool fused); bool isFused() const; /** * This sets up the save directory. If the * it is already set up, nothing happens. * @return True on success, false otherwise. **/ bool setupWriteDirectory(); /** * Sets the name of the save folder. * @param ident The name of the game. Will be used to * to create the folder in the LOVE data folder. **/ bool setIdentity(const char *ident, bool appendToPath = false); const char *getIdentity() const; /** * Sets the path to the game source. * This can only be set once. * @param source Path to a directory or a .love-file. **/ bool setSource(const char *source); /** * Gets the path to the game source. * Returns a 0-length string if the source has not been set. **/ const char *getSource() const; bool mount(const char *archive, const char *mountpoint, bool appendToPath = false); bool unmount(const char *archive); /** * Creates a new file. **/ File *newFile(const char *filename) const; /** * Creates a new FileData object. Data will be copied. * @param data Pointer to the data. * @param size The size of the data. * @param filename The full filename used to file type identification. **/ FileData *newFileData(void *data, unsigned int size, const char *filename) const; /** * Creates a new FileData object from base64 data. * @param b64 The base64 data. **/ FileData *newFileData(const char *b64, const char *filename) const; /** * Gets the current working directory. **/ const char *getWorkingDirectory(); /** * Gets the user home directory. **/ const char *getUserDirectory(); /** * Gets the APPDATA directory. On Windows, this is the folder * in the %APPDATA% enviroment variable. On Linux, this is the * user home folder. **/ const char *getAppdataDirectory(); /** * Gets the full path of the save folder. **/ const char *getSaveDirectory(); /** * Gets the full path to the directory containing the game source. * For example if the game source is C:\Games\mygame.love, this will return * C:\Games. **/ std::string getSourceBaseDirectory() const; /** * Gets the real directory path containing the file. **/ std::string getRealDirectory(const char *filename) const; /** * Checks whether a file exists in the current search path * or not. * @param file The filename to check. **/ bool exists(const char *file) const; /** * Checks if an existing file really is a directory. * @param file The filename to check. **/ bool isDirectory(const char *file) const; /** * Checks if an existing file really is a file, * and not a directory. * @param file The filename to check. **/ bool isFile(const char *file) const; /** * Creates a directory. Write dir must be set. * @param dir The directory to create. **/ bool createDirectory(const char *dir); /** * Removes a file (or directory). * @param file The file or directory to remove. **/ bool remove(const char *file); /** * Reads data from a file. * @param filename The name of the file to read from. * @param size The size in bytes of the data to read. **/ Data *read(const char *filename, int64 size = File::ALL) const; /** * Write data to a file. * @param filename The name of the file to write to. * @param data The data to write. * @param size The size in bytes of the data to write. **/ void write(const char *filename, const void *data, int64 size) const; /** * Append data to a file, creating it if it doesn't exist. * @param filename The name of the file to write to. * @param data The data to append. * @param size The size in bytes of the data to append. **/ void append(const char *filename, const void *data, int64 size) const; /** * This "native" method returns a table of all * files in a given directory. **/ int getDirectoryItems(lua_State *L); /** * Gets the last modification time of a file, in seconds * since the Unix epoch. * @param filename The name of the file. **/ int64 getLastModified(const char *filename) const; /** * Gets the size of a file in bytes. * @param filename The name of the file. **/ int64 getSize(const char *filename) const; /** * Text file line-reading iterator function used and * pushed on the Lua stack by love.filesystem.lines * and File:lines. **/ static int lines_i(lua_State *L); private: // Contains the current working directory (UTF8). std::string cwd; // %APPDATA% on Windows. std::string appdata; // This name will be used to create the folder // in the appdata/userdata folder. std::string save_identity; // Full and relative paths of the game save folder. // (Relative to the %APPDATA% folder, meaning that the // relative string will look something like: ./LOVE/game) std::string save_path_relative, save_path_full; // The full path to the source of the game. std::string game_source; // Workaround for machines without PhysFS 2.0 bool initialized; // Allow saving outside of the LOVE_APPDATA_FOLDER // for release 'builds' bool fused; bool fusedSet; }; // Filesystem } // physfs } // filesystem } // love #endif // LOVE_FILESYSTEM_PHYSFS_FILESYSTEM_H love-0.9.1/src/modules/filesystem/physfs/wrap_File.h0000644000000000000000000000356512316602166022520 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FILESYSTEM_PHYSFS_WRAP_FILE_H #define LOVE_FILESYSTEM_PHYSFS_WRAP_FILE_H // LOVE #include "common/runtime.h" #include "Filesystem.h" #include "File.h" namespace love { namespace filesystem { namespace physfs { // Does not use lua_error, so it's safe to call in exception handling code. int luax_ioError(lua_State *L, const char *fmt, ...); File *luax_checkfile(lua_State *L, int idx); int w_File_getSize(lua_State *L); int w_File_open(lua_State *L); int w_File_close(lua_State *L); int w_File_isOpen(lua_State *L); int w_File_read(lua_State *L); int w_File_write(lua_State *L); int w_File_flush(lua_State *L); int w_File_eof(lua_State *L); int w_File_tell(lua_State *L); int w_File_seek(lua_State *L); int w_File_lines(lua_State *L); int w_File_setBuffer(lua_State *L); int w_File_getBuffer(lua_State *L); int w_File_getMode(lua_State *L); extern "C" int luaopen_file(lua_State *L); } // physfs } // filesystem } // love #endif // LOVE_FILESYSTEM_PHYSFS_WRAP_FILE_H love-0.9.1/src/modules/filesystem/physfs/wrap_FileData.cpp0000644000000000000000000000354412316602166023642 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_FileData.h" #include "common/wrap_Data.h" namespace love { namespace filesystem { namespace physfs { FileData *luax_checkfiledata(lua_State *L, int idx) { return luax_checktype(L, idx, "FileData", FILESYSTEM_FILE_DATA_T); } int w_FileData_getFilename(lua_State *L) { FileData *t = luax_checkfiledata(L, 1); lua_pushstring(L, t->getFilename().c_str()); return 1; } int w_FileData_getExtension(lua_State *L) { FileData *t = luax_checkfiledata(L, 1); lua_pushstring(L, t->getExtension().c_str()); return 1; } static const luaL_Reg w_FileData_functions[] = { // Data { "getString", w_Data_getString }, { "getPointer", w_Data_getPointer }, { "getSize", w_Data_getSize }, { "getFilename", w_FileData_getFilename }, { "getExtension", w_FileData_getExtension }, { 0, 0 } }; extern "C" int luaopen_filedata(lua_State *L) { return luax_register_type(L, "FileData", w_FileData_functions); } } // physfs } // filesystem } // love love-0.9.1/src/modules/filesystem/physfs/File.cpp0000644000000000000000000001546412316602166022023 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "File.h" // STD #include // LOVE #include "Filesystem.h" #include "filesystem/FileData.h" namespace love { namespace filesystem { namespace physfs { extern bool hack_setupWriteDirectory(); File::File(const std::string &filename) : filename(filename) , file(0) , mode(CLOSED) , bufferMode(BUFFER_NONE) , bufferSize(0) { } File::~File() { if (mode != CLOSED) close(); } bool File::open(Mode mode) { if (mode == CLOSED) return true; // File must exist if read mode. if ((mode == READ) && !PHYSFS_exists(filename.c_str())) throw love::Exception("Could not open file %s. Does not exist.", filename.c_str()); // Check whether the write directory is set. if ((mode == APPEND || mode == WRITE) && (PHYSFS_getWriteDir() == 0) && !hack_setupWriteDirectory()) throw love::Exception("Could not set write directory."); // File already open? if (file != 0) return false; this->mode = mode; switch (mode) { case READ: file = PHYSFS_openRead(filename.c_str()); break; case APPEND: file = PHYSFS_openAppend(filename.c_str()); break; case WRITE: file = PHYSFS_openWrite(filename.c_str()); break; default: break; } if (file != 0 && !setBuffer(bufferMode, bufferSize)) { // Revert to buffer defaults if we don't successfully set the buffer. bufferMode = BUFFER_NONE; bufferSize = 0; } return (file != 0); } bool File::close() { if (!PHYSFS_close(file)) return false; mode = CLOSED; file = 0; return true; } bool File::isOpen() const { return mode != CLOSED && file != 0; } int64 File::getSize() { // If the file is closed, open it to // check the size. if (file == 0) { open(READ); int64 size = (int64)PHYSFS_fileLength(file); close(); return size; } return (int64)PHYSFS_fileLength(file); } FileData *File::read(int64 size) { bool isOpen = (file != 0); if (!isOpen && !open(READ)) throw love::Exception("Could not read file %s.", filename.c_str()); int64 max = getSize(); int64 cur = tell(); size = (size == ALL) ? max : size; if (size < 0) throw love::Exception("Invalid read size."); // Clamping because the file offset may be in a weird position. if (cur < 0) cur = 0; else if (cur > max) cur = max; if (cur + size > max) size = max - cur; FileData *fileData = new FileData(size, getFilename()); int64 bytesRead = read(fileData->getData(), size); if (bytesRead < 0 || (bytesRead == 0 && bytesRead != size)) { delete fileData; throw love::Exception("Could not read from file."); } if (bytesRead < size) { FileData *tmpFileData = new FileData(bytesRead, getFilename()); memcpy(tmpFileData->getData(), fileData->getData(), (size_t) bytesRead); delete fileData; fileData = tmpFileData; } if (!isOpen) close(); return fileData; } int64 File::read(void *dst, int64 size) { if (!file || mode != READ) throw love::Exception("File is not opened for reading."); int64 max = (int64)PHYSFS_fileLength(file); size = (size == ALL) ? max : size; size = (size > max) ? max : size; // Sadly, we'll have to clamp to 32 bits here size = (size > LOVE_UINT32_MAX) ? LOVE_UINT32_MAX : size; if (size < 0) throw love::Exception("Invalid read size."); int64 read = (int64)PHYSFS_read(file, dst, 1, (PHYSFS_uint32) size); return read; } bool File::write(const void *data, int64 size) { if (!file || (mode != WRITE && mode != APPEND)) throw love::Exception("File is not opened for writing."); // Another clamp, for the time being. size = (size > LOVE_UINT32_MAX) ? LOVE_UINT32_MAX : size; if (size < 0) throw love::Exception("Invalid write size."); // Try to write. int64 written = static_cast(PHYSFS_write(file, data, 1, (PHYSFS_uint32) size)); // Check that correct amount of data was written. if (written != size) return false; // Manually flush the buffer in BUFFER_LINE mode if we find a newline. if (bufferMode == BUFFER_LINE && bufferSize > size) { if (memchr(data, '\n', (size_t) size) != NULL) flush(); } return true; } bool File::write(const Data *data, int64 size) { return write(data->getData(), (size == ALL) ? data->getSize() : size); } bool File::flush() { if (!file || (mode != WRITE && mode != APPEND)) throw love::Exception("File is not opened for writing."); return PHYSFS_flush(file) != 0; } #ifdef LOVE_WINDOWS // MSVC doesn't like the 'this' keyword // well, we'll use 'that'. // It zigs, we zag. inline bool test_eof(File *that, PHYSFS_File *) { int64 pos = that->tell(); int64 size = that->getSize(); return pos == -1 || size == -1 || pos >= size; } #else inline bool test_eof(File *, PHYSFS_File *file) { return PHYSFS_eof(file); } #endif bool File::eof() { if (file == 0 || test_eof(this, file)) return true; return false; } int64 File::tell() { if (file == 0) return -1; return (int64) PHYSFS_tell(file); } bool File::seek(uint64 pos) { if (file == 0) return false; if (!PHYSFS_seek(file, (PHYSFS_uint64) pos)) return false; return true; } bool File::setBuffer(BufferMode bufmode, int64 size) { // No negativity allowed! if (size < 0) return false; // If the file isn't open, we'll make sure the buffer values are set in // File::open. if (file == 0 || mode == CLOSED) { bufferMode = bufmode; bufferSize = size; return true; } int ret = 1; switch (bufmode) { case BUFFER_NONE: default: ret = PHYSFS_setBuffer(file, 0); size = 0; break; case BUFFER_LINE: case BUFFER_FULL: ret = PHYSFS_setBuffer(file, size); break; } if (ret == 0) return false; bufferMode = bufmode; bufferSize = size; return true; } File::BufferMode File::getBuffer(int64 &size) const { size = bufferSize; return bufferMode; } std::string File::getFilename() const { return filename; } std::string File::getExtension() const { std::string::size_type idx = filename.rfind('.'); if (idx != std::string::npos) return filename.substr(idx+1); else return std::string(); } filesystem::File::Mode File::getMode() const { return mode; } } // physfs } // filesystem } // love love-0.9.1/src/modules/filesystem/physfs/wrap_File.cpp0000644000000000000000000001550512316602166023050 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_File.h" #include "common/Data.h" #include "common/Exception.h" #include "common/int.h" namespace love { namespace filesystem { namespace physfs { int luax_ioError(lua_State *L, const char *fmt, ...) { va_list args; va_start(args, fmt); lua_pushnil(L); lua_pushvfstring(L, fmt, args); va_end(args); return 2; } File *luax_checkfile(lua_State *L, int idx) { return luax_checktype(L, idx, "File", FILESYSTEM_FILE_T); } int w_File_getSize(lua_State *L) { File *t = luax_checkfile(L, 1); int64 size = -1; try { size = t->getSize(); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } // Push nil on failure or if size does not fit into a double precision floating-point number. if (size == -1) return luax_ioError(L, "Could not determine file size."); else if (size >= 0x20000000000000LL) return luax_ioError(L, "Size is too large."); lua_pushnumber(L, (lua_Number) size); return 1; } int w_File_open(lua_State *L) { File *file = luax_checkfile(L, 1); const char *str = luaL_checkstring(L, 2); File::Mode mode; if (!File::getConstant(str, mode)) return luaL_error(L, "Incorrect file open mode: %s", str); try { luax_pushboolean(L, file->open(mode)); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } return 1; } int w_File_close(lua_State *L) { File *file = luax_checkfile(L, 1); luax_pushboolean(L, file->close()); return 1; } int w_File_isOpen(lua_State *L) { File *file = luax_checkfile(L, 1); luax_pushboolean(L, file->isOpen()); return 1; } int w_File_read(lua_State *L) { File *file = luax_checkfile(L, 1); Data *d = 0; int64 size = (int64)luaL_optnumber(L, 2, File::ALL); try { d = file->read(size); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } lua_pushlstring(L, (const char *) d->getData(), d->getSize()); lua_pushnumber(L, d->getSize()); d->release(); return 2; } int w_File_write(lua_State *L) { File *file = luax_checkfile(L, 1); bool result = false; if (lua_isstring(L, 2)) { try { size_t datasize = 0; const char *data = lua_tolstring(L, 2, &datasize); if (!lua_isnoneornil(L, 3)) datasize = luaL_checkinteger(L, 3); result = file->write(data, datasize); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } } else if (luax_istype(L, 2, DATA_T)) { try { love::Data *data = luax_totype(L, 2, "Data", DATA_T); result = file->write(data, luaL_optinteger(L, 3, data->getSize())); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } } else { return luaL_argerror(L, 2, "string or data expected"); } luax_pushboolean(L, result); return 1; } int w_File_flush(lua_State *L) { File *file = luax_checkfile(L, 1); bool success = false; try { success = file->flush(); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } luax_pushboolean(L, success); return 1; } int w_File_eof(lua_State *L) { File *file = luax_checkfile(L, 1); luax_pushboolean(L, file->eof()); return 1; } int w_File_tell(lua_State *L) { File *file = luax_checkfile(L, 1); int64 pos = file->tell(); // Push nil on failure or if pos does not fit into a double precision floating-point number. if (pos == -1) return luax_ioError(L, "Invalid position."); else if (pos >= 0x20000000000000LL) return luax_ioError(L, "Number is too large."); else lua_pushnumber(L, (lua_Number)pos); return 1; } int w_File_seek(lua_State *L) { File *file = luax_checkfile(L, 1); lua_Number pos = luaL_checknumber(L, 2); // Push false on negative and precision-problematic numbers. // Better fail than seek to an unknown position. if (pos < 0.0 || pos >= 9007199254740992.0) luax_pushboolean(L, false); else luax_pushboolean(L, file->seek((uint64)pos)); return 1; } int w_File_lines(lua_State *L) { File *file = luax_checkfile(L, 1); lua_pushnumber(L, 0); // File position. luax_pushboolean(L, file->getMode() != File::CLOSED); // Save current file mode. if (file->getMode() != File::READ) { if (file->getMode() != File::CLOSED) file->close(); bool success = false; EXCEPT_GUARD(success = file->open(File::READ);) if (!success) return luaL_error(L, "Could not open file."); } lua_pushcclosure(L, Filesystem::lines_i, 3); return 1; } int w_File_setBuffer(lua_State *L) { File *file = luax_checkfile(L, 1); const char *str = luaL_checkstring(L, 2); int64 size = (int64) luaL_optnumber(L, 3, 0.0); File::BufferMode bufmode; if (!File::getConstant(str, bufmode)) return luaL_error(L, "Incorrect file buffer mode: %s", str); bool success = false; try { success = file->setBuffer(bufmode, size); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } luax_pushboolean(L, success); return 1; } int w_File_getBuffer(lua_State *L) { File *file = luax_checkfile(L, 1); int64 size = 0; File::BufferMode bufmode = file->getBuffer(size); const char *str = 0; if (!File::getConstant(bufmode, str)) return luax_ioError(L, "Unknown file buffer mode."); lua_pushstring(L, str); lua_pushnumber(L, (lua_Number) size); return 2; } int w_File_getMode(lua_State *L) { File *file = luax_checkfile(L, 1); File::Mode mode = file->getMode(); const char *str = 0; if (!File::getConstant(mode, str)) return luax_ioError(L, "Unknown file mode."); lua_pushstring(L, str); return 1; } static const luaL_Reg functions[] = { { "getSize", w_File_getSize }, { "open", w_File_open }, { "close", w_File_close }, { "isOpen", w_File_isOpen }, { "read", w_File_read }, { "write", w_File_write }, { "flush", w_File_flush }, { "eof", w_File_eof }, { "tell", w_File_tell }, { "seek", w_File_seek }, { "lines", w_File_lines }, { "setBuffer", w_File_setBuffer }, { "getBuffer", w_File_getBuffer }, { "getMode", w_File_getMode }, { 0, 0 } }; extern "C" int luaopen_file(lua_State *L) { return luax_register_type(L, "File", functions); } } // physfs } // filesystem } // love love-0.9.1/src/modules/filesystem/physfs/wrap_Filesystem.cpp0000644000000000000000000003247312316602166024320 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Filesystem.h" // SDL #include namespace love { namespace filesystem { namespace physfs { static Filesystem *instance = 0; bool hack_setupWriteDirectory() { if (instance != 0) return instance->setupWriteDirectory(); return false; } int w_init(lua_State *L) { const char *arg0 = luaL_checkstring(L, 1); EXCEPT_GUARD(instance->init(arg0);) return 0; } int w_setFused(lua_State *L) { // no error checking needed, everything, even nothing // can be converted to a boolean instance->setFused(luax_toboolean(L, 1)); return 0; } int w_isFused(lua_State *L) { luax_pushboolean(L, instance->isFused()); return 1; } int w_setIdentity(lua_State *L) { const char *arg = luaL_checkstring(L, 1); bool append = luax_optboolean(L, 2, false); if (!instance->setIdentity(arg, append)) return luaL_error(L, "Could not set write directory."); return 0; } int w_getIdentity(lua_State *L) { lua_pushstring(L, instance->getIdentity()); return 1; } int w_setSource(lua_State *L) { const char *arg = luaL_checkstring(L, 1); if (!instance->setSource(arg)) return luaL_error(L, "Could not set source."); return 0; } int w_getSource(lua_State *L) { lua_pushstring(L, instance->getSource()); return 1; } int w_mount(lua_State *L) { const char *archive = luaL_checkstring(L, 1); const char *mountpoint = luaL_checkstring(L, 2); bool append = luax_optboolean(L, 3, false); luax_pushboolean(L, instance->mount(archive, mountpoint, append)); return 1; } int w_unmount(lua_State *L) { const char *archive = luaL_checkstring(L, 1); luax_pushboolean(L, instance->unmount(archive)); return 1; } int w_newFile(lua_State *L) { const char *filename = luaL_checkstring(L, 1); const char *str = 0; File::Mode mode = File::CLOSED; if (lua_isstring(L, 2)) { str = luaL_checkstring(L, 2); if (!File::getConstant(str, mode)) return luaL_error(L, "Incorrect file open mode: %s", str); } File *t = instance->newFile(filename); if (mode != File::CLOSED) { try { if (!t->open(mode)) throw love::Exception("Could not open file."); } catch (love::Exception &e) { t->release(); return luax_ioError(L, "%s", e.what()); } } luax_pushtype(L, "File", FILESYSTEM_FILE_T, t); return 1; } int w_newFileData(lua_State *L) { // Single argument: treat as filepath or File. if (lua_gettop(L) == 1) { if (lua_isstring(L, 1)) luax_convobj(L, 1, "filesystem", "newFile"); // Get FileData from the File. if (luax_istype(L, 1, FILESYSTEM_FILE_T)) { File *file = luax_checktype(L, 1, "File", FILESYSTEM_FILE_T); FileData *data = 0; try { data = file->read(); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } luax_pushtype(L, "FileData", FILESYSTEM_FILE_DATA_T, data); return 1; } else return luaL_argerror(L, 1, "string or File expected"); } size_t length = 0; const char *str = luaL_checklstring(L, 1, &length); const char *filename = luaL_checkstring(L, 2); const char *decstr = lua_isstring(L, 3) ? lua_tostring(L, 3) : 0; FileData::Decoder decoder = FileData::FILE; if (decstr && !FileData::getConstant(decstr, decoder)) return luaL_error(L, "Invalid FileData decoder: %s", decstr); FileData *t = 0; switch (decoder) { case FileData::FILE: t = instance->newFileData((void *)str, (int)length, filename); break; case FileData::BASE64: t = instance->newFileData(str, filename); break; default: return luaL_error(L, "Invalid FileData decoder: %s", decstr); } luax_pushtype(L, "FileData", FILESYSTEM_FILE_DATA_T, t); return 1; } int w_getWorkingDirectory(lua_State *L) { lua_pushstring(L, instance->getWorkingDirectory()); return 1; } int w_getUserDirectory(lua_State *L) { lua_pushstring(L, instance->getUserDirectory()); return 1; } int w_getAppdataDirectory(lua_State *L) { lua_pushstring(L, instance->getAppdataDirectory()); return 1; } int w_getSaveDirectory(lua_State *L) { lua_pushstring(L, instance->getSaveDirectory()); return 1; } int w_getSourceBaseDirectory(lua_State *L) { luax_pushstring(L, instance->getSourceBaseDirectory()); return 1; } int w_exists(lua_State *L) { const char *arg = luaL_checkstring(L, 1); luax_pushboolean(L, instance->exists(arg)); return 1; } int w_isDirectory(lua_State *L) { const char *arg = luaL_checkstring(L, 1); luax_pushboolean(L, instance->isDirectory(arg)); return 1; } int w_isFile(lua_State *L) { const char *arg = luaL_checkstring(L, 1); luax_pushboolean(L, instance->isFile(arg)); return 1; } int w_createDirectory(lua_State *L) { const char *arg = luaL_checkstring(L, 1); luax_pushboolean(L, instance->createDirectory(arg)); return 1; } int w_remove(lua_State *L) { const char *arg = luaL_checkstring(L, 1); luax_pushboolean(L, instance->remove(arg)); return 1; } int w_read(lua_State *L) { const char *filename = luaL_checkstring(L, 1); int64 len = (int64) luaL_optinteger(L, 2, File::ALL); Data *data = 0; try { data = instance->read(filename, len); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } if (data == 0) return luax_ioError(L, "File could not be read."); // Push the string. lua_pushlstring(L, (const char *) data->getData(), data->getSize()); // Push the size. lua_pushinteger(L, data->getSize()); // Lua has a copy now, so we can free it. data->release(); return 2; } static int w_write_or_append(lua_State *L, File::Mode mode) { const char *filename = luaL_checkstring(L, 1); const char *input = 0; size_t len = 0; if (luax_istype(L, 2, DATA_T)) { love::Data *data = luax_totype(L, 2, "Data", DATA_T); input = (const char *) data->getData(); len = data->getSize(); } else if (lua_isstring(L, 2)) input = lua_tolstring(L, 2, &len); else return luaL_argerror(L, 2, "string or Data expected"); // Get how much we should write. Length of string default. len = luaL_optinteger(L, 3, len); try { if (mode == File::APPEND) instance->append(filename, (const void *) input, len); else instance->write(filename, (const void *) input, len); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } luax_pushboolean(L, true); return 1; } int w_write(lua_State *L) { return w_write_or_append(L, File::WRITE); } int w_append(lua_State *L) { return w_write_or_append(L, File::APPEND); } int w_getDirectoryItems(lua_State *L) { return instance->getDirectoryItems(L); } int w_lines(lua_State *L) { File *file; if (lua_isstring(L, 1)) { file = instance->newFile(lua_tostring(L, 1)); bool success = false; EXCEPT_GUARD(success = file->open(File::READ);) if (!success) return luaL_error(L, "Could not open file."); luax_pushtype(L, "File", FILESYSTEM_FILE_T, file); } else return luaL_argerror(L, 1, "expected filename."); lua_pushcclosure(L, Filesystem::lines_i, 1); return 1; } int w_load(lua_State *L) { std::string filename = std::string(luaL_checkstring(L, 1)); Data *data = 0; try { data = instance->read(filename.c_str()); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } int status = luaL_loadbuffer(L, (const char *)data->getData(), data->getSize(), ("@" + filename).c_str()); data->release(); // Load the chunk, but don't run it. switch (status) { case LUA_ERRMEM: return luaL_error(L, "Memory allocation error: %s\n", lua_tostring(L, -1)); case LUA_ERRSYNTAX: return luaL_error(L, "Syntax error: %s\n", lua_tostring(L, -1)); default: // success return 1; } } int w_getLastModified(lua_State *L) { const char *filename = luaL_checkstring(L, 1); int64 time = 0; try { time = instance->getLastModified(filename); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } lua_pushnumber(L, static_cast(time)); return 1; } int w_getSize(lua_State *L) { const char *filename = luaL_checkstring(L, 1); int64 size = -1; try { size = instance->getSize(filename); } catch (love::Exception &e) { return luax_ioError(L, "%s", e.what()); } // Error on failure or if size does not fit into a double precision floating-point number. if (size == -1) return luax_ioError(L, "Could not determine file size."); else if (size >= 0x20000000000000LL) return luax_ioError(L, "Size too large to fit into a Lua number!"); lua_pushnumber(L, (lua_Number) size); return 1; } int loader(lua_State *L) { const char *filename = lua_tostring(L, -1); std::string tmp(filename); tmp += ".lua"; int size = tmp.size(); for (int i=0; iexists(tmp.c_str())) { lua_pop(L, 1); lua_pushstring(L, tmp.c_str()); // Ok, load it. return w_load(L); } tmp = filename; size = tmp.size(); for (int i=0; iisDirectory(tmp.c_str())) { tmp += "/init.lua"; if (instance->exists(tmp.c_str())) { lua_pop(L, 1); lua_pushstring(L, tmp.c_str()); // Ok, load it. return w_load(L); } } std::string errstr = "\n\tno file '%s' in LOVE game directories."; errstr += errstr; lua_pushfstring(L, errstr.c_str(), (tmp + ".lua").c_str(), (tmp + "/init.lua").c_str()); return 1; } inline const char *library_extension() { #ifdef LOVE_WINDOWS return ".dll"; #else return ".so"; #endif } int extloader(lua_State *L) { const char *filename = lua_tostring(L, -1); std::string tokenized_name(filename); std::string tokenized_function(filename); for (unsigned int i = 0; i < tokenized_name.size(); i++) { if (tokenized_name[i] == '.') { tokenized_name[i] = '/'; tokenized_function[i] = '_'; } } tokenized_name += library_extension(); void *handle = nullptr; // If the game is fused, try looking for the DLL in the game's read paths. if (instance->isFused()) { try { std::string dir = instance->getRealDirectory(tokenized_name.c_str()); // We don't want to look in the game's source, because it can be a // zip sometimes and a folder other times. if (dir.find(instance->getSource()) == std::string::npos) handle = SDL_LoadObject((dir + LOVE_PATH_SEPARATOR + tokenized_name).c_str()); } catch (love::Exception &) { // Nothing... } } if (!handle) { std::string path = std::string(instance->getAppdataDirectory()) + LOVE_PATH_SEPARATOR LOVE_APPDATA_FOLDER LOVE_PATH_SEPARATOR + tokenized_name; handle = SDL_LoadObject(path.c_str()); } if (!handle) { lua_pushfstring(L, "\n\tno file '%s' in LOVE paths.", tokenized_name.c_str()); return 1; } void *func = SDL_LoadFunction(handle, ("loveopen_" + tokenized_function).c_str()); if (!func) func = SDL_LoadFunction(handle, ("luaopen_" + tokenized_function).c_str()); if (!func) { SDL_UnloadObject(handle); lua_pushfstring(L, "\n\tC library '%s' is incompatible.", tokenized_name.c_str()); return 1; } lua_pushcfunction(L, (lua_CFunction) func); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "init", w_init }, { "setFused", w_setFused }, { "isFused", w_isFused }, { "setIdentity", w_setIdentity }, { "getIdentity", w_getIdentity }, { "setSource", w_setSource }, { "getSource", w_getSource }, { "mount", w_mount }, { "unmount", w_unmount }, { "newFile", w_newFile }, { "getWorkingDirectory", w_getWorkingDirectory }, { "getUserDirectory", w_getUserDirectory }, { "getAppdataDirectory", w_getAppdataDirectory }, { "getSaveDirectory", w_getSaveDirectory }, { "getSourceBaseDirectory", w_getSourceBaseDirectory }, { "exists", w_exists }, { "isDirectory", w_isDirectory }, { "isFile", w_isFile }, { "createDirectory", w_createDirectory }, { "remove", w_remove }, { "read", w_read }, { "write", w_write }, { "append", w_append }, { "getDirectoryItems", w_getDirectoryItems }, { "lines", w_lines }, { "load", w_load }, { "getLastModified", w_getLastModified }, { "getSize", w_getSize }, { "newFileData", w_newFileData }, { 0, 0 } }; static const lua_CFunction types[] = { luaopen_file, luaopen_filedata, 0 }; extern "C" int luaopen_love_filesystem(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new Filesystem();) } else instance->retain(); // The love loaders should be tried after package.preload. love::luax_register_searcher(L, loader, 2); love::luax_register_searcher(L, extloader, 3); WrappedModule w; w.module = instance; w.name = "filesystem"; w.flags = MODULE_FILESYSTEM_T; w.functions = functions; w.types = types; return luax_register_module(L, w); } } // physfs } // filesystem } // love love-0.9.1/src/modules/filesystem/physfs/wrap_Filesystem.h0000644000000000000000000000452612316602166023763 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FILESYSTEM_PHYSFS_WRAP_FILESYSTEM_H #define LOVE_FILESYSTEM_PHYSFS_WRAP_FILESYSTEM_H // LOVE #include "Filesystem.h" #include "wrap_File.h" #include "wrap_FileData.h" namespace love { namespace filesystem { namespace physfs { bool hack_setupWriteDirectory(); int w_init(lua_State *L); int w_setFused(lua_State *L); int w_isFused(lua_State *L); int w_setIdentity(lua_State *L); int w_getIdentity(lua_State *L); int w_setSource(lua_State *L); int w_getSource(lua_State *L); int w_mount(lua_State *L); int w_unmount(lua_State *L); int w_newFile(lua_State *L); int w_newFileData(lua_State *L); int w_getWorkingDirectory(lua_State *L); int w_getUserDirectory(lua_State *L); int w_getAppdataDirectory(lua_State *L); int w_getSaveDirectory(lua_State *L); int w_getSourceBaseDirectory(lua_State *L); int w_exists(lua_State *L); int w_isDirectory(lua_State *L); int w_isFile(lua_State *L); int w_createDirectory(lua_State *L); int w_remove(lua_State *L); int w_open(lua_State *L); int w_close(lua_State *L); int w_read(lua_State *L); int w_write(lua_State *L); int w_append(lua_State *L); int w_getDirectoryItems(lua_State *L); int w_lines(lua_State *L); int w_load(lua_State *L); int w_getLastModified(lua_State *L); int w_getSize(lua_State *L); int loader(lua_State *L); int extloader(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_filesystem(lua_State *L); } // physfs } // filesystem } // love #endif // LOVE_FILESYSTEM_PHYSFS_WRAP_FILESYSTEM_H love-0.9.1/src/modules/filesystem/physfs/wrap_FileData.h0000644000000000000000000000262312316602166023304 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FILESYSTEM_PHYSFS_WRAP_FILE_DATA_H #define LOVE_FILESYSTEM_PHYSFS_WRAP_FILE_DATA_H // LOVE #include "common/runtime.h" #include "filesystem/FileData.h" namespace love { namespace filesystem { namespace physfs { FileData *luax_checkfiledata(lua_State *L, int idx); int w_FileData_getFilename(lua_State *L); int w_FileData_getExtension(lua_State *L); extern "C" int luaopen_filedata(lua_State *L); } // physfs } // filesystem } // love #endif // LOVE_FILESYSTEM_PHYSFS_WRAP_FILE_DATA_H love-0.9.1/src/modules/filesystem/physfs/File.h0000644000000000000000000000433212316602166021460 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FILESYSTEM_PHYSFS_FILE_H #define LOVE_FILESYSTEM_PHYSFS_FILE_H // LOVE #include "filesystem/File.h" // PhysFS #ifdef LOVE_MACOSX_USE_FRAMEWORKS #include #else #include #endif // STD #include namespace love { namespace filesystem { namespace physfs { class File : public love::filesystem::File { public: /** * Constructs an File with the given ilename. * @param filename The relative filepath of the file to load. **/ File(const std::string &filename); virtual ~File(); // Implements love::filesystem::File. bool open(Mode mode); bool close(); bool isOpen() const; int64 getSize(); FileData *read(int64 size = ALL); int64 read(void *dst, int64 size); bool write(const void *data, int64 size); bool write(const Data *data, int64 size = ALL); bool flush(); bool eof(); int64 tell(); bool seek(uint64 pos); bool setBuffer(BufferMode bufmode, int64 size); BufferMode getBuffer(int64 &size) const; Mode getMode() const; std::string getFilename() const; std::string getExtension() const; private: // filename std::string filename; // PHYSFS File handle. PHYSFS_File *file; // The current mode of the file. Mode mode; BufferMode bufferMode; int64 bufferSize; }; // File } // physfs } // filesystem } // love #endif // LOVE_FILESYSTEM_PHYSFS_FILE_H love-0.9.1/src/modules/filesystem/physfs/Filesystem.cpp0000644000000000000000000003331312316602166023261 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" #include #include "common/utf8.h" #include "common/b64.h" #include "Filesystem.h" namespace { size_t getDriveDelim(const std::string &input) { for (size_t i = 0; i < input.size(); ++i) if (input[i] == '/' || input[i] == '\\') return i; // Something's horribly wrong return 0; } std::string getDriveRoot(const std::string &input) { return input.substr(0, getDriveDelim(input)+1); } std::string skipDriveRoot(const std::string &input) { return input.substr(getDriveDelim(input)+1); } } namespace love { namespace filesystem { namespace physfs { Filesystem::Filesystem() : initialized(false) , fused(false) , fusedSet(false) { } Filesystem::~Filesystem() { if (initialized) PHYSFS_deinit(); } const char *Filesystem::getName() const { return "love.filesystem.physfs"; } void Filesystem::init(const char *arg0) { if (!PHYSFS_init(arg0)) throw Exception(PHYSFS_getLastError()); initialized = true; } void Filesystem::setFused(bool fused) { if (fusedSet) return; this->fused = fused; fusedSet = true; } bool Filesystem::isFused() const { if (!fusedSet) return false; return fused; } bool Filesystem::setIdentity(const char *ident, bool appendToPath) { if (!initialized) return false; std::string old_save_path = save_path_full; // Store the save directory. save_identity = std::string(ident); // Generate the relative path to the game save folder. save_path_relative = std::string(LOVE_APPDATA_PREFIX LOVE_APPDATA_FOLDER LOVE_PATH_SEPARATOR) + save_identity; // Generate the full path to the game save folder. save_path_full = std::string(getAppdataDirectory()) + std::string(LOVE_PATH_SEPARATOR); if (fused) save_path_full += std::string(LOVE_APPDATA_PREFIX) + save_identity; else save_path_full += save_path_relative; // We now have something like: // save_identity: game // save_path_relative: ./LOVE/game // save_path_full: C:\Documents and Settings\user\Application Data/LOVE/game // We don't want old read-only save paths to accumulate when we set a new // identity. if (!old_save_path.empty()) PHYSFS_removeFromSearchPath(old_save_path.c_str()); // Try to add the save directory to the search path. // (No error on fail, it means that the path doesn't exist). PHYSFS_addToSearchPath(save_path_full.c_str(), appendToPath); return true; } const char *Filesystem::getIdentity() const { return save_identity.c_str(); } bool Filesystem::setSource(const char *source) { if (!initialized) return false; // Check whether directory is already set. if (!game_source.empty()) return false; // Add the directory. if (!PHYSFS_addToSearchPath(source, 1)) return false; // Save the game source. game_source = std::string(source); return true; } const char *Filesystem::getSource() const { return game_source.c_str(); } bool Filesystem::setupWriteDirectory() { if (!initialized) return false; // These must all be set. if (save_identity.empty() || save_path_full.empty() || save_path_relative.empty()) return false; // Set the appdata folder as writable directory. // (We must create the save folder before mounting it). if (!PHYSFS_setWriteDir(getDriveRoot(save_path_full).c_str())) return false; // Create the save folder. (We're now "at" %APPDATA%). if (!createDirectory(skipDriveRoot(save_path_full).c_str())) { // Clear the write directory in case of error. PHYSFS_setWriteDir(0); return false; } // Set the final write directory. if (!PHYSFS_setWriteDir(save_path_full.c_str())) return false; // Add the directory. (Will not be readded if already present). if (!PHYSFS_addToSearchPath(save_path_full.c_str(), 0)) { PHYSFS_setWriteDir(0); // Clear the write directory in case of error. return false; } return true; } bool Filesystem::mount(const char *archive, const char *mountpoint, bool appendToPath) { if (!initialized || !archive) return false; std::string realPath; std::string sourceBase = getSourceBaseDirectory(); if (isFused() && sourceBase.compare(archive) == 0) { // Special case: if the game is fused and the archive is the source's // base directory, mount it even though it's outside of the save dir. realPath = sourceBase; } else { // Not allowed for safety reasons. if (strlen(archive) == 0 || strstr(archive, "..") || strcmp(archive, "/") == 0) return false; const char *realDir = PHYSFS_getRealDir(archive); if (!realDir) return false; realPath = realDir; // Always disallow mounting of files inside the game source, since it // won't work anyway if the game source is a zipped .love file. if (realPath.find(game_source) == 0) return false; realPath += LOVE_PATH_SEPARATOR; realPath += archive; } if (realPath.length() == 0) return false; return PHYSFS_mount(realPath.c_str(), mountpoint, appendToPath); } bool Filesystem::unmount(const char *archive) { if (!initialized || !archive) return false; std::string realPath; std::string sourceBase = getSourceBaseDirectory(); if (isFused() && sourceBase.compare(archive) == 0) { // Special case: if the game is fused and the archive is the source's // base directory, unmount it even though it's outside of the save dir. realPath = sourceBase; } else { // Not allowed for safety reasons. if (strlen(archive) == 0 || strstr(archive, "..") || strcmp(archive, "/") == 0) return false; const char *realDir = PHYSFS_getRealDir(archive); if (!realDir) return false; realPath = realDir; realPath += LOVE_PATH_SEPARATOR; realPath += archive; } const char *mountPoint = PHYSFS_getMountPoint(realPath.c_str()); if (!mountPoint) return false; return PHYSFS_removeFromSearchPath(realPath.c_str()); } File *Filesystem::newFile(const char *filename) const { return new File(filename); } FileData *Filesystem::newFileData(void *data, unsigned int size, const char *filename) const { FileData *fd = new FileData(size, std::string(filename)); // Copy the data into FileData. memcpy(fd->getData(), data, size); return fd; } FileData *Filesystem::newFileData(const char *b64, const char *filename) const { int size = strlen(b64); int outsize = 0; char *dst = b64_decode(b64, size, outsize); FileData *fd = new FileData(outsize, std::string(filename)); // Copy the data into FileData. memcpy(fd->getData(), dst, outsize); delete [] dst; return fd; } const char *Filesystem::getWorkingDirectory() { if (cwd.empty()) { #ifdef LOVE_WINDOWS WCHAR w_cwd[LOVE_MAX_PATH]; _wgetcwd(w_cwd, LOVE_MAX_PATH); cwd = to_utf8(w_cwd); replace_char(cwd, '\\', '/'); #else char *cwd_char = new char[LOVE_MAX_PATH]; if (getcwd(cwd_char, LOVE_MAX_PATH)) cwd = cwd_char; // if getcwd fails, cwd_char (and thus cwd) will still be empty delete [] cwd_char; #endif } return cwd.c_str(); } const char *Filesystem::getUserDirectory() { return PHYSFS_getUserDir(); } const char *Filesystem::getAppdataDirectory() { #ifdef LOVE_WINDOWS if (appdata.empty()) { wchar_t *w_appdata = _wgetenv(L"APPDATA"); appdata = to_utf8(w_appdata); replace_char(appdata, '\\', '/'); } return appdata.c_str(); #elif defined(LOVE_MACOSX) if (appdata.empty()) { std::string udir = getUserDirectory(); udir.append("/Library/Application Support"); appdata = udir; } return appdata.c_str(); #elif defined(LOVE_LINUX) if (appdata.empty()) { char *xdgdatahome = getenv("XDG_DATA_HOME"); if (!xdgdatahome) appdata = std::string(getUserDirectory()) + "/.local/share/"; else appdata = xdgdatahome; } return appdata.c_str(); #else return getUserDirectory(); #endif } const char *Filesystem::getSaveDirectory() { return save_path_full.c_str(); } std::string Filesystem::getSourceBaseDirectory() const { size_t source_len = game_source.length(); if (source_len == 0) return ""; // FIXME: This doesn't take into account parent and current directory // symbols (i.e. '..' and '.') #ifdef LOVE_WINDOWS // In windows, delimiters can be either '/' or '\'. size_t base_end_pos = game_source.find_last_of("/\\", source_len - 2); #else size_t base_end_pos = game_source.find_last_of('/', source_len - 2); #endif if (base_end_pos == std::string::npos) return ""; // If the source is in the unix root (aka '/'), we want to keep the '/'. if (base_end_pos == 0) base_end_pos = 1; return game_source.substr(0, base_end_pos); } std::string Filesystem::getRealDirectory(const char *filename) const { const char *dir = PHYSFS_getRealDir(filename); if (dir == nullptr) throw love::Exception("File does not exist."); return std::string(dir); } bool Filesystem::exists(const char *file) const { return PHYSFS_exists(file); } bool Filesystem::isDirectory(const char *file) const { return PHYSFS_isDirectory(file); } bool Filesystem::isFile(const char *file) const { return exists(file) && !isDirectory(file); } bool Filesystem::createDirectory(const char *dir) { if (PHYSFS_getWriteDir() == 0 && !setupWriteDirectory()) return false; if (!PHYSFS_mkdir(dir)) return false; return true; } bool Filesystem::remove(const char *file) { if (PHYSFS_getWriteDir() == 0 && !setupWriteDirectory()) return false; if (!PHYSFS_delete(file)) return false; return true; } Data *Filesystem::read(const char *filename, int64 size) const { File file(filename); file.open(File::READ); // close() is called in the File destructor. return file.read(size); } void Filesystem::write(const char *filename, const void *data, int64 size) const { File file(filename); file.open(File::WRITE); // close() is called in the File destructor. if (!file.write(data, size)) throw love::Exception("Data could not be written."); } void Filesystem::append(const char *filename, const void *data, int64 size) const { File file(filename); file.open(File::APPEND); // close() is called in the File destructor. if (!file.write(data, size)) throw love::Exception("Data could not be written."); } int Filesystem::getDirectoryItems(lua_State *L) { const char *dir = luaL_checkstring(L, 1); bool hascallback = !lua_isnoneornil(L, 2); if (hascallback) luaL_checktype(L, 2, LUA_TFUNCTION); char **rc = PHYSFS_enumerateFiles(dir); int index = 1; lua_newtable(L); for (char **i = rc; *i != 0; i++) { if (hascallback) { lua_pushvalue(L, 2); lua_pushstring(L, *i); lua_call(L, 1, 0); } lua_pushstring(L, *i); lua_rawseti(L, -2, index); index++; } PHYSFS_freeList(rc); return 1; } int Filesystem::lines_i(lua_State *L) { const int bufsize = 1024; char buf[bufsize]; int linesize = 0; bool newline = false; File *file = luax_checktype(L, lua_upvalueindex(1), "File", FILESYSTEM_FILE_T); // Only accept read mode at this point. if (file->getMode() != File::READ) return luaL_error(L, "File needs to stay in read mode."); int64 pos = file->tell(); int64 userpos = -1; if (lua_isnoneornil(L, lua_upvalueindex(2)) == 0) { // User may have changed the file position. userpos = pos; pos = (int64) lua_tonumber(L, lua_upvalueindex(2)); if (userpos != pos) file->seek(pos); } while (!newline && !file->eof()) { // This 64-bit to 32-bit integer cast should be safe as it never exceeds bufsize. int read = (int) file->read(buf, bufsize); if (read < 0) return luaL_error(L, "Could not read from file."); linesize += read; for (int i = 0; i < read; i++) { if (buf[i] == '\n') { linesize -= read - i; newline = true; break; } } } if (newline || (file->eof() && linesize > 0)) { if (linesize < bufsize) { // We have the line in the buffer on the stack. No 'new' and 'read' needed. lua_pushlstring(L, buf, linesize > 0 && buf[linesize - 1] == '\r' ? linesize - 1 : linesize); if (userpos < 0) file->seek(pos + linesize + 1); } else { char *str = 0; try { str = new char[linesize + 1]; } catch(std::bad_alloc &) { // Can't lua_error (longjmp) in exception handlers. } if (!str) return luaL_error(L, "Out of memory."); file->seek(pos); // Read the \n anyway and save us a call to seek. if (file->read(str, linesize + 1) == -1) { delete [] str; return luaL_error(L, "Could not read from file."); } lua_pushlstring(L, str, str[linesize - 1] == '\r' ? linesize - 1 : linesize); delete [] str; } if (userpos >= 0) { // Save new position in upvalue. lua_pushnumber(L, (lua_Number)(pos + linesize + 1)); lua_replace(L, lua_upvalueindex(2)); file->seek(userpos); } return 1; } // EOF reached. if (userpos >= 0 && luax_toboolean(L, lua_upvalueindex(3))) file->seek(userpos); else file->close(); return 0; } int64 Filesystem::getLastModified(const char *filename) const { PHYSFS_sint64 time = PHYSFS_getLastModTime(filename); if (time == -1) throw love::Exception("Could not determine file modification date."); return time; } int64 Filesystem::getSize(const char *filename) const { File file(filename); int64 size = file.getSize(); return size; } } // physfs } // filesystem } // love love-0.9.1/src/modules/filesystem/File.cpp0000644000000000000000000000365612316602166020507 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "File.h" namespace love { namespace filesystem { File::~File() { } bool File::getConstant(const char *in, Mode &out) { return modes.find(in, out); } bool File::getConstant(Mode in, const char *&out) { return modes.find(in, out); } bool File::getConstant(const char *in, BufferMode &out) { return bufferModes.find(in, out); } bool File::getConstant(BufferMode in, const char *&out) { return bufferModes.find(in, out); } StringMap::Entry File::modeEntries[] = { {"c", File::CLOSED}, {"r", File::READ}, {"w", File::WRITE}, {"a", File::APPEND}, }; StringMap File::modes(File::modeEntries, sizeof(File::modeEntries)); StringMap::Entry File::bufferModeEntries[] = { {"none", File::BUFFER_NONE}, {"line", File::BUFFER_LINE}, {"full", File::BUFFER_FULL}, }; StringMap File::bufferModes(File::bufferModeEntries, sizeof(File::bufferModeEntries)); } // filesystem } // love love-0.9.1/src/modules/filesystem/File.h0000644000000000000000000001240312316602166020142 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FILESYSTEM_FILE_H #define LOVE_FILESYSTEM_FILE_H // STD #include // LOVE #include "common/Data.h" #include "common/Object.h" #include "common/StringMap.h" #include "common/int.h" #include "FileData.h" namespace love { namespace filesystem { /** * A File interface, providing generic means of reading from and * writing to files. **/ class File : public Object { public: /** * File open mode. **/ enum Mode { CLOSED, READ, WRITE, APPEND, MODE_MAX_ENUM }; enum BufferMode { BUFFER_NONE, BUFFER_LINE, BUFFER_FULL, BUFFER_MAX_ENUM }; /** * Used to indicate ALL data in a file. **/ static const int64 ALL = -1; /** * Destructor. **/ virtual ~File(); /** * Opens the file in a certain mode. * * @param mode READ, WRITE, APPEND. * @return True if successful, false otherwise. **/ virtual bool open(Mode mode) = 0; /** * Closes the file. * * @return True if successful, false otherwise. **/ virtual bool close() = 0; /** * Gets whether the file is open. **/ virtual bool isOpen() const = 0; /** * Gets the size of the file. * * @return The size of the file. **/ virtual int64 getSize() = 0; /** * Reads data from the file and allocates a Data object. * * @param size The number of bytes to attempt reading, or -1 for EOF. * @return A newly allocated Data object. **/ virtual FileData *read(int64 size = ALL) = 0; /** * Reads data into the destination buffer. * * @param dst The destination buffer. * @param size The number of bytes to attempt reading. * @return The number of bytes actually read. **/ virtual int64 read(void *dst, int64 size) = 0; /** * Writes data into the File. * * @param data The source buffer. * @param size The size of the buffer. * @return True of success, false otherwise. **/ virtual bool write(const void *data, int64 size) = 0; /** * Writes a Data object into the File. * * @param data The data object to write into the file. * @param size The number of bytes to attempt writing, or -1 for everything. * @return True of success, false otherwise. **/ virtual bool write(const Data *data, int64 size = ALL) = 0; /** * Flushes the currently buffered file data to disk. Only applicable in * write mode. **/ virtual bool flush() = 0; /** * Checks whether we are currently at end-of-file. * * @return True if EOF, false otherwise. **/ virtual bool eof() = 0; /** * Gets the current position in the File. * * @return The current byte position in the File. **/ virtual int64 tell() = 0; /** * Seeks to a certain position in the File. * * @param pos The byte position in the file. * @return True on success, false otherwise. **/ virtual bool seek(uint64 pos) = 0; /** * Sets the buffering mode for the file. When buffering is enabled, the file * will not write to disk (or will pre-load data if in read mode) until the * buffer's capacity is reached. * In the BUFFER_LINE mode, the file will also write to disk if a newline is * written. * * @param bufmode The buffer mode. * @param size The size in bytes of the buffer. **/ virtual bool setBuffer(BufferMode bufmode, int64 size) = 0; /** * @param[out] size The size in bytes of the buffer. * @return The current buffer mode. **/ virtual BufferMode getBuffer(int64 &size) const = 0; /** * Gets the current mode of the File. * @return The current mode of the File; CLOSED, READ, WRITE or APPEND. **/ virtual Mode getMode() const = 0; /** * Gets the filename for this File, or empty string if none. * @return The filename for this File. **/ virtual std::string getFilename() const = 0; /** * Gets the file extension for this File, or empty string if none. * @return The file extension for this File (without the dot). **/ virtual std::string getExtension() const = 0; static bool getConstant(const char *in, Mode &out); static bool getConstant(Mode in, const char *&out); static bool getConstant(const char *in, BufferMode &out); static bool getConstant(BufferMode in, const char *&out); private: static StringMap::Entry modeEntries[]; static StringMap modes; static StringMap::Entry bufferModeEntries[]; static StringMap bufferModes; }; // File } // filesystem } // love #endif // LOVE_FILESYSTEM_FILE_H love-0.9.1/src/modules/sound/0000755000000000000000000000000012316602463016056 5ustar00rootroot00000000000000love-0.9.1/src/modules/sound/wrap_SoundData.h0000644000000000000000000000303212316602166021140 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_WRAP_SOUND_DATA_H #define LOVE_SOUND_WRAP_SOUND_DATA_H // LOVE #include "common/runtime.h" #include "SoundData.h" namespace love { namespace sound { SoundData *luax_checksounddata(lua_State *L, int idx); int w_SoundData_getChannels(lua_State *L); int w_SoundData_getBitDepth(lua_State *L); int w_SoundData_getSampleRate(lua_State *L); int w_SoundData_getSampleCount(lua_State *L); int w_SoundData_getDuration(lua_State *L); int w_SoundData_setSample(lua_State *L); int w_SoundData_getSample(lua_State *L); extern "C" int luaopen_sounddata(lua_State *L); } // sound } // love #endif // LOVE_SOUND_WRAP_SOUND_DATA_H love-0.9.1/src/modules/sound/SoundData.h0000644000000000000000000000360612316602166020116 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_SOUND_DATA_H #define LOVE_SOUND_SOUND_DATA_H // LOVE #include "filesystem/File.h" #include "common/int.h" #include "Decoder.h" namespace love { namespace sound { class SoundData : public love::Data { public: SoundData(Decoder *decoder); SoundData(int samples, int sampleRate, int bitDepth, int channels); SoundData(void *d, int samples, int sampleRate, int bitDepth, int channels); virtual ~SoundData(); // Implements Data. void *getData() const; size_t getSize() const; virtual int getChannels() const; virtual int getBitDepth() const; virtual int getSampleRate() const; virtual int getSampleCount() const; virtual float getDuration() const; void setSample(int i, float sample); float getSample(int i) const; private: void load(int samples, int sampleRate, int bitDepth, int channels, void *newData = 0); uint8 *data; size_t size; int sampleRate; int bitDepth; int channels; }; // SoundData } // sound } // love #endif // LOVE_SOUND_SOUND_DATA_H love-0.9.1/src/modules/sound/lullaby/0000755000000000000000000000000012316602463017522 5ustar00rootroot00000000000000love-0.9.1/src/modules/sound/lullaby/WaveDecoder.cpp0000644000000000000000000001011312316602166022412 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "WaveDecoder.h" #include #include "common/config.h" #include "common/Exception.h" namespace love { namespace sound { namespace lullaby { // Callbacks static wuff_sint32 read_callback(void *userdata, wuff_uint8 *buffer, size_t *size) { WaveFile *input = (WaveFile *) userdata; size_t bytes_left = input->size - input->offset; size_t target_size = *size < bytes_left ? *size : bytes_left; memcpy(buffer, input->data + input->offset, target_size); input->offset += target_size; *size = target_size; return WUFF_SUCCESS; } static wuff_sint32 seek_callback(void *userdata, wuff_uint64 offset) { WaveFile *input = (WaveFile *)userdata; input->offset = (size_t) (offset < input->size ? offset : input->size); return WUFF_SUCCESS; } static wuff_sint32 tell_callback(void *userdata, wuff_uint64 *offset) { WaveFile *input = (WaveFile *)userdata; *offset = input->offset; return WUFF_SUCCESS; } wuff_callback WaveDecoderCallbacks = {read_callback, seek_callback, tell_callback}; WaveDecoder::WaveDecoder(Data *data, const std::string &ext, int bufferSize) : Decoder(data, ext, bufferSize) { dataFile.data = (char *) data->getData(); dataFile.size = data->getSize(); dataFile.offset = 0; int wuff_status = wuff_open(&handle, &WaveDecoderCallbacks, &dataFile); if (wuff_status < 0) throw love::Exception("Could not open WAVE"); try { wuff_status = wuff_stream_info(handle, &info); if (wuff_status < 0) throw love::Exception("Could not retrieve WAVE stream info"); if (info.channels > 2) throw love::Exception("Multichannel audio not supported"); if (info.format != WUFF_FORMAT_PCM_U8 && info.format != WUFF_FORMAT_PCM_S16) { wuff_status = wuff_format(handle, WUFF_FORMAT_PCM_S16); if (wuff_status < 0) throw love::Exception("Could not set output format"); } } catch (love::Exception &) { wuff_close(handle); throw; } } WaveDecoder::~WaveDecoder() { wuff_close(handle); } bool WaveDecoder::accepts(const std::string &ext) { static const std::string supported[] = { "wav", "" }; for (int i = 0; !(supported[i].empty()); i++) { if (supported[i].compare(ext) == 0) return true; } return false; } love::sound::Decoder *WaveDecoder::clone() { return new WaveDecoder(data, ext, bufferSize); } int WaveDecoder::decode() { size_t size = 0; while (size < (size_t) bufferSize) { size_t bytes = bufferSize; int wuff_status = wuff_read(handle, (wuff_uint8 *) buffer, &bytes); if (wuff_status < 0) return 0; else if (bytes == 0) { eof = true; break; } size += bytes; } return size; } bool WaveDecoder::seek(float s) { int wuff_status = wuff_seek(handle, (wuff_uint64) (s * info.sample_rate)); if (wuff_status >= 0) { eof = false; return true; } return false; } bool WaveDecoder::rewind() { int wuff_status = wuff_seek(handle, 0); if (wuff_status >= 0) { eof = false; return true; } return false; } bool WaveDecoder::isSeekable() { return true; } int WaveDecoder::getChannels() const { return info.channels; } int WaveDecoder::getBitDepth() const { return info.bits_per_sample == 8 ? 8 : 16; } int WaveDecoder::getSampleRate() const { return info.sample_rate; } } // lullaby } // sound } // love love-0.9.1/src/modules/sound/lullaby/Mpg123Decoder.h0000644000000000000000000000345412316602166022140 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_LULLABY_LIBMPG123_DECODER_H #define LOVE_SOUND_LULLABY_LIBMPG123_DECODER_H // LOVE #include "common/Data.h" #include "Decoder.h" // libmpg123 #ifdef LOVE_MACOSX_USE_FRAMEWORKS #include #else #include #endif namespace love { namespace sound { namespace lullaby { class Mpg123Decoder : public Decoder { public: Mpg123Decoder(Data *data, const std::string &ext, int bufferSize); virtual ~Mpg123Decoder(); static bool accepts(const std::string &ext); static void quit(); love::sound::Decoder *clone(); int decode(); bool seek(float s); bool rewind(); bool isSeekable(); int getChannels() const; int getBitDepth() const; private: int feed(int bytes); mpg123_handle *handle; static bool inited; int data_offset; int data_size; int channels; }; // Decoder } // lullaby } // sound } // love #endif // LOVE_SOUND_LULLABY_LIBMPG123_DECODER_H love-0.9.1/src/modules/sound/lullaby/Decoder.h0000644000000000000000000000377312316602166021252 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_LULLABY_DECODER_H #define LOVE_SOUND_LULLABY_DECODER_H // LOVE #include "sound/Decoder.h" #include "filesystem/File.h" #include namespace love { namespace sound { namespace lullaby { class Decoder : public love::sound::Decoder { public: Decoder(Data *data, const std::string &ext, int bufferSize); virtual ~Decoder(); // Implement some of love::sound::Decoder, but allow subclasses // to override them. virtual void *getBuffer() const; virtual int getSize() const; virtual int getSampleRate() const; virtual bool isFinished(); protected: // The encoded data. This should be replaced with buffered file // reads in the future. Data *data; // File extension. std::string ext; // When the decoder decodes data incrementally, it writes // this many bytes at a time (at most). int bufferSize; // The desired frequency of the samples. 44100, 22050, or 11025. int sampleRate; // Holds internal memory. void *buffer; // Set this to true when eof has been reached. bool eof; }; // Decoder } // lullaby } // sound } // love #endif // LOVE_SOUND_LULLABY_DECODER_H love-0.9.1/src/modules/sound/lullaby/ModPlugDecoder.h0000644000000000000000000000321612316602166022532 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_LULLABY_MODPLUG_DECODER_H #define LOVE_SOUND_LULLABY_MODPLUG_DECODER_H // LOVE #include "common/Data.h" #include "Decoder.h" // SDL_sound #include namespace love { namespace sound { namespace lullaby { class ModPlugDecoder : public Decoder { public: ModPlugDecoder(Data *data, const std::string &ext, int bufferSize); virtual ~ModPlugDecoder(); static bool accepts(const std::string &ext); love::sound::Decoder *clone(); int decode(); bool seek(float s); bool rewind(); bool isSeekable(); int getChannels() const; int getBitDepth() const; private: ModPlugFile *plug; ModPlug_Settings settings; }; // Decoder } // lullaby } // sound } // love #endif // LOVE_SOUND_LULLABY_MODPLUG_DECODER_H love-0.9.1/src/modules/sound/lullaby/GmeDecoder.h0000644000000000000000000000333712316602166021677 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_LULLABY_GME_DECODER_H #define LOVE_SOUND_LULLABY_GME_DECODER_H #ifdef LOVE_SUPPORT_GME // LOVE #include "common/Data.h" #include "Decoder.h" #ifdef LOVE_MACOSX_USE_FRAMEWORKS #include #else #include #endif namespace love { namespace sound { namespace lullaby { class GmeDecoder : public Decoder { public: GmeDecoder(Data *data, const std::string &ext, int bufferSize); virtual ~GmeDecoder(); static bool accepts(const std::string &ext); love::sound::Decoder *clone(); int decode(); bool seek(float s); bool rewind(); bool isSeekable(); int getChannels() const; int getBitDepth() const; private: Music_Emu *emu; int num_tracks; int cur_track; }; // Decoder } // lullaby } // sound } // love #endif // LOVE_SUPPORT_GME #endif // LOVE_SOUND_LULLABY_GME_DECODER_H love-0.9.1/src/modules/sound/lullaby/VorbisDecoder.h0000644000000000000000000000416612316602166022434 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_LULLABY_VORBIS_DECODER_H #define LOVE_SOUND_LULLABY_VORBIS_DECODER_H // LOVE #include "common/Data.h" #include "Decoder.h" // vorbis #define OV_EXCLUDE_STATIC_CALLBACKS #include #include namespace love { namespace sound { namespace lullaby { // Struct for handling data struct SOggFile { char *dataPtr; // Pointer to the data in memory int dataSize; // Size of the data int dataRead; // How much we've read so far }; class VorbisDecoder : public Decoder { public: VorbisDecoder(Data *data, const std::string &ext, int bufferSize); virtual ~VorbisDecoder(); static bool accepts(const std::string &ext); love::sound::Decoder *clone(); int decode(); bool seek(float s); bool rewind(); bool isSeekable(); int getChannels() const; int getBitDepth() const; int getSampleRate() const; private: SOggFile oggFile; // (see struct) ov_callbacks vorbisCallbacks; // Callbacks used to read the file from mem OggVorbis_File handle; // Handle to the file vorbis_info *vorbisInfo; // Info vorbis_comment *vorbisComment; // Comments int endian; // Endianness }; // VorbisDecoder } // lullaby } // sound } // love #endif // LOVE_SOUND_LULLABY_VORBIS_DECODER_H love-0.9.1/src/modules/sound/lullaby/VorbisDecoder.cpp0000644000000000000000000001450312316602166022763 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "VorbisDecoder.h" #include #include "common/config.h" #include "common/Exception.h" namespace love { namespace sound { namespace lullaby { /** * CALLBACK FUNCTIONS **/ static int vorbisClose(void * /* ptr to the data that the vorbis files need*/) { // Does nothing (handled elsewhere) return 1; } static size_t vorbisRead(void *ptr /* ptr to the data that the vorbis files need*/, size_t byteSize /* how big a byte is*/, size_t sizeToRead /* How much we can read*/, void *datasource /* this is a pointer to the data we passed into ov_open_callbacks (our SOggFile struct*/) { size_t spaceToEOF; // How much more we can read till we hit the EOF marker size_t actualSizeToRead; // How much data we are actually going to read from memory SOggFile *vorbisData; // Our vorbis data, for the typecast // Get the data in the right format vorbisData = (SOggFile *)datasource; // Calculate how much we need to read. This can be sizeToRead*byteSize or less depending on how near the EOF marker we are spaceToEOF = vorbisData->dataSize - vorbisData->dataRead; if ((sizeToRead*byteSize) < spaceToEOF) actualSizeToRead = (sizeToRead*byteSize); else actualSizeToRead = spaceToEOF; // A simple copy of the data from memory to the datastruct that the vorbis libs will use if (actualSizeToRead) { // Copy the data from the start of the file PLUS how much we have already read in memcpy(ptr, (char *)vorbisData->dataPtr + vorbisData->dataRead, actualSizeToRead); // Increase by how much we have read by vorbisData->dataRead += (actualSizeToRead); } // Return how much we read (in the same way fread would) return actualSizeToRead; } static int vorbisSeek(void *datasource /* ptr to the data that the vorbis files need*/, ogg_int64_t offset /*offset from the point we wish to seek to*/, int whence /*where we want to seek to*/) { int spaceToEOF; // How much more we can read till we hit the EOF marker ogg_int64_t actualOffset; // How much we can actually offset it by SOggFile *vorbisData; // The data we passed in (for the typecast) // Get the data in the right format vorbisData = (SOggFile *) datasource; // Goto where we wish to seek to switch (whence) { case SEEK_SET: // Seek to the start of the data file // Make sure we are not going to the end of the file if (vorbisData->dataSize >= offset) actualOffset = offset; else actualOffset = vorbisData->dataSize; // Set where we now are vorbisData->dataRead = (int)actualOffset; break; case SEEK_CUR: // Seek from where we are // Make sure we dont go past the end spaceToEOF = vorbisData->dataSize - vorbisData->dataRead; if (offset < spaceToEOF) actualOffset = (offset); else actualOffset = spaceToEOF; // Seek from our currrent location vorbisData->dataRead += (int)actualOffset; break; case SEEK_END: // Seek from the end of the file vorbisData->dataRead = vorbisData->dataSize+1; break; default: throw love::Exception("Unknown seek command in vorbisSeek\n"); break; }; return 0; } static long vorbisTell(void *datasource /* ptr to the data that the vorbis files need*/) { SOggFile *vorbisData; vorbisData = (SOggFile *) datasource; return vorbisData->dataRead; } /** * END CALLBACK FUNCTIONS **/ VorbisDecoder::VorbisDecoder(Data *data, const std::string &ext, int bufferSize) : Decoder(data, ext, bufferSize) { // Initialize callbacks vorbisCallbacks.close_func = vorbisClose; vorbisCallbacks.seek_func = vorbisSeek; vorbisCallbacks.read_func = vorbisRead; vorbisCallbacks.tell_func = vorbisTell; // Check endianness #ifdef LOVE_BIG_ENDIAN endian = 1; #else endian = 0; #endif // Initialize OGG file oggFile.dataPtr = (char *) data->getData(); oggFile.dataSize = data->getSize(); oggFile.dataRead = 0; // Open Vorbis handle if (ov_open_callbacks(&oggFile, &handle, NULL, 0, vorbisCallbacks) < 0) throw love::Exception("Could not read Ogg bitstream"); // Get info and comments vorbisInfo = ov_info(&handle, -1); vorbisComment = ov_comment(&handle, -1); } VorbisDecoder::~VorbisDecoder() { ov_clear(&handle); } bool VorbisDecoder::accepts(const std::string &ext) { static const std::string supported[] = { "ogg", "oga", "" }; for (int i = 0; !(supported[i].empty()); i++) { if (supported[i].compare(ext) == 0) return true; } return false; } love::sound::Decoder *VorbisDecoder::clone() { return new VorbisDecoder(data, ext, bufferSize); } int VorbisDecoder::decode() { int size = 0; while (size < bufferSize) { int result = ov_read(&handle, (char *) buffer + size, bufferSize - size, endian, (getBitDepth() == 16 ? 2 : 1), 1, 0); if (result == OV_HOLE) continue; else if (result <= OV_EREAD) return -1; else if (result == 0) { eof = true; break; } else if (result > 0) size += result; } return size; } bool VorbisDecoder::seek(float s) { int result = ov_time_seek(&handle, s); if (result == 0) { eof = false; return true; } return false; } bool VorbisDecoder::rewind() { int result = ov_pcm_seek(&handle, 0); if (result == 0) { eof = false; return true; } return false; } bool VorbisDecoder::isSeekable() { long result = ov_seekable(&handle); return (result != 0); } int VorbisDecoder::getChannels() const { return vorbisInfo->channels; } int VorbisDecoder::getBitDepth() const { return 16; } int VorbisDecoder::getSampleRate() const { return vorbisInfo->rate; } } // lullaby } // sound } // love love-0.9.1/src/modules/sound/lullaby/Decoder.cpp0000644000000000000000000000313012316602166021570 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Decoder.h" #include "common/Exception.h" namespace love { namespace sound { namespace lullaby { Decoder::Decoder(Data *data, const std::string &ext, int bufferSize) : data(data) , ext(ext) , bufferSize(bufferSize) , sampleRate(DEFAULT_SAMPLE_RATE) , buffer(0) , eof(false) { data->retain(); buffer = new char[bufferSize]; } Decoder::~Decoder() { if (buffer != 0) delete [](char *) buffer; if (data != 0) data->release(); } void *Decoder::getBuffer() const { return buffer; } int Decoder::getSize() const { return bufferSize; } int Decoder::getSampleRate() const { return sampleRate; } bool Decoder::isFinished() { return eof; } } // lullaby } // sound } // love love-0.9.1/src/modules/sound/lullaby/WaveDecoder.h0000644000000000000000000000337212316602166022070 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_LULLABY_WAVE_DECODER_H #define LOVE_SOUND_LULLABY_WAVE_DECODER_H // LOVE #include "common/Data.h" #include "Decoder.h" #include "libraries/Wuff/wuff.h" namespace love { namespace sound { namespace lullaby { // Struct for handling data struct WaveFile { char *data; size_t size; size_t offset; }; class WaveDecoder : public Decoder { public: WaveDecoder(Data *data, const std::string &ext, int bufferSize); virtual ~WaveDecoder(); static bool accepts(const std::string &ext); love::sound::Decoder *clone(); int decode(); bool seek(float s); bool rewind(); bool isSeekable(); int getChannels() const; int getBitDepth() const; int getSampleRate() const; private: WaveFile dataFile; wuff_handle * handle; wuff_info info; }; // WaveDecoder } // lullaby } // sound } // love #endif // LOVE_SOUND_LULLABY_WAVE_DECODER_H love-0.9.1/src/modules/sound/lullaby/ModPlugDecoder.cpp0000644000000000000000000000657612316602166023101 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" #include "ModPlugDecoder.h" #include "common/Exception.h" namespace love { namespace sound { namespace lullaby { ModPlugDecoder::ModPlugDecoder(Data *data, const std::string &ext, int bufferSize) : Decoder(data, ext, bufferSize) , plug(0) { // Set some ModPlug settings. settings.mFlags = MODPLUG_ENABLE_OVERSAMPLING | MODPLUG_ENABLE_NOISE_REDUCTION; settings.mChannels = 2; settings.mBits = 16; settings.mFrequency = sampleRate; settings.mResamplingMode = MODPLUG_RESAMPLE_LINEAR; // fill with modplug defaults (modplug _memsets_, so we could get // garbage settings when the struct is only partially initialized) // This does not exist yet on Windows. // Some settings not supported by some older versions #ifndef LOVE_OLD_MODPLUG settings.mStereoSeparation = 128; settings.mMaxMixChannels = 32; #endif settings.mReverbDepth = 0; settings.mReverbDelay = 0; settings.mBassAmount = 0; settings.mBassRange = 0; settings.mSurroundDepth = 0; settings.mSurroundDelay = 0; settings.mLoopCount = -1; ModPlug_SetSettings(&settings); // Load the module. plug = ModPlug_Load(data->getData(), data->getSize()); if (plug == 0) throw love::Exception("Could not load file with ModPlug."); // set master volume for delicate ears ModPlug_SetMasterVolume(plug, 128); } ModPlugDecoder::~ModPlugDecoder() { if (plug != 0) ModPlug_Unload(plug); } bool ModPlugDecoder::accepts(const std::string &ext) { static const std::string supported[] = { "699", "abc", "amf", "ams", "dbm", "dmf", "dsm", "far", "it", "j2b", "mdl", "med", "mid", "mod", "mt2", "mtm", "okt", "pat", "psm", "s3m", "stm", "ult", "umx", "xm", "" }; for (int i = 0; !(supported[i].empty()); i++) { if (supported[i].compare(ext) == 0) return true; } return false; } love::sound::Decoder *ModPlugDecoder::clone() { return new ModPlugDecoder(data, ext, bufferSize); } int ModPlugDecoder::decode() { int r = ModPlug_Read(plug, buffer, bufferSize); if (r == 0) eof = true; return r; } bool ModPlugDecoder::seek(float s) { ModPlug_Seek(plug, (int)(s*1000.0f)); return true; } bool ModPlugDecoder::rewind() { // Let's reload. ModPlug_Unload(plug); plug = ModPlug_Load(data->getData(), data->getSize()); ModPlug_SetMasterVolume(plug, 128); eof = false; return (plug != 0); } bool ModPlugDecoder::isSeekable() { return true; } int ModPlugDecoder::getChannels() const { return 2; } int ModPlugDecoder::getBitDepth() const { return 16; } } // lullaby } // sound } // love love-0.9.1/src/modules/sound/lullaby/GmeDecoder.cpp0000644000000000000000000000611512316602166022227 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" #ifdef LOVE_SUPPORT_GME #include "common/Exception.h" #include "GmeDecoder.h" namespace love { namespace sound { namespace lullaby { GmeDecoder::GmeDecoder(Data *data, const std::string &ext, int bufferSize) : Decoder(data, ext, bufferSize) , emu(0) , num_tracks(0) , cur_track(0) { void *d = data->getData(); int s = data->getSize(); if (gme_open_data(d, s, &emu, sampleRate) != 0) throw love::Exception("Could not open game music file"); num_tracks = gme_track_count(emu); try { if (num_tracks <= 0) throw love::Exception("Game music file has no tracks"); if (gme_start_track(emu, cur_track) != 0) throw love::Exception("Could not start game music playback"); } catch (love::Exception &) { gme_delete(emu); throw; } } GmeDecoder::~GmeDecoder() { if (emu) gme_delete(emu); } bool GmeDecoder::accepts(const std::string &ext) { static const std::string supported[] = { "ay", "gbs", "gym", "hes", "kss", "nsf", "nsfe", "sap", "spc", "vgm", "vgz", "" }; for (int i = 0; !(supported[i].empty()); i++) { if (supported[i].compare(ext) == 0) return true; } return false; } love::sound::Decoder *GmeDecoder::clone() { return new GmeDecoder(data, ext, bufferSize); } int GmeDecoder::decode() { short *sbuf = static_cast(buffer); int size = bufferSize / sizeof(short); if (gme_play(emu, size, sbuf) != 0) throw love::Exception("Error while decoding game music"); if (!eof && gme_track_ended(emu)) { // Start the next track if this one ended. if (cur_track < num_tracks - 1) gme_start_track(emu, ++cur_track); else eof = true; } return bufferSize; } bool GmeDecoder::seek(float s) { return gme_seek(emu, static_cast(s * 1000.f)) != 0; } bool GmeDecoder::rewind() { // If we're in the first track, rewind. if (cur_track == 0) return gme_seek(emu, 0) == 0; else { // Otherwise, start from the first track again. cur_track = 0; return gme_start_track(emu, cur_track) == 0; } } bool GmeDecoder::isSeekable() { return true; } int GmeDecoder::getChannels() const { return 2; } int GmeDecoder::getBitDepth() const { return 16; } } // lullaby } // sound } // love #endif // LOVE_SUPPORT_GME love-0.9.1/src/modules/sound/lullaby/Sound.h0000644000000000000000000000361312316602166020766 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_LULLABY_SOUND_H #define LOVE_SOUND_LULLABY_SOUND_H // LOVE #include #include "sound/Decoder.h" namespace love { namespace sound { namespace lullaby { /** * The love.sound.lullaby module is the custom sound decoder module for LOVE. Instead * of using an intermediate library like SDL_sound, it interfaces with relevant libraries * directly (libmpg123, libmodplug, libFLAC, etc). * * It was Mike that came up with the name Lullaby, which we both instantly recognized as awesome. **/ class Sound : public love::sound::Sound { public: /** * Constructor. Initializes relevant libraries. **/ Sound(); /** * Destructor. Deinitializes relevant libraries. **/ virtual ~Sound(); /// @copydoc love::Module::getName const char *getName() const; /// @copydoc love::sound::Sound::newDecoder sound::Decoder *newDecoder(love::filesystem::FileData *file, int bufferSize); }; // Sound } // lullaby } // sound } // love #endif // LOVE_SOUND_LULLABY_SOUND_H love-0.9.1/src/modules/sound/lullaby/Mpg123Decoder.cpp0000644000000000000000000001073212316602166022470 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Mpg123Decoder.h" #include "common/Exception.h" #include namespace love { namespace sound { namespace lullaby { bool Mpg123Decoder::inited = false; Mpg123Decoder::Mpg123Decoder(Data *data, const std::string &ext, int bufferSize) : Decoder(data, ext, bufferSize) , handle(0) , channels(MPG123_STEREO) { data_size = data->getSize(); data_offset = 0; int ret; if (!inited) { ret = mpg123_init(); if (ret != MPG123_OK) throw love::Exception("Could not initialize mpg123."); inited = (ret == MPG123_OK); } //Intialize the handle handle = mpg123_new(NULL, &ret); if (handle == NULL) throw love::Exception("Could not create handle."); ret = mpg123_open_feed(handle); if (ret != MPG123_OK) throw love::Exception("Could not open feed."); ret = feed(16384); if (ret != MPG123_OK && ret != MPG123_DONE) throw love::Exception("Could not feed!"); } Mpg123Decoder::~Mpg123Decoder() { mpg123_delete(handle); } bool Mpg123Decoder::accepts(const std::string &ext) { static const std::string supported[] = { "mp3", "" }; for (int i = 0; !(supported[i].empty()); i++) { if (supported[i].compare(ext) == 0) return true; } return false; } void Mpg123Decoder::quit() { if (inited) mpg123_exit(); } love::sound::Decoder *Mpg123Decoder::clone() { return new Mpg123Decoder(data, ext, bufferSize); } int Mpg123Decoder::decode() { int size = 0; bool done = false; while (size < bufferSize && !done && !eof) { size_t numbytes = 0; int r = mpg123_read(handle, (unsigned char *) buffer + size, bufferSize - size, &numbytes); switch (r) { case MPG123_NEW_FORMAT: { size += numbytes; long rate = 0; int encoding = 0; int ret = mpg123_getformat(handle, &rate, &channels, &encoding); if (rate == 0) rate = sampleRate; else sampleRate = rate; if (channels == 0) channels = MPG123_STEREO; if (encoding == 0) encoding = MPG123_ENC_SIGNED_16; ret = mpg123_format(handle, rate, channels, encoding); if (ret != MPG123_OK) throw love::Exception("Could not set output format."); } continue; case MPG123_NEED_MORE: { size += numbytes; int v = feed(8192); switch (v) { case MPG123_OK: continue; case MPG123_DONE: if (numbytes == 0) eof = true; break; default: done = true; } continue; } case MPG123_OK: size += numbytes; continue; case MPG123_DONE: // Apparently, mpg123_read does not return MPG123_DONE, but // let's keep it here anyway. eof = true; default: done = true; break; } } return size; } bool Mpg123Decoder::seek(float s) { off_t offset = static_cast(s * static_cast(sampleRate)); if (offset < 0) return false; if (mpg123_feedseek(handle, offset, SEEK_SET, &offset) >= 0) { data_offset = offset; eof = false; return true; } else return false; } bool Mpg123Decoder::rewind() { eof = false; off_t offset; if (mpg123_feedseek(handle, 0, SEEK_SET, &offset) >= 0) { data_offset = offset; return true; } else return false; } bool Mpg123Decoder::isSeekable() { return true; } int Mpg123Decoder::getChannels() const { return channels; } int Mpg123Decoder::getBitDepth() const { return 16; } int Mpg123Decoder::feed(int bytes) { int remaining = data_size - data_offset; if (remaining <= 0) return MPG123_DONE; int feed_bytes = remaining < bytes ? remaining : bytes; int r = mpg123_feed(handle, (unsigned char *)data->getData() + data_offset, feed_bytes); if (r == MPG123_OK || r == MPG123_DONE) data_offset += feed_bytes; return r; } } // lullaby } // sound } // love love-0.9.1/src/modules/sound/lullaby/Sound.cpp0000644000000000000000000000461712316602166021326 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" #include #include "Sound.h" #include "ModPlugDecoder.h" #include "VorbisDecoder.h" #include "GmeDecoder.h" #include "WaveDecoder.h" //#include "FLACDecoder.h" #ifndef LOVE_NOMPG123 # include "Mpg123Decoder.h" #endif // LOVE_NOMPG123 namespace love { namespace sound { namespace lullaby { Sound::Sound() { } Sound::~Sound() { #ifndef LOVE_NOMPG123 Mpg123Decoder::quit(); #endif // LOVE_NOMPG123 } const char *Sound::getName() const { return "love.sound.lullaby"; } sound::Decoder *Sound::newDecoder(love::filesystem::FileData *data, int bufferSize) { std::string ext = data->getExtension(); std::transform(ext.begin(), ext.end(), ext.begin(), tolower); sound::Decoder *decoder = 0; // Find a suitable decoder here, and return it. if (ModPlugDecoder::accepts(ext)) decoder = new ModPlugDecoder(data, ext, bufferSize); #ifndef LOVE_NOMPG123 else if (Mpg123Decoder::accepts(ext)) decoder = new Mpg123Decoder(data, ext, bufferSize); #endif // LOVE_NOMPG123 else if (VorbisDecoder::accepts(ext)) decoder = new VorbisDecoder(data, ext, bufferSize); #ifdef LOVE_SUPPORT_GME else if (GmeDecoder::accepts(ext)) decoder = new GmeDecoder(data, ext, bufferSize); #endif // LOVE_SUPPORT_GME else if (WaveDecoder::accepts(ext)) decoder = new WaveDecoder(data, ext, bufferSize); /*else if (FLACDecoder::accepts(ext)) decoder = new FLACDecoder(data, ext, bufferSize);*/ // else if (OtherDecoder::accept(ext)) return decoder; } } // lullaby } // sound } // love love-0.9.1/src/modules/sound/SoundData.cpp0000644000000000000000000001157612316602166020456 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "SoundData.h" // C #include #include // C++ #include #include #include namespace love { namespace sound { SoundData::SoundData(Decoder *decoder) : data(0) , size(0) , sampleRate(Decoder::DEFAULT_SAMPLE_RATE) , bitDepth(0) , channels(0) { size_t bufferSize = 524288; // 0x80000 int decoded = decoder->decode(); while (decoded > 0) { // Expand or allocate buffer. Note that realloc may move // memory to other locations. if (!data || bufferSize < size + decoded) { while (bufferSize < size + decoded) bufferSize <<= 1; data = (uint8 *) realloc(data, bufferSize); } if (!data) throw love::Exception("Not enough memory."); // Copy memory into new part of memory. memcpy(data + size, decoder->getBuffer(), decoded); // Overflow check. if (size > std::numeric_limits::max() - decoded) { free(data); throw love::Exception("Not enough memory."); } // Keep this up to date. size += decoded; decoded = decoder->decode(); } // Shrink buffer if necessary. if (data && bufferSize > size) data = (uint8 *) realloc(data, size); channels = decoder->getChannels(); bitDepth = decoder->getBitDepth(); sampleRate = decoder->getSampleRate(); } SoundData::SoundData(int samples, int sampleRate, int bitDepth, int channels) : data(0) , size(0) , sampleRate(0) , bitDepth(0) , channels(0) { load(samples, sampleRate, bitDepth, channels); } SoundData::SoundData(void *d, int samples, int sampleRate, int bitDepth, int channels) : data(0) , size(0) , sampleRate(0) , bitDepth(0) , channels(0) { load(samples, sampleRate, bitDepth, channels, d); } SoundData::~SoundData() { if (data != 0) free(data); } void SoundData::load(int samples, int sampleRate, int bitDepth, int channels, void *newData) { if (samples <= 0) throw love::Exception("Invalid sample count: %d", samples); if (sampleRate <= 0) throw love::Exception("Invalid sample rate: %d", sampleRate); if (bitDepth <= 0) throw love::Exception("Invalid bit depth: %d", bitDepth); if (channels <= 0) throw love::Exception("Invalid channel count: %d", channels); if (data != 0) { free(data); data = 0; } size = samples * (bitDepth / 8) * channels; this->sampleRate = sampleRate; this->bitDepth = bitDepth; this->channels = channels; double realsize = samples; realsize *= (bitDepth / 8) * channels; if (realsize > std::numeric_limits::max()) throw love::Exception("Data is too big!"); data = (uint8 *) malloc(size); if (!data) throw love::Exception("Not enough memory."); if (newData) memcpy(data, newData, size); else memset(data, bitDepth == 8 ? 128 : 0, size); } void *SoundData::getData() const { return (void *)data; } size_t SoundData::getSize() const { return size; } int SoundData::getChannels() const { return channels; } int SoundData::getBitDepth() const { return bitDepth; } int SoundData::getSampleRate() const { return sampleRate; } int SoundData::getSampleCount() const { return (size/channels)/(bitDepth/8); } float SoundData::getDuration() const { return float(size) / (channels*sampleRate*bitDepth/8); } void SoundData::setSample(int i, float sample) { // Check range. if (i < 0 || (size_t) i >= size/(bitDepth/8)) throw love::Exception("Attempt to set out-of-range sample!"); if (bitDepth == 16) { // 16-bit sample values are signed. int16 *s = (int16 *) data; s[i] = (int16) (sample * (float) LOVE_INT16_MAX); } else { // 8-bit sample values are unsigned internally. data[i] = (uint8) ((sample * 127.0f) + 128.0f); } } float SoundData::getSample(int i) const { // Check range. if (i < 0 || (size_t) i >= size/(bitDepth/8)) throw love::Exception("Attempt to get out-of-range sample!"); if (bitDepth == 16) { // 16-bit sample values are signed. int16 *s = (int16 *) data; return (float) s[i] / (float) LOVE_INT16_MAX; } else { // 8-bit sample values are unsigned internally. return ((float) data[i] - 128.0f) / 127.0f; } } } // sound } // love love-0.9.1/src/modules/sound/wrap_Sound.cpp0000644000000000000000000000565512316602166020716 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Sound.h" // Implementations. #include "lullaby/Sound.h" namespace love { namespace sound { static Sound *instance = 0; int w_newSoundData(lua_State *L) { SoundData *t = 0; if (lua_isnumber(L, 1)) { int samples = luaL_checkint(L, 1); int sampleRate = luaL_optint(L, 2, Decoder::DEFAULT_SAMPLE_RATE); int bitDepth = luaL_optint(L, 3, Decoder::DEFAULT_BIT_DEPTH); int channels = luaL_optint(L, 4, Decoder::DEFAULT_CHANNELS); EXCEPT_GUARD(t = instance->newSoundData(samples, sampleRate, bitDepth, channels);) } // Must be string or decoder. else { // Convert to Decoder, if necessary. if (!luax_istype(L, 1, SOUND_DECODER_T)) { w_newDecoder(L); lua_replace(L, 1); } EXCEPT_GUARD(t = instance->newSoundData(luax_checkdecoder(L, 1));) } luax_pushtype(L, "SoundData", SOUND_SOUND_DATA_T, t); return 1; } int w_newDecoder(lua_State *L) { // Convert to FileData, if necessary. if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T)) luax_convobj(L, 1, "filesystem", "newFileData"); love::filesystem::FileData *data = luax_checktype(L, 1, "FileData", FILESYSTEM_FILE_DATA_T); int bufferSize = luaL_optint(L, 2, Decoder::DEFAULT_BUFFER_SIZE); Decoder *t = 0; EXCEPT_GUARD(t = instance->newDecoder(data, bufferSize);) if (t == 0) return luaL_error(L, "Extension \"%s\" not supported.", data->getExtension().c_str()); luax_pushtype(L, "Decoder", SOUND_DECODER_T, t); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "newSoundData", w_newSoundData }, { "newDecoder", w_newDecoder }, { 0, 0 } }; static const lua_CFunction types[] = { luaopen_sounddata, luaopen_decoder, 0 }; extern "C" int luaopen_love_sound(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new lullaby::Sound();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "sound"; w.flags = MODULE_SOUND_T; w.functions = functions; w.types = types; return luax_register_module(L, w); } } // sound } // love love-0.9.1/src/modules/sound/Decoder.h0000644000000000000000000000740612316602166017603 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_DECODER_H #define LOVE_SOUND_DECODER_H // LOVE #include "common/Object.h" namespace love { namespace sound { /** * Decoder objects are responsible for decoding audio files. They maintain * an interal buffer into which they write raw decoded audio data. **/ class Decoder : public Object { public: /** * Indicates how many bytes of raw data should be generated at each * call to Decode. **/ static const int DEFAULT_BUFFER_SIZE = 2048; /** * Indicates the quality of the sound. **/ static const int DEFAULT_SAMPLE_RATE = 44100; /** * Default is stereo. **/ static const int DEFAULT_CHANNELS = 2; /** * 16 bit audio is the default. **/ static const int DEFAULT_BIT_DEPTH = 16; /** * Creates a deep of itself. The sound stream can (and should) be * rewound, and does not have to be at the same place. * @return A new Decoder object. **/ virtual Decoder *clone() = 0; /** * Destructor. Should free internal buffer. **/ virtual ~Decoder() {} /** * Decodes the next chunk of the music stream, this will usually be * bufferSize amount of bytes, unless EOF occurs. Zero or negative values * indicate EOF or errors. * @return The number of bytes actually decoded. **/ virtual int decode() = 0; /** * Gets the size of the buffer (NOT the size of the entire stream). * @return The size of the buffer. **/ virtual int getSize() const = 0; /** * Gets a pointer to the actual data. The contents of this buffer will * change with each call to decode, so the client must copy the data. * @return A buffer to raw sound data. **/ virtual void *getBuffer() const = 0; /** * Seeks to the specified position, if possible. * @param s The position in the stream in seconds. * @return True if success, false on fail/unsupported. **/ virtual bool seek(float s) = 0; /** * Rewinds the stream to the start. * @return True if success, false on fail/unsupported. **/ virtual bool rewind() = 0; /** * Checks whether a stream is seekable. * @return True if seekable, false otherwise. **/ virtual bool isSeekable() = 0; /** * Checks whether a stream has more data to decode or not. Use * rewind to start the stream again. * @return False if there is more data, true on EOF. **/ virtual bool isFinished() = 0; /** * Gets the number of channels in a stream. Supported values are 1 (mono) or 2 (stereo). * @return Either 1 for mono, 2 for stereo, or 0 on errors. **/ virtual int getChannels() const = 0; /** * Gets the number of bits per sample. Supported values are 8 or 16. * @return Either 8, 16, or 0 if unsupported. **/ virtual int getBitDepth() const = 0; /** * Gets the sample rate for the Decoder, that is, samples per second. * @return The sample rate, eg. 44100. **/ virtual int getSampleRate() const = 0; }; // Decoder } // sound } // love #endif // LOVE_SOUND_DECODER_H love-0.9.1/src/modules/sound/wrap_SoundData.cpp0000644000000000000000000000552412316602166021503 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_SoundData.h" #include "common/wrap_Data.h" namespace love { namespace sound { SoundData *luax_checksounddata(lua_State *L, int idx) { return luax_checktype(L, idx, "SoundData", SOUND_SOUND_DATA_T); } int w_SoundData_getChannels(lua_State *L) { SoundData *t = luax_checksounddata(L, 1); lua_pushinteger(L, t->getChannels()); return 1; } int w_SoundData_getBitDepth(lua_State *L) { SoundData *t = luax_checksounddata(L, 1); lua_pushinteger(L, t->getBitDepth()); return 1; } int w_SoundData_getSampleRate(lua_State *L) { SoundData *t = luax_checksounddata(L, 1); lua_pushinteger(L, t->getSampleRate()); return 1; } int w_SoundData_getSampleCount(lua_State *L) { SoundData *t = luax_checksounddata(L, 1); lua_pushinteger(L, t->getSampleCount()); return 1; } int w_SoundData_getDuration(lua_State *L) { SoundData *t = luax_checksounddata(L, 1); lua_pushnumber(L, t->getDuration()); return 1; } int w_SoundData_setSample(lua_State *L) { SoundData *sd = luax_checksounddata(L, 1); int i = (int) luaL_checkinteger(L, 2); float sample = (float) luaL_checknumber(L, 3); EXCEPT_GUARD(sd->setSample(i, sample);) return 0; } int w_SoundData_getSample(lua_State *L) { SoundData *sd = luax_checksounddata(L, 1); int i = (int) luaL_checkinteger(L, 2); EXCEPT_GUARD(lua_pushnumber(L, sd->getSample(i));) return 1; } static const luaL_Reg functions[] = { // Data { "getString", w_Data_getString }, { "getPointer", w_Data_getPointer }, { "getSize", w_Data_getSize }, { "getChannels", w_SoundData_getChannels }, { "getBitDepth", w_SoundData_getBitDepth }, { "getSampleRate", w_SoundData_getSampleRate }, { "getSampleCount", w_SoundData_getSampleCount }, { "getDuration", w_SoundData_getDuration }, { "setSample", w_SoundData_setSample }, { "getSample", w_SoundData_getSample }, { 0, 0 } }; extern "C" int luaopen_sounddata(lua_State *L) { return luax_register_type(L, "SoundData", functions); } } // sound } // love love-0.9.1/src/modules/sound/wrap_Sound.h0000644000000000000000000000244612316602166020356 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_WRAP_SOUND_H #define LOVE_SOUND_WRAP_SOUND_H // LOVE #include "common/config.h" #include "Sound.h" #include "wrap_SoundData.h" #include "wrap_Decoder.h" namespace love { namespace sound { int w_newSoundData(lua_State *L); int w_newDecoder(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_sound(lua_State *L); } // sound } // love #endif // LOVE_SOUND_WRAP_SOUND_H love-0.9.1/src/modules/sound/wrap_Decoder.cpp0000644000000000000000000000344212316602166021163 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Decoder.h" namespace love { namespace sound { Decoder *luax_checkdecoder(lua_State *L, int idx) { return luax_checktype(L, idx, "Decoder", SOUND_DECODER_T); } int w_Decoder_getChannels(lua_State *L) { Decoder *t = luax_checkdecoder(L, 1); lua_pushinteger(L, t->getChannels()); return 1; } int w_Decoder_getBitDepth(lua_State *L) { Decoder *t = luax_checkdecoder(L, 1); lua_pushinteger(L, t->getBitDepth()); return 1; } int w_Decoder_getSampleRate(lua_State *L) { Decoder *t = luax_checkdecoder(L, 1); lua_pushinteger(L, t->getSampleRate()); return 1; } static const luaL_Reg functions[] = { { "getChannels", w_Decoder_getChannels }, { "getBitDepth", w_Decoder_getBitDepth }, { "getSampleRate", w_Decoder_getSampleRate }, { 0, 0 } }; extern "C" int luaopen_decoder(lua_State *L) { return luax_register_type(L, "Decoder", functions); } } // sound } // love love-0.9.1/src/modules/sound/Sound.h0000644000000000000000000000472712316602166017331 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_SOUND_H #define LOVE_SOUND_SOUND_H // LOVE #include "common/Module.h" #include "filesystem/File.h" #include "SoundData.h" #include "Decoder.h" namespace love { namespace sound { /** * The Sound module is responsible for decoding sound data. It is * not responsible for playing it. **/ class Sound : public Module { public: /** * Destructor. **/ virtual ~Sound(); /** * Creates new SoundData from a decoder. Fully expands the * encoded sound data into raw sound data. Not recommended * on large (long-duration) files. * @param decoder The file to decode the data from. * @return A SoundData object, or zero if the file type couldn't be handled. **/ SoundData *newSoundData(Decoder *decoder); /** * Creates a new SoundData with the specified number of samples and format. * @param samples The number of samples. * @param sampleRate Number of samples per second. * @param bitDepth Bits per sample (8 or 16). * @param channels Either 1 for mono, or 2 for stereo. * @return A new SoundData object, or zero in case of errors. **/ SoundData *newSoundData(int samples, int sampleRate, int bitDepth, int channels); /** * Attempts to find a decoder for the encoded sound data in the * specified file. * @param file The file with encoded sound data. * @param bufferSize The size of each decoded chunk. * @return A Decoder object on success, or zero if no decoder could be found. **/ virtual Decoder *newDecoder(filesystem::FileData *file, int bufferSize) = 0; }; // Sound } // sound } // love #endif // LOVE_SOUND_SOUND_H love-0.9.1/src/modules/sound/wrap_Decoder.h0000644000000000000000000000253012316602166020625 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_SOUND_WRAP_DECODER_H #define LOVE_SOUND_WRAP_DECODER_H // LOVE #include "common/runtime.h" #include "Decoder.h" namespace love { namespace sound { Decoder *luax_checkdecoder(lua_State *L, int idx); int w_Decoder_getChannels(lua_State *L); int w_Decoder_getBitDepth(lua_State *L); int w_Decoder_getSampleRate(lua_State *L); extern "C" int luaopen_decoder(lua_State *L); } // sound } // love #endif // LOVE_SOUND_WRAP_DECODER_H love-0.9.1/src/modules/sound/Sound.cpp0000644000000000000000000000236212316602166017655 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Sound.h" namespace love { namespace sound { Sound::~Sound() { } SoundData *Sound::newSoundData(Decoder *decoder) { return new SoundData(decoder); } SoundData *Sound::newSoundData(int samples, int sampleRate, int bitDepth, int channels) { return new SoundData(samples, sampleRate, bitDepth, channels); } } // sound } // love love-0.9.1/src/modules/physics/0000755000000000000000000000000012316602463016410 5ustar00rootroot00000000000000love-0.9.1/src/modules/physics/Joint.h0000644000000000000000000000317612316602166017653 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_JOINT_H #define LOVE_PHYSICS_JOINT_H // LOVE #include "common/Object.h" #include "common/StringMap.h" namespace love { namespace physics { class Joint : public Object { public: enum Type { JOINT_INVALID, JOINT_DISTANCE, JOINT_REVOLUTE, JOINT_PRISMATIC, JOINT_MOUSE, JOINT_PULLEY, JOINT_GEAR, JOINT_FRICTION, JOINT_WELD, JOINT_WHEEL, JOINT_ROPE, JOINT_MOTOR, JOINT_MAX_ENUM }; virtual ~Joint(); static bool getConstant(const char *in, Type &out); static bool getConstant(Type in, const char *&out); private: static StringMap::Entry typeEntries[]; static StringMap types; }; } // physics } // love #endif // LOVE_PHYSICS_JOINT_H love-0.9.1/src/modules/physics/box2d/0000755000000000000000000000000012316602463017426 5ustar00rootroot00000000000000love-0.9.1/src/modules/physics/box2d/wrap_EdgeShape.h0000644000000000000000000000254612316602166022464 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_EDGE_SHAPE_H #define LOVE_PHYSICS_BOX2D_WRAP_EDGE_SHAPE_H // LOVE #include "common/runtime.h" #include "wrap_Shape.h" #include "EdgeShape.h" namespace love { namespace physics { namespace box2d { EdgeShape *luax_checkedgeshape(lua_State *L, int idx); int w_EdgeShape_getPoints(lua_State *L); extern "C" int luaopen_edgeshape(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_EDGE_SHAPE_H love-0.9.1/src/modules/physics/box2d/EdgeShape.cpp0000644000000000000000000000276512316602166021771 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "EdgeShape.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" #include "common/Memoizer.h" namespace love { namespace physics { namespace box2d { EdgeShape::EdgeShape(b2EdgeShape *e, bool own) : Shape(e, own) { } EdgeShape::~EdgeShape() { } int EdgeShape::getPoints(lua_State *L) { b2EdgeShape *e = (b2EdgeShape *)shape; b2Vec2 v1 = Physics::scaleUp(e->m_vertex1); b2Vec2 v2 = Physics::scaleUp(e->m_vertex2); lua_pushnumber(L, v1.x); lua_pushnumber(L, v1.y); lua_pushnumber(L, v2.x); lua_pushnumber(L, v2.y); return 4; } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/Joint.h0000644000000000000000000000605612316602166020671 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_JOINT_H #define LOVE_PHYSICS_BOX2D_JOINT_H // LOVE #include "common/runtime.h" #include "physics/Joint.h" // Box2D #include namespace love { namespace physics { namespace box2d { // Forward declarations. class Body; class World; /** * A Joint acts as positioning constraints on Bodies. * A Joint can be used to prevent Bodies from going to * far apart, or coming too close together. **/ class Joint : public love::physics::Joint { public: friend class GearJoint; /** * This constructor will connect one end of the joint to body1, * and the other one to the default ground body. * * This constructor is mainly used by MouseJoint. **/ Joint(Body *body1); /** * Create a joint between body1 and body2. **/ Joint(Body *body1, Body *body2); virtual ~Joint(); /** * Returns true if the joint is active in a Box2D world. **/ bool isValid() const; /** * Gets the type of joint. **/ Type getType() const; /** * Gets the anchor positions of the Joint in world * coordinates. This is useful for debugdrawing the joint. **/ int getAnchors(lua_State *L); /** * Gets the reaction force on body2 at the joint anchor. **/ int getReactionForce(lua_State *L); /** * Gets the reaction torque on body2. **/ float getReactionTorque(float dt); bool isActive() const; bool getCollideConnected() const; /** * Joints require pointers to a Box2D joint objects at * different polymorphic levels, which is why these function * were created. **/ /** * Destroys the joint. This function was created just to * get some cinsistency. **/ void destroyJoint(bool implicit = false); protected: /** * Creates a Joint, and ensures that the parent class * gets a copy of the pointer. **/ b2Joint *createJoint(b2JointDef *def); World *world; private: // A Joint must be destroyed *before* the bodies it acts upon, // and the world they reside in. We therefore need refs // parents and associations to prevent wrong destruction order. Body *body1, * body2; // The Box2D joint object. b2Joint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_World.h0000644000000000000000000000414512316602166021723 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_WORLD_H #define LOVE_PHYSICS_BOX2D_WRAP_WORLD_H // LOVE #include "common/runtime.h" #include "common/Exception.h" #include "World.h" #include "wrap_Physics.h" namespace love { namespace physics { namespace box2d { World *luax_checkworld(lua_State *L, int idx); int w_World_update(lua_State *L); int w_World_setCallbacks(lua_State *L); int w_World_getCallbacks(lua_State *L); int w_World_setContactFilter(lua_State *L); int w_World_getContactFilter(lua_State *L); int w_World_setGravity(lua_State *L); int w_World_getGravity(lua_State *L); int w_World_translateOrigin(lua_State *L); int w_World_setSleepingAllowed(lua_State *L); int w_World_isSleepingAllowed(lua_State *L); int w_World_isLocked(lua_State *L); int w_World_getBodyCount(lua_State *L); int w_World_getJointCount(lua_State *L); int w_World_getContactCount(lua_State *L); int w_World_getBodyList(lua_State *L); int w_World_getJointList(lua_State *L); int w_World_getContactList(lua_State *L); int w_World_queryBoundingBox(lua_State *L); int w_World_rayCast(lua_State *L); int w_World_destroy(lua_State *L); extern "C" int luaopen_world(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_WORLD_H love-0.9.1/src/modules/physics/box2d/wrap_Fixture.cpp0000644000000000000000000001556012316602166022620 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Fixture.h" #include "common/StringMap.h" namespace love { namespace physics { namespace box2d { Fixture *luax_checkfixture(lua_State *L, int idx) { Fixture *f = luax_checktype(L, idx, "Fixture", PHYSICS_FIXTURE_T); if (!f->isValid()) luaL_error(L, "Attempt to use destroyed fixture."); return f; } int w_Fixture_getType(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); const char *type = ""; Shape::getConstant(t->getType(), type); lua_pushstring(L, type); return 1; } int w_Fixture_setFriction(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setFriction(arg1); return 0; } int w_Fixture_setRestitution(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setRestitution(arg1); return 0; } int w_Fixture_setDensity(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setDensity(arg1);) return 0; } int w_Fixture_setSensor(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); bool arg1 = luax_toboolean(L, 2); t->setSensor(arg1); return 0; } int w_Fixture_getFriction(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_pushnumber(L, t->getFriction()); return 1; } int w_Fixture_getRestitution(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_pushnumber(L, t->getRestitution()); return 1; } int w_Fixture_getDensity(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_pushnumber(L, t->getDensity()); return 1; } int w_Fixture_isSensor(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); luax_pushboolean(L, t->isSensor()); return 1; } int w_Fixture_getBody(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); Body *body = t->getBody(); if (body == 0) return 0; body->retain(); luax_pushtype(L, "Body", PHYSICS_BODY_T, body); return 1; } int w_Fixture_getShape(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); Shape *shape = t->getShape(); if (shape == 0) return 0; switch (shape->getType()) { case Shape::SHAPE_EDGE: luax_pushtype(L, "EdgeShape", PHYSICS_EDGE_SHAPE_T, shape); break; case Shape::SHAPE_CHAIN: luax_pushtype(L, "ChainShape", PHYSICS_CHAIN_SHAPE_T, shape); break; case Shape::SHAPE_CIRCLE: luax_pushtype(L, "CircleShape", PHYSICS_CIRCLE_SHAPE_T, shape); break; case Shape::SHAPE_POLYGON: luax_pushtype(L, "PolygonShape", PHYSICS_POLYGON_SHAPE_T, shape); break; default: luax_pushtype(L, "Shape", PHYSICS_SHAPE_T, shape); break; } return 1; } int w_Fixture_testPoint(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); luax_pushboolean(L, t->testPoint(x, y)); return 1; } int w_Fixture_rayCast(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_remove(L, 1); int ret = 0; EXCEPT_GUARD(ret = t->rayCast(L);) return ret; } int w_Fixture_setFilterData(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); int v[3]; v[0] = luaL_checkint(L, 2); v[1] = luaL_checkint(L, 3); v[2] = luaL_checkint(L, 4); t->setFilterData(v); return 0; } int w_Fixture_getFilterData(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); int v[3]; t->getFilterData(v); lua_pushinteger(L, v[0]); lua_pushinteger(L, v[1]); lua_pushinteger(L, v[2]); return 3; } int w_Fixture_setCategory(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_remove(L, 1); return t->setCategory(L); } int w_Fixture_getCategory(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_remove(L, 1); return t->getCategory(L); } int w_Fixture_setMask(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_remove(L, 1); return t->setMask(L); } int w_Fixture_getMask(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_remove(L, 1); return t->getMask(L); } int w_Fixture_setUserData(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_remove(L, 1); return t->setUserData(L); } int w_Fixture_getUserData(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_remove(L, 1); return t->getUserData(L); } int w_Fixture_getBoundingBox(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_remove(L, 1); return t->getBoundingBox(L); } int w_Fixture_getMassData(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); lua_remove(L, 1); return t->getMassData(L); } int w_Fixture_getGroupIndex(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); int i = t->getGroupIndex(); lua_pushinteger(L, i); return 1; } int w_Fixture_setGroupIndex(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); int i = luaL_checkint(L, 2); t->setGroupIndex(i); return 0; } int w_Fixture_destroy(lua_State *L) { Fixture *t = luax_checkfixture(L, 1); EXCEPT_GUARD(t->destroy();) return 0; } static const luaL_Reg functions[] = { { "getType", w_Fixture_getType }, { "setFriction", w_Fixture_setFriction }, { "setRestitution", w_Fixture_setRestitution }, { "setDensity", w_Fixture_setDensity }, { "setSensor", w_Fixture_setSensor }, { "getFriction", w_Fixture_getFriction }, { "getRestitution", w_Fixture_getRestitution }, { "getDensity", w_Fixture_getDensity }, { "getBody", w_Fixture_getBody }, { "getShape", w_Fixture_getShape }, { "isSensor", w_Fixture_isSensor }, { "testPoint", w_Fixture_testPoint }, { "rayCast", w_Fixture_rayCast }, { "setFilterData", w_Fixture_setFilterData }, { "getFilterData", w_Fixture_getFilterData }, { "setCategory", w_Fixture_setCategory }, { "getCategory", w_Fixture_getCategory }, { "setMask", w_Fixture_setMask }, { "getMask", w_Fixture_getMask }, { "setUserData", w_Fixture_setUserData }, { "getUserData", w_Fixture_getUserData }, { "getBoundingBox", w_Fixture_getBoundingBox }, { "getMassData", w_Fixture_getMassData }, { "getGroupIndex", w_Fixture_getGroupIndex }, { "setGroupIndex", w_Fixture_setGroupIndex }, { "destroy", w_Fixture_destroy }, { 0, 0 } }; extern "C" int luaopen_fixture(lua_State *L) { return luax_register_type(L, "Fixture", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/World.cpp0000644000000000000000000003030312316602166021220 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "World.h" #include "Fixture.h" #include "Shape.h" #include "Contact.h" #include "Physics.h" #include "common/Memoizer.h" #include "common/Reference.h" namespace love { namespace physics { namespace box2d { World::ContactCallback::ContactCallback() : ref(0) { } World::ContactCallback::~ContactCallback() { if (ref != 0) delete ref; } void World::ContactCallback::process(b2Contact *contact, const b2ContactImpulse *impulse) { // Process contacts. if (ref != 0) { lua_State *L = ref->getL(); ref->push(); // Push first fixture. { Fixture *a = (Fixture *)Memoizer::find(contact->GetFixtureA()); if (a != 0) { a->retain(); luax_pushtype(L, "Fixture", PHYSICS_FIXTURE_T, a); } else throw love::Exception("A fixture has escaped Memoizer!"); } // Push second fixture. { Fixture *b = (Fixture *)Memoizer::find(contact->GetFixtureB()); if (b != 0) { b->retain(); luax_pushtype(L, "Fixture", PHYSICS_FIXTURE_T, b); } else throw love::Exception("A fixture has escaped Memoizer!"); } Contact *cobj = (Contact *)Memoizer::find(contact); if (!cobj) cobj = new Contact(contact); else cobj->retain(); luax_pushtype(L, "Contact", (PHYSICS_CONTACT_T), cobj); int args = 3; if (impulse) { for (int c = 0; c < impulse->count; c++) { lua_pushnumber(L, Physics::scaleUp(impulse->normalImpulses[c])); lua_pushnumber(L, Physics::scaleUp(impulse->tangentImpulses[c])); args += 2; } } lua_call(L, args, 0); } } World::ContactFilter::ContactFilter() : ref(0) { } World::ContactFilter::~ContactFilter() { if (ref != 0) delete ref; } bool World::ContactFilter::process(Fixture *a, Fixture *b) { // Handle masks, reimplemented from the manual int filterA[3], filterB[3]; // [0] categoryBits // [1] maskBits // [2] groupIndex a->getFilterData(filterA); b->getFilterData(filterB); if (filterA[2] != 0 && // 0 is the default group, so this does not count filterA[2] == filterB[2]) // if they are in the same group return filterA[2] > 0; // Negative indexes mean you don't collide if ((filterA[1] & filterB[0]) == 0 || (filterB[1] & filterA[0]) == 0) return false; // A and B aren't set to collide if (ref != 0) { lua_State *L = ref->getL(); ref->push(); luax_pushtype(L, "Fixture", PHYSICS_FIXTURE_T, a); luax_pushtype(L, "Fixture", PHYSICS_FIXTURE_T, b); lua_call(L, 2, 1); return luax_toboolean(L, -1); } return true; } World::QueryCallback::QueryCallback() : ref(0) { } World::QueryCallback::~QueryCallback() { if (ref != 0) delete ref; } bool World::QueryCallback::ReportFixture(b2Fixture *fixture) { if (ref != 0) { lua_State *L = ref->getL(); ref->push(); Fixture *f = (Fixture *)Memoizer::find(fixture); if (!f) throw love::Exception("A fixture has escaped Memoizer!"); f->retain(); luax_pushtype(L, "Fixture", PHYSICS_FIXTURE_T, f); lua_call(L, 1, 1); return luax_toboolean(L, -1); } return true; } World::RayCastCallback::RayCastCallback() : ref(0) { } World::RayCastCallback::~RayCastCallback() { if (ref != 0) delete ref; } float32 World::RayCastCallback::ReportFixture(b2Fixture *fixture, const b2Vec2 &point, const b2Vec2 &normal, float32 fraction) { if (ref != 0) { lua_State *L = ref->getL(); ref->push(); Fixture *f = (Fixture *)Memoizer::find(fixture); if (!f) throw love::Exception("A fixture has escaped Memoizer!"); f->retain(); luax_pushtype(L, "Fixture", PHYSICS_FIXTURE_T, f); b2Vec2 scaledPoint = Physics::scaleUp(point); lua_pushnumber(L, scaledPoint.x); lua_pushnumber(L, scaledPoint.y); lua_pushnumber(L, normal.x); lua_pushnumber(L, normal.y); lua_pushnumber(L, fraction); lua_call(L, 6, 1); if (!lua_isnumber(L, -1)) luaL_error(L, "Raycast callback didn't return a number!"); return (float32)lua_tonumber(L, -1); } return 0; } void World::SayGoodbye(b2Fixture *fixture) { Fixture *f = (Fixture *)Memoizer::find(fixture); // Hint implicit destruction with true. if (f) f->destroy(true); } void World::SayGoodbye(b2Joint *joint) { Joint *j = (Joint *)Memoizer::find(joint); // Hint implicit destruction with true. if (j) j->destroyJoint(true); } World::World() : world(NULL), destructWorld(false) { world = new b2World(b2Vec2(0,0)); this->retain(); // The Box2D world holds a reference to this World. world->SetAllowSleeping(true); world->SetContactListener(this); world->SetContactFilter(this); world->SetDestructionListener(this); b2BodyDef def; groundBody = world->CreateBody(&def); Memoizer::add(world, this); } World::World(b2Vec2 gravity, bool sleep) : world(NULL), destructWorld(false) { world = new b2World(Physics::scaleDown(gravity)); // The Box2D world holds a reference to this World. this->retain(); world->SetAllowSleeping(sleep); world->SetContactListener(this); world->SetContactFilter(this); world->SetDestructionListener(this); b2BodyDef def; groundBody = world->CreateBody(&def); Memoizer::add(world, this); } World::~World() { } void World::update(float dt) { world->Step(dt, 8, 6); // Destroy all objects marked during the time step. for (auto i = destructBodies.begin(); i < destructBodies.end(); i++) { Body *b = *i; if (b->body != 0) b->destroy(); // Release for reference in vector. b->release(); } for (auto i = destructFixtures.begin(); i < destructFixtures.end(); i++) { Fixture *f = *i; if (f->isValid()) f->destroy(); // Release for reference in vector. f->release(); } for (auto i = destructJoints.begin(); i < destructJoints.end(); i++) { Joint *j = *i; if (j->isValid()) j->destroyJoint(); // Release for reference in vector. j->release(); } destructBodies.clear(); destructFixtures.clear(); destructJoints.clear(); if (destructWorld) destroy(); } void World::BeginContact(b2Contact *contact) { begin.process(contact); } void World::EndContact(b2Contact *contact) { end.process(contact); // Letting the Contact know that the b2Contact will be destroyed any second. Contact *c = (Contact *)Memoizer::find(contact); if (c != NULL) c->invalidate(); } void World::PreSolve(b2Contact *contact, const b2Manifold *oldManifold) { B2_NOT_USED(oldManifold); // not sure what to do with this presolve.process(contact); } void World::PostSolve(b2Contact *contact, const b2ContactImpulse *impulse) { postsolve.process(contact, impulse); } bool World::ShouldCollide(b2Fixture *fixtureA, b2Fixture *fixtureB) { // Fixtures should be memoized, if we created them Fixture *a = (Fixture *)Memoizer::find(fixtureA); if (!a) throw love::Exception("A fixture has escaped Memoizer!"); a->retain(); Fixture *b = (Fixture *)Memoizer::find(fixtureB); if (!b) throw love::Exception("A fixture has escaped Memoizer!"); b->retain(); return filter.process(a, b); } bool World::isValid() const { return world != 0; } int World::setCallbacks(lua_State *L) { int n = lua_gettop(L); luax_assert_argc(L, 1, 4); switch (n) { case 4: if (postsolve.ref) delete postsolve.ref; postsolve.ref = luax_refif(L, LUA_TFUNCTION); case 3: if (presolve.ref) delete presolve.ref; presolve.ref = luax_refif(L, LUA_TFUNCTION); case 2: if (end.ref) delete end.ref; end.ref = luax_refif(L, LUA_TFUNCTION); case 1: if (begin.ref) delete begin.ref; begin.ref = luax_refif(L, LUA_TFUNCTION); } return 0; } int World::getCallbacks(lua_State *L) { begin.ref ? begin.ref->push() : lua_pushnil(L); end.ref ? end.ref->push() : lua_pushnil(L); presolve.ref ? presolve.ref->push() : lua_pushnil(L); postsolve.ref ? postsolve.ref->push() : lua_pushnil(L); return 4; } int World::setContactFilter(lua_State *L) { luax_assert_argc(L, 1); if (filter.ref) delete filter.ref; filter.ref = luax_refif(L, LUA_TFUNCTION); return 0; } int World::getContactFilter(lua_State *L) { filter.ref ? filter.ref->push() : lua_pushnil(L); return 1; } void World::setGravity(float x, float y) { world->SetGravity(Physics::scaleDown(b2Vec2(x, y))); } int World::getGravity(lua_State *L) { b2Vec2 v = Physics::scaleUp(world->GetGravity()); lua_pushnumber(L, v.x); lua_pushnumber(L, v.y); return 2; } void World::translateOrigin(float x, float y) { world->ShiftOrigin(Physics::scaleDown(b2Vec2(x, y))); } void World::setSleepingAllowed(bool allow) { world->SetAllowSleeping(allow); } bool World::isSleepingAllowed() const { return world->GetAllowSleeping(); } bool World::isLocked() const { return world->IsLocked(); } int World::getBodyCount() const { return world->GetBodyCount()-1; // ignore the ground body } int World::getJointCount() const { return world->GetJointCount(); } int World::getContactCount() const { return world->GetContactCount(); } int World::getBodyList(lua_State *L) const { lua_newtable(L); b2Body *b = world->GetBodyList(); int i = 1; do { if (!b) break; if (b == groundBody) continue; Body *body = (Body *)Memoizer::find(b); if (!body) throw love::Exception("A body has escaped Memoizer!"); body->retain(); luax_pushtype(L, "Body", PHYSICS_BODY_T, body); lua_rawseti(L, -2, i); i++; } while ((b = b->GetNext())); return 1; } int World::getJointList(lua_State *L) const { lua_newtable(L); b2Joint *j = world->GetJointList(); int i = 1; do { if (!j) break; Joint *joint = (Joint *)Memoizer::find(j); if (!joint) throw love::Exception("A joint has escaped Memoizer!"); joint->retain(); luax_pushtype(L, "Joint", PHYSICS_JOINT_T, joint); lua_rawseti(L, -2, i); i++; } while ((j = j->GetNext())); return 1; } int World::getContactList(lua_State *L) const { lua_newtable(L); b2Contact *c = world->GetContactList(); int i = 1; do { if (!c) break; Contact *contact = (Contact *)Memoizer::find(c); if (!contact) contact = new Contact(c); else contact->retain(); luax_pushtype(L, "Contact", PHYSICS_CONTACT_T, contact); lua_rawseti(L, -2, i); i++; } while ((c = c->GetNext())); return 1; } b2Body *World::getGroundBody() const { return groundBody; } int World::queryBoundingBox(lua_State *L) { luax_assert_argc(L, 5); b2AABB box; float lx = (float)luaL_checknumber(L, 1); float ly = (float)luaL_checknumber(L, 2); float ux = (float)luaL_checknumber(L, 3); float uy = (float)luaL_checknumber(L, 4); box.lowerBound = Physics::scaleDown(b2Vec2(lx, ly)); box.upperBound = Physics::scaleDown(b2Vec2(ux, uy)); if (query.ref) delete query.ref; query.ref = luax_refif(L, LUA_TFUNCTION); world->QueryAABB(&query, box); return 0; } int World::rayCast(lua_State *L) { luax_assert_argc(L, 5); float x1 = (float)luaL_checknumber(L, 1); float y1 = (float)luaL_checknumber(L, 2); float x2 = (float)luaL_checknumber(L, 3); float y2 = (float)luaL_checknumber(L, 4); b2Vec2 v1 = Physics::scaleDown(b2Vec2(x1, y1)); b2Vec2 v2 = Physics::scaleDown(b2Vec2(x2, y2)); if (raycast.ref) delete raycast.ref; raycast.ref = luax_refif(L, LUA_TFUNCTION); world->RayCast(&raycast, v1, v2); return 0; } void World::destroy() { if (world->IsLocked()) { destructWorld = true; return; } // Cleaning up the world. b2Body *b = world->GetBodyList(); while (b) { b2Body *t = b; b = b->GetNext(); if (t == groundBody) continue; Body *body = (Body *)Memoizer::find(t); if (!body) throw love::Exception("A body has escaped Memoizer!"); body->destroy(); } world->DestroyBody(groundBody); Memoizer::remove(world); delete world; world = 0; // Box2D world destroyed. Release its reference. this->release(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_DistanceJoint.cpp0000644000000000000000000000576612316602166023737 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_DistanceJoint.h" namespace love { namespace physics { namespace box2d { DistanceJoint *luax_checkdistancejoint(lua_State *L, int idx) { DistanceJoint *j = luax_checktype(L, idx, "DistanceJoint", PHYSICS_DISTANCE_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_DistanceJoint_setLength(lua_State *L) { DistanceJoint *t = luax_checkdistancejoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setLength(arg1); return 0; } int w_DistanceJoint_getLength(lua_State *L) { DistanceJoint *t = luax_checkdistancejoint(L, 1); lua_pushnumber(L, t->getLength()); return 1; } int w_DistanceJoint_setFrequency(lua_State *L) { DistanceJoint *t = luax_checkdistancejoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setFrequency(arg1); return 0; } int w_DistanceJoint_getFrequency(lua_State *L) { DistanceJoint *t = luax_checkdistancejoint(L, 1); lua_pushnumber(L, t->getFrequency()); return 1; } int w_DistanceJoint_setDampingRatio(lua_State *L) { DistanceJoint *t = luax_checkdistancejoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setDampingRatio(arg1); return 0; } int w_DistanceJoint_getDampingRatio(lua_State *L) { DistanceJoint *t = luax_checkdistancejoint(L, 1); lua_pushnumber(L, t->getDampingRatio()); return 1; } static const luaL_Reg functions[] = { { "setLength", w_DistanceJoint_setLength }, { "getLength", w_DistanceJoint_getLength }, { "setFrequency", w_DistanceJoint_setFrequency }, { "getFrequency", w_DistanceJoint_getFrequency }, { "setDampingRatio", w_DistanceJoint_setDampingRatio }, { "getDampingRatio", w_DistanceJoint_getDampingRatio }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_distancejoint(lua_State *L) { return luax_register_type(L, "DistanceJoint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/DistanceJoint.cpp0000644000000000000000000000376512316602166022703 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "DistanceJoint.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { DistanceJoint::DistanceJoint(Body *body1, Body *body2, float x1, float y1, float x2, float y2, bool collideConnected) : Joint(body1, body2) , joint(NULL) { b2DistanceJointDef def; def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(x1,y1)), Physics::scaleDown(b2Vec2(x2,y2))); def.collideConnected = collideConnected; joint = (b2DistanceJoint *)createJoint(&def); } DistanceJoint::~DistanceJoint() { } void DistanceJoint::setLength(float length) { joint->SetLength(Physics::scaleDown(length)); } float DistanceJoint::getLength() const { return Physics::scaleUp(joint->GetLength()); } void DistanceJoint::setFrequency(float hz) { joint->SetFrequency(hz); } float DistanceJoint::getFrequency() const { return joint->GetFrequency(); } void DistanceJoint::setDampingRatio(float d) { joint->SetDampingRatio(d); } float DistanceJoint::getDampingRatio() const { return joint->GetDampingRatio(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_FrictionJoint.cpp0000644000000000000000000000515612316602166023753 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_FrictionJoint.h" #include "wrap_Physics.h" namespace love { namespace physics { namespace box2d { FrictionJoint *luax_checkfrictionjoint(lua_State *L, int idx) { FrictionJoint *j = luax_checktype(L, idx, "FrictionJoint", PHYSICS_FRICTION_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_FrictionJoint_setMaxForce(lua_State *L) { FrictionJoint *t = luax_checkfrictionjoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setMaxForce(arg1);) return 0; } int w_FrictionJoint_getMaxForce(lua_State *L) { FrictionJoint *t = luax_checkfrictionjoint(L, 1); lua_pushnumber(L, t->getMaxForce()); return 1; } int w_FrictionJoint_setMaxTorque(lua_State *L) { FrictionJoint *t = luax_checkfrictionjoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setMaxTorque(arg1);) return 0; } int w_FrictionJoint_getMaxTorque(lua_State *L) { FrictionJoint *t = luax_checkfrictionjoint(L, 1); lua_pushnumber(L, t->getMaxTorque()); return 1; } static const luaL_Reg functions[] = { { "setMaxForce", w_FrictionJoint_setMaxForce }, { "getMaxForce", w_FrictionJoint_getMaxForce }, { "setMaxTorque", w_FrictionJoint_setMaxTorque }, { "getMaxTorque", w_FrictionJoint_getMaxTorque }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_frictionjoint(lua_State *L) { return luax_register_type(L, "FrictionJoint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/RopeJoint.h0000644000000000000000000000321612316602166021512 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_ROPE_JOINT_H #define LOVE_PHYSICS_BOX2D_ROPE_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * The RopeJoint enforces a maximum distance between two points * on two bodies. It has no other effect. **/ class RopeJoint : public Joint { public: /** * Creates a RopeJoint connecting body1 to body2. **/ RopeJoint(Body *body1, Body *body2, float x1, float y1, float x2, float y2, float maxLength, bool collideConnected); virtual ~RopeJoint(); /** * Gets the maximum length of the rope. **/ float getMaxLength() const; private: // The Box2D RopeJoint object. b2RopeJoint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_ROPE_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_Shape.cpp0000644000000000000000000000546312316602166022233 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Shape.h" #include "common/StringMap.h" namespace love { namespace physics { namespace box2d { Shape *luax_checkshape(lua_State *L, int idx) { return luax_checktype(L, idx, "Shape", PHYSICS_SHAPE_T); } int w_Shape_getType(lua_State *L) { Shape *t = luax_checkshape(L, 1); const char *type = ""; Shape::getConstant(t->getType(), type); lua_pushstring(L, type); return 1; } int w_Shape_getRadius(lua_State *L) { Shape *t = luax_checkshape(L, 1); float radius = t->getRadius(); lua_pushnumber(L, radius); return 1; } int w_Shape_getChildCount(lua_State *L) { Shape *t = luax_checkshape(L, 1); int childCount = t->getChildCount(); lua_pushinteger(L, childCount); return 1; } int w_Shape_testPoint(lua_State *L) { Shape *t = luax_checkshape(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float r = (float)luaL_checknumber(L, 4); float px = (float)luaL_checknumber(L, 5); float py = (float)luaL_checknumber(L, 6); bool result = t->testPoint(x, y, r, px, py); lua_pushboolean(L, result); return 1; } int w_Shape_rayCast(lua_State *L) { Shape *t = luax_checkshape(L, 1); lua_remove(L, 1); int ret = 0; EXCEPT_GUARD(ret = t->rayCast(L);) return ret; } int w_Shape_computeAABB(lua_State *L) { Shape *t = luax_checkshape(L, 1); lua_remove(L, 1); return t->computeAABB(L); } int w_Shape_computeMass(lua_State *L) { Shape *t = luax_checkshape(L, 1); lua_remove(L, 1); return t->computeMass(L); } static const luaL_Reg functions[] = { { "getType", w_Shape_getType }, { "getRadius", w_Shape_getRadius }, { "getChildCount", w_Shape_getChildCount }, { "testPoint", w_Shape_testPoint }, { "rayCast", w_Shape_rayCast }, { "computeAABB", w_Shape_computeAABB }, { "computeMass", w_Shape_computeMass }, { 0, 0 } }; extern "C" int luaopen_shape(lua_State *L) { return luax_register_type(L, "Shape", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/Physics.cpp0000644000000000000000000002057212316602166021562 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Physics.h" // LOVE #include "common/math.h" #include "wrap_Body.h" namespace love { namespace physics { namespace box2d { int Physics::meter = Physics::DEFAULT_METER; const char *Physics::getName() const { return "love.physics.box2d"; } World *Physics::newWorld(float gx, float gy, bool sleep) { return new World(b2Vec2(gx, gy), sleep); } Body *Physics::newBody(World *world, float x, float y, Body::Type type) { return new Body(world, b2Vec2(x, y), type); } Body *Physics::newBody(World *world, Body::Type type) { return new Body(world, b2Vec2(0, 0), type); } CircleShape *Physics::newCircleShape(float radius) { return newCircleShape(0, 0, radius); } CircleShape *Physics::newCircleShape(float x, float y, float radius) { b2CircleShape *s = new b2CircleShape(); s->m_p = Physics::scaleDown(b2Vec2(x, y)); s->m_radius = Physics::scaleDown(radius); return new CircleShape(s); } PolygonShape *Physics::newRectangleShape(float w, float h) { return newRectangleShape(0, 0, w, h, 0); } PolygonShape *Physics::newRectangleShape(float x, float y, float w, float h) { return newRectangleShape(x, y, w, h, 0); } PolygonShape *Physics::newRectangleShape(float x, float y, float w, float h, float angle) { b2PolygonShape *s = new b2PolygonShape(); s->SetAsBox(Physics::scaleDown(w/2.0f), Physics::scaleDown(h/2.0f), Physics::scaleDown(b2Vec2(x, y)), angle); return new PolygonShape(s); } EdgeShape *Physics::newEdgeShape(float x1, float y1, float x2, float y2) { b2EdgeShape *s = new b2EdgeShape(); s->Set(Physics::scaleDown(b2Vec2(x1, y1)), Physics::scaleDown(b2Vec2(x2, y2))); return new EdgeShape(s); } int Physics::newPolygonShape(lua_State *L) { int argc = lua_gettop(L); if (argc % 2 != 0) return luaL_error(L, "Number of vertex components must be a multiple of two."); // 3 to 8 (b2_maxPolygonVertices) vertices int vcount = argc / 2; if (vcount < 3) return luaL_error(L, "Expected a minimum of 3 vertices, got %d.", vcount); else if (vcount > b2_maxPolygonVertices) return luaL_error(L, "Expected a maximum of %d vertices, got %d.", b2_maxPolygonVertices, vcount); b2PolygonShape *s = new b2PolygonShape(); b2Vec2 vecs[b2_maxPolygonVertices]; for (int i = 0; i < vcount; i++) { float x = (float)luaL_checknumber(L, 1 + i * 2); float y = (float)luaL_checknumber(L, 2 + i * 2); vecs[i] = Physics::scaleDown(b2Vec2(x, y)); } try { s->Set(vecs, vcount); } catch (love::Exception &) { delete s; throw; } PolygonShape *p = new PolygonShape(s); luax_pushtype(L, "PolygonShape", PHYSICS_POLYGON_SHAPE_T, p); return 1; } int Physics::newChainShape(lua_State *L) { int argc = lua_gettop(L)-1; // first argument is looping int vcount = (int)argc/2; b2ChainShape *s = new b2ChainShape(); bool loop = luax_toboolean(L, 1); b2Vec2 *vecs = new b2Vec2[vcount]; for (int i = 0; iCreateLoop(vecs, vcount); else s->CreateChain(vecs, vcount); } catch (love::Exception &) { delete[] vecs; throw; } delete[] vecs; ChainShape *c = new ChainShape(s); luax_pushtype(L, "ChainShape", PHYSICS_CHAIN_SHAPE_T, c); return 1; } DistanceJoint *Physics::newDistanceJoint(Body *body1, Body *body2, float x1, float y1, float x2, float y2, bool collideConnected) { return new DistanceJoint(body1, body2, x1, y1, x2, y2, collideConnected); } MouseJoint *Physics::newMouseJoint(Body *body, float x, float y) { return new MouseJoint(body, x, y); } RevoluteJoint *Physics::newRevoluteJoint(Body *body1, Body *body2, float x, float y, bool collideConnected) { return new RevoluteJoint(body1, body2, x, y, collideConnected); } PrismaticJoint *Physics::newPrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected) { return new PrismaticJoint(body1, body2, xA, yA, xB, yB, ax, ay, collideConnected); } PulleyJoint *Physics::newPulleyJoint(Body *body1, Body *body2, b2Vec2 groundAnchor1, b2Vec2 groundAnchor2, b2Vec2 anchor1, b2Vec2 anchor2, float ratio, bool collideConnected) { return new PulleyJoint(body1, body2, groundAnchor1, groundAnchor2, anchor1, anchor2, ratio, collideConnected); } GearJoint *Physics::newGearJoint(Joint *joint1, Joint *joint2, float ratio, bool collideConnected) { return new GearJoint(joint1, joint2, ratio, collideConnected); } FrictionJoint *Physics::newFrictionJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected) { return new FrictionJoint(body1, body2, xA, yA, xB, yB, collideConnected); } WeldJoint *Physics::newWeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected) { return new WeldJoint(body1, body2, xA, yA, xB, yB, collideConnected); } WheelJoint *Physics::newWheelJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected) { return new WheelJoint(body1, body2, xA, yA, xB, yB, ax, ay, collideConnected); } RopeJoint *Physics::newRopeJoint(Body *body1, Body *body2, float x1, float y1, float x2, float y2, float maxLength, bool collideConnected) { return new RopeJoint(body1, body2, x1, y1, x2, y2, maxLength, collideConnected); } MotorJoint *Physics::newMotorJoint(Body *body1, Body *body2) { return new MotorJoint(body1, body2); } MotorJoint *Physics::newMotorJoint(Body *body1, Body *body2, float correctionFactor) { return new MotorJoint(body1, body2, correctionFactor); } Fixture *Physics::newFixture(Body *body, Shape *shape, float density) { return new Fixture(body, shape, density); } int Physics::getDistance(lua_State *L) { Fixture *fixtureA = luax_checktype(L, 1, "Fixture", PHYSICS_FIXTURE_T); Fixture *fixtureB = luax_checktype(L, 2, "Fixture", PHYSICS_FIXTURE_T); b2DistanceProxy pA, pB; b2DistanceInput i; b2DistanceOutput o; b2SimplexCache c; c.count = 0; EXCEPT_GUARD( pA.Set(fixtureA->fixture->GetShape(), 0); pB.Set(fixtureB->fixture->GetShape(), 0); i.proxyA = pA; i.proxyB = pB; i.transformA = fixtureA->fixture->GetBody()->GetTransform(); i.transformB = fixtureB->fixture->GetBody()->GetTransform(); i.useRadii = true; b2Distance(&o, &c, &i); ) lua_pushnumber(L, Physics::scaleUp(o.distance)); lua_pushnumber(L, Physics::scaleUp(o.pointA.x)); lua_pushnumber(L, Physics::scaleUp(o.pointA.y)); lua_pushnumber(L, Physics::scaleUp(o.pointB.x)); lua_pushnumber(L, Physics::scaleUp(o.pointB.y)); return 5; } void Physics::setMeter(int scale) { if (scale < 1) throw love::Exception("Physics error: invalid meter"); Physics::meter = scale; } int Physics::getMeter() { return meter; } void Physics::scaleDown(float &x, float &y) { x /= (float)meter; y /= (float)meter; } void Physics::scaleUp(float &x, float &y) { x *= (float)meter; y *= (float)meter; } float Physics::scaleDown(float f) { return f/(float)meter; } float Physics::scaleUp(float f) { return f*(float)meter; } b2Vec2 Physics::scaleDown(const b2Vec2 &v) { b2Vec2 t = v; scaleDown(t.x, t.y); return t; } b2Vec2 Physics::scaleUp(const b2Vec2 &v) { b2Vec2 t = v; scaleUp(t.x, t.y); return t; } b2AABB Physics::scaleDown(const b2AABB &aabb) { b2AABB t; t.lowerBound = scaleDown(aabb.lowerBound); t.upperBound = scaleDown(aabb.upperBound); return t; } b2AABB Physics::scaleUp(const b2AABB &aabb) { b2AABB t; t.lowerBound = scaleUp(aabb.lowerBound); t.upperBound = scaleUp(aabb.upperBound); return t; } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/Joint.cpp0000644000000000000000000000641712316602166021225 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Joint.h" // STD #include // LOVE #include "common/Memoizer.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { Joint::Joint(Body *body1) : world(body1->world) , body1(body1) , body2(0) { } Joint::Joint(Body *body1, Body *body2) : world(body1->world) , body1(body1) , body2(body2) { } Joint::~Joint() { } Joint::Type Joint::getType() const { switch (joint->GetType()) { case e_revoluteJoint: return JOINT_REVOLUTE; case e_prismaticJoint: return JOINT_PRISMATIC; case e_distanceJoint: return JOINT_DISTANCE; case e_pulleyJoint: return JOINT_PULLEY; case e_mouseJoint: return JOINT_MOUSE; case e_gearJoint: return JOINT_GEAR; case e_frictionJoint: return JOINT_FRICTION; case e_weldJoint: return JOINT_WELD; case e_wheelJoint: return JOINT_WHEEL; case e_ropeJoint: return JOINT_ROPE; default: return JOINT_INVALID; } } bool Joint::isValid() const { return joint != 0; } int Joint::getAnchors(lua_State *L) { lua_pushnumber(L, Physics::scaleUp(joint->GetAnchorA().x)); lua_pushnumber(L, Physics::scaleUp(joint->GetAnchorA().y)); lua_pushnumber(L, Physics::scaleUp(joint->GetAnchorB().x)); lua_pushnumber(L, Physics::scaleUp(joint->GetAnchorB().y)); return 4; } int Joint::getReactionForce(lua_State *L) { float dt = (float)luaL_checknumber(L, 1); b2Vec2 v = Physics::scaleUp(joint->GetReactionForce(dt)); lua_pushnumber(L, v.x); lua_pushnumber(L, v.y); return 2; } float Joint::getReactionTorque(float dt) { return Physics::scaleUp(Physics::scaleUp(joint->GetReactionTorque(dt))); } b2Joint *Joint::createJoint(b2JointDef *def) { joint = world->world->CreateJoint(def); Memoizer::add(joint, this); // Box2D joint has a reference to this love Joint. this->retain(); return joint; } void Joint::destroyJoint(bool implicit) { if (world->world->IsLocked()) { // Called during time step. Save reference for destruction afterwards. this->retain(); world->destructJoints.push_back(this); return; } if (!implicit && joint != 0) world->world->DestroyJoint(joint); Memoizer::remove(joint); joint = NULL; // Release the reference of the Box2D joint. this->release(); } bool Joint::isActive() const { return joint->IsActive(); } bool Joint::getCollideConnected() const { return joint->GetCollideConnected(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_DistanceJoint.h0000644000000000000000000000317112316602166023370 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_DISTANCE_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_DISTANCE_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "DistanceJoint.h" namespace love { namespace physics { namespace box2d { DistanceJoint *luax_checkdistancejoint(lua_State *L, int idx); int w_DistanceJoint_setLength(lua_State *L); int w_DistanceJoint_getLength(lua_State *L); int w_DistanceJoint_setFrequency(lua_State *L); int w_DistanceJoint_getFrequency(lua_State *L); int w_DistanceJoint_setDampingRatio(lua_State *L); int w_DistanceJoint_getDampingRatio(lua_State *L); extern "C" int luaopen_distancejoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_DISTANCE_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_Body.h0000644000000000000000000000652612316602166021536 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_BODY_H #define LOVE_PHYSICS_BOX2D_WRAP_BODY_H // LOVE #include "common/runtime.h" #include "Body.h" namespace love { namespace physics { namespace box2d { Body *luax_checkbody(lua_State *L, int idx); int w_Body_getX(lua_State *L); int w_Body_getY(lua_State *L); int w_Body_getAngle(lua_State *L); int w_Body_getPosition(lua_State *L); int w_Body_getLinearVelocity(lua_State *L); int w_Body_getWorldCenter(lua_State *L); int w_Body_getLocalCenter(lua_State *L); int w_Body_getAngularVelocity(lua_State *L); int w_Body_getMass(lua_State *L); int w_Body_getInertia(lua_State *L); int w_Body_getMassData(lua_State *L); int w_Body_getAngularDamping(lua_State *L); int w_Body_getLinearDamping(lua_State *L); int w_Body_getGravityScale(lua_State *L); int w_Body_getType(lua_State *L); int w_Body_applyLinearImpulse(lua_State *L); int w_Body_applyAngularImpulse(lua_State *L); int w_Body_applyTorque(lua_State *L); int w_Body_applyForce(lua_State *L); int w_Body_setX(lua_State *L); int w_Body_setY(lua_State *L); int w_Body_setLinearVelocity(lua_State *L); int w_Body_setAngle(lua_State *L); int w_Body_setAngularVelocity(lua_State *L); int w_Body_setPosition(lua_State *L); int w_Body_resetMassData(lua_State *L); int w_Body_setMassData(lua_State *L); int w_Body_setMass(lua_State *L); int w_Body_setInertia(lua_State *L); int w_Body_setAngularDamping(lua_State *L); int w_Body_setLinearDamping(lua_State *L); int w_Body_setGravityScale(lua_State *L); int w_Body_setType(lua_State *L); int w_Body_getWorldPoint(lua_State *L); int w_Body_getWorldVector(lua_State *L); int w_Body_getWorldPoints(lua_State *L); int w_Body_getLocalPoint(lua_State *L); int w_Body_getLocalVector(lua_State *L); int w_Body_getLinearVelocityFromWorldPoint(lua_State *L); int w_Body_getLinearVelocityFromLocalPoint(lua_State *L); int w_Body_isBullet(lua_State *L); int w_Body_setBullet(lua_State *L); int w_Body_isActive(lua_State *L); int w_Body_isAwake(lua_State *L); int w_Body_setSleepingAllowed(lua_State *L); int w_Body_isSleepingAllowed(lua_State *L); int w_Body_setActive(lua_State *L); int w_Body_setAwake(lua_State *L); int w_Body_setFixedRotation(lua_State *L); int w_Body_isFixedRotation(lua_State *L); int w_Body_getFixtureList(lua_State *L); int w_Body_destroy(lua_State *L); int w_Body_setUserData(lua_State *L); int w_Body_getUserData(lua_State *L); extern "C" int luaopen_body(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_BODY_H love-0.9.1/src/modules/physics/box2d/wrap_CircleShape.cpp0000644000000000000000000000465512316602166023357 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_CircleShape.h" namespace love { namespace physics { namespace box2d { CircleShape *luax_checkcircleshape(lua_State *L, int idx) { return luax_checktype(L, idx, "CircleShape", PHYSICS_CIRCLE_SHAPE_T); } int w_CircleShape_getRadius(lua_State *L) { CircleShape *c = luax_checkcircleshape(L, 1); lua_pushnumber(L, c->getRadius()); return 1; } int w_CircleShape_setRadius(lua_State *L) { CircleShape *c = luax_checkcircleshape(L, 1); float r = (float)luaL_checknumber(L, 2); c->setRadius(r); return 0; } int w_CircleShape_getPoint(lua_State *L) { CircleShape *c = luax_checkcircleshape(L, 1); float x, y; c->getPoint(x, y); lua_pushnumber(L, x); lua_pushnumber(L, y); return 2; } int w_CircleShape_setPoint(lua_State *L) { CircleShape *c = luax_checkcircleshape(L, 1); c->setPoint((float) luaL_checknumber(L, 2), (float) luaL_checknumber(L, 3)); return 0; } static const luaL_Reg functions[] = { { "getRadius", w_CircleShape_getRadius }, { "setRadius", w_CircleShape_setRadius }, { "getPoint", w_CircleShape_getPoint }, { "setPoint", w_CircleShape_setPoint }, // From Shape. { "getType", w_Shape_getType }, { "getRadius", w_Shape_getRadius }, { "getChildCount", w_Shape_getChildCount }, { "testPoint", w_Shape_testPoint }, { "rayCast", w_Shape_rayCast }, { "computeAABB", w_Shape_computeAABB }, { "computeMass", w_Shape_computeMass }, { 0, 0 } }; extern "C" int luaopen_circleshape(lua_State *L) { return luax_register_type(L, "CircleShape", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_PulleyJoint.h0000644000000000000000000000277712316602166023123 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_PULLEY_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_PULLEY_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "PulleyJoint.h" namespace love { namespace physics { namespace box2d { PulleyJoint *luax_checkpulleyjoint(lua_State *L, int idx); int w_PulleyJoint_getGroundAnchors(lua_State *L); int w_PulleyJoint_getLengthA(lua_State *L); int w_PulleyJoint_getLengthB(lua_State *L); int w_PulleyJoint_getRatio(lua_State *L); extern "C" int luaopen_pulleyjoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_PULLEY_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_PolygonShape.h0000644000000000000000000000265112316602166023244 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_POLYGON_SHAPE_H #define LOVE_PHYSICS_BOX2D_WRAP_POLYGON_SHAPE_H // LOVE #include "common/runtime.h" #include "wrap_Shape.h" #include "PolygonShape.h" namespace love { namespace physics { namespace box2d { PolygonShape *luax_checkpolygonshape(lua_State *L, int idx); int w_PolygonShape_getPoints(lua_State *L); int w_PolygonShape_validate(lua_State *L); extern "C" int luaopen_polygonshape(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_POLYGON_SHAPE_H love-0.9.1/src/modules/physics/box2d/RevoluteJoint.h0000644000000000000000000000614212316602166022413 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_REVOLUTE_JOINT_H #define LOVE_PHYSICS_BOX2D_REVOLUTE_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * A RevoluteJoint allows two bodies relative rotation * around a single point. **/ class RevoluteJoint : public Joint { public: /** * Creates a new RevoluteJoint connecting body1 and body2. **/ RevoluteJoint(Body *body1, Body *body2, float x, float y, bool collideConnected); virtual ~RevoluteJoint(); /** * Get the current joint angle in degrees. **/ float getJointAngle() const; /** * Get the current joint angle speed in degrees per second. **/ float getJointSpeed() const; /** * Enable/disable the joint motor. **/ void setMotorEnabled(bool enable); /** * Checks whether the motor is enabled. **/ bool isMotorEnabled() const; /** * Set the maximum motor torque, usually in N-m. **/ void setMaxMotorTorque(float torque); /** * Sets the motor speed in radians per second. **/ void setMotorSpeed(float speed); /** * Gets the motor speed in radians per second. **/ float getMotorSpeed() const; /** * Get the current motor torque, usually in N-m. * @param inv_dt The inverse timestep. **/ float getMotorTorque(float inv_dt) const; /** * Get the maximum motor torque, usually in N-m. **/ float getMaxMotorTorque() const; /** * Enable/disable the joint limit. **/ void setLimitsEnabled(bool enable); /** * Checks whether limits are enabled. **/ bool hasLimitsEnabled() const; /** * Sets the upper limit in degrees. **/ void setUpperLimit(float limit); /** * Sets the lower limit in degrees. **/ void setLowerLimit(float limit); /** * Sets the limits in degrees. **/ void setLimits(float lower, float upper); /** * Gets the lower limit in degrees. **/ float getLowerLimit() const; /** * Gets the upper limit in degrees. **/ float getUpperLimit() const; /** * Gets the limits in degrees. * @returns The lower limit. * @returns The upper limit. **/ int getLimits(lua_State *L); private: // The Box2D revolute joint object. b2RevoluteJoint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_REVOLUTE_JOINT_H love-0.9.1/src/modules/physics/box2d/Body.cpp0000644000000000000000000002470412316602166021036 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Body.h" #include "common/math.h" #include "common/Memoizer.h" #include "Shape.h" #include "Fixture.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { Body::Body(World *world, b2Vec2 p, Body::Type type) : world(world) , udata(nullptr) { udata = new bodyudata(); udata->ref = nullptr; world->retain(); b2BodyDef def; def.position = Physics::scaleDown(p); def.userData = (void *) udata; body = world->world->CreateBody(&def); // Box2D body holds a reference to the love Body. this->retain(); this->setType(type); Memoizer::add(body, this); } Body::Body(b2Body *b) : body(b) , udata(nullptr) { udata = (bodyudata *) b->GetUserData(); world = (World *)Memoizer::find(b->GetWorld()); world->retain(); // Box2D body holds a reference to the love Body. this->retain(); Memoizer::add(body, this); } Body::~Body() { if (udata != nullptr) delete udata->ref; delete udata; world->release(); } float Body::getX() { return Physics::scaleUp(body->GetPosition().x); } float Body::getY() { return Physics::scaleUp(body->GetPosition().y); } void Body::getPosition(float &x_o, float &y_o) { b2Vec2 v = Physics::scaleUp(body->GetPosition()); x_o = v.x; y_o = v.y; } void Body::getLinearVelocity(float &x_o, float &y_o) { b2Vec2 v = Physics::scaleUp(body->GetLinearVelocity()); x_o = v.x; y_o = v.y; } float Body::getAngle() { return body->GetAngle(); } void Body::getWorldCenter(float &x_o, float &y_o) { b2Vec2 v = Physics::scaleUp(body->GetWorldCenter()); x_o = v.x; y_o = v.y; } void Body::getLocalCenter(float &x_o, float &y_o) { b2Vec2 v = Physics::scaleUp(body->GetLocalCenter()); x_o = v.x; y_o = v.y; } float Body::getAngularVelocity() const { return body->GetAngularVelocity(); } float Body::getMass() const { return body->GetMass(); } float Body::getInertia() const { return Physics::scaleUp(Physics::scaleUp(body->GetInertia())); } int Body::getMassData(lua_State *L) { b2MassData data; body->GetMassData(&data); b2Vec2 center = Physics::scaleUp(data.center); lua_pushnumber(L, center.x); lua_pushnumber(L, center.y); lua_pushnumber(L, data.mass); lua_pushnumber(L, Physics::scaleUp(Physics::scaleUp(data.I))); return 4; } float Body::getAngularDamping() const { return body->GetAngularDamping(); } float Body::getLinearDamping() const { return body->GetLinearDamping(); } float Body::getGravityScale() const { return body->GetGravityScale(); } Body::Type Body::getType() const { switch (body->GetType()) { case b2_staticBody: return BODY_STATIC; break; case b2_dynamicBody: return BODY_DYNAMIC; break; case b2_kinematicBody: return BODY_KINEMATIC; break; default: return BODY_INVALID; break; } } void Body::applyLinearImpulse(float jx, float jy, bool wake) { body->ApplyLinearImpulse(Physics::scaleDown(b2Vec2(jx, jy)), body->GetWorldCenter(), wake); } void Body::applyLinearImpulse(float jx, float jy, float rx, float ry, bool wake) { body->ApplyLinearImpulse(Physics::scaleDown(b2Vec2(jx, jy)), Physics::scaleDown(b2Vec2(rx, ry)), wake); } void Body::applyAngularImpulse(float impulse, bool wake) { // Angular impulse is in kg*m^2/s, meaning it needs to be scaled twice body->ApplyAngularImpulse(Physics::scaleDown(Physics::scaleDown(impulse)), wake); } void Body::applyTorque(float t, bool wake) { // Torque is in N*m, or kg*m^2/s^2, meaning it also needs to be scaled twice body->ApplyTorque(Physics::scaleDown(Physics::scaleDown(t)), wake); } void Body::applyForce(float fx, float fy, float rx, float ry, bool wake) { body->ApplyForce(Physics::scaleDown(b2Vec2(fx, fy)), Physics::scaleDown(b2Vec2(rx, ry)), wake); } void Body::applyForce(float fx, float fy, bool wake) { body->ApplyForceToCenter(Physics::scaleDown(b2Vec2(fx, fy)), wake); } void Body::setX(float x) { body->SetTransform(Physics::scaleDown(b2Vec2(x, getY())), getAngle()); } void Body::setY(float y) { body->SetTransform(Physics::scaleDown(b2Vec2(getX(), y)), getAngle()); } void Body::setLinearVelocity(float x, float y) { body->SetLinearVelocity(Physics::scaleDown(b2Vec2(x, y))); } void Body::setAngle(float d) { body->SetTransform(body->GetPosition(), d); } void Body::setAngularVelocity(float r) { body->SetAngularVelocity(r); } void Body::setPosition(float x, float y) { body->SetTransform(Physics::scaleDown(b2Vec2(x, y)), body->GetAngle()); } void Body::setAngularDamping(float d) { body->SetAngularDamping(d); } void Body::setLinearDamping(float d) { body->SetLinearDamping(d); } void Body::resetMassData() { body->ResetMassData(); } void Body::setMassData(float x, float y, float m, float i) { b2MassData massData; massData.center = Physics::scaleDown(b2Vec2(x, y)); massData.mass = m; massData.I = Physics::scaleDown(Physics::scaleDown(i)); body->SetMassData(&massData); } void Body::setMass(float m) { b2MassData data; body->GetMassData(&data); data.mass = m; body->SetMassData(&data); } void Body::setInertia(float i) { b2MassData massData; massData.center = body->GetLocalCenter(); massData.mass = body->GetMass(); massData.I = Physics::scaleDown(Physics::scaleDown(i)); body->SetMassData(&massData); } void Body::setGravityScale(float scale) { body->SetGravityScale(scale); } void Body::setType(Body::Type type) { switch (type) { case Body::BODY_STATIC: body->SetType(b2_staticBody); break; case Body::BODY_DYNAMIC: body->SetType(b2_dynamicBody); break; case Body::BODY_KINEMATIC: body->SetType(b2_kinematicBody); break; default: break; } } void Body::getWorldPoint(float x, float y, float &x_o, float &y_o) { b2Vec2 v = Physics::scaleUp(body->GetWorldPoint(Physics::scaleDown(b2Vec2(x, y)))); x_o = v.x; y_o = v.y; } void Body::getWorldVector(float x, float y, float &x_o, float &y_o) { b2Vec2 v = Physics::scaleUp(body->GetWorldVector(Physics::scaleDown(b2Vec2(x, y)))); x_o = v.x; y_o = v.y; } int Body::getWorldPoints(lua_State *L) { int argc = lua_gettop(L); int vcount = (int)argc/2; // at least one point love::luax_assert_argc(L, 2); for (int i = 0; iGetWorldPoint(Physics::scaleDown(b2Vec2(x, y)))); // And then we push the result lua_pushnumber(L, point.x); lua_pushnumber(L, point.y); } return argc; } void Body::getLocalPoint(float x, float y, float &x_o, float &y_o) { b2Vec2 v = Physics::scaleUp(body->GetLocalPoint(Physics::scaleDown(b2Vec2(x, y)))); x_o = v.x; y_o = v.y; } void Body::getLocalVector(float x, float y, float &x_o, float &y_o) { b2Vec2 v = Physics::scaleUp(body->GetLocalVector(Physics::scaleDown(b2Vec2(x, y)))); x_o = v.x; y_o = v.y; } void Body::getLinearVelocityFromWorldPoint(float x, float y, float &x_o, float &y_o) { b2Vec2 v = Physics::scaleUp(body->GetLinearVelocityFromWorldPoint(Physics::scaleDown(b2Vec2(x, y)))); x_o = v.x; y_o = v.y; } void Body::getLinearVelocityFromLocalPoint(float x, float y, float &x_o, float &y_o) { b2Vec2 v = Physics::scaleUp(body->GetLinearVelocityFromLocalPoint(Physics::scaleDown(b2Vec2(x, y)))); x_o = v.x; y_o = v.y; } bool Body::isBullet() const { return body->IsBullet(); } void Body::setBullet(bool bullet) { return body->SetBullet(bullet); } bool Body::isActive() const { return body->IsActive(); } bool Body::isAwake() const { return body->IsAwake(); } void Body::setSleepingAllowed(bool allow) { body->SetSleepingAllowed(allow); } bool Body::isSleepingAllowed() const { return body->IsSleepingAllowed(); } void Body::setActive(bool active) { body->SetActive(active); } void Body::setAwake(bool awake) { body->SetAwake(awake); } void Body::setFixedRotation(bool fixed) { body->SetFixedRotation(fixed); } bool Body::isFixedRotation() const { return body->IsFixedRotation(); } World *Body::getWorld() const { return world; } int Body::getFixtureList(lua_State *L) const { lua_newtable(L); b2Fixture *f = body->GetFixtureList(); int i = 1; do { if (!f) break; Fixture *fixture = (Fixture *)Memoizer::find(f); if (!fixture) throw love::Exception("A fixture has escaped Memoizer!"); fixture->retain(); luax_pushtype(L, "Fixture", PHYSICS_FIXTURE_T, fixture); lua_rawseti(L, -2, i); i++; } while ((f = f->GetNext())); return 1; } b2Vec2 Body::getVector(lua_State *L) { love::luax_assert_argc(L, 2, 2); b2Vec2 v((float)lua_tonumber(L, 1), (float)lua_tonumber(L, 2)); lua_pop(L, 2); return v; } int Body::pushVector(lua_State *L, const b2Vec2 &v) { lua_pushnumber(L, v.x); lua_pushnumber(L, v.y); return 2; } void Body::destroy() { if (world->world->IsLocked()) { // Called during time step. Save reference for destruction afterwards. this->retain(); world->destructBodies.push_back(this); return; } world->world->DestroyBody(body); Memoizer::remove(body); body = NULL; // Box2D body destroyed. Release its reference to the love Body. this->release(); } int Body::setUserData(lua_State *L) { love::luax_assert_argc(L, 1, 1); if (udata == nullptr) { udata = new bodyudata(); body->SetUserData((void *) udata); } if (udata->ref != nullptr) { // We set the Reference's lua_State to this one before deleting it, so // it unrefs using the current lua_State's stack. This is necessary // if setUserData is called in a coroutine. udata->ref->setL(L); delete udata->ref; } udata->ref = new Reference(L); return 0; } int Body::getUserData(lua_State *L) { if (udata != nullptr && udata->ref != nullptr) udata->ref->push(L); else lua_pushnil(L); return 1; } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_GearJoint.cpp0000644000000000000000000000411612316602166023047 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_GearJoint.h" #include "wrap_Physics.h" namespace love { namespace physics { namespace box2d { GearJoint *luax_checkgearjoint(lua_State *L, int idx) { GearJoint *j = luax_checktype(L, idx, "GearJoint", PHYSICS_GEAR_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_GearJoint_setRatio(lua_State *L) { GearJoint *t = luax_checkgearjoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setRatio(arg1);) return 0; } int w_GearJoint_getRatio(lua_State *L) { GearJoint *t = luax_checkgearjoint(L, 1); lua_pushnumber(L, t->getRatio()); return 1; } static const luaL_Reg functions[] = { { "setRatio", w_GearJoint_setRatio }, { "getRatio", w_GearJoint_getRatio }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_gearjoint(lua_State *L) { return luax_register_type(L, "GearJoint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_WheelJoint.h0000644000000000000000000000370612316602166022706 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_WHEEL_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_WHEEL_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "WheelJoint.h" namespace love { namespace physics { namespace box2d { WheelJoint *luax_checkwheeljoint(lua_State *L, int idx); int w_WheelJoint_getJointTranslation(lua_State *L); int w_WheelJoint_getJointSpeed(lua_State *L); int w_WheelJoint_setMotorEnabled(lua_State *L); int w_WheelJoint_isMotorEnabled(lua_State *L); int w_WheelJoint_setMotorSpeed(lua_State *L); int w_WheelJoint_getMotorSpeed(lua_State *L); int w_WheelJoint_setMaxMotorTorque(lua_State *L); int w_WheelJoint_getMaxMotorTorque(lua_State *L); int w_WheelJoint_getMotorTorque(lua_State *L); int w_WheelJoint_setSpringFrequency(lua_State *L); int w_WheelJoint_getSpringFrequency(lua_State *L); int w_WheelJoint_setSpringDampingRatio(lua_State *L); int w_WheelJoint_getSpringDampingRatio(lua_State *L); extern "C" int luaopen_wheeljoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_WHEEL_JOINT_H love-0.9.1/src/modules/physics/box2d/MouseJoint.h0000644000000000000000000000476712316602166021711 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_MOUSE_JOINT_H #define LOVE_PHYSICS_BOX2D_MOUSE_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * The MouseJoint is a joint type that * is suitable for controlling objects with the mouse. * * One end is anchored in the dynamic body, and the other id * anchor to a static ground body. The anchor offset can then be * moved to the current mouse position. **/ class MouseJoint : public Joint { public: /** * Creates a MouseJoint which connects body1 to the target point. **/ MouseJoint(Body *body1, float x, float y); virtual ~MouseJoint(); /** * Sets the target of anchor2. (You usually want * to set this to the current mouse.) **/ void setTarget(float x, float y); /** * Gets the current anchor2 target. **/ int getTarget(lua_State *L); /** * Sets the maximum constraint force that can be exerted * to move the candidate body. **/ void setMaxForce(float force); /** * Gets the maximum constraint force that can be exerted * to move the candidate body. **/ float getMaxForce() const; /** * Sets the response speed. **/ void setFrequency(float hz); /** * Gets the response speed. **/ float getFrequency() const; /** * Sets the damping ratio. * 0 = no damping, 1 = critical damping. **/ void setDampingRatio(float d); /** * Gets the damping ratio. * 0 = no damping, 1 = critical damping. **/ float getDampingRatio() const; private: // The Box2D MouseJoint object. b2MouseJoint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_MOUSE_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_MouseJoint.cpp0000644000000000000000000000650712316602166023267 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_MouseJoint.h" namespace love { namespace physics { namespace box2d { MouseJoint *luax_checkmousejoint(lua_State *L, int idx) { MouseJoint *j = luax_checktype(L, idx, "MouseJoint", PHYSICS_MOUSE_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_MouseJoint_setTarget(lua_State *L) { MouseJoint *t = luax_checkmousejoint(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); t->setTarget(x, y); return 0; } int w_MouseJoint_getTarget(lua_State *L) { MouseJoint *t = luax_checkmousejoint(L, 1); lua_remove(L, 1); return t->getTarget(L); } int w_MouseJoint_setMaxForce(lua_State *L) { MouseJoint *t = luax_checkmousejoint(L, 1); float f = (float)luaL_checknumber(L, 2); t->setMaxForce(f); return 0; } int w_MouseJoint_getMaxForce(lua_State *L) { MouseJoint *t = luax_checkmousejoint(L, 1); lua_pushnumber(L, t->getMaxForce()); return 1; } int w_MouseJoint_setFrequency(lua_State *L) { MouseJoint *t = luax_checkmousejoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setFrequency(arg1); return 0; } int w_MouseJoint_getFrequency(lua_State *L) { MouseJoint *t = luax_checkmousejoint(L, 1); lua_pushnumber(L, t->getFrequency()); return 1; } int w_MouseJoint_setDampingRatio(lua_State *L) { MouseJoint *t = luax_checkmousejoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setDampingRatio(arg1); return 0; } int w_MouseJoint_getDampingRatio(lua_State *L) { MouseJoint *t = luax_checkmousejoint(L, 1); lua_pushnumber(L, t->getDampingRatio()); return 1; } static const luaL_Reg functions[] = { { "setTarget", w_MouseJoint_setTarget }, { "getTarget", w_MouseJoint_getTarget }, { "setMaxForce", w_MouseJoint_setMaxForce }, { "getMaxForce", w_MouseJoint_getMaxForce }, { "setFrequency", w_MouseJoint_setFrequency }, { "getFrequency", w_MouseJoint_getFrequency }, { "setDampingRatio", w_MouseJoint_setDampingRatio }, { "getDampingRatio", w_MouseJoint_getDampingRatio }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_mousejoint(lua_State *L) { return luax_register_type(L, "MouseJoint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/GearJoint.cpp0000644000000000000000000000316012316602166022014 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "GearJoint.h" // Module #include "Body.h" #include "World.h" namespace love { namespace physics { namespace box2d { GearJoint::GearJoint(Joint *joint1, Joint *joint2, float ratio, bool collideConnected) : Joint(joint1->body2, joint2->body2) , joint(NULL) { b2GearJointDef def; def.joint1 = joint1->joint; def.joint2 = joint2->joint; def.bodyA = joint1->body2->body; def.bodyB = joint2->body2->body; def.ratio = ratio; def.collideConnected = collideConnected; joint = (b2GearJoint *)createJoint(&def); } GearJoint::~GearJoint() { } void GearJoint::setRatio(float ratio) { joint->SetRatio(ratio); } float GearJoint::getRatio() const { return joint->GetRatio(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_EdgeShape.cpp0000644000000000000000000000340312316602166023010 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_EdgeShape.h" namespace love { namespace physics { namespace box2d { EdgeShape *luax_checkedgeshape(lua_State *L, int idx) { return luax_checktype(L, idx, "EdgeShape", PHYSICS_EDGE_SHAPE_T); } int w_EdgeShape_getPoints(lua_State *L) { EdgeShape *t = luax_checkedgeshape(L, 1); lua_remove(L, 1); return t->getPoints(L); } static const luaL_Reg functions[] = { { "getPoints", w_EdgeShape_getPoints }, // From Shape. { "getType", w_Shape_getType }, { "getRadius", w_Shape_getRadius }, { "getChildCount", w_Shape_getChildCount }, { "testPoint", w_Shape_testPoint }, { "rayCast", w_Shape_rayCast }, { "computeAABB", w_Shape_computeAABB }, { "computeMass", w_Shape_computeMass }, { 0, 0 } }; extern "C" int luaopen_edgeshape(lua_State *L) { return luax_register_type(L, "EdgeShape", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/FrictionJoint.cpp0000644000000000000000000000377012316602166022722 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "FrictionJoint.h" #include "common/math.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { FrictionJoint::FrictionJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected) : Joint(body1, body2) , joint(NULL) { b2FrictionJointDef def; def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(xA,yA))); def.localAnchorB = body2->body->GetLocalPoint(Physics::scaleDown(b2Vec2(xB, yB))); def.collideConnected = collideConnected; joint = (b2FrictionJoint *)createJoint(&def); } FrictionJoint::~FrictionJoint() { } void FrictionJoint::setMaxForce(float force) { joint->SetMaxForce(Physics::scaleDown(force)); } float FrictionJoint::getMaxForce() const { return Physics::scaleUp(joint->GetMaxForce()); } void FrictionJoint::setMaxTorque(float torque) { joint->SetMaxTorque(Physics::scaleDown(Physics::scaleDown(torque))); } float FrictionJoint::getMaxTorque() const { return Physics::scaleUp(Physics::scaleUp(joint->GetMaxTorque())); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_ChainShape.cpp0000644000000000000000000000725512316602166023177 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_ChainShape.h" #include "wrap_Physics.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { ChainShape *luax_checkchainshape(lua_State *L, int idx) { return luax_checktype(L, idx, "ChainShape", PHYSICS_CHAIN_SHAPE_T); } int w_ChainShape_setNextVertex(lua_State *L) { ChainShape *c = luax_checkchainshape(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); EXCEPT_GUARD(c->setNextVertex(x, y);) return 0; } int w_ChainShape_setPreviousVertex(lua_State *L) { ChainShape *c = luax_checkchainshape(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); EXCEPT_GUARD(c->setPreviousVertex(x, y);) return 0; } int w_ChainShape_getChildCount(lua_State *L) { ChainShape *c = luax_checkchainshape(L, 1); lua_pushinteger(L, c->getChildCount()); return 1; } int w_ChainShape_getChildEdge(lua_State *L) { ChainShape *c = luax_checkchainshape(L, 1); int index = luaL_checkint(L, 2) - 1; // Convert from 1-based index EdgeShape *e = 0; EXCEPT_GUARD(e = c->getChildEdge(index);) luax_pushtype(L, "EdgeShape", PHYSICS_EDGE_SHAPE_T, e); return 1; } int w_ChainShape_getVertexCount(lua_State *L) { ChainShape *c = luax_checkchainshape(L, 1); int count = c->getVertexCount(); lua_pushinteger(L, count); return 1; } int w_ChainShape_getPoint(lua_State *L) { ChainShape *c = luax_checkchainshape(L, 1); int index = luaL_checkint(L, 2) - 1; // Convert from 1-based index b2Vec2 v; EXCEPT_GUARD(v = c->getPoint(index);) lua_pushnumber(L, v.x); lua_pushnumber(L, v.y); return 2; } int w_ChainShape_getPoints(lua_State *L) { ChainShape *c = luax_checkchainshape(L, 1); const b2Vec2 *verts = c->getPoints(); int count = c->getVertexCount(); if (!lua_checkstack(L, count*2)) return luaL_error(L, "Too many return values"); for (int i = 0; i < count; i++) { b2Vec2 v = Physics::scaleUp(verts[i]); lua_pushnumber(L, v.x); lua_pushnumber(L, v.y); } return count*2; } static const luaL_Reg functions[] = { { "setNextVertex", w_ChainShape_setNextVertex }, { "setPreviousVertex", w_ChainShape_setPreviousVertex }, { "getChildCount", w_ChainShape_getChildCount }, { "getChildEdge", w_ChainShape_getChildEdge }, { "getVertexCount", w_ChainShape_getVertexCount }, { "getPoint", w_ChainShape_getPoint }, { "getPoints", w_ChainShape_getPoints }, // From Shape. { "getType", w_Shape_getType }, { "getRadius", w_Shape_getRadius }, { "getChildCount", w_Shape_getChildCount }, { "testPoint", w_Shape_testPoint }, { "rayCast", w_Shape_rayCast }, { "computeAABB", w_Shape_computeAABB }, { "computeMass", w_Shape_computeMass }, { 0, 0 } }; extern "C" int luaopen_chainshape(lua_State *L) { return luax_register_type(L, "ChainShape", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_Fixture.h0000644000000000000000000000450512316602166022262 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_FIXTURE_H #define LOVE_PHYSICS_BOX2D_WRAP_FIXTURE_H // LOVE #include "common/runtime.h" #include "Fixture.h" #include "wrap_Physics.h" namespace love { namespace physics { namespace box2d { Fixture *luax_checkfixture(lua_State *L, int idx); int w_Fixture_getType(lua_State *L); int w_Fixture_setFriction(lua_State *L); int w_Fixture_setRestitution(lua_State *L); int w_Fixture_setDensity(lua_State *L); int w_Fixture_setSensor(lua_State *L); int w_Fixture_getFriction(lua_State *L); int w_Fixture_getRestitution(lua_State *L); int w_Fixture_getDensity(lua_State *L); int w_Fixture_isSensor(lua_State *L); int w_Fixture_getBody(lua_State *L); int w_Fixture_getShape(lua_State *L); int w_Fixture_testPoint(lua_State *L); int w_Fixture_rayCast(lua_State *L); int w_Fixture_setFilterData(lua_State *L); int w_Fixture_getFilterData(lua_State *L); int w_Fixture_setCategory(lua_State *L); int w_Fixture_getCategory(lua_State *L); int w_Fixture_setMask(lua_State *L); int w_Fixture_getMask(lua_State *L); int w_Fixture_setUserData(lua_State *L); int w_Fixture_getUserData(lua_State *L); int w_Fixture_getBoundingBox(lua_State *L); int w_Fixture_getMassData(lua_State *L); int w_Fixture_getGroupIndex(lua_State *L); int w_Fixture_setGroupIndex(lua_State *L); int w_Fixture_destroy(lua_State *L); extern "C" int luaopen_fixture(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_FIXTURE_H love-0.9.1/src/modules/physics/box2d/wrap_CircleShape.h0000644000000000000000000000276512316602166023024 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_CIRCLE_SHAPE_H #define LOVE_PHYSICS_BOX2D_WRAP_CIRCLE_SHAPE_H // LOVE #include "common/runtime.h" #include "wrap_Shape.h" #include "CircleShape.h" namespace love { namespace physics { namespace box2d { CircleShape *luax_checkcircleshape(lua_State *L, int idx); int w_CircleShape_getRadius(lua_State *L); int w_CircleShape_setRadius(lua_State *L); int w_CircleShape_getPoint(lua_State *L); int w_CircleShape_setPoint(lua_State *L); extern "C" int luaopen_circleshape(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_CIRCLE_SHAPE_H love-0.9.1/src/modules/physics/box2d/wrap_Physics.cpp0000644000000000000000000003346612316602166022621 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Physics.h" #include "wrap_World.h" #include "wrap_Contact.h" #include "wrap_Body.h" #include "wrap_Fixture.h" #include "wrap_Shape.h" #include "wrap_CircleShape.h" #include "wrap_PolygonShape.h" #include "wrap_EdgeShape.h" #include "wrap_ChainShape.h" #include "wrap_Joint.h" #include "wrap_MouseJoint.h" #include "wrap_DistanceJoint.h" #include "wrap_PrismaticJoint.h" #include "wrap_RevoluteJoint.h" #include "wrap_PulleyJoint.h" #include "wrap_GearJoint.h" #include "wrap_FrictionJoint.h" #include "wrap_WeldJoint.h" #include "wrap_WheelJoint.h" #include "wrap_RopeJoint.h" #include "wrap_MotorJoint.h" namespace love { namespace physics { namespace box2d { static Physics *instance = 0; int w_newWorld(lua_State *L) { float gx = (float)luaL_optnumber(L, 1, 0); float gy = (float)luaL_optnumber(L, 2, 0); bool sleep = luax_optboolean(L, 3, true); World *w; EXCEPT_GUARD(w = instance->newWorld(gx, gy, sleep);) luax_pushtype(L, "World", PHYSICS_WORLD_T, w); return 1; } int w_newBody(lua_State *L) { World *world = luax_checktype(L, 1, "World", PHYSICS_WORLD_T); float x = (float)luaL_optnumber(L, 2, 0.0); float y = (float)luaL_optnumber(L, 3, 0.0); Body::Type btype = Body::BODY_STATIC; const char *typestr = lua_isnoneornil(L, 4) ? 0 : lua_tostring(L, 4); if (typestr && !Body::getConstant(typestr, btype)) return luaL_error(L, "Invalid Body type: %s", typestr); Body *body; EXCEPT_GUARD(body = instance->newBody(world, x, y, btype);) luax_pushtype(L, "Body", PHYSICS_BODY_T, body); return 1; } int w_newFixture(lua_State *L) { Body *body = luax_checkbody(L, 1); Shape *shape = luax_checkshape(L, 2); float density = (float)luaL_optnumber(L, 3, 1.0f); Fixture *fixture; EXCEPT_GUARD(fixture = instance->newFixture(body, shape, density);) luax_pushtype(L, "Fixture", PHYSICS_FIXTURE_T, fixture); return 1; } int w_newCircleShape(lua_State *L) { int top = lua_gettop(L); if (top == 1) { float radius = (float)luaL_checknumber(L, 1); CircleShape *shape; EXCEPT_GUARD(shape = instance->newCircleShape(radius);) luax_pushtype(L, "CircleShape", PHYSICS_CIRCLE_SHAPE_T, shape); return 1; } else if (top == 3) { float x = (float)luaL_checknumber(L, 1); float y = (float)luaL_checknumber(L, 2); float radius = (float)luaL_checknumber(L, 3); CircleShape *shape; EXCEPT_GUARD(shape = instance->newCircleShape(x, y, radius);) luax_pushtype(L, "CircleShape", PHYSICS_CIRCLE_SHAPE_T, shape); return 1; } else return luaL_error(L, "Incorrect number of parameters"); } int w_newRectangleShape(lua_State *L) { int top = lua_gettop(L); if (top == 2) { float w = (float)luaL_checknumber(L, 1); float h = (float)luaL_checknumber(L, 2); PolygonShape *shape; EXCEPT_GUARD(shape = instance->newRectangleShape(w, h);) luax_pushtype(L, "PolygonShape", PHYSICS_POLYGON_SHAPE_T, shape); return 1; } else if (top == 4 || top == 5) { float x = (float)luaL_checknumber(L, 1); float y = (float)luaL_checknumber(L, 2); float w = (float)luaL_checknumber(L, 3); float h = (float)luaL_checknumber(L, 4); float angle = (float)luaL_optnumber(L, 5, 0); PolygonShape *shape; EXCEPT_GUARD(shape = instance->newRectangleShape(x, y, w, h, angle);) luax_pushtype(L, "PolygonShape", PHYSICS_POLYGON_SHAPE_T, shape); return 1; } else return luaL_error(L, "Incorrect number of parameters"); } int w_newEdgeShape(lua_State *L) { float x1 = (float)luaL_checknumber(L, 1); float y1 = (float)luaL_checknumber(L, 2); float x2 = (float)luaL_checknumber(L, 3); float y2 = (float)luaL_checknumber(L, 4); EdgeShape *shape; EXCEPT_GUARD(shape = instance->newEdgeShape(x1, y1, x2, y2);) luax_pushtype(L, "EdgeShape", PHYSICS_EDGE_SHAPE_T, shape); return 1; } int w_newPolygonShape(lua_State *L) { int ret = 0; EXCEPT_GUARD(ret = instance->newPolygonShape(L);) return ret; } int w_newChainShape(lua_State *L) { int ret = 0; EXCEPT_GUARD(ret = instance->newChainShape(L);) return ret; } int w_newDistanceJoint(lua_State *L) { Body *body1 = luax_checktype(L, 1, "Body", PHYSICS_BODY_T); Body *body2 = luax_checktype(L, 2, "Body", PHYSICS_BODY_T); float x1 = (float)luaL_checknumber(L, 3); float y1 = (float)luaL_checknumber(L, 4); float x2 = (float)luaL_checknumber(L, 5); float y2 = (float)luaL_checknumber(L, 6); bool collideConnected = luax_optboolean(L, 7, false); DistanceJoint *j; EXCEPT_GUARD(j = instance->newDistanceJoint(body1, body2, x1, y1, x2, y2, collideConnected);) luax_pushtype(L, "DistanceJoint", PHYSICS_DISTANCE_JOINT_T, j); return 1; } int w_newMouseJoint(lua_State *L) { Body *body = luax_checktype(L, 1, "Body", PHYSICS_BODY_T); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); MouseJoint *j; EXCEPT_GUARD(j = instance->newMouseJoint(body, x, y);) luax_pushtype(L, "MouseJoint", PHYSICS_MOUSE_JOINT_T, j); return 1; } int w_newRevoluteJoint(lua_State *L) { Body *body1 = luax_checktype(L, 1, "Body", PHYSICS_BODY_T); Body *body2 = luax_checktype(L, 2, "Body", PHYSICS_BODY_T); float x = (float)luaL_checknumber(L, 3); float y = (float)luaL_checknumber(L, 4); bool collideConnected = luax_optboolean(L, 5, false); RevoluteJoint *j; EXCEPT_GUARD(j = instance->newRevoluteJoint(body1, body2, x, y, collideConnected);) luax_pushtype(L, "RevoluteJoint", PHYSICS_REVOLUTE_JOINT_T, j); return 1; } int w_newPrismaticJoint(lua_State *L) { Body *body1 = luax_checktype(L, 1, "Body", PHYSICS_BODY_T); Body *body2 = luax_checktype(L, 2, "Body", PHYSICS_BODY_T); float xA = (float)luaL_checknumber(L, 3); float yA = (float)luaL_checknumber(L, 4); float xB, yB, ax, ay; bool collideConnected; if (lua_gettop(L) >= 8) { xB = (float)luaL_checknumber(L, 5); yB = (float)luaL_checknumber(L, 6); ax = (float)luaL_checknumber(L, 7); ay = (float)luaL_checknumber(L, 8); collideConnected = luax_optboolean(L, 9, false); } else { xB = xA; yB = yA; ax = (float)luaL_checknumber(L, 5); ay = (float)luaL_checknumber(L, 6); collideConnected = luax_optboolean(L, 7, false); } PrismaticJoint *j; EXCEPT_GUARD(j = instance->newPrismaticJoint(body1, body2, xA, yA, xB, yB, ax, ay, collideConnected);) luax_pushtype(L, "PrismaticJoint", PHYSICS_PRISMATIC_JOINT_T, j); return 1; } int w_newPulleyJoint(lua_State *L) { Body *body1 = luax_checktype(L, 1, "Body", PHYSICS_BODY_T); Body *body2 = luax_checktype(L, 2, "Body", PHYSICS_BODY_T); float gx1 = (float)luaL_checknumber(L, 3); float gy1 = (float)luaL_checknumber(L, 4); float gx2 = (float)luaL_checknumber(L, 5); float gy2 = (float)luaL_checknumber(L, 6); float x1 = (float)luaL_checknumber(L, 7); float y1 = (float)luaL_checknumber(L, 8); float x2 = (float)luaL_checknumber(L, 9); float y2 = (float)luaL_checknumber(L, 10); float ratio = (float)luaL_optnumber(L, 11, 1.0); bool collideConnected = luax_optboolean(L, 12, true); // PulleyJoints default to colliding connected bodies, see b2PulleyJoint.h PulleyJoint *j; EXCEPT_GUARD(j = instance->newPulleyJoint(body1, body2, b2Vec2(gx1,gy1), b2Vec2(gx2,gy2), b2Vec2(x1,y1), b2Vec2(x2,y2), ratio, collideConnected);) luax_pushtype(L, "PulleyJoint", PHYSICS_PULLEY_JOINT_T, j); return 1; } int w_newGearJoint(lua_State *L) { Joint *joint1 = luax_checktype(L, 1, "Joint", PHYSICS_JOINT_T); Joint *joint2 = luax_checktype(L, 2, "Joint", PHYSICS_JOINT_T); float ratio = (float)luaL_optnumber(L, 3, 1.0); bool collideConnected = luax_optboolean(L, 4, false); GearJoint *j; EXCEPT_GUARD(j = instance->newGearJoint(joint1, joint2, ratio, collideConnected);) luax_pushtype(L, "GearJoint", PHYSICS_GEAR_JOINT_T, j); return 1; } int w_newFrictionJoint(lua_State *L) { Body *body1 = luax_checktype(L, 1, "Body", PHYSICS_BODY_T); Body *body2 = luax_checktype(L, 2, "Body", PHYSICS_BODY_T); float xA = (float)luaL_checknumber(L, 3); float yA = (float)luaL_checknumber(L, 4); float xB, yB; bool collideConnected; if (lua_gettop(L) >= 6) { xB = (float)luaL_checknumber(L, 5); yB = (float)luaL_checknumber(L, 6); collideConnected = luax_optboolean(L, 7, false); } else { xB = xA; yB = yA; collideConnected = luax_optboolean(L, 5, false); } FrictionJoint *j; EXCEPT_GUARD(j = instance->newFrictionJoint(body1, body2, xA, yA, xB, yB, collideConnected);) luax_pushtype(L, "FrictionJoint", PHYSICS_FRICTION_JOINT_T, j); return 1; } int w_newWeldJoint(lua_State *L) { Body *body1 = luax_checktype(L, 1, "Body", PHYSICS_BODY_T); Body *body2 = luax_checktype(L, 2, "Body", PHYSICS_BODY_T); float xA = (float)luaL_checknumber(L, 3); float yA = (float)luaL_checknumber(L, 4); float xB, yB; bool collideConnected; if (lua_gettop(L) >= 6) { xB = (float)luaL_checknumber(L, 5); yB = (float)luaL_checknumber(L, 6); collideConnected = luax_optboolean(L, 7, false); } else { xB = xA; yB = yA; collideConnected = luax_optboolean(L, 5, false); } WeldJoint *j; EXCEPT_GUARD(j = instance->newWeldJoint(body1, body2, xA, yA, xB, yB, collideConnected);) luax_pushtype(L, "WeldJoint", PHYSICS_WELD_JOINT_T, j); return 1; } int w_newWheelJoint(lua_State *L) { Body *body1 = luax_checktype(L, 1, "Body", PHYSICS_BODY_T); Body *body2 = luax_checktype(L, 2, "Body", PHYSICS_BODY_T); float xA = (float)luaL_checknumber(L, 3); float yA = (float)luaL_checknumber(L, 4); float xB, yB, ax, ay; bool collideConnected; if (lua_gettop(L) >= 8) { xB = (float)luaL_checknumber(L, 5); yB = (float)luaL_checknumber(L, 6); ax = (float)luaL_checknumber(L, 7); ay = (float)luaL_checknumber(L, 8); collideConnected = luax_optboolean(L, 9, false); } else { xB = xA; yB = yA; ax = (float)luaL_checknumber(L, 5); ay = (float)luaL_checknumber(L, 6); collideConnected = luax_optboolean(L, 7, false); } WheelJoint *j; EXCEPT_GUARD(j = instance->newWheelJoint(body1, body2, xA, yA, xB, yB, ax, ay, collideConnected);) luax_pushtype(L, "WheelJoint", PHYSICS_WHEEL_JOINT_T, j); return 1; } int w_newRopeJoint(lua_State *L) { Body *body1 = luax_checktype(L, 1, "Body", PHYSICS_BODY_T); Body *body2 = luax_checktype(L, 2, "Body", PHYSICS_BODY_T); float x1 = (float)luaL_checknumber(L, 3); float y1 = (float)luaL_checknumber(L, 4); float x2 = (float)luaL_checknumber(L, 5); float y2 = (float)luaL_checknumber(L, 6); float maxLength = (float)luaL_checknumber(L, 7); bool collideConnected = luax_optboolean(L, 8, false); RopeJoint *j; EXCEPT_GUARD(j = instance->newRopeJoint(body1, body2, x1, y1, x2, y2, maxLength, collideConnected);) luax_pushtype(L, "RopeJoint", PHYSICS_ROPE_JOINT_T, j); return 1; } int w_newMotorJoint(lua_State *L) { Body *body1 = luax_checktype(L, 1, "Body", PHYSICS_BODY_T); Body *body2 = luax_checktype(L, 2, "Body", PHYSICS_BODY_T); MotorJoint *j = 0; if (!lua_isnoneornil(L, 3)) { float correctionFactor = (float)luaL_checknumber(L, 3); EXCEPT_GUARD(j = instance->newMotorJoint(body1, body2, correctionFactor);) } else { EXCEPT_GUARD(j = instance->newMotorJoint(body1, body2);) } luax_pushtype(L, "MotorJoint", PHYSICS_MOTOR_JOINT_T, j); return 1; } int w_getDistance(lua_State *L) { return instance->getDistance(L); } int w_setMeter(lua_State *L) { int arg1 = luaL_checkint(L, 1); EXCEPT_GUARD(Physics::setMeter(arg1);) return 0; } int w_getMeter(lua_State *L) { lua_pushinteger(L, Physics::getMeter()); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "newWorld", w_newWorld }, { "newBody", w_newBody }, { "newFixture", w_newFixture }, { "newCircleShape", w_newCircleShape }, { "newRectangleShape", w_newRectangleShape }, { "newPolygonShape", w_newPolygonShape }, { "newEdgeShape", w_newEdgeShape }, { "newChainShape", w_newChainShape }, { "newDistanceJoint", w_newDistanceJoint }, { "newMouseJoint", w_newMouseJoint }, { "newRevoluteJoint", w_newRevoluteJoint }, { "newPrismaticJoint", w_newPrismaticJoint }, { "newPulleyJoint", w_newPulleyJoint }, { "newGearJoint", w_newGearJoint }, { "newFrictionJoint", w_newFrictionJoint }, { "newWeldJoint", w_newWeldJoint }, { "newWheelJoint", w_newWheelJoint }, { "newRopeJoint", w_newRopeJoint }, { "newMotorJoint", w_newMotorJoint }, { "getDistance", w_getDistance }, { "getMeter", w_getMeter }, { "setMeter", w_setMeter }, { 0, 0 }, }; static const lua_CFunction types[] = { luaopen_world, luaopen_contact, luaopen_body, luaopen_fixture, luaopen_shape, luaopen_circleshape, luaopen_polygonshape, luaopen_edgeshape, luaopen_chainshape, luaopen_joint, luaopen_mousejoint, luaopen_distancejoint, luaopen_prismaticjoint, luaopen_revolutejoint, luaopen_pulleyjoint, luaopen_gearjoint, luaopen_frictionjoint, luaopen_weldjoint, luaopen_wheeljoint, luaopen_ropejoint, luaopen_motorjoint, 0 }; extern "C" int luaopen_love_physics(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new Physics();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "physics"; w.flags = MODULE_T; w.functions = functions; w.types = types; return luax_register_module(L, w); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/WheelJoint.cpp0000644000000000000000000000546512316602166022214 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "WheelJoint.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { WheelJoint::WheelJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected) : Joint(body1, body2) , joint(NULL) { b2WheelJointDef def; def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(xA,yA)), b2Vec2(ax,ay)); def.localAnchorB = body2->body->GetLocalPoint(Physics::scaleDown(b2Vec2(xB, yB))); def.collideConnected = collideConnected; joint = (b2WheelJoint *)createJoint(&def); } WheelJoint::~WheelJoint() { } float WheelJoint::getJointTranslation() const { return Physics::scaleUp(joint->GetJointTranslation()); } float WheelJoint::getJointSpeed() const { return Physics::scaleUp(joint->GetJointSpeed()); } void WheelJoint::setMotorEnabled(bool enable) { return joint->EnableMotor(enable); } bool WheelJoint::isMotorEnabled() const { return joint->IsMotorEnabled(); } void WheelJoint::setMotorSpeed(float speed) { joint->SetMotorSpeed(speed); } float WheelJoint::getMotorSpeed() const { return joint->GetMotorSpeed(); } void WheelJoint::setMaxMotorTorque(float torque) { joint->SetMaxMotorTorque(Physics::scaleDown(Physics::scaleDown(torque))); } float WheelJoint::getMaxMotorTorque() const { return Physics::scaleUp(Physics::scaleUp(joint->GetMaxMotorTorque())); } float WheelJoint::getMotorTorque(float inv_dt) const { return Physics::scaleUp(Physics::scaleUp(joint->GetMotorTorque(inv_dt))); } void WheelJoint::setSpringFrequency(float hz) { joint->SetSpringFrequencyHz(hz); } float WheelJoint::getSpringFrequency() const { return joint->GetSpringFrequencyHz(); } void WheelJoint::setSpringDampingRatio(float ratio) { joint->SetSpringDampingRatio(ratio); } float WheelJoint::getSpringDampingRatio() const { return joint->GetSpringDampingRatio(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/CircleShape.h0000644000000000000000000000370712316602166021770 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_CIRCLE_SHAPE_H #define LOVE_PHYSICS_BOX2D_CIRCLE_SHAPE_H // Module #include "Shape.h" #include namespace love { namespace physics { namespace box2d { /** * A CircleShape represent a Circle which can * be used for collision detection and physics. * * The CircleShape is much faster than the PolygonShape, * and should generally be used where possible. **/ class CircleShape : public Shape { public: /** * Create a new CircleShape from the a Box2D CircleShape definition. * @param c The CircleShape definition. **/ CircleShape(b2CircleShape *c, bool own = true); virtual ~CircleShape(); /** * Gets the radius for the circle. **/ float getRadius() const; /** * Sets the radius of the circle. **/ void setRadius(float r); /** * Gets the position of the circle. **/ void getPoint(float &x_o, float &y_o) const; /** * Sets the position for the circle. **/ void setPoint(float x, float y); }; // CircleShape } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_CIRCLE_SHAPE_H love-0.9.1/src/modules/physics/box2d/RopeJoint.cpp0000644000000000000000000000351312316602166022045 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "RopeJoint.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { RopeJoint::RopeJoint(Body *body1, Body *body2, float x1, float y1, float x2, float y2, float maxLength, bool collideConnected) : Joint(body1, body2) , joint(NULL) { b2RopeJointDef def; def.bodyA = body1->body; def.bodyB = body2->body; body1->getLocalPoint(x1, y1, x1, y1); body2->getLocalPoint(x2, y2, x2, y2); def.localAnchorA.x = Physics::scaleDown(x1); def.localAnchorA.y = Physics::scaleDown(y1); def.localAnchorB.x = Physics::scaleDown(x2); def.localAnchorB.y = Physics::scaleDown(y2); def.maxLength = Physics::scaleDown(maxLength); def.collideConnected = collideConnected; joint = (b2RopeJoint *)createJoint(&def); } RopeJoint::~RopeJoint() { } float RopeJoint::getMaxLength() const { return Physics::scaleUp(joint->GetMaxLength()); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_WeldJoint.h0000644000000000000000000000276512316602166022541 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_WELD_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_WELD_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "WeldJoint.h" namespace love { namespace physics { namespace box2d { WeldJoint *luax_checkweldjoint(lua_State *L, int idx); int w_WeldJoint_setFrequency(lua_State *L); int w_WeldJoint_getFrequency(lua_State *L); int w_WeldJoint_setDampingRatio(lua_State *L); int w_WeldJoint_getDampingRatio(lua_State *L); extern "C" int luaopen_weldjoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_WELD_JOINT_H love-0.9.1/src/modules/physics/box2d/ChainShape.h0000644000000000000000000000524412316602166021607 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_CHAIN_SHAPE_H #define LOVE_PHYSICS_BOX2D_CHAIN_SHAPE_H // Module #include "Shape.h" #include "EdgeShape.h" namespace love { namespace physics { namespace box2d { /** * A ChainShape is a freeform collection of line segments. **/ class ChainShape : public Shape { public: /** * Create a new ChainShape from a Box2D chain shape. * @param c The chain shape. **/ ChainShape(b2ChainShape *c, bool loop = false, bool own = true); virtual ~ChainShape(); /** * Establish connectivity to a vertex that follows * the last vertex. Fails if called on a loop. * @param x The x-coordinate of the vertex. * @param y The y-coordinate of the vertex. **/ void setNextVertex(float x, float y); /** * Establish connectivity to a vertex that precedes * the first vertex. Fails if called on a loop. * @param x The x-coordinate of the vertex. * @param y The y-coordinate of the vertex. **/ void setPreviousVertex(float x, float y); /** * Gets the number of children shapes. **/ int getChildCount() const; /** * Returns a child EdgeShape. * @param index The index of the child shape. * @returns The specified child. **/ EdgeShape *getChildEdge(int index) const; /** * Returns the number of vertices in the shape. * @returns The number of vertices in the shape. **/ int getVertexCount() const; /** * Returns the vertex at the given index. * @param index The index of the vertex. * @returns The specified vertex. **/ b2Vec2 getPoint(int index) const; /** * Returns all of the vertices. * @returns The vertices the shape comprises. **/ const b2Vec2 *getPoints() const; private: // True if this ChainShape is a loop. bool loop; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_CHAIN_SHAPE_H love-0.9.1/src/modules/physics/box2d/PolygonShape.cpp0000644000000000000000000000321312316602166022541 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "PolygonShape.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" #include "common/Memoizer.h" namespace love { namespace physics { namespace box2d { PolygonShape::PolygonShape(b2PolygonShape *p, bool own) : Shape(p, own) { } PolygonShape::~PolygonShape() { } int PolygonShape::getPoints(lua_State *L) { love::luax_assert_argc(L, 0); b2PolygonShape *p = (b2PolygonShape *)shape; int count = p->GetVertexCount(); for (int i = 0; iGetVertex(i)); lua_pushnumber(L, v.x); lua_pushnumber(L, v.y); } return count*2; } bool PolygonShape::validate() const { b2PolygonShape *p = (b2PolygonShape *)shape; return p->Validate(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/CircleShape.cpp0000644000000000000000000000330412316602166022314 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "CircleShape.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" #include "common/Memoizer.h" namespace love { namespace physics { namespace box2d { CircleShape::CircleShape(b2CircleShape *c, bool own) : Shape(c, own) { } CircleShape::~CircleShape() { } float CircleShape::getRadius() const { return Physics::scaleUp(shape->m_radius); } void CircleShape::setRadius(float r) { shape->m_radius = Physics::scaleDown(r); } void CircleShape::getPoint(float &x_o, float &y_o) const { b2CircleShape *c = (b2CircleShape *) shape; x_o = Physics::scaleUp(c->m_p.x); y_o = Physics::scaleUp(c->m_p.y); } void CircleShape::setPoint(float x, float y) { b2CircleShape *c = (b2CircleShape *) shape; c->m_p = Physics::scaleDown(b2Vec2(x, y)); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_PolygonShape.cpp0000644000000000000000000000374112316602166023600 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_PolygonShape.h" namespace love { namespace physics { namespace box2d { PolygonShape *luax_checkpolygonshape(lua_State *L, int idx) { return luax_checktype(L, idx, "PolygonShape", PHYSICS_POLYGON_SHAPE_T); } int w_PolygonShape_getPoints(lua_State *L) { PolygonShape *t = luax_checkpolygonshape(L, 1); lua_remove(L, 1); return t->getPoints(L); } int w_PolygonShape_validate(lua_State *L) { PolygonShape *t = luax_checkpolygonshape(L, 1); luax_pushboolean(L, t->validate()); return 1; } static const luaL_Reg functions[] = { { "getPoints", w_PolygonShape_getPoints }, { "validate", w_PolygonShape_validate }, // From Shape. { "getType", w_Shape_getType }, { "getRadius", w_Shape_getRadius }, { "getChildCount", w_Shape_getChildCount }, { "testPoint", w_Shape_testPoint }, { "rayCast", w_Shape_rayCast }, { "computeAABB", w_Shape_computeAABB }, { "computeMass", w_Shape_computeMass }, { 0, 0 } }; extern "C" int luaopen_polygonshape(lua_State *L) { return luax_register_type(L, "PolygonShape", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/PolygonShape.h0000644000000000000000000000361012316602166022207 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_POLYGON_SHAPE_H #define LOVE_PHYSICS_BOX2D_POLYGON_SHAPE_H // Module #include "Shape.h" namespace love { namespace physics { namespace box2d { /** * You should know what a Polygon is. :) * * This class is needed so that we can easily get * the transformed points in Lua. By calling shape:getPoints(), * the result can be passed directly to love.graphics.polygon(). **/ class PolygonShape : public Shape { public: /** * Create a new PolygonShape from a Box2D polygon definition. * @param p The polygon definition. **/ PolygonShape(b2PolygonShape *p, bool own = true); virtual ~PolygonShape(); /** * Returns the transformed points of the polygon. * This function is useful for debug drawing and such. * * The result can be directly passed into love.graphics.polygon(). **/ int getPoints(lua_State *L); /** * Validate convexity. **/ bool validate() const; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_POLYGON_SHAPE_H love-0.9.1/src/modules/physics/box2d/GearJoint.h0000644000000000000000000000406012316602166021461 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_GEAR_JOINT_H #define LOVE_PHYSICS_BOX2D_GEAR_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * A gear joint is used to connect two joints together. Either joint * can be a revolute or prismatic joint. You specify a gear ratio * to bind the motions together: * coordinate1 + ratio * coordinate2 = constant * * The ratio can be negative or positive. If one joint is a revolute joint * and the other joint is a prismatic joint, then the ratio will have units * of length or units of 1/length. * Warning: The revolute and prismatic joints must be attached to * fixed bodies (which must be body1 on those joints). **/ class GearJoint : public Joint { public: /** * Creates a GearJoint connecting joint1 to joint2. **/ GearJoint(Joint *joint1, Joint *joint2, float ratio, bool collideConnected); virtual ~GearJoint(); /** * Sets the ratio. **/ void setRatio(float ratio); /** * Gets the ratio. **/ float getRatio() const; private: // The Box2D GearJoint object. b2GearJoint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_GEAR_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_Joint.cpp0000644000000000000000000000503112316602166022245 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Joint.h" #include "common/StringMap.h" namespace love { namespace physics { namespace box2d { Joint *luax_checkjoint(lua_State *L, int idx) { Joint *t = luax_checktype(L, idx, "Joint", PHYSICS_JOINT_T); if (!t->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return t; } int w_Joint_getType(lua_State *L) { Joint *t = luax_checkjoint(L, 1); const char *type = ""; Joint::getConstant(t->getType(), type); lua_pushstring(L, type); return 1; } int w_Joint_getAnchors(lua_State *L) { Joint *t = luax_checkjoint(L, 1); lua_remove(L, 1); return t->getAnchors(L); } int w_Joint_getReactionForce(lua_State *L) { Joint *t = luax_checkjoint(L, 1); lua_remove(L, 1); return t->getReactionForce(L); } int w_Joint_getReactionTorque(lua_State *L) { Joint *t = luax_checkjoint(L, 1); float inv_dt = (float)luaL_checknumber(L, 2); lua_pushnumber(L, t->getReactionTorque(inv_dt)); return 1; } int w_Joint_getCollideConnected(lua_State *L) { Joint *t = luax_checkjoint(L, 1); luax_pushboolean(L, t->getCollideConnected()); return 1; } int w_Joint_destroy(lua_State *L) { Joint *t = luax_checkjoint(L, 1); EXCEPT_GUARD(t->destroyJoint();) return 0; } static const luaL_Reg functions[] = { { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_joint(lua_State *L) { return luax_register_type(L, "Joint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/MotorJoint.cpp0000644000000000000000000000522512316602166022242 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "MotorJoint.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { MotorJoint::MotorJoint(Body *body1, Body *body2) : Joint(body1, body2) , joint(NULL) { b2MotorJointDef def; def.Initialize(body1->body, body2->body); joint = (b2MotorJoint *) createJoint(&def); } MotorJoint::MotorJoint(Body *body1, Body *body2, float correctionFactor) : Joint(body1, body2) , joint(NULL) { b2MotorJointDef def; def.Initialize(body1->body, body2->body); def.correctionFactor = correctionFactor; joint = (b2MotorJoint *) createJoint(&def); } MotorJoint::~MotorJoint() { } void MotorJoint::setLinearOffset(float x, float y) { joint->SetLinearOffset(Physics::scaleDown(b2Vec2(x, y))); } int MotorJoint::getLinearOffset(lua_State *L) const { lua_pushnumber(L, Physics::scaleUp(joint->GetLinearOffset().x)); lua_pushnumber(L, Physics::scaleUp(joint->GetLinearOffset().y)); return 2; } void MotorJoint::setAngularOffset(float angularOffset) { joint->SetAngularOffset(angularOffset); } float MotorJoint::getAngularOffset() const { return joint->GetAngularOffset(); } void MotorJoint::setMaxForce(float force) { joint->SetMaxForce(Physics::scaleDown(force)); } float MotorJoint::getMaxForce() const { return Physics::scaleUp(joint->GetMaxForce()); } void MotorJoint::setMaxTorque(float torque) { joint->SetMaxTorque(Physics::scaleDown(Physics::scaleDown(torque))); } float MotorJoint::getMaxTorque() const { return Physics::scaleUp(Physics::scaleUp(joint->GetMaxTorque())); } void MotorJoint::setCorrectionFactor(float factor) { joint->SetCorrectionFactor(factor); } float MotorJoint::getCorrectionFactor() const { return joint->GetCorrectionFactor(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/MouseJoint.cpp0000644000000000000000000000426612316602166022236 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "MouseJoint.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { MouseJoint::MouseJoint(Body *body1, float x, float y) : Joint(body1) , joint(NULL) { b2MouseJointDef def; def.bodyA = body1->world->getGroundBody(); def.bodyB = body1->body; def.maxForce = 1000.0f * body1->body->GetMass(); def.target = Physics::scaleDown(b2Vec2(x,y)); joint = (b2MouseJoint *)createJoint(&def); } MouseJoint::~MouseJoint() { } void MouseJoint::setTarget(float x, float y) { joint->SetTarget(Physics::scaleDown(b2Vec2(x, y))); } int MouseJoint::getTarget(lua_State *L) { lua_pushnumber(L, Physics::scaleUp(joint->GetTarget().x)); lua_pushnumber(L, Physics::scaleUp(joint->GetTarget().y)); return 2; } void MouseJoint::setMaxForce(float force) { joint->SetMaxForce(Physics::scaleDown(force)); } float MouseJoint::getMaxForce() const { return Physics::scaleUp(joint->GetMaxForce()); } void MouseJoint::setFrequency(float hz) { joint->SetFrequency(hz); } float MouseJoint::getFrequency() const { return joint->GetFrequency(); } void MouseJoint::setDampingRatio(float d) { joint->SetDampingRatio(d); } float MouseJoint::getDampingRatio() const { return joint->GetDampingRatio(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_Body.cpp0000644000000000000000000003301512316602166022062 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Body.h" #include "wrap_Physics.h" namespace love { namespace physics { namespace box2d { Body *luax_checkbody(lua_State *L, int idx) { Body *b = luax_checktype(L, idx, "Body", PHYSICS_BODY_T); if (b->body == 0) luaL_error(L, "Attempt to use destroyed body."); return b; } int w_Body_getX(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_pushnumber(L, t->getX()); return 1; } int w_Body_getY(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_pushnumber(L, t->getY()); return 1; } int w_Body_getAngle(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_pushnumber(L, t->getAngle()); return 1; } int w_Body_getPosition(lua_State *L) { Body *t = luax_checkbody(L, 1); float x_o, y_o; t->getPosition(x_o, y_o); lua_pushnumber(L, x_o); lua_pushnumber(L, y_o); return 2; } int w_Body_getLinearVelocity(lua_State *L) { Body *t = luax_checkbody(L, 1); float x_o, y_o; t->getLinearVelocity(x_o, y_o); lua_pushnumber(L, x_o); lua_pushnumber(L, y_o); return 2; } int w_Body_getWorldCenter(lua_State *L) { Body *t = luax_checkbody(L, 1); float x_o, y_o; t->getWorldCenter(x_o, y_o); lua_pushnumber(L, x_o); lua_pushnumber(L, y_o); return 2; } int w_Body_getLocalCenter(lua_State *L) { Body *t = luax_checkbody(L, 1); float x_o, y_o; t->getLocalCenter(x_o, y_o); lua_pushnumber(L, x_o); lua_pushnumber(L, y_o); return 2; } int w_Body_getAngularVelocity(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_pushnumber(L, t->getAngularVelocity()); return 1; } int w_Body_getMass(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_pushnumber(L, t->getMass()); return 1; } int w_Body_getInertia(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_pushnumber(L, t->getInertia()); return 1; } int w_Body_getMassData(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_remove(L, 1); return t->getMassData(L); } int w_Body_getAngularDamping(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_pushnumber(L, t->getAngularDamping()); return 1; } int w_Body_getLinearDamping(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_pushnumber(L, t->getLinearDamping()); return 1; } int w_Body_getGravityScale(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_pushnumber(L, t->getGravityScale()); return 1; } int w_Body_getType(lua_State *L) { Body *t = luax_checkbody(L, 1); const char *type = ""; Body::getConstant(t->getType(), type); lua_pushstring(L, type); return 1; } int w_Body_applyLinearImpulse(lua_State *L) { Body *t = luax_checkbody(L, 1); float jx = (float)luaL_checknumber(L, 2); float jy = (float)luaL_checknumber(L, 3); int nargs = lua_gettop(L); if (nargs <= 3 || (nargs == 4 && lua_type(L, 4) == LUA_TBOOLEAN)) { bool awake = luax_optboolean(L, 4, true); t->applyLinearImpulse(jx, jy, awake); } else if (nargs >= 5) { float rx = (float)luaL_checknumber(L, 4); float ry = (float)luaL_checknumber(L, 5); bool awake = luax_optboolean(L, 6, true); t->applyLinearImpulse(jx, jy, rx, ry, awake); } else { return luaL_error(L, "Wrong number of parameters."); } return 0; } int w_Body_applyAngularImpulse(lua_State *L) { Body *t = luax_checkbody(L, 1); float i = (float)luaL_checknumber(L, 2); bool awake = luax_optboolean(L, 3, true); t->applyAngularImpulse(i, awake); return 0; } int w_Body_applyTorque(lua_State *L) { Body *t = luax_checkbody(L, 1); float arg = (float)luaL_checknumber(L, 2); bool awake = luax_optboolean(L, 3, true); t->applyTorque(arg, awake); return 0; } int w_Body_applyForce(lua_State *L) { Body *t = luax_checkbody(L, 1); float fx = (float)luaL_checknumber(L, 2); float fy = (float)luaL_checknumber(L, 3); int nargs = lua_gettop(L); if (nargs <= 3 || (nargs == 4 && lua_type(L, 4) == LUA_TBOOLEAN)) { bool awake = luax_optboolean(L, 4, true); t->applyForce(fx, fy, awake); } else if (lua_gettop(L) >= 5) { float rx = (float)luaL_checknumber(L, 4); float ry = (float)luaL_checknumber(L, 5); bool awake = luax_optboolean(L, 6, true); t->applyForce(fx, fy, rx, ry, awake); } else { return luaL_error(L, "Wrong number of parameters."); } return 0; } int w_Body_setX(lua_State *L) { Body *t = luax_checkbody(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setX(arg1);) return 0; } int w_Body_setY(lua_State *L) { Body *t = luax_checkbody(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setY(arg1);) return 0; } int w_Body_setLinearVelocity(lua_State *L) { Body *t = luax_checkbody(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_checknumber(L, 3); t->setLinearVelocity(arg1, arg2); return 0; } int w_Body_setAngle(lua_State *L) { Body *t = luax_checkbody(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setAngle(arg1);) return 0; } int w_Body_setAngularVelocity(lua_State *L) { Body *t = luax_checkbody(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setAngularVelocity(arg1); return 0; } int w_Body_setPosition(lua_State *L) { Body *t = luax_checkbody(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_checknumber(L, 3); EXCEPT_GUARD(t->setPosition(arg1, arg2);) return 0; } int w_Body_resetMassData(lua_State *L) { Body *t = luax_checkbody(L, 1); EXCEPT_GUARD(t->resetMassData();) return 0; } int w_Body_setMassData(lua_State *L) { Body *t = luax_checkbody(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float m = (float)luaL_checknumber(L, 4); float i = (float)luaL_checknumber(L, 5); EXCEPT_GUARD(t->setMassData(x, y, m, i);) return 0; } int w_Body_setMass(lua_State *L) { Body *t = luax_checkbody(L, 1); float m = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setMass(m);) return 0; } int w_Body_setInertia(lua_State *L) { Body *t = luax_checkbody(L, 1); float i = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setInertia(i);) return 0; } int w_Body_setAngularDamping(lua_State *L) { Body *t = luax_checkbody(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setAngularDamping(arg1); return 0; } int w_Body_setLinearDamping(lua_State *L) { Body *t = luax_checkbody(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setLinearDamping(arg1); return 0; } int w_Body_setGravityScale(lua_State *L) { Body *t = luax_checkbody(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setGravityScale(arg1); return 0; } int w_Body_setType(lua_State *L) { Body *t = luax_checkbody(L, 1); const char *typeStr = luaL_checkstring(L, 2); Body::Type type; Body::getConstant(typeStr, type); EXCEPT_GUARD(t->setType(type);) return 0; } int w_Body_getWorldPoint(lua_State *L) { Body *t = luax_checkbody(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float x_o, y_o; t->getWorldPoint(x, y, x_o, y_o); lua_pushnumber(L, x_o); lua_pushnumber(L, y_o); return 2; } int w_Body_getWorldVector(lua_State *L) { Body *t = luax_checkbody(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float x_o, y_o; t->getWorldVector(x, y, x_o, y_o); lua_pushnumber(L, x_o); lua_pushnumber(L, y_o); return 2; } int w_Body_getWorldPoints(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_remove(L, 1); return t->getWorldPoints(L); } int w_Body_getLocalPoint(lua_State *L) { Body *t = luax_checkbody(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float x_o, y_o; t->getLocalPoint(x, y, x_o, y_o); lua_pushnumber(L, x_o); lua_pushnumber(L, y_o); return 2; } int w_Body_getLocalVector(lua_State *L) { Body *t = luax_checkbody(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float x_o, y_o; t->getLocalVector(x, y, x_o, y_o); lua_pushnumber(L, x_o); lua_pushnumber(L, y_o); return 2; } int w_Body_getLinearVelocityFromWorldPoint(lua_State *L) { Body *t = luax_checkbody(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float x_o, y_o; t->getLinearVelocityFromWorldPoint(x, y, x_o, y_o); lua_pushnumber(L, x_o); lua_pushnumber(L, y_o); return 2; } int w_Body_getLinearVelocityFromLocalPoint(lua_State *L) { Body *t = luax_checkbody(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float x_o, y_o; t->getLinearVelocityFromLocalPoint(x, y, x_o, y_o); lua_pushnumber(L, x_o); lua_pushnumber(L, y_o); return 2; } int w_Body_isBullet(lua_State *L) { Body *t = luax_checkbody(L, 1); luax_pushboolean(L, t->isBullet()); return 1; } int w_Body_setBullet(lua_State *L) { Body *t = luax_checkbody(L, 1); bool b = luax_toboolean(L, 2); t->setBullet(b); return 0; } int w_Body_isActive(lua_State *L) { Body *t = luax_checkbody(L, 1); luax_pushboolean(L, t->isActive()); return 1; } int w_Body_isAwake(lua_State *L) { Body *t = luax_checkbody(L, 1); luax_pushboolean(L, t->isAwake()); return 1; } int w_Body_setSleepingAllowed(lua_State *L) { Body *t = luax_checkbody(L, 1); bool b = luax_toboolean(L, 2); t->setSleepingAllowed(b); return 0; } int w_Body_isSleepingAllowed(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_pushboolean(L, t->isSleepingAllowed()); return 1; } int w_Body_setActive(lua_State *L) { Body *t = luax_checkbody(L, 1); bool b = luax_toboolean(L, 2); EXCEPT_GUARD(t->setActive(b);) return 0; } int w_Body_setAwake(lua_State *L) { Body *t = luax_checkbody(L, 1); bool b = luax_toboolean(L, 2); t->setAwake(b); return 0; } int w_Body_setFixedRotation(lua_State *L) { Body *t = luax_checkbody(L, 1); bool b = luax_toboolean(L, 2); EXCEPT_GUARD(t->setFixedRotation(b);) return 0; } int w_Body_isFixedRotation(lua_State *L) { Body *t = luax_checkbody(L, 1); bool b = t->isFixedRotation(); luax_pushboolean(L, b); return 1; } int w_Body_getFixtureList(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_remove(L, 1); int n = 0; EXCEPT_GUARD(n = t->getFixtureList(L);) return n; } int w_Body_destroy(lua_State *L) { Body *t = luax_checkbody(L, 1); EXCEPT_GUARD(t->destroy();) return 0; } int w_Body_setUserData(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_remove(L, 1); return t->setUserData(L); } int w_Body_getUserData(lua_State *L) { Body *t = luax_checkbody(L, 1); lua_remove(L, 1); return t->getUserData(L); } static const luaL_Reg functions[] = { { "getX", w_Body_getX }, { "getY", w_Body_getY }, { "getAngle", w_Body_getAngle }, { "getPosition", w_Body_getPosition }, { "getLinearVelocity", w_Body_getLinearVelocity }, { "getWorldCenter", w_Body_getWorldCenter }, { "getLocalCenter", w_Body_getLocalCenter }, { "getAngularVelocity", w_Body_getAngularVelocity }, { "getMass", w_Body_getMass }, { "getInertia", w_Body_getInertia }, { "getMassData", w_Body_getMassData }, { "getAngularDamping", w_Body_getAngularDamping }, { "getLinearDamping", w_Body_getLinearDamping }, { "getGravityScale", w_Body_getGravityScale }, { "getType", w_Body_getType }, { "applyLinearImpulse", w_Body_applyLinearImpulse }, { "applyAngularImpulse", w_Body_applyAngularImpulse }, { "applyTorque", w_Body_applyTorque }, { "applyForce", w_Body_applyForce }, { "setX", w_Body_setX }, { "setY", w_Body_setY }, { "setLinearVelocity", w_Body_setLinearVelocity }, { "setAngle", w_Body_setAngle }, { "setAngularVelocity", w_Body_setAngularVelocity }, { "setPosition", w_Body_setPosition }, { "resetMassData", w_Body_resetMassData }, { "setMassData", w_Body_setMassData }, { "setMass", w_Body_setMass }, { "setInertia", w_Body_setInertia }, { "setAngularDamping", w_Body_setAngularDamping }, { "setLinearDamping", w_Body_setLinearDamping }, { "setGravityScale", w_Body_setGravityScale }, { "setType", w_Body_setType }, { "getWorldPoint", w_Body_getWorldPoint }, { "getWorldVector", w_Body_getWorldVector }, { "getWorldPoints", w_Body_getWorldPoints }, { "getLocalPoint", w_Body_getLocalPoint }, { "getLocalVector", w_Body_getLocalVector }, { "getLinearVelocityFromWorldPoint", w_Body_getLinearVelocityFromWorldPoint }, { "getLinearVelocityFromLocalPoint", w_Body_getLinearVelocityFromLocalPoint }, { "isBullet", w_Body_isBullet }, { "setBullet", w_Body_setBullet }, { "isActive", w_Body_isActive }, { "isAwake", w_Body_isAwake }, { "setSleepingAllowed", w_Body_setSleepingAllowed }, { "isSleepingAllowed", w_Body_isSleepingAllowed }, { "setActive", w_Body_setActive }, { "setAwake", w_Body_setAwake }, { "setFixedRotation", w_Body_setFixedRotation }, { "isFixedRotation", w_Body_isFixedRotation }, { "getFixtureList", w_Body_getFixtureList }, { "destroy", w_Body_destroy }, { "setUserData", w_Body_setUserData }, { "getUserData", w_Body_getUserData }, { 0, 0 } }; extern "C" int luaopen_body(lua_State *L) { return luax_register_type(L, "Body", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/EdgeShape.h0000644000000000000000000000324712316602166021432 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_EDGE_SHAPE_H #define LOVE_PHYSICS_BOX2D_EDGE_SHAPE_H // Module #include "Shape.h" namespace love { namespace physics { namespace box2d { /** * An Edge is just a line segment. Edges are designed to * be connected and/or chained together. **/ class EdgeShape : public Shape { public: /** * Create a new EdgeShape from a Box2D edge shape. * @param e The edge shape. **/ EdgeShape(b2EdgeShape *e, bool own = true); virtual ~EdgeShape(); /** * Returns the transformed points of the edge shape. * This function is useful for debug drawing and such. * * The result can be directly passed into love.graphics.line(). **/ int getPoints(lua_State *L); }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_EDGE_SHAPE_H love-0.9.1/src/modules/physics/box2d/Contact.cpp0000644000000000000000000000564312316602166021535 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Contact.h" #include "World.h" #include "Physics.h" #include "common/Memoizer.h" namespace love { namespace physics { namespace box2d { Contact::Contact(b2Contact *contact) : contact(contact) { Memoizer::add(contact, this); } Contact::~Contact() { invalidate(); } void Contact::invalidate() { if (contact != NULL) { Memoizer::remove(contact); contact = NULL; } } bool Contact::isValid() { return contact != NULL ? true : false; } int Contact::getPositions(lua_State *L) { love::luax_assert_argc(L, 1, 1); b2WorldManifold manifold; contact->GetWorldManifold(&manifold); int points = contact->GetManifold()->pointCount; for (int i = 0; i < points; i++) { b2Vec2 position = Physics::scaleUp(manifold.points[i]); lua_pushnumber(L, position.x); lua_pushnumber(L, position.y); } return points*2; } int Contact::getNormal(lua_State *L) { love::luax_assert_argc(L, 1, 1); b2WorldManifold manifold; contact->GetWorldManifold(&manifold); lua_pushnumber(L, manifold.normal.x); lua_pushnumber(L, manifold.normal.y); return 2; } float Contact::getFriction() const { return contact->GetFriction(); } float Contact::getRestitution() const { return contact->GetRestitution(); } bool Contact::isEnabled() const { return contact->IsEnabled(); } bool Contact::isTouching() const { return contact->IsTouching(); } void Contact::setFriction(float friction) { contact->SetFriction(friction); } void Contact::setRestitution(float restitution) { contact->SetRestitution(restitution); } void Contact::setEnabled(bool enabled) { contact->SetEnabled(enabled); } void Contact::resetFriction() { contact->ResetFriction(); } void Contact::resetRestitution() { contact->ResetRestitution(); } void Contact::setTangentSpeed(float speed) { contact->SetTangentSpeed(speed); } float Contact::getTangentSpeed() const { return contact->GetTangentSpeed(); } void Contact::getChildren(int &childA, int &childB) { childA = contact->GetChildIndexA(); childB = contact->GetChildIndexB(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_PrismaticJoint.h0000644000000000000000000000427712316602166023601 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_PRISMATIC_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_PRISMATIC_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "PrismaticJoint.h" namespace love { namespace physics { namespace box2d { PrismaticJoint *luax_checkprismaticjoint(lua_State *L, int idx); int w_PrismaticJoint_getJointTranslation(lua_State *L); int w_PrismaticJoint_getJointSpeed(lua_State *L); int w_PrismaticJoint_setMotorEnabled(lua_State *L); int w_PrismaticJoint_isMotorEnabled(lua_State *L); int w_PrismaticJoint_setMaxMotorForce(lua_State *L); int w_PrismaticJoint_setMotorSpeed(lua_State *L); int w_PrismaticJoint_getMotorSpeed(lua_State *L); int w_PrismaticJoint_getMotorForce(lua_State *L); int w_PrismaticJoint_getMaxMotorForce(lua_State *L); int w_PrismaticJoint_setLimitsEnabled(lua_State *L); int w_PrismaticJoint_hasLimitsEnabled(lua_State *L); int w_PrismaticJoint_setUpperLimit(lua_State *L); int w_PrismaticJoint_setLowerLimit(lua_State *L); int w_PrismaticJoint_setLimits(lua_State *L); int w_PrismaticJoint_getLowerLimit(lua_State *L); int w_PrismaticJoint_getUpperLimit(lua_State *L); int w_PrismaticJoint_getLimits(lua_State *L); extern "C" int luaopen_prismaticjoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_PRISMATIC_JOINT_H love-0.9.1/src/modules/physics/box2d/PulleyJoint.cpp0000644000000000000000000000426212316602166022414 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "PulleyJoint.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { PulleyJoint::PulleyJoint(Body *bodyA, Body *bodyB, b2Vec2 groundAnchorA, b2Vec2 groundAnchorB, b2Vec2 anchorA, b2Vec2 anchorB, float ratio, bool collideConnected) : Joint(bodyA, bodyB) , joint(NULL) { b2PulleyJointDef def; def.Initialize(bodyA->body, bodyB->body, Physics::scaleDown(groundAnchorA), Physics::scaleDown(groundAnchorB), \ Physics::scaleDown(anchorA), Physics::scaleDown(anchorB), ratio); def.collideConnected = collideConnected; joint = (b2PulleyJoint *)createJoint(&def); } PulleyJoint::~PulleyJoint() { } int PulleyJoint::getGroundAnchors(lua_State *L) { lua_pushnumber(L, Physics::scaleUp(joint->GetGroundAnchorA().x)); lua_pushnumber(L, Physics::scaleUp(joint->GetGroundAnchorA().y)); lua_pushnumber(L, Physics::scaleUp(joint->GetGroundAnchorB().x)); lua_pushnumber(L, Physics::scaleUp(joint->GetGroundAnchorB().y)); return 4; } float PulleyJoint::getLengthA() const { return Physics::scaleUp(joint->GetLengthA()); } float PulleyJoint::getLengthB() const { return Physics::scaleUp(joint->GetLengthB()); } float PulleyJoint::getRatio() const { return joint->GetRatio(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_GearJoint.h0000644000000000000000000000261512316602166022516 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_GEAR_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_GEAR_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "GearJoint.h" namespace love { namespace physics { namespace box2d { GearJoint *luax_checkgearjoint(lua_State *L, int idx); int w_GearJoint_setRatio(lua_State *L); int w_GearJoint_getRatio(lua_State *L); extern "C" int luaopen_gearjoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_GEAR_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_Shape.h0000644000000000000000000000305112316602166021667 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_SHAPE_H #define LOVE_PHYSICS_BOX2D_WRAP_SHAPE_H // LOVE #include "common/runtime.h" #include "Shape.h" #include "wrap_Physics.h" namespace love { namespace physics { namespace box2d { Shape *luax_checkshape(lua_State *L, int idx); int w_Shape_getType(lua_State *L); int w_Shape_getRadius(lua_State *L); int w_Shape_getChildCount(lua_State *L); int w_Shape_testPoint(lua_State *L); int w_Shape_rayCast(lua_State *L); int w_Shape_computeAABB(lua_State *L); int w_Shape_computeMass(lua_State *L); extern "C" int luaopen_shape(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_SHAPE_H love-0.9.1/src/modules/physics/box2d/FrictionJoint.h0000644000000000000000000000362412316602166022365 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_FRICTION_JOINT_H #define LOVE_PHYSICS_BOX2D_FRICTION_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * A FrictionJoint applies friction to a body. **/ class FrictionJoint : public Joint { public: /** * Creates a new FrictionJoint connecting body1 and body2. **/ FrictionJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected); virtual ~FrictionJoint(); /** * Sets the maximum friction force in Newtons. **/ void setMaxForce(float force); /** * Gets the maximum friction force in Newtons. **/ float getMaxForce() const; /** * Sets the maximum friction torque in Newton-meters. **/ void setMaxTorque(float torque); /** * Gets the maximum friction torque in Newton-meters. **/ float getMaxTorque() const; private: // The Box2D friction joint object. b2FrictionJoint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_FRICTION_JOINT_H love-0.9.1/src/modules/physics/box2d/WeldJoint.h0000644000000000000000000000355712316602166021510 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WELD_JOINT_H #define LOVE_PHYSICS_BOX2D_WELD_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * A WeldJoint essentially glues two bodies together. **/ class WeldJoint : public Joint { public: /** * Creates a new WeldJoint connecting body1 and body2. **/ WeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected); virtual ~WeldJoint(); /** * Sets the response speed. **/ void setFrequency(float hz); /** * Gets the response speed. **/ float getFrequency() const; /** * Sets the damping ratio. * 0 = no damping, 1 = critical damping. **/ void setDampingRatio(float d); /** * Gets the damping ratio. * 0 = no damping, 1 = critical damping. **/ float getDampingRatio() const; private: // The Box2D weld joint object. b2WeldJoint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WELD_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_RevoluteJoint.h0000644000000000000000000000424412316602166023445 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_REVOLUTE_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_REVOLUTE_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "RevoluteJoint.h" namespace love { namespace physics { namespace box2d { RevoluteJoint *luax_checkrevolutejoint(lua_State *L, int idx); int w_RevoluteJoint_getJointAngle(lua_State *L); int w_RevoluteJoint_getJointSpeed(lua_State *L); int w_RevoluteJoint_setMotorEnabled(lua_State *L); int w_RevoluteJoint_isMotorEnabled(lua_State *L); int w_RevoluteJoint_setMaxMotorTorque(lua_State *L); int w_RevoluteJoint_setMotorSpeed(lua_State *L); int w_RevoluteJoint_getMotorSpeed(lua_State *L); int w_RevoluteJoint_getMotorTorque(lua_State *L); int w_RevoluteJoint_getMaxMotorTorque(lua_State *L); int w_RevoluteJoint_setLimitsEnabled(lua_State *L); int w_RevoluteJoint_hasLimitsEnabled(lua_State *L); int w_RevoluteJoint_setUpperLimit(lua_State *L); int w_RevoluteJoint_setLowerLimit(lua_State *L); int w_RevoluteJoint_setLimits(lua_State *L); int w_RevoluteJoint_getLowerLimit(lua_State *L); int w_RevoluteJoint_getUpperLimit(lua_State *L); int w_RevoluteJoint_getLimits(lua_State *L); extern "C" int luaopen_revolutejoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_REVOLUTE_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_Physics.h0000644000000000000000000000375212316602166022261 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_PHYSICS_H #define LOVE_PHYSICS_BOX2D_WRAP_PHYSICS_H // LOVE #include "common/config.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { int w_newWorld(lua_State *L); int w_newBody(lua_State *L); int w_newFixture(lua_State *L); int w_newCircleShape(lua_State *L); int w_newRectangleShape(lua_State *L); int w_newPolygonShape(lua_State *L); int w_newEdgeShape(lua_State *L); int w_newChainShape(lua_State *L); int w_newDistanceJoint(lua_State *L); int w_newMouseJoint(lua_State *L); int w_newRevoluteJoint(lua_State *L); int w_newPrismaticJoint(lua_State *L); int w_newPulleyJoint(lua_State *L); int w_newGearJoint(lua_State *L); int w_newFrictionJoint(lua_State *L); int w_newWeldJoint(lua_State *L); int w_newWheelJoint(lua_State *L); int w_newRopeJoint(lua_State *L); int w_newMotorJoint(lua_State *L); int w_getDistance(lua_State *L); int w_setMeter(lua_State *L); int w_getMeter(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_physics(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_PHYSICS_H love-0.9.1/src/modules/physics/box2d/wrap_RopeJoint.h0000644000000000000000000000255112316602166022544 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_ROPE_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_ROPE_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "RopeJoint.h" namespace love { namespace physics { namespace box2d { RopeJoint *luax_checkropejoint(lua_State *L, int idx); int w_RopeJoint_getMaxLength(lua_State *L); extern "C" int luaopen_ropejoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_ROPE_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_ChainShape.h0000644000000000000000000000320312316602166022631 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_CHAIN_SHAPE_H #define LOVE_PHYSICS_BOX2D_WRAP_CHAIN_SHAPE_H // LOVE #include "common/runtime.h" #include "wrap_Shape.h" #include "ChainShape.h" namespace love { namespace physics { namespace box2d { ChainShape *luax_checkchainshape(lua_State *L, int idx); int w_ChainShape_setNextVertex(lua_State *L); int w_ChainShape_setPreviousVertex(lua_State *L); int w_ChainShape_getChildCount(lua_State *L); int w_ChainShape_getChildEdge(lua_State *L); int w_ChainShape_getVertexCount(lua_State *L); int w_ChainShape_getPoint(lua_State *L); int w_ChainShape_getPoints(lua_State *L); extern "C" int luaopen_chainshape(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_CHAIN_SHAPE_H love-0.9.1/src/modules/physics/box2d/wrap_MotorJoint.cpp0000644000000000000000000000757012316602166023300 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_MotorJoint.h" namespace love { namespace physics { namespace box2d { MotorJoint *luax_checkmotorjoint(lua_State *L, int idx) { MotorJoint *j = luax_checktype(L, idx, "MotorJoint", PHYSICS_MOTOR_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_MotorJoint_setLinearOffset(lua_State *L) { MotorJoint *t = luax_checkmotorjoint(L, 1); float x = (float) luaL_checknumber(L, 2); float y = (float) luaL_checknumber(L, 3); t->setLinearOffset(x, y); return 0; } int w_MotorJoint_getLinearOffset(lua_State *L) { MotorJoint *t = luax_checkmotorjoint(L, 1); return t->getLinearOffset(L); } int w_MotorJoint_setAngularOffset(lua_State *L) { MotorJoint *t = luax_checkmotorjoint(L, 1); float arg1 = (float) luaL_checknumber(L, 2); t->setAngularOffset(arg1); return 0; } int w_MotorJoint_getAngularOffset(lua_State *L) { MotorJoint *t = luax_checkmotorjoint(L, 1); lua_pushnumber(L, t->getAngularOffset()); return 1; } int w_MotorJoint_setMaxForce(lua_State *L) { MotorJoint *t = luax_checkmotorjoint(L, 1); float arg1 = (float) luaL_checknumber(L, 2); EXCEPT_GUARD(t->setMaxForce(arg1);) return 0; } int w_MotorJoint_getMaxForce(lua_State *L) { MotorJoint *t = luax_checkmotorjoint(L, 1); lua_pushnumber(L, t->getMaxForce()); return 1; } int w_MotorJoint_setMaxTorque(lua_State *L) { MotorJoint *t = luax_checkmotorjoint(L, 1); float arg1 = (float) luaL_checknumber(L, 2); EXCEPT_GUARD(t->setMaxTorque(arg1);) return 0; } int w_MotorJoint_getMaxTorque(lua_State *L) { MotorJoint *t = luax_checkmotorjoint(L, 1); lua_pushnumber(L, t->getMaxTorque()); return 1; } int w_MotorJoint_setCorrectionFactor(lua_State *L) { MotorJoint *t = luax_checkmotorjoint(L, 1); float arg1 = (float) luaL_checknumber(L, 2); EXCEPT_GUARD(t->setCorrectionFactor(arg1);) return 0; } int w_MotorJoint_getCorrectionFactor(lua_State *L) { MotorJoint *t = luax_checkmotorjoint(L, 1); lua_pushnumber(L, t->getCorrectionFactor()); return 1; } static const luaL_Reg functions[] = { { "setLinearOffset", w_MotorJoint_setLinearOffset }, { "getLinearOffset", w_MotorJoint_getLinearOffset }, { "setAngularOffset", w_MotorJoint_setAngularOffset }, { "getAngularOffset", w_MotorJoint_getAngularOffset }, { "setMaxForce", w_MotorJoint_setMaxForce }, { "getMaxForce", w_MotorJoint_getMaxForce }, { "setMaxTorque", w_MotorJoint_setMaxTorque }, { "getMaxTorque", w_MotorJoint_getMaxTorque }, { "setCorrectionFactor", w_MotorJoint_setCorrectionFactor }, { "getCorrectionFactor", w_MotorJoint_getCorrectionFactor }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_motorjoint(lua_State *L) { return luax_register_type(L, "MotorJoint", functions); } } // box2d } // phyics } // love love-0.9.1/src/modules/physics/box2d/PrismaticJoint.h0000644000000000000000000000636312316602166022546 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_PRISMATIC_JOINT_H #define LOVE_PHYSICS_BOX2D_PRISMATIC_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * PrismaticJoints allow shapes to move in relation to eachother * along a defined axis. **/ class PrismaticJoint : public Joint { public: /** * Creates a new PrismaticJoint connecting body1 and body2. **/ PrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected); virtual ~PrismaticJoint(); /** * Get the current joint translation, usually in meters. **/ float getJointTranslation() const; /** * Get the current joint translation speed, usually in meters per second. **/ float getJointSpeed() const; /** * Enable/disable the joint motor. **/ void setMotorEnabled(bool enable); /** * Checks whether the motor is enabled. **/ bool isMotorEnabled() const; /** * Set the maximum motor force, usually in N. **/ void setMaxMotorForce(float force); /** * Set the motor speed, usually in meters per second. **/ void setMotorSpeed(float speed); /** * Get the motor speed, usually in meters per second. **/ float getMotorSpeed() const; /** * Get the current motor force, usually in N. * @param inv_dt The inverse time step. **/ float getMotorForce(float inv_dt) const; /** * Get the maximum motor force, usually in N. **/ float getMaxMotorForce() const; /** * Enable/disable the joint limits. **/ void setLimitsEnabled(bool enable); /** * Checks whether limits are enabled. **/ bool hasLimitsEnabled() const; /** * Sets the upper limit, usually in meters. **/ void setUpperLimit(float limit); /** * Sets the lower limit, usually in meters. **/ void setLowerLimit(float limit); /** * Sets the limits, usually in meters. **/ void setLimits(float lower, float upper); /** * Gets the lower limit, usually in meters. **/ float getLowerLimit() const; /** * Gets the upper limit, usually in meters. **/ float getUpperLimit() const; /** * Gets the limits, usually in meters. * @returns The upper limit. * @returns The lower limit. **/ int getLimits(lua_State *L); private: // The Box2D prismatic joint object. b2PrismaticJoint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_PRISMATIC_JOINT_H love-0.9.1/src/modules/physics/box2d/WheelJoint.h0000644000000000000000000000564412316602166021660 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WHEEL_JOINT_H #define LOVE_PHYSICS_BOX2D_WHEEL_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * WheelJoints provide two degrees of freedom: translation * along a defined axis and rotation in the plane. Designed * for vehicle suspensions. **/ class WheelJoint : public Joint { public: /** * Creates a new WheelJoint connecting body1 and body2. **/ WheelJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected); virtual ~WheelJoint(); /** * Get the current joint translation, usually in meters. **/ float getJointTranslation() const; /** * Get the current joint translation speed, usually in meters per second. **/ float getJointSpeed() const; /** * Enable/disable the joint motor. **/ void setMotorEnabled(bool enable); /** * Checks whether the motor is enabled. **/ bool isMotorEnabled() const; /** * Set the motor speed, usually in meters per second. **/ void setMotorSpeed(float speed); /** * Get the motor speed, usually in meters per second. **/ float getMotorSpeed() const; /** * Set the maximum motor torque, usually in N. **/ void setMaxMotorTorque(float torque); /** * Get the maximum motor torque, usually in N. **/ float getMaxMotorTorque() const; /** * Get the current motor torque, usually in N. * @param inv_dt The inverse time step. **/ float getMotorTorque(float inv_dt) const; /** * Set the spring frequency, in hertz. Setting the frequency to 0 * disables the spring. **/ void setSpringFrequency(float hz); /** * Get the spring frequency, in hertz. **/ float getSpringFrequency() const; /** * Set the spring damping ratio. **/ void setSpringDampingRatio(float ratio); /** * Get the spring damping ratio. **/ float getSpringDampingRatio() const; private: // The Box2D wheel joint object. b2WheelJoint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WHEEL_JOINT_H love-0.9.1/src/modules/physics/box2d/Contact.h0000644000000000000000000000661112316602166021176 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_CONTACT_H #define LOVE_PHYSICS_BOX2D_CONTACT_H // LOVE #include "common/Object.h" #include "common/runtime.h" #include "World.h" // Box2D #include namespace love { namespace physics { namespace box2d { class World; /** * A Contact represents a collision point between * two shapes. **/ class Contact : public Object { public: // Friends. friend class World; friend class World::ContactCallback; /** * Creates a new Contact by copying a Box2D contact * point. It does not store the pointer, but copy the * data pointed to. * @param contact Pointer to the Box2D contact. **/ Contact(b2Contact *contact); virtual ~Contact(); /** * Removes the b2Contact pointer from Memoizer and sets it * to null on the Contact. **/ void invalidate(); /** * Returns if the Contact still points to a valid b2Contact. * @return True if the contact is still valid or false if it has been destroyed. **/ bool isValid(); /** * Gets the position of each point of contact. * @return The position along the x-axis. * @return The position along the y-axis. **/ int getPositions(lua_State *L); /** * Gets the collision normal. * @return The x-component of the normal. * @return The y-component of the normal. **/ int getNormal(lua_State *L); /** * The mixed friction between the two fixtures at * the point of impact. **/ float getFriction() const; /** * The mixed restitution of the two fixtures * at the point of impact. **/ float getRestitution() const; /** * Check if the contact is enabled. **/ bool isEnabled() const; /** * Check if the contact is touching. **/ bool isTouching() const; // Only call the setters in PreSolve /** * Override the default friction mixture. **/ void setFriction(float friction); /** * Override the default restitution mixture. **/ void setRestitution(float restitution); /** * Enable/disable this contact. **/ void setEnabled(bool enabled); /** * Reset the friction mixture to the default * value. **/ void resetFriction(); /** * Reset the restitution mixture to the default * value. **/ void resetRestitution(); /** * Set the desired tangent speed. **/ void setTangentSpeed(float speed); /** * Get the desired tangent speed. **/ float getTangentSpeed() const; void getChildren(int &childA, int &childB); private: // The Box2D contact. b2Contact *contact; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_CONTACT_H love-0.9.1/src/modules/physics/box2d/wrap_Contact.h0000644000000000000000000000354212316602166022227 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_CONTACT_H #define LOVE_PHYSICS_BOX2D_WRAP_CONTACT_H // LOVE #include "common/runtime.h" #include "Contact.h" namespace love { namespace physics { namespace box2d { Contact *luax_checkcontact(lua_State *L, int idx); int w_Contact_getPositions(lua_State *L); int w_Contact_getNormal(lua_State *L); int w_Contact_getFriction(lua_State *L); int w_Contact_getRestitution(lua_State *L); int w_Contact_isEnabled(lua_State *L); int w_Contact_isTouching(lua_State *L); int w_Contact_setFriction(lua_State *L); int w_Contact_setRestitution(lua_State *L); int w_Contact_setEnabled(lua_State *L); int w_Contact_resetFriction(lua_State *L); int w_Contact_resetRestitution(lua_State *L); int w_Contact_setTangentSpeed(lua_State *L); int w_Contact_getTangentSpeed(lua_State *L); int w_Contact_getChildren(lua_State *L); extern "C" int luaopen_contact(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_CONTACT_H love-0.9.1/src/modules/physics/box2d/wrap_WheelJoint.cpp0000644000000000000000000001104012316602166023227 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_WheelJoint.h" namespace love { namespace physics { namespace box2d { WheelJoint *luax_checkwheeljoint(lua_State *L, int idx) { WheelJoint *j = luax_checktype(L, idx, "WheelJoint", PHYSICS_WHEEL_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_WheelJoint_getJointTranslation(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); lua_pushnumber(L, t->getJointTranslation()); return 1; } int w_WheelJoint_getJointSpeed(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); lua_pushnumber(L, t->getJointSpeed()); return 1; } int w_WheelJoint_setMotorEnabled(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); bool arg1 = luax_toboolean(L, 2); t->setMotorEnabled(arg1); return 0; } int w_WheelJoint_isMotorEnabled(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); luax_pushboolean(L, t->isMotorEnabled()); return 1; } int w_WheelJoint_setMotorSpeed(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setMotorSpeed(arg1); return 0; } int w_WheelJoint_getMotorSpeed(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); lua_pushnumber(L, t->getMotorSpeed()); return 1; } int w_WheelJoint_setMaxMotorTorque(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setMaxMotorTorque(arg1); return 0; } int w_WheelJoint_getMaxMotorTorque(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); lua_pushnumber(L, t->getMaxMotorTorque()); return 1; } int w_WheelJoint_getMotorTorque(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); float inv_dt = (float)luaL_checknumber(L, 2); lua_pushnumber(L, t->getMotorTorque(inv_dt)); return 1; } int w_WheelJoint_setSpringFrequency(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setSpringFrequency(arg1); return 0; } int w_WheelJoint_getSpringFrequency(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); lua_pushnumber(L, t->getSpringFrequency()); return 1; } int w_WheelJoint_setSpringDampingRatio(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setSpringDampingRatio(arg1); return 0; } int w_WheelJoint_getSpringDampingRatio(lua_State *L) { WheelJoint *t = luax_checkwheeljoint(L, 1); lua_pushnumber(L, t->getSpringDampingRatio()); return 1; } static const luaL_Reg functions[] = { { "getJointTranslation", w_WheelJoint_getJointTranslation }, { "getJointSpeed", w_WheelJoint_getJointSpeed }, { "setMotorEnabled", w_WheelJoint_setMotorEnabled }, { "isMotorEnabled", w_WheelJoint_isMotorEnabled }, { "setMotorSpeed", w_WheelJoint_setMotorSpeed }, { "getMotorSpeed", w_WheelJoint_getMotorSpeed }, { "setMaxMotorTorque", w_WheelJoint_setMaxMotorTorque }, { "getMaxMotorTorque", w_WheelJoint_getMaxMotorTorque }, { "getMotorTorque", w_WheelJoint_getMotorTorque }, { "setSpringFrequency", w_WheelJoint_setSpringFrequency }, { "getSpringFrequency", w_WheelJoint_getSpringFrequency }, { "setSpringDampingRatio", w_WheelJoint_setSpringDampingRatio }, { "getSpringDampingRatio", w_WheelJoint_getSpringDampingRatio }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_wheeljoint(lua_State *L) { return luax_register_type(L, "WheelJoint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/World.h0000644000000000000000000001515112316602166020671 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WORLD_H #define LOVE_PHYSICS_BOX2D_WORLD_H // LOVE #include "common/Object.h" #include "common/runtime.h" #include "common/Reference.h" // STD #include // Box2D #include namespace love { namespace physics { namespace box2d { class Contact; class Body; class Fixture; class Joint; /** * The World is the "God" container class, * which contains all Bodies and Joints. Shapes * are contained in their associated Body. * * Bodies in different worlds can obviously not * collide. * * The world also controls global parameters, like * gravity. **/ class World : public Object, public b2ContactListener, public b2ContactFilter, public b2DestructionListener { public: // Friends. friend class Joint; friend class DistanceJoint; friend class MouseJoint; friend class Body; friend class Fixture; class ContactCallback { public: Reference *ref; ContactCallback(); ~ContactCallback(); void process(b2Contact *contact, const b2ContactImpulse *impulse = NULL); }; class ContactFilter { public: Reference *ref; ContactFilter(); ~ContactFilter(); bool process(Fixture *a, Fixture *b); }; class QueryCallback : public b2QueryCallback { public: Reference *ref; QueryCallback(); ~QueryCallback(); virtual bool ReportFixture(b2Fixture *fixture); }; class RayCastCallback : public b2RayCastCallback { public: Reference *ref; RayCastCallback(); ~RayCastCallback(); virtual float32 ReportFixture(b2Fixture *fixture, const b2Vec2 &point, const b2Vec2 &normal, float32 fraction); }; /** * Creates a new world. **/ World(); /** * Creates a new world with the given gravity * and whether or not the bodies should sleep when appropriate. * @param gravity The gravity of the World. * @param sleep True if the bodies should be able to sleep, * false otherwise. **/ World(b2Vec2 gravity, bool sleep); virtual ~World(); /** * Updates everything in the world one timestep. * This is called update() and not step() to conform * with all other objects in LOVE. * @param dt The timestep. **/ void update(float dt); // From b2ContactListener void BeginContact(b2Contact *contact); void EndContact(b2Contact *contact); void PreSolve(b2Contact *contact, const b2Manifold *oldManifold); void PostSolve(b2Contact *contact, const b2ContactImpulse *impulse); // From b2ContactFilter bool ShouldCollide(b2Fixture *fixtureA, b2Fixture *fixtureB); // From b2DestructionListener void SayGoodbye(b2Fixture *fixture); void SayGoodbye(b2Joint *joint); /** * Returns true if the Box2D world is alive. **/ bool isValid() const; /** * Receives up to four Lua functions as arguments. Each function is * collision callback for the four events (in order): begin, end, * presolve and postsolve. The value "nil" is accepted if one or * more events are uninteresting. **/ int setCallbacks(lua_State *L); /** * Returns the functions previously set by setCallbacks. **/ int getCallbacks(lua_State *L); /** * Sets the ContactFilter callback. **/ int setContactFilter(lua_State *L); /** * Gets the ContactFilter callback. **/ int getContactFilter(lua_State *L); /** * Sets the current gravity of the World. * @param x Gravity in the x-direction. * @param y Gravity in the y-direction. **/ void setGravity(float x, float y); /** * Gets the current gravity. * @returns Gravity in the x-direction. * @returns Gravity in the y-direction. **/ int getGravity(lua_State *L); /** * Translate the world origin. * @param x The new world origin's x-coordinate relative to the old origin. * @param y The new world origin's y-coordinate relative to the old origin. **/ void translateOrigin(float x, float y); /** * Sets whether this World allows sleep. * @param allow True to allow, false to disallow. **/ void setSleepingAllowed(bool allow); /** * Returns whether this World allows sleep. * @return True if allowed, false if disallowed. **/ bool isSleepingAllowed() const; /** * Returns whether this World is currently locked. * If it's locked, it's in the middle of a timestep. * @return Whether the World is locked. **/ bool isLocked() const; /** * Get the current body count. * @return The number of bodies. **/ int getBodyCount() const; /** * Get the current joint count. * @return The number of joints. **/ int getJointCount() const; /** * Get the current contact count. * @return The number of contacts. **/ int getContactCount() const; /** * Get an array of all the Bodies in the World. * @return An array of Bodies. **/ int getBodyList(lua_State *L) const; /** * Get an array of all the Joints in the World. * @return An array of Joints. **/ int getJointList(lua_State *L) const; /** * Get an array of all the Contacts in the World. * @return An array of Contacts. **/ int getContactList(lua_State *L) const; /** * Gets the ground body. * @return The ground body. **/ b2Body *getGroundBody() const; /** * Gets all fixtures that overlap a given bounding box. **/ int queryBoundingBox(lua_State *L); /** * Raycasts the World for all Fixtures in the path of the ray. **/ int rayCast(lua_State *L); /** * Destroy this world. **/ void destroy(); private: // Pointer to the Box2D world. b2World *world; // Ground body b2Body *groundBody; // The list of to be destructed bodies. std::vector destructBodies; std::vector destructFixtures; std::vector destructJoints; bool destructWorld; // Contact callbacks. ContactCallback begin, end, presolve, postsolve; ContactFilter filter; QueryCallback query; RayCastCallback raycast; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WORLD_H love-0.9.1/src/modules/physics/box2d/wrap_Joint.h0000644000000000000000000000277212316602166021723 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_JOINT_H // LOVE #include "common/runtime.h" #include "Joint.h" namespace love { namespace physics { namespace box2d { Joint *luax_checkjoint(lua_State *L, int idx); int w_Joint_getType(lua_State *L); int w_Joint_getAnchors(lua_State *L); int w_Joint_getReactionForce(lua_State *L); int w_Joint_getReactionTorque(lua_State *L); int w_Joint_getCollideConnected(lua_State *L); int w_Joint_destroy(lua_State *L); extern "C" int luaopen_joint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_WeldJoint.cpp0000644000000000000000000000476412316602166023075 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_WeldJoint.h" namespace love { namespace physics { namespace box2d { WeldJoint *luax_checkweldjoint(lua_State *L, int idx) { WeldJoint *j = luax_checktype(L, idx, "WeldJoint", PHYSICS_WELD_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_WeldJoint_setFrequency(lua_State *L) { WeldJoint *t = luax_checkweldjoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setFrequency(arg1); return 0; } int w_WeldJoint_getFrequency(lua_State *L) { WeldJoint *t = luax_checkweldjoint(L, 1); lua_pushnumber(L, t->getFrequency()); return 1; } int w_WeldJoint_setDampingRatio(lua_State *L) { WeldJoint *t = luax_checkweldjoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setDampingRatio(arg1); return 0; } int w_WeldJoint_getDampingRatio(lua_State *L) { WeldJoint *t = luax_checkweldjoint(L, 1); lua_pushnumber(L, t->getDampingRatio()); return 1; } static const luaL_Reg functions[] = { { "setFrequency", w_WeldJoint_setFrequency }, { "getFrequency", w_WeldJoint_getFrequency }, { "setDampingRatio", w_WeldJoint_setDampingRatio }, { "getDampingRatio", w_WeldJoint_getDampingRatio }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_weldjoint(lua_State *L) { return luax_register_type(L, "WeldJoint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/MotorJoint.h0000644000000000000000000000446712316602166021716 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_MOTOR_JOINT_H #define LOVE_PHYSICS_BOX2D_MOTOR_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * A motor joint is used to control the relative motion * between two bodies. A typical usage is to control the movement * of a dynamic body with respect to the ground. */ class MotorJoint : public Joint { public: MotorJoint(Body *body1, Body* body2); MotorJoint(Body *body1, Body* body2, float correctionFactor); virtual ~MotorJoint(); /// Set/get the target linear offset, in frame A, in meters. void setLinearOffset(float x, float y); int getLinearOffset(lua_State *L) const; /// Set/get the target angular offset, in radians. void setAngularOffset(float angularOffset); float getAngularOffset() const; /// Set the maximum friction force. void setMaxForce(float force); /// Get the maximum friction force. float getMaxForce() const; /// Set the maximum friction torque. void setMaxTorque(float torque); /// Get the maximum friction torque. float getMaxTorque() const; /// Set the position correction factor in the range [0,1]. void setCorrectionFactor(float factor); /// Get the position correction factor in the range [0,1]. float getCorrectionFactor() const; private: // The Box2D MotorJoint object. b2MotorJoint *joint; }; // MotorJoint } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_MOTOR_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_World.cpp0000644000000000000000000001215012316602166022251 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_World.h" namespace love { namespace physics { namespace box2d { World *luax_checkworld(lua_State *L, int idx) { World *w = luax_checktype(L, idx, "World", PHYSICS_WORLD_T); if (!w->isValid()) luaL_error(L, "Attempt to use destroyed world."); return w; } int w_World_update(lua_State *L) { World *t = luax_checkworld(L, 1); float dt = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->update(dt);) return 0; } int w_World_setCallbacks(lua_State *L) { World *t = luax_checkworld(L, 1); lua_remove(L, 1); return t->setCallbacks(L); } int w_World_getCallbacks(lua_State *L) { World *t = luax_checkworld(L, 1); lua_remove(L, 1); return t->getCallbacks(L); } int w_World_setContactFilter(lua_State *L) { World *t = luax_checkworld(L, 1); lua_remove(L, 1); return t->setContactFilter(L); } int w_World_getContactFilter(lua_State *L) { World *t = luax_checkworld(L, 1); lua_remove(L, 1); return t->getContactFilter(L); } int w_World_setGravity(lua_State *L) { World *t = luax_checkworld(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_checknumber(L, 3); t->setGravity(arg1, arg2); return 0; } int w_World_getGravity(lua_State *L) { World *t = luax_checkworld(L, 1); lua_remove(L, 1); return t->getGravity(L); } int w_World_translateOrigin(lua_State *L) { World *t = luax_checkworld(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_checknumber(L, 3); EXCEPT_GUARD(t->translateOrigin(arg1, arg2);) return 0; } int w_World_setSleepingAllowed(lua_State *L) { World *t = luax_checkworld(L, 1); bool b = luax_toboolean(L, 2); t->setSleepingAllowed(b); return 0; } int w_World_isSleepingAllowed(lua_State *L) { World *t = luax_checkworld(L, 1); luax_pushboolean(L, t->isSleepingAllowed()); return 1; } int w_World_isLocked(lua_State *L) { World *t = luax_checkworld(L, 1); luax_pushboolean(L, t->isLocked()); return 1; } int w_World_getBodyCount(lua_State *L) { World *t = luax_checkworld(L, 1); lua_pushinteger(L, t->getBodyCount()); return 1; } int w_World_getJointCount(lua_State *L) { World *t = luax_checkworld(L, 1); lua_pushinteger(L, t->getJointCount()); return 1; } int w_World_getContactCount(lua_State *L) { World *t = luax_checkworld(L, 1); lua_pushinteger(L, t->getContactCount()); return 1; } int w_World_getBodyList(lua_State *L) { World *t = luax_checkworld(L, 1); lua_remove(L, 1); int ret = 0; EXCEPT_GUARD(ret = t->getBodyList(L);) return ret; } int w_World_getJointList(lua_State *L) { World *t = luax_checkworld(L, 1); lua_remove(L, 1); int ret = 0; EXCEPT_GUARD(ret = t->getJointList(L);) return ret; } int w_World_getContactList(lua_State *L) { World *t = luax_checkworld(L, 1); lua_remove(L, 1); int ret = 0; EXCEPT_GUARD(ret = t->getContactList(L);) return ret; } int w_World_queryBoundingBox(lua_State *L) { World *t = luax_checkworld(L, 1); lua_remove(L, 1); return t->queryBoundingBox(L); } int w_World_rayCast(lua_State *L) { World *t = luax_checkworld(L, 1); lua_remove(L, 1); int ret = 0; EXCEPT_GUARD(ret = t->rayCast(L);) return ret; } int w_World_destroy(lua_State *L) { World *t = luax_checkworld(L, 1); EXCEPT_GUARD(t->destroy();) return 0; } static const luaL_Reg functions[] = { { "update", w_World_update }, { "setCallbacks", w_World_setCallbacks }, { "getCallbacks", w_World_getCallbacks }, { "setContactFilter", w_World_setContactFilter }, { "getContactFilter", w_World_getContactFilter }, { "setGravity", w_World_setGravity }, { "getGravity", w_World_getGravity }, { "translateOrigin", w_World_translateOrigin }, { "setSleepingAllowed", w_World_setSleepingAllowed }, { "isSleepingAllowed", w_World_isSleepingAllowed }, { "isLocked", w_World_isLocked }, { "getBodyCount", w_World_getBodyCount }, { "getJointCount", w_World_getJointCount }, { "getContactCount", w_World_getContactCount }, { "getBodyList", w_World_getBodyList }, { "getJointList", w_World_getJointList }, { "getContactList", w_World_getContactList }, { "queryBoundingBox", w_World_queryBoundingBox }, { "rayCast", w_World_rayCast }, { "destroy", w_World_destroy }, { 0, 0 } }; extern "C" int luaopen_world(lua_State *L) { return luax_register_type(L, "World", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_PrismaticJoint.cpp0000644000000000000000000001322012316602166024120 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_PrismaticJoint.h" #include "wrap_Physics.h" namespace love { namespace physics { namespace box2d { PrismaticJoint *luax_checkprismaticjoint(lua_State *L, int idx) { PrismaticJoint *j = luax_checktype(L, idx, "PrismaticJoint", PHYSICS_PRISMATIC_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_PrismaticJoint_getJointTranslation(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); lua_pushnumber(L, t->getJointTranslation()); return 1; } int w_PrismaticJoint_getJointSpeed(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); lua_pushnumber(L, t->getJointSpeed()); return 1; } int w_PrismaticJoint_setMotorEnabled(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); bool arg1 = luax_toboolean(L, 2); t->setMotorEnabled(arg1); return 0; } int w_PrismaticJoint_isMotorEnabled(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); luax_pushboolean(L, t->isMotorEnabled()); return 1; } int w_PrismaticJoint_setMaxMotorForce(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setMaxMotorForce(arg1); return 0; } int w_PrismaticJoint_setMotorSpeed(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setMotorSpeed(arg1); return 0; } int w_PrismaticJoint_getMotorSpeed(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); lua_pushnumber(L, t->getMotorSpeed()); return 1; } int w_PrismaticJoint_getMotorForce(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); float inv_dt = (float)luaL_checknumber(L, 2); lua_pushnumber(L, t->getMotorForce(inv_dt)); return 1; } int w_PrismaticJoint_getMaxMotorForce(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); lua_pushnumber(L, t->getMaxMotorForce()); return 1; } int w_PrismaticJoint_setLimitsEnabled(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); bool arg1 = luax_toboolean(L, 2); t->setLimitsEnabled(arg1); return 0; } int w_PrismaticJoint_hasLimitsEnabled(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); luax_pushboolean(L, t->hasLimitsEnabled()); return 1; } int w_PrismaticJoint_setUpperLimit(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setUpperLimit(arg1);) return 0; } int w_PrismaticJoint_setLowerLimit(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setLowerLimit(arg1);) return 0; } int w_PrismaticJoint_setLimits(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_checknumber(L, 3); EXCEPT_GUARD(t->setLimits(arg1, arg2);) return 0; } int w_PrismaticJoint_getLowerLimit(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); lua_pushnumber(L, t->getLowerLimit()); return 1; } int w_PrismaticJoint_getUpperLimit(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); lua_pushnumber(L, t->getUpperLimit()); return 1; } int w_PrismaticJoint_getLimits(lua_State *L) { PrismaticJoint *t = luax_checkprismaticjoint(L, 1); lua_remove(L, 1); return t->getLimits(L); } static const luaL_Reg functions[] = { { "getJointTranslation", w_PrismaticJoint_getJointTranslation }, { "getJointSpeed", w_PrismaticJoint_getJointSpeed }, { "setMotorEnabled", w_PrismaticJoint_setMotorEnabled }, { "isMotorEnabled", w_PrismaticJoint_isMotorEnabled }, { "setMaxMotorForce", w_PrismaticJoint_setMaxMotorForce }, { "setMotorSpeed", w_PrismaticJoint_setMotorSpeed }, { "getMotorSpeed", w_PrismaticJoint_getMotorSpeed }, { "getMotorForce", w_PrismaticJoint_getMotorForce }, { "getMaxMotorForce", w_PrismaticJoint_getMaxMotorForce }, { "setLimitsEnabled", w_PrismaticJoint_setLimitsEnabled }, { "hasLimitsEnabled", w_PrismaticJoint_hasLimitsEnabled }, { "setUpperLimit", w_PrismaticJoint_setUpperLimit }, { "setLowerLimit", w_PrismaticJoint_setLowerLimit }, { "setLimits", w_PrismaticJoint_setLimits }, { "getLowerLimit", w_PrismaticJoint_getLowerLimit }, { "getUpperLimit", w_PrismaticJoint_getUpperLimit }, { "getLimits", w_PrismaticJoint_getLimits }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_prismaticjoint(lua_State *L) { return luax_register_type(L, "PrismaticJoint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_PulleyJoint.cpp0000644000000000000000000000467712316602166023457 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_PulleyJoint.h" namespace love { namespace physics { namespace box2d { PulleyJoint *luax_checkpulleyjoint(lua_State *L, int idx) { PulleyJoint *j = luax_checktype(L, idx, "PulleyJoint", PHYSICS_PULLEY_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_PulleyJoint_getGroundAnchors(lua_State *L) { PulleyJoint *t = luax_checkpulleyjoint(L, 1); lua_remove(L, 1); return t->getGroundAnchors(L); } int w_PulleyJoint_getLengthA(lua_State *L) { PulleyJoint *t = luax_checkpulleyjoint(L, 1); lua_pushnumber(L, t->getLengthA()); return 1; } int w_PulleyJoint_getLengthB(lua_State *L) { PulleyJoint *t = luax_checkpulleyjoint(L, 1); lua_pushnumber(L, t->getLengthB()); return 1; } int w_PulleyJoint_getRatio(lua_State *L) { PulleyJoint *t = luax_checkpulleyjoint(L, 1); lua_pushnumber(L, t->getRatio()); return 1; } static const luaL_Reg functions[] = { { "getGroundAnchors", w_PulleyJoint_getGroundAnchors }, { "getLengthA", w_PulleyJoint_getLengthA }, { "getLengthB", w_PulleyJoint_getLengthB }, { "getRatio", w_PulleyJoint_getRatio }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_pulleyjoint(lua_State *L) { return luax_register_type(L, "PulleyJoint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/ChainShape.cpp0000644000000000000000000000516412316602166022143 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "ChainShape.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" #include "common/Memoizer.h" namespace love { namespace physics { namespace box2d { ChainShape::ChainShape(b2ChainShape *c, bool loop, bool own) : Shape(c, own), loop(loop) { } ChainShape::~ChainShape() { } void ChainShape::setNextVertex(float x, float y) { if (loop) { throw love::Exception("Physics error: Can't call setNextVertex on a loop ChainShape"); return; } b2Vec2 v(x, y); b2ChainShape *c = (b2ChainShape *)shape; c->SetNextVertex(Physics::scaleDown(v)); } void ChainShape::setPreviousVertex(float x, float y) { if (loop) { throw love::Exception("Physics error: Can't call setPreviousVertex on a loop ChainShape"); return; } b2Vec2 v(x, y); b2ChainShape *c = (b2ChainShape *)shape; c->SetNextVertex(Physics::scaleDown(v)); } EdgeShape *ChainShape::getChildEdge(int index) const { b2ChainShape *c = (b2ChainShape *)shape; b2EdgeShape *e = new b2EdgeShape; try { c->GetChildEdge(e, index); } catch (love::Exception &ex) { delete e; throw; } return new EdgeShape(e, true); } int ChainShape::getChildCount() const { b2ChainShape *c = (b2ChainShape *)shape; return c->GetChildCount(); } int ChainShape::getVertexCount() const { b2ChainShape *c = (b2ChainShape *)shape; return c->m_count; } b2Vec2 ChainShape::getPoint(int index) const { b2ChainShape *c = (b2ChainShape *)shape; if (index < 0 || index >= c->m_count) throw love::Exception("Physics error: index out of bounds"); const b2Vec2 &v = c->m_vertices[index]; return Physics::scaleUp(v); } const b2Vec2 *ChainShape::getPoints() const { b2ChainShape *c = (b2ChainShape *)shape; return c->m_vertices; } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_MouseJoint.h0000644000000000000000000000325212316602166022726 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_MOUSE_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_MOUSE_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "MouseJoint.h" namespace love { namespace physics { namespace box2d { MouseJoint *luax_checkmousejoint(lua_State *L, int idx); int w_MouseJoint_setTarget(lua_State *L); int w_MouseJoint_getTarget(lua_State *L); int w_MouseJoint_setMaxForce(lua_State *L); int w_MouseJoint_getMaxForce(lua_State *L); int w_MouseJoint_setFrequency(lua_State *L); int w_MouseJoint_getFrequency(lua_State *L); int w_MouseJoint_setDampingRatio(lua_State *L); int w_MouseJoint_getDampingRatio(lua_State *L); extern "C" int luaopen_mousejoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_MOUSE_JOINT_H love-0.9.1/src/modules/physics/box2d/PrismaticJoint.cpp0000644000000000000000000000675412316602166023105 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "PrismaticJoint.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { PrismaticJoint::PrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected) : Joint(body1, body2) , joint(NULL) { b2PrismaticJointDef def; def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(xA,yA)), b2Vec2(ax,ay)); def.localAnchorB = body2->body->GetLocalPoint(Physics::scaleDown(b2Vec2(xB, yB))); def.lowerTranslation = 0.0f; def.upperTranslation = 100.0f; def.enableLimit = true; def.collideConnected = collideConnected; joint = (b2PrismaticJoint *)createJoint(&def); } PrismaticJoint::~PrismaticJoint() { } float PrismaticJoint::getJointTranslation() const { return Physics::scaleUp(joint->GetJointTranslation()); } float PrismaticJoint::getJointSpeed() const { return Physics::scaleUp(joint->GetJointSpeed()); } void PrismaticJoint::setMotorEnabled(bool enable) { return joint->EnableMotor(enable); } bool PrismaticJoint::isMotorEnabled() const { return joint->IsMotorEnabled(); } void PrismaticJoint::setMaxMotorForce(float force) { joint->SetMaxMotorForce(Physics::scaleDown(force)); } void PrismaticJoint::setMotorSpeed(float speed) { joint->SetMotorSpeed(Physics::scaleDown(speed)); } float PrismaticJoint::getMotorSpeed() const { return Physics::scaleUp(joint->GetMotorSpeed()); } float PrismaticJoint::getMotorForce(float inv_dt) const { return Physics::scaleUp(joint->GetMotorForce(inv_dt)); } float PrismaticJoint::getMaxMotorForce() const { return Physics::scaleUp(joint->GetMaxMotorForce()); } void PrismaticJoint::setLimitsEnabled(bool enable) { joint->EnableLimit(enable); } bool PrismaticJoint::hasLimitsEnabled() const { return joint->IsLimitEnabled(); } void PrismaticJoint::setUpperLimit(float limit) { joint->SetLimits(joint->GetLowerLimit(), Physics::scaleDown(limit)); } void PrismaticJoint::setLowerLimit(float limit) { joint->SetLimits(Physics::scaleDown(limit), joint->GetUpperLimit()); } void PrismaticJoint::setLimits(float lower, float upper) { joint->SetLimits(Physics::scaleDown(lower), Physics::scaleDown(upper)); } float PrismaticJoint::getLowerLimit() const { return Physics::scaleUp(joint->GetLowerLimit()); } float PrismaticJoint::getUpperLimit() const { return Physics::scaleUp(joint->GetUpperLimit()); } int PrismaticJoint::getLimits(lua_State *L) { lua_pushnumber(L, Physics::scaleUp(joint->GetLowerLimit())); lua_pushnumber(L, Physics::scaleUp(joint->GetUpperLimit())); return 2; } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/WeldJoint.cpp0000644000000000000000000000353112316602166022033 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "WeldJoint.h" #include "common/math.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { WeldJoint::WeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected) : Joint(body1, body2) , joint(NULL) { b2WeldJointDef def; def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(xA,yA))); def.localAnchorB = body2->body->GetLocalPoint(Physics::scaleDown(b2Vec2(xB, yB))); def.collideConnected = collideConnected; joint = (b2WeldJoint *)createJoint(&def); } WeldJoint::~WeldJoint() { } void WeldJoint::setFrequency(float hz) { joint->SetFrequency(hz); } float WeldJoint::getFrequency() const { return joint->GetFrequency(); } void WeldJoint::setDampingRatio(float d) { joint->SetDampingRatio(d); } float WeldJoint::getDampingRatio() const { return joint->GetDampingRatio(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/Shape.cpp0000644000000000000000000000771512316602166021204 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Shape.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" #include "common/Memoizer.h" // STD #include namespace love { namespace physics { namespace box2d { Shape::Shape() : shape(NULL) , own(false) { } Shape::Shape(b2Shape *shape, bool own) : shape(shape) , own(own) { if (own) Memoizer::add(shape, this); } Shape::~Shape() { if (shape && own) { Memoizer::remove(shape); delete shape; } shape = 0; } Shape::Type Shape::getType() const { switch (shape->GetType()) { case b2Shape::e_circle: return SHAPE_CIRCLE; case b2Shape::e_polygon: return SHAPE_POLYGON; case b2Shape::e_edge: return SHAPE_EDGE; case b2Shape::e_chain: return SHAPE_CHAIN; default: return SHAPE_INVALID; } } float Shape::getRadius() const { return Physics::scaleUp(shape->m_radius); } int Shape::getChildCount() const { return shape->GetChildCount(); } bool Shape::testPoint(float x, float y, float r, float px, float py) const { b2Vec2 point(px, py); b2Transform transform(Physics::scaleDown(b2Vec2(x, y)), b2Rot(r)); return shape->TestPoint(transform, Physics::scaleDown(point)); } int Shape::rayCast(lua_State *L) const { float p1x = Physics::scaleDown((float)luaL_checknumber(L, 1)); float p1y = Physics::scaleDown((float)luaL_checknumber(L, 2)); float p2x = Physics::scaleDown((float)luaL_checknumber(L, 3)); float p2y = Physics::scaleDown((float)luaL_checknumber(L, 4)); float maxFraction = (float)luaL_checknumber(L, 5); float x = Physics::scaleDown((float)luaL_checknumber(L, 6)); float y = Physics::scaleDown((float)luaL_checknumber(L, 7)); float r = (float)luaL_checknumber(L, 8); int childIndex = (int)luaL_optint(L, 9, 1) - 1; // Convert from 1-based index b2RayCastInput input; input.p1.Set(p1x, p1y); input.p2.Set(p2x, p2y); input.maxFraction = maxFraction; b2Transform transform(b2Vec2(x, y), b2Rot(r)); b2RayCastOutput output; if (!shape->RayCast(&output, input, transform, childIndex)) return 0; // No hit. lua_pushnumber(L, output.normal.x); lua_pushnumber(L, output.normal.y); lua_pushnumber(L, output.fraction); return 3; } int Shape::computeAABB(lua_State *L) const { float x = Physics::scaleDown((float)luaL_checknumber(L, 1)); float y = Physics::scaleDown((float)luaL_checknumber(L, 2)); float r = (float)luaL_checknumber(L, 3); int childIndex = (int)luaL_optint(L, 4, 1) - 1; // Convert from 1-based index b2Transform transform(b2Vec2(x, y), b2Rot(r)); b2AABB box; shape->ComputeAABB(&box, transform, childIndex); box = Physics::scaleUp(box); lua_pushnumber(L, box.lowerBound.x); lua_pushnumber(L, box.lowerBound.y); lua_pushnumber(L, box.upperBound.x); lua_pushnumber(L, box.upperBound.y); return 4; } int Shape::computeMass(lua_State *L) const { float density = (float)luaL_checknumber(L, 1); b2MassData data; shape->ComputeMass(&data, density); b2Vec2 center = Physics::scaleUp(data.center); lua_pushnumber(L, center.x); lua_pushnumber(L, center.y); lua_pushnumber(L, data.mass); lua_pushnumber(L, Physics::scaleUp(Physics::scaleUp(data.I))); return 4; } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/RevoluteJoint.cpp0000644000000000000000000000613012316602166022743 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "RevoluteJoint.h" #include "common/math.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" namespace love { namespace physics { namespace box2d { RevoluteJoint::RevoluteJoint(Body *body1, Body *body2, float x, float y, bool collideConnected) : Joint(body1, body2) , joint(NULL) { b2RevoluteJointDef def; def.Initialize(body1->body, body2->body, Physics::scaleDown(b2Vec2(x,y))); def.collideConnected = collideConnected; joint = (b2RevoluteJoint *)createJoint(&def); } RevoluteJoint::~RevoluteJoint() { } float RevoluteJoint::getJointAngle() const { return joint->GetJointAngle(); } float RevoluteJoint::getJointSpeed() const { return joint->GetJointSpeed(); } void RevoluteJoint::setMotorEnabled(bool enable) { return joint->EnableMotor(enable); } bool RevoluteJoint::isMotorEnabled() const { return joint->IsMotorEnabled(); } void RevoluteJoint::setMaxMotorTorque(float torque) { joint->SetMaxMotorTorque(Physics::scaleDown(Physics::scaleDown(torque))); } void RevoluteJoint::setMotorSpeed(float speed) { joint->SetMotorSpeed(speed); } float RevoluteJoint::getMotorSpeed() const { return joint->GetMotorSpeed(); } float RevoluteJoint::getMotorTorque(float inv_dt) const { return Physics::scaleUp(Physics::scaleUp(joint->GetMotorTorque(inv_dt))); } float RevoluteJoint::getMaxMotorTorque() const { return Physics::scaleUp(Physics::scaleUp(joint->GetMaxMotorTorque())); } void RevoluteJoint::setLimitsEnabled(bool enable) { joint->EnableLimit(enable); } bool RevoluteJoint::hasLimitsEnabled() const { return joint->IsLimitEnabled(); } void RevoluteJoint::setUpperLimit(float limit) { joint->SetLimits(joint->GetLowerLimit(), limit); } void RevoluteJoint::setLowerLimit(float limit) { joint->SetLimits(limit, joint->GetUpperLimit()); } void RevoluteJoint::setLimits(float lower, float upper) { joint->SetLimits(lower, upper); } float RevoluteJoint::getLowerLimit() const { return joint->GetLowerLimit(); } float RevoluteJoint::getUpperLimit() const { return joint->GetUpperLimit(); } int RevoluteJoint::getLimits(lua_State *L) { lua_pushnumber(L, joint->GetLowerLimit()); lua_pushnumber(L, joint->GetUpperLimit()); return 2; } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_RopeJoint.cpp0000644000000000000000000000355412316602166023103 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_RopeJoint.h" namespace love { namespace physics { namespace box2d { RopeJoint *luax_checkropejoint(lua_State *L, int idx) { RopeJoint *j = luax_checktype(L, idx, "RopeJoint", PHYSICS_ROPE_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_RopeJoint_getMaxLength(lua_State *L) { RopeJoint *t = luax_checkropejoint(L, 1); lua_pushnumber(L, t->getMaxLength()); return 1; } static const luaL_Reg functions[] = { { "getMaxLength", w_RopeJoint_getMaxLength }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_ropejoint(lua_State *L) { return luax_register_type(L, "RopeJoint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/DistanceJoint.h0000644000000000000000000000414412316602166022340 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_DISTANCE_JOINT_H #define LOVE_PHYSICS_BOX2D_DISTANCE_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * The DistanceJoint keeps Bodies at a fixed distance * from eachother. **/ class DistanceJoint : public Joint { public: /** * Creates a DistanceJoint connecting body1 to body2. **/ DistanceJoint(Body *body1, Body *body2, float x1, float y1, float x2, float y2, bool collideConnected); virtual ~DistanceJoint(); /** * Sets the equilibrium distance between the two bodies. **/ void setLength(float length); /** * Gets the equilibrium distance between the two bodies. **/ float getLength() const; /** * Sets the response speed. **/ void setFrequency(float hz); /** * Gets the response speed. **/ float getFrequency() const; /** * Sets the damping ratio. * 0 = no damping, 1 = critical damping. **/ void setDampingRatio(float d); /** * Gets the damping ratio. * 0 = no damping, 1 = critical damping. **/ float getDampingRatio() const; private: // The Box2D DistanceJoint object. b2DistanceJoint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_DISTANCE_JOINT_H love-0.9.1/src/modules/physics/box2d/Physics.h0000644000000000000000000003053612316602166021230 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_PHYSICS_H #define LOVE_PHYSICS_BOX2D_PHYSICS_H // LOVE #include "common/Module.h" #include "World.h" #include "Contact.h" #include "Body.h" #include "Fixture.h" #include "Shape.h" #include "CircleShape.h" #include "PolygonShape.h" #include "EdgeShape.h" #include "ChainShape.h" #include "Joint.h" #include "MouseJoint.h" #include "DistanceJoint.h" #include "PrismaticJoint.h" #include "RevoluteJoint.h" #include "PulleyJoint.h" #include "GearJoint.h" #include "FrictionJoint.h" #include "WeldJoint.h" #include "WheelJoint.h" #include "RopeJoint.h" #include "MotorJoint.h" namespace love { namespace physics { namespace box2d { class Physics : public Module { public: /** * 30 pixels in one meter by default. **/ static const int DEFAULT_METER = 30; // Implements Module. const char *getName() const; /** * Creates a new World. * @param gx Gravity along x-axis. * @param gy Gravity along y-axis. * @param sleep Whether the World allows sleep. **/ World *newWorld(float gx, float gy, bool sleep); /** * Creates a new Body at the specified position. * @param world The world to create the Body in. * @param x The position along the x-axis. * @param y The position along the y-axis. * @param type The type of body to create. **/ Body *newBody(World *world, float x, float y, Body::Type type); /** * Creates a new Body at (0, 0) * @param world The world to create the Body in. * @param type The type of Body to create. **/ Body *newBody(World *world, Body::Type type); /** * Creates a new CircleShape at (0, 0). * @param radius The radius of the circle. **/ CircleShape *newCircleShape(float radius); /** * Creates a new CircleShape at (x,y) in local coordinates. * @param x The offset along the x-axis. * @param y The offset along the y-axis. * @param radius The radius of the circle. **/ CircleShape *newCircleShape(float x, float y, float radius); /** * Shorthand for creating rectangular PolygonShapes. The rectangle * will be created at the local origin. * @param w The width of the rectangle. * @param h The height of the rectangle. **/ PolygonShape *newRectangleShape(float w, float h); /** * Shorthand for creating rectangular PolygonShapes. The rectangle * will be created at (x,y) in local coordinates. * @param x The offset along the x-axis. * @param y The offset along the y-axis. * @param w The width of the rectangle. * @param h The height of the rectangle. **/ PolygonShape *newRectangleShape(float x, float y, float w, float h); /** * Shorthand for creating rectangular PolygonShapes. The rectangle * will be created at (x,y) in local coordinates. * @param x The offset along the x-axis. * @param y The offset along the y-axis. * @param w The width of the rectangle. * @param h The height of the rectangle. * @param angle The angle of the rectangle. (rad) **/ PolygonShape *newRectangleShape(float x, float y, float w, float h, float angle); /** * Creates a new EdgeShape. The edge will be created from * (x1,y1) to (x2,y2) in local coordinates. * @param x1 The x coordinate of the first point. * @param y1 The y coordinate of the first point. * @param x2 The x coordinate of the second point. * @param y2 The y coordinate of the second point. **/ EdgeShape *newEdgeShape(float x1, float y1, float x2, float y2); /** * Creates a new PolygonShape from a variable number of vertices. **/ int newPolygonShape(lua_State *L); /** * Creates a new ChainShape from a variable number of vertices. **/ int newChainShape(lua_State *L); /** * Creates a new DistanceJoint connecting body1 with body2. * @param x1 Anchor1 along the x-axis. (World coordinates) * @param y1 Anchor1 along the y-axis. (World coordinates) * @param x2 Anchor2 along the x-axis. (World coordinates) * @param y2 Anchor2 along the y-axis. (World coordinates) * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. **/ DistanceJoint *newDistanceJoint(Body *body1, Body *body2, float x1, float y1, float x2, float y2, bool collideConnected); /** * Creates a new MouseJoint connecting the body with an arbitrary point. * @param x Anchor along the x-axis. (World coordinates) * @param y Anchor along the y-axis. (World coordinates) **/ MouseJoint *newMouseJoint(Body *body, float x, float y); /** * Creates a new RevoluteJoint connecting body1 with body2. * @param x Anchor along the x-axis. (World coordinates) * @param y Anchor along the y-axis. (World coordinates) * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. **/ RevoluteJoint *newRevoluteJoint(Body *body1, Body *body2, float x, float y, bool collideConnected); /** * Creates a new PrismaticJoint connecting body1 with body2. * @param xA World-anchor for body1 along the x-axis. * @param yA World-anchor for body1 along the y-axis. * @param xB World-anchor for body2 along the x-axis. * @param yB World-anchor for body2 along the y-axis. * @param ax The x-component of the world-axis. * @param ay The y-component of the world-axis. * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. **/ PrismaticJoint *newPrismaticJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected); /** * Creates a new PulleyJoint connecting body1 with body2. * @param groundAnchor1 World ground-anchor for body1. * @param groundAnchor2 World ground-anchor for body2. * @param anchor1 World anchor on body1. * @param anchor2 World anchor on body2. * @param ratio The pulley ratio. * @param collideConnected Whether the connected bodies should collide with each other. Defaults to true. **/ PulleyJoint *newPulleyJoint(Body *body1, Body *body2, b2Vec2 groundAnchor1, b2Vec2 groundAnchor2, b2Vec2 anchor1, b2Vec2 anchor2, float ratio, bool collideConnected); /** * Creates a new GearJoint connecting joint1 with joint2. * @param joint1 The first joint. * @param joint2 The second joint. * @param ratio The gear ratio. * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. **/ GearJoint *newGearJoint(Joint *joint1, Joint *joint2, float ratio, bool collideConnected); /** * Creates a new FrictionJoint connecting body1 with body2. * @param xA Anchor for body 1 along the x-axis. (World coordinates) * @param yA Anchor for body 1 along the y-axis. (World coordinates) * @param xB Anchor for body 2 along the x-axis. (World coordinates) * @param yB Anchor for body 2 along the y-axis. (World coordinates) * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. **/ FrictionJoint *newFrictionJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected); /** * Creates a new WeldJoint connecting body1 with body2. * @param xA Anchor for body 1 along the x-axis. (World coordinates) * @param yA Anchor for body 1 along the y-axis. (World coordinates) * @param xB Anchor for body 2 along the x-axis. (World coordinates) * @param yB Anchor for body 2 along the y-axis. (World coordinates) * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. **/ WeldJoint *newWeldJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, bool collideConnected); /** * Creates a new WheelJoint connecting body1 with body2. * @param xA Anchor for body 1 along the x-axis. (World coordinates) * @param yA Anchor for body 1 along the y-axis. (World coordinates) * @param xB Anchor for body 2 along the x-axis. (World coordinates) * @param yB Anchor for body 2 along the y-axis. (World coordinates) * @param ax The x-component of the world-axis. * @param ay The y-component of the world-axis. * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. **/ WheelJoint *newWheelJoint(Body *body1, Body *body2, float xA, float yA, float xB, float yB, float ax, float ay, bool collideConnected); /** * Creates a new RopeJoint connecting body1 with body2. * @param x1 Anchor1 along the x-axis. (Local coordinates) * @param y1 Anchor1 along the y-axis. (Local coordinates) * @param x2 Anchor2 along the x-axis. (Local coordinates) * @param y2 Anchor2 along the y-axis. (Local coordinates) * @param maxLength The maximum distance for the bodies. * @param collideConnected Whether the connected bodies should collide with each other. Defaults to false. **/ RopeJoint *newRopeJoint(Body *body1, Body *body2, float x1, float y1, float x2, float y2, float maxLength, bool collideConnected); /** * Creates a new MotorJoint controlling the relative motion between body1 * and body2. **/ MotorJoint *newMotorJoint(Body *body1, Body *body2); MotorJoint *newMotorJoint(Body *body1, Body *body2, float correctionFactor); /** * Creates a new Fixture attaching shape to body. * @param body The body to attach the Fixture to. * @param shape The shape to attach to the Fixture, * @param density The density of the Fixture. **/ Fixture *newFixture(Body *body, Shape *shape, float density); /** * Calculates the distance between two Fixtures. * @param fixtureA The first Fixture. * @param fixtureB The sceond Fixture. * @return The distance between them, and the two points closest * to each other. **/ int getDistance(lua_State *L); /** * Sets the number of pixels in one meter. * @param scale The number of pixels in one meter. (1m ~= 3.3ft). **/ static void setMeter(int scale); /** * Gets the number of pixels in one meter. * @return The number of pixels in one meter. (1m ~= 3.3ft). **/ static int getMeter(); /** * Scales a value down according to the current meter in pixels. * @param f The unscaled input value. **/ static float scaleDown(float f); /** * Scales a value up according to the current meter in pixels. * @param f The unscaled input value. **/ static float scaleUp(float f); /** * Scales a point down according to the current meter * in pixels, for instance x = x0/meter, y = x0/meter. * @param x The x-coordinate of the point to scale. * @param y The y-coordinate of the point to scale. **/ static void scaleDown(float &x, float &y); /** * Scales a point up according to the current meter * in pixels, for instance x = x0/meter, y = x0/meter. * @param x The x-coordinate of the point to scale. * @param y The y-coordinate of the point to scale. **/ static void scaleUp(float &x, float &y); /** * Scales a b2Vec2 down according to the current meter in pixels. * @param v The unscaled input vector. * @return The scaled vector. **/ static b2Vec2 scaleDown(const b2Vec2 &v); /** * Scales a b2Vec up according to the current meter in pixels. * @param v The unscaled input vector. * @return The scaled vector. **/ static b2Vec2 scaleUp(const b2Vec2 &v); /** * Scales a b2AABB down according to the current meter in pixels. * @param aabb The unscaled input AABB. * @return The scaled AABB. **/ static b2AABB scaleDown(const b2AABB &aabb); /** * Scales a b2AABB up according to the current meter in pixels. * @param aabb The unscaled input AABB. * @return The scaled AABB. **/ static b2AABB scaleUp(const b2AABB &aabb); private: // The length of one meter in pixels. static int meter; }; // Physics } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_PHYSICS_H love-0.9.1/src/modules/physics/box2d/Body.h0000644000000000000000000002453112316602166020501 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_BODY_H #define LOVE_PHYSICS_BOX2D_BODY_H // LOVE #include "common/math.h" #include "common/runtime.h" #include "common/Object.h" #include "physics/Body.h" // Box2D #include namespace love { namespace physics { namespace box2d { // Forward declarations. class World; class Shape; class Fixture; /** * This struct is stored in a void pointer in the Box2D Body class. For now, all * we need is a Lua reference to arbitrary data, but we might need more later. **/ struct bodyudata { // Reference to arbitrary data. Reference *ref; }; /** * A Body is an entity which has position and orientation * in world space. A Body does have collision geometry * by itself, but depend on an arbitrary number of child Shape objects * which together constitute the final geometry for the Body. **/ class Body : public love::physics::Body { public: // Friends. friend class Joint; friend class DistanceJoint; friend class MouseJoint; friend class CircleShape; friend class PolygonShape; friend class Shape; friend class Fixture; // The Box2D body. (Should not be public?) b2Body *body; /** * Create a Body at position p. **/ Body(World *world, b2Vec2 p, Type type); /** * Create a Body from an extant b2Body. **/ Body(b2Body *b); virtual ~Body(); /** * Gets the current x-position of the Body. **/ float getX(); /** * Gets the current y-position of the Body. **/ float getY(); /** * Gets the current angle (deg) of the Body. **/ float getAngle(); /** * Gets the current position of the Body. * @param[out] x_o The x-component of the position. * @param[out] y_o The y-component of the position. **/ void getPosition(float &x_o, float &y_o); /** * Gets the velocity in the current center of mass. * @param[out] x_o The x-component of the velocity. * @param[out] y_o The y-component of the velocity. **/ void getLinearVelocity(float &x_o, float &y_o); /** * The current center of mass for the Body in world * coordinates. * @param[out] x_o The x-component of the center of mass. * @param[out] y_o The y-component of the center of mass. **/ void getWorldCenter(float &x_o, float &y_o); /** * The current center of mass for the Body in local * coordinates. * @param[out] x_o The x-component of the center of mass. * @param[out] y_o The y-component of the center of mass. **/ void getLocalCenter(float &x_o, float &y_o); /** * Get the current Body spin. (Angular velocity). **/ float getAngularVelocity() const; /** * Gets the Body's mass. **/ float getMass() const; /** * Gets the Body's intertia. **/ float getInertia() const; /** * Gets mass properties. **/ int getMassData(lua_State *L); /** * Gets the Body's angular damping. **/ float getAngularDamping() const; /** * Gets the Body's linear damping. **/ float getLinearDamping() const; /** * Gets the Body's gravity scale. **/ float getGravityScale() const; /** * Gets the type of body this is. **/ Type getType() const; /** * Apply an impulse (jx, jy) with offset (0, 0). **/ void applyLinearImpulse(float jx, float jy, bool wake); /** * Apply an impulse (jx, jy) with offset (rx, ry). **/ void applyLinearImpulse(float jx, float jy, float rx, float ry, bool wake); /** * Apply an angular impulse to the body. **/ void applyAngularImpulse(float impulse, bool wake); /** * Apply torque (t). **/ void applyTorque(float t, bool wake); /** * Apply force (fx, fy) with offset (0, 0). **/ void applyForce(float fx, float fy, bool wake); /** * Apply force (fx, fy) with offset (rx, ry). **/ void applyForce(float fx, float fy, float rx, float ry, bool wake); /** * Sets the x-position of the Body. **/ void setX(float x); /** * Sets the Y-position of the Body. **/ void setY(float y); /** * Sets the current velocity of the Body. **/ void setLinearVelocity(float x, float y); /** * Sets the angle of the Body. **/ void setAngle(float d); /** * Sets the current spin of the Body. **/ void setAngularVelocity(float r); /** * Sets the current position of the Body. **/ void setPosition(float x, float y); /** * Sets the mass from the currently attatched shapes. **/ void resetMassData(); /** * Sets mass properties. * @param x The x-coordinate for the local center of mass. * @param y The y-coordinate for the local center of mass. * @param m The mass. * @param i The inertia. **/ void setMassData(float x, float y, float m, float i); /** * Sets just the mass. This is provided as a LOVE bonus. Lovely! * @param m The mass. **/ void setMass(float m); /** * Sets the inertia while keeping the other properties * (mass and local center). * @param i The inertia. **/ void setInertia(float i); /** * Sets the Body's angular damping. **/ void setAngularDamping(float d); /** * Sets the Body's linear damping. **/ void setLinearDamping(float d); /** * Sets the Body's gravity scale. **/ void setGravityScale(float scale); /** * Sets the type of body this is. **/ void setType(Type type); /** * Transforms a point (x, y) from local coordinates * to world coordinates. * @param x The x-coordinate of the local point. * @param y The y-coordinate of the local point. * @param[out] x_o The x-coordinate of the point in world coordinates. * @param[out] y_o The y-coordinate of the point in world coordinates. **/ void getWorldPoint(float x, float y, float &x_o, float &y_o); /** * Transforms a vector (x, y) from local coordinates * to world coordinates. * @param x The x-coordinate of the local vector. * @param y The y-coordinate of the local vector. * @param[out] x_o The x-coordinate of the vector in world coordinates. * @param[out] y_o The y-coordinate of the vector in world coordinates. **/ void getWorldVector(float x, float y, float &x_o, float &y_o); /** * Transforms a series of points (x, y) from local coordinates * to world coordinates. **/ int getWorldPoints(lua_State *L); /** * Transforms a point (x, y) from world coordinates * to local coordinates. * @param x The x-coordinate of the world point. * @param y The y-coordinate of the world point. * @param[out] x_o The x-coordinate of the point in local coordinates. * @param[out] y_o The y-coordinate of the point in local coordinates. **/ void getLocalPoint(float x, float y, float &x_o, float &y_o); /** * Transforms a vector (x, y) from world coordinates * to local coordinates. * @param x The x-coordinate of the world vector. * @param y The y-coordinate of the world vector. * @param[out] x_o The x-coordinate of the vector in local coordinates. * @param[out] y_o The y-coordinate of the vector in local coordinates. **/ void getLocalVector(float x, float y, float &x_o, float &y_o); /** * Gets the velocity on the Body for the given world point. * @param x The x-coordinate of the world point. * @param y The y-coordinate of the world point. * @param[out] x_o The x-component of the velocity vector. * @param[out] y_o The y-component of the velocity vector. **/ void getLinearVelocityFromWorldPoint(float x, float y, float &x_o, float &y_o); /** * Gets the velocity on the Body for the given local point. * @param x The x-coordinate of the local point. * @param y The y-coordinate of the local point. * @param[out] x_o The x-component of the velocity vector. * @param[out] y_o The y-component of the velocity vector. **/ void getLinearVelocityFromLocalPoint(float x, float y, float &x_o, float &y_o); /** * Returns true if the Body is a bullet, false otherwise. **/ bool isBullet() const; /** * Set whether this Body should be treated as a bullet. * Bullets require more processing power than normal shapes. **/ void setBullet(bool bullet); /** * Checks whether a Body is active or not. An inactive body * cannot be interacted with. **/ bool isActive() const; /** * Checks whether a Body is awake or not. A Body * will fall to sleep if nothing happens to it for while. **/ bool isAwake() const; /** * Controls whether this Body should be allowed to sleep. **/ void setSleepingAllowed(bool allow); bool isSleepingAllowed() const; /** * Changes the body's active state. **/ void setActive(bool active); /** * Changes the body's sleep state. **/ void setAwake(bool awake); void setFixedRotation(bool fixed); bool isFixedRotation() const; /** * Get the World this Body resides in. */ World *getWorld() const; /** * Get an array of all the Fixtures attached to this Body. * @return An array of Fixtures. **/ int getFixtureList(lua_State *L) const; /** * Destroy this body. **/ void destroy(); /** * This function stores an in-C reference to * arbitrary Lua data in the Box2D Body object. **/ int setUserData(lua_State *L); /** * Gets the data set with setData. If no * data is set, nil is returned. **/ int getUserData(lua_State *L); private: /** * Gets a 2d vector from the arguments on the stack. **/ b2Vec2 getVector(lua_State *L); /** * Pushed the x- and y-components of a vector on * the stack. **/ int pushVector(lua_State *L, const b2Vec2 &v); // We need a shared_ptr to the parent World, // because World can not be destroyed as long as // bodies exists in it. // // This ensures that a World only can be destroyed // once all bodies have been destroyed too. World *world; bodyudata *udata; }; // Body } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_BODY_H love-0.9.1/src/modules/physics/box2d/wrap_Contact.cpp0000644000000000000000000000767012316602166022570 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Contact.h" namespace love { namespace physics { namespace box2d { Contact *luax_checkcontact(lua_State *L, int idx) { Contact *c = luax_checktype(L, idx, "Contact", PHYSICS_CONTACT_T); if (!c->isValid()) luaL_error(L, "Attempt to use destroyed contact."); return c; } int w_Contact_getPositions(lua_State *L) { Contact *t = luax_checkcontact(L, 1); return t->getPositions(L); } int w_Contact_getNormal(lua_State *L) { Contact *t = luax_checkcontact(L, 1); return t->getNormal(L); } int w_Contact_getFriction(lua_State *L) { Contact *t = luax_checkcontact(L, 1); lua_pushnumber(L, t->getFriction()); return 1; } int w_Contact_getRestitution(lua_State *L) { Contact *t = luax_checkcontact(L, 1); lua_pushnumber(L, t->getRestitution()); return 1; } int w_Contact_isEnabled(lua_State *L) { Contact *t = luax_checkcontact(L, 1); lua_pushboolean(L, t->isEnabled()); return 1; } int w_Contact_isTouching(lua_State *L) { Contact *t = luax_checkcontact(L, 1); lua_pushboolean(L, t->isTouching()); return 1; } int w_Contact_setFriction(lua_State *L) { Contact *t = luax_checkcontact(L, 1); float f = (float)luaL_checknumber(L, 2); t->setFriction(f); return 0; } int w_Contact_setRestitution(lua_State *L) { Contact *t = luax_checkcontact(L, 1); float r = (float)luaL_checknumber(L, 2); t->setRestitution(r); return 0; } int w_Contact_setEnabled(lua_State *L) { Contact *t = luax_checkcontact(L, 1); bool e = luax_toboolean(L, 2); t->setEnabled(e); return 0; } int w_Contact_resetFriction(lua_State *L) { Contact *t = luax_checkcontact(L, 1); t->resetFriction(); return 0; } int w_Contact_resetRestitution(lua_State *L) { Contact *t = luax_checkcontact(L, 1); t->resetRestitution(); return 0; } int w_Contact_setTangentSpeed(lua_State *L) { Contact *t = luax_checkcontact(L, 1); float speed = (float) luaL_checknumber(L, 2); t->setTangentSpeed(speed); return 0; } int w_Contact_getTangentSpeed(lua_State *L) { Contact *t = luax_checkcontact(L, 1); lua_pushnumber(L, t->getTangentSpeed()); return 1; } int w_Contact_getChildren(lua_State *L) { Contact *t = luax_checkcontact(L, 1); int a, b; t->getChildren(a, b); lua_pushnumber(L, a + 1); lua_pushnumber(L, b + 1); return 2; } extern "C" int luaopen_contact(lua_State *L) { static const luaL_Reg functions[] = { { "getPositions", w_Contact_getPositions }, { "getNormal", w_Contact_getNormal }, { "getFriction", w_Contact_getFriction }, { "getRestitution", w_Contact_getRestitution }, { "isEnabled", w_Contact_isEnabled }, { "isTouching", w_Contact_isTouching }, { "setFriction", w_Contact_setFriction }, { "setRestitution", w_Contact_setRestitution }, { "setEnabled", w_Contact_setEnabled }, { "resetFriction", w_Contact_resetFriction }, { "resetRestitution", w_Contact_resetRestitution }, { "setTangentSpeed", w_Contact_setTangentSpeed }, { "getTangentSpeed", w_Contact_getTangentSpeed }, { "getChildren", w_Contact_getChildren }, { 0, 0 } }; return luax_register_type(L, "Contact", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/PulleyJoint.h0000644000000000000000000000420212316602166022053 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_PULLEY_JOINT_H #define LOVE_PHYSICS_BOX2D_PULLEY_JOINT_H // Module #include "Joint.h" namespace love { namespace physics { namespace box2d { /** * The PulleyJoint The pulley connects two bodies to ground and * to each other. As one body goes up, the other goes down. The * total length of the pulley rope is conserved according to the * initial configuration: length1 + ratio * length2 <= constant. **/ class PulleyJoint : public Joint { public: /** * Creates a PulleyJoint connecting bodyA to bodyB. **/ PulleyJoint(Body *bodyA, Body *bodyB, b2Vec2 groundAnchorA, b2Vec2 groundAnchorB, b2Vec2 anchorA, b2Vec2 anchorB, float ratio, bool collideConnected); virtual ~PulleyJoint(); /** * Gets the ground anchors position in world * coordinates. **/ int getGroundAnchors(lua_State *L); /** * Gets the current length of the segment attached to bodyA. **/ float getLengthA() const; /** * Gets the current length of the segment attached to bodyB. **/ float getLengthB() const; /** * Gets the pulley ratio. **/ float getRatio() const; private: // The Box2D DistanceJoint object. b2PulleyJoint *joint; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_PULLEY_JOINT_H love-0.9.1/src/modules/physics/box2d/wrap_FrictionJoint.h0000644000000000000000000000302712316602166023413 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_FRICTION_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_FRICTION_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "FrictionJoint.h" namespace love { namespace physics { namespace box2d { FrictionJoint *luax_checkfrictionjoint(lua_State *L, int idx); int w_FrictionJoint_setMaxForce(lua_State *L); int w_FrictionJoint_getMaxForce(lua_State *L); int w_FrictionJoint_setMaxTorque(lua_State *L); int w_FrictionJoint_getMaxTorque(lua_State *L); extern "C" int luaopen_frictionjoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_FRICTION_JOINT_H love-0.9.1/src/modules/physics/box2d/Fixture.h0000644000000000000000000001201212316602166021221 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_FIXTURE_H #define LOVE_PHYSICS_BOX2D_FIXTURE_H // LOVE #include "physics/Shape.h" #include "physics/box2d/Body.h" #include "physics/box2d/Shape.h" #include "common/Object.h" #include "common/Reference.h" // Box2D #include namespace love { namespace physics { namespace box2d { /** * This struct is stored in a void pointer * in the Box2D Fixture class. For now, all we * need is a Lua reference to arbitrary data, * but we might need more later. **/ struct fixtureudata { // Reference to arbitrary data. Reference *ref; }; /** * A Fixture is used to attach a shape to a body for collision detection. * A Fixture inherits its transform from its parent. Fixtures hold * additional non-geometric data such as friction, collision filters, * etc. **/ class Fixture : public Object { public: friend class Physics; /** * Creates a Fixture. **/ Fixture(Body *body, Shape *shape, float density); /** * Creates a Fixture. **/ Fixture(b2Fixture *f); virtual ~Fixture(); /** * Gets the type of the Fixture's Shape. Useful for * debug drawing. **/ Shape::Type getType() const; /** * Gets the Shape attached to this Fixture. **/ Shape *getShape() const; /** * Returns true if the fixture is active in a Box2D world. **/ bool isValid() const; /** * Checks whether this Fixture acts as a sensor. * @return True if sensor, false otherwise. **/ bool isSensor() const; /** * Set whether this Fixture should be a sensor or not. * @param sensor True if sensor, false if not. **/ void setSensor(bool sensor); /** * Gets the Body this Fixture is attached to. **/ Body *getBody() const; /** * Sets the filter data. An integer array is used even though the * first two elements are unsigned shorts. The elements are: * category (16-bits), mask (16-bits) and group (32-bits/int). **/ void setFilterData(int *v); /** * Gets the filter data. An integer array is used even though the * first two elements are unsigned shorts. The elements are: * category (16-bits), mask (16-bits) and group (32-bits/int). **/ void getFilterData(int *v); /** * This function stores an in-C reference to * arbitrary Lua data in the Box2D Fixture object. **/ int setUserData(lua_State *L); /** * Gets the data set with setData. If no * data is set, nil is returned. **/ int getUserData(lua_State *L); /** * Sets the friction of the Fixture. * @param friction The new friction. **/ void setFriction(float friction); /** * Sets the restitution for the Fixture. * @param restitution The restitution. **/ void setRestitution(float restitution); /** * Sets the density of the Fixture. * @param density The density of the Fixture. **/ void setDensity(float density); /** * Gets the friction of the Fixture. * @returns The friction. **/ float getFriction() const; /** * Gets the restitution of the Fixture. * @return The restitution of the Fixture. **/ float getRestitution() const; /** * Gets the density of the Fixture. * @return The density. **/ float getDensity() const; /** * Checks if a point is inside the Fixture. * @param x The x-component of the point. * @param y The y-component of the point. **/ bool testPoint(float x, float y) const; /** * Cast a ray against this Fixture. **/ int rayCast(lua_State *L) const; void setGroupIndex(int index); int getGroupIndex() const; int setCategory(lua_State *L); int setMask(lua_State *L); int getCategory(lua_State *L); int getMask(lua_State *L); uint16 getBits(lua_State *L); int pushBits(lua_State *L, uint16 bits); /** * Gets the bounding box for this Fixture. * The function returns eight values which can be * passed directly to love.graphics.polygon. **/ int getBoundingBox(lua_State *L) const; /** * Gets the mass data for this Fixture. * This operation may be expensive. **/ int getMassData(lua_State *L) const; /** * Destroys this fixture. **/ void destroy(bool implicit = false); protected: Body *body; fixtureudata *data; b2Fixture *fixture; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_FIXTURE_H love-0.9.1/src/modules/physics/box2d/Fixture.cpp0000644000000000000000000001545212316602166021567 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Fixture.h" // Module #include "Body.h" #include "World.h" #include "Physics.h" #include "common/Memoizer.h" // STD #include namespace love { namespace physics { namespace box2d { Fixture::Fixture(Body *body, Shape *shape, float density) : body(body) , fixture(nullptr) { data = new fixtureudata(); data->ref = nullptr; b2FixtureDef def; def.shape = shape->shape; def.userData = (void *)data; def.density = density; fixture = body->body->CreateFixture(&def); this->retain(); Memoizer::add(fixture, this); } Fixture::Fixture(b2Fixture *f) : fixture(f) { data = (fixtureudata *)f->GetUserData(); body = (Body *)Memoizer::find(f->GetBody()); if (!body) body = new Body(f->GetBody()); this->retain(); Memoizer::add(fixture, this); } Fixture::~Fixture() { if (data != nullptr) delete data->ref; delete data; } Shape::Type Fixture::getType() const { return Shape(fixture->GetShape(), false).getType(); } void Fixture::setFriction(float friction) { fixture->SetFriction(friction); } void Fixture::setRestitution(float restitution) { fixture->SetRestitution(restitution); } void Fixture::setDensity(float density) { fixture->SetDensity(density); } void Fixture::setSensor(bool sensor) { fixture->SetSensor(sensor); } float Fixture::getFriction() const { return fixture->GetFriction(); } float Fixture::getRestitution() const { return fixture->GetRestitution(); } float Fixture::getDensity() const { return fixture->GetDensity(); } bool Fixture::isSensor() const { return fixture->IsSensor(); } Body *Fixture::getBody() const { return body; } Shape *Fixture::getShape() const { if (!fixture->GetShape()) return nullptr; return new Shape(fixture->GetShape(), false); } bool Fixture::isValid() const { return fixture != nullptr; } void Fixture::setFilterData(int *v) { b2Filter f; f.categoryBits = (uint16) v[0]; f.maskBits = (uint16) v[1]; f.groupIndex = (int16) v[2]; fixture->SetFilterData(f); } void Fixture::getFilterData(int *v) { b2Filter f = fixture->GetFilterData(); v[0] = (int) f.categoryBits; v[1] = (int) f.maskBits; v[2] = (int) f.groupIndex; } int Fixture::setCategory(lua_State *L) { b2Filter f = fixture->GetFilterData(); f.categoryBits = (uint16)getBits(L); fixture->SetFilterData(f); return 0; } int Fixture::setMask(lua_State *L) { b2Filter f = fixture->GetFilterData(); f.maskBits = ~(uint16)getBits(L); fixture->SetFilterData(f); return 0; } void Fixture::setGroupIndex(int index) { b2Filter f = fixture->GetFilterData(); f.groupIndex = (uint16)index; fixture->SetFilterData(f); } int Fixture::getGroupIndex() const { b2Filter f = fixture->GetFilterData(); return f.groupIndex; } int Fixture::getCategory(lua_State *L) { return pushBits(L, fixture->GetFilterData().categoryBits); } int Fixture::getMask(lua_State *L) { return pushBits(L, ~(fixture->GetFilterData().maskBits)); } uint16 Fixture::getBits(lua_State *L) { // Get number of args. int argc = lua_gettop(L); // The new bitset. std::bitset<16> b; for (int i = 1; i<=argc; i++) { size_t bpos = (size_t)(lua_tointeger(L, i)-1); if (bpos >= 16) luaL_error(L, "Values must be in range 1-16."); b.set(bpos, true); } return (uint16)b.to_ulong(); } int Fixture::pushBits(lua_State *L, uint16 bits) { // Create a bitset. std::bitset<16> b((int)bits); // Push all set bits. for (int i = 0; i<16; i++) if (b.test(i)) lua_pushinteger(L, i+1); // Count number of set bits. return (int)b.count(); } int Fixture::setUserData(lua_State *L) { love::luax_assert_argc(L, 1, 1); if (data->ref != nullptr) { // We set the Reference's lua_State to this one before deleting it, so // it unrefs using the current lua_State's stack. This is necessary // if setUserData is called in a coroutine. data->ref->setL(L); delete data->ref; } data->ref = new Reference(L); return 0; } int Fixture::getUserData(lua_State *L) { if (data->ref != nullptr) data->ref->push(L); else lua_pushnil(L); return 1; } bool Fixture::testPoint(float x, float y) const { return fixture->TestPoint(Physics::scaleDown(b2Vec2(x, y))); } int Fixture::rayCast(lua_State *L) const { float p1x = Physics::scaleDown((float)luaL_checknumber(L, 1)); float p1y = Physics::scaleDown((float)luaL_checknumber(L, 2)); float p2x = Physics::scaleDown((float)luaL_checknumber(L, 3)); float p2y = Physics::scaleDown((float)luaL_checknumber(L, 4)); float maxFraction = (float)luaL_checknumber(L, 5); int childIndex = (int)luaL_optint(L, 6, 1) - 1; // Convert from 1-based index b2RayCastInput input; input.p1.Set(p1x, p1y); input.p2.Set(p2x, p2y); input.maxFraction = maxFraction; b2RayCastOutput output; if (!fixture->RayCast(&output, input, childIndex)) return 0; // Nothing hit. lua_pushnumber(L, output.normal.x); lua_pushnumber(L, output.normal.y); lua_pushnumber(L, output.fraction); return 3; } int Fixture::getBoundingBox(lua_State *L) const { int childIndex = (int)luaL_optint(L, 1, 1) - 1; // Convert from 1-based index b2AABB box = fixture->GetAABB(childIndex); box = Physics::scaleUp(box); lua_pushnumber(L, box.lowerBound.x); lua_pushnumber(L, box.lowerBound.y); lua_pushnumber(L, box.upperBound.x); lua_pushnumber(L, box.upperBound.y); return 4; } int Fixture::getMassData(lua_State *L) const { b2MassData data; fixture->GetMassData(&data); b2Vec2 center = Physics::scaleUp(data.center); lua_pushnumber(L, center.x); lua_pushnumber(L, center.y); lua_pushnumber(L, data.mass); lua_pushnumber(L, data.I); return 4; } void Fixture::destroy(bool implicit) { if (body->world->world->IsLocked()) { // Called during time step. Save reference for destruction afterwards. this->retain(); body->world->destructFixtures.push_back(this); return; } if (!implicit && fixture != nullptr) body->body->DestroyFixture(fixture); Memoizer::remove(fixture); fixture = nullptr; // Box2D fixture destroyed. Release its reference to the love Fixture. this->release(); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/Shape.h0000644000000000000000000000374312316602166020646 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_SHAPE_H #define LOVE_PHYSICS_BOX2D_SHAPE_H // LOVE #include "physics/Shape.h" #include "physics/box2d/Body.h" #include "common/Reference.h" // Box2D #include namespace love { namespace physics { namespace box2d { /** * A Shape is geometry, attached to a Body via a Fixture. * A Body has position and orientation, and * a Shape's geometry will be affected by the parent * body's transformation. **/ class Shape : public love::physics::Shape { public: friend class Fixture; /** * Creates a Shape. **/ Shape(); Shape(b2Shape *shape, bool own = true); virtual ~Shape(); /** * Gets the type of Shape. Useful for * debug drawing. **/ Type getType() const; float getRadius() const; int getChildCount() const; bool testPoint(float x, float y, float r, float px, float py) const; int rayCast(lua_State *L) const; int computeAABB(lua_State *L) const; int computeMass(lua_State *L) const; protected: // The Box2D shape. b2Shape *shape; bool own; }; } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_SHAPE_H love-0.9.1/src/modules/physics/box2d/wrap_RevoluteJoint.cpp0000644000000000000000000001306712316602166024003 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_RevoluteJoint.h" #include "wrap_Physics.h" namespace love { namespace physics { namespace box2d { RevoluteJoint *luax_checkrevolutejoint(lua_State *L, int idx) { RevoluteJoint *j = luax_checktype(L, idx, "RevoluteJoint", PHYSICS_REVOLUTE_JOINT_T); if (!j->isValid()) luaL_error(L, "Attempt to use destroyed joint."); return j; } int w_RevoluteJoint_getJointAngle(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); lua_pushnumber(L, t->getJointAngle()); return 1; } int w_RevoluteJoint_getJointSpeed(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); lua_pushnumber(L, t->getJointSpeed()); return 1; } int w_RevoluteJoint_setMotorEnabled(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); bool arg1 = luax_toboolean(L, 2); t->setMotorEnabled(arg1); return 0; } int w_RevoluteJoint_isMotorEnabled(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); luax_pushboolean(L, t->isMotorEnabled()); return 1; } int w_RevoluteJoint_setMaxMotorTorque(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setMaxMotorTorque(arg1); return 0; } int w_RevoluteJoint_setMotorSpeed(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setMotorSpeed(arg1); return 0; } int w_RevoluteJoint_getMotorSpeed(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); lua_pushnumber(L, t->getMotorSpeed()); return 1; } int w_RevoluteJoint_getMotorTorque(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); float inv_dt = (float)luaL_checknumber(L, 2); lua_pushnumber(L, t->getMotorTorque(inv_dt)); return 1; } int w_RevoluteJoint_getMaxMotorTorque(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); lua_pushnumber(L, t->getMaxMotorTorque()); return 1; } int w_RevoluteJoint_setLimitsEnabled(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); bool arg1 = luax_toboolean(L, 2); t->setLimitsEnabled(arg1); return 0; } int w_RevoluteJoint_hasLimitsEnabled(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); luax_pushboolean(L, t->hasLimitsEnabled()); return 1; } int w_RevoluteJoint_setUpperLimit(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setUpperLimit(arg1);) return 0; } int w_RevoluteJoint_setLowerLimit(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); EXCEPT_GUARD(t->setLowerLimit(arg1);) return 0; } int w_RevoluteJoint_setLimits(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_checknumber(L, 3); EXCEPT_GUARD(t->setLimits(arg1, arg2);) return 0; } int w_RevoluteJoint_getLowerLimit(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); lua_pushnumber(L, t->getLowerLimit()); return 1; } int w_RevoluteJoint_getUpperLimit(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); lua_pushnumber(L, t->getUpperLimit()); return 1; } int w_RevoluteJoint_getLimits(lua_State *L) { RevoluteJoint *t = luax_checkrevolutejoint(L, 1); lua_remove(L, 1); return t->getLimits(L); } static const luaL_Reg functions[] = { { "getJointAngle", w_RevoluteJoint_getJointAngle }, { "getJointSpeed", w_RevoluteJoint_getJointSpeed }, { "setMotorEnabled", w_RevoluteJoint_setMotorEnabled }, { "isMotorEnabled", w_RevoluteJoint_isMotorEnabled }, { "setMaxMotorTorque", w_RevoluteJoint_setMaxMotorTorque }, { "setMotorSpeed", w_RevoluteJoint_setMotorSpeed }, { "getMotorSpeed", w_RevoluteJoint_getMotorSpeed }, { "getMotorTorque", w_RevoluteJoint_getMotorTorque }, { "getMaxMotorTorque", w_RevoluteJoint_getMaxMotorTorque }, { "setLimitsEnabled", w_RevoluteJoint_setLimitsEnabled }, { "hasLimitsEnabled", w_RevoluteJoint_hasLimitsEnabled }, { "setUpperLimit", w_RevoluteJoint_setUpperLimit }, { "setLowerLimit", w_RevoluteJoint_setLowerLimit }, { "setLimits", w_RevoluteJoint_setLimits }, { "getLowerLimit", w_RevoluteJoint_getLowerLimit }, { "getUpperLimit", w_RevoluteJoint_getUpperLimit }, { "getLimits", w_RevoluteJoint_getLimits }, // From Joint. { "getType", w_Joint_getType }, { "getAnchors", w_Joint_getAnchors }, { "getReactionForce", w_Joint_getReactionForce }, { "getReactionTorque", w_Joint_getReactionTorque }, { "getCollideConnected", w_Joint_getCollideConnected }, { "destroy", w_Joint_destroy }, { 0, 0 } }; extern "C" int luaopen_revolutejoint(lua_State *L) { return luax_register_type(L, "RevoluteJoint", functions); } } // box2d } // physics } // love love-0.9.1/src/modules/physics/box2d/wrap_MotorJoint.h0000644000000000000000000000344012316602166022735 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BOX2D_WRAP_MOTOR_JOINT_H #define LOVE_PHYSICS_BOX2D_WRAP_MOTOR_JOINT_H // LOVE #include "common/runtime.h" #include "wrap_Joint.h" #include "MotorJoint.h" namespace love { namespace physics { namespace box2d { MotorJoint *luax_checkmotorjoint(lua_State *L, int idx); int w_MotorJoint_setLinearOffset(lua_State *L); int w_MotorJoint_getLinearOffset(lua_State *L); int w_MotorJoint_setAngularOffset(lua_State *L); int w_MotorJoint_getAngularOffset(lua_State *L); int w_MotorJoint_setMaxForce(lua_State *L); int w_MotorJoint_getMaxForce(lua_State *L); int w_MotorJoint_setMaxTorque(lua_State *L); int w_MotorJoint_getMaxTorque(lua_State *L); int w_MotorJoint_setCorrectionFactor(lua_State *L); int w_MotorJoint_getCorrectionFactor(lua_State *L); extern "C" int luaopen_motorjoint(lua_State *L); } // box2d } // physics } // love #endif // LOVE_PHYSICS_BOX2D_WRAP_MOTOR_JOINT_H love-0.9.1/src/modules/physics/Joint.cpp0000644000000000000000000000334212316602166020201 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Joint.h" namespace love { namespace physics { Joint::~Joint() { } bool Joint::getConstant(const char *in, Type &out) { return types.find(in, out); } bool Joint::getConstant(Type in, const char *&out) { return types.find(in, out); } StringMap::Entry Joint::typeEntries[] = { {"distance", Joint::JOINT_DISTANCE}, {"revolute", Joint::JOINT_REVOLUTE}, {"prismatic", Joint::JOINT_PRISMATIC}, {"mouse", Joint::JOINT_MOUSE}, {"pulley", Joint::JOINT_PULLEY}, {"gear", Joint::JOINT_GEAR}, {"friction", Joint::JOINT_FRICTION}, {"weld", Joint::JOINT_WELD}, {"wheel", Joint::JOINT_WHEEL}, {"rope", Joint::JOINT_ROPE}, {"motor", Joint::JOINT_MOTOR}, }; StringMap Joint::types(Joint::typeEntries, sizeof(Joint::typeEntries)); } // physics } // love love-0.9.1/src/modules/physics/Body.cpp0000644000000000000000000000270512316602166020015 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Body.h" namespace love { namespace physics { Body::~Body() { } bool Body::getConstant(const char *in, Type &out) { return types.find(in, out); } bool Body::getConstant(Type in, const char *&out) { return types.find(in, out); } StringMap::Entry Body::typeEntries[] = { {"static", Body::BODY_STATIC}, {"dynamic", Body::BODY_DYNAMIC}, {"kinematic", Body::BODY_KINEMATIC}, }; StringMap Body::types(Body::typeEntries, sizeof(Body::typeEntries)); } // physics } // love love-0.9.1/src/modules/physics/Shape.cpp0000644000000000000000000000276012316602166020161 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Shape.h" namespace love { namespace physics { Shape::~Shape() { } bool Shape::getConstant(const char *in, Type &out) { return types.find(in, out); } bool Shape::getConstant(Type in, const char *&out) { return types.find(in, out); } StringMap::Entry Shape::typeEntries[] = { {"circle", Shape::SHAPE_CIRCLE}, {"polygon", Shape::SHAPE_POLYGON}, {"edge", Shape::SHAPE_EDGE}, {"chain", Shape::SHAPE_CHAIN}, }; StringMap Shape::types(Shape::typeEntries, sizeof(Shape::typeEntries)); } // physics } // love love-0.9.1/src/modules/physics/Body.h0000644000000000000000000000276512316602166017470 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_BODY_H #define LOVE_PHYSICS_BODY_H // LOVE #include "common/Object.h" #include "common/StringMap.h" namespace love { namespace physics { class Body : public Object { public: enum Type { BODY_INVALID, BODY_STATIC, BODY_DYNAMIC, BODY_KINEMATIC, BODY_MAX_ENUM }; virtual ~Body(); static bool getConstant(const char *in, Type &out); static bool getConstant(Type in, const char *&out); private: static StringMap::Entry typeEntries[]; static StringMap types; }; } // physics } // love #endif // LOVE_PHYSICS_BODY_H love-0.9.1/src/modules/physics/Shape.h0000644000000000000000000000301312316602166017616 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_PHYSICS_SHAPE_H #define LOVE_PHYSICS_SHAPE_H // LOVE #include "common/Object.h" #include "common/StringMap.h" namespace love { namespace physics { class Shape : public Object { public: enum Type { SHAPE_INVALID, SHAPE_CIRCLE, SHAPE_POLYGON, SHAPE_EDGE, SHAPE_CHAIN, SHAPE_MAX_ENUM }; virtual ~Shape(); static bool getConstant(const char *in, Type &out); static bool getConstant(Type in, const char *&out); private: static StringMap::Entry typeEntries[]; static StringMap types; }; } // physics } // love #endif // LOVE_PHYSICS_SHAPE_H love-0.9.1/src/modules/keyboard/0000755000000000000000000000000012316602462016525 5ustar00rootroot00000000000000love-0.9.1/src/modules/keyboard/Keyboard.h0000644000000000000000000001142412316602166020441 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_KEYBOARD_KEYBOARD_H #define LOVE_KEYBOARD_KEYBOARD_H // LOVE #include "common/Module.h" #include "common/StringMap.h" namespace love { namespace keyboard { class Keyboard : public Module { public: enum Key { KEY_UNKNOWN, KEY_RETURN, KEY_ESCAPE, KEY_BACKSPACE, KEY_TAB, KEY_SPACE, KEY_EXCLAIM, KEY_QUOTEDBL, KEY_HASH, KEY_PERCENT, KEY_DOLLAR, KEY_AMPERSAND, KEY_QUOTE, KEY_LEFTPAREN, KEY_RIGHTPAREN, KEY_ASTERISK, KEY_PLUS, KEY_COMMA, KEY_MINUS, KEY_PERIOD, KEY_SLASH, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_COLON, KEY_SEMICOLON, KEY_LESS, KEY_EQUALS, KEY_GREATER, KEY_QUESTION, KEY_AT, KEY_LEFTBRACKET, KEY_BACKSLASH, KEY_RIGHTBRACKET, KEY_CARET, KEY_UNDERSCORE, KEY_BACKQUOTE, KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, KEY_CAPSLOCK, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, KEY_PRINTSCREEN, KEY_SCROLLLOCK, KEY_PAUSE, KEY_INSERT, KEY_HOME, KEY_PAGEUP, KEY_DELETE, KEY_END, KEY_PAGEDOWN, KEY_RIGHT, KEY_LEFT, KEY_DOWN, KEY_UP, KEY_NUMLOCKCLEAR, KEY_KP_DIVIDE, KEY_KP_MULTIPLY, KEY_KP_MINUS, KEY_KP_PLUS, KEY_KP_ENTER, KEY_KP_1, KEY_KP_2, KEY_KP_3, KEY_KP_4, KEY_KP_5, KEY_KP_6, KEY_KP_7, KEY_KP_8, KEY_KP_9, KEY_KP_0, KEY_KP_PERIOD, KEY_KP_COMMA, KEY_KP_EQUALS, KEY_APPLICATION, KEY_POWER, KEY_F13, KEY_F14, KEY_F15, KEY_F16, KEY_F17, KEY_F18, KEY_F19, KEY_F20, KEY_F21, KEY_F22, KEY_F23, KEY_F24, KEY_EXECUTE, KEY_HELP, KEY_MENU, KEY_SELECT, KEY_STOP, KEY_AGAIN, KEY_UNDO, KEY_CUT, KEY_COPY, KEY_PASTE, KEY_FIND, KEY_MUTE, KEY_VOLUMEUP, KEY_VOLUMEDOWN, KEY_ALTERASE, KEY_SYSREQ, KEY_CANCEL, KEY_CLEAR, KEY_PRIOR, KEY_RETURN2, KEY_SEPARATOR, KEY_OUT, KEY_OPER, KEY_CLEARAGAIN, KEY_THOUSANDSSEPARATOR, KEY_DECIMALSEPARATOR, KEY_CURRENCYUNIT, KEY_CURRENCYSUBUNIT, KEY_LCTRL, KEY_LSHIFT, KEY_LALT, KEY_LGUI, KEY_RCTRL, KEY_RSHIFT, KEY_RALT, KEY_RGUI, KEY_MODE, KEY_AUDIONEXT, KEY_AUDIOPREV, KEY_AUDIOSTOP, KEY_AUDIOPLAY, KEY_AUDIOMUTE, KEY_MEDIASELECT, KEY_WWW, KEY_MAIL, KEY_CALCULATOR, KEY_COMPUTER, KEY_APP_SEARCH, KEY_APP_HOME, KEY_APP_BACK, KEY_APP_FORWARD, KEY_APP_STOP, KEY_APP_REFRESH, KEY_APP_BOOKMARKS, KEY_BRIGHTNESSDOWN, KEY_BRIGHTNESSUP, KEY_DISPLAYSWITCH, KEY_KBDILLUMTOGGLE, KEY_KBDILLUMDOWN, KEY_KBDILLUMUP, KEY_EJECT, KEY_SLEEP, KEY_MAX_ENUM = 512 }; virtual ~Keyboard() {} /** * Sets whether repeat keypress events should be sent if a key is held down. * Does not affect text input events. * @param enable Whether to send repeat key press events. **/ virtual void setKeyRepeat(bool enable) = 0; /** * Gets whether repeat keypress events will be sent if a key is held down. **/ virtual bool hasKeyRepeat() const = 0; /** * Checks whether certain keys are down or not. * @param keylist An array of key identifiers, terminated by KEY_MAX_ENUM. * @return boolean **/ virtual bool isDown(Key *keylist) const = 0; /** * Sets whether text input events should be sent * @param enable Whether to send text input events. **/ virtual void setTextInput(bool enable) = 0; /** * Gets whether text input events are enabled. **/ virtual bool hasTextInput() const = 0; static bool getConstant(const char *in, Key &out); static bool getConstant(Key in, const char *&out); private: static StringMap::Entry keyEntries[]; static StringMap keys; }; // Keyboard } // keyboard } // love #endif // LOVE_KEYBOARD_KEYBOARD_H love-0.9.1/src/modules/keyboard/wrap_Keyboard.cpp0000644000000000000000000000470212316602166022026 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" #include "wrap_Keyboard.h" #include "sdl/Keyboard.h" namespace love { namespace keyboard { static Keyboard *instance = 0; int w_setKeyRepeat(lua_State *L) { instance->setKeyRepeat(luax_toboolean(L, 1)); return 0; } int w_hasKeyRepeat(lua_State *L) { luax_pushboolean(L, instance->hasKeyRepeat()); return 1; } int w_isDown(lua_State *L) { Keyboard::Key k; unsigned int num = lua_gettop(L); Keyboard::Key *keylist = new Keyboard::Key[num+1]; unsigned int counter = 0; for (unsigned int i = 0; i < num; i++) { if (Keyboard::getConstant(luaL_checkstring(L, i+1), k)) keylist[counter++] = k; } keylist[counter] = Keyboard::KEY_MAX_ENUM; luax_pushboolean(L, instance->isDown(keylist)); delete[] keylist; return 1; } int w_setTextInput(lua_State *L) { instance->setTextInput(luax_toboolean(L, 1)); return 0; } int w_hasTextInput(lua_State *L) { luax_pushboolean(L, instance->hasTextInput()); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "setKeyRepeat", w_setKeyRepeat }, { "hasKeyRepeat", w_hasKeyRepeat }, { "setTextInput", w_setTextInput }, { "hasTextInput", w_hasTextInput }, { "isDown", w_isDown }, { 0, 0 } }; extern "C" int luaopen_love_keyboard(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new love::keyboard::sdl::Keyboard();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "keyboard"; w.flags = MODULE_T; w.functions = functions; w.types = 0; return luax_register_module(L, w); } } // keyboard } // love love-0.9.1/src/modules/keyboard/wrap_Keyboard.h0000644000000000000000000000256112316602166021474 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_KEYBOARD_WRAP_KEYBOARD_H #define LOVE_KEYBOARD_WRAP_KEYBOARD_H // LOVE #include "common/runtime.h" #include "Keyboard.h" namespace love { namespace keyboard { int w_setKeyRepeat(lua_State *L); int w_hasKeyRepeat(lua_State *L); int w_isDown(lua_State *L); int w_setTextInput(lua_State *L); int w_hasTextInput(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_keyboard(lua_State *L); } // keyboard } // love #endif // LOVE_KEYBOARD_WRAP_KEYBOARD_H love-0.9.1/src/modules/keyboard/sdl/0000755000000000000000000000000012316602462017307 5ustar00rootroot00000000000000love-0.9.1/src/modules/keyboard/sdl/Keyboard.h0000644000000000000000000000320312316602166021217 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_KEYBOARD_SDL_KEYBOARD_H #define LOVE_KEYBOARD_SDL_KEYBOARD_H // LOVE #include "keyboard/Keyboard.h" #include "common/EnumMap.h" // SDL #include // STL #include namespace love { namespace keyboard { namespace sdl { class Keyboard : public love::keyboard::Keyboard { public: Keyboard(); // Implements Module. const char *getName() const; void setKeyRepeat(bool enable); bool hasKeyRepeat() const; bool isDown(Key *keylist) const; void setTextInput(bool enable); bool hasTextInput() const; private: bool key_repeat; static std::map createKeyMap(); static std::map keys; }; // Keyboard } // sdl } // keyboard } // love #endif // LOVE_KEYBOARD_SDL_KEYBOARD_H love-0.9.1/src/modules/keyboard/sdl/Keyboard.cpp0000644000000000000000000002227112316602166021560 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" #include "Keyboard.h" namespace love { namespace keyboard { namespace sdl { Keyboard::Keyboard() : key_repeat(false) { } const char *Keyboard::getName() const { return "love.keyboard.sdl"; } void Keyboard::setKeyRepeat(bool enable) { key_repeat = enable; } bool Keyboard::hasKeyRepeat() const { return key_repeat; } bool Keyboard::isDown(Key *keylist) const { const Uint8 *keystate = SDL_GetKeyboardState(0); std::map::const_iterator it; for (Key key = *keylist; key != KEY_MAX_ENUM; key = *(++keylist)) { it = keys.find(key); if (it != keys.end() && keystate[SDL_GetScancodeFromKey(it->second)]) return true; } return false; } void Keyboard::setTextInput(bool enable) { if (enable) SDL_StartTextInput(); else SDL_StopTextInput(); } bool Keyboard::hasTextInput() const { return SDL_IsTextInputActive(); } std::map Keyboard::createKeyMap() { std::map k; k[Keyboard::KEY_UNKNOWN] = SDLK_UNKNOWN; k[Keyboard::KEY_RETURN] = SDLK_RETURN; k[Keyboard::KEY_ESCAPE] = SDLK_ESCAPE; k[Keyboard::KEY_BACKSPACE] = SDLK_BACKSPACE; k[Keyboard::KEY_TAB] = SDLK_TAB; k[Keyboard::KEY_SPACE] = SDLK_SPACE; k[Keyboard::KEY_EXCLAIM] = SDLK_EXCLAIM; k[Keyboard::KEY_QUOTEDBL] = SDLK_QUOTEDBL; k[Keyboard::KEY_HASH] = SDLK_HASH; k[Keyboard::KEY_DOLLAR] = SDLK_DOLLAR; k[Keyboard::KEY_AMPERSAND] = SDLK_AMPERSAND; k[Keyboard::KEY_QUOTE] = SDLK_QUOTE; k[Keyboard::KEY_LEFTPAREN] = SDLK_LEFTPAREN; k[Keyboard::KEY_RIGHTPAREN] = SDLK_RIGHTPAREN; k[Keyboard::KEY_ASTERISK] = SDLK_ASTERISK; k[Keyboard::KEY_PLUS] = SDLK_PLUS; k[Keyboard::KEY_COMMA] = SDLK_COMMA; k[Keyboard::KEY_MINUS] = SDLK_MINUS; k[Keyboard::KEY_PERIOD] = SDLK_PERIOD; k[Keyboard::KEY_SLASH] = SDLK_SLASH; k[Keyboard::KEY_0] = SDLK_0; k[Keyboard::KEY_1] = SDLK_1; k[Keyboard::KEY_2] = SDLK_2; k[Keyboard::KEY_3] = SDLK_3; k[Keyboard::KEY_4] = SDLK_4; k[Keyboard::KEY_5] = SDLK_5; k[Keyboard::KEY_6] = SDLK_6; k[Keyboard::KEY_7] = SDLK_7; k[Keyboard::KEY_8] = SDLK_8; k[Keyboard::KEY_9] = SDLK_9; k[Keyboard::KEY_COLON] = SDLK_COLON; k[Keyboard::KEY_SEMICOLON] = SDLK_SEMICOLON; k[Keyboard::KEY_LESS] = SDLK_LESS; k[Keyboard::KEY_EQUALS] = SDLK_EQUALS; k[Keyboard::KEY_GREATER] = SDLK_GREATER; k[Keyboard::KEY_QUESTION] = SDLK_QUESTION; k[Keyboard::KEY_AT] = SDLK_AT; k[Keyboard::KEY_LEFTBRACKET] = SDLK_LEFTBRACKET; k[Keyboard::KEY_BACKSLASH] = SDLK_BACKSLASH; k[Keyboard::KEY_RIGHTBRACKET] = SDLK_RIGHTBRACKET; k[Keyboard::KEY_CARET] = SDLK_CARET; k[Keyboard::KEY_UNDERSCORE] = SDLK_UNDERSCORE; k[Keyboard::KEY_BACKQUOTE] = SDLK_BACKQUOTE; k[Keyboard::KEY_A] = SDLK_a; k[Keyboard::KEY_B] = SDLK_b; k[Keyboard::KEY_C] = SDLK_c; k[Keyboard::KEY_D] = SDLK_d; k[Keyboard::KEY_E] = SDLK_e; k[Keyboard::KEY_F] = SDLK_f; k[Keyboard::KEY_G] = SDLK_g; k[Keyboard::KEY_H] = SDLK_h; k[Keyboard::KEY_I] = SDLK_i; k[Keyboard::KEY_J] = SDLK_j; k[Keyboard::KEY_K] = SDLK_k; k[Keyboard::KEY_L] = SDLK_l; k[Keyboard::KEY_M] = SDLK_m; k[Keyboard::KEY_N] = SDLK_n; k[Keyboard::KEY_O] = SDLK_o; k[Keyboard::KEY_P] = SDLK_p; k[Keyboard::KEY_Q] = SDLK_q; k[Keyboard::KEY_R] = SDLK_r; k[Keyboard::KEY_S] = SDLK_s; k[Keyboard::KEY_T] = SDLK_t; k[Keyboard::KEY_U] = SDLK_u; k[Keyboard::KEY_V] = SDLK_v; k[Keyboard::KEY_W] = SDLK_w; k[Keyboard::KEY_X] = SDLK_x; k[Keyboard::KEY_Y] = SDLK_y; k[Keyboard::KEY_Z] = SDLK_z; k[Keyboard::KEY_CAPSLOCK] = SDLK_CAPSLOCK; k[Keyboard::KEY_F1] = SDLK_F1; k[Keyboard::KEY_F2] = SDLK_F2; k[Keyboard::KEY_F3] = SDLK_F3; k[Keyboard::KEY_F4] = SDLK_F4; k[Keyboard::KEY_F5] = SDLK_F5; k[Keyboard::KEY_F6] = SDLK_F6; k[Keyboard::KEY_F7] = SDLK_F7; k[Keyboard::KEY_F8] = SDLK_F8; k[Keyboard::KEY_F9] = SDLK_F9; k[Keyboard::KEY_F10] = SDLK_F10; k[Keyboard::KEY_F11] = SDLK_F11; k[Keyboard::KEY_F12] = SDLK_F12; k[Keyboard::KEY_PRINTSCREEN] = SDLK_PRINTSCREEN; k[Keyboard::KEY_SCROLLLOCK] = SDLK_SCROLLLOCK; k[Keyboard::KEY_PAUSE] = SDLK_PAUSE; k[Keyboard::KEY_INSERT] = SDLK_INSERT; k[Keyboard::KEY_HOME] = SDLK_HOME; k[Keyboard::KEY_PAGEUP] = SDLK_PAGEUP; k[Keyboard::KEY_DELETE] = SDLK_DELETE; k[Keyboard::KEY_END] = SDLK_END; k[Keyboard::KEY_PAGEDOWN] = SDLK_PAGEDOWN; k[Keyboard::KEY_RIGHT] = SDLK_RIGHT; k[Keyboard::KEY_LEFT] = SDLK_LEFT; k[Keyboard::KEY_DOWN] = SDLK_DOWN; k[Keyboard::KEY_UP] = SDLK_UP; k[Keyboard::KEY_NUMLOCKCLEAR] = SDLK_NUMLOCKCLEAR; k[Keyboard::KEY_KP_DIVIDE] = SDLK_KP_DIVIDE; k[Keyboard::KEY_KP_MULTIPLY] = SDLK_KP_MULTIPLY; k[Keyboard::KEY_KP_MINUS] = SDLK_KP_MINUS; k[Keyboard::KEY_KP_PLUS] = SDLK_KP_PLUS; k[Keyboard::KEY_KP_ENTER] = SDLK_KP_ENTER; k[Keyboard::KEY_KP_0] = SDLK_KP_0; k[Keyboard::KEY_KP_1] = SDLK_KP_1; k[Keyboard::KEY_KP_2] = SDLK_KP_2; k[Keyboard::KEY_KP_3] = SDLK_KP_3; k[Keyboard::KEY_KP_4] = SDLK_KP_4; k[Keyboard::KEY_KP_5] = SDLK_KP_5; k[Keyboard::KEY_KP_6] = SDLK_KP_6; k[Keyboard::KEY_KP_7] = SDLK_KP_7; k[Keyboard::KEY_KP_8] = SDLK_KP_8; k[Keyboard::KEY_KP_9] = SDLK_KP_9; k[Keyboard::KEY_KP_PERIOD] = SDLK_KP_PERIOD; k[Keyboard::KEY_KP_COMMA] = SDLK_KP_COMMA; k[Keyboard::KEY_KP_EQUALS] = SDLK_KP_EQUALS; k[Keyboard::KEY_APPLICATION] = SDLK_APPLICATION; k[Keyboard::KEY_POWER] = SDLK_POWER; k[Keyboard::KEY_F13] = SDLK_F13; k[Keyboard::KEY_F14] = SDLK_F14; k[Keyboard::KEY_F15] = SDLK_F15; k[Keyboard::KEY_F16] = SDLK_F16; k[Keyboard::KEY_F17] = SDLK_F17; k[Keyboard::KEY_F18] = SDLK_F18; k[Keyboard::KEY_F19] = SDLK_F19; k[Keyboard::KEY_F20] = SDLK_F20; k[Keyboard::KEY_F21] = SDLK_F21; k[Keyboard::KEY_F22] = SDLK_F22; k[Keyboard::KEY_F23] = SDLK_F23; k[Keyboard::KEY_F24] = SDLK_F24; k[Keyboard::KEY_EXECUTE] = SDLK_EXECUTE; k[Keyboard::KEY_HELP] = SDLK_HELP; k[Keyboard::KEY_MENU] = SDLK_MENU; k[Keyboard::KEY_SELECT] = SDLK_SELECT; k[Keyboard::KEY_STOP] = SDLK_STOP; k[Keyboard::KEY_AGAIN] = SDLK_AGAIN; k[Keyboard::KEY_UNDO] = SDLK_UNDO; k[Keyboard::KEY_CUT] = SDLK_CUT; k[Keyboard::KEY_COPY] = SDLK_COPY; k[Keyboard::KEY_PASTE] = SDLK_PASTE; k[Keyboard::KEY_FIND] = SDLK_FIND; k[Keyboard::KEY_MUTE] = SDLK_MUTE; k[Keyboard::KEY_VOLUMEUP] = SDLK_VOLUMEUP; k[Keyboard::KEY_VOLUMEDOWN] = SDLK_VOLUMEDOWN; k[Keyboard::KEY_ALTERASE] = SDLK_ALTERASE; k[Keyboard::KEY_SYSREQ] = SDLK_SYSREQ; k[Keyboard::KEY_CANCEL] = SDLK_CANCEL; k[Keyboard::KEY_CLEAR] = SDLK_CLEAR; k[Keyboard::KEY_PRIOR] = SDLK_PRIOR; k[Keyboard::KEY_RETURN2] = SDLK_RETURN2; k[Keyboard::KEY_SEPARATOR] = SDLK_SEPARATOR; k[Keyboard::KEY_OUT] = SDLK_OUT; k[Keyboard::KEY_OPER] = SDLK_OPER; k[Keyboard::KEY_CLEARAGAIN] = SDLK_CLEARAGAIN; k[Keyboard::KEY_THOUSANDSSEPARATOR] = SDLK_THOUSANDSSEPARATOR; k[Keyboard::KEY_DECIMALSEPARATOR] = SDLK_DECIMALSEPARATOR; k[Keyboard::KEY_CURRENCYUNIT] = SDLK_CURRENCYUNIT; k[Keyboard::KEY_CURRENCYSUBUNIT] = SDLK_CURRENCYSUBUNIT; k[Keyboard::KEY_LCTRL] = SDLK_LCTRL; k[Keyboard::KEY_LSHIFT] = SDLK_LSHIFT; k[Keyboard::KEY_LALT] = SDLK_LALT; k[Keyboard::KEY_LGUI] = SDLK_LGUI; k[Keyboard::KEY_RCTRL] = SDLK_RCTRL; k[Keyboard::KEY_RSHIFT] = SDLK_RSHIFT; k[Keyboard::KEY_RALT] = SDLK_RALT; k[Keyboard::KEY_RGUI] = SDLK_RGUI; k[Keyboard::KEY_MODE] = SDLK_MODE; k[Keyboard::KEY_AUDIONEXT] = SDLK_AUDIONEXT; k[Keyboard::KEY_AUDIOPREV] = SDLK_AUDIOPREV; k[Keyboard::KEY_AUDIOSTOP] = SDLK_AUDIOSTOP; k[Keyboard::KEY_AUDIOPLAY] = SDLK_AUDIOPLAY; k[Keyboard::KEY_AUDIOMUTE] = SDLK_AUDIOMUTE; k[Keyboard::KEY_MEDIASELECT] = SDLK_MEDIASELECT; k[Keyboard::KEY_WWW] = SDLK_WWW; k[Keyboard::KEY_MAIL] = SDLK_MAIL; k[Keyboard::KEY_CALCULATOR] = SDLK_CALCULATOR; k[Keyboard::KEY_COMPUTER] = SDLK_COMPUTER; k[Keyboard::KEY_APP_SEARCH] = SDLK_AC_SEARCH; k[Keyboard::KEY_APP_HOME] = SDLK_AC_HOME; k[Keyboard::KEY_APP_BACK] = SDLK_AC_BACK; k[Keyboard::KEY_APP_FORWARD] = SDLK_AC_FORWARD; k[Keyboard::KEY_APP_STOP] = SDLK_AC_STOP; k[Keyboard::KEY_APP_REFRESH] = SDLK_AC_REFRESH; k[Keyboard::KEY_APP_BOOKMARKS] = SDLK_AC_BOOKMARKS; k[Keyboard::KEY_BRIGHTNESSDOWN] = SDLK_BRIGHTNESSDOWN; k[Keyboard::KEY_BRIGHTNESSUP] = SDLK_BRIGHTNESSUP; k[Keyboard::KEY_DISPLAYSWITCH] = SDLK_DISPLAYSWITCH; k[Keyboard::KEY_KBDILLUMTOGGLE] = SDLK_KBDILLUMTOGGLE; k[Keyboard::KEY_KBDILLUMDOWN] = SDLK_KBDILLUMDOWN; k[Keyboard::KEY_KBDILLUMUP] = SDLK_KBDILLUMUP; k[Keyboard::KEY_EJECT] = SDLK_EJECT; k[Keyboard::KEY_SLEEP] = SDLK_SLEEP; return k; } std::map Keyboard::keys = Keyboard::createKeyMap(); } // sdl } // keyboard } // love love-0.9.1/src/modules/keyboard/Keyboard.cpp0000644000000000000000000001664312316602166021004 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" #include "Keyboard.h" namespace love { namespace keyboard { bool Keyboard::getConstant(const char *in, Keyboard::Key &out) { return keys.find(in, out); } bool Keyboard::getConstant(Keyboard::Key in, const char *&out) { return keys.find(in, out); } StringMap::Entry Keyboard::keyEntries[] = { {"return", Keyboard::KEY_RETURN}, {"escape", Keyboard::KEY_ESCAPE}, {"backspace", Keyboard::KEY_BACKSPACE}, {"tab", Keyboard::KEY_TAB}, {" ", Keyboard::KEY_SPACE}, {"!", Keyboard::KEY_EXCLAIM}, {"\"", Keyboard::KEY_QUOTEDBL}, {"#", Keyboard::KEY_HASH}, {"$", Keyboard::KEY_DOLLAR}, {"&", Keyboard::KEY_AMPERSAND}, {"'", Keyboard::KEY_QUOTE}, {"(", Keyboard::KEY_LEFTPAREN}, {")", Keyboard::KEY_RIGHTPAREN}, {"*", Keyboard::KEY_ASTERISK}, {"+", Keyboard::KEY_PLUS}, {",", Keyboard::KEY_COMMA}, {"-", Keyboard::KEY_MINUS}, {".", Keyboard::KEY_PERIOD}, {"/", Keyboard::KEY_SLASH}, {"0", Keyboard::KEY_0}, {"1", Keyboard::KEY_1}, {"2", Keyboard::KEY_2}, {"3", Keyboard::KEY_3}, {"4", Keyboard::KEY_4}, {"5", Keyboard::KEY_5}, {"6", Keyboard::KEY_6}, {"7", Keyboard::KEY_7}, {"8", Keyboard::KEY_8}, {"9", Keyboard::KEY_9}, {":", Keyboard::KEY_COLON}, {";", Keyboard::KEY_SEMICOLON}, {"<", Keyboard::KEY_LESS}, {"=", Keyboard::KEY_EQUALS}, {">", Keyboard::KEY_GREATER}, {"?", Keyboard::KEY_QUESTION}, {"@", Keyboard::KEY_AT}, {"[", Keyboard::KEY_LEFTBRACKET}, {"\\", Keyboard::KEY_BACKSLASH}, {"]", Keyboard::KEY_RIGHTBRACKET}, {"^", Keyboard::KEY_CARET}, {"_", Keyboard::KEY_UNDERSCORE}, {"`", Keyboard::KEY_BACKQUOTE}, {"a", Keyboard::KEY_A}, {"b", Keyboard::KEY_B}, {"c", Keyboard::KEY_C}, {"d", Keyboard::KEY_D}, {"e", Keyboard::KEY_E}, {"f", Keyboard::KEY_F}, {"g", Keyboard::KEY_G}, {"h", Keyboard::KEY_H}, {"i", Keyboard::KEY_I}, {"j", Keyboard::KEY_J}, {"k", Keyboard::KEY_K}, {"l", Keyboard::KEY_L}, {"m", Keyboard::KEY_M}, {"n", Keyboard::KEY_N}, {"o", Keyboard::KEY_O}, {"p", Keyboard::KEY_P}, {"q", Keyboard::KEY_Q}, {"r", Keyboard::KEY_R}, {"s", Keyboard::KEY_S}, {"t", Keyboard::KEY_T}, {"u", Keyboard::KEY_U}, {"v", Keyboard::KEY_V}, {"w", Keyboard::KEY_W}, {"x", Keyboard::KEY_X}, {"y", Keyboard::KEY_Y}, {"z", Keyboard::KEY_Z}, {"capslock", Keyboard::KEY_CAPSLOCK}, {"f1", Keyboard::KEY_F1}, {"f2", Keyboard::KEY_F2}, {"f3", Keyboard::KEY_F3}, {"f4", Keyboard::KEY_F4}, {"f5", Keyboard::KEY_F5}, {"f6", Keyboard::KEY_F6}, {"f7", Keyboard::KEY_F7}, {"f8", Keyboard::KEY_F8}, {"f9", Keyboard::KEY_F9}, {"f10", Keyboard::KEY_F10}, {"f11", Keyboard::KEY_F11}, {"f12", Keyboard::KEY_F12}, {"printscreen", Keyboard::KEY_PRINTSCREEN}, {"scrolllock", Keyboard::KEY_SCROLLLOCK}, {"pause", Keyboard::KEY_PAUSE}, {"insert", Keyboard::KEY_INSERT}, {"home", Keyboard::KEY_HOME}, {"pageup", Keyboard::KEY_PAGEUP}, {"delete", Keyboard::KEY_DELETE}, {"end", Keyboard::KEY_END}, {"pagedown", Keyboard::KEY_PAGEDOWN}, {"right", Keyboard::KEY_RIGHT}, {"left", Keyboard::KEY_LEFT}, {"down", Keyboard::KEY_DOWN}, {"up", Keyboard::KEY_UP}, {"numlock", Keyboard::KEY_NUMLOCKCLEAR}, {"kp/", Keyboard::KEY_KP_DIVIDE}, {"kp*", Keyboard::KEY_KP_MULTIPLY}, {"kp-", Keyboard::KEY_KP_MINUS}, {"kp+", Keyboard::KEY_KP_PLUS}, {"kpenter", Keyboard::KEY_KP_ENTER}, {"kp0", Keyboard::KEY_KP_0}, {"kp1", Keyboard::KEY_KP_1}, {"kp2", Keyboard::KEY_KP_2}, {"kp3", Keyboard::KEY_KP_3}, {"kp4", Keyboard::KEY_KP_4}, {"kp5", Keyboard::KEY_KP_5}, {"kp6", Keyboard::KEY_KP_6}, {"kp7", Keyboard::KEY_KP_7}, {"kp8", Keyboard::KEY_KP_8}, {"kp9", Keyboard::KEY_KP_9}, {"kp.", Keyboard::KEY_KP_PERIOD}, {"kp,", Keyboard::KEY_KP_COMMA}, {"kp=", Keyboard::KEY_KP_EQUALS}, {"application", Keyboard::KEY_APPLICATION}, {"power", Keyboard::KEY_POWER}, {"f13", Keyboard::KEY_F13}, {"f14", Keyboard::KEY_F14}, {"f15", Keyboard::KEY_F15}, {"f16", Keyboard::KEY_F16}, {"f17", Keyboard::KEY_F17}, {"f18", Keyboard::KEY_F18}, {"f19", Keyboard::KEY_F19}, {"f20", Keyboard::KEY_F20}, {"f21", Keyboard::KEY_F21}, {"f22", Keyboard::KEY_F22}, {"f23", Keyboard::KEY_F23}, {"f24", Keyboard::KEY_F24}, {"execute", Keyboard::KEY_EXECUTE}, {"help", Keyboard::KEY_HELP}, {"menu", Keyboard::KEY_MENU}, {"select", Keyboard::KEY_SELECT}, {"stop", Keyboard::KEY_STOP}, {"again", Keyboard::KEY_AGAIN}, {"undo", Keyboard::KEY_UNDO}, {"cut", Keyboard::KEY_CUT}, {"copy", Keyboard::KEY_COPY}, {"paste", Keyboard::KEY_PASTE}, {"find", Keyboard::KEY_FIND}, {"mute", Keyboard::KEY_MUTE}, {"volumeup", Keyboard::KEY_VOLUMEUP}, {"volumedown", Keyboard::KEY_VOLUMEDOWN}, {"alterase", Keyboard::KEY_ALTERASE}, {"sysreq", Keyboard::KEY_SYSREQ}, {"cancel", Keyboard::KEY_CANCEL}, {"clear", Keyboard::KEY_CLEAR}, {"prior", Keyboard::KEY_PRIOR}, {"return2", Keyboard::KEY_RETURN2}, {"separator", Keyboard::KEY_SEPARATOR}, {"out", Keyboard::KEY_OUT}, {"oper", Keyboard::KEY_OPER}, {"clearagain", Keyboard::KEY_CLEARAGAIN}, {"thsousandsseparator", Keyboard::KEY_THOUSANDSSEPARATOR}, {"decimalseparator", Keyboard::KEY_DECIMALSEPARATOR}, {"currencyunit", Keyboard::KEY_CURRENCYUNIT}, {"currencysubunit", Keyboard::KEY_CURRENCYSUBUNIT}, {"lctrl", Keyboard::KEY_LCTRL}, {"lshift", Keyboard::KEY_LSHIFT}, {"lalt", Keyboard::KEY_LALT}, {"lgui", Keyboard::KEY_LGUI}, {"rctrl", Keyboard::KEY_RCTRL}, {"rshift", Keyboard::KEY_RSHIFT}, {"ralt", Keyboard::KEY_RALT}, {"rgui", Keyboard::KEY_RGUI}, {"mode", Keyboard::KEY_MODE}, {"audionext", Keyboard::KEY_AUDIONEXT}, {"audioprev", Keyboard::KEY_AUDIOPREV}, {"audiostop", Keyboard::KEY_AUDIOSTOP}, {"audioplay", Keyboard::KEY_AUDIOPLAY}, {"audiomute", Keyboard::KEY_AUDIOMUTE}, {"mediaselect", Keyboard::KEY_MEDIASELECT}, {"www", Keyboard::KEY_WWW}, {"mail", Keyboard::KEY_MAIL}, {"calculator", Keyboard::KEY_CALCULATOR}, {"computer", Keyboard::KEY_COMPUTER}, {"appsearch", Keyboard::KEY_APP_SEARCH}, {"apphome", Keyboard::KEY_APP_HOME}, {"appback", Keyboard::KEY_APP_BACK}, {"appforward", Keyboard::KEY_APP_FORWARD}, {"appstop", Keyboard::KEY_APP_STOP}, {"apprefresh", Keyboard::KEY_APP_REFRESH}, {"appbookmarks", Keyboard::KEY_APP_BOOKMARKS}, {"brightnessdown", Keyboard::KEY_BRIGHTNESSDOWN}, {"brightnessup", Keyboard::KEY_BRIGHTNESSUP}, {"displayswitch", Keyboard::KEY_DISPLAYSWITCH}, {"kbdillumtoggle", Keyboard::KEY_KBDILLUMTOGGLE}, {"kbdillumdown", Keyboard::KEY_KBDILLUMDOWN}, {"kbdillumup", Keyboard::KEY_KBDILLUMUP}, {"eject", Keyboard::KEY_EJECT}, {"sleep", Keyboard::KEY_SLEEP}, }; StringMap Keyboard::keys(Keyboard::keyEntries, sizeof(Keyboard::keyEntries)); } // keyboard } // love love-0.9.1/src/modules/font/0000755000000000000000000000000012316602462015673 5ustar00rootroot00000000000000love-0.9.1/src/modules/font/wrap_Rasterizer.cpp0000644000000000000000000000670212316602166021570 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Rasterizer.h" #include "common/wrap_Data.h" namespace love { namespace font { Rasterizer *luax_checkrasterizer(lua_State *L, int idx) { return luax_checktype(L, idx, "Rasterizer", FONT_RASTERIZER_T); } int w_Rasterizer_getHeight(lua_State *L) { Rasterizer *t = luax_checkrasterizer(L, 1); lua_pushinteger(L, t->getHeight()); return 1; } int w_Rasterizer_getAdvance(lua_State *L) { Rasterizer *t = luax_checkrasterizer(L, 1); lua_pushinteger(L, t->getAdvance()); return 1; } int w_Rasterizer_getAscent(lua_State *L) { Rasterizer *t = luax_checkrasterizer(L, 1); lua_pushinteger(L, t->getAscent()); return 1; } int w_Rasterizer_getDescent(lua_State *L) { Rasterizer *t = luax_checkrasterizer(L, 1); lua_pushinteger(L, t->getDescent()); return 1; } int w_Rasterizer_getLineHeight(lua_State *L) { Rasterizer *t = luax_checkrasterizer(L, 1); lua_pushinteger(L, t->getLineHeight()); return 1; } int w_Rasterizer_getGlyphData(lua_State *L) { Rasterizer *t = luax_checkrasterizer(L, 1); GlyphData *g = 0; EXCEPT_GUARD( // getGlyphData accepts a unicode character or a codepoint number. if (lua_type(L, 2) == LUA_TSTRING) { std::string glyph = luax_checkstring(L, 2); g = t->getGlyphData(glyph); } else { uint32 glyph = (uint32) luaL_checknumber(L, 2); g = t->getGlyphData(glyph); } ) luax_pushtype(L, "GlyphData", FONT_GLYPH_DATA_T, g); return 1; } int w_Rasterizer_getGlyphCount(lua_State *L) { Rasterizer *t = luax_checkrasterizer(L, 1); lua_pushinteger(L, t->getGlyphCount()); return 1; } int w_Rasterizer_hasGlyphs(lua_State *L) { Rasterizer *t = luax_checkrasterizer(L, 1); bool hasglyph = false; int count = lua_gettop(L) - 1; count = count < 1 ? 1 : count; EXCEPT_GUARD( for (int i = 2; i < count + 2; i++) { if (lua_type(L, i) == LUA_TSTRING) hasglyph = t->hasGlyphs(luax_checkstring(L, i)); else hasglyph = t->hasGlyph((uint32) luaL_checknumber(L, i)); if (!hasglyph) break; } ) luax_pushboolean(L, hasglyph); return 1; } static const luaL_Reg functions[] = { { "getHeight", w_Rasterizer_getHeight }, { "getAdvance", w_Rasterizer_getAdvance }, { "getAscent", w_Rasterizer_getAscent }, { "getDescent", w_Rasterizer_getDescent }, { "getLineHeight", w_Rasterizer_getLineHeight }, { "getGlyphData", w_Rasterizer_getGlyphData }, { "getGlyphCount", w_Rasterizer_getGlyphCount }, { "hasGlyphs", w_Rasterizer_hasGlyphs }, { 0, 0 } }; extern "C" int luaopen_rasterizer(lua_State *L) { return luax_register_type(L, "Rasterizer", functions); } } // font } // love love-0.9.1/src/modules/font/wrap_Rasterizer.h0000644000000000000000000000311012316602166021223 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FONT_WRAP_RASTERIZER_H #define LOVE_FONT_WRAP_RASTERIZER_H // LOVE #include "common/runtime.h" #include "Rasterizer.h" namespace love { namespace font { Rasterizer *luax_checkrasterizer(lua_State *L, int idx); int w_Rasterizer_getHeight(lua_State *L); int w_Rasterizer_getAdvance(lua_State *L); int w_Rasterizer_getAscent(lua_State *L); int w_Rasterizer_getDescent(lua_State *L); int w_Rasterizer_getLineHeight(lua_State *L); int w_Rasterizer_getGlyphData(lua_State *L); int w_Rasterizer_getGlyphCount(lua_State *L); int w_Rasterizer_hasGlyphs(lua_State *L); extern "C" int luaopen_rasterizer(lua_State *L); } // font } // love #endif // LOVE_FONT_WRAP_RASTERIZER_H love-0.9.1/src/modules/font/Rasterizer.cpp0000644000000000000000000000412512316602166020534 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "Rasterizer.h" // UTF-8 #include "libraries/utf8/utf8.h" namespace love { namespace font { Rasterizer::~Rasterizer() { } int Rasterizer::getHeight() const { return metrics.height; } int Rasterizer::getAdvance() const { return metrics.advance; } int Rasterizer::getAscent() const { return metrics.ascent; } int Rasterizer::getDescent() const { return metrics.descent; } GlyphData *Rasterizer::getGlyphData(const std::string &text) const { uint32 codepoint = 0; try { codepoint = utf8::peek_next(text.begin(), text.end()); } catch (utf8::exception &e) { throw love::Exception("Decoding error: %s", e.what()); } return getGlyphData(codepoint); } bool Rasterizer::hasGlyphs(const std::string &text) const { if (text.size() == 0) return false; try { utf8::iterator i(text.begin(), text.begin(), text.end()); utf8::iterator end(text.end(), text.begin(), text.end()); while (i != end) { uint32 codepoint = *i++; if (!hasGlyph(codepoint)) return false; } } catch (utf8::exception &e) { throw love::Exception("Decoding error: %s", e.what()); } return true; } } // font } // love love-0.9.1/src/modules/font/Rasterizer.h0000644000000000000000000000520612316602166020202 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FONT_RASTERIZER_H #define LOVE_FONT_RASTERIZER_H // LOVE #include "common/Object.h" #include "common/int.h" #include "GlyphData.h" namespace love { namespace font { /** * Holds the specific font metrics. **/ struct FontMetrics { int advance; int ascent; int descent; int height; }; /** * Holds data for a font object. **/ class Rasterizer : public Object { public: virtual ~Rasterizer(); /** * Gets the max height of the glyphs. **/ virtual int getHeight() const; /** * Gets the max advance of the glyphs. **/ virtual int getAdvance() const; /** * Gets the max ascent (height above baseline) for the font. **/ virtual int getAscent() const; /** * Gets the max descent (height below baseline) for the font. **/ virtual int getDescent() const; /** * Gets the line height of the font. **/ virtual int getLineHeight() const = 0; /** * Gets a specific glyph. * @param glyph The (UNICODE) glyph codepoint to get data for. **/ virtual GlyphData *getGlyphData(uint32 glyph) const = 0; /** * Gets a specific glyph. * @param text The (UNICODE) glyph character to get the data for. **/ virtual GlyphData *getGlyphData(const std::string &text) const; /** * Gets the number of glyphs the rasterizer has data for. **/ virtual int getGlyphCount() const = 0; /** * Gets whether this Rasterizer has a specific glyph. * @param glyph The (UNICODE) glyph codepoint. **/ virtual bool hasGlyph(uint32 glyph) const = 0; /** * Gets whether this Rasterizer has all the glyphs in a string. * @param text The (UTF-8) string. **/ virtual bool hasGlyphs(const std::string &text) const; protected: FontMetrics metrics; }; // Rasterizer } // font } // love #endif // LOVE_FONT_RASTERIZER_H love-0.9.1/src/modules/font/ImageRasterizer.h0000644000000000000000000000410112316602166021136 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FONT_IMAGE_RASTERIZER_H #define LOVE_FONT_IMAGE_RASTERIZER_H // LOVE #include "filesystem/File.h" #include "font/Rasterizer.h" #include "image/ImageData.h" #include namespace love { namespace font { /** * Holds data for a font object. **/ class ImageRasterizer : public Rasterizer { public: ImageRasterizer(love::image::ImageData *imageData, uint32 *glyphs, int numglyphs); virtual ~ImageRasterizer(); // Implement Rasterizer virtual int getLineHeight() const; virtual GlyphData *getGlyphData(uint32 glyph) const; virtual int getGlyphCount() const; virtual bool hasGlyph(uint32 glyph) const; private: // Load all the glyph positions into memory void load(); // The image data love::image::ImageData *imageData; // The glyphs in the font uint32 *glyphs; // Number of glyphs in the font int numglyphs; // Information about a glyph in the ImageData struct ImageGlyphData { int x; int width; int spacing; }; std::map imageGlyphs; // Color used to identify glyph separation in the source ImageData love::image::pixel spacer; }; // ImageRasterizer } // font } // love #endif // LOVE_FONT_IMAGE_RASTERIZER_H love-0.9.1/src/modules/font/GlyphData.h0000644000000000000000000000620512316602166017725 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FONT_GLYPH_DATA_H #define LOVE_FONT_GLYPH_DATA_H // LOVE #include "common/config.h" #include "common/Data.h" #include "common/Exception.h" #include "common/StringMap.h" #include "common/int.h" // stdlib #include namespace love { namespace font { /** * Holds the specific glyph data. **/ struct GlyphMetrics { int height; int width; int advance; int bearingX; int bearingY; }; /** * Holds data for a specic glyph object. **/ class GlyphData : public Data { public: enum Format { FORMAT_LUMINANCE_ALPHA, FORMAT_RGBA, FORMAT_MAX_ENUM }; GlyphData(uint32 glyph, GlyphMetrics glyphMetrics, Format f); virtual ~GlyphData(); // Implements Data. void *getData() const; size_t getSize() const; /** * Gets the height of the glyph. **/ virtual int getHeight() const; /** * Gets the width of the glyph. **/ virtual int getWidth() const; /** * Gets the glyph codepoint itself. **/ uint32 getGlyph() const; /** * Gets the glyph as a UTF-8 string (instead of a UTF-8 code point.) **/ std::string getGlyphString() const; /** * Gets the advance (the space the glyph takes up) of the glyph. **/ int getAdvance() const; /** * Gets bearing (the spacing from origin) along the x-axis of the glyph. **/ int getBearingX() const; /** * Gets bearing (the spacing from origin) along the y-axis of the glyph. **/ int getBearingY() const; /** * Gets the min x value of the glyph. **/ int getMinX() const; /** * Gets the min y value of the glyph. **/ int getMinY() const; /** * Gets the max x value of the glyph. **/ int getMaxX() const; /** * Gets the max y value of the glyph. **/ int getMaxY() const; /** * Gets the format of the glyph data. **/ Format getFormat() const; static bool getConstant(const char *in, Format &out); static bool getConstant(Format in, const char *&out); private: // The glyph codepoint itself. uint32 glyph; // Glyph metrics. GlyphMetrics metrics; // Glyph texture data. unsigned char *data; // The format the data's in. Format format; static StringMap::Entry formatEntries[]; static StringMap formats; }; // GlyphData } // font } // love #endif // LOVE_FONT_GLYPH_DATA_H love-0.9.1/src/modules/font/GlyphData.cpp0000644000000000000000000000674612316602166020272 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "GlyphData.h" // UTF-8 #include "libraries/utf8/utf8.h" // stdlib #include #include namespace love { namespace font { GlyphData::GlyphData(uint32 glyph, GlyphMetrics glyphMetrics, GlyphData::Format f) : glyph(glyph) , metrics(glyphMetrics) , data(nullptr) , format(f) { if (metrics.width > 0 && metrics.height > 0) { switch (f) { case GlyphData::FORMAT_LUMINANCE_ALPHA: data = new unsigned char[metrics.width * metrics.height * 2]; break; case GlyphData::FORMAT_RGBA: default: data = new unsigned char[metrics.width * metrics.height * 4]; break; } } } GlyphData::~GlyphData() { delete[] data; } void *GlyphData::getData() const { return (void *) data; } size_t GlyphData::getSize() const { switch (format) { case GlyphData::FORMAT_LUMINANCE_ALPHA: return size_t(getWidth() * getHeight() * 2); break; case GlyphData::FORMAT_RGBA: default: return size_t(getWidth() * getHeight() * 4); break; } } int GlyphData::getHeight() const { return metrics.height; } int GlyphData::getWidth() const { return metrics.width; } uint32 GlyphData::getGlyph() const { return glyph; } std::string GlyphData::getGlyphString() const { char u[5] = {0, 0, 0, 0, 0}; ptrdiff_t length = 0; try { char *end = utf8::append(glyph, u); length = end - u; } catch (utf8::exception &e) { throw love::Exception("Decoding error: %s", e.what()); } // Just in case... if (length < 0) return ""; return std::string(u, length); } int GlyphData::getAdvance() const { return metrics.advance; } int GlyphData::getBearingX() const { return metrics.bearingX; } int GlyphData::getBearingY() const { return metrics.bearingY; } int GlyphData::getMinX() const { return this->getBearingX(); } int GlyphData::getMinY() const { return this->getHeight() - this->getBearingY(); } int GlyphData::getMaxX() const { return this->getBearingX() + this->getWidth(); } int GlyphData::getMaxY() const { return this->getBearingY(); } GlyphData::Format GlyphData::getFormat() const { return format; } bool GlyphData::getConstant(const char *in, GlyphData::Format &out) { return formats.find(in, out); } bool GlyphData::getConstant(GlyphData::Format in, const char *&out) { return formats.find(in, out); } StringMap::Entry GlyphData::formatEntries[] = { {"luminance alpha", GlyphData::FORMAT_LUMINANCE_ALPHA}, {"rgba", GlyphData::FORMAT_RGBA}, }; StringMap GlyphData::formats(GlyphData::formatEntries, sizeof(GlyphData::formatEntries)); } // font } // love love-0.9.1/src/modules/font/wrap_GlyphData.h0000644000000000000000000000320512316602166020753 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FONT_WRAP_GLYPH_DATA_H #define LOVE_FONT_WRAP_GLYPH_DATA_H // LOVE #include "common/runtime.h" #include "common/wrap_Data.h" #include "GlyphData.h" namespace love { namespace font { GlyphData *luax_checkglyphdata(lua_State *L, int idx); int w_GlyphData_getWidth(lua_State *L); int w_GlyphData_getHeight(lua_State *L); int w_GlyphData_getDimensions(lua_State *L); int w_GlyphData_getGlyph(lua_State *L); int w_GlyphData_getGlyphString(lua_State *L); int w_GlyphData_getAdvance(lua_State *L); int w_GlyphData_getBearing(lua_State *L); int w_GlyphData_getBoundingBox(lua_State *L); int w_GlyphData_getFormat(lua_State *L); extern "C" int luaopen_glyphdata(lua_State *L); } // font } // love #endif // LOVE_FONT_WRAP_GLYPH_DATA_H love-0.9.1/src/modules/font/Font.h0000644000000000000000000000326412316602166016760 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FONT_FONT_H #define LOVE_FONT_FONT_H // LOVE #include "Rasterizer.h" #include "image/ImageData.h" #include "common/Module.h" #include "common/int.h" // STD #include namespace love { namespace font { class Font : public Module { public: virtual Rasterizer *newRasterizer(Data *data, int size) = 0; virtual Rasterizer *newRasterizer(love::image::ImageData *data, const std::string &glyphs) = 0; virtual Rasterizer *newRasterizer(love::image::ImageData *data, uint32 *glyphs, int length) = 0; virtual GlyphData *newGlyphData(Rasterizer *r, const std::string &glyph) = 0; virtual GlyphData *newGlyphData(Rasterizer *r, uint32 glyph) = 0; // Implement Module virtual const char *getName() const = 0; }; // Font } // font } // love #endif // LOVE_FONT_FONT_H love-0.9.1/src/modules/font/freetype/0000755000000000000000000000000012316602462017516 5ustar00rootroot00000000000000love-0.9.1/src/modules/font/freetype/Font.cpp0000644000000000000000000000514712316602166021140 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Font.h" #include "TrueTypeRasterizer.h" #include "font/ImageRasterizer.h" #include "libraries/utf8/utf8.h" namespace love { namespace font { namespace freetype { Font::Font() { if (FT_Init_FreeType(&library)) throw love::Exception("TrueTypeFont Loading error: FT_Init_FreeType failed\n"); } Font::~Font() { FT_Done_FreeType(library); } Rasterizer *Font::newRasterizer(Data *data, int size) { return new TrueTypeRasterizer(library, data, size); } Rasterizer *Font::newRasterizer(love::image::ImageData *data, const std::string &text) { size_t strlen = text.size(); size_t numglyphs = 0; uint32 *glyphs = new uint32[strlen]; try { utf8::iterator i(text.begin(), text.begin(), text.end()); utf8::iterator end(text.end(), text.begin(), text.end()); while (i != end) glyphs[numglyphs++] = *i++; } catch (utf8::exception &e) { delete [] glyphs; throw love::Exception("Decoding error: %s", e.what()); } Rasterizer *r = newRasterizer(data, glyphs, numglyphs); delete [] glyphs; return r; } Rasterizer *Font::newRasterizer(love::image::ImageData *data, uint32 *glyphs, int numglyphs) { return new ImageRasterizer(data, glyphs, numglyphs); } GlyphData *Font::newGlyphData(Rasterizer *r, const std::string &text) { uint32 codepoint = 0; try { codepoint = utf8::peek_next(text.begin(), text.end()); } catch (utf8::exception &e) { throw love::Exception("Decoding error: %s", e.what()); } return r->getGlyphData(codepoint); } GlyphData *Font::newGlyphData(Rasterizer *r, uint32 glyph) { return r->getGlyphData(glyph); } const char *Font::getName() const { return "love.font.freetype"; } } // freetype } // font } // love love-0.9.1/src/modules/font/freetype/TrueTypeRasterizer.cpp0000644000000000000000000001047712316602166024070 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "TrueTypeRasterizer.h" #include "common/Exception.h" namespace love { namespace font { namespace freetype { TrueTypeRasterizer::TrueTypeRasterizer(FT_Library library, Data *data, int size) : data(data) { FT_Error err = FT_Err_Ok; err = FT_New_Memory_Face(library, (const FT_Byte *)data->getData(), /* first byte in memory */ data->getSize(), /* size in bytes */ 0, /* face_index */ &face); if (err != FT_Err_Ok) throw love::Exception("TrueType Font Loading error: FT_New_Face failed: 0x%x (problem with font file?)", err); FT_Set_Pixel_Sizes(face, size, size); // Set global metrics FT_Size_Metrics s = face->size->metrics; metrics.advance = s.max_advance >> 6; metrics.ascent = s.ascender >> 6; metrics.descent = s.descender >> 6; metrics.height = s.height >> 6; data->retain(); } TrueTypeRasterizer::~TrueTypeRasterizer() { FT_Done_Face(face); data->release(); } int TrueTypeRasterizer::getLineHeight() const { return (int)(getHeight() * 1.25); } GlyphData *TrueTypeRasterizer::getGlyphData(uint32 glyph) const { love::font::GlyphMetrics glyphMetrics = {}; FT_Glyph ftglyph; FT_Error err = FT_Err_Ok; // Initialize err = FT_Load_Glyph(face, FT_Get_Char_Index(face, glyph), FT_LOAD_DEFAULT); if (err != FT_Err_Ok) throw love::Exception("TrueType Font Loading error: FT_Load_Glyph failed (0x%x)", err); err = FT_Get_Glyph(face->glyph, &ftglyph); if (err != FT_Err_Ok) throw love::Exception("TrueType Font Loading error: FT_Get_Glyph failed (0x%x)", err); FT_Glyph_To_Bitmap(&ftglyph, FT_RENDER_MODE_NORMAL, 0, 1); FT_BitmapGlyph bitmap_glyph = (FT_BitmapGlyph) ftglyph; FT_Bitmap &bitmap = bitmap_glyph->bitmap; //just to make things easier // Get metrics glyphMetrics.bearingX = bitmap_glyph->left; glyphMetrics.bearingY = bitmap_glyph->top; glyphMetrics.height = bitmap.rows; glyphMetrics.width = bitmap.width; glyphMetrics.advance = ftglyph->advance.x >> 16; GlyphData *glyphData = new GlyphData(glyph, glyphMetrics, GlyphData::FORMAT_LUMINANCE_ALPHA); const uint8 *pixels = bitmap.buffer; uint8 *dest = (uint8 *) glyphData->getData(); // We treat the luminance of the FreeType bitmap as alpha in the GlyphData. if (bitmap.pixel_mode == FT_PIXEL_MODE_MONO) { for (int y = 0; y < bitmap.rows; y++) { for (int x = 0; x < bitmap.width; x++) { // Extract the 1-bit value and convert it to uint8. uint8 v = ((pixels[x / 8]) & (1 << (7 - (x % 8)))) ? 255 : 0; dest[2 * (y * bitmap.width + x) + 0] = 255; dest[2 * (y * bitmap.width + x) + 1] = v; } pixels += bitmap.pitch; } } else if (bitmap.pixel_mode == FT_PIXEL_MODE_GRAY) { for (int y = 0; y < bitmap.rows; y++) { for (int x = 0; x < bitmap.width; x++) { dest[2 * (y * bitmap.width + x) + 0] = 255; dest[2 * (y * bitmap.width + x) + 1] = pixels[x]; } pixels += bitmap.pitch; } } else { delete glyphData; FT_Done_Glyph(ftglyph); throw love::Exception("Unknown TrueType glyph pixel mode."); } // Having copied the data over, we can destroy the glyph. FT_Done_Glyph(ftglyph); return glyphData; } int TrueTypeRasterizer::getGlyphCount() const { return face->num_glyphs; } bool TrueTypeRasterizer::hasGlyph(uint32 glyph) const { return FT_Get_Char_Index(face, glyph) != 0; } } // freetype } // font } // love love-0.9.1/src/modules/font/freetype/TrueTypeRasterizer.h0000644000000000000000000000341012316602166023522 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FONT_FREETYPE_TRUE_TYPE_RASTERIZER_H #define LOVE_FONT_FREETYPE_TRUE_TYPE_RASTERIZER_H // LOVE #include "filesystem/File.h" #include "font/Rasterizer.h" // TrueType2 #include #include FT_FREETYPE_H #include FT_GLYPH_H namespace love { namespace font { namespace freetype { /** * Holds data for a font object. **/ class TrueTypeRasterizer : public Rasterizer { public: TrueTypeRasterizer(FT_Library library, Data *data, int size); virtual ~TrueTypeRasterizer(); // Implement Rasterizer virtual int getLineHeight() const; virtual GlyphData *getGlyphData(uint32 glyph) const; virtual int getGlyphCount() const; virtual bool hasGlyph(uint32 glyph) const; private: // TrueType face FT_Face face; // File data Data *data; }; // FreetypeRasterizer } // freetype } // font } // love #endif // LOVE_FONT_FREETYPE_TRUE_TYPE_RASTERIZER_H love-0.9.1/src/modules/font/freetype/wrap_Font.h0000644000000000000000000000246112316602166021632 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FONT_FREETYPE_WRAP_FONT_H #define LOVE_FONT_FREETYPE_WRAP_FONT_H // LOVE #include "common/config.h" #include "common/runtime.h" namespace love { namespace font { namespace freetype { int w_newRasterizer(lua_State *L); int w_newGlyphData(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_font(lua_State *L); } // freetype } // font } // love #endif // LOVE_FONT_FREETYPE_WRAP_FONT_H love-0.9.1/src/modules/font/freetype/Font.h0000644000000000000000000000354612316602166020606 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_FONT_FREETYPE_FONT_H #define LOVE_FONT_FREETYPE_FONT_H // LOVE #include "font/Font.h" // FreeType2 #ifdef LOVE_MACOSX_USE_FRAMEWORKS #include #else #include #endif #include FT_FREETYPE_H #include FT_GLYPH_H namespace love { namespace font { namespace freetype { class Font : public love::font::Font { public: Font(); /** * Destructor. **/ virtual ~Font(); // Implements Font Rasterizer *newRasterizer(Data *data, int size); Rasterizer *newRasterizer(love::image::ImageData *data, const std::string &text); Rasterizer *newRasterizer(love::image::ImageData *data, uint32 *glyphs, int numglyphs); GlyphData *newGlyphData(Rasterizer *r, const std::string &glyph); GlyphData *newGlyphData(Rasterizer *r, uint32 glyph); // Implement Module const char *getName() const; private: // FreeType library FT_Library library; }; // Font } // freetype } // font } // love #endif // LOVE_FONT_FREETYPE_FONT_H love-0.9.1/src/modules/font/freetype/wrap_Font.cpp0000644000000000000000000000560212316602166022165 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Font.h" #include "Font.h" #include "font/wrap_GlyphData.h" #include "font/wrap_Rasterizer.h" #include "TrueTypeRasterizer.h" namespace love { namespace font { namespace freetype { static Font *instance = 0; int w_newRasterizer(lua_State *L) { // Convert to FileData, if necessary. if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T)) luax_convobj(L, 1, "filesystem", "newFileData"); Rasterizer *t = 0; EXCEPT_GUARD( if (luax_istype(L, 1, IMAGE_IMAGE_DATA_T)) { love::image::ImageData *d = luax_checktype(L, 1, "ImageData", IMAGE_IMAGE_DATA_T); const char *g = luaL_checkstring(L, 2); std::string glyphs(g); t = instance->newRasterizer(d, glyphs); } else if (luax_istype(L, 1, DATA_T)) { Data *d = luax_checkdata(L, 1); int size = luaL_checkint(L, 2); t = instance->newRasterizer(d, size); } ) luax_pushtype(L, "Rasterizer", FONT_RASTERIZER_T, t); return 1; } int w_newGlyphData(lua_State *L) { Rasterizer *r = luax_checkrasterizer(L, 1); GlyphData *t = 0; // newGlyphData accepts a unicode character or a codepoint number. if (lua_type(L, 2) == LUA_TSTRING) { std::string glyph = luax_checkstring(L, 2); EXCEPT_GUARD(t = instance->newGlyphData(r, glyph);) } else { uint32 g = (uint32) luaL_checknumber(L, 2); t = instance->newGlyphData(r, g); } luax_pushtype(L, "GlyphData", FONT_GLYPH_DATA_T, t); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "newRasterizer", w_newRasterizer }, { "newGlyphData", w_newGlyphData }, { 0, 0 } }; static const lua_CFunction types[] = { luaopen_glyphdata, luaopen_rasterizer, 0 }; extern "C" int luaopen_love_font(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new Font();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "font"; w.flags = MODULE_T; w.functions = functions; w.types = types; return luax_register_module(L, w); } } // freetype } // font } // love love-0.9.1/src/modules/font/wrap_GlyphData.cpp0000644000000000000000000000671312316602166021315 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_GlyphData.h" namespace love { namespace font { GlyphData *luax_checkglyphdata(lua_State *L, int idx) { return luax_checktype(L, idx, "GlyphData", FONT_GLYPH_DATA_T); } int w_GlyphData_getWidth(lua_State *L) { GlyphData *t = luax_checkglyphdata(L, 1); lua_pushinteger(L, t->getWidth()); return 1; } int w_GlyphData_getHeight(lua_State *L) { GlyphData *t = luax_checkglyphdata(L, 1); lua_pushinteger(L, t->getHeight()); return 1; } int w_GlyphData_getDimensions(lua_State *L) { GlyphData *t = luax_checkglyphdata(L, 1); lua_pushinteger(L, t->getWidth()); lua_pushinteger(L, t->getHeight()); return 2; } int w_GlyphData_getGlyph(lua_State *L) { GlyphData *t = luax_checkglyphdata(L, 1); uint32 glyph = t->getGlyph(); lua_pushnumber(L, (lua_Number) glyph); return 1; } int w_GlyphData_getGlyphString(lua_State *L) { GlyphData *t = luax_checkglyphdata(L, 1); EXCEPT_GUARD(luax_pushstring(L, t->getGlyphString());) return 1; } int w_GlyphData_getAdvance(lua_State *L) { GlyphData *t = luax_checkglyphdata(L, 1); lua_pushinteger(L, t->getAdvance()); return 1; } int w_GlyphData_getBearing(lua_State *L) { GlyphData *t = luax_checkglyphdata(L, 1); lua_pushinteger(L, t->getBearingX()); lua_pushinteger(L, t->getBearingY()); return 2; } int w_GlyphData_getBoundingBox(lua_State *L) { GlyphData *t = luax_checkglyphdata(L, 1); int minX = t->getMinX(); int minY = t->getMinY(); int maxX = t->getMaxX(); int maxY = t->getMaxY(); int width = maxX - minX; int height = maxY - minY; lua_pushinteger(L, minX); lua_pushinteger(L, minY); lua_pushinteger(L, width); lua_pushinteger(L, height); return 4; } int w_GlyphData_getFormat(lua_State *L) { GlyphData *t = luax_checkglyphdata(L, 1); const char *str; if (!GlyphData::getConstant(t->getFormat(), str)) return luaL_error(L, "unknown GlyphData format."); lua_pushstring(L, str); return 1; } static const luaL_Reg functions[] = { // Data { "getString", w_Data_getString }, { "getPointer", w_Data_getPointer }, { "getSize", w_Data_getSize }, { "getWidth", w_GlyphData_getWidth }, { "getHeight", w_GlyphData_getHeight }, { "getDimensions", w_GlyphData_getDimensions }, { "getGlyph", w_GlyphData_getGlyph }, { "getGlyphString", w_GlyphData_getGlyphString }, { "getAdvance", w_GlyphData_getAdvance }, { "getBearing", w_GlyphData_getBearing }, { "getBoundingBox", w_GlyphData_getBoundingBox }, { "getFormat", w_GlyphData_getFormat }, { 0, 0 } }; extern "C" int luaopen_glyphdata(lua_State *L) { return luax_register_type(L, "GlyphData", functions); } } // font } // love love-0.9.1/src/modules/font/ImageRasterizer.cpp0000644000000000000000000001011312316602166021471 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "ImageRasterizer.h" #include "common/Exception.h" #include namespace love { namespace font { inline bool equal(const love::image::pixel &a, const love::image::pixel &b) { return (a.r == b.r && a.g == b.g && a.b == b.b && a.a == b.a); } ImageRasterizer::ImageRasterizer(love::image::ImageData *data, uint32 *glyphs, int numglyphs) : imageData(data) , glyphs(glyphs) , numglyphs(numglyphs) { imageData->retain(); load(); } ImageRasterizer::~ImageRasterizer() { imageData->release(); } int ImageRasterizer::getLineHeight() const { return getHeight(); } GlyphData *ImageRasterizer::getGlyphData(uint32 glyph) const { GlyphMetrics gm; memset(&gm, 0, sizeof(GlyphMetrics)); // Set relevant glyph metrics if the glyph is in this ImageFont std::map::const_iterator it = imageGlyphs.find(glyph); if (it != imageGlyphs.end()) { gm.width = it->second.width; gm.advance = it->second.width + it->second.spacing; } gm.height = metrics.height; GlyphData *g = new GlyphData(glyph, gm, GlyphData::FORMAT_RGBA); if (gm.width == 0) return g; // We don't want another thread modifying our ImageData mid-copy. love::thread::Lock lock(imageData->getMutex()); love::image::pixel *gdpixels = (love::image::pixel *) g->getData(); love::image::pixel *imagepixels = (love::image::pixel *) imageData->getData(); // copy glyph pixels from imagedata to glyphdata for (int i = 0; i < g->getWidth() * g->getHeight(); i++) { love::image::pixel p = imagepixels[it->second.x + (i % gm.width) + (imageData->getWidth() * (i / gm.width))]; // Use transparency instead of the spacer color if (equal(p, spacer)) gdpixels[i].r = gdpixels[i].g = gdpixels[i].b = gdpixels[i].a = 0; else gdpixels[i] = p; } return g; } void ImageRasterizer::load() { love::image::pixel *pixels = (love::image::pixel *) imageData->getData(); int imgw = imageData->getWidth(); int imgh = imageData->getHeight(); // We don't want another thread modifying our ImageData mid-parse. love::thread::Lock lock(imageData->getMutex()); // Set the only metric that matters metrics.height = imgh; // Reading texture data begins spacer = pixels[0]; int start = 0; int end = 0; for (int i = 0; i < numglyphs; ++i) { start = end; // Finds out where the first character starts while (start < imgw && equal(pixels[start], spacer)) ++start; // set previous glyph's spacing if (i > 0 && imageGlyphs.size() > 0) imageGlyphs[glyphs[i - 1]].spacing = (start > end) ? (start - end) : 0; end = start; // Find where glyph ends. while (end < imgw && !equal(pixels[end], spacer)) ++end; if (start >= end) break; ImageGlyphData imageGlyph; imageGlyph.x = start; imageGlyph.width = end - start; imageGlyphs[glyphs[i]] = imageGlyph; } // Find spacing of last glyph if (numglyphs > 0) { start = end; while (start < imgw && equal(pixels[start], spacer)) ++start; imageGlyphs[glyphs[numglyphs - 1]].spacing = (start > end) ? (start - end) : 0; } } int ImageRasterizer::getGlyphCount() const { return numglyphs; } bool ImageRasterizer::hasGlyph(uint32 glyph) const { return imageGlyphs.find(glyph) != imageGlyphs.end(); } } // font } // love love-0.9.1/src/modules/thread/0000755000000000000000000000000012316602463016175 5ustar00rootroot00000000000000love-0.9.1/src/modules/thread/LuaThread.h0000644000000000000000000000306212316602166020220 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_THREAD_LUATHREAD_H #define LOVE_THREAD_LUATHREAD_H // STL #include // LOVE #include #include #include #include namespace love { namespace thread { class LuaThread : public love::Object, public Threadable { public: LuaThread(const std::string &name, love::Data *code); ~LuaThread(); void threadFunction(); const std::string &getError() const; bool start(Variant **args, int nargs); private: void onError(); love::Data *code; std::string name; std::string error; Variant **args; int nargs; }; } // thread } // love #endif // LOVE_THREAD_LUATHREAD_H love-0.9.1/src/modules/thread/ThreadModule.cpp0000644000000000000000000000255212316602166021262 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "ThreadModule.h" namespace love { namespace thread { LuaThread *ThreadModule::newThread(const std::string &name, love::Data *data) { LuaThread *lt = new LuaThread(name, data); return lt; } Channel *ThreadModule::newChannel() { return new Channel(); } Channel *ThreadModule::getChannel(const std::string &name) { return Channel::getChannel(name); } const char *ThreadModule::getName() const { return "love.thread.sdl"; } } // thread } // love love-0.9.1/src/modules/thread/Channel.h0000644000000000000000000000354712316602166017727 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_THREAD_CHANNEL_H #define LOVE_THREAD_CHANNEL_H // STL #include #include // LOVE #include #include namespace love { namespace thread { class Channel : public love::Object { // FOR WRAPPER USE ONLY friend void retainVariant(Channel *, Variant *); friend void releaseVariant(Channel *, Variant *); public: Channel(); ~Channel(); static Channel *getChannel(const std::string &name); unsigned long push(Variant *var); void supply(Variant *var); // blocking push Variant *pop(); Variant *demand(); // blocking pop Variant *peek(); int getCount(); void clear(); void retain(); void release(); private: Channel(const std::string &name); void lockMutex(); void unlockMutex(); Mutex *mutex; Conditional *cond; std::queue queue; bool named; std::string name; unsigned long sent; unsigned long received; }; // Channel } // thread } // love #endif // LOVE_THREAD_CHANNEL_H love-0.9.1/src/modules/thread/threads.h0000644000000000000000000000356312316602166020007 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_THREAD_THREADS_H #define LOVE_THREAD_THREADS_H #include #include "Thread.h" namespace love { namespace thread { class Mutex { public: virtual ~Mutex() {} virtual void lock() = 0; virtual void unlock() = 0; }; class Conditional { public: virtual ~Conditional() {} virtual void signal() = 0; virtual void broadcast() = 0; virtual bool wait(Mutex *mutex, int timeout=-1) = 0; }; class Lock { public: Lock(Mutex *m); Lock(Mutex &m); ~Lock(); private: Mutex *mutex; }; class EmptyLock { public: EmptyLock(); ~EmptyLock(); void setLock(Mutex *m); void setLock(Mutex &m); private: Mutex *mutex; }; class Threadable { public: Threadable(); virtual ~Threadable(); virtual void threadFunction() = 0; bool start(); void wait(); bool isRunning() const; protected: Thread *owner; }; Mutex *newMutex(); Conditional *newConditional(); Thread *newThread(Threadable *t); } // thread } // love #endif /* LOVE_THREAD_THREADS_H */ love-0.9.1/src/modules/thread/wrap_LuaThread.h0000644000000000000000000000253612316602166021256 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_THREAD_WRAP_LUATHREAD_H #define LOVE_THREAD_WRAP_LUATHREAD_H // LOVE #include "ThreadModule.h" namespace love { namespace thread { LuaThread *luax_checkthread(lua_State *L, int idx); int w_Thread_start(lua_State *L); int w_Thread_wait(lua_State *L); int w_Thread_getError(lua_State *L); int w_Thread_isRunning(lua_State *L); extern "C" int luaopen_thread(lua_State *L); } // thread } // love #endif // LOVE_THREAD_WRAP_LUATHREAD_H love-0.9.1/src/modules/thread/ThreadModule.h0000644000000000000000000000312212316602166020721 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_THREAD_THREADMODULE_H #define LOVE_THREAD_THREADMODULE_H // STL #include // LOVE #include "common/Data.h" #include "common/Module.h" #include "common/StringMap.h" #include "Thread.h" #include "Channel.h" #include "LuaThread.h" #include "threads.h" namespace love { namespace thread { class ThreadModule : public love::Module { public: virtual ~ThreadModule() {} virtual LuaThread *newThread(const std::string &name, love::Data *data); virtual Channel *newChannel(); virtual Channel *getChannel(const std::string &name); // Implements Module. virtual const char *getName() const; }; // ThreadModule } // thread } // love #endif // LOVE_THREAD_THREADMODULE_H love-0.9.1/src/modules/thread/Thread.h0000644000000000000000000000241112316602166017553 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_THREAD_THREAD_H #define LOVE_THREAD_THREAD_H // LOVE #include #include namespace love { namespace thread { class Thread { public: virtual ~Thread() {} virtual bool start() = 0; virtual void wait() = 0; virtual bool isRunning() = 0; }; // ThreadObject } // thread } // love #endif // LOVE_THREAD_THREAD_H love-0.9.1/src/modules/thread/threads.cpp0000644000000000000000000000327112316602166020336 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "threads.h" namespace love { namespace thread { Lock::Lock(Mutex *m) : mutex(m) { mutex->lock(); } Lock::Lock(Mutex &m) : mutex(&m) { mutex->lock(); } Lock::~Lock() { mutex->unlock(); } EmptyLock::EmptyLock() : mutex(0) { } EmptyLock::~EmptyLock() { if (mutex) mutex->unlock(); } void EmptyLock::setLock(Mutex *m) { if (m) m->lock(); if (mutex) mutex->unlock(); mutex = m; } void EmptyLock::setLock(Mutex &m) { m.lock(); if (mutex) mutex->unlock(); mutex = &m; } Threadable::Threadable() { owner = newThread(this); } Threadable::~Threadable() { delete owner; } bool Threadable::start() { return owner->start(); } void Threadable::wait() { owner->wait(); } bool Threadable::isRunning() const { return owner->isRunning(); } } // thread } // love love-0.9.1/src/modules/thread/wrap_LuaThread.cpp0000644000000000000000000000451112316602166021604 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2010 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_LuaThread.h" namespace love { namespace thread { LuaThread *luax_checkthread(lua_State *L, int idx) { return luax_checktype(L, idx, "Thread", THREAD_THREAD_T); } int w_Thread_start(lua_State *L) { LuaThread *t = luax_checkthread(L, 1); int nargs = lua_gettop(L) - 1; Variant **args = 0; if (nargs > 0) { args = new Variant*[nargs]; for (int i = 0; i < nargs; ++i) { args[i] = Variant::fromLua(L, i+2); if (!args[i]) { for (int j = i; j >= 0; j--) delete args[j]; delete[] args; return luaL_argerror(L, i+2, "boolean, number, string, love type, or flat table expected"); } } } luax_pushboolean(L, t->start(args, nargs)); return 1; } int w_Thread_wait(lua_State *L) { LuaThread *t = luax_checkthread(L, 1); t->wait(); return 0; } int w_Thread_getError(lua_State *L) { LuaThread *t = luax_checkthread(L, 1); std::string err = t->getError(); if (err.empty()) lua_pushnil(L); else luax_pushstring(L, err); return 1; } int w_Thread_isRunning(lua_State *L) { LuaThread *t = luax_checkthread(L, 1); luax_pushboolean(L, t->isRunning()); return 1; } static const luaL_Reg type_functions[] = { { "start", w_Thread_start }, { "wait", w_Thread_wait }, { "getError", w_Thread_getError }, { "isRunning", w_Thread_isRunning }, { 0, 0 } }; extern "C" int luaopen_thread(lua_State *L) { return luax_register_type(L, "Thread", type_functions); } } // thread } // love love-0.9.1/src/modules/thread/Channel.cpp0000644000000000000000000000750412316602166020257 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Channel.h" #include #include namespace { union uslong { unsigned long u; long i; }; // target <= current, but semi-wrapsafe, one wrap, anyway inline bool past(unsigned int target, unsigned int current) { if (target > current) return false; if (target == current) return true; uslong t, c; t.u = target; c.u = current; return !(t.i < 0 && c.i > 0); } } namespace love { namespace thread { static std::map namedChannels; static Mutex *namedChannelMutex; Channel *Channel::getChannel(const std::string &name) { if (!namedChannelMutex) namedChannelMutex = newMutex(); Lock l(namedChannelMutex); if (!namedChannels.count(name)) namedChannels[name] = new Channel(name); else namedChannels[name]->retain(); return namedChannels[name]; } Channel::Channel() : named(false) , sent(0) , received(0) { mutex = newMutex(); cond = newConditional(); } Channel::Channel(const std::string &name) : named(true) , name(name) , sent(0) , received(0) { mutex = newMutex(); cond = newConditional(); } Channel::~Channel() { while (!queue.empty()) { queue.front()->release(); queue.pop(); } delete mutex; delete cond; if (named) namedChannels.erase(name); } unsigned long Channel::push(Variant *var) { if (!var) return 0; Lock l(mutex); var->retain(); // Keep a reference to ourselves // if we're non-empty and named. if (named && queue.empty()) retain(); queue.push(var); cond->broadcast(); return ++sent; } void Channel::supply(Variant *var) { if (!var) return; Lock l(mutex); unsigned long id = push(var); while (!past(id, received)) cond->wait(mutex); } Variant *Channel::pop() { Lock l(mutex); if (queue.empty()) return 0; Variant *var = queue.front(); queue.pop(); received++; cond->broadcast(); // Release our reference to ourselves // if we're empty and named. if (named && queue.empty()) release(); return var; } // NOTE: Returns a retained Variant Variant *Channel::demand() { Variant *var; Lock l(mutex); while (!(var = pop())) cond->wait(mutex); return var; } Variant *Channel::peek() { Lock l(mutex); if (queue.empty()) return 0; Variant *var = queue.front(); var->retain(); return var; } int Channel::getCount() { Lock l(mutex); return queue.size(); } void Channel::clear() { Lock l(mutex); // We're already empty. if (queue.empty()) return; while (!queue.empty()) { queue.front()->release(); queue.pop(); } // Finish all the supply waits received = sent; cond->broadcast(); // Once again, release our own // reference if we're named. if (named) release(); } void Channel::lockMutex() { mutex->lock(); } void Channel::unlockMutex() { mutex->unlock(); } void Channel::retain() { EmptyLock l; if (named) l.setLock(namedChannelMutex); Object::retain(); } void Channel::release() { EmptyLock l; if (named) l.setLock(namedChannelMutex); Object::release(); } } // thread } // love love-0.9.1/src/modules/thread/wrap_ThreadModule.h0000644000000000000000000000246212316602166021760 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_THREAD_WRAP_THREADMODULE_H #define LOVE_THREAD_WRAP_THREADMODULE_H // LOVE #include "common/config.h" #include "common/runtime.h" namespace love { namespace thread { int w_newThread(lua_State *L); int w_newChannel(lua_State *L); int w_getChannel(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_thread(lua_State * L); } // thread } // love #endif // LOVE_THREAD_WRAP_THREADMODULE_H love-0.9.1/src/modules/thread/sdl/0000755000000000000000000000000012316602463016757 5ustar00rootroot00000000000000love-0.9.1/src/modules/thread/sdl/Thread.cpp0000644000000000000000000000353512316602166020700 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Thread.h" namespace love { namespace thread { namespace sdl { Thread::Thread(Threadable *t) : t(t) , running(false) , thread(0) { } Thread::~Thread() { if (!running) // Clean up handle wait(); /* if (running) wait(); FIXME: Needed for proper thread cleanup */ } bool Thread::start() { Lock l(mutex); if (running) return false; if (thread) // Clean old handle up SDL_WaitThread(thread, 0); thread = SDL_CreateThread(thread_runner, NULL, this); running = (thread != 0); return running; } void Thread::wait() { { Lock l(mutex); if (!thread) return; } SDL_WaitThread(thread, 0); Lock l(mutex); running = false; thread = 0; } bool Thread::isRunning() { Lock l(mutex); return running; } int Thread::thread_runner(void *data) { Thread *self = (Thread *) data; // some compilers don't like 'this' self->t->threadFunction(); Lock l(self->mutex); self->running = false; return 0; } } // sdl } // thread } // love love-0.9.1/src/modules/thread/sdl/threads.h0000644000000000000000000000312012316602166020556 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_THREAD_SDL_THREADS_H #define LOVE_THREAD_SDL_THREADS_H #include #include #include namespace love { namespace thread { namespace sdl { class Conditional; class Mutex : public thread::Mutex { public: Mutex(); ~Mutex(); void lock(); void unlock(); private: SDL_mutex *mutex; Mutex(const Mutex&/* mutex*/) {} friend class Conditional; }; class Conditional : public thread::Conditional { public: Conditional(); ~Conditional(); void signal(); void broadcast(); bool wait(thread::Mutex *mutex, int timeout=-1); private: SDL_cond *cond; }; } // sdl } // thread } // love #endif /* LOVE_THREAD_SDL_THREADS_H */ love-0.9.1/src/modules/thread/sdl/Thread.h0000644000000000000000000000266712316602166020352 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_THREAD_SDL_THREAD_H #define LOVE_THREAD_SDL_THREAD_H // LOVE #include #include "threads.h" // SDL #include namespace love { namespace thread { namespace sdl { class Thread : public thread::Thread { public: Thread(Threadable *t); ~Thread(); bool start(); void wait(); bool isRunning(); private: Threadable *t; bool running; SDL_Thread *thread; Mutex mutex; static int thread_runner(void *data); }; // Thread } // sdl } // thread } // love #endif // LOVE_THREAD_SDL_THREAD_H love-0.9.1/src/modules/thread/sdl/threads.cpp0000644000000000000000000000376112316602166021124 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "threads.h" #include "Thread.h" namespace love { namespace thread { namespace sdl { Mutex::Mutex() { mutex = SDL_CreateMutex(); } Mutex::~Mutex() { SDL_DestroyMutex(mutex); } void Mutex::lock() { SDL_LockMutex(mutex); } void Mutex::unlock() { SDL_UnlockMutex(mutex); } Conditional::Conditional() { cond = SDL_CreateCond(); } Conditional::~Conditional() { SDL_DestroyCond(cond); } void Conditional::signal() { SDL_CondSignal(cond); } void Conditional::broadcast() { SDL_CondBroadcast(cond); } bool Conditional::wait(thread::Mutex *_mutex, int timeout) { // Yes, I realise this can be dangerous, // however, you're asking for it if you're // mixing thread implementations. Mutex *mutex = (Mutex *) _mutex; if (timeout < 0) return !SDL_CondWait(cond, mutex->mutex); else return (SDL_CondWaitTimeout(cond, mutex->mutex, timeout) == 0); } } // sdl thread::Mutex *newMutex() { return new sdl::Mutex(); } thread::Conditional *newConditional() { return new sdl::Conditional(); } thread::Thread *newThread(Threadable *t) { return new sdl::Thread(t); } } // thread } // love love-0.9.1/src/modules/thread/wrap_ThreadModule.cpp0000644000000000000000000000527212316602166022315 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2010 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_ThreadModule.h" #include "wrap_LuaThread.h" #include "wrap_Channel.h" #include "ThreadModule.h" #include "filesystem/File.h" #include "filesystem/FileData.h" namespace love { namespace thread { static ThreadModule *instance = 0; int w_newThread(lua_State *L) { std::string name = "Thread code"; love::Data *data = 0; if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T)) luax_convobj(L, 1, "filesystem", "newFileData"); if (luax_istype(L, 1, FILESYSTEM_FILE_DATA_T)) { love::filesystem::FileData *fdata = luax_checktype(L, 1, "FileData", FILESYSTEM_FILE_DATA_T); name = std::string("@") + fdata->getFilename(); data = fdata; } else { data = luax_checktype(L, 1, "Data", DATA_T); } LuaThread *t = instance->newThread(name, data); luax_pushtype(L, "Thread", THREAD_THREAD_T, t); return 1; } int w_newChannel(lua_State *L) { Channel *c = instance->newChannel(); luax_pushtype(L, "Channel", THREAD_CHANNEL_T, c); return 1; } int w_getChannel(lua_State *L) { std::string name = luax_checkstring(L, 1); Channel *c = instance->getChannel(name); luax_pushtype(L, "Channel", THREAD_CHANNEL_T, c); return 1; } // List of functions to wrap. static const luaL_Reg module_functions[] = { { "newThread", w_newThread }, { "newChannel", w_newChannel }, { "getChannel", w_getChannel }, { 0, 0 } }; static const lua_CFunction types[] = { luaopen_thread, luaopen_channel, 0 }; extern "C" int luaopen_love_thread(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new love::thread::ThreadModule();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "thread"; w.flags = MODULE_T; w.functions = module_functions; w.types = types; return luax_register_module(L, w); } } // thread } // love love-0.9.1/src/modules/thread/wrap_Channel.cpp0000644000000000000000000000577012316602166021313 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2010 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Channel.h" namespace love { namespace thread { void retainVariant(Channel *c, Variant *v) { c->lockMutex(); v->retain(); c->unlockMutex(); } void releaseVariant(Channel *c, Variant *v) { c->lockMutex(); v->release(); c->unlockMutex(); } Channel *luax_checkchannel(lua_State *L, int idx) { return luax_checktype(L, idx, "Channel", THREAD_CHANNEL_T); } int w_Channel_push(lua_State *L) { Channel *c = luax_checkchannel(L, 1); Variant *var = lua_isnoneornil(L, 2) ? 0 : Variant::fromLua(L, 2); if (!var) return luaL_argerror(L, 2, "boolean, number, string, love type, or flat table expected"); c->push(var); releaseVariant(c, var); return 0; } int w_Channel_supply(lua_State *L) { Channel *c = luax_checkchannel(L, 1); Variant *var = lua_isnoneornil(L, 2) ? 0 : Variant::fromLua(L, 2); if (!var) return luaL_argerror(L, 2, "boolean, number, string, love type, or flat table expected"); c->supply(var); releaseVariant(c, var); return 0; } int w_Channel_pop(lua_State *L) { Channel *c = luax_checkchannel(L, 1); Variant *var = c->pop(); if (var) { var->toLua(L); releaseVariant(c, var); } else lua_pushnil(L); return 1; } int w_Channel_demand(lua_State *L) { Channel *c = luax_checkchannel(L, 1); Variant *var = c->demand(); var->toLua(L); releaseVariant(c, var); return 1; } int w_Channel_peek(lua_State *L) { Channel *c = luax_checkchannel(L, 1); Variant *var = c->peek(); if (var) { var->toLua(L); releaseVariant(c, var); } else lua_pushnil(L); return 1; } int w_Channel_getCount(lua_State *L) { Channel *c = luax_checkchannel(L, 1); lua_pushnumber(L, c->getCount()); return 1; } int w_Channel_clear(lua_State *L) { Channel *c = luax_checkchannel(L, 1); c->clear(); return 0; } static const luaL_Reg type_functions[] = { { "push", w_Channel_push }, { "supply", w_Channel_supply }, { "pop", w_Channel_pop }, { "demand", w_Channel_demand }, { "peek", w_Channel_peek }, { "getCount", w_Channel_getCount }, { "clear", w_Channel_clear }, { 0, 0 } }; extern "C" int luaopen_channel(lua_State *L) { return luax_register_type(L, "Channel", type_functions); } } } love-0.9.1/src/modules/thread/LuaThread.cpp0000644000000000000000000000574512316602166020565 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "LuaThread.h" #include "event/Event.h" #include "common/config.h" #ifdef LOVE_BUILD_STANDALONE extern "C" int luaopen_love(lua_State * L); #endif // LOVE_BUILD_STANDALONE extern "C" int luaopen_love_thread(lua_State *L); namespace love { namespace thread { LuaThread::LuaThread(const std::string &name, love::Data *code) : code(code) , name(name) , args(0) , nargs(0) { code->retain(); } LuaThread::~LuaThread() { code->release(); // No args should still exist at this point, // but you never know. for (int i = 0; i < nargs; ++i) args[i]->release(); } void LuaThread::threadFunction() { this->retain(); error.clear(); lua_State *L = luaL_newstate(); luaL_openlibs(L); #ifdef LOVE_BUILD_STANDALONE love::luax_preload(L, luaopen_love, "love"); luaopen_love(L); #endif // LOVE_BUILD_STANDALONE luaopen_love_thread(L); if (luaL_loadbuffer(L, (const char *) code->getData(), code->getSize(), name.c_str()) != 0) error = luax_tostring(L, -1); else { int pushedargs = nargs; for (int i = 0; i < nargs; ++i) { args[i]->toLua(L); args[i]->release(); } // Set both args and nargs to nil, prevents the deconstructor from // accessing it again. nargs = 0; args = 0; if (lua_pcall(L, pushedargs, 0, 0) != 0) error = luax_tostring(L, -1); } lua_close(L); if (!error.empty()) onError(); this->release(); } bool LuaThread::start(Variant **args, int nargs) { for (int i = 0; i < this->nargs; ++i) this->args[i]->release(); this->args = args; this->nargs = nargs; return Threadable::start(); } const std::string &LuaThread::getError() const { return error; } void LuaThread::onError() { if (error.empty()) return; event::Event *event = (event::Event *) Module::findInstance("love.event."); if (!event) return; Proxy p; p.flags = THREAD_THREAD_T; p.data = this; Variant *arg1 = new Variant(THREAD_THREAD_ID, &p); Variant *arg2 = new Variant(error.c_str(), error.length()); event::Message *msg = new event::Message("threaderror", arg1, arg2); arg1->release(); arg2->release(); event->push(msg); msg->release(); } } // thread } // love love-0.9.1/src/modules/thread/wrap_Channel.h0000644000000000000000000000267112316602166020755 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_THREAD_WRAP_CHANNEL_H #define LOVE_THREAD_WRAP_CHANNEL_H // LOVE #include "Channel.h" namespace love { namespace thread { Channel *luax_checkchannel(lua_State *L, int idx); int w_Channel_push(lua_State *L); int w_Channel_supply(lua_State *L); int w_Channel_pop(lua_State *L); int w_Channel_demand(lua_State *L); int w_Channel_peek(lua_State *L); int w_Channel_getCount(lua_State *L); int w_Channel_clear(lua_State *L); extern "C" int luaopen_channel(lua_State *L); } // thread } // love #endif // LOVE_THREAD_WRAP_CHANNEL_H love-0.9.1/src/modules/event/0000755000000000000000000000000012316602462016046 5ustar00rootroot00000000000000love-0.9.1/src/modules/event/Event.h0000644000000000000000000000347312316602166017310 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_EVENT_EVENT_H #define LOVE_EVENT_EVENT_H // LOVE #include "common/Module.h" #include "common/StringMap.h" #include "common/Variant.h" #include "keyboard/Keyboard.h" #include "mouse/Mouse.h" #include "joystick/Joystick.h" #include "thread/threads.h" // STL #include namespace love { namespace event { class Message : public Object { private: std::string name; Variant *args[4]; int nargs; public: Message(const std::string &name, Variant *a = NULL, Variant *b = NULL, Variant *c = NULL, Variant *d = NULL); ~Message(); int toLua(lua_State *L); static Message *fromLua(lua_State *L, int n); }; class Event : public Module { public: Event(); virtual ~Event(); void push(Message *msg); bool poll(Message *&msg); virtual void clear(); virtual void pump() = 0; protected: thread::Mutex *mutex; std::queue queue; }; // Event } // event } // love #endif // LOVE_EVENT_EVENT_H love-0.9.1/src/modules/event/Event.cpp0000644000000000000000000000465312316602166017644 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Event.h" using love::thread::Mutex; using love::thread::Lock; namespace love { namespace event { Message::Message(const std::string &name, Variant *a, Variant *b, Variant *c, Variant *d) : name(name) , nargs(0) { args[0] = a; args[1] = b; args[2] = c; args[3] = d; for (int i = 0; i < 4; i++) { if (!args[i]) break; args[i]->retain(); nargs++; } } Message::~Message() { for (int i = 0; i < nargs; i++) args[i]->release(); } int Message::toLua(lua_State *L) { luax_pushstring(L, name); for (int i = 0; i < nargs; i++) args[i]->toLua(L); return nargs+1; } Message *Message::fromLua(lua_State *L, int n) { std::string name = luax_checkstring(L, n); n++; Message *m = new Message(name); for (int i = 0; i < 4; i++) { if (lua_isnoneornil(L, n+i)) break; m->args[i] = Variant::fromLua(L, n+i); if (!m->args[i]) { delete m; luaL_error(L, "Argument %d can't be stored safely\nExpected boolean, number, string or userdata.", n+i); return NULL; } m->nargs++; } return m; } Event::Event() { mutex = thread::newMutex(); } Event::~Event() { delete mutex; } void Event::push(Message *msg) { Lock lock(mutex); msg->retain(); queue.push(msg); } bool Event::poll(Message *&msg) { Lock lock(mutex); if (queue.empty()) return false; msg = queue.front(); queue.pop(); return true; } void Event::clear() { Lock lock(mutex); while (!queue.empty()) { // std::queue::pop will remove the first (front) element. queue.front()->release(); queue.pop(); } } } // event } // love love-0.9.1/src/modules/event/sdl/0000755000000000000000000000000012316602462016630 5ustar00rootroot00000000000000love-0.9.1/src/modules/event/sdl/Event.h0000644000000000000000000000451312316602166020066 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_EVENT_SDL_EVENT_H #define LOVE_EVENT_SDL_EVENT_H // LOVE #include "event/Event.h" #include "common/runtime.h" #include "common/EnumMap.h" // SDL #include // STL #include namespace love { namespace event { namespace sdl { class Event : public love::event::Event { public: // Implements Module. const char *getName() const; Event(); virtual ~Event(); /** * Pumps the event queue. This function gathers all the pending input information * from devices and places it on the event queue. Normally not needed if you poll * for events. **/ void pump(); /** * Waits for the next event (indefinitely). Useful for creating games where * the screen and game state only needs updating when the user interacts with * the window. **/ Message *wait(); /** * Clears the event queue. */ void clear(); private: Message *convert(const SDL_Event &e) const; Message *convertJoystickEvent(const SDL_Event &e) const; Message *convertWindowEvent(const SDL_Event &e) const; static std::map createKeyMap(); static std::map keys; static EnumMap::Entry buttonEntries[]; static EnumMap buttons; }; // System } // sdl } // event } // love #endif // LOVE_EVENT_SDL_EVENT_H love-0.9.1/src/modules/event/sdl/Event.cpp0000644000000000000000000004722612316602166020431 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Event.h" #include "keyboard/Keyboard.h" #include "mouse/Mouse.h" #include "joystick/JoystickModule.h" #include "joystick/sdl/Joystick.h" #include "graphics/Graphics.h" #include "window/Window.h" #include "common/Exception.h" #include "common/config.h" #include namespace love { namespace event { namespace sdl { // SDL reports mouse coordinates in the window coordinate system in OS X, but // we want them in pixel coordinates (may be different with high-DPI enabled.) static void windowToPixelCoords(int *x, int *y) { double scale = 1.0; window::Window *window = (window::Window *) Module::findInstance("love.window."); if (window != nullptr) scale = window->getPixelScale(); if (x != nullptr) *x = int(double(*x) * scale); if (y != nullptr) *y = int(double(*y) * scale); } const char *Event::getName() const { return "love.event.sdl"; } Event::Event() { if (SDL_InitSubSystem(SDL_INIT_EVENTS) < 0) throw love::Exception("%s", SDL_GetError()); } Event::~Event() { SDL_QuitSubSystem(SDL_INIT_EVENTS); } void Event::pump() { SDL_PumpEvents(); static SDL_Event e; Message *msg; while (SDL_PollEvent(&e)) { msg = convert(e); if (msg) { push(msg); msg->release(); } } } Message *Event::wait() { static SDL_Event e; bool ok = (SDL_WaitEvent(&e) == 1); if (!ok) return NULL; return convert(e); } void Event::clear() { static SDL_Event e; while (SDL_PollEvent(&e)) { // Do nothing with 'e' ... } love::event::Event::clear(); } Message *Event::convert(const SDL_Event &e) const { Message *msg = NULL; love::keyboard::Keyboard *kb = 0; love::keyboard::Keyboard::Key key; love::mouse::Mouse::Button button; Variant *arg1, *arg2, *arg3; const char *txt; std::map::const_iterator keyit; switch (e.type) { case SDL_KEYDOWN: if (e.key.repeat) { kb = (love::keyboard::Keyboard *) Module::findInstance("love.keyboard."); if (kb && !kb->hasKeyRepeat()) break; } keyit = keys.find(e.key.keysym.sym); if (keyit != keys.end()) key = keyit->second; else key = love::keyboard::Keyboard::KEY_UNKNOWN; if (!love::keyboard::Keyboard::getConstant(key, txt)) txt = "unknown"; arg1 = new Variant(txt, strlen(txt)); arg2 = new Variant(e.key.repeat != 0); msg = new Message("keypressed", arg1, arg2); arg1->release(); arg2->release(); break; case SDL_KEYUP: keyit = keys.find(e.key.keysym.sym); if (keyit != keys.end()) key = keyit->second; else key = love::keyboard::Keyboard::KEY_UNKNOWN; if (!love::keyboard::Keyboard::getConstant(key, txt)) txt = "unknown"; arg1 = new Variant(txt, strlen(txt)); msg = new Message("keyreleased", arg1); arg1->release(); break; case SDL_TEXTINPUT: txt = e.text.text; arg1 = new Variant(txt, strlen(txt)); msg = new Message("textinput", arg1); arg1->release(); break; case SDL_TEXTEDITING: txt = e.edit.text; arg1 = new Variant(txt, strlen(txt)); arg2 = new Variant((double) e.edit.start); arg3 = new Variant((double) e.edit.length); msg = new Message("textedit", arg1, arg2, arg3); arg1->release(); arg2->release(); arg3->release(); break; case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: if (buttons.find(e.button.button, button) && mouse::Mouse::getConstant(button, txt)) { int x = e.button.x; int y = e.button.y; windowToPixelCoords(&x, &y); arg1 = new Variant((double) x); arg2 = new Variant((double) y); arg3 = new Variant(txt, strlen(txt)); msg = new Message((e.type == SDL_MOUSEBUTTONDOWN) ? "mousepressed" : "mousereleased", arg1, arg2, arg3); arg1->release(); arg2->release(); arg3->release(); } break; case SDL_MOUSEWHEEL: if (e.wheel.y != 0) { button = (e.wheel.y > 0) ? mouse::Mouse::BUTTON_WHEELUP : mouse::Mouse::BUTTON_WHEELDOWN; if (!love::mouse::Mouse::getConstant(button, txt)) break; int mx, my; SDL_GetMouseState(&mx, &my); windowToPixelCoords(&mx, &my); arg1 = new Variant((double) mx); arg2 = new Variant((double) my); arg3 = new Variant(txt, strlen(txt)); msg = new Message("mousepressed", arg1, arg2, arg3); arg1->release(); arg2->release(); arg3->release(); } break; case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: case SDL_JOYAXISMOTION: case SDL_JOYBALLMOTION: case SDL_JOYHATMOTION: case SDL_JOYDEVICEADDED: case SDL_JOYDEVICEREMOVED: case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERBUTTONUP: case SDL_CONTROLLERAXISMOTION: msg = convertJoystickEvent(e); break; case SDL_WINDOWEVENT: msg = convertWindowEvent(e); break; case SDL_DROPFILE: SDL_free(e.drop.file); break; case SDL_QUIT: msg = new Message("quit"); break; default: break; } return msg; } Message *Event::convertJoystickEvent(const SDL_Event &e) const { joystick::JoystickModule *joymodule = (joystick::JoystickModule *) Module::findInstance("love.joystick."); if (!joymodule) return 0; Message *msg = 0; Proxy proxy; love::joystick::Joystick::Hat hat; love::joystick::Joystick::GamepadButton padbutton; love::joystick::Joystick::GamepadAxis padaxis; Variant *arg1, *arg2, *arg3; const char *txt; switch (e.type) { case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: proxy.flags = JOYSTICK_JOYSTICK_T; proxy.data = joymodule->getJoystickFromID(e.jbutton.which); if (!proxy.data) break; arg1 = new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy); arg2 = new Variant((double)(e.jbutton.button+1)); msg = new Message((e.type == SDL_JOYBUTTONDOWN) ? "joystickpressed" : "joystickreleased", arg1, arg2); arg1->release(); arg2->release(); break; case SDL_JOYAXISMOTION: { proxy.flags = JOYSTICK_JOYSTICK_T; proxy.data = joymodule->getJoystickFromID(e.jaxis.which); if (!proxy.data) break; arg1 = new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy); arg2 = new Variant((double)(e.jaxis.axis+1)); float value = e.jaxis.value / 32768.0f; if (fabsf(value) < 0.001f) value = 0.0f; if (value < -0.99f) value = -1.0f; if (value > 0.99f) value = 1.0f; arg3 = new Variant((double) value); msg = new Message("joystickaxis", arg1, arg2, arg3); arg1->release(); arg2->release(); arg3->release(); } break; case SDL_JOYHATMOTION: if (!joystick::sdl::Joystick::getConstant(e.jhat.value, hat) || !joystick::Joystick::getConstant(hat, txt)) break; proxy.flags = JOYSTICK_JOYSTICK_T; proxy.data = joymodule->getJoystickFromID(e.jhat.which); if (!proxy.data) break; arg1 = new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy); arg2 = new Variant((double)(e.jhat.hat+1)); arg3 = new Variant(txt, strlen(txt)); msg = new Message("joystickhat", arg1, arg2, arg3); arg1->release(); arg2->release(); arg3->release(); break; case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERBUTTONUP: if (!joystick::sdl::Joystick::getConstant((SDL_GameControllerButton) e.cbutton.button, padbutton)) break; if (!joystick::Joystick::getConstant(padbutton, txt)) break; proxy.flags = JOYSTICK_JOYSTICK_T; proxy.data = joymodule->getJoystickFromID(e.cbutton.which); if (!proxy.data) break; arg1 = new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy); arg2 = new Variant(txt, strlen(txt)); msg = new Message(e.type == SDL_CONTROLLERBUTTONDOWN ? "gamepadpressed" : "gamepadreleased", arg1, arg2); arg1->release(); arg2->release(); break; case SDL_CONTROLLERAXISMOTION: if (joystick::sdl::Joystick::getConstant((SDL_GameControllerAxis) e.caxis.axis, padaxis)) { if (!joystick::Joystick::getConstant(padaxis, txt)) break; proxy.flags = JOYSTICK_JOYSTICK_T; proxy.data = joymodule->getJoystickFromID(e.caxis.which); if (!proxy.data) break; arg1 = new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy); arg2 = new Variant(txt, strlen(txt)); float value = e.jaxis.value / 32768.0f; if (fabsf(value) < 0.001f) value = 0.0f; if (value < -0.99f) value = -1.0f; if (value > 0.99f) value = 1.0f; arg3 = new Variant((double) value); msg = new Message("gamepadaxis", arg1, arg2, arg3); arg1->release(); arg2->release(); arg3->release(); } break; case SDL_JOYDEVICEADDED: // jdevice.which is the joystick device index. proxy.data = joymodule->addJoystick(e.jdevice.which); proxy.flags = JOYSTICK_JOYSTICK_T; if (proxy.data) { arg1 = new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy); msg = new Message("joystickadded", arg1); arg1->release(); } break; case SDL_JOYDEVICEREMOVED: // jdevice.which is the joystick instance ID now. proxy.data = joymodule->getJoystickFromID(e.jdevice.which); proxy.flags = JOYSTICK_JOYSTICK_T; if (proxy.data) { joymodule->removeJoystick((joystick::Joystick *) proxy.data); arg1 = new Variant(JOYSTICK_JOYSTICK_ID, (void *) &proxy); msg = new Message("joystickremoved", arg1); arg1->release(); } break; default: break; } return msg; } Message *Event::convertWindowEvent(const SDL_Event &e) const { Message *msg = 0; Variant *arg1, *arg2, *arg3, *arg4; window::Window *win = 0; if (e.type != SDL_WINDOWEVENT) return 0; switch (e.window.event) { case SDL_WINDOWEVENT_FOCUS_GAINED: case SDL_WINDOWEVENT_FOCUS_LOST: // Users won't expect the screensaver to activate if a game is in // focus. Also, joystick input may not delay the screensaver timer. if (e.window.event == SDL_WINDOWEVENT_FOCUS_GAINED) SDL_DisableScreenSaver(); else SDL_EnableScreenSaver(); arg1 = new Variant(e.window.event == SDL_WINDOWEVENT_FOCUS_GAINED); msg = new Message("focus", arg1); arg1->release(); break; case SDL_WINDOWEVENT_ENTER: case SDL_WINDOWEVENT_LEAVE: arg1 = new Variant(e.window.event == SDL_WINDOWEVENT_ENTER); msg = new Message("mousefocus", arg1); arg1->release(); break; case SDL_WINDOWEVENT_SHOWN: case SDL_WINDOWEVENT_HIDDEN: arg1 = new Variant(e.window.event == SDL_WINDOWEVENT_SHOWN); msg = new Message("visible", arg1); arg1->release(); break; case SDL_WINDOWEVENT_RESIZED: win = (window::Window *) Module::findInstance("love.window."); if (win) { int px_w = e.window.data1; int px_h = e.window.data2; // FIXME: disabled in Linux for runtime SDL 2.0.0 compatibility. #if SDL_VERSION_ATLEAST(2,0,1) && !defined(LOVE_LINUX) SDL_Window *sdlwin = SDL_GetWindowFromID(e.window.windowID); if (sdlwin) SDL_GL_GetDrawableSize(sdlwin, &px_w, &px_h); #endif win->onWindowResize(e.window.data1, e.window.data2); graphics::Graphics *gfx = (graphics::Graphics *) Module::findInstance("love.graphics."); if (gfx) gfx->setViewportSize(px_w, px_h); arg1 = new Variant((double) px_w); arg2 = new Variant((double) px_h); arg3 = new Variant((double) e.window.data1); arg4 = new Variant((double) e.window.data2); msg = new Message("resize", arg1, arg2, arg3, arg4); arg1->release(); arg2->release(); arg3->release(); arg4->release(); } break; } return msg; } std::map Event::createKeyMap() { using love::keyboard::Keyboard; std::map k; k[SDLK_UNKNOWN] = Keyboard::KEY_UNKNOWN; k[SDLK_RETURN] = Keyboard::KEY_RETURN; k[SDLK_ESCAPE] = Keyboard::KEY_ESCAPE; k[SDLK_BACKSPACE] = Keyboard::KEY_BACKSPACE; k[SDLK_TAB] = Keyboard::KEY_TAB; k[SDLK_SPACE] = Keyboard::KEY_SPACE; k[SDLK_EXCLAIM] = Keyboard::KEY_EXCLAIM; k[SDLK_QUOTEDBL] = Keyboard::KEY_QUOTEDBL; k[SDLK_HASH] = Keyboard::KEY_HASH; k[SDLK_DOLLAR] = Keyboard::KEY_DOLLAR; k[SDLK_AMPERSAND] = Keyboard::KEY_AMPERSAND; k[SDLK_QUOTE] = Keyboard::KEY_QUOTE; k[SDLK_LEFTPAREN] = Keyboard::KEY_LEFTPAREN; k[SDLK_RIGHTPAREN] = Keyboard::KEY_RIGHTPAREN; k[SDLK_ASTERISK] = Keyboard::KEY_ASTERISK; k[SDLK_PLUS] = Keyboard::KEY_PLUS; k[SDLK_COMMA] = Keyboard::KEY_COMMA; k[SDLK_MINUS] = Keyboard::KEY_MINUS; k[SDLK_PERIOD] = Keyboard::KEY_PERIOD; k[SDLK_SLASH] = Keyboard::KEY_SLASH; k[SDLK_0] = Keyboard::KEY_0; k[SDLK_1] = Keyboard::KEY_1; k[SDLK_2] = Keyboard::KEY_2; k[SDLK_3] = Keyboard::KEY_3; k[SDLK_4] = Keyboard::KEY_4; k[SDLK_5] = Keyboard::KEY_5; k[SDLK_6] = Keyboard::KEY_6; k[SDLK_7] = Keyboard::KEY_7; k[SDLK_8] = Keyboard::KEY_8; k[SDLK_9] = Keyboard::KEY_9; k[SDLK_COLON] = Keyboard::KEY_COLON; k[SDLK_SEMICOLON] = Keyboard::KEY_SEMICOLON; k[SDLK_LESS] = Keyboard::KEY_LESS; k[SDLK_EQUALS] = Keyboard::KEY_EQUALS; k[SDLK_GREATER] = Keyboard::KEY_GREATER; k[SDLK_QUESTION] = Keyboard::KEY_QUESTION; k[SDLK_AT] = Keyboard::KEY_AT; k[SDLK_LEFTBRACKET] = Keyboard::KEY_LEFTBRACKET; k[SDLK_BACKSLASH] = Keyboard::KEY_BACKSLASH; k[SDLK_RIGHTBRACKET] = Keyboard::KEY_RIGHTBRACKET; k[SDLK_CARET] = Keyboard::KEY_CARET; k[SDLK_UNDERSCORE] = Keyboard::KEY_UNDERSCORE; k[SDLK_BACKQUOTE] = Keyboard::KEY_BACKQUOTE; k[SDLK_a] = Keyboard::KEY_A; k[SDLK_b] = Keyboard::KEY_B; k[SDLK_c] = Keyboard::KEY_C; k[SDLK_d] = Keyboard::KEY_D; k[SDLK_e] = Keyboard::KEY_E; k[SDLK_f] = Keyboard::KEY_F; k[SDLK_g] = Keyboard::KEY_G; k[SDLK_h] = Keyboard::KEY_H; k[SDLK_i] = Keyboard::KEY_I; k[SDLK_j] = Keyboard::KEY_J; k[SDLK_k] = Keyboard::KEY_K; k[SDLK_l] = Keyboard::KEY_L; k[SDLK_m] = Keyboard::KEY_M; k[SDLK_n] = Keyboard::KEY_N; k[SDLK_o] = Keyboard::KEY_O; k[SDLK_p] = Keyboard::KEY_P; k[SDLK_q] = Keyboard::KEY_Q; k[SDLK_r] = Keyboard::KEY_R; k[SDLK_s] = Keyboard::KEY_S; k[SDLK_t] = Keyboard::KEY_T; k[SDLK_u] = Keyboard::KEY_U; k[SDLK_v] = Keyboard::KEY_V; k[SDLK_w] = Keyboard::KEY_W; k[SDLK_x] = Keyboard::KEY_X; k[SDLK_y] = Keyboard::KEY_Y; k[SDLK_z] = Keyboard::KEY_Z; k[SDLK_CAPSLOCK] = Keyboard::KEY_CAPSLOCK; k[SDLK_F1] = Keyboard::KEY_F1; k[SDLK_F2] = Keyboard::KEY_F2; k[SDLK_F3] = Keyboard::KEY_F3; k[SDLK_F4] = Keyboard::KEY_F4; k[SDLK_F5] = Keyboard::KEY_F5; k[SDLK_F6] = Keyboard::KEY_F6; k[SDLK_F7] = Keyboard::KEY_F7; k[SDLK_F8] = Keyboard::KEY_F8; k[SDLK_F9] = Keyboard::KEY_F9; k[SDLK_F10] = Keyboard::KEY_F10; k[SDLK_F11] = Keyboard::KEY_F11; k[SDLK_F12] = Keyboard::KEY_F12; k[SDLK_PRINTSCREEN] = Keyboard::KEY_PRINTSCREEN; k[SDLK_SCROLLLOCK] = Keyboard::KEY_SCROLLLOCK; k[SDLK_PAUSE] = Keyboard::KEY_PAUSE; k[SDLK_INSERT] = Keyboard::KEY_INSERT; k[SDLK_HOME] = Keyboard::KEY_HOME; k[SDLK_PAGEUP] = Keyboard::KEY_PAGEUP; k[SDLK_DELETE] = Keyboard::KEY_DELETE; k[SDLK_END] = Keyboard::KEY_END; k[SDLK_PAGEDOWN] = Keyboard::KEY_PAGEDOWN; k[SDLK_RIGHT] = Keyboard::KEY_RIGHT; k[SDLK_LEFT] = Keyboard::KEY_LEFT; k[SDLK_DOWN] = Keyboard::KEY_DOWN; k[SDLK_UP] = Keyboard::KEY_UP; k[SDLK_NUMLOCKCLEAR] = Keyboard::KEY_NUMLOCKCLEAR; k[SDLK_KP_DIVIDE] = Keyboard::KEY_KP_DIVIDE; k[SDLK_KP_MULTIPLY] = Keyboard::KEY_KP_MULTIPLY; k[SDLK_KP_MINUS] = Keyboard::KEY_KP_MINUS; k[SDLK_KP_PLUS] = Keyboard::KEY_KP_PLUS; k[SDLK_KP_ENTER] = Keyboard::KEY_KP_ENTER; k[SDLK_KP_0] = Keyboard::KEY_KP_0; k[SDLK_KP_1] = Keyboard::KEY_KP_1; k[SDLK_KP_2] = Keyboard::KEY_KP_2; k[SDLK_KP_3] = Keyboard::KEY_KP_3; k[SDLK_KP_4] = Keyboard::KEY_KP_4; k[SDLK_KP_5] = Keyboard::KEY_KP_5; k[SDLK_KP_6] = Keyboard::KEY_KP_6; k[SDLK_KP_7] = Keyboard::KEY_KP_7; k[SDLK_KP_8] = Keyboard::KEY_KP_8; k[SDLK_KP_9] = Keyboard::KEY_KP_9; k[SDLK_KP_PERIOD] = Keyboard::KEY_KP_PERIOD; k[SDLK_KP_COMMA] = Keyboard::KEY_KP_COMMA; k[SDLK_KP_EQUALS] = Keyboard::KEY_KP_EQUALS; k[SDLK_APPLICATION] = Keyboard::KEY_APPLICATION; k[SDLK_POWER] = Keyboard::KEY_POWER; k[SDLK_F13] = Keyboard::KEY_F13; k[SDLK_F14] = Keyboard::KEY_F14; k[SDLK_F15] = Keyboard::KEY_F15; k[SDLK_F16] = Keyboard::KEY_F16; k[SDLK_F17] = Keyboard::KEY_F17; k[SDLK_F18] = Keyboard::KEY_F18; k[SDLK_F19] = Keyboard::KEY_F19; k[SDLK_F20] = Keyboard::KEY_F20; k[SDLK_F21] = Keyboard::KEY_F21; k[SDLK_F22] = Keyboard::KEY_F22; k[SDLK_F23] = Keyboard::KEY_F23; k[SDLK_F24] = Keyboard::KEY_F24; k[SDLK_EXECUTE] = Keyboard::KEY_EXECUTE; k[SDLK_HELP] = Keyboard::KEY_HELP; k[SDLK_MENU] = Keyboard::KEY_MENU; k[SDLK_SELECT] = Keyboard::KEY_SELECT; k[SDLK_STOP] = Keyboard::KEY_STOP; k[SDLK_AGAIN] = Keyboard::KEY_AGAIN; k[SDLK_UNDO] = Keyboard::KEY_UNDO; k[SDLK_CUT] = Keyboard::KEY_CUT; k[SDLK_COPY] = Keyboard::KEY_COPY; k[SDLK_PASTE] = Keyboard::KEY_PASTE; k[SDLK_FIND] = Keyboard::KEY_FIND; k[SDLK_MUTE] = Keyboard::KEY_MUTE; k[SDLK_VOLUMEUP] = Keyboard::KEY_VOLUMEUP; k[SDLK_VOLUMEDOWN] = Keyboard::KEY_VOLUMEDOWN; k[SDLK_ALTERASE] = Keyboard::KEY_ALTERASE; k[SDLK_SYSREQ] = Keyboard::KEY_SYSREQ; k[SDLK_CANCEL] = Keyboard::KEY_CANCEL; k[SDLK_CLEAR] = Keyboard::KEY_CLEAR; k[SDLK_PRIOR] = Keyboard::KEY_PRIOR; k[SDLK_RETURN2] = Keyboard::KEY_RETURN2; k[SDLK_SEPARATOR] = Keyboard::KEY_SEPARATOR; k[SDLK_OUT] = Keyboard::KEY_OUT; k[SDLK_OPER] = Keyboard::KEY_OPER; k[SDLK_CLEARAGAIN] = Keyboard::KEY_CLEARAGAIN; k[SDLK_THOUSANDSSEPARATOR] = Keyboard::KEY_THOUSANDSSEPARATOR; k[SDLK_DECIMALSEPARATOR] = Keyboard::KEY_DECIMALSEPARATOR; k[SDLK_CURRENCYUNIT] = Keyboard::KEY_CURRENCYUNIT; k[SDLK_CURRENCYSUBUNIT] = Keyboard::KEY_CURRENCYSUBUNIT; k[SDLK_LCTRL] = Keyboard::KEY_LCTRL; k[SDLK_LSHIFT] = Keyboard::KEY_LSHIFT; k[SDLK_LALT] = Keyboard::KEY_LALT; k[SDLK_LGUI] = Keyboard::KEY_LGUI; k[SDLK_RCTRL] = Keyboard::KEY_RCTRL; k[SDLK_RSHIFT] = Keyboard::KEY_RSHIFT; k[SDLK_RALT] = Keyboard::KEY_RALT; k[SDLK_RGUI] = Keyboard::KEY_RGUI; k[SDLK_MODE] = Keyboard::KEY_MODE; k[SDLK_AUDIONEXT] = Keyboard::KEY_AUDIONEXT; k[SDLK_AUDIOPREV] = Keyboard::KEY_AUDIOPREV; k[SDLK_AUDIOSTOP] = Keyboard::KEY_AUDIOSTOP; k[SDLK_AUDIOPLAY] = Keyboard::KEY_AUDIOPLAY; k[SDLK_AUDIOMUTE] = Keyboard::KEY_AUDIOMUTE; k[SDLK_MEDIASELECT] = Keyboard::KEY_MEDIASELECT; k[SDLK_WWW] = Keyboard::KEY_WWW; k[SDLK_MAIL] = Keyboard::KEY_MAIL; k[SDLK_CALCULATOR] = Keyboard::KEY_CALCULATOR; k[SDLK_COMPUTER] = Keyboard::KEY_COMPUTER; k[SDLK_AC_SEARCH] = Keyboard::KEY_APP_SEARCH; k[SDLK_AC_HOME] = Keyboard::KEY_APP_HOME; k[SDLK_AC_BACK] = Keyboard::KEY_APP_BACK; k[SDLK_AC_FORWARD] = Keyboard::KEY_APP_FORWARD; k[SDLK_AC_STOP] = Keyboard::KEY_APP_STOP; k[SDLK_AC_REFRESH] = Keyboard::KEY_APP_REFRESH; k[SDLK_AC_BOOKMARKS] = Keyboard::KEY_APP_BOOKMARKS; k[SDLK_BRIGHTNESSDOWN] = Keyboard::KEY_BRIGHTNESSDOWN; k[SDLK_BRIGHTNESSUP] = Keyboard::KEY_BRIGHTNESSUP; k[SDLK_DISPLAYSWITCH] = Keyboard::KEY_DISPLAYSWITCH; k[SDLK_KBDILLUMTOGGLE] = Keyboard::KEY_KBDILLUMTOGGLE; k[SDLK_KBDILLUMDOWN] = Keyboard::KEY_KBDILLUMDOWN; k[SDLK_KBDILLUMUP] = Keyboard::KEY_KBDILLUMUP; k[SDLK_EJECT] = Keyboard::KEY_EJECT; k[SDLK_SLEEP] = Keyboard::KEY_SLEEP; return k; } std::map Event::keys = Event::createKeyMap(); EnumMap::Entry Event::buttonEntries[] = { { love::mouse::Mouse::BUTTON_LEFT, SDL_BUTTON_LEFT}, { love::mouse::Mouse::BUTTON_MIDDLE, SDL_BUTTON_MIDDLE}, { love::mouse::Mouse::BUTTON_RIGHT, SDL_BUTTON_RIGHT}, { love::mouse::Mouse::BUTTON_X1, SDL_BUTTON_X1}, { love::mouse::Mouse::BUTTON_X2, SDL_BUTTON_X2}, }; EnumMap Event::buttons(Event::buttonEntries, sizeof(Event::buttonEntries)); } // sdl } // event } // love love-0.9.1/src/modules/event/sdl/wrap_Event.h0000644000000000000000000000256112316602166021120 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_EVENT_SDL_WRAP_EVENT_H #define LOVE_EVENT_SDL_WRAP_EVENT_H // LOVE #include "common/config.h" #include "Event.h" namespace love { namespace event { namespace sdl { int w_pump(lua_State *L); int w_poll(lua_State *L); int w_wait(lua_State *L); int w_push(lua_State *L); int w_clear(lua_State *L); int w_quit(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_event(lua_State *L); } // sdl } // event } // love #endif // LOVE_EVENT_SDL_WRAP_EVENT_H love-0.9.1/src/modules/event/sdl/wrap_Event.cpp0000644000000000000000000000471312316602166021454 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Event.h" // LOVE #include "common/runtime.h" // sdlevent #include "Event.h" namespace love { namespace event { namespace sdl { static Event *instance = 0; static int poll_i(lua_State *L) { Message *m; while (instance->poll(m)) { int args = m->toLua(L); m->release(); return args; } // No pending events. return 0; } int w_pump(lua_State *) { instance->pump(); return 0; } int w_poll(lua_State *L) { lua_pushcclosure(L, &poll_i, 0); return 1; } int w_wait(lua_State *L) { Message *m; if ((m = instance->wait())) { int args = m->toLua(L); m->release(); return args; } return 0; } int w_push(lua_State *L) { Message *m; bool success = (m = Message::fromLua(L, 1)) != NULL; luax_pushboolean(L, success); if (!success) return 1; instance->push(m); m->release(); return 1; } int w_clear(lua_State *) { instance->clear(); return 0; } int w_quit(lua_State *L) { Message *m = new Message("quit"); instance->push(m); m->release(); luax_pushboolean(L, true); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "pump", w_pump }, { "poll", w_poll }, { "wait", w_wait }, { "push", w_push }, { "clear", w_clear }, { "quit", w_quit }, { 0, 0 } }; extern "C" int luaopen_love_event(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new Event();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "event"; w.flags = MODULE_T; w.functions = functions; w.types = 0; return luax_register_module(L, w); } } // sdl } // event } // love love-0.9.1/src/modules/image/0000755000000000000000000000000012316602462016007 5ustar00rootroot00000000000000love-0.9.1/src/modules/image/magpie/0000755000000000000000000000000012316602462017251 5ustar00rootroot00000000000000love-0.9.1/src/modules/image/magpie/ddsHandler.cpp0000644000000000000000000000730412316602166022032 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "ddsHandler.h" #include namespace love { namespace image { namespace magpie { bool ddsHandler::canParse(const filesystem::FileData *data) { std::string ext = data->getExtension(); std::transform(ext.begin(), ext.end(), ext.begin(), tolower); if (ext.compare("dds") != 0) return false; return dds::isCompressedDDS(data->getData(), data->getSize()); } uint8 *ddsHandler::parse(filesystem::FileData *filedata, std::vector &images, size_t &dataSize, CompressedData::Format &format) { if (!dds::isDDS(filedata->getData(), filedata->getSize())) throw love::Exception("Could not decode compressed data (not a DDS file?)"); CompressedData::Format texformat = CompressedData::FORMAT_UNKNOWN; uint8 *data = 0; dataSize = 0; images.clear(); try { // Attempt to parse the dds file. dds::Parser parser(filedata->getData(), filedata->getSize()); texformat = convertFormat(parser.getFormat()); if (texformat == CompressedData::FORMAT_UNKNOWN) throw love::Exception("Could not parse compressed data: Unsupported format."); if (parser.getMipmapCount() == 0) throw love::Exception("Could not parse compressed data: No readable texture data."); // Calculate the size of the block of memory we're returning. for (size_t i = 0; i < parser.getMipmapCount(); i++) { const dds::Image *img = parser.getImageData(i); dataSize += img->dataSize; } data = new uint8[dataSize]; size_t dataOffset = 0; // Copy the parsed mipmap levels from the FileData to our CompressedData. for (size_t i = 0; i < parser.getMipmapCount(); i++) { // Fetch the data for this mipmap level. const dds::Image *img = parser.getImageData(i); CompressedData::SubImage mip; mip.width = img->width; mip.height = img->height; mip.size = img->dataSize; // Copy the mipmap image from the FileData to our block of memory. memcpy(data + dataOffset, img->data, mip.size); mip.data = data + dataOffset; dataOffset += mip.size; images.push_back(mip); } } catch (std::exception &e) { delete[] data; images.clear(); throw love::Exception("%s", e.what()); } format = texformat; return data; } CompressedData::Format ddsHandler::convertFormat(dds::Format ddsformat) { switch (ddsformat) { case dds::FORMAT_DXT1: return CompressedData::FORMAT_DXT1; case dds::FORMAT_DXT3: return CompressedData::FORMAT_DXT3; case dds::FORMAT_DXT5: return CompressedData::FORMAT_DXT5; case dds::FORMAT_BC4: return CompressedData::FORMAT_BC4; case dds::FORMAT_BC4s: return CompressedData::FORMAT_BC4s; case dds::FORMAT_BC5: return CompressedData::FORMAT_BC5; case dds::FORMAT_BC5s: return CompressedData::FORMAT_BC5s; default: return CompressedData::FORMAT_UNKNOWN; } return CompressedData::FORMAT_UNKNOWN; } } // magpie } // image } // love love-0.9.1/src/modules/image/magpie/DevilHandler.h0000644000000000000000000000327112316602166021767 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_MAGPIE_DEVIL_HANDLER_H #define LOVE_IMAGE_MAGPIE_DEVIL_HANDLER_H // LOVE #include "filesystem/FileData.h" #include "FormatHandler.h" #include "thread/threads.h" namespace love { namespace image { namespace magpie { /** * Interface between ImageData and DevIL. **/ class DevilHandler : public FormatHandler { public: // Implements FormatHandler. DevilHandler(); virtual ~DevilHandler(); virtual bool canDecode(love::filesystem::FileData *data); virtual bool canEncode(ImageData::Format format); virtual DecodedImage decode(love::filesystem::FileData *data); virtual EncodedImage encode(const DecodedImage &img, ImageData::Format format); private: Mutex *mutex; }; // DevilHandler } // magpie } // image } // love #endif // LOVE_IMAGE_MAGPIE_DEVIL_HANDLER_H love-0.9.1/src/modules/image/magpie/FormatHandler.cpp0000644000000000000000000000324212316602166022505 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "FormatHandler.h" #include "common/Exception.h" namespace love { namespace image { namespace magpie { FormatHandler::FormatHandler() { } FormatHandler::~FormatHandler() { } bool FormatHandler::canDecode(love::filesystem::FileData* /*data*/) { return false; } bool FormatHandler::canEncode(ImageData::Format /*format*/) { return false; } FormatHandler::DecodedImage FormatHandler::decode(love::filesystem::FileData* /*data*/) { throw love::Exception("Image decoding is not implemented for this format backend."); } FormatHandler::EncodedImage FormatHandler::encode(const DecodedImage& /*img*/, ImageData::Format /*format*/) { throw love::Exception("Image encoding is not implemented for this format backend."); } } // magpie } // image } // love love-0.9.1/src/modules/image/magpie/Image.cpp0000644000000000000000000000414012316602166020777 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Image.h" #include "ImageData.h" #include "CompressedData.h" #include "DevilHandler.h" namespace love { namespace image { namespace magpie { Image::Image() { formatHandlers.push_back(new DevilHandler); } Image::~Image() { // ImageData objects reference the FormatHandlers in our list, so we should // release them instead of deleting them completely here. for (auto it = formatHandlers.begin(); it != formatHandlers.end(); ++it) (*it)->release(); } const char *Image::getName() const { return "love.image.magpie"; } love::image::ImageData *Image::newImageData(love::filesystem::FileData *data) { return new ImageData(formatHandlers, data); } love::image::ImageData *Image::newImageData(int width, int height) { return new ImageData(formatHandlers, width, height); } love::image::ImageData *Image::newImageData(int width, int height, void *data, bool own) { return new ImageData(formatHandlers, width, height, data, own); } love::image::CompressedData *Image::newCompressedData(love::filesystem::FileData *data) { return new CompressedData(data); } bool Image::isCompressed(love::filesystem::FileData *data) { return CompressedData::isCompressed(data); } } // magpie } // image } // love love-0.9.1/src/modules/image/magpie/CompressedData.h0000644000000000000000000000276612316602166022334 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_MAGPIE_COMPRESSED_DATA_H #define LOVE_IMAGE_MAGPIE_COMPRESSED_DATA_H // LOVE #include "filesystem/FileData.h" #include "image/CompressedData.h" namespace love { namespace image { namespace magpie { class CompressedData : public love::image::CompressedData { public: CompressedData(love::filesystem::FileData *filedata); virtual ~CompressedData(); static bool isCompressed(love::filesystem::FileData *filedata); private: void load(love::filesystem::FileData *filedata); }; // CompressedData } // magpie } // image } // love #endif // LOVE_IMAGE_MAGPIE_COMPRESSED_DATA_H love-0.9.1/src/modules/image/magpie/ddsHandler.h0000644000000000000000000000450312316602166021475 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_MAGPIE_DDS_HANDLER_H #define LOVE_IMAGE_MAGPIE_DDS_HANDLER_H // LOVE #include "common/EnumMap.h" #include "filesystem/FileData.h" #include "image/CompressedData.h" // dds parser #include "ddsparse/ddsparse.h" // STL #include namespace love { namespace image { namespace magpie { /** * Interface between CompressedData and the ddsparse library. **/ class ddsHandler { public: /** * Determines whether a particular FileData can be parsed as CompressedData * by this handler. * @param data The data to parse. **/ static bool canParse(const filesystem::FileData *data); /** * Parses compressed image filedata into a list of sub-images and returns * a single block of memory containing all the images. * * @param[in] filedata The data to parse. * @param[out] image The list of sub-images generated. Byte data is a pointer * to the returned data. * @param[out] dataSize The total size in bytes of the returned data. * @param[out] format The format of the Compressed Data. * * @return The single block of memory containing the parsed images. **/ static uint8 *parse(filesystem::FileData *filedata, std::vector &images, size_t &dataSize, CompressedData::Format &format); private: static CompressedData::Format convertFormat(dds::Format ddsformat); }; // ddsHandler } // magpie } // image } // love #endif // LOVE_IMAGE_MAGPIE_DDS_HANDLER_H love-0.9.1/src/modules/image/magpie/FormatHandler.h0000644000000000000000000000533412316602166022156 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_MAGPIE_FORMAT_HANDLER_H #define LOVE_IMAGE_MAGPIE_FORMAT_HANDLER_H // LOVE #include "image/ImageData.h" #include "filesystem/FileData.h" #include "common/Object.h" namespace love { namespace image { namespace magpie { /** * Base class for all ImageData encoder/decoder library interfaces. * We inherit from love::Object to take advantage of reference counting... **/ class FormatHandler : public love::Object { public: // Raw RGBA pixel data. struct DecodedImage { int width, height; size_t size; unsigned char *data; DecodedImage() : width(0), height(0), size(0), data(0) {} }; // Pixel data encoded in a particular format. struct EncodedImage { size_t size; unsigned char *data; EncodedImage() : size(0), data(0) {} }; /** * The default constructor is called when the Image module is initialized. **/ FormatHandler(); /** * The destructor is called when the Image module is uninitialized. **/ virtual ~FormatHandler(); /** * Whether this format handler can decode a particular FileData. **/ virtual bool canDecode(love::filesystem::FileData *data); /** * Whether this format handler can encode to a particular format. **/ virtual bool canEncode(ImageData::Format format); /** * Decodes an image from its encoded form into raw pixel data. * @param data The encoded data to decode. * @return The decoded pixel data. **/ virtual DecodedImage decode(love::filesystem::FileData *data); /** * Encodes an image from raw pixel data into a particular format. * @param img The raw image data to encode. * @param format The format to encode to. * @return The encoded image data. **/ virtual EncodedImage encode(const DecodedImage &img, ImageData::Format format); }; // FormatHandler } // magpie } // image } // love #endif // LOVE_IMAGE_MAGPIE_FORMAT_HANDLER_H love-0.9.1/src/modules/image/magpie/Image.h0000644000000000000000000000375312316602166020455 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_MAGPIE_IMAGE_H #define LOVE_IMAGE_MAGPIE_IMAGE_H // LOVE #include "image/Image.h" #include "FormatHandler.h" // C++ #include namespace love { namespace image { namespace magpie { /** * Similar to love.sound's Lullaby module, love.image.magpie interfaces with * multiple image libraries and determines the correct one to use on a * per-image basis at runtime. **/ class Image : public love::image::Image { public: Image(); ~Image(); // Implements Module. const char *getName() const; love::image::ImageData *newImageData(love::filesystem::FileData *data); love::image::ImageData *newImageData(int width, int height); love::image::ImageData *newImageData(int width, int height, void *data, bool own = false); love::image::CompressedData *newCompressedData(love::filesystem::FileData *data); bool isCompressed(love::filesystem::FileData *data); private: // Image format handlers we can use for decoding and encoding ImageData. std::list formatHandlers; }; // Image } // magpie } // image } // love #endif // LOVE_IMAGE_MAGPIE_IMAGE_H love-0.9.1/src/modules/image/magpie/ImageData.cpp0000644000000000000000000000775612316602166021611 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "ImageData.h" namespace love { namespace image { namespace magpie { ImageData::ImageData(std::list formats, love::filesystem::FileData *data) : formatHandlers(formats) { for (auto it = formatHandlers.begin(); it != formatHandlers.end(); ++it) (*it)->retain(); decode(data); } ImageData::ImageData(std::list formats, int width, int height) : formatHandlers(formats) { for (auto it = formatHandlers.begin(); it != formatHandlers.end(); ++it) (*it)->retain(); this->width = width; this->height = height; create(width, height); // Set to black/transparency. memset(data, 0, width*height*sizeof(pixel)); } ImageData::ImageData(std::list formats, int width, int height, void *data, bool own) : formatHandlers(formats) { for (auto it = formatHandlers.begin(); it != formatHandlers.end(); ++it) (*it)->retain(); this->width = width; this->height = height; if (own) this->data = (unsigned char *) data; else create(width, height, data); } ImageData::~ImageData() { delete[] data; for (auto it = formatHandlers.begin(); it != formatHandlers.end(); ++it) (*it)->release(); } void ImageData::create(int width, int height, void *data) { try { this->data = new unsigned char[width*height*sizeof(pixel)]; } catch(std::bad_alloc &) { throw love::Exception("Out of memory"); } if (data) memcpy(this->data, data, width*height*sizeof(pixel)); } void ImageData::decode(love::filesystem::FileData *data) { FormatHandler::DecodedImage decodedimage; for (auto it = formatHandlers.begin(); it != formatHandlers.end(); ++it) { if ((*it)->canDecode(data)) { decodedimage = (*it)->decode(data); break; } } if (decodedimage.data == nullptr) throw love::Exception("Could not decode image: unrecognized format."); // The decoder *must* output a 32 bits-per-pixel image. if (decodedimage.size != decodedimage.width*decodedimage.height*sizeof(pixel)) { delete[] decodedimage.data; throw love::Exception("Could not convert image!"); } if (this->data) delete[] this->data; this->width = decodedimage.width; this->height = decodedimage.height; this->data = decodedimage.data; } void ImageData::encode(love::filesystem::File *f, ImageData::Format format) { FormatHandler::EncodedImage encodedimage; { // We only need to lock this mutex when actually encoding the ImageData. thread::Lock lock(mutex); FormatHandler::DecodedImage rawimage; rawimage.width = width; rawimage.height = height; rawimage.size = width*height*sizeof(pixel); rawimage.data = data; for (auto it = formatHandlers.begin(); it != formatHandlers.end(); ++it) { if ((*it)->canEncode(format)) { encodedimage = (*it)->encode(rawimage, format); break; } } if (encodedimage.data == nullptr) throw love::Exception("Image format has no suitable encoder."); } try { f->open(love::filesystem::File::WRITE); f->write(encodedimage.data, encodedimage.size); f->close(); } catch (love::Exception &) { delete[] encodedimage.data; throw; } delete[] encodedimage.data; } } // magpie } // image } // love love-0.9.1/src/modules/image/magpie/ImageData.h0000644000000000000000000000374712316602166021252 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_MAGPIE_IMAGE_DATA_H #define LOVE_IMAGE_MAGPIE_IMAGE_DATA_H // LOVE #include "FormatHandler.h" #include "filesystem/File.h" #include "image/ImageData.h" // C++ #include namespace love { namespace image { namespace magpie { class ImageData : public love::image::ImageData { public: ImageData(std::list formats, love::filesystem::FileData *data); ImageData(std::list formats, int width, int height); ImageData(std::list formats, int width, int height, void *data, bool own); virtual ~ImageData(); // Implements image::ImageData. virtual void encode(love::filesystem::File *f, ImageData::Format format); private: // Create imagedata. Initialize with data if not null. void create(int width, int height, void *data = 0); // Decode and load an encoded format. void decode(love::filesystem::FileData *data); // Image format handlers we can use for decoding and encoding. std::list formatHandlers; }; // ImageData } // magpie } // image } // love #endif // LOVE_IMAGE_MAGPIE_IMAGE_DATA_H love-0.9.1/src/modules/image/magpie/CompressedData.cpp0000644000000000000000000000431712316602166022661 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "CompressedData.h" #include "ddsHandler.h" namespace love { namespace image { namespace magpie { CompressedData::CompressedData(love::filesystem::FileData *filedata) { load(filedata); } CompressedData::~CompressedData() { delete[] data; } void CompressedData::load(love::filesystem::FileData *filedata) { // SubImage vector will be populated by a parser. std::vector parsedimages; Format texformat = FORMAT_UNKNOWN; uint8 *newdata = 0; size_t newdata_size = 0; if (ddsHandler::canParse(filedata)) newdata = ddsHandler::parse(filedata, parsedimages, newdata_size, texformat); if (newdata == 0) throw love::Exception("Could not parse compressed data."); if (texformat == FORMAT_UNKNOWN) { delete[] newdata; throw love::Exception("Could not parse compressed data: Unknown format."); } if (parsedimages.size() == 0 || newdata_size == 0) { delete[] newdata; throw love::Exception("Could not parse compressed data: No valid data?"); } // Make sure to clean up any previously loaded data. delete[] data; data = newdata; dataSize = newdata_size; dataImages = parsedimages; format = texformat; } bool CompressedData::isCompressed(love::filesystem::FileData *filedata) { if (ddsHandler::canParse(filedata)) return true; return false; } } // magpie } // image } // love love-0.9.1/src/modules/image/magpie/DevilHandler.cpp0000644000000000000000000001163112316602166022321 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "DevilHandler.h" // LOVE #include "common/Exception.h" #include "common/math.h" // DevIL #include namespace love { namespace image { namespace magpie { static inline void ilxClearErrors() { while (ilGetError() != IL_NO_ERROR); } DevilHandler::DevilHandler() : mutex(nullptr) { // There should only ever be one DevilHandler object (owned by the Image // module), so we can use the global initialization function here. ilInit(); ilEnable(IL_ORIGIN_SET); ilOriginFunc(IL_ORIGIN_UPPER_LEFT); } DevilHandler::~DevilHandler() { ilShutDown(); if (mutex) delete mutex; } bool DevilHandler::canDecode(love::filesystem::FileData * /*data*/) { // DevIL can decode a lot of formats... return true; } bool DevilHandler::canEncode(ImageData::Format format) { switch (format) { case ImageData::FORMAT_BMP: case ImageData::FORMAT_TGA: case ImageData::FORMAT_JPG: case ImageData::FORMAT_PNG: return true; default: return false; } return false; } DevilHandler::DecodedImage DevilHandler::decode(love::filesystem::FileData *data) { if (!mutex) mutex = love::thread::newMutex(); love::thread::Lock lock(mutex); ILuint image = ilGenImage(); ilBindImage(image); DecodedImage img; try { bool success = ilLoadL(IL_TYPE_UNKNOWN, (void *)data->getData(), (ILuint) data->getSize()) == IL_TRUE; if (!success) throw love::Exception("Could not decode image!"); img.width = ilGetInteger(IL_IMAGE_WIDTH); img.height = ilGetInteger(IL_IMAGE_HEIGHT); // Make sure the image is in RGBA format. ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE); // This should always be four. int bpp = ilGetInteger(IL_IMAGE_BPP); if (bpp != sizeof(pixel)) throw love::Exception("Could not convert image!"); img.size = (size_t) ilGetInteger(IL_IMAGE_SIZE_OF_DATA); try { img.data = new ILubyte[img.size]; } catch (std::bad_alloc &) { throw love::Exception("Out of memory."); } memcpy(img.data, ilGetData(), img.size); } catch (std::exception &e) { // catches love and std exceptions ilDeleteImage(image); throw love::Exception("%s", e.what()); } ilDeleteImage(image); return img; } DevilHandler::EncodedImage DevilHandler::encode(const DecodedImage &img, ImageData::Format format) { if (!mutex) mutex = love::thread::newMutex(); love::thread::Lock lock(mutex); ILuint tempimage = ilGenImage(); ilBindImage(tempimage); ilxClearErrors(); EncodedImage encodedimage; try { bool success = ilTexImage(img.width, img.height, 1, sizeof(pixel), IL_RGBA, IL_UNSIGNED_BYTE, img.data) == IL_TRUE; ILenum err = ilGetError(); ilxClearErrors(); if (!success) { if (err != IL_NO_ERROR) { switch (err) { case IL_ILLEGAL_OPERATION: throw love::Exception("Illegal operation"); case IL_INVALID_PARAM: throw love::Exception("Invalid parameters"); case IL_OUT_OF_MEMORY: throw love::Exception("Out of memory"); default: throw love::Exception("Unknown error (%d)", (int) err); } } throw love::Exception("Could not create image for the encoding!"); } ilRegisterOrigin(IL_ORIGIN_UPPER_LEFT); ILuint ilFormat; switch (format) { case ImageData::FORMAT_BMP: ilFormat = IL_BMP; break; case ImageData::FORMAT_TGA: ilFormat = IL_TGA; break; case ImageData::FORMAT_JPG: ilFormat = IL_JPG; break; case ImageData::FORMAT_PNG: default: // PNG is the default format ilFormat = IL_PNG; break; } encodedimage.size = ilSaveL(ilFormat, NULL, 0); if (!encodedimage.size) throw love::Exception("Could not encode image!"); try { encodedimage.data = new ILubyte[encodedimage.size]; } catch(std::bad_alloc &) { throw love::Exception("Out of memory"); } ilSaveL(ilFormat, encodedimage.data, encodedimage.size); } catch (std::exception &e) { // Catches love and std exceptions. ilDeleteImage(tempimage); delete[] encodedimage.data; encodedimage.data = 0; throw love::Exception("%s", e.what()); } ilDeleteImage(tempimage); return encodedimage; } } // magpie } // image } // love love-0.9.1/src/modules/image/wrap_CompressedData.cpp0000644000000000000000000000607712316602166022455 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_CompressedData.h" #include "common/wrap_Data.h" namespace love { namespace image { CompressedData *luax_checkcompresseddata(lua_State *L, int idx) { return luax_checktype(L, idx, "CompressedData", IMAGE_COMPRESSED_DATA_T); } int w_CompressedData_getWidth(lua_State *L) { CompressedData *t = luax_checkcompresseddata(L, 1); int miplevel = luaL_optinteger(L, 2, 1); int width = 0; EXCEPT_GUARD(width = t->getWidth(miplevel >= 1 ? miplevel - 1 : 0);) lua_pushinteger(L, width); return 1; } int w_CompressedData_getHeight(lua_State *L) { CompressedData *t = luax_checkcompresseddata(L, 1); int miplevel = luaL_optinteger(L, 2, 1); int height = 0; EXCEPT_GUARD(height = t->getHeight(miplevel >= 1 ? miplevel - 1 : 0);) lua_pushinteger(L, height); return 1; } int w_CompressedData_getDimensions(lua_State *L) { CompressedData *t = luax_checkcompresseddata(L, 1); int miplevel = luaL_optinteger(L, 2, 1); int width = 0, height = 0; EXCEPT_GUARD( width = t->getWidth(miplevel >= 1 ? miplevel - 1 : 0); height = t->getHeight(miplevel >= 1 ? miplevel - 1 : 0); ) lua_pushinteger(L, width); lua_pushinteger(L, height); return 2; } int w_CompressedData_getMipmapCount(lua_State *L) { CompressedData *t = luax_checkcompresseddata(L, 1); lua_pushinteger(L, t->getMipmapCount()); return 1; } int w_CompressedData_getFormat(lua_State *L) { CompressedData *t = luax_checkcompresseddata(L, 1); image::CompressedData::Format format = t->getFormat(); const char *str; if (image::CompressedData::getConstant(format, str)) lua_pushstring(L, str); else lua_pushstring(L, "unknown"); return 1; } static const luaL_Reg functions[] = { // Data { "getString", w_Data_getString }, { "getPointer", w_Data_getPointer }, { "getSize", w_Data_getSize }, { "getWidth", w_CompressedData_getWidth }, { "getHeight", w_CompressedData_getHeight }, { "getDimensions", w_CompressedData_getDimensions }, { "getMipmapCount", w_CompressedData_getMipmapCount }, { "getFormat", w_CompressedData_getFormat }, { 0, 0 }, }; extern "C" int luaopen_compresseddata(lua_State *L) { return luax_register_type(L, "CompressedData", functions); } } // image } // love love-0.9.1/src/modules/image/wrap_CompressedData.h0000644000000000000000000000277212316602166022120 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_WRAP_COMRESSED_DATA_H #define LOVE_IMAGE_WRAP_COMRESSED_DATA_H // LOVE #include "common/runtime.h" #include "CompressedData.h" namespace love { namespace image { CompressedData *luax_checkcompresseddata(lua_State *L, int idx); int w_CompressedData_getWidth(lua_State *L); int w_CompressedData_getHeight(lua_State *L); int w_CompressedData_getDimensions(lua_State *L); int w_CompressedData_getMipmapCount(lua_State *L); int w_CompressedData_getFormat(lua_State *L); extern "C" int luaopen_compresseddata(lua_State *L); } // image } // love #endif // LOVE_IMAGE_WRAP_COMRESSED_DATA_H love-0.9.1/src/modules/image/wrap_Image.h0000644000000000000000000000247312316602166020242 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_WRAP_IMAGE_H #define LOVE_IMAGE_WRAP_IMAGE_H // LOVE #include "Image.h" #include "wrap_ImageData.h" #include "wrap_CompressedData.h" namespace love { namespace image { int w_newImageData(lua_State *L); int w_newCompressedData(lua_State *L); int w_isCompressed(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_image(lua_State *L); } // image } // love #endif // LOVE_IMAGE_WRAP_IMAGE_H love-0.9.1/src/modules/image/CompressedData.h0000644000000000000000000000624112316602166021062 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_COMPRESSED_DATA_H #define LOVE_IMAGE_COMPRESSED_DATA_H // LOVE #include "common/Data.h" #include "common/StringMap.h" #include "common/int.h" // STL #include namespace love { namespace image { /** * CompressedData represents image data which is designed to be uploaded to the * GPU and rendered in its compressed form, without being un-compressed. * http://renderingpipeline.com/2012/07/texture-compression/ **/ class CompressedData : public Data { public: // Recognized compressed image data formats. enum Format { FORMAT_UNKNOWN, FORMAT_DXT1, FORMAT_DXT3, FORMAT_DXT5, FORMAT_BC4, FORMAT_BC4s, FORMAT_BC5, FORMAT_BC5s, FORMAT_MAX_ENUM }; // Compressed image data can have multiple mipmap levels, each represented // by a sub-image. struct SubImage { int width, height; size_t size; uint8 *data; // Should not have ownership of the data. }; CompressedData(); virtual ~CompressedData(); // Implements Data. virtual void *getData() const; virtual size_t getSize() const; /** * Gets the number of mipmaps in this Compressed Image Data. * Includes the base image level. **/ int getMipmapCount() const; /** * Gets the size in bytes of a sub-image at the specified mipmap level. **/ size_t getSize(int miplevel) const; /** * Gets the byte data of a sub-image at the specified mipmap level. **/ void *getData(int miplevel) const; /** * Gets the width of a sub-image at the specified mipmap level. **/ int getWidth(int miplevel) const; /** * Gets the height of a sub-image at the specified mipmap level. **/ int getHeight(int miplevel) const; /** * Gets the format of the compressed data. **/ Format getFormat() const; static bool getConstant(const char *in, Format &out); static bool getConstant(Format in, const char *&out); protected: Format format; // Single block of memory containing all of the sub-images. uint8 *data; size_t dataSize; // Texture info for each mipmap level. std::vector dataImages; void checkMipmapLevelExists(int miplevel) const; private: static StringMap::Entry formatEntries[]; static StringMap formats; }; // CompressedData } // image } // love #endif // LOVE_IMAGE_COMPRESSED_DATA_H love-0.9.1/src/modules/image/wrap_Image.cpp0000644000000000000000000000662612316602166020601 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Image.h" #include "common/Data.h" #include "common/StringMap.h" #include "magpie/Image.h" namespace love { namespace image { static Image *instance = 0; int w_newImageData(lua_State *L) { // Case 1: Integers. if (lua_isnumber(L, 1)) { int w = luaL_checkint(L, 1); int h = luaL_checkint(L, 2); if (w <= 0 || h <= 0) return luaL_error(L, "Invalid image size."); ImageData *t = 0; EXCEPT_GUARD(t = instance->newImageData(w, h);) luax_pushtype(L, "ImageData", IMAGE_IMAGE_DATA_T, t); return 1; } // Case 2: File(Data). // Convert to FileData, if necessary. if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T)) luax_convobj(L, 1, "filesystem", "newFileData"); love::filesystem::FileData *data = luax_checktype(L, 1, "FileData", FILESYSTEM_FILE_DATA_T); ImageData *t = 0; EXCEPT_GUARD(t = instance->newImageData(data);) luax_pushtype(L, "ImageData", IMAGE_IMAGE_DATA_T, t); return 1; } int w_newCompressedData(lua_State *L) { // Convert to FileData, if necessary. if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T)) luax_convobj(L, 1, "filesystem", "newFileData"); love::filesystem::FileData *data = luax_checktype(L, 1, "FileData", FILESYSTEM_FILE_DATA_T); CompressedData *t = 0; EXCEPT_GUARD(t = instance->newCompressedData(data);) luax_pushtype(L, "CompressedData", IMAGE_COMPRESSED_DATA_T, t); return 1; } int w_isCompressed(lua_State *L) { // Convert to FileData, if necessary. if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T)) luax_convobj(L, 1, "filesystem", "newFileData"); love::filesystem::FileData *data = luax_checktype(L, 1, "FileData", FILESYSTEM_FILE_DATA_T); bool compressed = false; EXCEPT_GUARD(compressed = instance->isCompressed(data);) luax_pushboolean(L, compressed); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "newImageData", w_newImageData }, { "newCompressedData", w_newCompressedData }, { "isCompressed", w_isCompressed }, { 0, 0 } }; static const lua_CFunction types[] = { luaopen_imagedata, luaopen_compresseddata, 0 }; extern "C" int luaopen_love_image(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new love::image::magpie::Image();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "image"; w.flags = MODULE_IMAGE_T; w.functions = functions; w.types = types; return luax_register_module(L, w); } } // image } // love love-0.9.1/src/modules/image/wrap_ImageData.cpp0000644000000000000000000001711312316602166021364 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_ImageData.h" #include "common/wrap_Data.h" #include "filesystem/File.h" namespace love { namespace image { ImageData *luax_checkimagedata(lua_State *L, int idx) { return luax_checktype(L, idx, "ImageData", IMAGE_IMAGE_DATA_T); } int w_ImageData_getWidth(lua_State *L) { ImageData *t = luax_checkimagedata(L, 1); lua_pushinteger(L, t->getWidth()); return 1; } int w_ImageData_getHeight(lua_State *L) { ImageData *t = luax_checkimagedata(L, 1); lua_pushinteger(L, t->getHeight()); return 1; } int w_ImageData_getDimensions(lua_State *L) { ImageData *t = luax_checkimagedata(L, 1); lua_pushinteger(L, t->getWidth()); lua_pushinteger(L, t->getHeight()); return 2; } int w_ImageData_getPixel(lua_State *L) { ImageData *t = luax_checkimagedata(L, 1); int x = luaL_checkint(L, 2); int y = luaL_checkint(L, 3); pixel c; EXCEPT_GUARD(c = t->getPixel(x, y);) lua_pushnumber(L, c.r); lua_pushnumber(L, c.g); lua_pushnumber(L, c.b); lua_pushnumber(L, c.a); return 4; } int w_ImageData_setPixel(lua_State *L) { ImageData *t = luax_checkimagedata(L, 1); int x = luaL_checkint(L, 2); int y = luaL_checkint(L, 3); pixel c; if (lua_istable(L, 4)) { for (int i = 1; i <= 4; i++) lua_rawgeti(L, 4, i); c.r = (unsigned char)luaL_checkinteger(L, -4); c.g = (unsigned char)luaL_checkinteger(L, -3); c.b = (unsigned char)luaL_checkinteger(L, -2); c.a = (unsigned char)luaL_optinteger(L, -1, 255); lua_pop(L, 4); } else { c.r = (unsigned char)luaL_checkinteger(L, 4); c.g = (unsigned char)luaL_checkinteger(L, 5); c.b = (unsigned char)luaL_checkinteger(L, 6); c.a = (unsigned char)luaL_optinteger(L, 7, 255); } EXCEPT_GUARD(t->setPixel(x, y, c);) return 0; } // Gets the result of luaL_where as a string. static std::string luax_getwhere(lua_State *L, int level) { luaL_where(L, level); const char *str = lua_tostring(L, -1); std::string where; if (str) where = str; lua_pop(L, 1); return where; } // Generates a Lua error with a nice error string when a return value of a // called function is not a number. static int luax_retnumbererror(lua_State *L, int level, int retnum, int ttype) { if (ttype == LUA_TNUMBER) return 0; const char *where = luax_getwhere(L, level).c_str(); const char *ttypename = lua_typename(L, ttype); return luaL_error(L, "%sbad return value #%d (number expected, got %s)", where, retnum, ttypename); } // ImageData:mapPixel. Not thread-safe! See the wrapper function below. static int w_ImageData_mapPixelUnsafe(lua_State *L) { ImageData *t = luax_checkimagedata(L, 1); luaL_checktype(L, 2, LUA_TFUNCTION); // No optints because we assume they're done in the wrapper function. int sx = (int) lua_tonumber(L, 3); int sy = (int) lua_tonumber(L, 4); int w = (int) lua_tonumber(L, 5); int h = (int) lua_tonumber(L, 6); if (!(t->inside(sx, sy) && t->inside(sx+w-1, sy+h-1))) return luaL_error(L, "Invalid rectangle dimensions."); // Cache-friendlier loop. :) for (int y = sy; y < sy+h; y++) { for (int x = sx; x < sx+w; x++) { lua_pushvalue(L, 2); lua_pushnumber(L, x); lua_pushnumber(L, y); pixel c = t->getPixel(x, y); lua_pushnumber(L, c.r); lua_pushnumber(L, c.g); lua_pushnumber(L, c.b); lua_pushnumber(L, c.a); lua_call(L, 6, 4); // If we used luaL_checkX / luaL_optX then we would get messy error // messages (e.g. Error: bad argument #-1 to '?'), so while this is // messier code, at least the errors are a bit more descriptive. // Treat the pixel as an array for less code duplication. :( unsigned char *parray = (unsigned char *) &c; for (int i = 0; i < 4; i++) { int ttype = lua_type(L, -4 + i); if (ttype == LUA_TNUMBER) parray[i] = (unsigned char) lua_tonumber(L, -4 + i); else if (i == 3 && (ttype == LUA_TNONE || ttype == LUA_TNIL)) parray[i] = 255; // Alpha component defaults to 255. else // Error (level 2 because this is function will be wrapped.) return luax_retnumbererror(L, 2, i + 1, ttype); } // Pop return values. lua_pop(L, 4); // We're locking the entire function, instead of each setPixel call. t->setPixelUnsafe(x, y, c); } } return 0; } // Thread-safe wrapper for the above function. int w_ImageData_mapPixel(lua_State *L) { ImageData *t = luax_checkimagedata(L, 1); luaL_checktype(L, 2, LUA_TFUNCTION); int sx = luaL_optint(L, 3, 0); int sy = luaL_optint(L, 4, 0); int w = luaL_optint(L, 5, t->getWidth()); int h = luaL_optint(L, 6, t->getHeight()); lua_pushcfunction(L, w_ImageData_mapPixelUnsafe); lua_pushvalue(L, 1); lua_pushvalue(L, 2); lua_pushinteger(L, sx); lua_pushinteger(L, sy); lua_pushinteger(L, w); lua_pushinteger(L, h); int ret = 0; // Lock this ImageData's mutex during the entire mapPixel. We pcall instead // of call because lua_error longjmp's without calling object destructors. { love::thread::Lock lock(t->getMutex()); ret = lua_pcall(L, 6, 0, 0); } if (ret != 0) return lua_error(L); return 0; } int w_ImageData_paste(lua_State *L) { ImageData *t = luax_checkimagedata(L, 1); ImageData *src = luax_checkimagedata(L, 2); int dx = luaL_checkint(L, 3); int dy = luaL_checkint(L, 4); int sx = luaL_optint(L, 5, 0); int sy = luaL_optint(L, 6, 0); int sw = luaL_optint(L, 7, src->getWidth()); int sh = luaL_optint(L, 8, src->getHeight()); t->paste((love::image::ImageData *)src, dx, dy, sx, sy, sw, sh); return 0; } int w_ImageData_encode(lua_State *L) { std::string ext; const char *fmt; ImageData::Format format = ImageData::FORMAT_MAX_ENUM; ImageData *t = luax_checkimagedata(L, 1); if (lua_isstring(L, 2)) luax_convobj(L, 2, "filesystem", "newFile"); love::filesystem::File *file = luax_checktype(L, 2, "File", FILESYSTEM_FILE_T); if (lua_isnoneornil(L, 3)) { ext = file->getExtension(); fmt = ext.c_str(); if (!ImageData::getConstant(fmt, format)) return luaL_error(L, "Invalid image format '%s'.", fmt); } else { fmt = luaL_checkstring(L, 3); if (!ImageData::getConstant(fmt, format)) return luaL_error(L, "Invalid image format '%s'.", fmt); } EXCEPT_GUARD(t->encode(file, format);) return 0; } static const luaL_Reg functions[] = { // Data { "getString", w_Data_getString }, { "getPointer", w_Data_getPointer }, { "getSize", w_Data_getSize }, { "getWidth", w_ImageData_getWidth }, { "getHeight", w_ImageData_getHeight }, { "getDimensions", w_ImageData_getDimensions }, { "getPixel", w_ImageData_getPixel }, { "setPixel", w_ImageData_setPixel }, { "mapPixel", w_ImageData_mapPixel }, { "paste", w_ImageData_paste }, { "encode", w_ImageData_encode }, { 0, 0 } }; extern "C" int luaopen_imagedata(lua_State *L) { return luax_register_type(L, "ImageData", functions); } } // image } // love love-0.9.1/src/modules/image/Image.h0000644000000000000000000000561112316602166017206 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_IMAGE_H #define LOVE_IMAGE_IMAGE_H // LOVE #include "common/config.h" #include "common/Module.h" #include "filesystem/File.h" #include "ImageData.h" #include "CompressedData.h" namespace love { namespace image { /** * This module is responsible for decoding files such as PNG, GIF, JPEG * into raw pixel data, as well as parsing compressed formats which are designed * to be uploaded to the GPU and rendered without being un-compressed. * This module does not know how to draw images on screen; only love.graphics * knows that. **/ class Image : public Module { public: /** * Destructor. **/ virtual ~Image() {} /** * Creates new ImageData from FileData. * @param data The FileData containing the encoded image data. * @return The new ImageData. **/ virtual ImageData *newImageData(love::filesystem::FileData *data) = 0; /** * Creates empty ImageData with the given size. * @param width The width of the ImageData. * @param height The height of the ImageData. * @return The new ImageData. **/ virtual ImageData *newImageData(int width, int height) = 0; /** * Creates empty ImageData with the given size. * @param width The width of the ImageData. * @param height The height of the ImageData. * @param data The data to load into the ImageData. * @param own Whether the new ImageData should take ownership of the data or * copy it. * @return The new ImageData. **/ virtual ImageData *newImageData(int width, int height, void *data, bool own = false) = 0; /** * Creates new CompressedData from FileData. * @param data The FileData containing the compressed image data. * @return The new CompressedData. **/ virtual CompressedData *newCompressedData(love::filesystem::FileData *data) = 0; /** * Determines whether a FileData is Compressed image data or not. * @param data The FileData to test. **/ virtual bool isCompressed(love::filesystem::FileData *data) = 0; }; // Image } // image } // love #endif // LOVE_IMAGE_IMAGE_H love-0.9.1/src/modules/image/ImageData.cpp0000644000000000000000000001017412316602166020333 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "ImageData.h" using love::thread::Lock; namespace love { namespace image { ImageData::ImageData() : data(0) { mutex = thread::newMutex(); } ImageData::~ImageData() { delete mutex; } size_t ImageData::getSize() const { return size_t(getWidth()*getHeight())*sizeof(pixel); } void *ImageData::getData() const { return data; } bool ImageData::inside(int x, int y) const { return x >= 0 && x < getWidth() && y >= 0 && y < getHeight(); } int ImageData::getWidth() const { return width; } int ImageData::getHeight() const { return height; } void ImageData::setPixel(int x, int y, pixel c) { if (!inside(x, y)) throw love::Exception("Attempt to set out-of-range pixel!"); Lock lock(mutex); pixel *pixels = (pixel *) getData(); pixels[y*getWidth()+x] = c; } void ImageData::setPixelUnsafe(int x, int y, love::image::pixel c) { if (!inside(x, y)) throw love::Exception("Attempt to set out-of-range pixel!"); pixel *pixels = (pixel *) getData(); pixels[y*getWidth()+x] = c; } pixel ImageData::getPixel(int x, int y) const { if (!inside(x, y)) throw love::Exception("Attempt to get out-of-range pixel!"); const pixel *pixels = (const pixel *) getData(); return pixels[y*getWidth()+x]; } void ImageData::paste(ImageData *src, int dx, int dy, int sx, int sy, int sw, int sh) { Lock lock2(src->mutex); Lock lock1(mutex); pixel *s = (pixel *)src->getData(); pixel *d = (pixel *)getData(); // Check bounds; if the data ends up completely out of bounds, get out early. if (sx >= src->getWidth() || sx + sw < 0 || sy >= src->getHeight() || sy + sh < 0 || dx >= getWidth() || dx + sw < 0 || dy >= getHeight() || dy + sh < 0) return; // Normalize values to the inside of both images. if (dx < 0) { sw += dx; sx -= dx; dx = 0; } if (dy < 0) { sh += dy; sy -= dy; dy = 0; } if (sx < 0) { sw += sx; dx -= sx; sx = 0; } if (sy < 0) { sh += sy; dy -= sy; sy = 0; } if (dx + sw > getWidth()) { sw = getWidth() - dx; } if (dy + sh > getHeight()) { sh = getHeight() - dy; } if (sx + sw > src->getWidth()) { sw = src->getWidth() - sx; } if (sy + sh > src->getHeight()) { sh = src->getHeight() - sy; } // If the dimensions match up, copy the entire memory stream in one go if (sw == getWidth() && getWidth() == src->getWidth() && sh == getHeight() && getHeight() == src->getHeight()) { memcpy(d, s, sizeof(pixel) * sw * sh); } else if (sw > 0) { // Otherwise, copy each row individually. for (int i = 0; i < sh; i++) memcpy(d + dx + (i + dy) * getWidth(), s + sx + (i + sy) * src->getWidth(), sizeof(pixel) * sw); } } love::thread::Mutex *ImageData::getMutex() const { return mutex; } bool ImageData::getConstant(const char *in, ImageData::Format &out) { return formats.find(in, out); } bool ImageData::getConstant(ImageData::Format in, const char *&out) { return formats.find(in, out); } StringMap::Entry ImageData::formatEntries[] = { {"tga", ImageData::FORMAT_TGA}, {"bmp", ImageData::FORMAT_BMP}, {"jpg", ImageData::FORMAT_JPG}, {"png", ImageData::FORMAT_PNG}, }; StringMap ImageData::formats(ImageData::formatEntries, sizeof(ImageData::formatEntries)); } // image } // love love-0.9.1/src/modules/image/ImageData.h0000644000000000000000000000752112316602166020002 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_IMAGE_DATA_H #define LOVE_IMAGE_IMAGE_DATA_H // LOVE #include "common/Data.h" #include "filesystem/File.h" #include "thread/threads.h" using love::thread::Mutex; namespace love { namespace image { // Pixel format structure. struct pixel { // Red, green, blue, alpha. unsigned char r, g, b, a; }; /** * Represents raw pixel data. **/ class ImageData : public Data { public: enum Format { FORMAT_TGA = 1, FORMAT_BMP, FORMAT_JPG, FORMAT_PNG, FORMAT_MAX_ENUM }; ImageData(); /** * Destructor. **/ virtual ~ImageData(); static bool getConstant(const char *in, Format &out); static bool getConstant(Format in, const char *&out); /** * Paste part of one ImageData onto another. The subregion defined by the top-left * corner (sx, sy) and the size (sw,sh) will be pasted to (dx,dy) in this ImageData. * @param dx The destination x-coordinate. * @param dy The destination y-coordinate. * @param sx The source x-coordinate. * @param sy The source y-coordinate. * @param sw The source width. * @param sh The source height. **/ void paste(ImageData *src, int dx, int dy, int sx, int sy, int sw, int sh); /** * Checks whether a position is inside this ImageData. Useful for checking bounds. * @param x The position along the x-axis. * @param y The position along the y-axis. **/ bool inside(int x, int y) const; /** * Gets the width of this ImageData. * @return The width of this ImageData. **/ int getWidth() const; /** * Gets the height of this ImageData. * @return The height of this ImageData. **/ int getHeight() const; /** * Sets the pixel at location (x,y). * @param x The location along the x-axis. * @param y The location along the y-axis. * @param p The color to use for the given location. **/ void setPixel(int x, int y, pixel p); /** * Sets the pixel at location (x,y). * Not thread-safe! **/ void setPixelUnsafe(int x, int y, pixel p); /** * Gets the pixel at location (x,y). * @param x The location along the x-axis. * @param y The location along the y-axis. * @return The color for the given location. **/ pixel getPixel(int x, int y) const; /** * Encodes raw pixel data into a given format. * @param f The file to save the encoded image data to. * @param format The format of the encoded data. **/ virtual void encode(love::filesystem::File *f, Format format) = 0; love::thread::Mutex *getMutex() const; // Implements Data. virtual void *getData() const; virtual size_t getSize() const; protected: // The width of the image data. int width; // The height of the image data. int height; // The actual data. unsigned char *data; // We need to be thread-safe // so we lock when we're accessing our // data Mutex *mutex; private: static StringMap::Entry formatEntries[]; static StringMap formats; }; // ImageData } // image } // love #endif // LOVE_IMAGE_IMAGE_DATA_H love-0.9.1/src/modules/image/CompressedData.cpp0000644000000000000000000000561212316602166021416 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "CompressedData.h" namespace love { namespace image { CompressedData::CompressedData() : format(FORMAT_UNKNOWN) , data(0) , dataSize(0) { } CompressedData::~CompressedData() { } size_t CompressedData::getSize() const { return dataSize; } void *CompressedData::getData() const { return data; } int CompressedData::getMipmapCount() const { return dataImages.size(); } size_t CompressedData::getSize(int miplevel) const { checkMipmapLevelExists(miplevel); return dataImages[miplevel].size; } void *CompressedData::getData(int miplevel) const { checkMipmapLevelExists(miplevel); return (void *) &dataImages[miplevel].data[0]; } int CompressedData::getWidth(int miplevel) const { checkMipmapLevelExists(miplevel); return dataImages[miplevel].width; } int CompressedData::getHeight(int miplevel) const { checkMipmapLevelExists(miplevel); return dataImages[miplevel].height; } CompressedData::Format CompressedData::getFormat() const { return format; } void CompressedData::checkMipmapLevelExists(int miplevel) const { if (miplevel < 0 || miplevel >= (int) dataImages.size()) throw love::Exception("Mipmap level %d does not exist", miplevel); } bool CompressedData::getConstant(const char *in, CompressedData::Format &out) { return formats.find(in, out); } bool CompressedData::getConstant(CompressedData::Format in, const char *&out) { return formats.find(in, out); } StringMap::Entry CompressedData::formatEntries[] = { {"unknown", CompressedData::FORMAT_UNKNOWN}, {"dxt1", CompressedData::FORMAT_DXT1}, {"dxt3", CompressedData::FORMAT_DXT3}, {"dxt5", CompressedData::FORMAT_DXT5}, {"bc4", CompressedData::FORMAT_BC4}, {"bc4s", CompressedData::FORMAT_BC4s}, {"bc5", CompressedData::FORMAT_BC5}, {"bc5s", CompressedData::FORMAT_BC5s}, }; StringMap CompressedData::formats(CompressedData::formatEntries, sizeof(CompressedData::formatEntries)); } // image } // love love-0.9.1/src/modules/image/wrap_ImageData.h0000644000000000000000000000305512316602166021031 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_IMAGE_WRAP_IMAGE_DATA_H #define LOVE_IMAGE_WRAP_IMAGE_DATA_H // LOVE #include "common/runtime.h" #include "ImageData.h" namespace love { namespace image { ImageData *luax_checkimagedata(lua_State *L, int idx); int w_ImageData_getWidth(lua_State *L); int w_ImageData_getHeight(lua_State *L); int w_ImageData_getDimensions(lua_State *L); int w_ImageData_getPixel(lua_State *L); int w_ImageData_setPixel(lua_State *L); int w_ImageData_mapPixel(lua_State *L); int w_ImageData_paste(lua_State *L); int w_ImageData_encode(lua_State *L); extern "C" int luaopen_imagedata(lua_State *L); } // image } // love #endif // LOVE_IMAGE_WRAP_IMAGE_DATA_H love-0.9.1/src/modules/mouse/0000755000000000000000000000000012316602462016055 5ustar00rootroot00000000000000love-0.9.1/src/modules/mouse/Cursor.cpp0000644000000000000000000000453312316602166020044 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Cursor.h" namespace love { namespace mouse { Cursor::~Cursor() { } bool Cursor::getConstant(const char *in, SystemCursor &out) { return systemCursors.find(in, out); } bool Cursor::getConstant(SystemCursor in, const char *&out) { return systemCursors.find(in, out); } bool Cursor::getConstant(const char *in, CursorType &out) { return types.find(in, out); } bool Cursor::getConstant(CursorType in, const char *&out) { return types.find(in, out); } StringMap::Entry Cursor::systemCursorEntries[] = { {"arrow", Cursor::CURSOR_ARROW}, {"ibeam", Cursor::CURSOR_IBEAM}, {"wait", Cursor::CURSOR_WAIT}, {"crosshair", Cursor::CURSOR_CROSSHAIR}, {"waitarrow", Cursor::CURSOR_WAITARROW}, {"sizenwse", Cursor::CURSOR_SIZENWSE}, {"sizenesw", Cursor::CURSOR_SIZENESW}, {"sizewe", Cursor::CURSOR_SIZEWE}, {"sizens", Cursor::CURSOR_SIZENS}, {"sizeall", Cursor::CURSOR_SIZEALL}, {"no", Cursor::CURSOR_NO}, {"hand", Cursor::CURSOR_HAND}, }; StringMap Cursor::systemCursors(Cursor::systemCursorEntries, sizeof(Cursor::systemCursorEntries)); StringMap::Entry Cursor::typeEntries[] = { {"system", Cursor::CURSORTYPE_SYSTEM}, {"image", Cursor::CURSORTYPE_IMAGE}, }; StringMap Cursor::types(Cursor::typeEntries, sizeof(Cursor::typeEntries)); } // mouse } // love love-0.9.1/src/modules/mouse/Mouse.h0000644000000000000000000000450412316602166017322 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MOUSE_MOUSE_H #define LOVE_MOUSE_MOUSE_H // LOVE #include "Cursor.h" #include "common/Module.h" #include "common/StringMap.h" #include "image/ImageData.h" namespace love { namespace mouse { class Mouse : public Module { public: enum Button { BUTTON_INVALID, BUTTON_LEFT, BUTTON_MIDDLE, BUTTON_RIGHT, BUTTON_X1, BUTTON_X2, BUTTON_WHEELUP, BUTTON_WHEELDOWN, BUTTON_MAX_ENUM }; virtual ~Mouse() {} virtual Cursor *newCursor(love::image::ImageData *data, int hotx, int hoty) = 0; virtual Cursor *getSystemCursor(Cursor::SystemCursor cursortype) = 0; virtual void setCursor(Cursor *cursor) = 0; virtual void setCursor() = 0; virtual Cursor *getCursor() const = 0; virtual int getX() const = 0; virtual int getY() const = 0; virtual void getPosition(int &x, int &y) const = 0; virtual void setX(int x) = 0; virtual void setY(int y) = 0; virtual void setPosition(int x, int y) = 0; virtual void setVisible(bool visible) = 0; virtual bool isDown(Button *buttonlist) const = 0; virtual bool isVisible() const = 0; virtual void setGrabbed(bool grab) = 0; virtual bool isGrabbed() const = 0; static bool getConstant(const char *in, Button &out); static bool getConstant(Button in, const char *&out); private: static StringMap::Entry buttonEntries[]; static StringMap buttons; }; // Mouse } // mouse } // love #endif // LOVE_MOUSE_MOUSE_H love-0.9.1/src/modules/mouse/wrap_Mouse.cpp0000644000000000000000000001142512316602166020706 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Mouse.h" #include "wrap_Cursor.h" #include "common/config.h" #include "sdl/Mouse.h" namespace love { namespace mouse { static Mouse *instance = 0; int w_newCursor(lua_State *L) { Cursor *cursor = 0; if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T) || luax_istype(L, 1, FILESYSTEM_FILE_DATA_T)) luax_convobj(L, 1, "image", "newImageData"); love::image::ImageData *data = luax_checktype(L, 1, "ImageData", IMAGE_IMAGE_DATA_T); int hotx = luaL_optint(L, 2, 0); int hoty = luaL_optint(L, 3, 0); EXCEPT_GUARD(cursor = instance->newCursor(data, hotx, hoty);) luax_pushtype(L, "Cursor", MOUSE_CURSOR_T, cursor); return 1; } int w_getSystemCursor(lua_State *L) { const char *str = luaL_checkstring(L, 1); Cursor::SystemCursor systemCursor; if (!Cursor::getConstant(str, systemCursor)) return luaL_error(L, "Invalid system cursor type: %s", str); Cursor *cursor = 0; EXCEPT_GUARD(cursor = instance->getSystemCursor(systemCursor);) cursor->retain(); luax_pushtype(L, "Cursor", MOUSE_CURSOR_T, cursor); return 1; } int w_setCursor(lua_State *L) { // Revert to the default system cursor if no argument is given. if (lua_isnoneornil(L, 1)) { instance->setCursor(); return 0; } Cursor *cursor = luax_checkcursor(L, 1); instance->setCursor(cursor); return 0; } int w_getCursor(lua_State *L) { Cursor *cursor = instance->getCursor(); if (cursor) { cursor->retain(); luax_pushtype(L, "Cursor", MOUSE_CURSOR_T, cursor); } else lua_pushnil(L); return 1; } int w_getX(lua_State *L) { lua_pushnumber(L, instance->getX()); return 1; } int w_getY(lua_State *L) { lua_pushnumber(L, instance->getY()); return 1; } int w_getPosition(lua_State *L) { int x, y; instance->getPosition(x, y); lua_pushinteger(L, x); lua_pushinteger(L, y); return 2; } int w_setX(lua_State *L) { int x = luaL_checkint(L, 1); instance->setX(x); return 0; } int w_setY(lua_State *L) { int y = luaL_checkint(L, 1); instance->setY(y); return 0; } int w_setPosition(lua_State *L) { int x = luaL_checkint(L, 1); int y = luaL_checkint(L, 2); instance->setPosition(x, y); return 0; } int w_isDown(lua_State *L) { Mouse::Button b; unsigned int num = lua_gettop(L); Mouse::Button *buttonlist = new Mouse::Button[num+1]; unsigned int counter = 0; for (unsigned int i = 0; i < num; i++) { if (Mouse::getConstant(luaL_checkstring(L, i+1), b)) buttonlist[counter++] = b; } buttonlist[counter] = Mouse::BUTTON_MAX_ENUM; luax_pushboolean(L, instance->isDown(buttonlist)); delete[] buttonlist; return 1; } int w_setVisible(lua_State *L) { bool b = luax_toboolean(L, 1); instance->setVisible(b); return 0; } int w_isVisible(lua_State *L) { luax_pushboolean(L, instance->isVisible()); return 1; } int w_setGrabbed(lua_State *L) { bool b = luax_toboolean(L, 1); instance->setGrabbed(b); return 0; } int w_isGrabbed(lua_State *L) { luax_pushboolean(L, instance->isGrabbed()); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "newCursor", w_newCursor }, { "getSystemCursor", w_getSystemCursor }, { "setCursor", w_setCursor }, { "getCursor", w_getCursor }, { "getX", w_getX }, { "getY", w_getY }, { "setX", w_setX }, { "setY", w_setY }, { "setPosition", w_setPosition }, { "isDown", w_isDown }, { "setVisible", w_setVisible }, { "isVisible", w_isVisible }, { "getPosition", w_getPosition }, { "setGrabbed", w_setGrabbed }, { "isGrabbed", w_isGrabbed }, { 0, 0 } }; // Types for this module. static const lua_CFunction types[] = { luaopen_cursor, 0, }; extern "C" int luaopen_love_mouse(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new love::mouse::sdl::Mouse();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "mouse"; w.flags = MODULE_T; w.functions = functions; w.types = types; return luax_register_module(L, w); } } // mouse } // love love-0.9.1/src/modules/mouse/Mouse.cpp0000644000000000000000000000307012316602166017652 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Mouse.h" namespace love { namespace mouse { bool Mouse::getConstant(const char *in, Button &out) { return buttons.find(in, out); } bool Mouse::getConstant(Button in, const char *&out) { return buttons.find(in, out); } StringMap::Entry Mouse::buttonEntries[] = { {"l", Mouse::BUTTON_LEFT}, {"m", Mouse::BUTTON_MIDDLE}, {"r", Mouse::BUTTON_RIGHT}, {"wu", Mouse::BUTTON_WHEELUP}, {"wd", Mouse::BUTTON_WHEELDOWN}, {"x1", Mouse::BUTTON_X1}, {"x2", Mouse::BUTTON_X2}, }; StringMap Mouse::buttons(Mouse::buttonEntries, sizeof(Mouse::buttonEntries)); } // mouse } // love love-0.9.1/src/modules/mouse/wrap_Mouse.h0000644000000000000000000000317612316602166020357 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MOUSE_WRAP_MOUSE_H #define LOVE_MOUSE_WRAP_MOUSE_H // LOVE #include "common/runtime.h" #include "common/config.h" namespace love { namespace mouse { int w_newCursor(lua_State *L); int w_getSystemCursor(lua_State *L); int w_setCursor(lua_State *L); int w_getCursor(lua_State *L); int w_getX(lua_State *L); int w_getY(lua_State *L); int w_getPosition(lua_State *L); int w_setX(lua_State *L); int w_setY(lua_State *L); int w_setPosition(lua_State *L); int w_isDown(lua_State *L); int w_setVisible(lua_State *L); int w_isVisible(lua_State *L); int w_setGrabbed(lua_State *L); int w_isGrabbed(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_mouse(lua_State *L); } // mouse } // love #endif // LOVE_MOUSE_WRAP_MOUSE_H love-0.9.1/src/modules/mouse/wrap_Cursor.cpp0000644000000000000000000000344412316602166021075 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Cursor.h" namespace love { namespace mouse { Cursor *luax_checkcursor(lua_State *L, int idx) { return luax_checktype(L, idx, "Cursor", MOUSE_CURSOR_T); } int w_Cursor_getType(lua_State *L) { Cursor *cursor = luax_checkcursor(L, 1); Cursor::CursorType ctype = cursor->getType(); const char *typestr = 0; if (ctype == Cursor::CURSORTYPE_IMAGE) mouse::Cursor::getConstant(ctype, typestr); else if (ctype == Cursor::CURSORTYPE_SYSTEM) { Cursor::SystemCursor systype = cursor->getSystemType(); mouse::Cursor::getConstant(systype, typestr); } if (!typestr) return luaL_error(L, "Unknown cursor type."); lua_pushstring(L, typestr); return 1; } static const luaL_Reg functions[] = { { "getType", w_Cursor_getType }, { 0, 0 }, }; extern "C" int luaopen_cursor(lua_State *L) { return luax_register_type(L, "Cursor", functions); } } // mouse } // love love-0.9.1/src/modules/mouse/Cursor.h0000644000000000000000000000474712316602166017520 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MOUSE_CURSOR_H #define LOVE_MOUSE_CURSOR_H // LOVE #include "image/ImageData.h" #include "common/Object.h" #include "common/StringMap.h" namespace love { namespace mouse { class Cursor : public Object { public: // Types of system cursors. enum SystemCursor { CURSOR_ARROW, CURSOR_IBEAM, CURSOR_WAIT, CURSOR_CROSSHAIR, CURSOR_WAITARROW, CURSOR_SIZENWSE, CURSOR_SIZENESW, CURSOR_SIZEWE, CURSOR_SIZENS, CURSOR_SIZEALL, CURSOR_NO, CURSOR_HAND, CURSOR_MAX_ENUM }; enum CursorType { CURSORTYPE_SYSTEM, CURSORTYPE_IMAGE, CURSORTYPE_MAX_ENUM }; virtual ~Cursor(); /** * Returns a pointer to the implementation-dependent handle of this Cursor. **/ virtual void *getHandle() const = 0; /** * Returns whether this Cursor is system-defined or a custom image. **/ virtual CursorType getType() const = 0; /** * Returns the type type of system cursor used, if this Cursor is using a * system-defined image. **/ virtual SystemCursor getSystemType() const = 0; static bool getConstant(const char *in, SystemCursor &out); static bool getConstant(SystemCursor in, const char *&out); static bool getConstant(const char *in, CursorType &out); static bool getConstant(CursorType in, const char *&out); private: static StringMap::Entry systemCursorEntries[]; static StringMap systemCursors; static StringMap::Entry typeEntries[]; static StringMap types; }; } // mouse } // love #endif // LOVE_MOUSE_CURSOR_H love-0.9.1/src/modules/mouse/wrap_Cursor.h0000644000000000000000000000237112316602166020540 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MOUSE_WRAP_CURSOR_H #define LOVE_MOUSE_WRAP_CURSOR_H // LOVE #include "common/runtime.h" #include "Cursor.h" namespace love { namespace mouse { Cursor *luax_checkcursor(lua_State *L, int idx); int w_Cursor_getType(lua_State *L); extern "C" int luaopen_cursor(lua_State *L); } // mouse } // love #endif // LOVE_MOUSE_WRAP_CURSOR_H love-0.9.1/src/modules/mouse/sdl/0000755000000000000000000000000012316602462016637 5ustar00rootroot00000000000000love-0.9.1/src/modules/mouse/sdl/Cursor.cpp0000644000000000000000000000660512316602166020630 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "Cursor.h" #include "common/config.h" namespace love { namespace mouse { namespace sdl { Cursor::Cursor(image::ImageData *data, int hotx, int hoty) : cursor(0) , type(CURSORTYPE_IMAGE) , systemType(CURSOR_MAX_ENUM) { Uint32 rmask, gmask, bmask, amask; #ifdef LOVE_BIG_ENDIAN rmask = 0xFF000000; gmask = 0x00FF0000; bmask = 0x0000FF00; amask = 0x000000FF; #else rmask = 0x000000FF; gmask = 0x0000FF00; bmask = 0x00FF0000; amask = 0xFF000000; #endif int w = data->getWidth(); int h = data->getHeight(); int pitch = w * 4; SDL_Surface *surface = SDL_CreateRGBSurfaceFrom(data->getData(), w, h, 32, pitch, rmask, gmask, bmask, amask); if (!surface) throw love::Exception("Cannot create cursor: out of memory!"); cursor = SDL_CreateColorCursor(surface, hotx, hoty); SDL_FreeSurface(surface); if (!cursor) throw love::Exception("Cannot create cursor: %s", SDL_GetError()); } Cursor::Cursor(mouse::Cursor::SystemCursor cursortype) : cursor(0) , type(CURSORTYPE_SYSTEM) , systemType(cursortype) { SDL_SystemCursor sdlcursortype; if (systemCursors.find(cursortype, sdlcursortype)) cursor = SDL_CreateSystemCursor(sdlcursortype); else throw love::Exception("Cannot create system cursor: invalid type."); if (!cursor) throw love::Exception("Cannot create system cursor: %s", SDL_GetError()); } Cursor::~Cursor() { if (cursor) SDL_FreeCursor(cursor); } void *Cursor::getHandle() const { return cursor; } Cursor::CursorType Cursor::getType() const { return type; } Cursor::SystemCursor Cursor::getSystemType() const { return systemType; } EnumMap::Entry Cursor::systemCursorEntries[] = { {Cursor::CURSOR_ARROW, SDL_SYSTEM_CURSOR_ARROW}, {Cursor::CURSOR_IBEAM, SDL_SYSTEM_CURSOR_IBEAM}, {Cursor::CURSOR_WAIT, SDL_SYSTEM_CURSOR_WAIT}, {Cursor::CURSOR_CROSSHAIR, SDL_SYSTEM_CURSOR_CROSSHAIR}, {Cursor::CURSOR_WAITARROW, SDL_SYSTEM_CURSOR_WAITARROW}, {Cursor::CURSOR_SIZENWSE, SDL_SYSTEM_CURSOR_SIZENWSE}, {Cursor::CURSOR_SIZENESW, SDL_SYSTEM_CURSOR_SIZENESW}, {Cursor::CURSOR_SIZEWE, SDL_SYSTEM_CURSOR_SIZEWE}, {Cursor::CURSOR_SIZENS, SDL_SYSTEM_CURSOR_SIZENS}, {Cursor::CURSOR_SIZEALL, SDL_SYSTEM_CURSOR_SIZEALL}, {Cursor::CURSOR_NO, SDL_SYSTEM_CURSOR_NO}, {Cursor::CURSOR_HAND, SDL_SYSTEM_CURSOR_HAND}, }; EnumMap Cursor::systemCursors(Cursor::systemCursorEntries, sizeof(Cursor::systemCursorEntries)); } // sdl } // mouse } // love love-0.9.1/src/modules/mouse/sdl/Mouse.h0000644000000000000000000000370412316602166020105 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MOUSE_SDL_MOUSE_H #define LOVE_MOUSE_SDL_MOUSE_H // LOVE #include "mouse/Mouse.h" #include "Cursor.h" // C++ #include namespace love { namespace mouse { namespace sdl { class Mouse : public love::mouse::Mouse { public: // Implements Module. const char *getName() const; Mouse(); ~Mouse(); love::mouse::Cursor *newCursor(love::image::ImageData *data, int hotx, int hoty); love::mouse::Cursor *getSystemCursor(Cursor::SystemCursor cursortype); void setCursor(love::mouse::Cursor *cursor); void setCursor(); love::mouse::Cursor *getCursor() const; int getX() const; int getY() const; void getPosition(int &x, int &y) const; void setX(int x); void setY(int y); void setPosition(int x, int y); void setVisible(bool visible); bool isDown(Button *buttonlist) const; bool isVisible() const; void setGrabbed(bool grab); bool isGrabbed() const; private: love::mouse::Cursor *curCursor; std::map systemCursors; }; // Mouse } // sdl } // mouse } // love #endif // LOVE_MOUSE_SDL_MOUSE_H love-0.9.1/src/modules/mouse/sdl/Mouse.cpp0000644000000000000000000001076212316602166020442 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "Mouse.h" #include "window/sdl/Window.h" // SDL #include namespace love { namespace mouse { namespace sdl { // SDL reports mouse coordinates in the window coordinate system in OS X, but // we want them in pixel coordinates (may be different with high-DPI enabled.) static void windowToPixelCoords(int *x, int *y) { double scale = 1.0; love::window::Window *window = love::window::sdl::Window::getSingleton(); if (window != nullptr) scale = window->getPixelScale(); if (x != nullptr) *x = int(double(*x) * scale); if (y != nullptr) *y = int(double(*y) * scale); } // And vice versa for setting mouse coordinates. static void pixelToWindowCoords(int *x, int *y) { double scale = 1.0; love::window::Window *window = love::window::sdl::Window::getSingleton(); if (window != nullptr) scale = window->getPixelScale(); if (x != nullptr) *x = int(double(*x) / scale); if (y != nullptr) *y = int(double(*y) / scale); } const char *Mouse::getName() const { return "love.mouse.sdl"; } Mouse::Mouse() : curCursor(0) { } Mouse::~Mouse() { if (curCursor) setCursor(); for (auto it = systemCursors.begin(); it != systemCursors.end(); ++it) it->second->release(); } love::mouse::Cursor *Mouse::newCursor(love::image::ImageData *data, int hotx, int hoty) { return new Cursor(data, hotx, hoty); } love::mouse::Cursor *Mouse::getSystemCursor(Cursor::SystemCursor cursortype) { Cursor *cursor = NULL; auto it = systemCursors.find(cursortype); if (it != systemCursors.end()) cursor = it->second; else { cursor = new Cursor(cursortype); systemCursors[cursortype] = cursor; } return cursor; } void Mouse::setCursor(love::mouse::Cursor *cursor) { Object::AutoRelease cursorrelease(curCursor); curCursor = cursor; curCursor->retain(); SDL_SetCursor((SDL_Cursor *) cursor->getHandle()); } void Mouse::setCursor() { Object::AutoRelease cursorrelease(curCursor); curCursor = NULL; SDL_SetCursor(SDL_GetDefaultCursor()); } love::mouse::Cursor *Mouse::getCursor() const { return curCursor; } int Mouse::getX() const { int x; SDL_GetMouseState(&x, nullptr); windowToPixelCoords(&x, nullptr); return x; } int Mouse::getY() const { int y; SDL_GetMouseState(nullptr, &y); windowToPixelCoords(nullptr, &y); return y; } void Mouse::getPosition(int &x, int &y) const { int mx, my; SDL_GetMouseState(&mx, &my); windowToPixelCoords(&mx, &my); x = mx; y = my; } void Mouse::setPosition(int x, int y) { love::window::Window *window = love::window::sdl::Window::getSingleton(); SDL_Window *handle = nullptr; if (window) handle = (SDL_Window *) window->getHandle(); pixelToWindowCoords(&x, &y); SDL_WarpMouseInWindow(handle, x, y); } void Mouse::setX(int x) { int y = getY(); setPosition(x, y); } void Mouse::setY(int y) { int x = getX(); setPosition(x, y); } void Mouse::setVisible(bool visible) { SDL_ShowCursor(visible ? SDL_ENABLE : SDL_DISABLE); } bool Mouse::isDown(Button *buttonlist) const { Uint32 buttonstate = SDL_GetMouseState(0, 0); for (Button button = *buttonlist; button != BUTTON_MAX_ENUM; button = *(++buttonlist)) { if (buttonstate & SDL_BUTTON(button)) return true; } return false; } bool Mouse::isVisible() const { return SDL_ShowCursor(SDL_QUERY) == SDL_ENABLE; } void Mouse::setGrabbed(bool grab) { love::window::Window *window = love::window::sdl::Window::getSingleton(); if (window) window->setMouseGrab(grab); } bool Mouse::isGrabbed() const { love::window::Window *window = love::window::sdl::Window::getSingleton(); if (window) return window->isMouseGrabbed(); else return false; } } // sdl } // mouse } // love love-0.9.1/src/modules/mouse/sdl/Cursor.h0000644000000000000000000000325212316602166020270 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_MOUSE_SDL_CURSOR_H #define LOVE_MOUSE_SDL_CURSOR_H // LOVE #include "mouse/Cursor.h" #include "common/EnumMap.h" // SDL #include namespace love { namespace mouse { namespace sdl { class Cursor : public love::mouse::Cursor { public: Cursor(image::ImageData *imageData, int hotx, int hoty); Cursor(SystemCursor cursortype); ~Cursor(); void *getHandle() const; CursorType getType() const; SystemCursor getSystemType() const; private: SDL_Cursor *cursor; CursorType type; SystemCursor systemType; static EnumMap::Entry systemCursorEntries[]; static EnumMap systemCursors; }; } // sdl } // mouse } // love #endif // LOVE_MOUSE_SDL_CURSOR_H love-0.9.1/src/modules/love/0000755000000000000000000000000012316602462015672 5ustar00rootroot00000000000000love-0.9.1/src/modules/love/love.h0000644000000000000000000000244412316602166017015 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_LOVE_H #define LOVE_LOVE_H // LOVE #include "common/config.h" // Forward declare lua_State. struct lua_State; #ifdef __cplusplus extern "C" { #endif LOVE_EXPORT const char *love_version(); LOVE_EXPORT const char *love_codename(); LOVE_EXPORT int luaopen_love(lua_State *L); LOVE_EXPORT int luaopen_love_boot(lua_State *L); #ifdef __cplusplus } #endif #endif // LOVE_LOVE_H love-0.9.1/src/modules/love/love.cpp0000644000000000000000000001653512316602166017356 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "common/config.h" #include "common/version.h" #include "common/runtime.h" #include "love.h" #ifdef LOVE_WINDOWS #include #endif // LOVE_WINDOWS #ifdef LOVE_LEGENDARY_CONSOLE_IO_HACK #include #include #include #include #endif // LOVE_LEGENDARY_CONSOLE_IO_HACK // Libraries. #ifdef LOVE_ENABLE_LUASOCKET # include "libraries/luasocket/luasocket.h" #endif #ifdef LOVE_ENABLE_ENET # include "libraries/enet/lua-enet.h" #endif // Scripts #include "scripts/boot.lua.h" // All modules define a c-accessible luaopen // so let's make use of those, instead // of addressing implementations directly. extern "C" { #if defined(LOVE_ENABLE_AUDIO) extern int luaopen_love_audio(lua_State*); #endif #if defined(LOVE_ENABLE_EVENT) extern int luaopen_love_event(lua_State*); #endif #if defined(LOVE_ENABLE_FILESYSTEM) extern int luaopen_love_filesystem(lua_State*); #endif #if defined(LOVE_ENABLE_FONT) extern int luaopen_love_font(lua_State*); #endif #if defined(LOVE_ENABLE_GRAPHICS) extern int luaopen_love_graphics(lua_State*); #endif #if defined(LOVE_ENABLE_IMAGE) extern int luaopen_love_image(lua_State*); #endif #if defined(LOVE_ENABLE_JOYSTICK) extern int luaopen_love_joystick(lua_State*); #endif #if defined(LOVE_ENABLE_KEYBOARD) extern int luaopen_love_keyboard(lua_State*); #endif #if defined(LOVE_ENABLE_MATH) extern int luaopen_love_math(lua_State*); #endif #if defined(LOVE_ENABLE_MOUSE) extern int luaopen_love_mouse(lua_State*); #endif #if defined(LOVE_ENABLE_PHYSICS) extern int luaopen_love_physics(lua_State*); #endif #if defined(LOVE_ENABLE_SOUND) extern int luaopen_love_sound(lua_State*); #endif #if defined(LOVE_ENABLE_SYSTEM) extern int luaopen_love_system(lua_State*); #endif #if defined(LOVE_ENABLE_TIMER) extern int luaopen_love_timer(lua_State*); #endif #if defined(LOVE_ENABLE_THREAD) extern int luaopen_love_thread(lua_State*); #endif #if defined(LOVE_ENABLE_WINDOW) extern int luaopen_love_window(lua_State*); #endif extern int luaopen_love_boot(lua_State*); } static const luaL_Reg modules[] = { #if defined(LOVE_ENABLE_AUDIO) { "love.audio", luaopen_love_audio }, #endif #if defined(LOVE_ENABLE_EVENT) { "love.event", luaopen_love_event }, #endif #if defined(LOVE_ENABLE_FILESYSTEM) { "love.filesystem", luaopen_love_filesystem }, #endif #if defined(LOVE_ENABLE_FONT) { "love.font", luaopen_love_font }, #endif #if defined(LOVE_ENABLE_GRAPHICS) { "love.graphics", luaopen_love_graphics }, #endif #if defined(LOVE_ENABLE_IMAGE) { "love.image", luaopen_love_image }, #endif #if defined(LOVE_ENABLE_JOYSTICK) { "love.joystick", luaopen_love_joystick }, #endif #if defined(LOVE_ENABLE_KEYBOARD) { "love.keyboard", luaopen_love_keyboard }, #endif #if defined(LOVE_ENABLE_MATH) { "love.math", luaopen_love_math }, #endif #if defined(LOVE_ENABLE_MOUSE) { "love.mouse", luaopen_love_mouse }, #endif #if defined(LOVE_ENABLE_PHYSICS) { "love.physics", luaopen_love_physics }, #endif #if defined(LOVE_ENABLE_SOUND) { "love.sound", luaopen_love_sound }, #endif #if defined(LOVE_ENABLE_SYSTEM) { "love.system", luaopen_love_system }, #endif #if defined(LOVE_ENABLE_TIMER) { "love.timer", luaopen_love_timer }, #endif #if defined(LOVE_ENABLE_THREAD) { "love.thread", luaopen_love_thread }, #endif #if defined(LOVE_ENABLE_WINDOW) { "love.window", luaopen_love_window }, #endif { "love.boot", luaopen_love_boot }, { 0, 0 } }; #ifdef LOVE_LEGENDARY_CONSOLE_IO_HACK int w__openConsole(lua_State *L); #endif // LOVE_LEGENDARY_CONSOLE_IO_HACK const char *love_version() { return love::VERSION; } const char *love_codename() { return love::VERSION_CODENAME; } static int w_love_getVersion(lua_State *L) { lua_pushinteger(L, love::VERSION_MAJOR); lua_pushinteger(L, love::VERSION_MINOR); lua_pushinteger(L, love::VERSION_REV); lua_pushstring(L, love::VERSION_CODENAME); return 4; } int luaopen_love(lua_State * L) { love::luax_insistglobal(L, "love"); // Set version information. lua_pushstring(L, love::VERSION); lua_setfield(L, -2, "_version"); lua_pushnumber(L, love::VERSION_MAJOR); lua_setfield(L, -2, "_version_major"); lua_pushnumber(L, love::VERSION_MINOR); lua_setfield(L, -2, "_version_minor"); lua_pushnumber(L, love::VERSION_REV); lua_setfield(L, -2, "_version_revision"); lua_pushstring(L, love::VERSION_CODENAME); lua_setfield(L, -2, "_version_codename"); #ifdef LOVE_LEGENDARY_CONSOLE_IO_HACK lua_pushcfunction(L, w__openConsole); lua_setfield(L, -2, "_openConsole"); #endif // LOVE_LEGENDARY_CONSOLE_IO_HACK lua_newtable(L); for (int i = 0; love::VERSION_COMPATIBILITY[i] != 0; ++i) { lua_pushstring(L, love::VERSION_COMPATIBILITY[i]); lua_rawseti(L, -2, i+1); } lua_setfield(L, -2, "_version_compat"); lua_pushcfunction(L, w_love_getVersion); lua_setfield(L, -2, "getVersion"); #ifdef LOVE_WINDOWS lua_pushstring(L, "Windows"); #elif defined(LOVE_MACOSX) lua_pushstring(L, "OS X"); #elif defined(LOVE_LINUX) lua_pushstring(L, "Linux"); #else lua_pushstring(L, "Unknown"); #endif lua_setfield(L, -2, "_os"); // Preload module loaders. for (int i = 0; modules[i].name != 0; i++) { love::luax_preload(L, modules[i].func, modules[i].name); } #ifdef LOVE_ENABLE_LUASOCKET love::luasocket::__open(L); #endif #ifdef LOVE_ENABLE_ENET love::luax_preload(L, luaopen_enet, "enet"); #endif return 1; } #ifdef LOVE_LEGENDARY_CONSOLE_IO_HACK int w__openConsole(lua_State *L) { static bool is_open = false; if (is_open) return 0; is_open = true; if (GetConsoleWindow() != NULL || AllocConsole() == 0) return 0; const int MAX_CONSOLE_LINES = 5000; CONSOLE_SCREEN_BUFFER_INFO console_info; // Set size. GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &console_info); console_info.dwSize.Y = MAX_CONSOLE_LINES; SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), console_info.dwSize); SetConsoleTitle(TEXT("LOVE Console")); FILE * fp; // Redirect stdout. fp = freopen("CONOUT$", "w", stdout); if (L && fp == NULL) luaL_error(L, "Console redirection of stdout failed."); // Redirect stdin. fp = freopen("CONIN$", "r", stdin); if (L && fp == NULL) luaL_error(L, "Console redirection of stdin failed."); // Redirect stderr. fp = freopen("CONOUT$", "w", stderr); if (L && fp == NULL) luaL_error(L, "Console redirection of stderr failed."); return 0; } #endif // LOVE_LEGENDARY_CONSOLE_IO_HACK int luaopen_love_boot(lua_State *L) { if (luaL_loadbuffer(L, (const char *)love::boot_lua, sizeof(love::boot_lua), "boot.lua") == 0) lua_call(L, 0, 1); return 1; } love-0.9.1/src/modules/audio/0000755000000000000000000000000012316602462016026 5ustar00rootroot00000000000000love-0.9.1/src/modules/audio/null/0000755000000000000000000000000012316602462017000 5ustar00rootroot00000000000000love-0.9.1/src/modules/audio/null/Audio.cpp0000644000000000000000000000477612316602166020564 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Audio.h" namespace love { namespace audio { namespace null { Audio::Audio() : distanceModel(DISTANCE_NONE) { } Audio::~Audio() { } const char *Audio::getName() const { return "love.audio.null"; } love::audio::Source *Audio::newSource(love::sound::Decoder *) { return new Source(); } love::audio::Source *Audio::newSource(love::sound::SoundData *) { return new Source(); } int Audio::getSourceCount() const { return 0; } int Audio::getMaxSources() const { return 0; } bool Audio::play(love::audio::Source *) { return false; } void Audio::stop(love::audio::Source *) { } void Audio::stop() { } void Audio::pause(love::audio::Source *) { } void Audio::pause() { } void Audio::resume(love::audio::Source *) { } void Audio::resume() { } void Audio::rewind(love::audio::Source *) { } void Audio::rewind() { } void Audio::setVolume(float volume) { this->volume = volume; } float Audio::getVolume() const { return volume; } void Audio::getPosition(float *) const { } void Audio::setPosition(float *) { } void Audio::getOrientation(float *) const { } void Audio::setOrientation(float *) { } void Audio::getVelocity(float *) const { } void Audio::setVelocity(float *) { } void Audio::record() { } love::sound::SoundData *Audio::getRecordedData() { return NULL; } love::sound::SoundData *Audio::stopRecording(bool) { return NULL; } bool Audio::canRecord() { return false; } Audio::DistanceModel Audio::getDistanceModel() const { return this->distanceModel; } void Audio::setDistanceModel(DistanceModel distanceModel) { this->distanceModel = distanceModel; } } // null } // audio } // love love-0.9.1/src/modules/audio/null/Source.cpp0000644000000000000000000000676112316602166020757 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Source.h" namespace love { namespace audio { namespace null { Source::Source() : love::audio::Source(Source::TYPE_STATIC) { } Source::~Source() { } love::audio::Source *Source::clone() { this->retain(); return this; } bool Source::play() { return false; } void Source::stop() { } void Source::pause() { } void Source::resume() { } void Source::rewind() { } bool Source::isStopped() const { return true; } bool Source::isPaused() const { return false; } bool Source::isFinished() const { return true; } bool Source::update() { return false; } void Source::setPitch(float pitch) { this->pitch = pitch; } float Source::getPitch() const { return pitch; } void Source::setVolume(float volume) { this->volume = volume; } float Source::getVolume() const { return volume; } void Source::seek(float, Source::Unit) { } float Source::tell(Source::Unit) { return 0.0f; } void Source::setPosition(float *) { } void Source::getPosition(float *) const { } void Source::setVelocity(float *) { } void Source::getVelocity(float *) const { } void Source::setDirection(float *) { } void Source::getDirection(float *) const { } void Source::setCone(float innerAngle, float outerAngle, float outerVolume) { coneInnerAngle = innerAngle; coneOuterAngle = outerAngle; coneOuterVolume = outerVolume; } void Source::getCone(float &innerAngle, float &outerAngle, float &outerVolume) const { innerAngle = coneInnerAngle; outerAngle = coneOuterAngle; outerVolume = coneOuterVolume; } void Source::setRelative(bool enable) { relative = enable; } bool Source::isRelative() const { return relative; } void Source::setLooping(bool looping) { this->looping = looping; } bool Source::isLooping() const { return looping; } bool Source::isStatic() const { return (type == TYPE_STATIC); } void Source::setMinVolume(float volume) { this->minVolume = volume; } float Source::getMinVolume() const { return this->minVolume; } void Source::setMaxVolume(float volume) { this->maxVolume = volume; } float Source::getMaxVolume() const { return this->maxVolume; } void Source::setReferenceDistance(float distance) { this->referenceDistance = distance; } float Source::getReferenceDistance() const { return this->referenceDistance; } void Source::setRolloffFactor(float factor) { this->rolloffFactor = factor; } float Source::getRolloffFactor() const { return this->rolloffFactor; } void Source::setMaxDistance(float distance) { this->maxDistance = distance; } float Source::getMaxDistance() const { return this->maxDistance; } int Source::getChannels() const { return 2; } } // null } // audio } // love love-0.9.1/src/modules/audio/null/Source.h0000644000000000000000000000573512316602166020424 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_AUDIO_NULL_SOURCE_H #define LOVE_AUDIO_NULL_SOURCE_H // LOVE #include "common/Object.h" #include "audio/Source.h" namespace love { namespace audio { namespace null { class Source : public love::audio::Source { public: Source(); virtual ~Source(); virtual love::audio::Source *clone(); virtual bool play(); virtual void stop(); virtual void pause(); virtual void resume(); virtual void rewind(); virtual bool isStopped() const; virtual bool isPaused() const; virtual bool isFinished() const; virtual bool update(); virtual void setPitch(float pitch); virtual float getPitch() const; virtual void setVolume(float volume); virtual float getVolume() const; virtual void seek(float offset, Unit unit); virtual float tell(Unit unit); virtual void setPosition(float *v); virtual void getPosition(float *v) const; virtual void setVelocity(float *v); virtual void getVelocity(float *v) const; virtual void setDirection(float *v); virtual void getDirection(float *v) const; virtual void setCone(float innerAngle, float outerAngle, float outerVolume); virtual void getCone(float &innerAngle, float &outerAngle, float &outerVolume) const; virtual void setRelative(bool enable); virtual bool isRelative() const; void setLooping(bool looping); bool isLooping() const; bool isStatic() const; virtual void setMinVolume(float volume); virtual float getMinVolume() const; virtual void setMaxVolume(float volume); virtual float getMaxVolume() const; virtual void setReferenceDistance(float distance); virtual float getReferenceDistance() const; virtual void setRolloffFactor(float factor); virtual float getRolloffFactor() const; virtual void setMaxDistance(float distance); virtual float getMaxDistance() const; virtual int getChannels() const; private: float pitch; float volume; float coneInnerAngle; float coneOuterAngle; float coneOuterVolume; bool relative; bool looping; float minVolume; float maxVolume; float referenceDistance; float rolloffFactor; float maxDistance; }; // Source } // null } // audio } // love #endif // LOVE_AUDIO_NULL_SOURCE_H love-0.9.1/src/modules/audio/null/Audio.h0000644000000000000000000000444112316602166020216 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_AUDIO_NULL_AUDIO_H #define LOVE_AUDIO_NULL_AUDIO_H // LOVE #include "audio/Audio.h" #include "Source.h" namespace love { namespace audio { namespace null { class Audio : public love::audio::Audio { public: Audio(); virtual ~Audio(); // Implements Module. const char *getName() const; // Implements Audio. love::audio::Source *newSource(love::sound::Decoder *decoder); love::audio::Source *newSource(love::sound::SoundData *soundData); int getSourceCount() const; int getMaxSources() const; bool play(love::audio::Source *source); void stop(love::audio::Source *source); void stop(); void pause(love::audio::Source *source); void pause(); void resume(love::audio::Source *source); void resume(); void rewind(love::audio::Source *source); void rewind(); void setVolume(float volume); float getVolume() const; void getPosition(float *v) const; void setPosition(float *v); void getOrientation(float *v) const; void setOrientation(float *v); void getVelocity(float *v) const; void setVelocity(float *v); void record(); love::sound::SoundData *getRecordedData(); love::sound::SoundData *stopRecording(bool returnData); bool canRecord(); DistanceModel getDistanceModel() const; void setDistanceModel(DistanceModel distanceModel); private: float volume; DistanceModel distanceModel; }; // Audio } // null } // audio } // love #endif // LOVE_AUDIO_NULL_AUDIO_H love-0.9.1/src/modules/audio/wrap_Audio.h0000644000000000000000000000360612316602166020277 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_AUDIO_WRAP_AUDIO_H #define LOVE_AUDIO_WRAP_AUDIO_H // LOVE #include "common/config.h" #include "common/runtime.h" #include "Audio.h" #include "wrap_Source.h" namespace love { namespace audio { int w_getSourceCount(lua_State *L); int w_newSource(lua_State *L); int w_play(lua_State *L); int w_stop(lua_State *L); int w_pause(lua_State *L); int w_resume(lua_State *L); int w_rewind(lua_State *L); int w_setVolume(lua_State *L); int w_getVolume(lua_State *L); int w_setPosition(lua_State *L); int w_getPosition(lua_State *L); int w_setOrientation(lua_State *L); int w_getOrientation(lua_State *L); int w_setVelocity(lua_State *L); int w_getVelocity(lua_State *L); int w_record(lua_State *L); int w_getRecordedData(lua_State *L); int w_stopRecording(lua_State *L); int w_canRecord(lua_State *L); int w_setDistanceModel(lua_State *L); int w_getDistanceModel(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_audio(lua_State *L); } // audio } // love #endif // LOVE_AUDIO_WRAP_AUDIO_H love-0.9.1/src/modules/audio/wrap_Source.cpp0000644000000000000000000002241312316602166021026 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include #include "wrap_Source.h" namespace love { namespace audio { Source *luax_checksource(lua_State *L, int idx) { return luax_checktype(L, idx, "Source", AUDIO_SOURCE_T); } int w_Source_clone(lua_State *L) { Source *t = luax_checksource(L, 1); Source *clone = nullptr; EXCEPT_GUARD(clone = t->clone();) luax_pushtype(L, "Source", AUDIO_SOURCE_T, clone); return 1; } int w_Source_play(lua_State *L) { Source *t = luax_checksource(L, 1); luax_pushboolean(L, t->play()); return 1; } int w_Source_stop(lua_State *L) { Source *t = luax_checksource(L, 1); t->stop(); return 0; } int w_Source_pause(lua_State *L) { Source *t = luax_checksource(L, 1); t->pause(); return 0; } int w_Source_resume(lua_State *L) { Source *t = luax_checksource(L, 1); t->resume(); return 0; } int w_Source_rewind(lua_State *L) { Source *t = luax_checksource(L, 1); t->rewind(); return 0; } int w_Source_setPitch(lua_State *L) { Source *t = luax_checksource(L, 1); float p = (float)luaL_checknumber(L, 2); if (p > std::numeric_limits::max() || p < std::numeric_limits::min() || p != p) return luaL_error(L, "Pitch has to be finite and not NaN."); t->setPitch(p); return 0; } int w_Source_getPitch(lua_State *L) { Source *t = luax_checksource(L, 1); lua_pushnumber(L, t->getPitch()); return 1; } int w_Source_setVolume(lua_State *L) { Source *t = luax_checksource(L, 1); float p = (float)luaL_checknumber(L, 2); t->setVolume(p); return 0; } int w_Source_getVolume(lua_State *L) { Source *t = luax_checksource(L, 1); lua_pushnumber(L, t->getVolume()); return 1; } int w_Source_seek(lua_State *L) { Source *t = luax_checksource(L, 1); float offset = (float)luaL_checknumber(L, 2); if (offset < 0) return luaL_argerror(L, 2, "can't seek to a negative position"); Source::Unit u = Source::UNIT_SECONDS; const char *unit = lua_isnoneornil(L, 3) ? 0 : lua_tostring(L, 3); if (unit && !t->getConstant(unit, u)) return luaL_error(L, "Invalid Source time unit: %s", unit); t->seek(offset, u); return 0; } int w_Source_tell(lua_State *L) { Source *t = luax_checksource(L, 1); Source::Unit u = Source::UNIT_SECONDS; const char *unit = lua_isnoneornil(L, 2) ? 0 : lua_tostring(L, 2); if (unit && !t->getConstant(unit, u)) return luaL_error(L, "Invalid Source time unit: %s", unit); lua_pushnumber(L, t->tell(u)); return 1; } int w_Source_setPosition(lua_State *L) { Source *t = luax_checksource(L, 1); float v[3]; v[0] = (float)luaL_checknumber(L, 2); v[1] = (float)luaL_checknumber(L, 3); v[2] = (float)luaL_optnumber(L, 4, 0); t->setPosition(v); return 0; } int w_Source_getPosition(lua_State *L) { Source *t = luax_checksource(L, 1); float v[3]; t->getPosition(v); lua_pushnumber(L, v[0]); lua_pushnumber(L, v[1]); lua_pushnumber(L, v[2]); return 3; } int w_Source_setVelocity(lua_State *L) { Source *t = luax_checksource(L, 1); float v[3]; v[0] = (float)luaL_checknumber(L, 2); v[1] = (float)luaL_checknumber(L, 3); v[2] = (float)luaL_optnumber(L, 4, 0); t->setVelocity(v); return 0; } int w_Source_getVelocity(lua_State *L) { Source *t = luax_checksource(L, 1); float v[3]; t->getVelocity(v); lua_pushnumber(L, v[0]); lua_pushnumber(L, v[1]); lua_pushnumber(L, v[2]); return 3; } int w_Source_setDirection(lua_State *L) { Source *t = luax_checksource(L, 1); float v[3]; v[0] = (float)luaL_checknumber(L, 2); v[1] = (float)luaL_checknumber(L, 3); v[2] = (float)luaL_optnumber(L, 4, 0); t->setDirection(v); return 0; } int w_Source_getDirection(lua_State *L) { Source *t = luax_checksource(L, 1); float v[3]; t->getDirection(v); lua_pushnumber(L, v[0]); lua_pushnumber(L, v[1]); lua_pushnumber(L, v[2]); return 3; } int w_Source_setCone(lua_State *L) { Source *t = luax_checksource(L, 1); float innerAngle = (float) luaL_checknumber(L, 2); float outerAngle = (float) luaL_checknumber(L, 3); float outerVolume = (float) luaL_optnumber(L, 4, 0.0); t->setCone(innerAngle, outerAngle, outerVolume); return 0; } int w_Source_getCone(lua_State *L) { Source *t = luax_checksource(L, 1); float innerAngle, outerAngle, outerVolume; t->getCone(innerAngle, outerAngle, outerVolume); lua_pushnumber(L, innerAngle); lua_pushnumber(L, outerAngle); lua_pushnumber(L, outerVolume); return 3; } int w_Source_setRelative(lua_State *L) { Source *t = luax_checksource(L, 1); t->setRelative(luax_toboolean(L, 2)); return 0; } int w_Source_isRelative(lua_State *L) { Source *t = luax_checksource(L, 1); luax_pushboolean(L, t->isRelative()); return 1; } int w_Source_setLooping(lua_State *L) { Source *t = luax_checksource(L, 1); t->setLooping(luax_toboolean(L, 2)); return 0; } int w_Source_isLooping(lua_State *L) { Source *t = luax_checksource(L, 1); luax_pushboolean(L, t->isLooping()); return 1; } int w_Source_isStopped(lua_State *L) { Source *t = luax_checksource(L, 1); luax_pushboolean(L, t->isStopped()); return 1; } int w_Source_isPaused(lua_State *L) { Source *t = luax_checksource(L, 1); luax_pushboolean(L, t->isPaused()); return 1; } int w_Source_isPlaying(lua_State *L) { Source *t = luax_checksource(L, 1); luax_pushboolean(L, !t->isStopped() && !t->isPaused()); return 1; } int w_Source_isStatic(lua_State *L) { Source *t = luax_checksource(L, 1); luax_pushboolean(L, t->isStatic()); return 1; } int w_Source_setVolumeLimits(lua_State *L) { Source *t = luax_checksource(L, 1); float vmin = (float)luaL_checknumber(L, 2); float vmax = (float)luaL_checknumber(L, 3); if (vmin < .0f || vmin > 1.f || vmax < .0f || vmax > 1.f) return luaL_error(L, "Invalid volume limits: [%f:%f]. Must be in [0:1]", vmin, vmax); t->setMinVolume(vmin); t->setMaxVolume(vmax); return 0; } int w_Source_getVolumeLimits(lua_State *L) { Source *t = luax_checksource(L, 1); lua_pushnumber(L, t->getMinVolume()); lua_pushnumber(L, t->getMaxVolume()); return 2; } int w_Source_setAttenuationDistances(lua_State *L) { Source *t = luax_checksource(L, 1); float dref = (float)luaL_checknumber(L, 2); float dmax = (float)luaL_checknumber(L, 3); if (dref < .0f || dmax < .0f) return luaL_error(L, "Invalid distances: %f, %f. Must be > 0", dref, dmax); t->setReferenceDistance(dref); t->setMaxDistance(dmax); return 0; } int w_Source_getAttenuationDistances(lua_State *L) { Source *t = luax_checksource(L, 1); lua_pushnumber(L, t->getReferenceDistance()); lua_pushnumber(L, t->getMaxDistance()); return 2; } int w_Source_setRolloff(lua_State *L) { Source *t = luax_checksource(L, 1); float rolloff = (float)luaL_checknumber(L, 2); if (rolloff < .0f) return luaL_error(L, "Invalid rolloff: %f. Must be > 0.", rolloff); t->setRolloffFactor(rolloff); return 0; } int w_Source_getRolloff(lua_State *L) { Source *t = luax_checksource(L, 1); lua_pushnumber(L, t->getRolloffFactor()); return 1; } int w_Source_getChannels(lua_State *L) { Source *t = luax_checksource(L, 1); lua_pushinteger(L, t->getChannels()); return 1; } static const luaL_Reg functions[] = { { "clone", w_Source_clone }, { "play", w_Source_play }, { "stop", w_Source_stop }, { "pause", w_Source_pause }, { "resume", w_Source_resume }, { "rewind", w_Source_rewind }, { "setPitch", w_Source_setPitch }, { "getPitch", w_Source_getPitch }, { "setVolume", w_Source_setVolume }, { "getVolume", w_Source_getVolume }, { "seek", w_Source_seek }, { "tell", w_Source_tell }, { "setPosition", w_Source_setPosition }, { "getPosition", w_Source_getPosition }, { "setVelocity", w_Source_setVelocity }, { "getVelocity", w_Source_getVelocity }, { "setDirection", w_Source_setDirection }, { "getDirection", w_Source_getDirection }, { "setCone", w_Source_setCone }, { "getCone", w_Source_getCone }, { "setRelative", w_Source_setRelative }, { "isRelative", w_Source_isRelative }, { "setLooping", w_Source_setLooping }, { "isLooping", w_Source_isLooping }, { "isStopped", w_Source_isStopped }, { "isPaused", w_Source_isPaused }, { "isPlaying", w_Source_isPlaying }, { "isStatic", w_Source_isStatic }, { "setVolumeLimits", w_Source_setVolumeLimits }, { "getVolumeLimits", w_Source_getVolumeLimits }, { "setAttenuationDistances", w_Source_setAttenuationDistances }, { "getAttenuationDistances", w_Source_getAttenuationDistances }, { "setRolloff", w_Source_setRolloff}, { "getRolloff", w_Source_getRolloff}, { "getChannels", w_Source_getChannels }, { 0, 0 } }; extern "C" int luaopen_source(lua_State *L) { return luax_register_type(L, "Source", functions); } } // audio } // love love-0.9.1/src/modules/audio/Audio.cpp0000644000000000000000000000335312316602166017600 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered Audio versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any Audio distribution. **/ #include "Audio.h" namespace love { namespace audio { StringMap::Entry Audio::distanceModelEntries[] = { {"none", Audio::DISTANCE_NONE}, {"inverse", Audio::DISTANCE_INVERSE}, {"inverse clamped", Audio::DISTANCE_INVERSE_CLAMPED}, {"linear", Audio::DISTANCE_LINEAR}, {"linear clamped", Audio::DISTANCE_LINEAR_CLAMPED}, {"exponent", Audio::DISTANCE_EXPONENT}, {"exponent clamped", Audio::DISTANCE_EXPONENT_CLAMPED} }; StringMap Audio::distanceModels(Audio::distanceModelEntries, sizeof(Audio::distanceModelEntries)); bool Audio::getConstant(const char *in, DistanceModel &out) { return distanceModels.find(in, out); } bool Audio::getConstant(DistanceModel in, const char *&out) { return distanceModels.find(in, out); } } // audio } // love love-0.9.1/src/modules/audio/Source.cpp0000644000000000000000000000363612316602166020003 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Source.h" namespace love { namespace audio { Source::Source(Type type) : type(type) { } Source::~Source() { } bool Source::getConstant(const char *in, Type &out) { return types.find(in, out); } bool Source::getConstant(Type in, const char *&out) { return types.find(in, out); } bool Source::getConstant(const char *in, Unit &out) { return units.find(in, out); } bool Source::getConstant(Unit in, const char *&out) { return units.find(in, out); } StringMap::Entry Source::typeEntries[] = { {"static", Source::TYPE_STATIC}, {"stream", Source::TYPE_STREAM}, }; StringMap Source::types(Source::typeEntries, sizeof(Source::typeEntries)); StringMap::Entry Source::unitEntries[] = { {"seconds", Source::UNIT_SECONDS}, {"samples", Source::UNIT_SAMPLES}, }; StringMap Source::units(Source::unitEntries, sizeof(Source::unitEntries)); } // audio } // love love-0.9.1/src/modules/audio/openal/0000755000000000000000000000000012316602462017304 5ustar00rootroot00000000000000love-0.9.1/src/modules/audio/openal/Pool.cpp0000644000000000000000000001306012316602166020722 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Pool.h" #include "Source.h" namespace love { namespace audio { namespace openal { Pool::Pool() : sources() , totalSources(0) , mutex(nullptr) { // Clear errors. alGetError(); // Generate sources. for (int i = 0; i < MAX_SOURCES; i++) { alGenSources(1, &sources[i]); // We might hit an implementation-dependent limit on the total number // of sources before reaching MAX_SOURCES. if (alGetError() != AL_NO_ERROR) break; totalSources++; } if (totalSources < 4) throw love::Exception("Could not generate sources."); // Create the mutex. mutex = thread::newMutex(); ALboolean hasext = alIsExtensionPresent("AL_SOFT_direct_channels"); // Make all sources available initially. for (int i = 0; i < totalSources; i++) { #ifdef AL_SOFT_direct_channels if (hasext) { // Bypass virtualization of speakers for multi-channel sources in OpenAL Soft. alSourcei(sources[i], AL_DIRECT_CHANNELS_SOFT, AL_TRUE); } #endif available.push(sources[i]); } } Pool::~Pool() { stop(); delete mutex; // Free all sources. alDeleteSources(totalSources, sources); } bool Pool::isAvailable() const { bool has = false; { thread::Lock lock(mutex); has = !available.empty(); } return has; } bool Pool::isPlaying(Source *s) { bool p = false; { thread::Lock lock(mutex); for (auto i = playing.begin(); i != playing.end(); i++) { if (i->first == s) p = true; } } return p; } void Pool::update() { thread::Lock lock(mutex); std::map::iterator i = playing.begin(); while (i != playing.end()) { if (!i->first->update()) { i->first->stopAtomic(); i->first->rewindAtomic(); i->first->release(); available.push(i->second); playing.erase(i++); } else i++; } } int Pool::getSourceCount() const { return playing.size(); } int Pool::getMaxSources() const { return totalSources; } bool Pool::play(Source *source, ALuint &out) { thread::Lock lock(mutex); bool ok = true; out = 0; bool alreadyPlaying = findSource(source, out); if (!alreadyPlaying) { // Try to play. if (!available.empty()) { // Get the first available source. out = available.front(); // Remove it. available.pop(); // Insert into map of playing sources. playing.insert(std::pair(source, out)); source->retain(); ok = source->playAtomic(); } else { ok = false; } } else { ok = true; } return ok; } void Pool::stop() { thread::Lock lock(mutex); for (auto i = playing.begin(); i != playing.end(); i++) { i->first->stopAtomic(); i->first->release(); available.push(i->second); } playing.clear(); } void Pool::stop(Source *source) { thread::Lock lock(mutex); removeSource(source); } void Pool::pause() { thread::Lock lock(mutex); for (auto i = playing.begin(); i != playing.end(); i++) i->first->pauseAtomic(); } void Pool::pause(Source *source) { thread::Lock lock(mutex); ALuint out; if (findSource(source, out)) source->pauseAtomic(); } void Pool::resume() { thread::Lock lock(mutex); for (auto i = playing.begin(); i != playing.end(); i++) i->first->resumeAtomic(); } void Pool::resume(Source *source) { thread::Lock lock(mutex); ALuint out; if (findSource(source, out)) source->resumeAtomic(); } void Pool::rewind() { thread::Lock lock(mutex); for (auto i = playing.begin(); i != playing.end(); i++) i->first->rewindAtomic(); } // For those times we don't need it backed. void Pool::softRewind(Source *source) { thread::Lock lock(mutex); source->rewindAtomic(); } void Pool::rewind(Source *source) { thread::Lock lock(mutex); source->rewindAtomic(); } void Pool::release(Source *source) { ALuint s = findi(source); if (s != 0) { available.push(s); playing.erase(source); } } void Pool::seek(Source *source, float offset, void *unit) { thread::Lock lock(mutex); return source->seekAtomic(offset, unit); } float Pool::tell(Source *source, void *unit) { thread::Lock lock(mutex); return source->tellAtomic(unit); } ALuint Pool::findi(const Source *source) const { std::map::const_iterator i = playing.find((Source *)source); if (i != playing.end()) return i->second; return 0; } bool Pool::findSource(Source *source, ALuint &out) { std::map::const_iterator i = playing.find((Source *)source); bool found = i != playing.end(); if (found) out = i->second; return found; } bool Pool::removeSource(Source *source) { std::map::iterator i = playing.find((Source *)source); if (i != playing.end()) { source->stopAtomic(); available.push(i->second); playing.erase(i++); source->release(); return true; } return false; } } // openal } // audio } // love love-0.9.1/src/modules/audio/openal/Audio.cpp0000644000000000000000000001452012316602166021054 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Audio.h" #include "common/delay.h" #include "sound/Decoder.h" #include namespace love { namespace audio { namespace openal { Audio::PoolThread::PoolThread(Pool *pool) : pool(pool) , finish(false) { mutex = thread::newMutex(); } Audio::PoolThread::~PoolThread() { delete mutex; } void Audio::PoolThread::threadFunction() { while (true) { { thread::Lock lock(mutex); if (finish) { return; } } pool->update(); delay(5); } } void Audio::PoolThread::setFinish() { thread::Lock lock(mutex); finish = true; } Audio::Audio() : device(nullptr) , capture(nullptr) , context(nullptr) , pool(nullptr) , poolThread(nullptr) , distanceModel(DISTANCE_INVERSE_CLAMPED) { // Passing null for default device. device = alcOpenDevice(nullptr); if (device == nullptr) throw love::Exception("Could not open device."); context = alcCreateContext(device, nullptr); if (context == nullptr) throw love::Exception("Could not create context."); if (!alcMakeContextCurrent(context) || alcGetError(device) != ALC_NO_ERROR) throw love::Exception("Could not make context current."); /*std::string captureName(alcGetString(NULL, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER)); const ALCchar * devices = alcGetString(NULL, ALC_CAPTURE_DEVICE_SPECIFIER); while (*devices) { std::string device(devices); devices += device.size() + 1; if (device.find("Mic") != std::string::npos || device.find("mic") != std::string::npos) { captureName = device; } } capture = alcCaptureOpenDevice(captureName.c_str(), 8000, AL_FORMAT_MONO16, 262144); // about 32 seconds if (!capture) { // We're not going to prevent LOVE from running without a microphone, but we should warn, at least std::cerr << "Warning, couldn't open capture device! No audio input!" << std::endl; }*/ // pool must be allocated after AL context. try { pool = new Pool(); } catch (love::Exception &) { alcMakeContextCurrent(nullptr); alcDestroyContext(context); //if (capture) alcCaptureCloseDevice(capture); alcCloseDevice(device); throw; } poolThread = new PoolThread(pool); poolThread->start(); } Audio::~Audio() { poolThread->setFinish(); poolThread->wait(); delete poolThread; delete pool; alcMakeContextCurrent(nullptr); alcDestroyContext(context); //if (capture) alcCaptureCloseDevice(capture); alcCloseDevice(device); } const char *Audio::getName() const { return "love.audio.openal"; } love::audio::Source *Audio::newSource(love::sound::Decoder *decoder) { return new Source(pool, decoder); } love::audio::Source *Audio::newSource(love::sound::SoundData *soundData) { return new Source(pool, soundData); } int Audio::getSourceCount() const { return pool->getSourceCount(); } int Audio::getMaxSources() const { return pool->getMaxSources(); } bool Audio::play(love::audio::Source *source) { return source->play(); } void Audio::stop(love::audio::Source *source) { source->stop(); } void Audio::stop() { pool->stop(); } void Audio::pause(love::audio::Source *source) { source->pause(); } void Audio::pause() { pool->pause(); } void Audio::resume(love::audio::Source *source) { source->resume(); } void Audio::resume() { pool->resume(); } void Audio::rewind(love::audio::Source *source) { source->rewind(); } void Audio::rewind() { pool->rewind(); } void Audio::setVolume(float volume) { alListenerf(AL_GAIN, volume); } float Audio::getVolume() const { ALfloat volume; alGetListenerf(AL_GAIN, &volume); return volume; } void Audio::getPosition(float *v) const { alGetListenerfv(AL_POSITION, v); } void Audio::setPosition(float *v) { alListenerfv(AL_POSITION, v); } void Audio::getOrientation(float *v) const { alGetListenerfv(AL_ORIENTATION, v); } void Audio::setOrientation(float *v) { alListenerfv(AL_ORIENTATION, v); } void Audio::getVelocity(float *v) const { alGetListenerfv(AL_VELOCITY, v); } void Audio::setVelocity(float *v) { alListenerfv(AL_VELOCITY, v); } void Audio::record() { if (!canRecord()) return; alcCaptureStart(capture); } love::sound::SoundData *Audio::getRecordedData() { if (!canRecord()) return NULL; int samplerate = 8000; ALCint samples; alcGetIntegerv(capture, ALC_CAPTURE_SAMPLES, 4, &samples); void *data = malloc(samples * (2/sizeof(char))); alcCaptureSamples(capture, data, samples); love::sound::SoundData *sd = new love::sound::SoundData(data, samples, samplerate, 16, 1); free(data); return sd; } love::sound::SoundData *Audio::stopRecording(bool returnData) { if (!canRecord()) return NULL; love::sound::SoundData *sd = NULL; if (returnData) { sd = getRecordedData(); } alcCaptureStop(capture); return sd; } bool Audio::canRecord() { return (capture != NULL); } Audio::DistanceModel Audio::getDistanceModel() const { return distanceModel; } void Audio::setDistanceModel(DistanceModel distanceModel) { this->distanceModel = distanceModel; switch (distanceModel) { case DISTANCE_NONE: alDistanceModel(AL_NONE); break; case DISTANCE_INVERSE: alDistanceModel(AL_INVERSE_DISTANCE); break; case DISTANCE_INVERSE_CLAMPED: alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED); break; case DISTANCE_LINEAR: alDistanceModel(AL_LINEAR_DISTANCE); break; case DISTANCE_LINEAR_CLAMPED: alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED); break; case DISTANCE_EXPONENT: alDistanceModel(AL_EXPONENT_DISTANCE); break; case DISTANCE_EXPONENT_CLAMPED: alDistanceModel(AL_EXPONENT_DISTANCE_CLAMPED); break; default: break; } } } // openal } // audio } // love love-0.9.1/src/modules/audio/openal/Source.cpp0000644000000000000000000003717012316602166021261 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Source.h" #include "Pool.h" #include "common/math.h" // STD #include #include namespace love { namespace audio { namespace openal { StaticDataBuffer::StaticDataBuffer(ALenum format, const ALvoid *data, ALsizei size, ALsizei freq) { alGenBuffers(1, &buffer); alBufferData(buffer, format, data, size, freq); } StaticDataBuffer::~StaticDataBuffer() { alDeleteBuffers(1, &buffer); } Source::Source(Pool *pool, love::sound::SoundData *soundData) : love::audio::Source(Source::TYPE_STATIC) , pool(pool) , valid(false) , staticBuffer(nullptr) , pitch(1.0f) , volume(1.0f) , relative(false) , looping(false) , paused(false) , minVolume(0.0f) , maxVolume(1.0f) , referenceDistance(1.0f) , rolloffFactor(1.0f) , maxDistance(FLT_MAX) , cone() , offsetSamples(0) , offsetSeconds(0) , channels(soundData->getChannels()) , decoder(nullptr) , toLoop(0) { ALenum fmt = getFormat(soundData->getChannels(), soundData->getBitDepth()); staticBuffer = new StaticDataBuffer(fmt, soundData->getData(), soundData->getSize(), soundData->getSampleRate()); float z[3] = {0, 0, 0}; setFloatv(position, z); setFloatv(velocity, z); setFloatv(direction, z); } Source::Source(Pool *pool, love::sound::Decoder *decoder) : love::audio::Source(Source::TYPE_STREAM) , pool(pool) , valid(false) , staticBuffer(nullptr) , pitch(1.0f) , volume(1.0f) , relative(false) , looping(false) , paused(false) , minVolume(0.0f) , maxVolume(1.0f) , referenceDistance(1.0f) , rolloffFactor(1.0f) , maxDistance(FLT_MAX) , cone() , offsetSamples(0) , offsetSeconds(0) , channels(decoder->getChannels()) , decoder(decoder) , toLoop(0) { decoder->retain(); alGenBuffers(MAX_BUFFERS, streamBuffers); float z[3] = {0, 0, 0}; setFloatv(position, z); setFloatv(velocity, z); setFloatv(direction, z); } Source::Source(const Source &s) : love::audio::Source(s.type) , pool(s.pool) , valid(false) , staticBuffer(s.staticBuffer) , pitch(s.pitch) , volume(s.volume) , relative(s.relative) , looping(s.looping) , paused(false) , minVolume(s.minVolume) , maxVolume(s.maxVolume) , referenceDistance(s.referenceDistance) , rolloffFactor(s.rolloffFactor) , maxDistance(s.maxDistance) , cone(s.cone) , offsetSamples(0) , offsetSeconds(0) , channels(s.channels) , decoder(nullptr) , toLoop(0) { if (type == TYPE_STREAM) { if (s.decoder) decoder = s.decoder->clone(); alGenBuffers(MAX_BUFFERS, streamBuffers); } else staticBuffer->retain(); setFloatv(position, s.position); setFloatv(velocity, s.velocity); setFloatv(direction, s.direction); } Source::~Source() { if (valid) pool->stop(this); if (type == TYPE_STREAM) alDeleteBuffers(MAX_BUFFERS, streamBuffers); if (staticBuffer) staticBuffer->release(); if (decoder) decoder->release(); } love::audio::Source *Source::clone() { return new Source(*this); } bool Source::play() { if (valid && paused) { pool->resume(this); return true; } valid = pool->play(this, source); return valid; } void Source::stop() { if (!isStopped()) { pool->stop(this); pool->softRewind(this); } } void Source::pause() { pool->pause(this); } void Source::resume() { pool->resume(this); } void Source::rewind() { pool->rewind(this); } bool Source::isStopped() const { if (valid) { ALenum state; alGetSourcei(source, AL_SOURCE_STATE, &state); return (state == AL_STOPPED); } return true; } bool Source::isPaused() const { if (valid) { ALenum state; alGetSourcei(source, AL_SOURCE_STATE, &state); return (state == AL_PAUSED); } return false; } bool Source::isFinished() const { return type == TYPE_STATIC ? isStopped() : isStopped() && !isLooping() && decoder->isFinished(); } bool Source::update() { if (!valid) return false; if (type == TYPE_STATIC) { // Looping mode could have changed. alSourcei(source, AL_LOOPING, isLooping() ? AL_TRUE : AL_FALSE); return !isStopped(); } else if (type == TYPE_STREAM && (isLooping() || !isFinished())) { // Number of processed buffers. ALint processed = 0; alGetSourcei(source, AL_BUFFERS_PROCESSED, &processed); while (processed--) { ALuint buffer; float curOffsetSamples, curOffsetSecs; alGetSourcef(source, AL_SAMPLE_OFFSET, &curOffsetSamples); ALint b; alGetSourcei(source, AL_BUFFER, &b); int freq; alGetBufferi(b, AL_FREQUENCY, &freq); curOffsetSecs = curOffsetSamples / freq; // Get a free buffer. alSourceUnqueueBuffers(source, 1, &buffer); float newOffsetSamples, newOffsetSecs; alGetSourcef(source, AL_SAMPLE_OFFSET, &newOffsetSamples); newOffsetSecs = newOffsetSamples / freq; offsetSamples += (curOffsetSamples - newOffsetSamples); offsetSeconds += (curOffsetSecs - newOffsetSecs); streamAtomic(buffer, decoder); alSourceQueueBuffers(source, 1, &buffer); } return true; } return false; } void Source::setPitch(float pitch) { if (valid) alSourcef(source, AL_PITCH, pitch); this->pitch = pitch; } float Source::getPitch() const { if (valid) { ALfloat f; alGetSourcef(source, AL_PITCH, &f); return f; } // In case the Source isn't playing. return pitch; } void Source::setVolume(float volume) { if (valid) { alSourcef(source, AL_GAIN, volume); } this->volume = volume; } float Source::getVolume() const { if (valid) { ALfloat f; alGetSourcef(source, AL_GAIN, &f); return f; } // In case the Source isn't playing. return volume; } void Source::seekAtomic(float offset, void *unit) { if (valid) { switch (*((Source::Unit *) unit)) { case Source::UNIT_SAMPLES: if (type == TYPE_STREAM) { offsetSamples = offset; ALint buffer; alGetSourcei(source, AL_BUFFER, &buffer); int freq; alGetBufferi(buffer, AL_FREQUENCY, &freq); offset /= freq; offsetSeconds = offset; decoder->seek(offset); } else { alSourcef(source, AL_SAMPLE_OFFSET, offset); } break; case Source::UNIT_SECONDS: default: if (type == TYPE_STREAM) { offsetSeconds = offset; decoder->seek(offset); ALint buffer; alGetSourcei(source, AL_BUFFER, &buffer); int freq; alGetBufferi(buffer, AL_FREQUENCY, &freq); offsetSamples = offset*freq; } else { alSourcef(source, AL_SEC_OFFSET, offset); } break; } if (type == TYPE_STREAM) { bool waspaused = paused; // Because we still have old data // from before the seek in the buffers // let's empty them. stopAtomic(); playAtomic(); if (waspaused) pauseAtomic(); } } } void Source::seek(float offset, Source::Unit unit) { return pool->seek(this, offset, &unit); } float Source::tellAtomic(void *unit) const { if (valid) { float offset; switch (*((Source::Unit *) unit)) { case Source::UNIT_SAMPLES: alGetSourcef(source, AL_SAMPLE_OFFSET, &offset); if (type == TYPE_STREAM) offset += offsetSamples; break; case Source::UNIT_SECONDS: default: { alGetSourcef(source, AL_SAMPLE_OFFSET, &offset); ALint buffer; alGetSourcei(source, AL_BUFFER, &buffer); int freq; alGetBufferi(buffer, AL_FREQUENCY, &freq); offset /= freq; if (type == TYPE_STREAM) offset += offsetSeconds; } break; } return offset; } return 0.0f; } float Source::tell(Source::Unit unit) { return pool->tell(this, &unit); } void Source::setPosition(float *v) { if (valid) alSourcefv(source, AL_POSITION, v); setFloatv(position, v); } void Source::getPosition(float *v) const { if (valid) alGetSourcefv(source, AL_POSITION, v); else setFloatv(v, position); } void Source::setVelocity(float *v) { if (valid) alSourcefv(source, AL_VELOCITY, v); setFloatv(velocity, v); } void Source::getVelocity(float *v) const { if (valid) alGetSourcefv(source, AL_VELOCITY, v); else setFloatv(v, velocity); } void Source::setDirection(float *v) { if (valid) alSourcefv(source, AL_DIRECTION, v); else setFloatv(direction, v); } void Source::getDirection(float *v) const { if (valid) alGetSourcefv(source, AL_DIRECTION, v); else setFloatv(v, direction); } void Source::setCone(float innerAngle, float outerAngle, float outerVolume) { cone.innerAngle = (int) LOVE_TODEG(innerAngle); cone.outerAngle = (int) LOVE_TODEG(outerAngle); cone.outerVolume = outerVolume; if (valid) { alSourcei(source, AL_CONE_INNER_ANGLE, cone.innerAngle); alSourcei(source, AL_CONE_OUTER_ANGLE, cone.outerAngle); alSourcef(source, AL_CONE_OUTER_GAIN, cone.outerVolume); } } void Source::getCone(float &innerAngle, float &outerAngle, float &outerVolume) const { innerAngle = LOVE_TORAD(cone.innerAngle); outerAngle = LOVE_TORAD(cone.outerAngle); outerVolume = cone.outerVolume; } void Source::setRelative(bool enable) { if (valid) alSourcei(source, AL_SOURCE_RELATIVE, relative ? AL_TRUE : AL_FALSE); relative = enable; } bool Source::isRelative() const { return relative; } void Source::setLooping(bool looping) { if (valid && type == TYPE_STATIC) alSourcei(source, AL_LOOPING, looping ? AL_TRUE : AL_FALSE); this->looping = looping; } bool Source::isLooping() const { return looping; } bool Source::playAtomic() { if (type == TYPE_STATIC) { alSourcei(source, AL_BUFFER, staticBuffer->getBuffer()); } else if (type == TYPE_STREAM) { int usedBuffers = 0; for (unsigned int i = 0; i < MAX_BUFFERS; i++) { streamAtomic(streamBuffers[i], decoder); ++usedBuffers; if (decoder->isFinished()) break; } if (usedBuffers > 0) alSourceQueueBuffers(source, usedBuffers, streamBuffers); } // This Source may now be associated with an OpenAL source that still has // the properties of another love Source. Let's reset it to the settings // of the new one. reset(); // Clear errors. alGetError(); alSourcePlay(source); // alSourcePlay may fail if the system has reached its limit of simultaneous // playing sources. bool success = alGetError() == AL_NO_ERROR; valid = true; //if it fails it will be set to false again //but this prevents a horrible, horrible bug return success; } void Source::stopAtomic() { if (valid) { if (type == TYPE_STATIC) { alSourceStop(source); } else if (type == TYPE_STREAM) { alSourceStop(source); int queued = 0; alGetSourcei(source, AL_BUFFERS_QUEUED, &queued); while (queued--) { ALuint buffer; alSourceUnqueueBuffers(source, 1, &buffer); } } alSourcei(source, AL_BUFFER, AL_NONE); } toLoop = 0; valid = false; } void Source::pauseAtomic() { if (valid) { alSourcePause(source); paused = true; } } void Source::resumeAtomic() { if (valid && paused) { alSourcePlay(source); paused = false; } } void Source::rewindAtomic() { if (valid && type == TYPE_STATIC) { alSourceRewind(source); if (!paused) alSourcePlay(source); } else if (valid && type == TYPE_STREAM) { bool waspaused = paused; decoder->rewind(); // Because we still have old data // from before the seek in the buffers // let's empty them. stopAtomic(); playAtomic(); if (waspaused) pauseAtomic(); offsetSamples = 0; offsetSeconds = 0; } else if (type == TYPE_STREAM) { decoder->rewind(); offsetSamples = 0; offsetSeconds = 0; } } void Source::reset() { alSourcefv(source, AL_POSITION, position); alSourcefv(source, AL_VELOCITY, velocity); alSourcefv(source, AL_DIRECTION, direction); alSourcef(source, AL_PITCH, pitch); alSourcef(source, AL_GAIN, volume); alSourcef(source, AL_MIN_GAIN, minVolume); alSourcef(source, AL_MAX_GAIN, maxVolume); alSourcef(source, AL_REFERENCE_DISTANCE, referenceDistance); alSourcef(source, AL_ROLLOFF_FACTOR, rolloffFactor); alSourcef(source, AL_MAX_DISTANCE, maxDistance); alSourcei(source, AL_LOOPING, isStatic() && isLooping() ? AL_TRUE : AL_FALSE); alSourcei(source, AL_SOURCE_RELATIVE, relative ? AL_TRUE : AL_FALSE); alSourcei(source, AL_CONE_INNER_ANGLE, cone.innerAngle); alSourcei(source, AL_CONE_OUTER_ANGLE, cone.outerAngle); alSourcef(source, AL_CONE_OUTER_GAIN, cone.outerVolume); } void Source::setFloatv(float *dst, const float *src) const { dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; } ALenum Source::getFormat(int channels, int bitDepth) const { if (channels == 1 && bitDepth == 8) return AL_FORMAT_MONO8; else if (channels == 1 && bitDepth == 16) return AL_FORMAT_MONO16; else if (channels == 2 && bitDepth == 8) return AL_FORMAT_STEREO8; else if (channels == 2 && bitDepth == 16) return AL_FORMAT_STEREO16; else return 0; } int Source::streamAtomic(ALuint buffer, love::sound::Decoder *d) { // Get more sound data. int decoded = d->decode(); int fmt = getFormat(d->getChannels(), d->getBitDepth()); if (fmt != 0) alBufferData(buffer, fmt, d->getBuffer(), decoded, d->getSampleRate()); if (decoder->isFinished() && isLooping()) { int queued, processed; alGetSourcei(source, AL_BUFFERS_QUEUED, &queued); alGetSourcei(source, AL_BUFFERS_PROCESSED, &processed); if (queued > processed) toLoop = queued-processed; else toLoop = MAX_BUFFERS-processed; d->rewind(); } if (toLoop > 0) { if (--toLoop == 0) { offsetSamples = 0; offsetSeconds = 0; } } return decoded; } bool Source::isStatic() const { return (type == TYPE_STATIC); } void Source::setMinVolume(float volume) { if (valid) { alSourcef(source, AL_MIN_GAIN, volume); } this->minVolume = volume; } float Source::getMinVolume() const { if (valid) { ALfloat f; alGetSourcef(source, AL_MIN_GAIN, &f); return f; } // In case the Source isn't playing. return this->minVolume; } void Source::setMaxVolume(float volume) { if (valid) { alSourcef(source, AL_MAX_GAIN, volume); } this->maxVolume = volume; } float Source::getMaxVolume() const { if (valid) { ALfloat f; alGetSourcef(source, AL_MAX_GAIN, &f); return f; } // In case the Source isn't playing. return this->maxVolume; } void Source::setReferenceDistance(float distance) { if (valid) { alSourcef(source, AL_REFERENCE_DISTANCE, distance); } this->referenceDistance = distance; } float Source::getReferenceDistance() const { if (valid) { ALfloat f; alGetSourcef(source, AL_REFERENCE_DISTANCE, &f); return f; } // In case the Source isn't playing. return this->referenceDistance; } void Source::setRolloffFactor(float factor) { if (valid) { alSourcef(source, AL_ROLLOFF_FACTOR, factor); } this->rolloffFactor = factor; } float Source::getRolloffFactor() const { if (valid) { ALfloat f; alGetSourcef(source, AL_ROLLOFF_FACTOR, &f); return f; } // In case the Source isn't playing. return this->rolloffFactor; } void Source::setMaxDistance(float distance) { if (valid) { alSourcef(source, AL_MAX_DISTANCE, distance); } this->maxDistance = distance; } float Source::getMaxDistance() const { if (valid) { ALfloat f; alGetSourcef(source, AL_MAX_DISTANCE, &f); return f; } // In case the Source isn't playing. return this->maxDistance; } int Source::getChannels() const { return channels; } } // openal } // audio } // love love-0.9.1/src/modules/audio/openal/Source.h0000644000000000000000000001144512316602166020723 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_AUDIO_OPENAL_SOURCE_H #define LOVE_AUDIO_OPENAL_SOURCE_H // LOVE #include "common/config.h" #include "common/Object.h" #include "audio/Source.h" #include "sound/SoundData.h" #include "sound/Decoder.h" // OpenAL #ifdef LOVE_MACOSX_USE_FRAMEWORKS #include #include #else #include #include #endif namespace love { namespace audio { namespace openal { class Audio; class Pool; // Basically just a reference-counted non-streaming OpenAL buffer object. class StaticDataBuffer : public love::Object { public: StaticDataBuffer(ALenum format, const ALvoid *data, ALsizei size, ALsizei freq); virtual ~StaticDataBuffer(); inline ALuint getBuffer() const { return buffer; } private: ALuint buffer; }; // StaticDataBuffer class Source : public love::audio::Source { public: Source(Pool *pool, love::sound::SoundData *soundData); Source(Pool *pool, love::sound::Decoder *decoder); Source(const Source &s); virtual ~Source(); virtual love::audio::Source *clone(); virtual bool play(); virtual void stop(); virtual void pause(); virtual void resume(); virtual void rewind(); virtual bool isStopped() const; virtual bool isPaused() const; virtual bool isFinished() const; virtual bool update(); virtual void setPitch(float pitch); virtual float getPitch() const; virtual void setVolume(float volume); virtual float getVolume() const; virtual void seekAtomic(float offset, void *unit); virtual void seek(float offset, Unit unit); virtual float tellAtomic(void *unit) const; virtual float tell(Unit unit); virtual void setPosition(float *v); virtual void getPosition(float *v) const; virtual void setVelocity(float *v); virtual void getVelocity(float *v) const; virtual void setDirection(float *v); virtual void getDirection(float *v) const; virtual void setCone(float innerAngle, float outerAngle, float outerVolume); virtual void getCone(float &innerAngle, float &outerAngle, float &outerVolume) const; virtual void setRelative(bool enable); virtual bool isRelative() const; void setLooping(bool looping); bool isLooping() const; bool isStatic() const; virtual void setMinVolume(float volume); virtual float getMinVolume() const; virtual void setMaxVolume(float volume); virtual float getMaxVolume() const; virtual void setReferenceDistance(float distance); virtual float getReferenceDistance() const; virtual void setRolloffFactor(float factor); virtual float getRolloffFactor() const; virtual void setMaxDistance(float distance); virtual float getMaxDistance() const; virtual int getChannels() const; bool playAtomic(); void stopAtomic(); void pauseAtomic(); void resumeAtomic(); void rewindAtomic(); private: void reset(); void setFloatv(float *dst, const float *src) const; /** * Gets the OpenAL format identifier based on number of * channels and bits. * @param channels Either 1 (mono) or 2 (stereo). * @param bitDepth Either 8-bit samples, or 16-bit samples. * @return One of AL_FORMAT_*, or 0 if unsupported format. **/ ALenum getFormat(int channels, int bitDepth) const; int streamAtomic(ALuint buffer, love::sound::Decoder *d); Pool *pool; ALuint source; bool valid; static const unsigned int MAX_BUFFERS = 32; ALuint streamBuffers[MAX_BUFFERS]; StaticDataBuffer *staticBuffer; float pitch; float volume; float position[3]; float velocity[3]; float direction[3]; bool relative; bool looping; bool paused; float minVolume; float maxVolume; float referenceDistance; float rolloffFactor; float maxDistance; struct Cone { int innerAngle; // degrees int outerAngle; // degrees float outerVolume; Cone() : innerAngle(360) , outerAngle(360) , outerVolume(0.0f) {} } cone; float offsetSamples; float offsetSeconds; int channels; love::sound::Decoder *decoder; unsigned int toLoop; }; // Source } // openal } // audio } // love #endif // LOVE_AUDIO_OPENAL_SOURCE_H love-0.9.1/src/modules/audio/openal/Pool.h0000644000000000000000000000567712316602166020406 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_AUDIO_OPENAL_POOL_H #define LOVE_AUDIO_OPENAL_POOL_H // STD #include #include #include #include // LOVE #include "common/config.h" #include "common/Exception.h" #include "thread/threads.h" // OpenAL #ifdef LOVE_MACOSX_USE_FRAMEWORKS #include #include #include #else #include #include #include #endif namespace love { namespace audio { namespace openal { class Source; class Pool { public: Pool(); ~Pool(); /** * Checks whether an OpenAL source is available. * @return True if at least one is available, false otherwise. **/ bool isAvailable() const; /** * Checks whether a Source is currently in the playing list. **/ bool isPlaying(Source *s); void update(); int getSourceCount() const; int getMaxSources() const; bool play(Source *source, ALuint &out); void stop(); void stop(Source *source); void pause(); void pause(Source *source); void resume(); void resume(Source *source); void rewind(); void rewind(Source *source); void softRewind(Source *source); void seek(Source *source, float offset, void *unit); float tell(Source *source, void *unit); private: /** * Makes the specified OpenAL source available for use. * @param source The OpenAL source. **/ void release(Source *source); ALuint findi(const Source *source) const; bool findSource(Source *source, ALuint &out); bool removeSource(Source *source); // Maximum possible number of OpenAL sources the pool attempts to generate. static const int MAX_SOURCES = 64; // OpenAL sources ALuint sources[MAX_SOURCES]; // Total number of created sources in the pool. int totalSources; // A queue of available sources. std::queue available; // A map of playing sources. std::map playing; // Only one thread can access this object at the same time. This mutex will // make sure of that. thread::Mutex *mutex; }; // Pool } // openal } // audio } // love #endif // LOVE_AUDIO_OPENAL_POOL_H love-0.9.1/src/modules/audio/openal/Audio.h0000644000000000000000000000633412316602166020525 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_AUDIO_OPENAL_AUDIO_H #define LOVE_AUDIO_OPENAL_AUDIO_H // STD #include #include #include #include // LOVE #include "audio/Audio.h" #include "common/config.h" #include "sound/SoundData.h" #include "Source.h" #include "Pool.h" #include "thread/threads.h" // OpenAL #ifdef LOVE_MACOSX_USE_FRAMEWORKS // Frameworks have different include paths. #include #include #else #include #include #endif namespace love { namespace audio { namespace openal { class Audio : public love::audio::Audio { public: Audio(); ~Audio(); // Implements Module. const char *getName() const; // Implements Audio. love::audio::Source *newSource(love::sound::Decoder *decoder); love::audio::Source *newSource(love::sound::SoundData *soundData); int getSourceCount() const; int getMaxSources() const; bool play(love::audio::Source *source); void stop(love::audio::Source *source); void stop(); void pause(love::audio::Source *source); void pause(); void resume(love::audio::Source *source); void resume(); void rewind(love::audio::Source *source); void rewind(); void setVolume(float volume); float getVolume() const; void getPosition(float *v) const; void setPosition(float *v); void getOrientation(float *v) const; void setOrientation(float *v); void getVelocity(float *v) const; void setVelocity(float *v); void record(); love::sound::SoundData *getRecordedData(); love::sound::SoundData *stopRecording(bool returnData); bool canRecord(); DistanceModel getDistanceModel() const; void setDistanceModel(DistanceModel distanceModel); private: // The OpenAL device. ALCdevice *device; // The OpenAL capture device (microphone). ALCdevice *capture; // The OpenAL context. ALCcontext *context; // The Pool. Pool *pool; class PoolThread: public thread::Threadable { protected: Pool *pool; // Set this to true when the thread should finish. // Main thread will write to this value, and PoolThread // will read from it. volatile bool finish; // finish lock thread::Mutex *mutex; public: PoolThread(Pool *pool); ~PoolThread(); void setFinish(); void threadFunction(); }; PoolThread *poolThread; DistanceModel distanceModel; }; // Audio } // openal } // audio } // love #endif // LOVE_AUDIO_OPENAL_AUDIO_H love-0.9.1/src/modules/audio/Source.h0000644000000000000000000000677512316602166017457 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_AUDIO_SOURCE_H #define LOVE_AUDIO_SOURCE_H // LOVE #include "common/Object.h" #include "common/StringMap.h" namespace love { namespace audio { class Source : public Object { public: enum Type { TYPE_STATIC = 1, TYPE_STREAM, TYPE_MAX_ENUM }; // Type enum Unit { UNIT_SECONDS = 1, UNIT_SAMPLES, UNIT_MAX_ENUM }; Source(Type type); virtual ~Source(); virtual Source *clone() = 0; virtual bool play() = 0; virtual void stop() = 0; virtual void pause() = 0; virtual void resume() = 0; virtual void rewind() = 0; virtual bool isStopped() const = 0; virtual bool isPaused() const = 0; virtual bool isFinished() const = 0; virtual bool update() = 0; virtual void setPitch(float pitch) = 0; virtual float getPitch() const = 0; virtual void setVolume(float volume) = 0; virtual float getVolume() const = 0; virtual void seek(float offset, Unit unit) = 0; virtual float tell(Unit unit) = 0; // all float * v must be of size 3 virtual void setPosition(float *v) = 0; virtual void getPosition(float *v) const = 0; virtual void setVelocity(float *v) = 0; virtual void getVelocity(float *v) const = 0; virtual void setDirection(float *v) = 0; virtual void getDirection(float *v) const = 0; virtual void setCone(float innerAngle, float outerAngle, float outerVolume) = 0; virtual void getCone(float &innerAngle, float &outerAngle, float &outerVolume) const = 0; virtual void setRelative(bool enable) = 0; virtual bool isRelative() const = 0; virtual void setLooping(bool looping) = 0; virtual bool isLooping() const = 0; virtual bool isStatic() const = 0; virtual void setMinVolume(float volume) = 0; virtual float getMinVolume() const = 0; virtual void setMaxVolume(float volume) = 0; virtual float getMaxVolume() const = 0; virtual void setReferenceDistance(float distance) = 0; virtual float getReferenceDistance() const = 0; virtual void setRolloffFactor(float factor) = 0; virtual float getRolloffFactor() const = 0; virtual void setMaxDistance(float distance) = 0; virtual float getMaxDistance() const = 0; virtual int getChannels() const = 0; static bool getConstant(const char *in, Type &out); static bool getConstant(Type in, const char *&out); static bool getConstant(const char *in, Unit &out); static bool getConstant(Unit in, const char *&out); protected: Type type; private: static StringMap::Entry typeEntries[]; static StringMap types; static StringMap::Entry unitEntries[]; static StringMap units; }; // Source } // audio } // love #endif // LOVE_AUDIO_SOURCE_H love-0.9.1/src/modules/audio/wrap_Audio.cpp0000644000000000000000000001624012316602166020630 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Audio.h" #include "openal/Audio.h" #include "null/Audio.h" #include "common/runtime.h" namespace love { namespace audio { static Audio *instance = 0; int w_getSourceCount(lua_State *L) { lua_pushinteger(L, instance->getSourceCount()); return 1; } int w_newSource(lua_State *L) { if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T)) luax_convobj(L, 1, "filesystem", "newFileData"); if (luax_istype(L, 1, FILESYSTEM_FILE_DATA_T)) luax_convobj(L, 1, "sound", "newDecoder"); Source::Type stype = Source::TYPE_STREAM; const char *stypestr = lua_isnoneornil(L, 2) ? 0 : lua_tostring(L, 2); if (stypestr && !Source::getConstant(stypestr, stype)) return luaL_error(L, "Invalid source type: %s", stypestr); if (stype == Source::TYPE_STATIC && luax_istype(L, 1, SOUND_DECODER_T)) luax_convobj(L, 1, "sound", "newSoundData"); Source *t = 0; if (luax_istype(L, 1, SOUND_SOUND_DATA_T)) t = instance->newSource(luax_totype(L, 1, "SoundData", SOUND_SOUND_DATA_T)); else if (luax_istype(L, 1, SOUND_DECODER_T)) t = instance->newSource(luax_totype(L, 1, "Decoder", SOUND_DECODER_T)); if (t) { luax_pushtype(L, "Source", AUDIO_SOURCE_T, t); return 1; } else return luax_typerror(L, 1, "Decoder or SoundData"); } int w_play(lua_State *L) { Source *s = luax_checksource(L, 1); luax_pushboolean(L, instance->play(s)); return 1; } int w_stop(lua_State *L) { if (lua_gettop(L) == 0) { instance->stop(); } else { Source *s = luax_checksource(L, 1); s->stop(); } return 0; } int w_pause(lua_State *L) { if (lua_gettop(L) == 0) { instance->pause(); } else { Source *s = luax_checksource(L, 1); s->pause(); } return 0; } int w_resume(lua_State *L) { if (lua_gettop(L) == 0) { instance->resume(); } else { Source *s = luax_checksource(L, 1); s->resume(); } return 0; } int w_rewind(lua_State *L) { if (lua_gettop(L) == 0) { instance->rewind(); } else { Source *s = luax_checksource(L, 1); s->rewind(); } return 0; } int w_setVolume(lua_State *L) { float v = (float)luaL_checknumber(L, 1); instance->setVolume(v); return 0; } int w_getVolume(lua_State *L) { lua_pushnumber(L, instance->getVolume()); return 1; } int w_setPosition(lua_State *L) { float v[3]; v[0] = (float)luaL_checknumber(L, 1); v[1] = (float)luaL_checknumber(L, 2); v[2] = (float)luaL_optnumber(L, 3, 0); instance->setPosition(v); return 0; } int w_getPosition(lua_State *L) { float v[3]; instance->getPosition(v); lua_pushnumber(L, v[0]); lua_pushnumber(L, v[1]); lua_pushnumber(L, v[2]); return 3; } int w_setOrientation(lua_State *L) { float v[6]; v[0] = (float)luaL_checknumber(L, 1); v[1] = (float)luaL_checknumber(L, 2); v[2] = (float)luaL_checknumber(L, 3); v[3] = (float)luaL_checknumber(L, 4); v[4] = (float)luaL_checknumber(L, 5); v[5] = (float)luaL_checknumber(L, 6); instance->setOrientation(v); return 0; } int w_getOrientation(lua_State *L) { float v[6]; instance->getOrientation(v); lua_pushnumber(L, v[0]); lua_pushnumber(L, v[1]); lua_pushnumber(L, v[2]); lua_pushnumber(L, v[3]); lua_pushnumber(L, v[4]); lua_pushnumber(L, v[5]); return 6; } int w_setVelocity(lua_State *L) { float v[3]; v[0] = (float)luaL_checknumber(L, 1); v[1] = (float)luaL_checknumber(L, 2); v[2] = (float)luaL_optnumber(L, 3, 0); instance->setVelocity(v); return 0; } int w_getVelocity(lua_State *L) { float v[3]; instance->getVelocity(v); lua_pushnumber(L, v[0]); lua_pushnumber(L, v[1]); lua_pushnumber(L, v[2]); return 3; } int w_record(lua_State *) { instance->record(); return 0; } int w_getRecordedData(lua_State *L) { love::sound::SoundData *sd = instance->getRecordedData(); if (!sd) lua_pushnil(L); else luax_pushtype(L, "SoundData", SOUND_SOUND_DATA_T, sd); return 1; } int w_stopRecording(lua_State *L) { if (luax_optboolean(L, 1, true)) { love::sound::SoundData *sd = instance->stopRecording(true); if (!sd) lua_pushnil(L); else luax_pushtype(L, "SoundData", SOUND_SOUND_DATA_T, sd); return 1; } instance->stopRecording(false); return 0; } int w_canRecord(lua_State *L) { luax_pushboolean(L, instance->canRecord()); return 1; } int w_setDistanceModel(lua_State *L) { const char *modelStr = luaL_checkstring(L, 1); Audio::DistanceModel distanceModel; if (!Audio::getConstant(modelStr, distanceModel)) return luaL_error(L, "Invalid distance model: %s", modelStr); instance->setDistanceModel(distanceModel); return 0; } int w_getDistanceModel(lua_State *L) { Audio::DistanceModel distanceModel = instance->getDistanceModel(); const char *modelStr; if (!Audio::getConstant(distanceModel, modelStr)) return 0; lua_pushstring(L, modelStr); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "getSourceCount", w_getSourceCount }, { "newSource", w_newSource }, { "play", w_play }, { "stop", w_stop }, { "pause", w_pause }, { "resume", w_resume }, { "rewind", w_rewind }, { "setVolume", w_setVolume }, { "getVolume", w_getVolume }, { "setPosition", w_setPosition }, { "getPosition", w_getPosition }, { "setOrientation", w_setOrientation }, { "getOrientation", w_getOrientation }, { "setVelocity", w_setVelocity }, { "getVelocity", w_getVelocity }, /*{ "record", w_record }, { "getRecordedData", w_getRecordedData }, { "stopRecording", w_stopRecording },*/ { "setDistanceModel", w_setDistanceModel }, { "getDistanceModel", w_getDistanceModel }, { 0, 0 } }; static const lua_CFunction types[] = { luaopen_source, 0 }; extern "C" int luaopen_love_audio(lua_State *L) { #ifdef LOVE_ENABLE_AUDIO_OPENAL if (instance == 0) { // Try OpenAL first. try { instance = new love::audio::openal::Audio(); } catch(love::Exception &e) { std::cout << e.what() << std::endl; } } else instance->retain(); #endif #ifdef LOVE_ENABLE_AUDIO_NULL if (instance == 0) { // Fall back to nullaudio. try { instance = new love::audio::null::Audio(); } catch(love::Exception &e) { std::cout << e.what() << std::endl; } } #endif if (instance == 0) return luaL_error(L, "Could not open any audio module."); WrappedModule w; w.module = instance; w.name = "audio"; w.flags = MODULE_T; w.functions = functions; w.types = types; int n = luax_register_module(L, w); return n; } } // audio } // love love-0.9.1/src/modules/audio/wrap_Source.h0000644000000000000000000000502212316602166020470 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_AUDIO_WRAP_SOURCE_H #define LOVE_AUDIO_WRAP_SOURCE_H #include "common/runtime.h" #include "Source.h" namespace love { namespace audio { Source *luax_checksource(lua_State *L, int idx); int w_Source_clone(lua_State *L); int w_Source_play(lua_State *L); int w_Source_stop(lua_State *L); int w_Source_pause(lua_State *L); int w_Source_resume(lua_State *L); int w_Source_rewind(lua_State *L); int w_Source_setPitch(lua_State *L); int w_Source_getPitch(lua_State *L); int w_Source_setVolume(lua_State *L); int w_Source_getVolume(lua_State *L); int w_Source_seek(lua_State *L); int w_Source_tell(lua_State *L); int w_Source_setPosition(lua_State *L); int w_Source_getPosition(lua_State *L); int w_Source_setVelocity(lua_State *L); int w_Source_getVelocity(lua_State *L); int w_Source_setDirection(lua_State *L); int w_Source_getDirection(lua_State *L); int w_Source_setCone(lua_State *L); int w_Source_getCone(lua_State *L); int w_Source_setRelative(lua_State *L); int w_Source_isRelative(lua_State *L); int w_Source_setLooping(lua_State *L); int w_Source_isLooping(lua_State *L); int w_Source_isStopped(lua_State *L); int w_Source_isPaused(lua_State *L); int w_Source_isPlaying(lua_State *L); int w_Source_isStatic(lua_State *L); int w_Source_setVolumeLimits(lua_State *L); int w_Source_getVolumeLimits(lua_State *L); int w_Source_setAttenuationDistances(lua_State *L); int w_Source_getAttenuationDistances(lua_State *L); int w_Source_setRolloff(lua_State *L); int w_Source_getRolloff(lua_State *L); int w_Source_getChannels(lua_State *L); extern "C" int luaopen_source(lua_State *L); } // audio } // love #endif // LOVE_AUDIO_WRAP_SOURCE_H love-0.9.1/src/modules/audio/Audio.h0000644000000000000000000001405612316602166017247 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented = 0; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_AUDIO_AUDIO_H #define LOVE_AUDIO_AUDIO_H #include "common/Module.h" #include "common/StringMap.h" #include "Source.h" namespace love { namespace sound { class Decoder; class SoundData; } // sound namespace audio { /** * The Audio module is responsible for playing back raw sound samples. **/ class Audio : public Module { public: /** * Attenuation by distance. */ enum DistanceModel { DISTANCE_NONE = 1, DISTANCE_INVERSE, DISTANCE_INVERSE_CLAMPED, DISTANCE_LINEAR, DISTANCE_LINEAR_CLAMPED, DISTANCE_EXPONENT, DISTANCE_EXPONENT_CLAMPED, DISTANCE_MAX_ENUM }; static bool getConstant(const char *in, DistanceModel &out); static bool getConstant(DistanceModel in, const char *&out); /** * Destructor. **/ virtual ~Audio() {} virtual Source *newSource(love::sound::Decoder *decoder) = 0; virtual Source *newSource(love::sound::SoundData *soundData) = 0; /** * Gets the current number of simultaneous playing sources. * @return The current number of simultaneous playing sources. **/ virtual int getSourceCount() const = 0; /** * Gets the maximum supported number of simultaneous playing sources. * @return The maximum supported number of simultaneous playing sources. **/ virtual int getMaxSources() const = 0; /** * Play the specified Source. * @param source The Source to play. **/ virtual bool play(Source *source) = 0; /** * Stops playback on the specified source. * @param source The source on which to stop the playback. **/ virtual void stop(Source *source) = 0; /** * Stops all playing audio. **/ virtual void stop() = 0; /** * Pauses playback on the specified source. * @param source The source on which to pause the playback. **/ virtual void pause(Source *source) = 0; /** * Pauses all audio. **/ virtual void pause() = 0; /** * Resumes playback on the specified source. * @param source The source on which to resume the playback. **/ virtual void resume(Source *source) = 0; /** * Resumes all audio. **/ virtual void resume() = 0; /** * Rewinds the specified source. Whatever is playing on this * source gets rewound to the start. * @param source The source to rewind. **/ virtual void rewind(Source *source) = 0; /** * Rewinds all playing audio. **/ virtual void rewind() = 0; /** * Sets the master volume, where 0.0f is min (off) and 1.0f is max. * @param volume The new master volume. **/ virtual void setVolume(float volume) = 0; /** * Gets the master volume. * @return The current master volume. **/ virtual float getVolume() const = 0; /** * Gets the position of the listener. * @param v A float array of size 3 containing (x,y,z) in that order. **/ virtual void getPosition(float *v) const = 0; /** * Sets the position of the listener. * @param v A float array of size 3 containing [x,y,z] in that order. **/ virtual void setPosition(float *v) = 0; /** * Gets the orientation of the listener. * @param v A float array of size 6 containing [x,y,z] for the forward * vector, followed by [x,y,z] for the up vector. **/ virtual void getOrientation(float *v) const = 0; /** * Sets the orientation of the listener. * @param v A float array of size 6 containing [x,y,z] for the forward * vector, followed by [x,y,z] for the up vector. **/ virtual void setOrientation(float *v) = 0; /** * Gets the velocity of the listener. * @param v A float array of size 3 containing [x,y,z] in that order. **/ virtual void getVelocity(float *v) const = 0; /** * Sets the velocity of the listener. * @param v A float array of size 3 containing [x,y,z] in that order. **/ virtual void setVelocity(float *v) = 0; /** * Begins recording audio input from the microphone. **/ virtual void record() = 0; /** * Gets a section of recorded audio. * Per OpenAL, the measurement begins from the start of the * audio data in memory, which is after the last time this function * was called. If this function has not been called yet this recording * session, it just grabs from the beginning. * @return All the recorded SoundData thus far. **/ virtual love::sound::SoundData *getRecordedData() = 0; /** * Stops recording and, if passed true, returns all the recorded audio * not already gotten by getRecordedData. * @param returnData Whether to return recorded audio. * @return if returnData, all the recorded audio yet to be gotten, * otherwise NULL. **/ virtual love::sound::SoundData *stopRecording(bool returnData) = 0; /** * Checks whether LOVE is able to record audio input. * @return hasMic Whether LOVE has a microphone enabled. **/ virtual bool canRecord() = 0; /** * Gets the distance model used for attenuation. * @return Distance model. */ virtual DistanceModel getDistanceModel() const = 0; /** * Sets the distance model used for attenuation. * @param distanceModel Distance model. */ virtual void setDistanceModel(DistanceModel distanceModel) = 0; private: static StringMap::Entry distanceModelEntries[]; static StringMap distanceModels; }; // Audio } // audio } // love #endif // LOVE_AUDIO_AUDIO_H love-0.9.1/src/modules/graphics/0000755000000000000000000000000012316602462016525 5ustar00rootroot00000000000000love-0.9.1/src/modules/graphics/Texture.cpp0000644000000000000000000000640612316602166020700 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Texture.h" namespace love { namespace graphics { Texture::Filter Texture::defaultFilter; Texture::Filter::Filter() : min(FILTER_LINEAR) , mag(FILTER_LINEAR) , mipmap(FILTER_NONE) , anisotropy(1.0f) { } Texture::Wrap::Wrap() : s(WRAP_CLAMP) , t(WRAP_CLAMP) { } Texture::Texture() : width(0) , height(0) , filter(getDefaultFilter()) , wrap() , vertices() { } Texture::~Texture() { } int Texture::getWidth() const { return width; } int Texture::getHeight() const { return height; } const Texture::Filter &Texture::getFilter() const { return filter; } const Texture::Wrap &Texture::getWrap() const { return wrap; } const Vertex *Texture::getVertices() const { return vertices; } void Texture::setDefaultFilter(const Filter &f) { defaultFilter = f; } const Texture::Filter &Texture::getDefaultFilter() { return defaultFilter; } bool Texture::getConstant(const char *in, FilterMode &out) { return filterModes.find(in, out); } bool Texture::getConstant(FilterMode in, const char *&out) { return filterModes.find(in, out); } bool Texture::getConstant(const char *in, WrapMode &out) { return wrapModes.find(in, out); } bool Texture::getConstant(WrapMode in, const char *&out) { return wrapModes.find(in, out); } bool Texture::getConstant(const char *in, Format &out) { return formats.find(in, out); } bool Texture::getConstant(Format in, const char *&out) { return formats.find(in, out); } StringMap::Entry Texture::filterModeEntries[] = { { "linear", Texture::FILTER_LINEAR }, { "nearest", Texture::FILTER_NEAREST }, }; StringMap Texture::filterModes(Texture::filterModeEntries, sizeof(Texture::filterModeEntries)); StringMap::Entry Texture::wrapModeEntries[] = { { "clamp", Texture::WRAP_CLAMP }, { "repeat", Texture::WRAP_REPEAT }, }; StringMap Texture::wrapModes(Texture::wrapModeEntries, sizeof(Texture::wrapModeEntries)); StringMap::Entry Texture::formatEntries[] = { {"normal", Texture::FORMAT_NORMAL}, {"hdr", Texture::FORMAT_HDR}, {"srgb", Texture::FORMAT_SRGB}, }; StringMap Texture::formats(Texture::formatEntries, sizeof(Texture::formatEntries)); } // graphics } // love love-0.9.1/src/modules/graphics/Quad.cpp0000644000000000000000000000356412316602166020134 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "Quad.h" // C #include // For memcpy namespace love { namespace graphics { Quad::Quad(const Quad::Viewport &v, float sw, float sh) : sw(sw) , sh(sh) { memset(vertices, 255, sizeof(Vertex) * NUM_VERTICES); refresh(v, sw, sh); } Quad::~Quad() { } void Quad::refresh(const Quad::Viewport &v, float sw, float sh) { viewport = v; vertices[0].x = 0; vertices[0].y = 0; vertices[1].x = 0; vertices[1].y = v.h; vertices[2].x = v.w; vertices[2].y = v.h; vertices[3].x = v.w; vertices[3].y = 0; vertices[0].s = v.x/sw; vertices[0].t = v.y/sh; vertices[1].s = v.x/sw; vertices[1].t = (v.y+v.h)/sh; vertices[2].s = (v.x+v.w)/sw; vertices[2].t = (v.y+v.h)/sh; vertices[3].s = (v.x+v.w)/sw; vertices[3].t = v.y/sh; } void Quad::setViewport(const Quad::Viewport &v) { refresh(v, sw, sh); } Quad::Viewport Quad::getViewport() const { return viewport; } const Vertex *Quad::getVertices() const { return vertices; } } // graphics } // love love-0.9.1/src/modules/graphics/Graphics.h0000644000000000000000000001202312316602166020435 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_GRAPHICS_H #define LOVE_GRAPHICS_GRAPHICS_H // LOVE #include "common/Module.h" #include "common/StringMap.h" namespace love { namespace graphics { class Graphics : public Module { public: enum DrawMode { DRAW_LINE = 1, DRAW_FILL, DRAW_MAX_ENUM }; enum AlignMode { ALIGN_LEFT = 1, ALIGN_CENTER, ALIGN_RIGHT, ALIGN_JUSTIFY, ALIGN_MAX_ENUM }; enum BlendMode { BLEND_ALPHA = 1, BLEND_ADDITIVE, BLEND_SUBTRACTIVE, BLEND_MULTIPLICATIVE, BLEND_PREMULTIPLIED, BLEND_SCREEN, BLEND_REPLACE, BLEND_MAX_ENUM }; enum LineStyle { LINE_ROUGH = 1, LINE_SMOOTH, LINE_MAX_ENUM }; enum LineJoin { LINE_JOIN_NONE = 1, LINE_JOIN_MITER, LINE_JOIN_BEVEL, LINE_JOIN_MAX_ENUM }; enum PointStyle { POINT_ROUGH = 1, POINT_SMOOTH, POINT_MAX_ENUM }; enum Support { SUPPORT_CANVAS = 1, SUPPORT_HDR_CANVAS, SUPPORT_MULTI_CANVAS, SUPPORT_SHADER, SUPPORT_NPOT, SUPPORT_SUBTRACTIVE, SUPPORT_MIPMAP, SUPPORT_DXT, SUPPORT_BC5, SUPPORT_INSTANCING, SUPPORT_SRGB, SUPPORT_MAX_ENUM }; enum RendererInfo { RENDERER_INFO_NAME = 1, RENDERER_INFO_VERSION, RENDERER_INFO_VENDOR, RENDERER_INFO_DEVICE, RENDERER_INFO_MAX_ENUM }; enum SystemLimit { LIMIT_POINT_SIZE, LIMIT_TEXTURE_SIZE, LIMIT_MULTI_CANVAS, LIMIT_CANVAS_FSAA, LIMIT_MAX_ENUM }; virtual ~Graphics(); /** * Sets the current graphics display viewport dimensions. **/ virtual void setViewportSize(int width, int height) = 0; /** * Sets the current graphics display viewport and initializes the renderer. * @param width The viewport width. * @param height The viewport height. **/ virtual bool setMode(int width, int height, bool &sRGB) = 0; /** * Un-sets the current graphics display mode (uninitializing objects if * necessary.) **/ virtual void unSetMode() = 0; static bool getConstant(const char *in, DrawMode &out); static bool getConstant(DrawMode in, const char *&out); static bool getConstant(const char *in, AlignMode &out); static bool getConstant(AlignMode in, const char *&out); static bool getConstant(const char *in, BlendMode &out); static bool getConstant(BlendMode in, const char *&out); static bool getConstant(const char *in, LineStyle &out); static bool getConstant(LineStyle in, const char *&out); static bool getConstant(const char *in, LineJoin &out); static bool getConstant(LineJoin in, const char *&out); static bool getConstant(const char *in, PointStyle &out); static bool getConstant(PointStyle in, const char *&out); static bool getConstant(const char *in, Support &out); static bool getConstant(Support in, const char *&out); static bool getConstant(const char *in, RendererInfo &out); static bool getConstant(RendererInfo in, const char *&out); static bool getConstant(const char *in, SystemLimit &out); static bool getConstant(SystemLimit in, const char *&out); private: static StringMap::Entry drawModeEntries[]; static StringMap drawModes; static StringMap::Entry alignModeEntries[]; static StringMap alignModes; static StringMap::Entry blendModeEntries[]; static StringMap blendModes; static StringMap::Entry lineStyleEntries[]; static StringMap lineStyles; static StringMap::Entry lineJoinEntries[]; static StringMap lineJoins; static StringMap::Entry pointStyleEntries[]; static StringMap pointStyles; static StringMap::Entry supportEntries[]; static StringMap support; static StringMap::Entry rendererInfoEntries[]; static StringMap rendererInfo; static StringMap::Entry systemLimitEntries[]; static StringMap systemLimits; }; // Graphics } // graphics } // love #endif // LOVE_GRAPHICS_GRAPHICS_H love-0.9.1/src/modules/graphics/Color.h0000644000000000000000000000427012316602166017760 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2011 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_COLOR_H #define LOVE_GRAPHICS_COLOR_H namespace love { namespace graphics { template struct ColorT { T r; T g; T b; T a; ColorT() : r(0), g(0), b(0), a(0) {} ColorT(T r_, T g_, T b_, T a_) : r(r_), g(g_), b(b_), a(a_) {} void set(T r_, T g_, T b_, T a_) { r = r_; g = g_; b = b_; a = a_; } ColorT operator+=(const ColorT &other); ColorT operator*=(T s); ColorT operator/=(T s); }; template ColorT ColorT::operator+=(const ColorT &other) { r += other.r; g += other.g; b += other.b; a += other.a; return *this; } template ColorT ColorT::operator*=(T s) { r *= s; g *= s; b *= s; a *= s; return *this; } template ColorT ColorT::operator/=(T s) { r /= s; g /= s; b /= s; a /= s; return *this; } template ColorT operator+(const ColorT &a, const ColorT &b) { ColorT tmp(a); return tmp += b; } template ColorT operator*(const ColorT &a, T s) { ColorT tmp(a); return tmp *= s; } template ColorT operator/(const ColorT &a, T s) { ColorT tmp(a); return tmp /= s; } typedef ColorT Color; typedef ColorT Colorf; } // graphics } // love #endif // LOVE_GRAPHICS_COLOR_H love-0.9.1/src/modules/graphics/Graphics.cpp0000644000000000000000000001505112316602166020774 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Graphics.h" namespace love { namespace graphics { Graphics::~Graphics() { } bool Graphics::getConstant(const char *in, DrawMode &out) { return drawModes.find(in, out); } bool Graphics::getConstant(DrawMode in, const char *&out) { return drawModes.find(in, out); } bool Graphics::getConstant(const char *in, AlignMode &out) { return alignModes.find(in, out); } bool Graphics::getConstant(AlignMode in, const char *&out) { return alignModes.find(in, out); } bool Graphics::getConstant(const char *in, BlendMode &out) { return blendModes.find(in, out); } bool Graphics::getConstant(BlendMode in, const char *&out) { return blendModes.find(in, out); } bool Graphics::getConstant(const char *in, LineStyle &out) { return lineStyles.find(in, out); } bool Graphics::getConstant(LineStyle in, const char *&out) { return lineStyles.find(in, out); } bool Graphics::getConstant(const char *in, LineJoin &out) { return lineJoins.find(in, out); } bool Graphics::getConstant(LineJoin in, const char *&out) { return lineJoins.find(in, out); } bool Graphics::getConstant(const char *in, PointStyle &out) { return pointStyles.find(in, out); } bool Graphics::getConstant(PointStyle in, const char *&out) { return pointStyles.find(in, out); } bool Graphics::getConstant(const char *in, Support &out) { return support.find(in, out); } bool Graphics::getConstant(Support in, const char *&out) { return support.find(in, out); } bool Graphics::getConstant(const char *in, RendererInfo &out) { return rendererInfo.find(in, out); } bool Graphics::getConstant(RendererInfo in, const char *&out) { return rendererInfo.find(in, out); } bool Graphics::getConstant(const char *in, SystemLimit &out) { return systemLimits.find(in, out); } bool Graphics::getConstant(SystemLimit in, const char *&out) { return systemLimits.find(in, out); } StringMap::Entry Graphics::drawModeEntries[] = { { "line", Graphics::DRAW_LINE }, { "fill", Graphics::DRAW_FILL }, }; StringMap Graphics::drawModes(Graphics::drawModeEntries, sizeof(Graphics::drawModeEntries)); StringMap::Entry Graphics::alignModeEntries[] = { { "left", Graphics::ALIGN_LEFT }, { "right", Graphics::ALIGN_RIGHT }, { "center", Graphics::ALIGN_CENTER }, { "justify", Graphics::ALIGN_JUSTIFY }, }; StringMap Graphics::alignModes(Graphics::alignModeEntries, sizeof(Graphics::alignModeEntries)); StringMap::Entry Graphics::blendModeEntries[] = { { "alpha", Graphics::BLEND_ALPHA }, { "additive", Graphics::BLEND_ADDITIVE }, { "subtractive", Graphics::BLEND_SUBTRACTIVE }, { "multiplicative", Graphics::BLEND_MULTIPLICATIVE }, { "premultiplied", Graphics::BLEND_PREMULTIPLIED }, { "screen", Graphics::BLEND_SCREEN }, { "replace", Graphics::BLEND_REPLACE }, }; StringMap Graphics::blendModes(Graphics::blendModeEntries, sizeof(Graphics::blendModeEntries)); StringMap::Entry Graphics::lineStyleEntries[] = { { "smooth", Graphics::LINE_SMOOTH }, { "rough", Graphics::LINE_ROUGH } }; StringMap Graphics::lineStyles(Graphics::lineStyleEntries, sizeof(Graphics::lineStyleEntries)); StringMap::Entry Graphics::lineJoinEntries[] = { { "none", Graphics::LINE_JOIN_NONE }, { "miter", Graphics::LINE_JOIN_MITER }, { "bevel", Graphics::LINE_JOIN_BEVEL } }; StringMap Graphics::lineJoins(Graphics::lineJoinEntries, sizeof(Graphics::lineJoinEntries)); StringMap::Entry Graphics::pointStyleEntries[] = { { "smooth", Graphics::POINT_SMOOTH }, { "rough", Graphics::POINT_ROUGH } }; StringMap Graphics::pointStyles(Graphics::pointStyleEntries, sizeof(Graphics::pointStyleEntries)); StringMap::Entry Graphics::supportEntries[] = { { "canvas", Graphics::SUPPORT_CANVAS }, { "hdrcanvas", Graphics::SUPPORT_HDR_CANVAS }, { "multicanvas", Graphics::SUPPORT_MULTI_CANVAS }, { "shader", Graphics::SUPPORT_SHADER }, { "npot", Graphics::SUPPORT_NPOT }, { "subtractive", Graphics::SUPPORT_SUBTRACTIVE }, { "mipmap", Graphics::SUPPORT_MIPMAP }, { "dxt", Graphics::SUPPORT_DXT }, { "bc5", Graphics::SUPPORT_BC5 }, { "instancing", Graphics::SUPPORT_INSTANCING }, { "srgb", Graphics::SUPPORT_SRGB }, }; StringMap Graphics::support(Graphics::supportEntries, sizeof(Graphics::supportEntries)); StringMap::Entry Graphics::rendererInfoEntries[] = { { "name", Graphics::RENDERER_INFO_NAME }, { "version", Graphics::RENDERER_INFO_VERSION }, { "vendor", Graphics::RENDERER_INFO_VENDOR }, { "device", Graphics::RENDERER_INFO_DEVICE }, }; StringMap Graphics::rendererInfo(Graphics::rendererInfoEntries, sizeof(Graphics::rendererInfoEntries)); StringMap::Entry Graphics::systemLimitEntries[] = { {"pointsize", Graphics::LIMIT_POINT_SIZE}, {"texturesize", Graphics::LIMIT_TEXTURE_SIZE}, {"multicanvas", Graphics::LIMIT_MULTI_CANVAS}, {"canvasfsaa", Graphics::LIMIT_CANVAS_FSAA}, }; StringMap Graphics::systemLimits(Graphics::systemLimitEntries, sizeof(Graphics::systemLimitEntries)); } // graphics } // love love-0.9.1/src/modules/graphics/Quad.h0000644000000000000000000000307212316602166017573 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_QUAD_H #define LOVE_GRAPHICS_QUAD_H // LOVE #include "common/Object.h" #include "common/math.h" namespace love { namespace graphics { class Quad : public Object { public: struct Viewport { float x, y; float w, h; }; static const size_t NUM_VERTICES = 4; Quad(const Viewport &v, float sw, float sh); virtual ~Quad(); void refresh(const Viewport &v, float sw, float sh); void setViewport(const Viewport &v); Viewport getViewport() const; const Vertex *getVertices() const; private: Vertex vertices[NUM_VERTICES]; Viewport viewport; float sw; float sh; }; // Quad } // graphics } // love #endif // LOVE_GRAPHICS_QUAD_H love-0.9.1/src/modules/graphics/Volatile.h0000644000000000000000000000447612316602166020471 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_VOLATILE_H #define LOVE_GRAPHICS_VOLATILE_H // STL #include namespace love { namespace graphics { /** * This class is the superclass of all objects which must completely or * partially reload when the user changes the display resolution. All * volatile objects will be notified when the display mode changes. * * @author Anders Ruud **/ class Volatile { private: // A list of all Volatile object currently alive. static std::list all; public: /** * Constructor. Automatically adds \c this into the list * of volatile objects. **/ Volatile(); /** * Destructor. Removes \c this from the list of volatile * objects. **/ virtual ~Volatile(); /** * Loads the part(s) of the object which is destroyed when * the display mode is changed. * * @return True if successful, false on errors. **/ virtual bool loadVolatile() = 0; /** * Unloads the part(s) of the objects which would be destroyed * anyway when the display mode is changed. **/ virtual void unloadVolatile() = 0; // Static: /** * Calls \c loadVolatile() on each element in the list of volatiles. * * @return True if all elements succeeded, false if one or more failed. **/ static bool loadAll(); /** * Calls \c unloadVolatile() on each element in the list of volatiles. **/ static void unloadAll(); }; // Volatile } // graphics } // love #endif // LOVE_GRAPHICS_VOLATILE_H love-0.9.1/src/modules/graphics/Drawable.h0000644000000000000000000000365112316602166020425 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_DRAWABLE_H #define LOVE_GRAPHICS_DRAWABLE_H // LOVE #include "common/Object.h" namespace love { namespace graphics { /** * A Drawable is anything that can be drawn on screen with a * position, scale and orientation. **/ class Drawable : public Object { public: /** * Destructor. **/ virtual ~Drawable() {} /** * Draws the object with the specified transformation. * * @param x The position of the object along the x-axis. * @param y The position of the object along the y-axis. * @param angle The angle of the object (in radians). * @param sx The scale factor along the x-axis. * @param sy The scale factor along the y-axis. * @param ox The origin offset along the x-axis. * @param oy The origin offset along the y-axis. * @param kx Shear along the x-axis. * @param ky Shear along the y-axis. **/ virtual void draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) = 0; }; } // graphics } // love #endif // LOVE_GRAPHICS_DRAWABLE_H love-0.9.1/src/modules/graphics/Volatile.cpp0000644000000000000000000000306012316602166021010 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Volatile.h" namespace love { namespace graphics { // Static members. std::list Volatile::all; Volatile::Volatile() { // Insert this object into "all". all.push_back(this); } Volatile::~Volatile() { // Remove the pointer to this object. all.remove(this); } bool Volatile::loadAll() { bool success = true; std::list::iterator i = all.begin(); while (i != all.end()) { success = success && (*i)->loadVolatile(); i++; } return success; } void Volatile::unloadAll() { std::list::iterator i = all.begin(); while (i != all.end()) { (*i)->unloadVolatile(); i++; } } } // graphics } // love love-0.9.1/src/modules/graphics/Texture.h0000644000000000000000000000740712316602166020347 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_TEXTURE_H #define LOVE_GRAPHICS_TEXTURE_H // LOVE #include "common/StringMap.h" #include "common/math.h" #include "Drawable.h" #include "Quad.h" namespace love { namespace graphics { /** * Base class for 2D textures. All textures can be drawn with Quads, have a * width and height, and have filter and wrap modes. **/ class Texture : public Drawable { public: enum WrapMode { WRAP_CLAMP, WRAP_REPEAT, WRAP_MAX_ENUM }; enum FilterMode { FILTER_NONE, FILTER_LINEAR, FILTER_NEAREST, FILTER_MAX_ENUM }; enum Format { FORMAT_NORMAL, FORMAT_HDR, FORMAT_SRGB, FORMAT_MAX_ENUM }; struct Filter { Filter(); FilterMode min; FilterMode mag; FilterMode mipmap; float anisotropy; }; struct Wrap { Wrap(); WrapMode s; WrapMode t; }; Texture(); virtual ~Texture(); /** * Draws the texture using the specified transformation with a Quad applied. * * @param quad The Quad object to use to draw the object. * @param x The position of the object along the x-axis. * @param y The position of the object along the y-axis. * @param angle The angle of the object (in radians). * @param sx The scale factor along the x-axis. * @param sy The scale factor along the y-axis. * @param ox The origin offset along the x-axis. * @param oy The origin offset along the y-axis. * @param kx Shear along the x-axis. * @param ky Shear along the y-axis. **/ virtual void drawq(Quad *quad, float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) = 0; virtual int getWidth() const; virtual int getHeight() const; virtual void setFilter(const Filter &f) = 0; virtual const Filter &getFilter() const; virtual void setWrap(const Wrap &w) = 0; virtual const Wrap &getWrap() const; virtual const Vertex *getVertices() const; // The default filter. static void setDefaultFilter(const Filter &f); static const Filter &getDefaultFilter(); static bool getConstant(const char *in, FilterMode &out); static bool getConstant(FilterMode in, const char *&out); static bool getConstant(const char *in, WrapMode &out); static bool getConstant(WrapMode in, const char *&out); static bool getConstant(const char *in, Format &out); static bool getConstant(Format in, const char *&out); protected: int width; int height; Filter filter; Wrap wrap; Vertex vertices[4]; private: // The default texture filter. static Filter defaultFilter; static StringMap::Entry filterModeEntries[]; static StringMap filterModes; static StringMap::Entry wrapModeEntries[]; static StringMap wrapModes; static StringMap::Entry formatEntries[]; static StringMap formats; }; // Texture } // graphics } // love #endif // LOVE_GRAPHICS_TEXTURE_H love-0.9.1/src/modules/graphics/opengl/0000755000000000000000000000000012316602462020011 5ustar00rootroot00000000000000love-0.9.1/src/modules/graphics/opengl/VertexBuffer.cpp0000644000000000000000000002337712316602166023141 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "VertexBuffer.h" #include "common/Exception.h" #include "common/config.h" #include #include #include #include // Conflicts with std::numeric_limits::max() (Windows). #ifdef max # undef max #endif namespace love { namespace graphics { namespace opengl { // VertexBuffer VertexBuffer *VertexBuffer::Create(size_t size, GLenum target, GLenum usage, MemoryBacking backing) { try { // Try to create a VBO. return new VBO(size, target, usage, backing); } catch(const love::Exception &) { // VBO not supported ... create regular array. return new VertexArray(size, target, usage, backing); } } VertexBuffer::VertexBuffer(size_t size, GLenum target, GLenum usage, MemoryBacking backing) : is_bound(false) , is_mapped(false) , size(size) , target(target) , usage(usage) , backing(backing) { } VertexBuffer::~VertexBuffer() { } // VertexArray VertexArray::VertexArray(size_t size, GLenum target, GLenum usage, MemoryBacking backing) : VertexBuffer(size, target, usage, backing) , buf(new char[size]) { } VertexArray::~VertexArray() { delete [] buf; } void *VertexArray::map() { is_mapped = true; return buf; } void VertexArray::unmap() { is_mapped = false; } void VertexArray::bind() { is_bound = true; } void VertexArray::unbind() { is_bound = false; } void VertexArray::fill(size_t offset, size_t size, const void *data) { memcpy(buf + offset, data, size); } const void *VertexArray::getPointer(size_t offset) const { return buf + offset; } // VBO VBO::VBO(size_t size, GLenum target, GLenum usage, MemoryBacking backing) : VertexBuffer(size, target, usage, backing) , vbo(0) , memory_map(0) , is_dirty(true) { if (!(GLEE_ARB_vertex_buffer_object || GLEE_VERSION_1_5)) throw love::Exception("Not supported"); if (getMemoryBacking() == BACKING_FULL) memory_map = malloc(getSize()); bool ok = load(false); if (!ok) { free(memory_map); throw love::Exception("Could not load VBO."); } } VBO::~VBO() { if (vbo != 0) unload(false); if (memory_map) free(memory_map); } void *VBO::map() { if (is_mapped) return memory_map; if (!memory_map) { memory_map = malloc(getSize()); if (!memory_map) throw love::Exception("Out of memory (oh the humanity!)"); } if (is_dirty) { glGetBufferSubDataARB(getTarget(), 0, (GLsizeiptr) getSize(), memory_map); is_dirty = false; } is_mapped = true; return memory_map; } void VBO::unmap() { if (!is_mapped) return; // VBO::bind is a no-op when the VBO is mapped, so we have to make sure it's // bound here. if (!is_bound) { glBindBufferARB(getTarget(), vbo); is_bound = true; } // "orphan" current buffer to avoid implicit synchronisation on the GPU: // http://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-AsynchronousBufferTransfers.pdf glBufferDataARB(getTarget(), (GLsizeiptr) getSize(), NULL, getUsage()); glBufferDataARB(getTarget(), (GLsizeiptr) getSize(), memory_map, getUsage()); is_mapped = false; } void VBO::bind() { if (!is_mapped) { glBindBufferARB(getTarget(), vbo); is_bound = true; } } void VBO::unbind() { if (is_bound) glBindBufferARB(getTarget(), 0); is_bound = false; } void VBO::fill(size_t offset, size_t size, const void *data) { if (is_mapped || getMemoryBacking() == BACKING_FULL) memcpy(static_cast(memory_map) + offset, data, size); if (!is_mapped) { // Not all systems have access to some faster paths... if (GLEE_APPLE_flush_buffer_range) { void *mapdata = glMapBufferARB(getTarget(), GL_WRITE_ONLY); if (mapdata) { // We specified in VBO::load that we'll do manual flushing. // Now we tell the driver it only needs to deal with the data // we changed. memcpy(static_cast(mapdata) + offset, data, size); glFlushMappedBufferRangeAPPLE(getTarget(), (GLintptr) offset, (GLsizei) size); } glUnmapBufferARB(getTarget()); } else { // Fall back to a possibly slower SubData (more chance of syncing.) glBufferSubDataARB(getTarget(), (GLintptr) offset, (GLsizeiptr) size, data); } if (getMemoryBacking() != BACKING_FULL) is_dirty = true; } } const void *VBO::getPointer(size_t offset) const { return BUFFER_OFFSET(offset); } bool VBO::loadVolatile() { return load(true); } void VBO::unloadVolatile() { unload(true); } bool VBO::load(bool restore) { glGenBuffersARB(1, &vbo); VertexBuffer::Bind bind(*this); // Copy the old buffer only if 'restore' was requested. const GLvoid *src = restore ? memory_map : 0; while (GL_NO_ERROR != glGetError()) /* clear error messages */; // We don't want to flush the entire buffer when we just modify a small // portion of it (VBO::fill without VBO::map), so we'll handle the flushing // ourselves when we can. if (GLEE_APPLE_flush_buffer_range) glBufferParameteriAPPLE(getTarget(), GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE); // Note that if 'src' is '0', no data will be copied. glBufferDataARB(getTarget(), (GLsizeiptr) getSize(), src, getUsage()); GLenum err = glGetError(); return (GL_NO_ERROR == err); } void VBO::unload(bool save) { // Save data before unloading, if we need to. if (save && getMemoryBacking() == BACKING_PARTIAL) { VertexBuffer::Bind bind(*this); bool mapped = is_mapped; map(); // saves buffer content to memory_map. is_mapped = mapped; } glDeleteBuffersARB(1, &vbo); vbo = 0; } // VertexIndex size_t VertexIndex::maxSize = 0; size_t VertexIndex::elementSize = 0; std::list VertexIndex::sizeRefs; VertexBuffer *VertexIndex::element_array = NULL; VertexIndex::VertexIndex(size_t size) : size(size) { // The upper limit is the maximum of GLuint divided by six (the number // of indices per size) and divided by the size of GLuint. This guarantees // no overflows when calculating the array size in bytes. // Memory issues will be handled by other exceptions. if (size == 0 || size > ((GLuint) -1) / 6 / sizeof(GLuint)) throw love::Exception("Invalid size."); addSize(size); } VertexIndex::~VertexIndex() { removeSize(size); } size_t VertexIndex::getSize() const { return size; } size_t VertexIndex::getIndexCount(size_t elements) const { return elements * 6; } GLenum VertexIndex::getType(size_t s) const { // Calculates if unsigned short is big enough to hold all the vertex indices. static const GLenum type_table[] = {GL_UNSIGNED_SHORT, GL_UNSIGNED_INT}; return type_table[s * 4 > std::numeric_limits::max()]; // if buffer-size > max(GLushort) then GL_UNSIGNED_INT else GL_UNSIGNED_SHORT } size_t VertexIndex::getElementSize() { return elementSize; } VertexBuffer *VertexIndex::getVertexBuffer() const { return element_array; } const void *VertexIndex::getPointer(size_t offset) const { return element_array->getPointer(offset); } void VertexIndex::addSize(size_t newSize) { if (newSize <= maxSize) { // Current size is bigger. Append the size to list and sort. sizeRefs.push_back(newSize); sizeRefs.sort(); return; } // Try to resize before adding it to the list because resize may throw. resize(newSize); sizeRefs.push_back(newSize); } void VertexIndex::removeSize(size_t oldSize) { // TODO: For debugging purposes, this should check if the size was actually found. sizeRefs.erase(std::find(sizeRefs.begin(), sizeRefs.end(), oldSize)); if (sizeRefs.size() == 0) { resize(0); return; } if (oldSize == maxSize) { // Shrink if there's a smaller size. size_t newSize = sizeRefs.back(); if (newSize < maxSize) resize(newSize); } } void VertexIndex::resize(size_t size) { if (size == 0) { delete element_array; element_array = NULL; maxSize = 0; return; } VertexBuffer *new_element_array; // Depending on the size, a switch to int and more memory is needed. GLenum target_type = getType(size); size_t elem_size = (target_type == GL_UNSIGNED_SHORT) ? sizeof(GLushort) : sizeof(GLuint); size_t array_size = elem_size * 6 * size; // Create may throw out-of-memory exceptions. // VertexIndex will propagate the exception and keep the old VertexBuffer. try { new_element_array = VertexBuffer::Create(array_size, GL_ELEMENT_ARRAY_BUFFER, GL_STATIC_DRAW); } catch (std::bad_alloc &) { throw love::Exception("Out of memory."); } // Allocation of the new VertexBuffer succeeded. // The old VertexBuffer can now be deleted. delete element_array; element_array = new_element_array; maxSize = size; elementSize = elem_size; switch (target_type) { case GL_UNSIGNED_SHORT: fill(); break; case GL_UNSIGNED_INT: fill(); break; } } template void VertexIndex::fill() { VertexBuffer::Bind bind(*element_array); VertexBuffer::Mapper mapper(*element_array); T *indices = (T *) mapper.get(); for (size_t i = 0; i < maxSize; ++i) { indices[i*6+0] = i * 4 + 0; indices[i*6+1] = i * 4 + 1; indices[i*6+2] = i * 4 + 2; indices[i*6+3] = i * 4 + 0; indices[i*6+4] = i * 4 + 2; indices[i*6+5] = i * 4 + 3; } } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/SpriteBatch.cpp0000644000000000000000000001737112316602166022737 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" #include "SpriteBatch.h" // OpenGL #include "OpenGL.h" // LOVE #include "VertexBuffer.h" #include "Texture.h" // C++ #include // C #include namespace love { namespace graphics { namespace opengl { SpriteBatch::SpriteBatch(Texture *texture, int size, int usage) : texture(texture) , size(size) , next(0) , color(0) , array_buf(0) , element_buf(0) { if (size <= 0) throw love::Exception("Invalid SpriteBatch size."); GLenum gl_usage; switch (usage) { default: case USAGE_DYNAMIC: gl_usage = GL_DYNAMIC_DRAW; break; case USAGE_STATIC: gl_usage = GL_STATIC_DRAW; break; case USAGE_STREAM: gl_usage = GL_STREAM_DRAW; break; } const size_t vertex_size = sizeof(Vertex) * 4 * size; try { array_buf = VertexBuffer::Create(vertex_size, GL_ARRAY_BUFFER, gl_usage); element_buf = new VertexIndex(size); } catch (love::Exception &) { delete array_buf; delete element_buf; throw; } catch (std::bad_alloc &) { delete array_buf; delete element_buf; throw love::Exception("Out of memory."); } texture->retain(); } SpriteBatch::~SpriteBatch() { texture->release(); delete color; delete array_buf; delete element_buf; } int SpriteBatch::add(float x, float y, float a, float sx, float sy, float ox, float oy, float kx, float ky, int index /*= -1*/) { // Only do this if there's a free slot. if ((index == -1 && next >= size) || index < -1 || index >= size) return -1; Vertex sprite[4]; // Needed for colors. memcpy(sprite, texture->getVertices(), sizeof(Vertex) * 4); // Transform. static Matrix t; t.setTransformation(x, y, a, sx, sy, ox, oy, kx, ky); t.transform(sprite, sprite, 4); if (color) setColorv(sprite, *color); addv(sprite, (index == -1) ? next : index); // Increment counter. if (index == -1) return next++; return index; } int SpriteBatch::addq(Quad *quad, float x, float y, float a, float sx, float sy, float ox, float oy, float kx, float ky, int index /*= -1*/) { // Only do this if there's a free slot. if ((index == -1 && next >= size) || index < -1 || index >= next) return -1; Vertex sprite[4]; // Needed for colors. memcpy(sprite, quad->getVertices(), sizeof(Vertex) * 4); static Matrix t; t.setTransformation(x, y, a, sx, sy, ox, oy, kx, ky); t.transform(sprite, sprite, 4); if (color) setColorv(sprite, *color); addv(sprite, (index == -1) ? next : index); // Increment counter. if (index == -1) return next++; return index; } void SpriteBatch::clear() { // Reset the position of the next index. next = 0; } void *SpriteBatch::lock() { VertexBuffer::Bind bind(*array_buf); return array_buf->map(); } void SpriteBatch::unlock() { VertexBuffer::Bind bind(*array_buf); array_buf->unmap(); } void SpriteBatch::setTexture(Texture *newtexture) { Object::AutoRelease imagerelease(texture); newtexture->retain(); texture = newtexture; } Texture *SpriteBatch::getTexture() { return texture; } void SpriteBatch::setColor(const Color &color) { if (!this->color) this->color = new Color(color); else *(this->color) = color; } void SpriteBatch::setColor() { delete color; color = 0; } const Color *SpriteBatch::getColor() const { return color; } int SpriteBatch::getCount() const { return next; } void SpriteBatch::setBufferSize(int newsize) { if (newsize <= 0) throw love::Exception("Invalid SpriteBatch size."); if (newsize == size) return; // Map (lock) the old VertexBuffer to get a pointer to its data. void *old_data = lock(); size_t vertex_size = sizeof(Vertex) * 4 * newsize; VertexBuffer *new_array_buf = 0; VertexIndex *new_element_buf = 0; void *new_data = 0; try { new_array_buf = VertexBuffer::Create(vertex_size, array_buf->getTarget(), array_buf->getUsage()); new_element_buf = new VertexIndex(newsize); // VBO::map can throw an exception. Also we want to scope the bind. VertexBuffer::Bind bind(*new_array_buf); new_data = new_array_buf->map(); } catch (love::Exception &) { delete new_array_buf; delete new_element_buf; unlock(); throw; } // Copy as much of the old data into the new VertexBuffer as can fit. memcpy(new_data, old_data, sizeof(Vertex) * 4 * std::min(newsize, size)); // We don't need to unmap the old VertexBuffer since we're deleting it. delete array_buf; delete element_buf; array_buf = new_array_buf; element_buf = new_element_buf; size = newsize; next = std::min(next, newsize); // But we should unmap (unlock) the new one! unlock(); } int SpriteBatch::getBufferSize() const { return size; } void SpriteBatch::draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { const size_t vertex_offset = offsetof(Vertex, x); const size_t texel_offset = offsetof(Vertex, s); const size_t color_offset = offsetof(Vertex, r); if (next == 0) return; static Matrix t; glPushMatrix(); t.setTransformation(x, y, angle, sx, sy, ox, oy, kx, ky); glMultMatrixf((const GLfloat *)t.getElements()); texture->predraw(); VertexBuffer::Bind array_bind(*array_buf); VertexBuffer::Bind element_bind(*element_buf->getVertexBuffer()); Color curcolor = gl.getColor(); // Apply per-sprite color, if a color is set. if (color) { glEnableClientState(GL_COLOR_ARRAY); glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Vertex), array_buf->getPointer(color_offset)); } glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(2, GL_FLOAT, sizeof(Vertex), array_buf->getPointer(vertex_offset)); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), array_buf->getPointer(texel_offset)); gl.prepareDraw(); glDrawElements(GL_TRIANGLES, element_buf->getIndexCount(next), element_buf->getType(), element_buf->getPointer(0)); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); if (color) { glDisableClientState(GL_COLOR_ARRAY); gl.setColor(curcolor); } texture->postdraw(); glPopMatrix(); } void SpriteBatch::addv(const Vertex *v, int index) { static const int sprite_size = 4 * sizeof(Vertex); // bytecount VertexBuffer::Bind bind(*array_buf); array_buf->fill(index * sprite_size, sprite_size, v); } void SpriteBatch::setColorv(Vertex *v, const Color &color) { for (size_t i = 0; i < 4; ++i) { v[i].r = color.r; v[i].g = color.g; v[i].b = color.b; v[i].a = color.a; } } bool SpriteBatch::getConstant(const char *in, UsageHint &out) { return usageHints.find(in, out); } bool SpriteBatch::getConstant(UsageHint in, const char *&out) { return usageHints.find(in, out); } StringMap::Entry SpriteBatch::usageHintEntries[] = { {"dynamic", SpriteBatch::USAGE_DYNAMIC}, {"static", SpriteBatch::USAGE_STATIC}, {"stream", SpriteBatch::USAGE_STREAM}, }; StringMap SpriteBatch::usageHints(usageHintEntries, sizeof(usageHintEntries)); } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/wrap_Quad.cpp0000644000000000000000000000402612316602166022443 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Quad.h" namespace love { namespace graphics { namespace opengl { Quad *luax_checkquad(lua_State *L, int idx) { return luax_checktype(L, idx, "Quad", GRAPHICS_QUAD_T); } int w_Quad_setViewport(lua_State *L) { Quad *quad = luax_checkquad(L, 1); Quad::Viewport v; v.x = (float) luaL_checknumber(L, 2); v.y = (float) luaL_checknumber(L, 3); v.w = (float) luaL_checknumber(L, 4); v.h = (float) luaL_checknumber(L, 5); if (lua_isnoneornil(L, 6)) quad->setViewport(v); else { float sw = (float) luaL_checknumber(L, 6); float sh = (float) luaL_checknumber(L, 7); quad->refresh(v, sw, sh); } return 0; } int w_Quad_getViewport(lua_State *L) { Quad *quad = luax_checkquad(L, 1); Quad::Viewport v = quad->getViewport(); lua_pushnumber(L, v.x); lua_pushnumber(L, v.y); lua_pushnumber(L, v.w); lua_pushnumber(L, v.h); return 4; } static const luaL_Reg functions[] = { { "setViewport", w_Quad_setViewport }, { "getViewport", w_Quad_getViewport }, { 0, 0 } }; extern "C" int luaopen_quad(lua_State *L) { return luax_register_type(L, "Quad", functions); } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/OpenGL.h0000644000000000000000000001633412316602166021316 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_OPENGL_H #define LOVE_GRAPHICS_OPENGL_OPENGL_H #include "GLee.h" // LOVE #include "graphics/Color.h" #include "graphics/Texture.h" // C++ #include // The last argument to AttribPointer takes a buffer offset casted to a pointer. #define BUFFER_OFFSET(i) ((char *) NULL + (i)) namespace love { namespace graphics { namespace opengl { /** * Thin layer between OpenGL and the rest of the program. * Internally shadows some OpenGL context state for improved efficiency and * accuracy (compared to glGet etc.) * A class is more convenient and readable than plain namespaced functions, but * typically only one OpenGL object should be used (singleton.) **/ class OpenGL { public: // OpenGL GPU vendors. enum Vendor { VENDOR_ATI_AMD, VENDOR_NVIDIA, VENDOR_INTEL, VENDOR_MESA_SOFT, // Software renderer. VENDOR_APPLE, // Software renderer. VENDOR_MICROSOFT, // Software renderer. VENDOR_UNKNOWN }; // Vertex attributes used in shaders by LOVE. The values map to OpenGL // generic vertex attribute indices, when applicable. // LOVE uses the old hard-coded attribute APIs for positions, colors, etc. // (for now.) enum VertexAttrib { // Instance ID when pseudo-instancing is used. ATTRIB_PSEUDO_INSTANCE_ID = 1, ATTRIB_MAX_ENUM }; // A rectangle representing an OpenGL viewport or a scissor box. struct Viewport { int x, y; int w, h; Viewport() : x(0), y(0), w(0), h(0) {} Viewport(int _x, int _y, int _w, int _h) : x(_x), y(_y), w(_w), h(_h) {} bool operator == (const Viewport &rhs) const { return x == rhs.x && y == rhs.y && w == rhs.w && h == rhs.h; } }; struct BlendState { GLenum srcRGB, srcA; GLenum dstRGB, dstA; GLenum func; }; OpenGL(); /** * Initializes some required context state based on current and default * OpenGL state. Call this directly after creating an OpenGL context! **/ void initContext(); /** * Marks current context state as invalid and deletes OpenGL objects owned * by this class instance. Call this directly before potentially deleting * an OpenGL context! **/ void deInitContext(); /** * Set up necessary state (LOVE-provided shader uniforms, etc.) for drawing. * This *MUST* be called directly before OpenGL drawing functions. **/ void prepareDraw(); /** * glDrawArraysInstanced with a pseudo-instancing fallback. **/ void drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei primcount); /** * glDrawElementsInstanced with a pseudo-instancing fallback. **/ void drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); /** * Sets the current constant color. **/ void setColor(const Color &c); /** * Gets the current constant color. **/ Color getColor() const; /** * Sets the current clear color for all framebuffer objects. **/ void setClearColor(const Color &c); /** * Gets the current clear color. **/ Color getClearColor() const; /** * Sets the OpenGL rendering viewport to the specified rectangle. * The y-coordinate starts at the top. **/ void setViewport(const Viewport &v); /** * Gets the current OpenGL rendering viewport rectangle. **/ Viewport getViewport() const; /** * Sets the scissor box to the specified rectangle. * The y-coordinate starts at the top and is flipped internally. **/ void setScissor(const Viewport &v); /** * Gets the current scissor box (regardless of whether scissoring is enabled.) **/ Viewport getScissor() const; /** * Sets blending functionality. * Note: This does not globally enable or disable blending. **/ void setBlendState(const BlendState &blend); /** * Gets the currently set blending functionality. **/ BlendState getBlendState() const; /** * Helper for setting the active texture unit. * * @param textureunit Index in the range of [0, maxtextureunits-1] **/ void setTextureUnit(int textureunit); /** * Helper for binding an OpenGL texture. * Makes sure we aren't redundantly binding textures. **/ void bindTexture(GLuint texture); /** * Helper for binding a texture to a specific texture unit. * * @param textureunit Index in the range of [0, maxtextureunits-1] * @param restoreprev Restore previously bound texture unit when done. **/ void bindTextureToUnit(GLuint texture, int textureunit, bool restoreprev); /** * Helper for deleting an OpenGL texture. * Cleans up if the texture is currently bound. **/ void deleteTexture(GLuint texture); /** * Sets the texture filter mode for the currently bound texture. * Returns the actual amount of anisotropic filtering set. **/ float setTextureFilter(graphics::Texture::Filter &f); /** * Returns the texture filter mode for the currently bound texture. **/ graphics::Texture::Filter getTextureFilter(); /** * Sets the texture wrap mode for the currently bound texture. **/ void setTextureWrap(const graphics::Texture::Wrap &w); /** * Returns the texture wrap mode for the currently bound texture. **/ graphics::Texture::Wrap getTextureWrap(); /** * Returns the maximum supported width or height of a texture. **/ int getMaxTextureSize() const; /** * Returns the maximum supported number of simultaneous render targets. **/ int getMaxRenderTargets() const; /** * Get the GPU vendor of this OpenGL context. **/ Vendor getVendor() const; // Get human-readable strings for debug info. static const char *debugSeverityString(GLenum severity); static const char *debugSourceString(GLenum source); static const char *debugTypeString(GLenum type); private: void initVendor(); void initOpenGLFunctions(); void initMaxValues(); void createDefaultTexture(); bool contextInitialized; float maxAnisotropy; int maxTextureSize; int maxRenderTargets; Vendor vendor; // Tracked OpenGL state. struct { // Current constant color. Color color; Color clearColor; // Texture unit state (currently bound texture for each texture unit.) std::vector textureUnits; // Currently active texture unit. int curTextureUnit; Viewport viewport; Viewport scissor; BlendState blend; // The last ID value used for pseudo-instancing. int lastPseudoInstanceID; } state; }; // OpenGL // OpenGL class instance singleton. extern OpenGL gl; } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_OPENGL_H love-0.9.1/src/modules/graphics/opengl/wrap_Shader.h0000644000000000000000000000271512316602166022427 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_WRAP_PROGRAM_H #define LOVE_GRAPHICS_OPENGL_WRAP_PROGRAM_H #include "common/runtime.h" #include "Shader.h" namespace love { namespace graphics { namespace opengl { Shader *luax_checkshader(lua_State *L, int idx); int w_Shader_getWarnings(lua_State *L); int w_Shader_sendInt(lua_State *L); int w_Shader_sendFloat(lua_State *L); int w_Shader_sendMatrix(lua_State *L); int w_Shader_sendTexture(lua_State *L); int w_Shader_send(lua_State *L); extern "C" int luaopen_shader(lua_State *L); } // opengl } // graphics } // love #endif love-0.9.1/src/modules/graphics/opengl/Font.cpp0000644000000000000000000003416012316602166021430 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" #include "Font.h" #include "font/GlyphData.h" #include "libraries/utf8/utf8.h" #include "common/math.h" #include "common/Matrix.h" #include #include #include // for max namespace love { namespace graphics { namespace opengl { const int Font::TEXTURE_WIDTHS[] = {128, 256, 256, 512, 512, 1024, 1024}; const int Font::TEXTURE_HEIGHTS[] = {128, 128, 256, 256, 512, 512, 1024}; Font::Font(love::font::Rasterizer *r, const Texture::Filter &filter) : rasterizer(r) , height(r->getHeight()) , lineHeight(1) , mSpacing(1) , filter(filter) , useSpacesAsTab(false) { this->filter.mipmap = Texture::FILTER_NONE; // Try to find the best texture size match for the font size. default to the // largest texture size if no rough match is found. textureSizeIndex = NUM_TEXTURE_SIZES - 1; for (int i = 0; i < NUM_TEXTURE_SIZES; i++) { // Make a rough estimate of the total used texture size, based on glyph // height. The estimated size is likely larger than the actual total // size, which is good because texture switching is expensive. if ((height * 0.8) * height * 95 <= TEXTURE_WIDTHS[i] * TEXTURE_HEIGHTS[i]) { textureSizeIndex = i; break; } } textureWidth = TEXTURE_WIDTHS[textureSizeIndex]; textureHeight = TEXTURE_HEIGHTS[textureSizeIndex]; love::font::GlyphData *gd = nullptr; try { gd = r->getGlyphData(32); // Space character. type = (gd->getFormat() == love::font::GlyphData::FORMAT_LUMINANCE_ALPHA) ? FONT_TRUETYPE : FONT_IMAGE; if (!r->hasGlyph(9)) // No tab character in the Rasterizer. useSpacesAsTab = true; loadVolatile(); } catch (love::Exception &) { delete gd; throw; } delete gd; rasterizer->retain(); } Font::~Font() { rasterizer->release(); unloadVolatile(); } bool Font::initializeTexture(GLenum format) { GLint internalformat = (format == GL_LUMINANCE_ALPHA) ? GL_LUMINANCE8_ALPHA8 : GL_RGBA8; // clear errors before initializing while (glGetError() != GL_NO_ERROR); glTexImage2D(GL_TEXTURE_2D, 0, internalformat, (GLsizei)textureWidth, (GLsizei)textureHeight, 0, format, GL_UNSIGNED_BYTE, NULL); return glGetError() == GL_NO_ERROR; } void Font::createTexture() { textureX = textureY = rowHeight = TEXTURE_PADDING; GLuint t; glGenTextures(1, &t); textures.push_back(t); gl.bindTexture(t); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); GLenum format = (type == FONT_TRUETYPE ? GL_LUMINANCE_ALPHA : GL_RGBA); // Initialize the texture, attempting smaller sizes if initialization fails. bool initialized = false; while (textureSizeIndex >= 0) { textureWidth = TEXTURE_WIDTHS[textureSizeIndex]; textureHeight = TEXTURE_HEIGHTS[textureSizeIndex]; initialized = initializeTexture(format); if (initialized || textureSizeIndex <= 0) break; --textureSizeIndex; } if (!initialized) { // Clean up before throwing. gl.deleteTexture(t); gl.bindTexture(0); textures.pop_back(); throw love::Exception("Could not create font texture!"); } // Fill the texture with transparent black. std::vector emptyData(textureWidth * textureHeight * (type == FONT_TRUETYPE ? 2 : 4), 0); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, (GLsizei)textureWidth, (GLsizei)textureHeight, format, GL_UNSIGNED_BYTE, &emptyData[0]); setFilter(filter); } Font::Glyph *Font::addGlyph(uint32 glyph) { love::font::GlyphData *gd = nullptr; // Use spaces for the tab 'glyph'. if (glyph == 9 && useSpacesAsTab) { love::font::GlyphData *spacegd = rasterizer->getGlyphData(32); love::font::GlyphMetrics gm = {}; gm.advance = spacegd->getAdvance() * SPACES_PER_TAB; gm.bearingX = spacegd->getBearingX(); gm.bearingY = spacegd->getBearingY(); love::font::GlyphData::Format f = spacegd->getFormat(); spacegd->release(); gd = new love::font::GlyphData(glyph, gm, f); } else gd = rasterizer->getGlyphData(glyph); int w = gd->getWidth(); int h = gd->getHeight(); if (textureX + w + TEXTURE_PADDING > textureWidth) { // out of space - new row! textureX = TEXTURE_PADDING; textureY += rowHeight; rowHeight = TEXTURE_PADDING; } if (textureY + h + TEXTURE_PADDING > textureHeight) { // totally out of space - new texture! try { createTexture(); } catch (love::Exception &) { gd->release(); throw; } } Glyph *g = new Glyph; g->texture = 0; g->spacing = gd->getAdvance(); memset(g->vertices, 0, sizeof(GlyphVertex) * 4); // don't waste space for empty glyphs. also fixes a division by zero bug with ati drivers if (w > 0 && h > 0) { const GLuint t = textures.back(); gl.bindTexture(t); glTexSubImage2D(GL_TEXTURE_2D, 0, textureX, textureY, w, h, (type == FONT_TRUETYPE ? GL_LUMINANCE_ALPHA : GL_RGBA), GL_UNSIGNED_BYTE, gd->getData()); g->texture = t; const GlyphVertex verts[4] = { { 0.0f, 0.0f, float(textureX)/float(textureWidth), float(textureY)/float(textureHeight)}, { 0.0f, float(h), float(textureX)/float(textureWidth), float(textureY+h)/float(textureHeight)}, {float(w), float(h), float(textureX+w)/float(textureWidth), float(textureY+h)/float(textureHeight)}, {float(w), 0.0f, float(textureX+w)/float(textureWidth), float(textureY)/float(textureHeight)}, }; // copy vertex data to the glyph and set proper bearing for (int i = 0; i < 4; i++) { g->vertices[i] = verts[i]; g->vertices[i].x += gd->getBearingX(); g->vertices[i].y -= gd->getBearingY(); } } if (w > 0) textureX += (w + TEXTURE_PADDING); if (h > 0) rowHeight = std::max(rowHeight, h + TEXTURE_PADDING); delete gd; glyphs[glyph] = g; return g; } Font::Glyph *Font::findGlyph(uint32 glyph) { auto it = glyphs.find(glyph); if (it != glyphs.end()) return it->second; else return addGlyph(glyph); } float Font::getHeight() const { return static_cast(height); } void Font::print(const std::string &text, float x, float y, float extra_spacing, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { // Spacing counter and newline handling. float dx = 0.0f; float dy = 0.0f; float lineheight = getBaseline(); // Keeps track of when we need to switch textures in our vertex array. std::vector glyphinfolist; // Pre-allocate space for the maximum possible number of vertices. std::vector glyphverts; glyphverts.reserve(text.length() * 4); int vertexcount = 0; try { utf8::iterator i(text.begin(), text.begin(), text.end()); utf8::iterator end(text.end(), text.begin(), text.end()); while (i != end) { uint32 g = *i++; if (g == '\n') { // Wrap newline, but do not print it. dy += floorf(getHeight() * getLineHeight() + 0.5f); dx = 0.0f; continue; } Glyph *glyph = findGlyph(g); if (glyph->texture != 0) { // Copy the vertices and set their proper relative positions. for (int j = 0; j < 4; j++) { glyphverts.push_back(glyph->vertices[j]); glyphverts.back().x += dx; glyphverts.back().y += dy + lineheight; } // Check if glyph texture has changed since the last iteration. if (glyphinfolist.size() == 0 || glyphinfolist.back().texture != glyph->texture) { // keep track of each sub-section of the string whose glyphs use different textures than the previous section GlyphArrayDrawInfo gdrawinfo; gdrawinfo.startvertex = vertexcount; gdrawinfo.vertexcount = 0; gdrawinfo.texture = glyph->texture; glyphinfolist.push_back(gdrawinfo); } vertexcount += 4; glyphinfolist.back().vertexcount += 4; } // Advance the x position for the next glyph. dx += glyph->spacing; // Account for extra spacing given to space characters. if (g == ' ' && extra_spacing != 0.0f) dx = floorf(dx + extra_spacing); } } catch (utf8::exception &e) { throw love::Exception("Decoding error: %s", e.what()); } if (vertexcount <= 0 || glyphinfolist.size() == 0) return; // Sort glyph draw info list by texture first, and quad position in memory // second (using the struct's < operator). std::sort(glyphinfolist.begin(), glyphinfolist.end()); glPushMatrix(); Matrix t; t.setTransformation(ceilf(x), ceilf(y), angle, sx, sy, ox, oy, kx, ky); glMultMatrixf((const GLfloat *)t.getElements()); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer(2, GL_FLOAT, sizeof(GlyphVertex), (GLvoid *)&glyphverts[0].x); glTexCoordPointer(2, GL_FLOAT, sizeof(GlyphVertex), (GLvoid *)&glyphverts[0].s); gl.prepareDraw(); // We need to draw a new vertex array for every section of the string which // uses a different texture than the previous section. std::vector::const_iterator it; for (it = glyphinfolist.begin(); it != glyphinfolist.end(); ++it) { gl.bindTexture(it->texture); glDrawArrays(GL_QUADS, it->startvertex, it->vertexcount); } glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); glPopMatrix(); } int Font::getWidth(const std::string &str) { if (str.size() == 0) return 0; std::istringstream iss(str); std::string line; Glyph *g; int max_width = 0; while (getline(iss, line, '\n')) { int width = 0; try { utf8::iterator i(line.begin(), line.begin(), line.end()); utf8::iterator end(line.end(), line.begin(), line.end()); while (i != end) { uint32 c = *i++; g = findGlyph(c); width += static_cast(g->spacing * mSpacing); } } catch(utf8::exception &e) { throw love::Exception("Decoding error: %s", e.what()); } if (width > max_width) max_width = width; } return max_width; } int Font::getWidth(char character) { Glyph *g = findGlyph(character); return g->spacing; } std::vector Font::getWrap(const std::string &text, float wrap, int *max_width, std::vector *wrappedlines) { using namespace std; const float width_space = static_cast(getWidth(' ')); vector lines_to_draw; int maxw = 0; //split text at newlines istringstream iss(text); string line; ostringstream string_builder; while (getline(iss, line, '\n')) { // split line into words vector words; istringstream word_iss(line); copy(istream_iterator(word_iss), istream_iterator(), back_inserter< vector >(words)); // put words back together until a wrap occurs float width = 0.0f; float oldwidth = 0.0f; string_builder.str(""); vector::const_iterator word_iter, wend = words.end(); for (word_iter = words.begin(); word_iter != wend; ++word_iter) { const string &word = *word_iter; width += getWidth(word); // on wordwrap, push line to line buffer and clear string builder if (width > wrap && oldwidth > 0) { int realw = (int) width; // remove trailing space string tmp = string_builder.str(); lines_to_draw.push_back(tmp.substr(0,tmp.size()-1)); string_builder.str(""); width = static_cast(getWidth(word)); realw -= (int) width; if (realw > maxw) maxw = realw; // Indicate that this line was automatically wrapped. if (wrappedlines) wrappedlines->push_back(true); } string_builder << word << " "; width += width_space; oldwidth = width; } // push last line if (width > maxw) maxw = (int) width; string tmp = string_builder.str(); lines_to_draw.push_back(tmp.substr(0,tmp.size()-1)); // Indicate that this line was not automatically wrapped. if (wrappedlines) wrappedlines->push_back(false); } if (max_width) *max_width = maxw; return lines_to_draw; } void Font::setLineHeight(float height) { this->lineHeight = height; } float Font::getLineHeight() const { return lineHeight; } void Font::setSpacing(float amount) { mSpacing = amount; } float Font::getSpacing() const { return mSpacing; } void Font::setFilter(const Texture::Filter &f) { filter = f; for (auto it = textures.begin(); it != textures.end(); ++it) { gl.bindTexture(*it); gl.setTextureFilter(filter); } } const Texture::Filter &Font::getFilter() { return filter; } bool Font::loadVolatile() { createTexture(); return true; } void Font::unloadVolatile() { // nuke everything from orbit std::map::iterator it = glyphs.begin(); Glyph *g; while (it != glyphs.end()) { g = it->second; delete g; glyphs.erase(it++); } std::vector::iterator iter = textures.begin(); while (iter != textures.end()) { gl.deleteTexture(*iter); iter++; } textures.clear(); } int Font::getAscent() const { return rasterizer->getAscent(); } int Font::getDescent() const { return rasterizer->getDescent(); } float Font::getBaseline() const { // 1.25 is magic line height for true type fonts return (type == FONT_TRUETYPE) ? floorf(getHeight() / 1.25f + 0.5f) : 0.0f; } bool Font::hasGlyph(uint32 glyph) const { return rasterizer->hasGlyph(glyph); } bool Font::hasGlyphs(const std::string &text) const { return rasterizer->hasGlyphs(text); } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/GLee.c0000644000000000000000000576470112316602166021016 0ustar00rootroot00000000000000/*************************************************************************** * * GLee.c * GLee (OpenGL Easy Extension library) * Version : 5.5 * * Copyright (c)2011 Ben Woodhouse All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer as * the first lines of this file unmodified. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY BEN WOODHOUSE ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL BEN WOODHOUSE BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Web: http://elf-stone.com/glee.php * * [This file was automatically generated by GLeeGen 7.0 * ***************************************************************************/ #ifdef _MSC_VER #pragma optimize( "g", off ) #endif #include #include #include #include "GLee.h" #if defined(__APPLE__) || defined(__APPLE_CC__) #define GLEE_USE_SDL #ifdef GLEE_USE_SDL #include #else #include #endif #endif typedef GLuint(*GLEE_LINK_FUNCTION)(void); GLboolean __GLeeInited=GL_FALSE; #ifndef _WIN32 #define __stdcall /* nothing */ #endif #ifdef _MSC_VER #define snprintf sprintf_s #define strdup _strdup #endif GLEE_FUNC __GLeeGetProcAddress(const char *extname) { #ifdef _WIN32 return (GLEE_FUNC)wglGetProcAddress(extname); #elif defined(__APPLE__) || defined(__APPLE_CC__) #if defined(GLEE_USE_SDL) return SDL_GL_GetProcAddress(extname); #else CFBundleRef bundle; CFURLRef bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, CFSTR("/System/Library/Frameworks/OpenGL.framework"), kCFURLPOSIXPathStyle, true); CFStringRef functionName = CFStringCreateWithCString(kCFAllocatorDefault, extname, kCFStringEncodingASCII); GLEE_FUNC function; bundle = CFBundleCreate(kCFAllocatorDefault, bundleURL); if (bundle == NULL) { CFRelease(bundleURL); CFRelease(functionName); return NULL; } function = CFBundleGetFunctionPointerForName(bundle, functionName); CFRelease(bundleURL); CFRelease(functionName); CFRelease(bundle); return function; #endif #else return (GLEE_FUNC)glXGetProcAddressARB((const GLubyte *)extname); #endif } /* Extension querying variables */ GLboolean _GLEE_VERSION_1_2 = GL_FALSE; GLboolean _GLEE_ARB_imaging = GL_FALSE; GLboolean _GLEE_VERSION_1_3 = GL_FALSE; GLboolean _GLEE_VERSION_1_4 = GL_FALSE; GLboolean _GLEE_VERSION_1_5 = GL_FALSE; GLboolean _GLEE_VERSION_2_0 = GL_FALSE; GLboolean _GLEE_VERSION_2_1 = GL_FALSE; GLboolean _GLEE_VERSION_3_0 = GL_FALSE; GLboolean _GLEE_VERSION_3_1 = GL_FALSE; GLboolean _GLEE_VERSION_3_2 = GL_FALSE; GLboolean _GLEE_VERSION_3_3 = GL_FALSE; GLboolean _GLEE_VERSION_4_0 = GL_FALSE; GLboolean _GLEE_VERSION_4_1 = GL_FALSE; GLboolean _GLEE_VERSION_4_2 = GL_FALSE; GLboolean _GLEE_VERSION_4_3 = GL_FALSE; GLboolean _GLEE_ARB_multitexture = GL_FALSE; GLboolean _GLEE_ARB_transpose_matrix = GL_FALSE; GLboolean _GLEE_ARB_multisample = GL_FALSE; GLboolean _GLEE_ARB_texture_env_add = GL_FALSE; GLboolean _GLEE_ARB_texture_cube_map = GL_FALSE; GLboolean _GLEE_ARB_texture_compression = GL_FALSE; GLboolean _GLEE_ARB_texture_border_clamp = GL_FALSE; GLboolean _GLEE_ARB_point_parameters = GL_FALSE; GLboolean _GLEE_ARB_vertex_blend = GL_FALSE; GLboolean _GLEE_ARB_matrix_palette = GL_FALSE; GLboolean _GLEE_ARB_texture_env_combine = GL_FALSE; GLboolean _GLEE_ARB_texture_env_crossbar = GL_FALSE; GLboolean _GLEE_ARB_texture_env_dot3 = GL_FALSE; GLboolean _GLEE_ARB_texture_mirrored_repeat = GL_FALSE; GLboolean _GLEE_ARB_depth_texture = GL_FALSE; GLboolean _GLEE_ARB_shadow = GL_FALSE; GLboolean _GLEE_ARB_shadow_ambient = GL_FALSE; GLboolean _GLEE_ARB_window_pos = GL_FALSE; GLboolean _GLEE_ARB_vertex_program = GL_FALSE; GLboolean _GLEE_ARB_fragment_program = GL_FALSE; GLboolean _GLEE_ARB_vertex_buffer_object = GL_FALSE; GLboolean _GLEE_ARB_occlusion_query = GL_FALSE; GLboolean _GLEE_ARB_shader_objects = GL_FALSE; GLboolean _GLEE_ARB_vertex_shader = GL_FALSE; GLboolean _GLEE_ARB_fragment_shader = GL_FALSE; GLboolean _GLEE_ARB_shading_language_100 = GL_FALSE; GLboolean _GLEE_ARB_texture_non_power_of_two = GL_FALSE; GLboolean _GLEE_ARB_point_sprite = GL_FALSE; GLboolean _GLEE_ARB_fragment_program_shadow = GL_FALSE; GLboolean _GLEE_ARB_draw_buffers = GL_FALSE; GLboolean _GLEE_ARB_texture_rectangle = GL_FALSE; GLboolean _GLEE_ARB_color_buffer_float = GL_FALSE; GLboolean _GLEE_ARB_half_float_pixel = GL_FALSE; GLboolean _GLEE_ARB_texture_float = GL_FALSE; GLboolean _GLEE_ARB_pixel_buffer_object = GL_FALSE; GLboolean _GLEE_ARB_depth_buffer_float = GL_FALSE; GLboolean _GLEE_ARB_draw_instanced = GL_FALSE; GLboolean _GLEE_ARB_framebuffer_object = GL_FALSE; GLboolean _GLEE_ARB_framebuffer_sRGB = GL_FALSE; GLboolean _GLEE_ARB_geometry_shader4 = GL_FALSE; GLboolean _GLEE_ARB_half_float_vertex = GL_FALSE; GLboolean _GLEE_ARB_instanced_arrays = GL_FALSE; GLboolean _GLEE_ARB_map_buffer_range = GL_FALSE; GLboolean _GLEE_ARB_texture_buffer_object = GL_FALSE; GLboolean _GLEE_ARB_texture_compression_rgtc = GL_FALSE; GLboolean _GLEE_ARB_texture_rg = GL_FALSE; GLboolean _GLEE_ARB_vertex_array_object = GL_FALSE; GLboolean _GLEE_ARB_uniform_buffer_object = GL_FALSE; GLboolean _GLEE_ARB_compatibility = GL_FALSE; GLboolean _GLEE_ARB_copy_buffer = GL_FALSE; GLboolean _GLEE_ARB_shader_texture_lod = GL_FALSE; GLboolean _GLEE_ARB_depth_clamp = GL_FALSE; GLboolean _GLEE_ARB_draw_elements_base_vertex = GL_FALSE; GLboolean _GLEE_ARB_fragment_coord_conventions = GL_FALSE; GLboolean _GLEE_ARB_provoking_vertex = GL_FALSE; GLboolean _GLEE_ARB_seamless_cube_map = GL_FALSE; GLboolean _GLEE_ARB_sync = GL_FALSE; GLboolean _GLEE_ARB_texture_multisample = GL_FALSE; GLboolean _GLEE_ARB_vertex_array_bgra = GL_FALSE; GLboolean _GLEE_ARB_draw_buffers_blend = GL_FALSE; GLboolean _GLEE_ARB_sample_shading = GL_FALSE; GLboolean _GLEE_ARB_texture_cube_map_array = GL_FALSE; GLboolean _GLEE_ARB_texture_gather = GL_FALSE; GLboolean _GLEE_ARB_texture_query_lod = GL_FALSE; GLboolean _GLEE_ARB_shading_language_include = GL_FALSE; GLboolean _GLEE_ARB_texture_compression_bptc = GL_FALSE; GLboolean _GLEE_ARB_blend_func_extended = GL_FALSE; GLboolean _GLEE_ARB_explicit_attrib_location = GL_FALSE; GLboolean _GLEE_ARB_occlusion_query2 = GL_FALSE; GLboolean _GLEE_ARB_sampler_objects = GL_FALSE; GLboolean _GLEE_ARB_shader_bit_encoding = GL_FALSE; GLboolean _GLEE_ARB_texture_rgb10_a2ui = GL_FALSE; GLboolean _GLEE_ARB_texture_swizzle = GL_FALSE; GLboolean _GLEE_ARB_timer_query = GL_FALSE; GLboolean _GLEE_ARB_vertex_type_2_10_10_10_rev = GL_FALSE; GLboolean _GLEE_ARB_draw_indirect = GL_FALSE; GLboolean _GLEE_ARB_gpu_shader5 = GL_FALSE; GLboolean _GLEE_ARB_gpu_shader_fp64 = GL_FALSE; GLboolean _GLEE_ARB_shader_subroutine = GL_FALSE; GLboolean _GLEE_ARB_tessellation_shader = GL_FALSE; GLboolean _GLEE_ARB_texture_buffer_object_rgb32 = GL_FALSE; GLboolean _GLEE_ARB_transform_feedback2 = GL_FALSE; GLboolean _GLEE_ARB_transform_feedback3 = GL_FALSE; GLboolean _GLEE_ARB_ES2_compatibility = GL_FALSE; GLboolean _GLEE_ARB_get_program_binary = GL_FALSE; GLboolean _GLEE_ARB_separate_shader_objects = GL_FALSE; GLboolean _GLEE_ARB_shader_precision = GL_FALSE; GLboolean _GLEE_ARB_vertex_attrib_64bit = GL_FALSE; GLboolean _GLEE_ARB_viewport_array = GL_FALSE; GLboolean _GLEE_ARB_cl_event = GL_FALSE; GLboolean _GLEE_ARB_debug_output = GL_FALSE; GLboolean _GLEE_ARB_robustness = GL_FALSE; GLboolean _GLEE_ARB_shader_stencil_export = GL_FALSE; GLboolean _GLEE_ARB_base_instance = GL_FALSE; GLboolean _GLEE_ARB_shading_language_420pack = GL_FALSE; GLboolean _GLEE_ARB_transform_feedback_instanced = GL_FALSE; GLboolean _GLEE_ARB_compressed_texture_pixel_storage = GL_FALSE; GLboolean _GLEE_ARB_conservative_depth = GL_FALSE; GLboolean _GLEE_ARB_internalformat_query = GL_FALSE; GLboolean _GLEE_ARB_map_buffer_alignment = GL_FALSE; GLboolean _GLEE_ARB_shader_atomic_counters = GL_FALSE; GLboolean _GLEE_ARB_shader_image_load_store = GL_FALSE; GLboolean _GLEE_ARB_shading_language_packing = GL_FALSE; GLboolean _GLEE_ARB_texture_storage = GL_FALSE; GLboolean _GLEE_KHR_texture_compression_astc_ldr = GL_FALSE; GLboolean _GLEE_KHR_debug = GL_FALSE; GLboolean _GLEE_ARB_arrays_of_arrays = GL_FALSE; GLboolean _GLEE_ARB_clear_buffer_object = GL_FALSE; GLboolean _GLEE_ARB_compute_shader = GL_FALSE; GLboolean _GLEE_ARB_copy_image = GL_FALSE; GLboolean _GLEE_ARB_texture_view = GL_FALSE; GLboolean _GLEE_ARB_vertex_attrib_binding = GL_FALSE; GLboolean _GLEE_ARB_robustness_isolation = GL_FALSE; GLboolean _GLEE_ARB_ES3_compatibility = GL_FALSE; GLboolean _GLEE_ARB_explicit_uniform_location = GL_FALSE; GLboolean _GLEE_ARB_fragment_layer_viewport = GL_FALSE; GLboolean _GLEE_ARB_framebuffer_no_attachments = GL_FALSE; GLboolean _GLEE_ARB_internalformat_query2 = GL_FALSE; GLboolean _GLEE_ARB_invalidate_subdata = GL_FALSE; GLboolean _GLEE_ARB_multi_draw_indirect = GL_FALSE; GLboolean _GLEE_ARB_program_interface_query = GL_FALSE; GLboolean _GLEE_ARB_robust_buffer_access_behavior = GL_FALSE; GLboolean _GLEE_ARB_shader_image_size = GL_FALSE; GLboolean _GLEE_ARB_shader_storage_buffer_object = GL_FALSE; GLboolean _GLEE_ARB_stencil_texturing = GL_FALSE; GLboolean _GLEE_ARB_texture_buffer_range = GL_FALSE; GLboolean _GLEE_ARB_texture_query_levels = GL_FALSE; GLboolean _GLEE_ARB_texture_storage_multisample = GL_FALSE; GLboolean _GLEE_EXT_abgr = GL_FALSE; GLboolean _GLEE_EXT_blend_color = GL_FALSE; GLboolean _GLEE_EXT_polygon_offset = GL_FALSE; GLboolean _GLEE_EXT_texture = GL_FALSE; GLboolean _GLEE_EXT_texture3D = GL_FALSE; GLboolean _GLEE_SGIS_texture_filter4 = GL_FALSE; GLboolean _GLEE_EXT_subtexture = GL_FALSE; GLboolean _GLEE_EXT_copy_texture = GL_FALSE; GLboolean _GLEE_EXT_histogram = GL_FALSE; GLboolean _GLEE_EXT_convolution = GL_FALSE; GLboolean _GLEE_SGI_color_matrix = GL_FALSE; GLboolean _GLEE_SGI_color_table = GL_FALSE; GLboolean _GLEE_SGIS_pixel_texture = GL_FALSE; GLboolean _GLEE_SGIX_pixel_texture = GL_FALSE; GLboolean _GLEE_SGIS_texture4D = GL_FALSE; GLboolean _GLEE_SGI_texture_color_table = GL_FALSE; GLboolean _GLEE_EXT_cmyka = GL_FALSE; GLboolean _GLEE_EXT_texture_object = GL_FALSE; GLboolean _GLEE_SGIS_detail_texture = GL_FALSE; GLboolean _GLEE_SGIS_sharpen_texture = GL_FALSE; GLboolean _GLEE_EXT_packed_pixels = GL_FALSE; GLboolean _GLEE_SGIS_texture_lod = GL_FALSE; GLboolean _GLEE_SGIS_multisample = GL_FALSE; GLboolean _GLEE_EXT_rescale_normal = GL_FALSE; GLboolean _GLEE_EXT_vertex_array = GL_FALSE; GLboolean _GLEE_EXT_misc_attribute = GL_FALSE; GLboolean _GLEE_SGIS_generate_mipmap = GL_FALSE; GLboolean _GLEE_SGIX_clipmap = GL_FALSE; GLboolean _GLEE_SGIX_shadow = GL_FALSE; GLboolean _GLEE_SGIS_texture_edge_clamp = GL_FALSE; GLboolean _GLEE_SGIS_texture_border_clamp = GL_FALSE; GLboolean _GLEE_EXT_blend_minmax = GL_FALSE; GLboolean _GLEE_EXT_blend_subtract = GL_FALSE; GLboolean _GLEE_EXT_blend_logic_op = GL_FALSE; GLboolean _GLEE_SGIX_interlace = GL_FALSE; GLboolean _GLEE_SGIX_pixel_tiles = GL_FALSE; GLboolean _GLEE_SGIS_texture_select = GL_FALSE; GLboolean _GLEE_SGIX_sprite = GL_FALSE; GLboolean _GLEE_SGIX_texture_multi_buffer = GL_FALSE; GLboolean _GLEE_EXT_point_parameters = GL_FALSE; GLboolean _GLEE_SGIS_point_parameters = GL_FALSE; GLboolean _GLEE_SGIX_instruments = GL_FALSE; GLboolean _GLEE_SGIX_texture_scale_bias = GL_FALSE; GLboolean _GLEE_SGIX_framezoom = GL_FALSE; GLboolean _GLEE_SGIX_tag_sample_buffer = GL_FALSE; GLboolean _GLEE_FfdMaskSGIX = GL_FALSE; GLboolean _GLEE_SGIX_polynomial_ffd = GL_FALSE; GLboolean _GLEE_SGIX_reference_plane = GL_FALSE; GLboolean _GLEE_SGIX_flush_raster = GL_FALSE; GLboolean _GLEE_SGIX_depth_texture = GL_FALSE; GLboolean _GLEE_SGIS_fog_function = GL_FALSE; GLboolean _GLEE_SGIX_fog_offset = GL_FALSE; GLboolean _GLEE_HP_image_transform = GL_FALSE; GLboolean _GLEE_HP_convolution_border_modes = GL_FALSE; GLboolean _GLEE_INGR_palette_buffer = GL_FALSE; GLboolean _GLEE_SGIX_texture_add_env = GL_FALSE; GLboolean _GLEE_EXT_color_subtable = GL_FALSE; GLboolean _GLEE_PGI_vertex_hints = GL_FALSE; GLboolean _GLEE_PGI_misc_hints = GL_FALSE; GLboolean _GLEE_EXT_paletted_texture = GL_FALSE; GLboolean _GLEE_EXT_clip_volume_hint = GL_FALSE; GLboolean _GLEE_SGIX_list_priority = GL_FALSE; GLboolean _GLEE_SGIX_ir_instrument1 = GL_FALSE; GLboolean _GLEE_SGIX_calligraphic_fragment = GL_FALSE; GLboolean _GLEE_SGIX_texture_lod_bias = GL_FALSE; GLboolean _GLEE_SGIX_shadow_ambient = GL_FALSE; GLboolean _GLEE_EXT_index_texture = GL_FALSE; GLboolean _GLEE_EXT_index_material = GL_FALSE; GLboolean _GLEE_EXT_index_func = GL_FALSE; GLboolean _GLEE_EXT_index_array_formats = GL_FALSE; GLboolean _GLEE_EXT_compiled_vertex_array = GL_FALSE; GLboolean _GLEE_EXT_cull_vertex = GL_FALSE; GLboolean _GLEE_SGIX_ycrcb = GL_FALSE; GLboolean _GLEE_SGIX_fragment_lighting = GL_FALSE; GLboolean _GLEE_IBM_rasterpos_clip = GL_FALSE; GLboolean _GLEE_HP_texture_lighting = GL_FALSE; GLboolean _GLEE_EXT_draw_range_elements = GL_FALSE; GLboolean _GLEE_WIN_phong_shading = GL_FALSE; GLboolean _GLEE_WIN_specular_fog = GL_FALSE; GLboolean _GLEE_EXT_light_texture = GL_FALSE; GLboolean _GLEE_SGIX_blend_alpha_minmax = GL_FALSE; GLboolean _GLEE_SGIX_impact_pixel_texture = GL_FALSE; GLboolean _GLEE_EXT_bgra = GL_FALSE; GLboolean _GLEE_SGIX_async = GL_FALSE; GLboolean _GLEE_SGIX_async_pixel = GL_FALSE; GLboolean _GLEE_SGIX_async_histogram = GL_FALSE; GLboolean _GLEE_INTEL_texture_scissor = GL_FALSE; GLboolean _GLEE_INTEL_parallel_arrays = GL_FALSE; GLboolean _GLEE_HP_occlusion_test = GL_FALSE; GLboolean _GLEE_EXT_pixel_transform = GL_FALSE; GLboolean _GLEE_EXT_pixel_transform_color_table = GL_FALSE; GLboolean _GLEE_EXT_shared_texture_palette = GL_FALSE; GLboolean _GLEE_EXT_separate_specular_color = GL_FALSE; GLboolean _GLEE_EXT_secondary_color = GL_FALSE; GLboolean _GLEE_EXT_texture_perturb_normal = GL_FALSE; GLboolean _GLEE_EXT_multi_draw_arrays = GL_FALSE; GLboolean _GLEE_EXT_fog_coord = GL_FALSE; GLboolean _GLEE_REND_screen_coordinates = GL_FALSE; GLboolean _GLEE_EXT_coordinate_frame = GL_FALSE; GLboolean _GLEE_EXT_texture_env_combine = GL_FALSE; GLboolean _GLEE_APPLE_specular_vector = GL_FALSE; GLboolean _GLEE_APPLE_transform_hint = GL_FALSE; GLboolean _GLEE_SGIX_fog_scale = GL_FALSE; GLboolean _GLEE_SUNX_constant_data = GL_FALSE; GLboolean _GLEE_SUN_global_alpha = GL_FALSE; GLboolean _GLEE_SUN_triangle_list = GL_FALSE; GLboolean _GLEE_SUN_vertex = GL_FALSE; GLboolean _GLEE_EXT_blend_func_separate = GL_FALSE; GLboolean _GLEE_INGR_color_clamp = GL_FALSE; GLboolean _GLEE_INGR_interlace_read = GL_FALSE; GLboolean _GLEE_EXT_stencil_wrap = GL_FALSE; GLboolean _GLEE_EXT_422_pixels = GL_FALSE; GLboolean _GLEE_NV_texgen_reflection = GL_FALSE; GLboolean _GLEE_EXT_texture_cube_map = GL_FALSE; GLboolean _GLEE_SUN_convolution_border_modes = GL_FALSE; GLboolean _GLEE_EXT_texture_env_add = GL_FALSE; GLboolean _GLEE_EXT_texture_lod_bias = GL_FALSE; GLboolean _GLEE_EXT_texture_filter_anisotropic = GL_FALSE; GLboolean _GLEE_EXT_vertex_weighting = GL_FALSE; GLboolean _GLEE_NV_light_max_exponent = GL_FALSE; GLboolean _GLEE_NV_vertex_array_range = GL_FALSE; GLboolean _GLEE_NV_register_combiners = GL_FALSE; GLboolean _GLEE_NV_fog_distance = GL_FALSE; GLboolean _GLEE_NV_texgen_emboss = GL_FALSE; GLboolean _GLEE_NV_blend_square = GL_FALSE; GLboolean _GLEE_NV_texture_env_combine4 = GL_FALSE; GLboolean _GLEE_MESA_resize_buffers = GL_FALSE; GLboolean _GLEE_MESA_window_pos = GL_FALSE; GLboolean _GLEE_EXT_texture_compression_s3tc = GL_FALSE; GLboolean _GLEE_IBM_cull_vertex = GL_FALSE; GLboolean _GLEE_IBM_multimode_draw_arrays = GL_FALSE; GLboolean _GLEE_IBM_vertex_array_lists = GL_FALSE; GLboolean _GLEE_SGIX_subsample = GL_FALSE; GLboolean _GLEE_SGIX_ycrcb_subsample = GL_FALSE; GLboolean _GLEE_SGIX_ycrcba = GL_FALSE; GLboolean _GLEE_SGI_depth_pass_instrument = GL_FALSE; GLboolean _GLEE_3DFX_texture_compression_FXT1 = GL_FALSE; GLboolean _GLEE_3DFX_multisample = GL_FALSE; GLboolean _GLEE_3DFX_tbuffer = GL_FALSE; GLboolean _GLEE_EXT_multisample = GL_FALSE; GLboolean _GLEE_SGIX_vertex_preclip = GL_FALSE; GLboolean _GLEE_SGIX_convolution_accuracy = GL_FALSE; GLboolean _GLEE_SGIX_resample = GL_FALSE; GLboolean _GLEE_SGIS_point_line_texgen = GL_FALSE; GLboolean _GLEE_SGIS_texture_color_mask = GL_FALSE; GLboolean _GLEE_EXT_texture_env_dot3 = GL_FALSE; GLboolean _GLEE_ATI_texture_mirror_once = GL_FALSE; GLboolean _GLEE_NV_fence = GL_FALSE; GLboolean _GLEE_IBM_texture_mirrored_repeat = GL_FALSE; GLboolean _GLEE_NV_evaluators = GL_FALSE; GLboolean _GLEE_NV_packed_depth_stencil = GL_FALSE; GLboolean _GLEE_NV_register_combiners2 = GL_FALSE; GLboolean _GLEE_NV_texture_compression_vtc = GL_FALSE; GLboolean _GLEE_NV_texture_rectangle = GL_FALSE; GLboolean _GLEE_NV_texture_shader = GL_FALSE; GLboolean _GLEE_NV_texture_shader2 = GL_FALSE; GLboolean _GLEE_NV_vertex_array_range2 = GL_FALSE; GLboolean _GLEE_NV_vertex_program = GL_FALSE; GLboolean _GLEE_SGIX_texture_coordinate_clamp = GL_FALSE; GLboolean _GLEE_SGIX_scalebias_hint = GL_FALSE; GLboolean _GLEE_OML_interlace = GL_FALSE; GLboolean _GLEE_OML_subsample = GL_FALSE; GLboolean _GLEE_OML_resample = GL_FALSE; GLboolean _GLEE_NV_copy_depth_to_color = GL_FALSE; GLboolean _GLEE_ATI_envmap_bumpmap = GL_FALSE; GLboolean _GLEE_ATI_fragment_shader = GL_FALSE; GLboolean _GLEE_ATI_pn_triangles = GL_FALSE; GLboolean _GLEE_ATI_vertex_array_object = GL_FALSE; GLboolean _GLEE_EXT_vertex_shader = GL_FALSE; GLboolean _GLEE_ATI_vertex_streams = GL_FALSE; GLboolean _GLEE_ATI_element_array = GL_FALSE; GLboolean _GLEE_SUN_mesh_array = GL_FALSE; GLboolean _GLEE_SUN_slice_accum = GL_FALSE; GLboolean _GLEE_NV_multisample_filter_hint = GL_FALSE; GLboolean _GLEE_NV_depth_clamp = GL_FALSE; GLboolean _GLEE_NV_occlusion_query = GL_FALSE; GLboolean _GLEE_NV_point_sprite = GL_FALSE; GLboolean _GLEE_NV_texture_shader3 = GL_FALSE; GLboolean _GLEE_NV_vertex_program1_1 = GL_FALSE; GLboolean _GLEE_EXT_shadow_funcs = GL_FALSE; GLboolean _GLEE_EXT_stencil_two_side = GL_FALSE; GLboolean _GLEE_ATI_text_fragment_shader = GL_FALSE; GLboolean _GLEE_APPLE_client_storage = GL_FALSE; GLboolean _GLEE_APPLE_element_array = GL_FALSE; GLboolean _GLEE_APPLE_fence = GL_FALSE; GLboolean _GLEE_APPLE_vertex_array_object = GL_FALSE; GLboolean _GLEE_APPLE_vertex_array_range = GL_FALSE; GLboolean _GLEE_APPLE_ycbcr_422 = GL_FALSE; GLboolean _GLEE_S3_s3tc = GL_FALSE; GLboolean _GLEE_ATI_draw_buffers = GL_FALSE; GLboolean _GLEE_ATI_pixel_format_float = GL_FALSE; GLboolean _GLEE_ATI_texture_env_combine3 = GL_FALSE; GLboolean _GLEE_ATI_texture_float = GL_FALSE; GLboolean _GLEE_NV_float_buffer = GL_FALSE; GLboolean _GLEE_NV_fragment_program = GL_FALSE; GLboolean _GLEE_NV_half_float = GL_FALSE; GLboolean _GLEE_NV_pixel_data_range = GL_FALSE; GLboolean _GLEE_NV_primitive_restart = GL_FALSE; GLboolean _GLEE_NV_texture_expand_normal = GL_FALSE; GLboolean _GLEE_NV_vertex_program2 = GL_FALSE; GLboolean _GLEE_ATI_map_object_buffer = GL_FALSE; GLboolean _GLEE_ATI_separate_stencil = GL_FALSE; GLboolean _GLEE_ATI_vertex_attrib_array_object = GL_FALSE; GLboolean _GLEE_OES_byte_coordinates = GL_FALSE; GLboolean _GLEE_OES_fixed_point = GL_FALSE; GLboolean _GLEE_OES_single_precision = GL_FALSE; GLboolean _GLEE_OES_compressed_paletted_texture = GL_FALSE; GLboolean _GLEE_OES_read_format = GL_FALSE; GLboolean _GLEE_OES_query_matrix = GL_FALSE; GLboolean _GLEE_EXT_depth_bounds_test = GL_FALSE; GLboolean _GLEE_EXT_texture_mirror_clamp = GL_FALSE; GLboolean _GLEE_EXT_blend_equation_separate = GL_FALSE; GLboolean _GLEE_MESA_pack_invert = GL_FALSE; GLboolean _GLEE_MESA_ycbcr_texture = GL_FALSE; GLboolean _GLEE_EXT_pixel_buffer_object = GL_FALSE; GLboolean _GLEE_NV_fragment_program_option = GL_FALSE; GLboolean _GLEE_NV_fragment_program2 = GL_FALSE; GLboolean _GLEE_NV_vertex_program2_option = GL_FALSE; GLboolean _GLEE_NV_vertex_program3 = GL_FALSE; GLboolean _GLEE_EXT_framebuffer_object = GL_FALSE; GLboolean _GLEE_GREMEDY_string_marker = GL_FALSE; GLboolean _GLEE_EXT_packed_depth_stencil = GL_FALSE; GLboolean _GLEE_EXT_stencil_clear_tag = GL_FALSE; GLboolean _GLEE_EXT_texture_sRGB = GL_FALSE; GLboolean _GLEE_EXT_framebuffer_blit = GL_FALSE; GLboolean _GLEE_EXT_framebuffer_multisample = GL_FALSE; GLboolean _GLEE_MESAX_texture_stack = GL_FALSE; GLboolean _GLEE_EXT_timer_query = GL_FALSE; GLboolean _GLEE_EXT_gpu_program_parameters = GL_FALSE; GLboolean _GLEE_APPLE_flush_buffer_range = GL_FALSE; GLboolean _GLEE_EXT_gpu_shader4 = GL_FALSE; GLboolean _GLEE_EXT_draw_instanced = GL_FALSE; GLboolean _GLEE_EXT_packed_float = GL_FALSE; GLboolean _GLEE_EXT_texture_array = GL_FALSE; GLboolean _GLEE_EXT_texture_buffer_object = GL_FALSE; GLboolean _GLEE_EXT_texture_compression_latc = GL_FALSE; GLboolean _GLEE_EXT_texture_compression_rgtc = GL_FALSE; GLboolean _GLEE_EXT_texture_shared_exponent = GL_FALSE; GLboolean _GLEE_NV_depth_buffer_float = GL_FALSE; GLboolean _GLEE_NV_framebuffer_multisample_coverage = GL_FALSE; GLboolean _GLEE_EXT_framebuffer_sRGB = GL_FALSE; GLboolean _GLEE_NV_geometry_shader4 = GL_FALSE; GLboolean _GLEE_NV_parameter_buffer_object = GL_FALSE; GLboolean _GLEE_EXT_draw_buffers2 = GL_FALSE; GLboolean _GLEE_NV_transform_feedback = GL_FALSE; GLboolean _GLEE_EXT_bindable_uniform = GL_FALSE; GLboolean _GLEE_EXT_texture_integer = GL_FALSE; GLboolean _GLEE_GREMEDY_frame_terminator = GL_FALSE; GLboolean _GLEE_NV_conditional_render = GL_FALSE; GLboolean _GLEE_NV_present_video = GL_FALSE; GLboolean _GLEE_EXT_transform_feedback = GL_FALSE; GLboolean _GLEE_EXT_direct_state_access = GL_FALSE; GLboolean _GLEE_EXT_vertex_array_bgra = GL_FALSE; GLboolean _GLEE_EXT_texture_swizzle = GL_FALSE; GLboolean _GLEE_NV_explicit_multisample = GL_FALSE; GLboolean _GLEE_NV_transform_feedback2 = GL_FALSE; GLboolean _GLEE_ATI_meminfo = GL_FALSE; GLboolean _GLEE_AMD_performance_monitor = GL_FALSE; GLboolean _GLEE_AMD_texture_texture4 = GL_FALSE; GLboolean _GLEE_AMD_vertex_shader_tesselator = GL_FALSE; GLboolean _GLEE_EXT_provoking_vertex = GL_FALSE; GLboolean _GLEE_EXT_texture_snorm = GL_FALSE; GLboolean _GLEE_AMD_draw_buffers_blend = GL_FALSE; GLboolean _GLEE_APPLE_texture_range = GL_FALSE; GLboolean _GLEE_APPLE_float_pixels = GL_FALSE; GLboolean _GLEE_APPLE_vertex_program_evaluators = GL_FALSE; GLboolean _GLEE_APPLE_aux_depth_stencil = GL_FALSE; GLboolean _GLEE_APPLE_object_purgeable = GL_FALSE; GLboolean _GLEE_APPLE_row_bytes = GL_FALSE; GLboolean _GLEE_APPLE_rgb_422 = GL_FALSE; GLboolean _GLEE_NV_video_capture = GL_FALSE; GLboolean _GLEE_NV_copy_image = GL_FALSE; GLboolean _GLEE_EXT_separate_shader_objects = GL_FALSE; GLboolean _GLEE_NV_parameter_buffer_object2 = GL_FALSE; GLboolean _GLEE_NV_shader_buffer_load = GL_FALSE; GLboolean _GLEE_NV_vertex_buffer_unified_memory = GL_FALSE; GLboolean _GLEE_NV_texture_barrier = GL_FALSE; GLboolean _GLEE_AMD_shader_stencil_export = GL_FALSE; GLboolean _GLEE_AMD_seamless_cubemap_per_texture = GL_FALSE; GLboolean _GLEE_AMD_conservative_depth = GL_FALSE; GLboolean _GLEE_EXT_shader_image_load_store = GL_FALSE; GLboolean _GLEE_EXT_vertex_attrib_64bit = GL_FALSE; GLboolean _GLEE_NV_gpu_program5 = GL_FALSE; GLboolean _GLEE_NV_gpu_shader5 = GL_FALSE; GLboolean _GLEE_NV_shader_buffer_store = GL_FALSE; GLboolean _GLEE_NV_tessellation_program5 = GL_FALSE; GLboolean _GLEE_NV_vertex_attrib_integer_64bit = GL_FALSE; GLboolean _GLEE_NV_multisample_coverage = GL_FALSE; GLboolean _GLEE_AMD_name_gen_delete = GL_FALSE; GLboolean _GLEE_AMD_debug_output = GL_FALSE; GLboolean _GLEE_AMD_transform_feedback3_lines_triangles = GL_FALSE; GLboolean _GLEE_AMD_depth_clamp_separate = GL_FALSE; GLboolean _GLEE_EXT_texture_sRGB_decode = GL_FALSE; GLboolean _GLEE_NV_texture_multisample = GL_FALSE; GLboolean _GLEE_AMD_blend_minmax_factor = GL_FALSE; GLboolean _GLEE_AMD_sample_positions = GL_FALSE; GLboolean _GLEE_EXT_x11_sync_object = GL_FALSE; GLboolean _GLEE_AMD_multi_draw_indirect = GL_FALSE; GLboolean _GLEE_EXT_framebuffer_multisample_blit_scaled = GL_FALSE; GLboolean _GLEE_NV_path_rendering = GL_FALSE; GLboolean _GLEE_AMD_pinned_memory = GL_FALSE; GLboolean _GLEE_AMD_stencil_operation_extended = GL_FALSE; GLboolean _GLEE_AMD_vertex_shader_viewport_index = GL_FALSE; GLboolean _GLEE_AMD_vertex_shader_layer = GL_FALSE; GLboolean _GLEE_NV_bindless_texture = GL_FALSE; GLboolean _GLEE_NV_shader_atomic_float = GL_FALSE; GLboolean _GLEE_AMD_query_buffer_object = GL_FALSE; GLboolean _GLEE_NV_compute_program5 = GL_FALSE; GLboolean _GLEE_NV_shader_storage_buffer_object = GL_FALSE; GLboolean _GLEE_NV_shader_atomic_counters = GL_FALSE; GLboolean _GLEE_NV_deep_texture3D = GL_FALSE; GLboolean _GLEE_NVX_conditional_render = GL_FALSE; GLboolean _GLEE_AMD_sparse_texture = GL_FALSE; GLboolean _GLEE_AMD_shader_trinary_minmax = GL_FALSE; GLboolean _GLEE_INTEL_map_texture = GL_FALSE; GLboolean _GLEE_NV_draw_texture = GL_FALSE; GLboolean _GLEE_SGIX_texture_select = GL_FALSE; GLboolean _GLEE_INGR_blend_func_separate = GL_FALSE; GLboolean _GLEE_SGIX_depth_pass_instrument = GL_FALSE; GLboolean _GLEE_SGIX_igloo_interface = GL_FALSE; /* GL Extension names */ char __GLeeGLExtensionNames[463][43]={ "GL_VERSION_1_2", "GL_ARB_imaging", "GL_VERSION_1_3", "GL_VERSION_1_4", "GL_VERSION_1_5", "GL_VERSION_2_0", "GL_VERSION_2_1", "GL_VERSION_3_0", "GL_VERSION_3_1", "GL_VERSION_3_2", "GL_VERSION_3_3", "GL_VERSION_4_0", "GL_VERSION_4_1", "GL_VERSION_4_2", "GL_VERSION_4_3", "GL_ARB_multitexture", "GL_ARB_transpose_matrix", "GL_ARB_multisample", "GL_ARB_texture_env_add", "GL_ARB_texture_cube_map", "GL_ARB_texture_compression", "GL_ARB_texture_border_clamp", "GL_ARB_point_parameters", "GL_ARB_vertex_blend", "GL_ARB_matrix_palette", "GL_ARB_texture_env_combine", "GL_ARB_texture_env_crossbar", "GL_ARB_texture_env_dot3", "GL_ARB_texture_mirrored_repeat", "GL_ARB_depth_texture", "GL_ARB_shadow", "GL_ARB_shadow_ambient", "GL_ARB_window_pos", "GL_ARB_vertex_program", "GL_ARB_fragment_program", "GL_ARB_vertex_buffer_object", "GL_ARB_occlusion_query", "GL_ARB_shader_objects", "GL_ARB_vertex_shader", "GL_ARB_fragment_shader", "GL_ARB_shading_language_100", "GL_ARB_texture_non_power_of_two", "GL_ARB_point_sprite", "GL_ARB_fragment_program_shadow", "GL_ARB_draw_buffers", "GL_ARB_texture_rectangle", "GL_ARB_color_buffer_float", "GL_ARB_half_float_pixel", "GL_ARB_texture_float", "GL_ARB_pixel_buffer_object", "GL_ARB_depth_buffer_float", "GL_ARB_draw_instanced", "GL_ARB_framebuffer_object", "GL_ARB_framebuffer_sRGB", "GL_ARB_geometry_shader4", "GL_ARB_half_float_vertex", "GL_ARB_instanced_arrays", "GL_ARB_map_buffer_range", "GL_ARB_texture_buffer_object", "GL_ARB_texture_compression_rgtc", "GL_ARB_texture_rg", "GL_ARB_vertex_array_object", "GL_ARB_uniform_buffer_object", "GL_ARB_compatibility", "GL_ARB_copy_buffer", "GL_ARB_shader_texture_lod", "GL_ARB_depth_clamp", "GL_ARB_draw_elements_base_vertex", "GL_ARB_fragment_coord_conventions", "GL_ARB_provoking_vertex", "GL_ARB_seamless_cube_map", "GL_ARB_sync", "GL_ARB_texture_multisample", "GL_ARB_vertex_array_bgra", "GL_ARB_draw_buffers_blend", "GL_ARB_sample_shading", "GL_ARB_texture_cube_map_array", "GL_ARB_texture_gather", "GL_ARB_texture_query_lod", "GL_ARB_shading_language_include", "GL_ARB_texture_compression_bptc", "GL_ARB_blend_func_extended", "GL_ARB_explicit_attrib_location", "GL_ARB_occlusion_query2", "GL_ARB_sampler_objects", "GL_ARB_shader_bit_encoding", "GL_ARB_texture_rgb10_a2ui", "GL_ARB_texture_swizzle", "GL_ARB_timer_query", "GL_ARB_vertex_type_2_10_10_10_rev", "GL_ARB_draw_indirect", "GL_ARB_gpu_shader5", "GL_ARB_gpu_shader_fp64", "GL_ARB_shader_subroutine", "GL_ARB_tessellation_shader", "GL_ARB_texture_buffer_object_rgb32", "GL_ARB_transform_feedback2", "GL_ARB_transform_feedback3", "GL_ARB_ES2_compatibility", "GL_ARB_get_program_binary", "GL_ARB_separate_shader_objects", "GL_ARB_shader_precision", "GL_ARB_vertex_attrib_64bit", "GL_ARB_viewport_array", "GL_ARB_cl_event", "GL_ARB_debug_output", "GL_ARB_robustness", "GL_ARB_shader_stencil_export", "GL_ARB_base_instance", "GL_ARB_shading_language_420pack", "GL_ARB_transform_feedback_instanced", "GL_ARB_compressed_texture_pixel_storage", "GL_ARB_conservative_depth", "GL_ARB_internalformat_query", "GL_ARB_map_buffer_alignment", "GL_ARB_shader_atomic_counters", "GL_ARB_shader_image_load_store", "GL_ARB_shading_language_packing", "GL_ARB_texture_storage", "GL_KHR_texture_compression_astc_ldr", "GL_KHR_debug", "GL_ARB_arrays_of_arrays", "GL_ARB_clear_buffer_object", "GL_ARB_compute_shader", "GL_ARB_copy_image", "GL_ARB_texture_view", "GL_ARB_vertex_attrib_binding", "GL_ARB_robustness_isolation", "GL_ARB_ES3_compatibility", "GL_ARB_explicit_uniform_location", "GL_ARB_fragment_layer_viewport", "GL_ARB_framebuffer_no_attachments", "GL_ARB_internalformat_query2", "GL_ARB_invalidate_subdata", "GL_ARB_multi_draw_indirect", "GL_ARB_program_interface_query", "GL_ARB_robust_buffer_access_behavior", "GL_ARB_shader_image_size", "GL_ARB_shader_storage_buffer_object", "GL_ARB_stencil_texturing", "GL_ARB_texture_buffer_range", "GL_ARB_texture_query_levels", "GL_ARB_texture_storage_multisample", "GL_EXT_abgr", "GL_EXT_blend_color", "GL_EXT_polygon_offset", "GL_EXT_texture", "GL_EXT_texture3D", "GL_SGIS_texture_filter4", "GL_EXT_subtexture", "GL_EXT_copy_texture", "GL_EXT_histogram", "GL_EXT_convolution", "GL_SGI_color_matrix", "GL_SGI_color_table", "GL_SGIS_pixel_texture", "GL_SGIX_pixel_texture", "GL_SGIS_texture4D", "GL_SGI_texture_color_table", "GL_EXT_cmyka", "GL_EXT_texture_object", "GL_SGIS_detail_texture", "GL_SGIS_sharpen_texture", "GL_EXT_packed_pixels", "GL_SGIS_texture_lod", "GL_SGIS_multisample", "GL_EXT_rescale_normal", "GL_EXT_vertex_array", "GL_EXT_misc_attribute", "GL_SGIS_generate_mipmap", "GL_SGIX_clipmap", "GL_SGIX_shadow", "GL_SGIS_texture_edge_clamp", "GL_SGIS_texture_border_clamp", "GL_EXT_blend_minmax", "GL_EXT_blend_subtract", "GL_EXT_blend_logic_op", "GL_SGIX_interlace", "GL_SGIX_pixel_tiles", "GL_SGIS_texture_select", "GL_SGIX_sprite", "GL_SGIX_texture_multi_buffer", "GL_EXT_point_parameters", "GL_SGIS_point_parameters", "GL_SGIX_instruments", "GL_SGIX_texture_scale_bias", "GL_SGIX_framezoom", "GL_SGIX_tag_sample_buffer", "GL_FfdMaskSGIX", "GL_SGIX_polynomial_ffd", "GL_SGIX_reference_plane", "GL_SGIX_flush_raster", "GL_SGIX_depth_texture", "GL_SGIS_fog_function", "GL_SGIX_fog_offset", "GL_HP_image_transform", "GL_HP_convolution_border_modes", "GL_INGR_palette_buffer", "GL_SGIX_texture_add_env", "GL_EXT_color_subtable", "GL_PGI_vertex_hints", "GL_PGI_misc_hints", "GL_EXT_paletted_texture", "GL_EXT_clip_volume_hint", "GL_SGIX_list_priority", "GL_SGIX_ir_instrument1", "GL_SGIX_calligraphic_fragment", "GL_SGIX_texture_lod_bias", "GL_SGIX_shadow_ambient", "GL_EXT_index_texture", "GL_EXT_index_material", "GL_EXT_index_func", "GL_EXT_index_array_formats", "GL_EXT_compiled_vertex_array", "GL_EXT_cull_vertex", "GL_SGIX_ycrcb", "GL_SGIX_fragment_lighting", "GL_IBM_rasterpos_clip", "GL_HP_texture_lighting", "GL_EXT_draw_range_elements", "GL_WIN_phong_shading", "GL_WIN_specular_fog", "GL_EXT_light_texture", "GL_SGIX_blend_alpha_minmax", "GL_SGIX_impact_pixel_texture", "GL_EXT_bgra", "GL_SGIX_async", "GL_SGIX_async_pixel", "GL_SGIX_async_histogram", "GL_INTEL_texture_scissor", "GL_INTEL_parallel_arrays", "GL_HP_occlusion_test", "GL_EXT_pixel_transform", "GL_EXT_pixel_transform_color_table", "GL_EXT_shared_texture_palette", "GL_EXT_separate_specular_color", "GL_EXT_secondary_color", "GL_EXT_texture_perturb_normal", "GL_EXT_multi_draw_arrays", "GL_EXT_fog_coord", "GL_REND_screen_coordinates", "GL_EXT_coordinate_frame", "GL_EXT_texture_env_combine", "GL_APPLE_specular_vector", "GL_APPLE_transform_hint", "GL_SGIX_fog_scale", "GL_SUNX_constant_data", "GL_SUN_global_alpha", "GL_SUN_triangle_list", "GL_SUN_vertex", "GL_EXT_blend_func_separate", "GL_INGR_color_clamp", "GL_INGR_interlace_read", "GL_EXT_stencil_wrap", "GL_EXT_422_pixels", "GL_NV_texgen_reflection", "GL_EXT_texture_cube_map", "GL_SUN_convolution_border_modes", "GL_EXT_texture_env_add", "GL_EXT_texture_lod_bias", "GL_EXT_texture_filter_anisotropic", "GL_EXT_vertex_weighting", "GL_NV_light_max_exponent", "GL_NV_vertex_array_range", "GL_NV_register_combiners", "GL_NV_fog_distance", "GL_NV_texgen_emboss", "GL_NV_blend_square", "GL_NV_texture_env_combine4", "GL_MESA_resize_buffers", "GL_MESA_window_pos", "GL_EXT_texture_compression_s3tc", "GL_IBM_cull_vertex", "GL_IBM_multimode_draw_arrays", "GL_IBM_vertex_array_lists", "GL_SGIX_subsample", "GL_SGIX_ycrcb_subsample", "GL_SGIX_ycrcba", "GL_SGI_depth_pass_instrument", "GL_3DFX_texture_compression_FXT1", "GL_3DFX_multisample", "GL_3DFX_tbuffer", "GL_EXT_multisample", "GL_SGIX_vertex_preclip", "GL_SGIX_convolution_accuracy", "GL_SGIX_resample", "GL_SGIS_point_line_texgen", "GL_SGIS_texture_color_mask", "GL_EXT_texture_env_dot3", "GL_ATI_texture_mirror_once", "GL_NV_fence", "GL_IBM_texture_mirrored_repeat", "GL_NV_evaluators", "GL_NV_packed_depth_stencil", "GL_NV_register_combiners2", "GL_NV_texture_compression_vtc", "GL_NV_texture_rectangle", "GL_NV_texture_shader", "GL_NV_texture_shader2", "GL_NV_vertex_array_range2", "GL_NV_vertex_program", "GL_SGIX_texture_coordinate_clamp", "GL_SGIX_scalebias_hint", "GL_OML_interlace", "GL_OML_subsample", "GL_OML_resample", "GL_NV_copy_depth_to_color", "GL_ATI_envmap_bumpmap", "GL_ATI_fragment_shader", "GL_ATI_pn_triangles", "GL_ATI_vertex_array_object", "GL_EXT_vertex_shader", "GL_ATI_vertex_streams", "GL_ATI_element_array", "GL_SUN_mesh_array", "GL_SUN_slice_accum", "GL_NV_multisample_filter_hint", "GL_NV_depth_clamp", "GL_NV_occlusion_query", "GL_NV_point_sprite", "GL_NV_texture_shader3", "GL_NV_vertex_program1_1", "GL_EXT_shadow_funcs", "GL_EXT_stencil_two_side", "GL_ATI_text_fragment_shader", "GL_APPLE_client_storage", "GL_APPLE_element_array", "GL_APPLE_fence", "GL_APPLE_vertex_array_object", "GL_APPLE_vertex_array_range", "GL_APPLE_ycbcr_422", "GL_S3_s3tc", "GL_ATI_draw_buffers", "GL_ATI_pixel_format_float", "GL_ATI_texture_env_combine3", "GL_ATI_texture_float", "GL_NV_float_buffer", "GL_NV_fragment_program", "GL_NV_half_float", "GL_NV_pixel_data_range", "GL_NV_primitive_restart", "GL_NV_texture_expand_normal", "GL_NV_vertex_program2", "GL_ATI_map_object_buffer", "GL_ATI_separate_stencil", "GL_ATI_vertex_attrib_array_object", "GL_OES_byte_coordinates", "GL_OES_fixed_point", "GL_OES_single_precision", "GL_OES_compressed_paletted_texture", "GL_OES_read_format", "GL_OES_query_matrix", "GL_EXT_depth_bounds_test", "GL_EXT_texture_mirror_clamp", "GL_EXT_blend_equation_separate", "GL_MESA_pack_invert", "GL_MESA_ycbcr_texture", "GL_EXT_pixel_buffer_object", "GL_NV_fragment_program_option", "GL_NV_fragment_program2", "GL_NV_vertex_program2_option", "GL_NV_vertex_program3", "GL_EXT_framebuffer_object", "GL_GREMEDY_string_marker", "GL_EXT_packed_depth_stencil", "GL_EXT_stencil_clear_tag", "GL_EXT_texture_sRGB", "GL_EXT_framebuffer_blit", "GL_EXT_framebuffer_multisample", "GL_MESAX_texture_stack", "GL_EXT_timer_query", "GL_EXT_gpu_program_parameters", "GL_APPLE_flush_buffer_range", "GL_EXT_gpu_shader4", "GL_EXT_draw_instanced", "GL_EXT_packed_float", "GL_EXT_texture_array", "GL_EXT_texture_buffer_object", "GL_EXT_texture_compression_latc", "GL_EXT_texture_compression_rgtc", "GL_EXT_texture_shared_exponent", "GL_NV_depth_buffer_float", "GL_NV_framebuffer_multisample_coverage", "GL_EXT_framebuffer_sRGB", "GL_NV_geometry_shader4", "GL_NV_parameter_buffer_object", "GL_EXT_draw_buffers2", "GL_NV_transform_feedback", "GL_EXT_bindable_uniform", "GL_EXT_texture_integer", "GL_GREMEDY_frame_terminator", "GL_NV_conditional_render", "GL_NV_present_video", "GL_EXT_transform_feedback", "GL_EXT_direct_state_access", "GL_EXT_vertex_array_bgra", "GL_EXT_texture_swizzle", "GL_NV_explicit_multisample", "GL_NV_transform_feedback2", "GL_ATI_meminfo", "GL_AMD_performance_monitor", "GL_AMD_texture_texture4", "GL_AMD_vertex_shader_tesselator", "GL_EXT_provoking_vertex", "GL_EXT_texture_snorm", "GL_AMD_draw_buffers_blend", "GL_APPLE_texture_range", "GL_APPLE_float_pixels", "GL_APPLE_vertex_program_evaluators", "GL_APPLE_aux_depth_stencil", "GL_APPLE_object_purgeable", "GL_APPLE_row_bytes", "GL_APPLE_rgb_422", "GL_NV_video_capture", "GL_NV_copy_image", "GL_EXT_separate_shader_objects", "GL_NV_parameter_buffer_object2", "GL_NV_shader_buffer_load", "GL_NV_vertex_buffer_unified_memory", "GL_NV_texture_barrier", "GL_AMD_shader_stencil_export", "GL_AMD_seamless_cubemap_per_texture", "GL_AMD_conservative_depth", "GL_EXT_shader_image_load_store", "GL_EXT_vertex_attrib_64bit", "GL_NV_gpu_program5", "GL_NV_gpu_shader5", "GL_NV_shader_buffer_store", "GL_NV_tessellation_program5", "GL_NV_vertex_attrib_integer_64bit", "GL_NV_multisample_coverage", "GL_AMD_name_gen_delete", "GL_AMD_debug_output", "GL_AMD_transform_feedback3_lines_triangles", "GL_AMD_depth_clamp_separate", "GL_EXT_texture_sRGB_decode", "GL_NV_texture_multisample", "GL_AMD_blend_minmax_factor", "GL_AMD_sample_positions", "GL_EXT_x11_sync_object", "GL_AMD_multi_draw_indirect", "GL_EXT_framebuffer_multisample_blit_scaled", "GL_NV_path_rendering", "GL_AMD_pinned_memory", "GL_AMD_stencil_operation_extended", "GL_AMD_vertex_shader_viewport_index", "GL_AMD_vertex_shader_layer", "GL_NV_bindless_texture", "GL_NV_shader_atomic_float", "GL_AMD_query_buffer_object", "GL_NV_compute_program5", "GL_NV_shader_storage_buffer_object", "GL_NV_shader_atomic_counters", "GL_NV_deep_texture3D", "GL_NVX_conditional_render", "GL_AMD_sparse_texture", "GL_AMD_shader_trinary_minmax", "GL_INTEL_map_texture", "GL_NV_draw_texture", "GL_SGIX_texture_select", "GL_INGR_blend_func_separate", "GL_SGIX_depth_pass_instrument", "GL_SGIX_igloo_interface" }; int __GLeeGLNumExtensions=463; /* GL_VERSION_1_2 */ #ifdef __GLEE_GL_VERSION_1_2 #ifndef GLEE_C_DEFINED_glBlendColor #define GLEE_C_DEFINED_glBlendColor void __stdcall GLee_Lazy_glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {if (GLeeInit()) glBlendColor(red, green, blue, alpha);} GLEEPFNGLBLENDCOLORPROC GLeeFuncPtr_glBlendColor=GLee_Lazy_glBlendColor; #endif #ifndef GLEE_C_DEFINED_glBlendEquation #define GLEE_C_DEFINED_glBlendEquation void __stdcall GLee_Lazy_glBlendEquation(GLenum mode) {if (GLeeInit()) glBlendEquation(mode);} GLEEPFNGLBLENDEQUATIONPROC GLeeFuncPtr_glBlendEquation=GLee_Lazy_glBlendEquation; #endif #ifndef GLEE_C_DEFINED_glDrawRangeElements #define GLEE_C_DEFINED_glDrawRangeElements void __stdcall GLee_Lazy_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices) {if (GLeeInit()) glDrawRangeElements(mode, start, end, count, type, indices);} GLEEPFNGLDRAWRANGEELEMENTSPROC GLeeFuncPtr_glDrawRangeElements=GLee_Lazy_glDrawRangeElements; #endif #ifndef GLEE_C_DEFINED_glTexImage3D #define GLEE_C_DEFINED_glTexImage3D void __stdcall GLee_Lazy_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels);} GLEEPFNGLTEXIMAGE3DPROC GLeeFuncPtr_glTexImage3D=GLee_Lazy_glTexImage3D; #endif #ifndef GLEE_C_DEFINED_glTexSubImage3D #define GLEE_C_DEFINED_glTexSubImage3D void __stdcall GLee_Lazy_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);} GLEEPFNGLTEXSUBIMAGE3DPROC GLeeFuncPtr_glTexSubImage3D=GLee_Lazy_glTexSubImage3D; #endif #ifndef GLEE_C_DEFINED_glCopyTexSubImage3D #define GLEE_C_DEFINED_glCopyTexSubImage3D void __stdcall GLee_Lazy_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {if (GLeeInit()) glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);} GLEEPFNGLCOPYTEXSUBIMAGE3DPROC GLeeFuncPtr_glCopyTexSubImage3D=GLee_Lazy_glCopyTexSubImage3D; #endif #ifndef GLEE_C_DEFINED_glColorTable #define GLEE_C_DEFINED_glColorTable void __stdcall GLee_Lazy_glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table) {if (GLeeInit()) glColorTable(target, internalformat, width, format, type, table);} GLEEPFNGLCOLORTABLEPROC GLeeFuncPtr_glColorTable=GLee_Lazy_glColorTable; #endif #ifndef GLEE_C_DEFINED_glColorTableParameterfv #define GLEE_C_DEFINED_glColorTableParameterfv void __stdcall GLee_Lazy_glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat * params) {if (GLeeInit()) glColorTableParameterfv(target, pname, params);} GLEEPFNGLCOLORTABLEPARAMETERFVPROC GLeeFuncPtr_glColorTableParameterfv=GLee_Lazy_glColorTableParameterfv; #endif #ifndef GLEE_C_DEFINED_glColorTableParameteriv #define GLEE_C_DEFINED_glColorTableParameteriv void __stdcall GLee_Lazy_glColorTableParameteriv(GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glColorTableParameteriv(target, pname, params);} GLEEPFNGLCOLORTABLEPARAMETERIVPROC GLeeFuncPtr_glColorTableParameteriv=GLee_Lazy_glColorTableParameteriv; #endif #ifndef GLEE_C_DEFINED_glCopyColorTable #define GLEE_C_DEFINED_glCopyColorTable void __stdcall GLee_Lazy_glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) {if (GLeeInit()) glCopyColorTable(target, internalformat, x, y, width);} GLEEPFNGLCOPYCOLORTABLEPROC GLeeFuncPtr_glCopyColorTable=GLee_Lazy_glCopyColorTable; #endif #ifndef GLEE_C_DEFINED_glGetColorTable #define GLEE_C_DEFINED_glGetColorTable void __stdcall GLee_Lazy_glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid * table) {if (GLeeInit()) glGetColorTable(target, format, type, table);} GLEEPFNGLGETCOLORTABLEPROC GLeeFuncPtr_glGetColorTable=GLee_Lazy_glGetColorTable; #endif #ifndef GLEE_C_DEFINED_glGetColorTableParameterfv #define GLEE_C_DEFINED_glGetColorTableParameterfv void __stdcall GLee_Lazy_glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetColorTableParameterfv(target, pname, params);} GLEEPFNGLGETCOLORTABLEPARAMETERFVPROC GLeeFuncPtr_glGetColorTableParameterfv=GLee_Lazy_glGetColorTableParameterfv; #endif #ifndef GLEE_C_DEFINED_glGetColorTableParameteriv #define GLEE_C_DEFINED_glGetColorTableParameteriv void __stdcall GLee_Lazy_glGetColorTableParameteriv(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetColorTableParameteriv(target, pname, params);} GLEEPFNGLGETCOLORTABLEPARAMETERIVPROC GLeeFuncPtr_glGetColorTableParameteriv=GLee_Lazy_glGetColorTableParameteriv; #endif #ifndef GLEE_C_DEFINED_glColorSubTable #define GLEE_C_DEFINED_glColorSubTable void __stdcall GLee_Lazy_glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data) {if (GLeeInit()) glColorSubTable(target, start, count, format, type, data);} GLEEPFNGLCOLORSUBTABLEPROC GLeeFuncPtr_glColorSubTable=GLee_Lazy_glColorSubTable; #endif #ifndef GLEE_C_DEFINED_glCopyColorSubTable #define GLEE_C_DEFINED_glCopyColorSubTable void __stdcall GLee_Lazy_glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) {if (GLeeInit()) glCopyColorSubTable(target, start, x, y, width);} GLEEPFNGLCOPYCOLORSUBTABLEPROC GLeeFuncPtr_glCopyColorSubTable=GLee_Lazy_glCopyColorSubTable; #endif #ifndef GLEE_C_DEFINED_glConvolutionFilter1D #define GLEE_C_DEFINED_glConvolutionFilter1D void __stdcall GLee_Lazy_glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image) {if (GLeeInit()) glConvolutionFilter1D(target, internalformat, width, format, type, image);} GLEEPFNGLCONVOLUTIONFILTER1DPROC GLeeFuncPtr_glConvolutionFilter1D=GLee_Lazy_glConvolutionFilter1D; #endif #ifndef GLEE_C_DEFINED_glConvolutionFilter2D #define GLEE_C_DEFINED_glConvolutionFilter2D void __stdcall GLee_Lazy_glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image) {if (GLeeInit()) glConvolutionFilter2D(target, internalformat, width, height, format, type, image);} GLEEPFNGLCONVOLUTIONFILTER2DPROC GLeeFuncPtr_glConvolutionFilter2D=GLee_Lazy_glConvolutionFilter2D; #endif #ifndef GLEE_C_DEFINED_glConvolutionParameterf #define GLEE_C_DEFINED_glConvolutionParameterf void __stdcall GLee_Lazy_glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params) {if (GLeeInit()) glConvolutionParameterf(target, pname, params);} GLEEPFNGLCONVOLUTIONPARAMETERFPROC GLeeFuncPtr_glConvolutionParameterf=GLee_Lazy_glConvolutionParameterf; #endif #ifndef GLEE_C_DEFINED_glConvolutionParameterfv #define GLEE_C_DEFINED_glConvolutionParameterfv void __stdcall GLee_Lazy_glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat * params) {if (GLeeInit()) glConvolutionParameterfv(target, pname, params);} GLEEPFNGLCONVOLUTIONPARAMETERFVPROC GLeeFuncPtr_glConvolutionParameterfv=GLee_Lazy_glConvolutionParameterfv; #endif #ifndef GLEE_C_DEFINED_glConvolutionParameteri #define GLEE_C_DEFINED_glConvolutionParameteri void __stdcall GLee_Lazy_glConvolutionParameteri(GLenum target, GLenum pname, GLint params) {if (GLeeInit()) glConvolutionParameteri(target, pname, params);} GLEEPFNGLCONVOLUTIONPARAMETERIPROC GLeeFuncPtr_glConvolutionParameteri=GLee_Lazy_glConvolutionParameteri; #endif #ifndef GLEE_C_DEFINED_glConvolutionParameteriv #define GLEE_C_DEFINED_glConvolutionParameteriv void __stdcall GLee_Lazy_glConvolutionParameteriv(GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glConvolutionParameteriv(target, pname, params);} GLEEPFNGLCONVOLUTIONPARAMETERIVPROC GLeeFuncPtr_glConvolutionParameteriv=GLee_Lazy_glConvolutionParameteriv; #endif #ifndef GLEE_C_DEFINED_glCopyConvolutionFilter1D #define GLEE_C_DEFINED_glCopyConvolutionFilter1D void __stdcall GLee_Lazy_glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) {if (GLeeInit()) glCopyConvolutionFilter1D(target, internalformat, x, y, width);} GLEEPFNGLCOPYCONVOLUTIONFILTER1DPROC GLeeFuncPtr_glCopyConvolutionFilter1D=GLee_Lazy_glCopyConvolutionFilter1D; #endif #ifndef GLEE_C_DEFINED_glCopyConvolutionFilter2D #define GLEE_C_DEFINED_glCopyConvolutionFilter2D void __stdcall GLee_Lazy_glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) {if (GLeeInit()) glCopyConvolutionFilter2D(target, internalformat, x, y, width, height);} GLEEPFNGLCOPYCONVOLUTIONFILTER2DPROC GLeeFuncPtr_glCopyConvolutionFilter2D=GLee_Lazy_glCopyConvolutionFilter2D; #endif #ifndef GLEE_C_DEFINED_glGetConvolutionFilter #define GLEE_C_DEFINED_glGetConvolutionFilter void __stdcall GLee_Lazy_glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid * image) {if (GLeeInit()) glGetConvolutionFilter(target, format, type, image);} GLEEPFNGLGETCONVOLUTIONFILTERPROC GLeeFuncPtr_glGetConvolutionFilter=GLee_Lazy_glGetConvolutionFilter; #endif #ifndef GLEE_C_DEFINED_glGetConvolutionParameterfv #define GLEE_C_DEFINED_glGetConvolutionParameterfv void __stdcall GLee_Lazy_glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetConvolutionParameterfv(target, pname, params);} GLEEPFNGLGETCONVOLUTIONPARAMETERFVPROC GLeeFuncPtr_glGetConvolutionParameterfv=GLee_Lazy_glGetConvolutionParameterfv; #endif #ifndef GLEE_C_DEFINED_glGetConvolutionParameteriv #define GLEE_C_DEFINED_glGetConvolutionParameteriv void __stdcall GLee_Lazy_glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetConvolutionParameteriv(target, pname, params);} GLEEPFNGLGETCONVOLUTIONPARAMETERIVPROC GLeeFuncPtr_glGetConvolutionParameteriv=GLee_Lazy_glGetConvolutionParameteriv; #endif #ifndef GLEE_C_DEFINED_glGetSeparableFilter #define GLEE_C_DEFINED_glGetSeparableFilter void __stdcall GLee_Lazy_glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span) {if (GLeeInit()) glGetSeparableFilter(target, format, type, row, column, span);} GLEEPFNGLGETSEPARABLEFILTERPROC GLeeFuncPtr_glGetSeparableFilter=GLee_Lazy_glGetSeparableFilter; #endif #ifndef GLEE_C_DEFINED_glSeparableFilter2D #define GLEE_C_DEFINED_glSeparableFilter2D void __stdcall GLee_Lazy_glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column) {if (GLeeInit()) glSeparableFilter2D(target, internalformat, width, height, format, type, row, column);} GLEEPFNGLSEPARABLEFILTER2DPROC GLeeFuncPtr_glSeparableFilter2D=GLee_Lazy_glSeparableFilter2D; #endif #ifndef GLEE_C_DEFINED_glGetHistogram #define GLEE_C_DEFINED_glGetHistogram void __stdcall GLee_Lazy_glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values) {if (GLeeInit()) glGetHistogram(target, reset, format, type, values);} GLEEPFNGLGETHISTOGRAMPROC GLeeFuncPtr_glGetHistogram=GLee_Lazy_glGetHistogram; #endif #ifndef GLEE_C_DEFINED_glGetHistogramParameterfv #define GLEE_C_DEFINED_glGetHistogramParameterfv void __stdcall GLee_Lazy_glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetHistogramParameterfv(target, pname, params);} GLEEPFNGLGETHISTOGRAMPARAMETERFVPROC GLeeFuncPtr_glGetHistogramParameterfv=GLee_Lazy_glGetHistogramParameterfv; #endif #ifndef GLEE_C_DEFINED_glGetHistogramParameteriv #define GLEE_C_DEFINED_glGetHistogramParameteriv void __stdcall GLee_Lazy_glGetHistogramParameteriv(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetHistogramParameteriv(target, pname, params);} GLEEPFNGLGETHISTOGRAMPARAMETERIVPROC GLeeFuncPtr_glGetHistogramParameteriv=GLee_Lazy_glGetHistogramParameteriv; #endif #ifndef GLEE_C_DEFINED_glGetMinmax #define GLEE_C_DEFINED_glGetMinmax void __stdcall GLee_Lazy_glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values) {if (GLeeInit()) glGetMinmax(target, reset, format, type, values);} GLEEPFNGLGETMINMAXPROC GLeeFuncPtr_glGetMinmax=GLee_Lazy_glGetMinmax; #endif #ifndef GLEE_C_DEFINED_glGetMinmaxParameterfv #define GLEE_C_DEFINED_glGetMinmaxParameterfv void __stdcall GLee_Lazy_glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetMinmaxParameterfv(target, pname, params);} GLEEPFNGLGETMINMAXPARAMETERFVPROC GLeeFuncPtr_glGetMinmaxParameterfv=GLee_Lazy_glGetMinmaxParameterfv; #endif #ifndef GLEE_C_DEFINED_glGetMinmaxParameteriv #define GLEE_C_DEFINED_glGetMinmaxParameteriv void __stdcall GLee_Lazy_glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetMinmaxParameteriv(target, pname, params);} GLEEPFNGLGETMINMAXPARAMETERIVPROC GLeeFuncPtr_glGetMinmaxParameteriv=GLee_Lazy_glGetMinmaxParameteriv; #endif #ifndef GLEE_C_DEFINED_glHistogram #define GLEE_C_DEFINED_glHistogram void __stdcall GLee_Lazy_glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) {if (GLeeInit()) glHistogram(target, width, internalformat, sink);} GLEEPFNGLHISTOGRAMPROC GLeeFuncPtr_glHistogram=GLee_Lazy_glHistogram; #endif #ifndef GLEE_C_DEFINED_glMinmax #define GLEE_C_DEFINED_glMinmax void __stdcall GLee_Lazy_glMinmax(GLenum target, GLenum internalformat, GLboolean sink) {if (GLeeInit()) glMinmax(target, internalformat, sink);} GLEEPFNGLMINMAXPROC GLeeFuncPtr_glMinmax=GLee_Lazy_glMinmax; #endif #ifndef GLEE_C_DEFINED_glResetHistogram #define GLEE_C_DEFINED_glResetHistogram void __stdcall GLee_Lazy_glResetHistogram(GLenum target) {if (GLeeInit()) glResetHistogram(target);} GLEEPFNGLRESETHISTOGRAMPROC GLeeFuncPtr_glResetHistogram=GLee_Lazy_glResetHistogram; #endif #ifndef GLEE_C_DEFINED_glResetMinmax #define GLEE_C_DEFINED_glResetMinmax void __stdcall GLee_Lazy_glResetMinmax(GLenum target) {if (GLeeInit()) glResetMinmax(target);} GLEEPFNGLRESETMINMAXPROC GLeeFuncPtr_glResetMinmax=GLee_Lazy_glResetMinmax; #endif #endif /* GL_ARB_imaging */ #ifdef __GLEE_GL_ARB_imaging #endif /* GL_VERSION_1_3 */ #ifdef __GLEE_GL_VERSION_1_3 #ifndef GLEE_C_DEFINED_glActiveTexture #define GLEE_C_DEFINED_glActiveTexture void __stdcall GLee_Lazy_glActiveTexture(GLenum texture) {if (GLeeInit()) glActiveTexture(texture);} GLEEPFNGLACTIVETEXTUREPROC GLeeFuncPtr_glActiveTexture=GLee_Lazy_glActiveTexture; #endif #ifndef GLEE_C_DEFINED_glSampleCoverage #define GLEE_C_DEFINED_glSampleCoverage void __stdcall GLee_Lazy_glSampleCoverage(GLfloat value, GLboolean invert) {if (GLeeInit()) glSampleCoverage(value, invert);} GLEEPFNGLSAMPLECOVERAGEPROC GLeeFuncPtr_glSampleCoverage=GLee_Lazy_glSampleCoverage; #endif #ifndef GLEE_C_DEFINED_glCompressedTexImage3D #define GLEE_C_DEFINED_glCompressedTexImage3D void __stdcall GLee_Lazy_glCompressedTexImage3D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXIMAGE3DPROC GLeeFuncPtr_glCompressedTexImage3D=GLee_Lazy_glCompressedTexImage3D; #endif #ifndef GLEE_C_DEFINED_glCompressedTexImage2D #define GLEE_C_DEFINED_glCompressedTexImage2D void __stdcall GLee_Lazy_glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXIMAGE2DPROC GLeeFuncPtr_glCompressedTexImage2D=GLee_Lazy_glCompressedTexImage2D; #endif #ifndef GLEE_C_DEFINED_glCompressedTexImage1D #define GLEE_C_DEFINED_glCompressedTexImage1D void __stdcall GLee_Lazy_glCompressedTexImage1D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexImage1D(target, level, internalformat, width, border, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXIMAGE1DPROC GLeeFuncPtr_glCompressedTexImage1D=GLee_Lazy_glCompressedTexImage1D; #endif #ifndef GLEE_C_DEFINED_glCompressedTexSubImage3D #define GLEE_C_DEFINED_glCompressedTexSubImage3D void __stdcall GLee_Lazy_glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXSUBIMAGE3DPROC GLeeFuncPtr_glCompressedTexSubImage3D=GLee_Lazy_glCompressedTexSubImage3D; #endif #ifndef GLEE_C_DEFINED_glCompressedTexSubImage2D #define GLEE_C_DEFINED_glCompressedTexSubImage2D void __stdcall GLee_Lazy_glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXSUBIMAGE2DPROC GLeeFuncPtr_glCompressedTexSubImage2D=GLee_Lazy_glCompressedTexSubImage2D; #endif #ifndef GLEE_C_DEFINED_glCompressedTexSubImage1D #define GLEE_C_DEFINED_glCompressedTexSubImage1D void __stdcall GLee_Lazy_glCompressedTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXSUBIMAGE1DPROC GLeeFuncPtr_glCompressedTexSubImage1D=GLee_Lazy_glCompressedTexSubImage1D; #endif #ifndef GLEE_C_DEFINED_glGetCompressedTexImage #define GLEE_C_DEFINED_glGetCompressedTexImage void __stdcall GLee_Lazy_glGetCompressedTexImage(GLenum target, GLint level, GLvoid * img) {if (GLeeInit()) glGetCompressedTexImage(target, level, img);} GLEEPFNGLGETCOMPRESSEDTEXIMAGEPROC GLeeFuncPtr_glGetCompressedTexImage=GLee_Lazy_glGetCompressedTexImage; #endif #ifndef GLEE_C_DEFINED_glClientActiveTexture #define GLEE_C_DEFINED_glClientActiveTexture void __stdcall GLee_Lazy_glClientActiveTexture(GLenum texture) {if (GLeeInit()) glClientActiveTexture(texture);} GLEEPFNGLCLIENTACTIVETEXTUREPROC GLeeFuncPtr_glClientActiveTexture=GLee_Lazy_glClientActiveTexture; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1d #define GLEE_C_DEFINED_glMultiTexCoord1d void __stdcall GLee_Lazy_glMultiTexCoord1d(GLenum target, GLdouble s) {if (GLeeInit()) glMultiTexCoord1d(target, s);} GLEEPFNGLMULTITEXCOORD1DPROC GLeeFuncPtr_glMultiTexCoord1d=GLee_Lazy_glMultiTexCoord1d; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1dv #define GLEE_C_DEFINED_glMultiTexCoord1dv void __stdcall GLee_Lazy_glMultiTexCoord1dv(GLenum target, const GLdouble * v) {if (GLeeInit()) glMultiTexCoord1dv(target, v);} GLEEPFNGLMULTITEXCOORD1DVPROC GLeeFuncPtr_glMultiTexCoord1dv=GLee_Lazy_glMultiTexCoord1dv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1f #define GLEE_C_DEFINED_glMultiTexCoord1f void __stdcall GLee_Lazy_glMultiTexCoord1f(GLenum target, GLfloat s) {if (GLeeInit()) glMultiTexCoord1f(target, s);} GLEEPFNGLMULTITEXCOORD1FPROC GLeeFuncPtr_glMultiTexCoord1f=GLee_Lazy_glMultiTexCoord1f; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1fv #define GLEE_C_DEFINED_glMultiTexCoord1fv void __stdcall GLee_Lazy_glMultiTexCoord1fv(GLenum target, const GLfloat * v) {if (GLeeInit()) glMultiTexCoord1fv(target, v);} GLEEPFNGLMULTITEXCOORD1FVPROC GLeeFuncPtr_glMultiTexCoord1fv=GLee_Lazy_glMultiTexCoord1fv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1i #define GLEE_C_DEFINED_glMultiTexCoord1i void __stdcall GLee_Lazy_glMultiTexCoord1i(GLenum target, GLint s) {if (GLeeInit()) glMultiTexCoord1i(target, s);} GLEEPFNGLMULTITEXCOORD1IPROC GLeeFuncPtr_glMultiTexCoord1i=GLee_Lazy_glMultiTexCoord1i; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1iv #define GLEE_C_DEFINED_glMultiTexCoord1iv void __stdcall GLee_Lazy_glMultiTexCoord1iv(GLenum target, const GLint * v) {if (GLeeInit()) glMultiTexCoord1iv(target, v);} GLEEPFNGLMULTITEXCOORD1IVPROC GLeeFuncPtr_glMultiTexCoord1iv=GLee_Lazy_glMultiTexCoord1iv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1s #define GLEE_C_DEFINED_glMultiTexCoord1s void __stdcall GLee_Lazy_glMultiTexCoord1s(GLenum target, GLshort s) {if (GLeeInit()) glMultiTexCoord1s(target, s);} GLEEPFNGLMULTITEXCOORD1SPROC GLeeFuncPtr_glMultiTexCoord1s=GLee_Lazy_glMultiTexCoord1s; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1sv #define GLEE_C_DEFINED_glMultiTexCoord1sv void __stdcall GLee_Lazy_glMultiTexCoord1sv(GLenum target, const GLshort * v) {if (GLeeInit()) glMultiTexCoord1sv(target, v);} GLEEPFNGLMULTITEXCOORD1SVPROC GLeeFuncPtr_glMultiTexCoord1sv=GLee_Lazy_glMultiTexCoord1sv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2d #define GLEE_C_DEFINED_glMultiTexCoord2d void __stdcall GLee_Lazy_glMultiTexCoord2d(GLenum target, GLdouble s, GLdouble t) {if (GLeeInit()) glMultiTexCoord2d(target, s, t);} GLEEPFNGLMULTITEXCOORD2DPROC GLeeFuncPtr_glMultiTexCoord2d=GLee_Lazy_glMultiTexCoord2d; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2dv #define GLEE_C_DEFINED_glMultiTexCoord2dv void __stdcall GLee_Lazy_glMultiTexCoord2dv(GLenum target, const GLdouble * v) {if (GLeeInit()) glMultiTexCoord2dv(target, v);} GLEEPFNGLMULTITEXCOORD2DVPROC GLeeFuncPtr_glMultiTexCoord2dv=GLee_Lazy_glMultiTexCoord2dv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2f #define GLEE_C_DEFINED_glMultiTexCoord2f void __stdcall GLee_Lazy_glMultiTexCoord2f(GLenum target, GLfloat s, GLfloat t) {if (GLeeInit()) glMultiTexCoord2f(target, s, t);} GLEEPFNGLMULTITEXCOORD2FPROC GLeeFuncPtr_glMultiTexCoord2f=GLee_Lazy_glMultiTexCoord2f; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2fv #define GLEE_C_DEFINED_glMultiTexCoord2fv void __stdcall GLee_Lazy_glMultiTexCoord2fv(GLenum target, const GLfloat * v) {if (GLeeInit()) glMultiTexCoord2fv(target, v);} GLEEPFNGLMULTITEXCOORD2FVPROC GLeeFuncPtr_glMultiTexCoord2fv=GLee_Lazy_glMultiTexCoord2fv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2i #define GLEE_C_DEFINED_glMultiTexCoord2i void __stdcall GLee_Lazy_glMultiTexCoord2i(GLenum target, GLint s, GLint t) {if (GLeeInit()) glMultiTexCoord2i(target, s, t);} GLEEPFNGLMULTITEXCOORD2IPROC GLeeFuncPtr_glMultiTexCoord2i=GLee_Lazy_glMultiTexCoord2i; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2iv #define GLEE_C_DEFINED_glMultiTexCoord2iv void __stdcall GLee_Lazy_glMultiTexCoord2iv(GLenum target, const GLint * v) {if (GLeeInit()) glMultiTexCoord2iv(target, v);} GLEEPFNGLMULTITEXCOORD2IVPROC GLeeFuncPtr_glMultiTexCoord2iv=GLee_Lazy_glMultiTexCoord2iv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2s #define GLEE_C_DEFINED_glMultiTexCoord2s void __stdcall GLee_Lazy_glMultiTexCoord2s(GLenum target, GLshort s, GLshort t) {if (GLeeInit()) glMultiTexCoord2s(target, s, t);} GLEEPFNGLMULTITEXCOORD2SPROC GLeeFuncPtr_glMultiTexCoord2s=GLee_Lazy_glMultiTexCoord2s; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2sv #define GLEE_C_DEFINED_glMultiTexCoord2sv void __stdcall GLee_Lazy_glMultiTexCoord2sv(GLenum target, const GLshort * v) {if (GLeeInit()) glMultiTexCoord2sv(target, v);} GLEEPFNGLMULTITEXCOORD2SVPROC GLeeFuncPtr_glMultiTexCoord2sv=GLee_Lazy_glMultiTexCoord2sv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3d #define GLEE_C_DEFINED_glMultiTexCoord3d void __stdcall GLee_Lazy_glMultiTexCoord3d(GLenum target, GLdouble s, GLdouble t, GLdouble r) {if (GLeeInit()) glMultiTexCoord3d(target, s, t, r);} GLEEPFNGLMULTITEXCOORD3DPROC GLeeFuncPtr_glMultiTexCoord3d=GLee_Lazy_glMultiTexCoord3d; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3dv #define GLEE_C_DEFINED_glMultiTexCoord3dv void __stdcall GLee_Lazy_glMultiTexCoord3dv(GLenum target, const GLdouble * v) {if (GLeeInit()) glMultiTexCoord3dv(target, v);} GLEEPFNGLMULTITEXCOORD3DVPROC GLeeFuncPtr_glMultiTexCoord3dv=GLee_Lazy_glMultiTexCoord3dv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3f #define GLEE_C_DEFINED_glMultiTexCoord3f void __stdcall GLee_Lazy_glMultiTexCoord3f(GLenum target, GLfloat s, GLfloat t, GLfloat r) {if (GLeeInit()) glMultiTexCoord3f(target, s, t, r);} GLEEPFNGLMULTITEXCOORD3FPROC GLeeFuncPtr_glMultiTexCoord3f=GLee_Lazy_glMultiTexCoord3f; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3fv #define GLEE_C_DEFINED_glMultiTexCoord3fv void __stdcall GLee_Lazy_glMultiTexCoord3fv(GLenum target, const GLfloat * v) {if (GLeeInit()) glMultiTexCoord3fv(target, v);} GLEEPFNGLMULTITEXCOORD3FVPROC GLeeFuncPtr_glMultiTexCoord3fv=GLee_Lazy_glMultiTexCoord3fv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3i #define GLEE_C_DEFINED_glMultiTexCoord3i void __stdcall GLee_Lazy_glMultiTexCoord3i(GLenum target, GLint s, GLint t, GLint r) {if (GLeeInit()) glMultiTexCoord3i(target, s, t, r);} GLEEPFNGLMULTITEXCOORD3IPROC GLeeFuncPtr_glMultiTexCoord3i=GLee_Lazy_glMultiTexCoord3i; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3iv #define GLEE_C_DEFINED_glMultiTexCoord3iv void __stdcall GLee_Lazy_glMultiTexCoord3iv(GLenum target, const GLint * v) {if (GLeeInit()) glMultiTexCoord3iv(target, v);} GLEEPFNGLMULTITEXCOORD3IVPROC GLeeFuncPtr_glMultiTexCoord3iv=GLee_Lazy_glMultiTexCoord3iv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3s #define GLEE_C_DEFINED_glMultiTexCoord3s void __stdcall GLee_Lazy_glMultiTexCoord3s(GLenum target, GLshort s, GLshort t, GLshort r) {if (GLeeInit()) glMultiTexCoord3s(target, s, t, r);} GLEEPFNGLMULTITEXCOORD3SPROC GLeeFuncPtr_glMultiTexCoord3s=GLee_Lazy_glMultiTexCoord3s; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3sv #define GLEE_C_DEFINED_glMultiTexCoord3sv void __stdcall GLee_Lazy_glMultiTexCoord3sv(GLenum target, const GLshort * v) {if (GLeeInit()) glMultiTexCoord3sv(target, v);} GLEEPFNGLMULTITEXCOORD3SVPROC GLeeFuncPtr_glMultiTexCoord3sv=GLee_Lazy_glMultiTexCoord3sv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4d #define GLEE_C_DEFINED_glMultiTexCoord4d void __stdcall GLee_Lazy_glMultiTexCoord4d(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) {if (GLeeInit()) glMultiTexCoord4d(target, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4DPROC GLeeFuncPtr_glMultiTexCoord4d=GLee_Lazy_glMultiTexCoord4d; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4dv #define GLEE_C_DEFINED_glMultiTexCoord4dv void __stdcall GLee_Lazy_glMultiTexCoord4dv(GLenum target, const GLdouble * v) {if (GLeeInit()) glMultiTexCoord4dv(target, v);} GLEEPFNGLMULTITEXCOORD4DVPROC GLeeFuncPtr_glMultiTexCoord4dv=GLee_Lazy_glMultiTexCoord4dv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4f #define GLEE_C_DEFINED_glMultiTexCoord4f void __stdcall GLee_Lazy_glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {if (GLeeInit()) glMultiTexCoord4f(target, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4FPROC GLeeFuncPtr_glMultiTexCoord4f=GLee_Lazy_glMultiTexCoord4f; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4fv #define GLEE_C_DEFINED_glMultiTexCoord4fv void __stdcall GLee_Lazy_glMultiTexCoord4fv(GLenum target, const GLfloat * v) {if (GLeeInit()) glMultiTexCoord4fv(target, v);} GLEEPFNGLMULTITEXCOORD4FVPROC GLeeFuncPtr_glMultiTexCoord4fv=GLee_Lazy_glMultiTexCoord4fv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4i #define GLEE_C_DEFINED_glMultiTexCoord4i void __stdcall GLee_Lazy_glMultiTexCoord4i(GLenum target, GLint s, GLint t, GLint r, GLint q) {if (GLeeInit()) glMultiTexCoord4i(target, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4IPROC GLeeFuncPtr_glMultiTexCoord4i=GLee_Lazy_glMultiTexCoord4i; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4iv #define GLEE_C_DEFINED_glMultiTexCoord4iv void __stdcall GLee_Lazy_glMultiTexCoord4iv(GLenum target, const GLint * v) {if (GLeeInit()) glMultiTexCoord4iv(target, v);} GLEEPFNGLMULTITEXCOORD4IVPROC GLeeFuncPtr_glMultiTexCoord4iv=GLee_Lazy_glMultiTexCoord4iv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4s #define GLEE_C_DEFINED_glMultiTexCoord4s void __stdcall GLee_Lazy_glMultiTexCoord4s(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) {if (GLeeInit()) glMultiTexCoord4s(target, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4SPROC GLeeFuncPtr_glMultiTexCoord4s=GLee_Lazy_glMultiTexCoord4s; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4sv #define GLEE_C_DEFINED_glMultiTexCoord4sv void __stdcall GLee_Lazy_glMultiTexCoord4sv(GLenum target, const GLshort * v) {if (GLeeInit()) glMultiTexCoord4sv(target, v);} GLEEPFNGLMULTITEXCOORD4SVPROC GLeeFuncPtr_glMultiTexCoord4sv=GLee_Lazy_glMultiTexCoord4sv; #endif #ifndef GLEE_C_DEFINED_glLoadTransposeMatrixf #define GLEE_C_DEFINED_glLoadTransposeMatrixf void __stdcall GLee_Lazy_glLoadTransposeMatrixf(const GLfloat * m) {if (GLeeInit()) glLoadTransposeMatrixf(m);} GLEEPFNGLLOADTRANSPOSEMATRIXFPROC GLeeFuncPtr_glLoadTransposeMatrixf=GLee_Lazy_glLoadTransposeMatrixf; #endif #ifndef GLEE_C_DEFINED_glLoadTransposeMatrixd #define GLEE_C_DEFINED_glLoadTransposeMatrixd void __stdcall GLee_Lazy_glLoadTransposeMatrixd(const GLdouble * m) {if (GLeeInit()) glLoadTransposeMatrixd(m);} GLEEPFNGLLOADTRANSPOSEMATRIXDPROC GLeeFuncPtr_glLoadTransposeMatrixd=GLee_Lazy_glLoadTransposeMatrixd; #endif #ifndef GLEE_C_DEFINED_glMultTransposeMatrixf #define GLEE_C_DEFINED_glMultTransposeMatrixf void __stdcall GLee_Lazy_glMultTransposeMatrixf(const GLfloat * m) {if (GLeeInit()) glMultTransposeMatrixf(m);} GLEEPFNGLMULTTRANSPOSEMATRIXFPROC GLeeFuncPtr_glMultTransposeMatrixf=GLee_Lazy_glMultTransposeMatrixf; #endif #ifndef GLEE_C_DEFINED_glMultTransposeMatrixd #define GLEE_C_DEFINED_glMultTransposeMatrixd void __stdcall GLee_Lazy_glMultTransposeMatrixd(const GLdouble * m) {if (GLeeInit()) glMultTransposeMatrixd(m);} GLEEPFNGLMULTTRANSPOSEMATRIXDPROC GLeeFuncPtr_glMultTransposeMatrixd=GLee_Lazy_glMultTransposeMatrixd; #endif #endif /* GL_VERSION_1_4 */ #ifdef __GLEE_GL_VERSION_1_4 #ifndef GLEE_C_DEFINED_glBlendFuncSeparate #define GLEE_C_DEFINED_glBlendFuncSeparate void __stdcall GLee_Lazy_glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) {if (GLeeInit()) glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);} GLEEPFNGLBLENDFUNCSEPARATEPROC GLeeFuncPtr_glBlendFuncSeparate=GLee_Lazy_glBlendFuncSeparate; #endif #ifndef GLEE_C_DEFINED_glMultiDrawArrays #define GLEE_C_DEFINED_glMultiDrawArrays void __stdcall GLee_Lazy_glMultiDrawArrays(GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount) {if (GLeeInit()) glMultiDrawArrays(mode, first, count, drawcount);} GLEEPFNGLMULTIDRAWARRAYSPROC GLeeFuncPtr_glMultiDrawArrays=GLee_Lazy_glMultiDrawArrays; #endif #ifndef GLEE_C_DEFINED_glMultiDrawElements #define GLEE_C_DEFINED_glMultiDrawElements void __stdcall GLee_Lazy_glMultiDrawElements(GLenum mode, const GLsizei * count, GLenum type, const GLvoid* const * indices, GLsizei drawcount) {if (GLeeInit()) glMultiDrawElements(mode, count, type, indices, drawcount);} GLEEPFNGLMULTIDRAWELEMENTSPROC GLeeFuncPtr_glMultiDrawElements=GLee_Lazy_glMultiDrawElements; #endif #ifndef GLEE_C_DEFINED_glPointParameterf #define GLEE_C_DEFINED_glPointParameterf void __stdcall GLee_Lazy_glPointParameterf(GLenum pname, GLfloat param) {if (GLeeInit()) glPointParameterf(pname, param);} GLEEPFNGLPOINTPARAMETERFPROC GLeeFuncPtr_glPointParameterf=GLee_Lazy_glPointParameterf; #endif #ifndef GLEE_C_DEFINED_glPointParameterfv #define GLEE_C_DEFINED_glPointParameterfv void __stdcall GLee_Lazy_glPointParameterfv(GLenum pname, const GLfloat * params) {if (GLeeInit()) glPointParameterfv(pname, params);} GLEEPFNGLPOINTPARAMETERFVPROC GLeeFuncPtr_glPointParameterfv=GLee_Lazy_glPointParameterfv; #endif #ifndef GLEE_C_DEFINED_glPointParameteri #define GLEE_C_DEFINED_glPointParameteri void __stdcall GLee_Lazy_glPointParameteri(GLenum pname, GLint param) {if (GLeeInit()) glPointParameteri(pname, param);} GLEEPFNGLPOINTPARAMETERIPROC GLeeFuncPtr_glPointParameteri=GLee_Lazy_glPointParameteri; #endif #ifndef GLEE_C_DEFINED_glPointParameteriv #define GLEE_C_DEFINED_glPointParameteriv void __stdcall GLee_Lazy_glPointParameteriv(GLenum pname, const GLint * params) {if (GLeeInit()) glPointParameteriv(pname, params);} GLEEPFNGLPOINTPARAMETERIVPROC GLeeFuncPtr_glPointParameteriv=GLee_Lazy_glPointParameteriv; #endif #ifndef GLEE_C_DEFINED_glFogCoordf #define GLEE_C_DEFINED_glFogCoordf void __stdcall GLee_Lazy_glFogCoordf(GLfloat coord) {if (GLeeInit()) glFogCoordf(coord);} GLEEPFNGLFOGCOORDFPROC GLeeFuncPtr_glFogCoordf=GLee_Lazy_glFogCoordf; #endif #ifndef GLEE_C_DEFINED_glFogCoordfv #define GLEE_C_DEFINED_glFogCoordfv void __stdcall GLee_Lazy_glFogCoordfv(const GLfloat * coord) {if (GLeeInit()) glFogCoordfv(coord);} GLEEPFNGLFOGCOORDFVPROC GLeeFuncPtr_glFogCoordfv=GLee_Lazy_glFogCoordfv; #endif #ifndef GLEE_C_DEFINED_glFogCoordd #define GLEE_C_DEFINED_glFogCoordd void __stdcall GLee_Lazy_glFogCoordd(GLdouble coord) {if (GLeeInit()) glFogCoordd(coord);} GLEEPFNGLFOGCOORDDPROC GLeeFuncPtr_glFogCoordd=GLee_Lazy_glFogCoordd; #endif #ifndef GLEE_C_DEFINED_glFogCoorddv #define GLEE_C_DEFINED_glFogCoorddv void __stdcall GLee_Lazy_glFogCoorddv(const GLdouble * coord) {if (GLeeInit()) glFogCoorddv(coord);} GLEEPFNGLFOGCOORDDVPROC GLeeFuncPtr_glFogCoorddv=GLee_Lazy_glFogCoorddv; #endif #ifndef GLEE_C_DEFINED_glFogCoordPointer #define GLEE_C_DEFINED_glFogCoordPointer void __stdcall GLee_Lazy_glFogCoordPointer(GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glFogCoordPointer(type, stride, pointer);} GLEEPFNGLFOGCOORDPOINTERPROC GLeeFuncPtr_glFogCoordPointer=GLee_Lazy_glFogCoordPointer; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3b #define GLEE_C_DEFINED_glSecondaryColor3b void __stdcall GLee_Lazy_glSecondaryColor3b(GLbyte red, GLbyte green, GLbyte blue) {if (GLeeInit()) glSecondaryColor3b(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3BPROC GLeeFuncPtr_glSecondaryColor3b=GLee_Lazy_glSecondaryColor3b; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3bv #define GLEE_C_DEFINED_glSecondaryColor3bv void __stdcall GLee_Lazy_glSecondaryColor3bv(const GLbyte * v) {if (GLeeInit()) glSecondaryColor3bv(v);} GLEEPFNGLSECONDARYCOLOR3BVPROC GLeeFuncPtr_glSecondaryColor3bv=GLee_Lazy_glSecondaryColor3bv; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3d #define GLEE_C_DEFINED_glSecondaryColor3d void __stdcall GLee_Lazy_glSecondaryColor3d(GLdouble red, GLdouble green, GLdouble blue) {if (GLeeInit()) glSecondaryColor3d(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3DPROC GLeeFuncPtr_glSecondaryColor3d=GLee_Lazy_glSecondaryColor3d; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3dv #define GLEE_C_DEFINED_glSecondaryColor3dv void __stdcall GLee_Lazy_glSecondaryColor3dv(const GLdouble * v) {if (GLeeInit()) glSecondaryColor3dv(v);} GLEEPFNGLSECONDARYCOLOR3DVPROC GLeeFuncPtr_glSecondaryColor3dv=GLee_Lazy_glSecondaryColor3dv; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3f #define GLEE_C_DEFINED_glSecondaryColor3f void __stdcall GLee_Lazy_glSecondaryColor3f(GLfloat red, GLfloat green, GLfloat blue) {if (GLeeInit()) glSecondaryColor3f(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3FPROC GLeeFuncPtr_glSecondaryColor3f=GLee_Lazy_glSecondaryColor3f; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3fv #define GLEE_C_DEFINED_glSecondaryColor3fv void __stdcall GLee_Lazy_glSecondaryColor3fv(const GLfloat * v) {if (GLeeInit()) glSecondaryColor3fv(v);} GLEEPFNGLSECONDARYCOLOR3FVPROC GLeeFuncPtr_glSecondaryColor3fv=GLee_Lazy_glSecondaryColor3fv; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3i #define GLEE_C_DEFINED_glSecondaryColor3i void __stdcall GLee_Lazy_glSecondaryColor3i(GLint red, GLint green, GLint blue) {if (GLeeInit()) glSecondaryColor3i(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3IPROC GLeeFuncPtr_glSecondaryColor3i=GLee_Lazy_glSecondaryColor3i; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3iv #define GLEE_C_DEFINED_glSecondaryColor3iv void __stdcall GLee_Lazy_glSecondaryColor3iv(const GLint * v) {if (GLeeInit()) glSecondaryColor3iv(v);} GLEEPFNGLSECONDARYCOLOR3IVPROC GLeeFuncPtr_glSecondaryColor3iv=GLee_Lazy_glSecondaryColor3iv; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3s #define GLEE_C_DEFINED_glSecondaryColor3s void __stdcall GLee_Lazy_glSecondaryColor3s(GLshort red, GLshort green, GLshort blue) {if (GLeeInit()) glSecondaryColor3s(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3SPROC GLeeFuncPtr_glSecondaryColor3s=GLee_Lazy_glSecondaryColor3s; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3sv #define GLEE_C_DEFINED_glSecondaryColor3sv void __stdcall GLee_Lazy_glSecondaryColor3sv(const GLshort * v) {if (GLeeInit()) glSecondaryColor3sv(v);} GLEEPFNGLSECONDARYCOLOR3SVPROC GLeeFuncPtr_glSecondaryColor3sv=GLee_Lazy_glSecondaryColor3sv; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3ub #define GLEE_C_DEFINED_glSecondaryColor3ub void __stdcall GLee_Lazy_glSecondaryColor3ub(GLubyte red, GLubyte green, GLubyte blue) {if (GLeeInit()) glSecondaryColor3ub(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3UBPROC GLeeFuncPtr_glSecondaryColor3ub=GLee_Lazy_glSecondaryColor3ub; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3ubv #define GLEE_C_DEFINED_glSecondaryColor3ubv void __stdcall GLee_Lazy_glSecondaryColor3ubv(const GLubyte * v) {if (GLeeInit()) glSecondaryColor3ubv(v);} GLEEPFNGLSECONDARYCOLOR3UBVPROC GLeeFuncPtr_glSecondaryColor3ubv=GLee_Lazy_glSecondaryColor3ubv; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3ui #define GLEE_C_DEFINED_glSecondaryColor3ui void __stdcall GLee_Lazy_glSecondaryColor3ui(GLuint red, GLuint green, GLuint blue) {if (GLeeInit()) glSecondaryColor3ui(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3UIPROC GLeeFuncPtr_glSecondaryColor3ui=GLee_Lazy_glSecondaryColor3ui; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3uiv #define GLEE_C_DEFINED_glSecondaryColor3uiv void __stdcall GLee_Lazy_glSecondaryColor3uiv(const GLuint * v) {if (GLeeInit()) glSecondaryColor3uiv(v);} GLEEPFNGLSECONDARYCOLOR3UIVPROC GLeeFuncPtr_glSecondaryColor3uiv=GLee_Lazy_glSecondaryColor3uiv; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3us #define GLEE_C_DEFINED_glSecondaryColor3us void __stdcall GLee_Lazy_glSecondaryColor3us(GLushort red, GLushort green, GLushort blue) {if (GLeeInit()) glSecondaryColor3us(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3USPROC GLeeFuncPtr_glSecondaryColor3us=GLee_Lazy_glSecondaryColor3us; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3usv #define GLEE_C_DEFINED_glSecondaryColor3usv void __stdcall GLee_Lazy_glSecondaryColor3usv(const GLushort * v) {if (GLeeInit()) glSecondaryColor3usv(v);} GLEEPFNGLSECONDARYCOLOR3USVPROC GLeeFuncPtr_glSecondaryColor3usv=GLee_Lazy_glSecondaryColor3usv; #endif #ifndef GLEE_C_DEFINED_glSecondaryColorPointer #define GLEE_C_DEFINED_glSecondaryColorPointer void __stdcall GLee_Lazy_glSecondaryColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glSecondaryColorPointer(size, type, stride, pointer);} GLEEPFNGLSECONDARYCOLORPOINTERPROC GLeeFuncPtr_glSecondaryColorPointer=GLee_Lazy_glSecondaryColorPointer; #endif #ifndef GLEE_C_DEFINED_glWindowPos2d #define GLEE_C_DEFINED_glWindowPos2d void __stdcall GLee_Lazy_glWindowPos2d(GLdouble x, GLdouble y) {if (GLeeInit()) glWindowPos2d(x, y);} GLEEPFNGLWINDOWPOS2DPROC GLeeFuncPtr_glWindowPos2d=GLee_Lazy_glWindowPos2d; #endif #ifndef GLEE_C_DEFINED_glWindowPos2dv #define GLEE_C_DEFINED_glWindowPos2dv void __stdcall GLee_Lazy_glWindowPos2dv(const GLdouble * v) {if (GLeeInit()) glWindowPos2dv(v);} GLEEPFNGLWINDOWPOS2DVPROC GLeeFuncPtr_glWindowPos2dv=GLee_Lazy_glWindowPos2dv; #endif #ifndef GLEE_C_DEFINED_glWindowPos2f #define GLEE_C_DEFINED_glWindowPos2f void __stdcall GLee_Lazy_glWindowPos2f(GLfloat x, GLfloat y) {if (GLeeInit()) glWindowPos2f(x, y);} GLEEPFNGLWINDOWPOS2FPROC GLeeFuncPtr_glWindowPos2f=GLee_Lazy_glWindowPos2f; #endif #ifndef GLEE_C_DEFINED_glWindowPos2fv #define GLEE_C_DEFINED_glWindowPos2fv void __stdcall GLee_Lazy_glWindowPos2fv(const GLfloat * v) {if (GLeeInit()) glWindowPos2fv(v);} GLEEPFNGLWINDOWPOS2FVPROC GLeeFuncPtr_glWindowPos2fv=GLee_Lazy_glWindowPos2fv; #endif #ifndef GLEE_C_DEFINED_glWindowPos2i #define GLEE_C_DEFINED_glWindowPos2i void __stdcall GLee_Lazy_glWindowPos2i(GLint x, GLint y) {if (GLeeInit()) glWindowPos2i(x, y);} GLEEPFNGLWINDOWPOS2IPROC GLeeFuncPtr_glWindowPos2i=GLee_Lazy_glWindowPos2i; #endif #ifndef GLEE_C_DEFINED_glWindowPos2iv #define GLEE_C_DEFINED_glWindowPos2iv void __stdcall GLee_Lazy_glWindowPos2iv(const GLint * v) {if (GLeeInit()) glWindowPos2iv(v);} GLEEPFNGLWINDOWPOS2IVPROC GLeeFuncPtr_glWindowPos2iv=GLee_Lazy_glWindowPos2iv; #endif #ifndef GLEE_C_DEFINED_glWindowPos2s #define GLEE_C_DEFINED_glWindowPos2s void __stdcall GLee_Lazy_glWindowPos2s(GLshort x, GLshort y) {if (GLeeInit()) glWindowPos2s(x, y);} GLEEPFNGLWINDOWPOS2SPROC GLeeFuncPtr_glWindowPos2s=GLee_Lazy_glWindowPos2s; #endif #ifndef GLEE_C_DEFINED_glWindowPos2sv #define GLEE_C_DEFINED_glWindowPos2sv void __stdcall GLee_Lazy_glWindowPos2sv(const GLshort * v) {if (GLeeInit()) glWindowPos2sv(v);} GLEEPFNGLWINDOWPOS2SVPROC GLeeFuncPtr_glWindowPos2sv=GLee_Lazy_glWindowPos2sv; #endif #ifndef GLEE_C_DEFINED_glWindowPos3d #define GLEE_C_DEFINED_glWindowPos3d void __stdcall GLee_Lazy_glWindowPos3d(GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glWindowPos3d(x, y, z);} GLEEPFNGLWINDOWPOS3DPROC GLeeFuncPtr_glWindowPos3d=GLee_Lazy_glWindowPos3d; #endif #ifndef GLEE_C_DEFINED_glWindowPos3dv #define GLEE_C_DEFINED_glWindowPos3dv void __stdcall GLee_Lazy_glWindowPos3dv(const GLdouble * v) {if (GLeeInit()) glWindowPos3dv(v);} GLEEPFNGLWINDOWPOS3DVPROC GLeeFuncPtr_glWindowPos3dv=GLee_Lazy_glWindowPos3dv; #endif #ifndef GLEE_C_DEFINED_glWindowPos3f #define GLEE_C_DEFINED_glWindowPos3f void __stdcall GLee_Lazy_glWindowPos3f(GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glWindowPos3f(x, y, z);} GLEEPFNGLWINDOWPOS3FPROC GLeeFuncPtr_glWindowPos3f=GLee_Lazy_glWindowPos3f; #endif #ifndef GLEE_C_DEFINED_glWindowPos3fv #define GLEE_C_DEFINED_glWindowPos3fv void __stdcall GLee_Lazy_glWindowPos3fv(const GLfloat * v) {if (GLeeInit()) glWindowPos3fv(v);} GLEEPFNGLWINDOWPOS3FVPROC GLeeFuncPtr_glWindowPos3fv=GLee_Lazy_glWindowPos3fv; #endif #ifndef GLEE_C_DEFINED_glWindowPos3i #define GLEE_C_DEFINED_glWindowPos3i void __stdcall GLee_Lazy_glWindowPos3i(GLint x, GLint y, GLint z) {if (GLeeInit()) glWindowPos3i(x, y, z);} GLEEPFNGLWINDOWPOS3IPROC GLeeFuncPtr_glWindowPos3i=GLee_Lazy_glWindowPos3i; #endif #ifndef GLEE_C_DEFINED_glWindowPos3iv #define GLEE_C_DEFINED_glWindowPos3iv void __stdcall GLee_Lazy_glWindowPos3iv(const GLint * v) {if (GLeeInit()) glWindowPos3iv(v);} GLEEPFNGLWINDOWPOS3IVPROC GLeeFuncPtr_glWindowPos3iv=GLee_Lazy_glWindowPos3iv; #endif #ifndef GLEE_C_DEFINED_glWindowPos3s #define GLEE_C_DEFINED_glWindowPos3s void __stdcall GLee_Lazy_glWindowPos3s(GLshort x, GLshort y, GLshort z) {if (GLeeInit()) glWindowPos3s(x, y, z);} GLEEPFNGLWINDOWPOS3SPROC GLeeFuncPtr_glWindowPos3s=GLee_Lazy_glWindowPos3s; #endif #ifndef GLEE_C_DEFINED_glWindowPos3sv #define GLEE_C_DEFINED_glWindowPos3sv void __stdcall GLee_Lazy_glWindowPos3sv(const GLshort * v) {if (GLeeInit()) glWindowPos3sv(v);} GLEEPFNGLWINDOWPOS3SVPROC GLeeFuncPtr_glWindowPos3sv=GLee_Lazy_glWindowPos3sv; #endif #endif /* GL_VERSION_1_5 */ #ifdef __GLEE_GL_VERSION_1_5 #ifndef GLEE_C_DEFINED_glGenQueries #define GLEE_C_DEFINED_glGenQueries void __stdcall GLee_Lazy_glGenQueries(GLsizei n, GLuint * ids) {if (GLeeInit()) glGenQueries(n, ids);} GLEEPFNGLGENQUERIESPROC GLeeFuncPtr_glGenQueries=GLee_Lazy_glGenQueries; #endif #ifndef GLEE_C_DEFINED_glDeleteQueries #define GLEE_C_DEFINED_glDeleteQueries void __stdcall GLee_Lazy_glDeleteQueries(GLsizei n, const GLuint * ids) {if (GLeeInit()) glDeleteQueries(n, ids);} GLEEPFNGLDELETEQUERIESPROC GLeeFuncPtr_glDeleteQueries=GLee_Lazy_glDeleteQueries; #endif #ifndef GLEE_C_DEFINED_glIsQuery #define GLEE_C_DEFINED_glIsQuery GLboolean __stdcall GLee_Lazy_glIsQuery(GLuint id) {if (GLeeInit()) return glIsQuery(id); return (GLboolean)0;} GLEEPFNGLISQUERYPROC GLeeFuncPtr_glIsQuery=GLee_Lazy_glIsQuery; #endif #ifndef GLEE_C_DEFINED_glBeginQuery #define GLEE_C_DEFINED_glBeginQuery void __stdcall GLee_Lazy_glBeginQuery(GLenum target, GLuint id) {if (GLeeInit()) glBeginQuery(target, id);} GLEEPFNGLBEGINQUERYPROC GLeeFuncPtr_glBeginQuery=GLee_Lazy_glBeginQuery; #endif #ifndef GLEE_C_DEFINED_glEndQuery #define GLEE_C_DEFINED_glEndQuery void __stdcall GLee_Lazy_glEndQuery(GLenum target) {if (GLeeInit()) glEndQuery(target);} GLEEPFNGLENDQUERYPROC GLeeFuncPtr_glEndQuery=GLee_Lazy_glEndQuery; #endif #ifndef GLEE_C_DEFINED_glGetQueryiv #define GLEE_C_DEFINED_glGetQueryiv void __stdcall GLee_Lazy_glGetQueryiv(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetQueryiv(target, pname, params);} GLEEPFNGLGETQUERYIVPROC GLeeFuncPtr_glGetQueryiv=GLee_Lazy_glGetQueryiv; #endif #ifndef GLEE_C_DEFINED_glGetQueryObjectiv #define GLEE_C_DEFINED_glGetQueryObjectiv void __stdcall GLee_Lazy_glGetQueryObjectiv(GLuint id, GLenum pname, GLint * params) {if (GLeeInit()) glGetQueryObjectiv(id, pname, params);} GLEEPFNGLGETQUERYOBJECTIVPROC GLeeFuncPtr_glGetQueryObjectiv=GLee_Lazy_glGetQueryObjectiv; #endif #ifndef GLEE_C_DEFINED_glGetQueryObjectuiv #define GLEE_C_DEFINED_glGetQueryObjectuiv void __stdcall GLee_Lazy_glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint * params) {if (GLeeInit()) glGetQueryObjectuiv(id, pname, params);} GLEEPFNGLGETQUERYOBJECTUIVPROC GLeeFuncPtr_glGetQueryObjectuiv=GLee_Lazy_glGetQueryObjectuiv; #endif #ifndef GLEE_C_DEFINED_glBindBuffer #define GLEE_C_DEFINED_glBindBuffer void __stdcall GLee_Lazy_glBindBuffer(GLenum target, GLuint buffer) {if (GLeeInit()) glBindBuffer(target, buffer);} GLEEPFNGLBINDBUFFERPROC GLeeFuncPtr_glBindBuffer=GLee_Lazy_glBindBuffer; #endif #ifndef GLEE_C_DEFINED_glDeleteBuffers #define GLEE_C_DEFINED_glDeleteBuffers void __stdcall GLee_Lazy_glDeleteBuffers(GLsizei n, const GLuint * buffers) {if (GLeeInit()) glDeleteBuffers(n, buffers);} GLEEPFNGLDELETEBUFFERSPROC GLeeFuncPtr_glDeleteBuffers=GLee_Lazy_glDeleteBuffers; #endif #ifndef GLEE_C_DEFINED_glGenBuffers #define GLEE_C_DEFINED_glGenBuffers void __stdcall GLee_Lazy_glGenBuffers(GLsizei n, GLuint * buffers) {if (GLeeInit()) glGenBuffers(n, buffers);} GLEEPFNGLGENBUFFERSPROC GLeeFuncPtr_glGenBuffers=GLee_Lazy_glGenBuffers; #endif #ifndef GLEE_C_DEFINED_glIsBuffer #define GLEE_C_DEFINED_glIsBuffer GLboolean __stdcall GLee_Lazy_glIsBuffer(GLuint buffer) {if (GLeeInit()) return glIsBuffer(buffer); return (GLboolean)0;} GLEEPFNGLISBUFFERPROC GLeeFuncPtr_glIsBuffer=GLee_Lazy_glIsBuffer; #endif #ifndef GLEE_C_DEFINED_glBufferData #define GLEE_C_DEFINED_glBufferData void __stdcall GLee_Lazy_glBufferData(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage) {if (GLeeInit()) glBufferData(target, size, data, usage);} GLEEPFNGLBUFFERDATAPROC GLeeFuncPtr_glBufferData=GLee_Lazy_glBufferData; #endif #ifndef GLEE_C_DEFINED_glBufferSubData #define GLEE_C_DEFINED_glBufferSubData void __stdcall GLee_Lazy_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data) {if (GLeeInit()) glBufferSubData(target, offset, size, data);} GLEEPFNGLBUFFERSUBDATAPROC GLeeFuncPtr_glBufferSubData=GLee_Lazy_glBufferSubData; #endif #ifndef GLEE_C_DEFINED_glGetBufferSubData #define GLEE_C_DEFINED_glGetBufferSubData void __stdcall GLee_Lazy_glGetBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid * data) {if (GLeeInit()) glGetBufferSubData(target, offset, size, data);} GLEEPFNGLGETBUFFERSUBDATAPROC GLeeFuncPtr_glGetBufferSubData=GLee_Lazy_glGetBufferSubData; #endif #ifndef GLEE_C_DEFINED_glMapBuffer #define GLEE_C_DEFINED_glMapBuffer GLvoid* __stdcall GLee_Lazy_glMapBuffer(GLenum target, GLenum access) {if (GLeeInit()) return glMapBuffer(target, access); return (GLvoid*)0;} GLEEPFNGLMAPBUFFERPROC GLeeFuncPtr_glMapBuffer=GLee_Lazy_glMapBuffer; #endif #ifndef GLEE_C_DEFINED_glUnmapBuffer #define GLEE_C_DEFINED_glUnmapBuffer GLboolean __stdcall GLee_Lazy_glUnmapBuffer(GLenum target) {if (GLeeInit()) return glUnmapBuffer(target); return (GLboolean)0;} GLEEPFNGLUNMAPBUFFERPROC GLeeFuncPtr_glUnmapBuffer=GLee_Lazy_glUnmapBuffer; #endif #ifndef GLEE_C_DEFINED_glGetBufferParameteriv #define GLEE_C_DEFINED_glGetBufferParameteriv void __stdcall GLee_Lazy_glGetBufferParameteriv(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetBufferParameteriv(target, pname, params);} GLEEPFNGLGETBUFFERPARAMETERIVPROC GLeeFuncPtr_glGetBufferParameteriv=GLee_Lazy_glGetBufferParameteriv; #endif #ifndef GLEE_C_DEFINED_glGetBufferPointerv #define GLEE_C_DEFINED_glGetBufferPointerv void __stdcall GLee_Lazy_glGetBufferPointerv(GLenum target, GLenum pname, GLvoid* * params) {if (GLeeInit()) glGetBufferPointerv(target, pname, params);} GLEEPFNGLGETBUFFERPOINTERVPROC GLeeFuncPtr_glGetBufferPointerv=GLee_Lazy_glGetBufferPointerv; #endif #endif /* GL_VERSION_2_0 */ #ifdef __GLEE_GL_VERSION_2_0 #ifndef GLEE_C_DEFINED_glBlendEquationSeparate #define GLEE_C_DEFINED_glBlendEquationSeparate void __stdcall GLee_Lazy_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha) {if (GLeeInit()) glBlendEquationSeparate(modeRGB, modeAlpha);} GLEEPFNGLBLENDEQUATIONSEPARATEPROC GLeeFuncPtr_glBlendEquationSeparate=GLee_Lazy_glBlendEquationSeparate; #endif #ifndef GLEE_C_DEFINED_glDrawBuffers #define GLEE_C_DEFINED_glDrawBuffers void __stdcall GLee_Lazy_glDrawBuffers(GLsizei n, const GLenum * bufs) {if (GLeeInit()) glDrawBuffers(n, bufs);} GLEEPFNGLDRAWBUFFERSPROC GLeeFuncPtr_glDrawBuffers=GLee_Lazy_glDrawBuffers; #endif #ifndef GLEE_C_DEFINED_glStencilOpSeparate #define GLEE_C_DEFINED_glStencilOpSeparate void __stdcall GLee_Lazy_glStencilOpSeparate(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) {if (GLeeInit()) glStencilOpSeparate(face, sfail, dpfail, dppass);} GLEEPFNGLSTENCILOPSEPARATEPROC GLeeFuncPtr_glStencilOpSeparate=GLee_Lazy_glStencilOpSeparate; #endif #ifndef GLEE_C_DEFINED_glStencilFuncSeparate #define GLEE_C_DEFINED_glStencilFuncSeparate void __stdcall GLee_Lazy_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask) {if (GLeeInit()) glStencilFuncSeparate(face, func, ref, mask);} GLEEPFNGLSTENCILFUNCSEPARATEPROC GLeeFuncPtr_glStencilFuncSeparate=GLee_Lazy_glStencilFuncSeparate; #endif #ifndef GLEE_C_DEFINED_glStencilMaskSeparate #define GLEE_C_DEFINED_glStencilMaskSeparate void __stdcall GLee_Lazy_glStencilMaskSeparate(GLenum face, GLuint mask) {if (GLeeInit()) glStencilMaskSeparate(face, mask);} GLEEPFNGLSTENCILMASKSEPARATEPROC GLeeFuncPtr_glStencilMaskSeparate=GLee_Lazy_glStencilMaskSeparate; #endif #ifndef GLEE_C_DEFINED_glAttachShader #define GLEE_C_DEFINED_glAttachShader void __stdcall GLee_Lazy_glAttachShader(GLuint program, GLuint shader) {if (GLeeInit()) glAttachShader(program, shader);} GLEEPFNGLATTACHSHADERPROC GLeeFuncPtr_glAttachShader=GLee_Lazy_glAttachShader; #endif #ifndef GLEE_C_DEFINED_glBindAttribLocation #define GLEE_C_DEFINED_glBindAttribLocation void __stdcall GLee_Lazy_glBindAttribLocation(GLuint program, GLuint index, const GLchar * name) {if (GLeeInit()) glBindAttribLocation(program, index, name);} GLEEPFNGLBINDATTRIBLOCATIONPROC GLeeFuncPtr_glBindAttribLocation=GLee_Lazy_glBindAttribLocation; #endif #ifndef GLEE_C_DEFINED_glCompileShader #define GLEE_C_DEFINED_glCompileShader void __stdcall GLee_Lazy_glCompileShader(GLuint shader) {if (GLeeInit()) glCompileShader(shader);} GLEEPFNGLCOMPILESHADERPROC GLeeFuncPtr_glCompileShader=GLee_Lazy_glCompileShader; #endif #ifndef GLEE_C_DEFINED_glCreateProgram #define GLEE_C_DEFINED_glCreateProgram GLuint __stdcall GLee_Lazy_glCreateProgram(void) {if (GLeeInit()) return glCreateProgram(); return (GLuint)0;} GLEEPFNGLCREATEPROGRAMPROC GLeeFuncPtr_glCreateProgram=GLee_Lazy_glCreateProgram; #endif #ifndef GLEE_C_DEFINED_glCreateShader #define GLEE_C_DEFINED_glCreateShader GLuint __stdcall GLee_Lazy_glCreateShader(GLenum type) {if (GLeeInit()) return glCreateShader(type); return (GLuint)0;} GLEEPFNGLCREATESHADERPROC GLeeFuncPtr_glCreateShader=GLee_Lazy_glCreateShader; #endif #ifndef GLEE_C_DEFINED_glDeleteProgram #define GLEE_C_DEFINED_glDeleteProgram void __stdcall GLee_Lazy_glDeleteProgram(GLuint program) {if (GLeeInit()) glDeleteProgram(program);} GLEEPFNGLDELETEPROGRAMPROC GLeeFuncPtr_glDeleteProgram=GLee_Lazy_glDeleteProgram; #endif #ifndef GLEE_C_DEFINED_glDeleteShader #define GLEE_C_DEFINED_glDeleteShader void __stdcall GLee_Lazy_glDeleteShader(GLuint shader) {if (GLeeInit()) glDeleteShader(shader);} GLEEPFNGLDELETESHADERPROC GLeeFuncPtr_glDeleteShader=GLee_Lazy_glDeleteShader; #endif #ifndef GLEE_C_DEFINED_glDetachShader #define GLEE_C_DEFINED_glDetachShader void __stdcall GLee_Lazy_glDetachShader(GLuint program, GLuint shader) {if (GLeeInit()) glDetachShader(program, shader);} GLEEPFNGLDETACHSHADERPROC GLeeFuncPtr_glDetachShader=GLee_Lazy_glDetachShader; #endif #ifndef GLEE_C_DEFINED_glDisableVertexAttribArray #define GLEE_C_DEFINED_glDisableVertexAttribArray void __stdcall GLee_Lazy_glDisableVertexAttribArray(GLuint index) {if (GLeeInit()) glDisableVertexAttribArray(index);} GLEEPFNGLDISABLEVERTEXATTRIBARRAYPROC GLeeFuncPtr_glDisableVertexAttribArray=GLee_Lazy_glDisableVertexAttribArray; #endif #ifndef GLEE_C_DEFINED_glEnableVertexAttribArray #define GLEE_C_DEFINED_glEnableVertexAttribArray void __stdcall GLee_Lazy_glEnableVertexAttribArray(GLuint index) {if (GLeeInit()) glEnableVertexAttribArray(index);} GLEEPFNGLENABLEVERTEXATTRIBARRAYPROC GLeeFuncPtr_glEnableVertexAttribArray=GLee_Lazy_glEnableVertexAttribArray; #endif #ifndef GLEE_C_DEFINED_glGetActiveAttrib #define GLEE_C_DEFINED_glGetActiveAttrib void __stdcall GLee_Lazy_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name) {if (GLeeInit()) glGetActiveAttrib(program, index, bufSize, length, size, type, name);} GLEEPFNGLGETACTIVEATTRIBPROC GLeeFuncPtr_glGetActiveAttrib=GLee_Lazy_glGetActiveAttrib; #endif #ifndef GLEE_C_DEFINED_glGetActiveUniform #define GLEE_C_DEFINED_glGetActiveUniform void __stdcall GLee_Lazy_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name) {if (GLeeInit()) glGetActiveUniform(program, index, bufSize, length, size, type, name);} GLEEPFNGLGETACTIVEUNIFORMPROC GLeeFuncPtr_glGetActiveUniform=GLee_Lazy_glGetActiveUniform; #endif #ifndef GLEE_C_DEFINED_glGetAttachedShaders #define GLEE_C_DEFINED_glGetAttachedShaders void __stdcall GLee_Lazy_glGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj) {if (GLeeInit()) glGetAttachedShaders(program, maxCount, count, obj);} GLEEPFNGLGETATTACHEDSHADERSPROC GLeeFuncPtr_glGetAttachedShaders=GLee_Lazy_glGetAttachedShaders; #endif #ifndef GLEE_C_DEFINED_glGetAttribLocation #define GLEE_C_DEFINED_glGetAttribLocation GLint __stdcall GLee_Lazy_glGetAttribLocation(GLuint program, const GLchar * name) {if (GLeeInit()) return glGetAttribLocation(program, name); return (GLint)0;} GLEEPFNGLGETATTRIBLOCATIONPROC GLeeFuncPtr_glGetAttribLocation=GLee_Lazy_glGetAttribLocation; #endif #ifndef GLEE_C_DEFINED_glGetProgramiv #define GLEE_C_DEFINED_glGetProgramiv void __stdcall GLee_Lazy_glGetProgramiv(GLuint program, GLenum pname, GLint * params) {if (GLeeInit()) glGetProgramiv(program, pname, params);} GLEEPFNGLGETPROGRAMIVPROC GLeeFuncPtr_glGetProgramiv=GLee_Lazy_glGetProgramiv; #endif #ifndef GLEE_C_DEFINED_glGetProgramInfoLog #define GLEE_C_DEFINED_glGetProgramInfoLog void __stdcall GLee_Lazy_glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog) {if (GLeeInit()) glGetProgramInfoLog(program, bufSize, length, infoLog);} GLEEPFNGLGETPROGRAMINFOLOGPROC GLeeFuncPtr_glGetProgramInfoLog=GLee_Lazy_glGetProgramInfoLog; #endif #ifndef GLEE_C_DEFINED_glGetShaderiv #define GLEE_C_DEFINED_glGetShaderiv void __stdcall GLee_Lazy_glGetShaderiv(GLuint shader, GLenum pname, GLint * params) {if (GLeeInit()) glGetShaderiv(shader, pname, params);} GLEEPFNGLGETSHADERIVPROC GLeeFuncPtr_glGetShaderiv=GLee_Lazy_glGetShaderiv; #endif #ifndef GLEE_C_DEFINED_glGetShaderInfoLog #define GLEE_C_DEFINED_glGetShaderInfoLog void __stdcall GLee_Lazy_glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog) {if (GLeeInit()) glGetShaderInfoLog(shader, bufSize, length, infoLog);} GLEEPFNGLGETSHADERINFOLOGPROC GLeeFuncPtr_glGetShaderInfoLog=GLee_Lazy_glGetShaderInfoLog; #endif #ifndef GLEE_C_DEFINED_glGetShaderSource #define GLEE_C_DEFINED_glGetShaderSource void __stdcall GLee_Lazy_glGetShaderSource(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source) {if (GLeeInit()) glGetShaderSource(shader, bufSize, length, source);} GLEEPFNGLGETSHADERSOURCEPROC GLeeFuncPtr_glGetShaderSource=GLee_Lazy_glGetShaderSource; #endif #ifndef GLEE_C_DEFINED_glGetUniformLocation #define GLEE_C_DEFINED_glGetUniformLocation GLint __stdcall GLee_Lazy_glGetUniformLocation(GLuint program, const GLchar * name) {if (GLeeInit()) return glGetUniformLocation(program, name); return (GLint)0;} GLEEPFNGLGETUNIFORMLOCATIONPROC GLeeFuncPtr_glGetUniformLocation=GLee_Lazy_glGetUniformLocation; #endif #ifndef GLEE_C_DEFINED_glGetUniformfv #define GLEE_C_DEFINED_glGetUniformfv void __stdcall GLee_Lazy_glGetUniformfv(GLuint program, GLint location, GLfloat * params) {if (GLeeInit()) glGetUniformfv(program, location, params);} GLEEPFNGLGETUNIFORMFVPROC GLeeFuncPtr_glGetUniformfv=GLee_Lazy_glGetUniformfv; #endif #ifndef GLEE_C_DEFINED_glGetUniformiv #define GLEE_C_DEFINED_glGetUniformiv void __stdcall GLee_Lazy_glGetUniformiv(GLuint program, GLint location, GLint * params) {if (GLeeInit()) glGetUniformiv(program, location, params);} GLEEPFNGLGETUNIFORMIVPROC GLeeFuncPtr_glGetUniformiv=GLee_Lazy_glGetUniformiv; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribdv #define GLEE_C_DEFINED_glGetVertexAttribdv void __stdcall GLee_Lazy_glGetVertexAttribdv(GLuint index, GLenum pname, GLdouble * params) {if (GLeeInit()) glGetVertexAttribdv(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBDVPROC GLeeFuncPtr_glGetVertexAttribdv=GLee_Lazy_glGetVertexAttribdv; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribfv #define GLEE_C_DEFINED_glGetVertexAttribfv void __stdcall GLee_Lazy_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetVertexAttribfv(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBFVPROC GLeeFuncPtr_glGetVertexAttribfv=GLee_Lazy_glGetVertexAttribfv; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribiv #define GLEE_C_DEFINED_glGetVertexAttribiv void __stdcall GLee_Lazy_glGetVertexAttribiv(GLuint index, GLenum pname, GLint * params) {if (GLeeInit()) glGetVertexAttribiv(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBIVPROC GLeeFuncPtr_glGetVertexAttribiv=GLee_Lazy_glGetVertexAttribiv; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribPointerv #define GLEE_C_DEFINED_glGetVertexAttribPointerv void __stdcall GLee_Lazy_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid* * pointer) {if (GLeeInit()) glGetVertexAttribPointerv(index, pname, pointer);} GLEEPFNGLGETVERTEXATTRIBPOINTERVPROC GLeeFuncPtr_glGetVertexAttribPointerv=GLee_Lazy_glGetVertexAttribPointerv; #endif #ifndef GLEE_C_DEFINED_glIsProgram #define GLEE_C_DEFINED_glIsProgram GLboolean __stdcall GLee_Lazy_glIsProgram(GLuint program) {if (GLeeInit()) return glIsProgram(program); return (GLboolean)0;} GLEEPFNGLISPROGRAMPROC GLeeFuncPtr_glIsProgram=GLee_Lazy_glIsProgram; #endif #ifndef GLEE_C_DEFINED_glIsShader #define GLEE_C_DEFINED_glIsShader GLboolean __stdcall GLee_Lazy_glIsShader(GLuint shader) {if (GLeeInit()) return glIsShader(shader); return (GLboolean)0;} GLEEPFNGLISSHADERPROC GLeeFuncPtr_glIsShader=GLee_Lazy_glIsShader; #endif #ifndef GLEE_C_DEFINED_glLinkProgram #define GLEE_C_DEFINED_glLinkProgram void __stdcall GLee_Lazy_glLinkProgram(GLuint program) {if (GLeeInit()) glLinkProgram(program);} GLEEPFNGLLINKPROGRAMPROC GLeeFuncPtr_glLinkProgram=GLee_Lazy_glLinkProgram; #endif #ifndef GLEE_C_DEFINED_glShaderSource #define GLEE_C_DEFINED_glShaderSource void __stdcall GLee_Lazy_glShaderSource(GLuint shader, GLsizei count, const GLchar* const * string, const GLint * length) {if (GLeeInit()) glShaderSource(shader, count, string, length);} GLEEPFNGLSHADERSOURCEPROC GLeeFuncPtr_glShaderSource=GLee_Lazy_glShaderSource; #endif #ifndef GLEE_C_DEFINED_glUseProgram #define GLEE_C_DEFINED_glUseProgram void __stdcall GLee_Lazy_glUseProgram(GLuint program) {if (GLeeInit()) glUseProgram(program);} GLEEPFNGLUSEPROGRAMPROC GLeeFuncPtr_glUseProgram=GLee_Lazy_glUseProgram; #endif #ifndef GLEE_C_DEFINED_glUniform1f #define GLEE_C_DEFINED_glUniform1f void __stdcall GLee_Lazy_glUniform1f(GLint location, GLfloat v0) {if (GLeeInit()) glUniform1f(location, v0);} GLEEPFNGLUNIFORM1FPROC GLeeFuncPtr_glUniform1f=GLee_Lazy_glUniform1f; #endif #ifndef GLEE_C_DEFINED_glUniform2f #define GLEE_C_DEFINED_glUniform2f void __stdcall GLee_Lazy_glUniform2f(GLint location, GLfloat v0, GLfloat v1) {if (GLeeInit()) glUniform2f(location, v0, v1);} GLEEPFNGLUNIFORM2FPROC GLeeFuncPtr_glUniform2f=GLee_Lazy_glUniform2f; #endif #ifndef GLEE_C_DEFINED_glUniform3f #define GLEE_C_DEFINED_glUniform3f void __stdcall GLee_Lazy_glUniform3f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {if (GLeeInit()) glUniform3f(location, v0, v1, v2);} GLEEPFNGLUNIFORM3FPROC GLeeFuncPtr_glUniform3f=GLee_Lazy_glUniform3f; #endif #ifndef GLEE_C_DEFINED_glUniform4f #define GLEE_C_DEFINED_glUniform4f void __stdcall GLee_Lazy_glUniform4f(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {if (GLeeInit()) glUniform4f(location, v0, v1, v2, v3);} GLEEPFNGLUNIFORM4FPROC GLeeFuncPtr_glUniform4f=GLee_Lazy_glUniform4f; #endif #ifndef GLEE_C_DEFINED_glUniform1i #define GLEE_C_DEFINED_glUniform1i void __stdcall GLee_Lazy_glUniform1i(GLint location, GLint v0) {if (GLeeInit()) glUniform1i(location, v0);} GLEEPFNGLUNIFORM1IPROC GLeeFuncPtr_glUniform1i=GLee_Lazy_glUniform1i; #endif #ifndef GLEE_C_DEFINED_glUniform2i #define GLEE_C_DEFINED_glUniform2i void __stdcall GLee_Lazy_glUniform2i(GLint location, GLint v0, GLint v1) {if (GLeeInit()) glUniform2i(location, v0, v1);} GLEEPFNGLUNIFORM2IPROC GLeeFuncPtr_glUniform2i=GLee_Lazy_glUniform2i; #endif #ifndef GLEE_C_DEFINED_glUniform3i #define GLEE_C_DEFINED_glUniform3i void __stdcall GLee_Lazy_glUniform3i(GLint location, GLint v0, GLint v1, GLint v2) {if (GLeeInit()) glUniform3i(location, v0, v1, v2);} GLEEPFNGLUNIFORM3IPROC GLeeFuncPtr_glUniform3i=GLee_Lazy_glUniform3i; #endif #ifndef GLEE_C_DEFINED_glUniform4i #define GLEE_C_DEFINED_glUniform4i void __stdcall GLee_Lazy_glUniform4i(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {if (GLeeInit()) glUniform4i(location, v0, v1, v2, v3);} GLEEPFNGLUNIFORM4IPROC GLeeFuncPtr_glUniform4i=GLee_Lazy_glUniform4i; #endif #ifndef GLEE_C_DEFINED_glUniform1fv #define GLEE_C_DEFINED_glUniform1fv void __stdcall GLee_Lazy_glUniform1fv(GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glUniform1fv(location, count, value);} GLEEPFNGLUNIFORM1FVPROC GLeeFuncPtr_glUniform1fv=GLee_Lazy_glUniform1fv; #endif #ifndef GLEE_C_DEFINED_glUniform2fv #define GLEE_C_DEFINED_glUniform2fv void __stdcall GLee_Lazy_glUniform2fv(GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glUniform2fv(location, count, value);} GLEEPFNGLUNIFORM2FVPROC GLeeFuncPtr_glUniform2fv=GLee_Lazy_glUniform2fv; #endif #ifndef GLEE_C_DEFINED_glUniform3fv #define GLEE_C_DEFINED_glUniform3fv void __stdcall GLee_Lazy_glUniform3fv(GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glUniform3fv(location, count, value);} GLEEPFNGLUNIFORM3FVPROC GLeeFuncPtr_glUniform3fv=GLee_Lazy_glUniform3fv; #endif #ifndef GLEE_C_DEFINED_glUniform4fv #define GLEE_C_DEFINED_glUniform4fv void __stdcall GLee_Lazy_glUniform4fv(GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glUniform4fv(location, count, value);} GLEEPFNGLUNIFORM4FVPROC GLeeFuncPtr_glUniform4fv=GLee_Lazy_glUniform4fv; #endif #ifndef GLEE_C_DEFINED_glUniform1iv #define GLEE_C_DEFINED_glUniform1iv void __stdcall GLee_Lazy_glUniform1iv(GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glUniform1iv(location, count, value);} GLEEPFNGLUNIFORM1IVPROC GLeeFuncPtr_glUniform1iv=GLee_Lazy_glUniform1iv; #endif #ifndef GLEE_C_DEFINED_glUniform2iv #define GLEE_C_DEFINED_glUniform2iv void __stdcall GLee_Lazy_glUniform2iv(GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glUniform2iv(location, count, value);} GLEEPFNGLUNIFORM2IVPROC GLeeFuncPtr_glUniform2iv=GLee_Lazy_glUniform2iv; #endif #ifndef GLEE_C_DEFINED_glUniform3iv #define GLEE_C_DEFINED_glUniform3iv void __stdcall GLee_Lazy_glUniform3iv(GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glUniform3iv(location, count, value);} GLEEPFNGLUNIFORM3IVPROC GLeeFuncPtr_glUniform3iv=GLee_Lazy_glUniform3iv; #endif #ifndef GLEE_C_DEFINED_glUniform4iv #define GLEE_C_DEFINED_glUniform4iv void __stdcall GLee_Lazy_glUniform4iv(GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glUniform4iv(location, count, value);} GLEEPFNGLUNIFORM4IVPROC GLeeFuncPtr_glUniform4iv=GLee_Lazy_glUniform4iv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix2fv #define GLEE_C_DEFINED_glUniformMatrix2fv void __stdcall GLee_Lazy_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix2fv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX2FVPROC GLeeFuncPtr_glUniformMatrix2fv=GLee_Lazy_glUniformMatrix2fv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix3fv #define GLEE_C_DEFINED_glUniformMatrix3fv void __stdcall GLee_Lazy_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix3fv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX3FVPROC GLeeFuncPtr_glUniformMatrix3fv=GLee_Lazy_glUniformMatrix3fv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix4fv #define GLEE_C_DEFINED_glUniformMatrix4fv void __stdcall GLee_Lazy_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix4fv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX4FVPROC GLeeFuncPtr_glUniformMatrix4fv=GLee_Lazy_glUniformMatrix4fv; #endif #ifndef GLEE_C_DEFINED_glValidateProgram #define GLEE_C_DEFINED_glValidateProgram void __stdcall GLee_Lazy_glValidateProgram(GLuint program) {if (GLeeInit()) glValidateProgram(program);} GLEEPFNGLVALIDATEPROGRAMPROC GLeeFuncPtr_glValidateProgram=GLee_Lazy_glValidateProgram; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1d #define GLEE_C_DEFINED_glVertexAttrib1d void __stdcall GLee_Lazy_glVertexAttrib1d(GLuint index, GLdouble x) {if (GLeeInit()) glVertexAttrib1d(index, x);} GLEEPFNGLVERTEXATTRIB1DPROC GLeeFuncPtr_glVertexAttrib1d=GLee_Lazy_glVertexAttrib1d; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1dv #define GLEE_C_DEFINED_glVertexAttrib1dv void __stdcall GLee_Lazy_glVertexAttrib1dv(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib1dv(index, v);} GLEEPFNGLVERTEXATTRIB1DVPROC GLeeFuncPtr_glVertexAttrib1dv=GLee_Lazy_glVertexAttrib1dv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1f #define GLEE_C_DEFINED_glVertexAttrib1f void __stdcall GLee_Lazy_glVertexAttrib1f(GLuint index, GLfloat x) {if (GLeeInit()) glVertexAttrib1f(index, x);} GLEEPFNGLVERTEXATTRIB1FPROC GLeeFuncPtr_glVertexAttrib1f=GLee_Lazy_glVertexAttrib1f; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1fv #define GLEE_C_DEFINED_glVertexAttrib1fv void __stdcall GLee_Lazy_glVertexAttrib1fv(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib1fv(index, v);} GLEEPFNGLVERTEXATTRIB1FVPROC GLeeFuncPtr_glVertexAttrib1fv=GLee_Lazy_glVertexAttrib1fv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1s #define GLEE_C_DEFINED_glVertexAttrib1s void __stdcall GLee_Lazy_glVertexAttrib1s(GLuint index, GLshort x) {if (GLeeInit()) glVertexAttrib1s(index, x);} GLEEPFNGLVERTEXATTRIB1SPROC GLeeFuncPtr_glVertexAttrib1s=GLee_Lazy_glVertexAttrib1s; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1sv #define GLEE_C_DEFINED_glVertexAttrib1sv void __stdcall GLee_Lazy_glVertexAttrib1sv(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib1sv(index, v);} GLEEPFNGLVERTEXATTRIB1SVPROC GLeeFuncPtr_glVertexAttrib1sv=GLee_Lazy_glVertexAttrib1sv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2d #define GLEE_C_DEFINED_glVertexAttrib2d void __stdcall GLee_Lazy_glVertexAttrib2d(GLuint index, GLdouble x, GLdouble y) {if (GLeeInit()) glVertexAttrib2d(index, x, y);} GLEEPFNGLVERTEXATTRIB2DPROC GLeeFuncPtr_glVertexAttrib2d=GLee_Lazy_glVertexAttrib2d; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2dv #define GLEE_C_DEFINED_glVertexAttrib2dv void __stdcall GLee_Lazy_glVertexAttrib2dv(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib2dv(index, v);} GLEEPFNGLVERTEXATTRIB2DVPROC GLeeFuncPtr_glVertexAttrib2dv=GLee_Lazy_glVertexAttrib2dv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2f #define GLEE_C_DEFINED_glVertexAttrib2f void __stdcall GLee_Lazy_glVertexAttrib2f(GLuint index, GLfloat x, GLfloat y) {if (GLeeInit()) glVertexAttrib2f(index, x, y);} GLEEPFNGLVERTEXATTRIB2FPROC GLeeFuncPtr_glVertexAttrib2f=GLee_Lazy_glVertexAttrib2f; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2fv #define GLEE_C_DEFINED_glVertexAttrib2fv void __stdcall GLee_Lazy_glVertexAttrib2fv(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib2fv(index, v);} GLEEPFNGLVERTEXATTRIB2FVPROC GLeeFuncPtr_glVertexAttrib2fv=GLee_Lazy_glVertexAttrib2fv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2s #define GLEE_C_DEFINED_glVertexAttrib2s void __stdcall GLee_Lazy_glVertexAttrib2s(GLuint index, GLshort x, GLshort y) {if (GLeeInit()) glVertexAttrib2s(index, x, y);} GLEEPFNGLVERTEXATTRIB2SPROC GLeeFuncPtr_glVertexAttrib2s=GLee_Lazy_glVertexAttrib2s; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2sv #define GLEE_C_DEFINED_glVertexAttrib2sv void __stdcall GLee_Lazy_glVertexAttrib2sv(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib2sv(index, v);} GLEEPFNGLVERTEXATTRIB2SVPROC GLeeFuncPtr_glVertexAttrib2sv=GLee_Lazy_glVertexAttrib2sv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3d #define GLEE_C_DEFINED_glVertexAttrib3d void __stdcall GLee_Lazy_glVertexAttrib3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glVertexAttrib3d(index, x, y, z);} GLEEPFNGLVERTEXATTRIB3DPROC GLeeFuncPtr_glVertexAttrib3d=GLee_Lazy_glVertexAttrib3d; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3dv #define GLEE_C_DEFINED_glVertexAttrib3dv void __stdcall GLee_Lazy_glVertexAttrib3dv(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib3dv(index, v);} GLEEPFNGLVERTEXATTRIB3DVPROC GLeeFuncPtr_glVertexAttrib3dv=GLee_Lazy_glVertexAttrib3dv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3f #define GLEE_C_DEFINED_glVertexAttrib3f void __stdcall GLee_Lazy_glVertexAttrib3f(GLuint index, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glVertexAttrib3f(index, x, y, z);} GLEEPFNGLVERTEXATTRIB3FPROC GLeeFuncPtr_glVertexAttrib3f=GLee_Lazy_glVertexAttrib3f; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3fv #define GLEE_C_DEFINED_glVertexAttrib3fv void __stdcall GLee_Lazy_glVertexAttrib3fv(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib3fv(index, v);} GLEEPFNGLVERTEXATTRIB3FVPROC GLeeFuncPtr_glVertexAttrib3fv=GLee_Lazy_glVertexAttrib3fv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3s #define GLEE_C_DEFINED_glVertexAttrib3s void __stdcall GLee_Lazy_glVertexAttrib3s(GLuint index, GLshort x, GLshort y, GLshort z) {if (GLeeInit()) glVertexAttrib3s(index, x, y, z);} GLEEPFNGLVERTEXATTRIB3SPROC GLeeFuncPtr_glVertexAttrib3s=GLee_Lazy_glVertexAttrib3s; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3sv #define GLEE_C_DEFINED_glVertexAttrib3sv void __stdcall GLee_Lazy_glVertexAttrib3sv(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib3sv(index, v);} GLEEPFNGLVERTEXATTRIB3SVPROC GLeeFuncPtr_glVertexAttrib3sv=GLee_Lazy_glVertexAttrib3sv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4Nbv #define GLEE_C_DEFINED_glVertexAttrib4Nbv void __stdcall GLee_Lazy_glVertexAttrib4Nbv(GLuint index, const GLbyte * v) {if (GLeeInit()) glVertexAttrib4Nbv(index, v);} GLEEPFNGLVERTEXATTRIB4NBVPROC GLeeFuncPtr_glVertexAttrib4Nbv=GLee_Lazy_glVertexAttrib4Nbv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4Niv #define GLEE_C_DEFINED_glVertexAttrib4Niv void __stdcall GLee_Lazy_glVertexAttrib4Niv(GLuint index, const GLint * v) {if (GLeeInit()) glVertexAttrib4Niv(index, v);} GLEEPFNGLVERTEXATTRIB4NIVPROC GLeeFuncPtr_glVertexAttrib4Niv=GLee_Lazy_glVertexAttrib4Niv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4Nsv #define GLEE_C_DEFINED_glVertexAttrib4Nsv void __stdcall GLee_Lazy_glVertexAttrib4Nsv(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib4Nsv(index, v);} GLEEPFNGLVERTEXATTRIB4NSVPROC GLeeFuncPtr_glVertexAttrib4Nsv=GLee_Lazy_glVertexAttrib4Nsv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4Nub #define GLEE_C_DEFINED_glVertexAttrib4Nub void __stdcall GLee_Lazy_glVertexAttrib4Nub(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) {if (GLeeInit()) glVertexAttrib4Nub(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4NUBPROC GLeeFuncPtr_glVertexAttrib4Nub=GLee_Lazy_glVertexAttrib4Nub; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4Nubv #define GLEE_C_DEFINED_glVertexAttrib4Nubv void __stdcall GLee_Lazy_glVertexAttrib4Nubv(GLuint index, const GLubyte * v) {if (GLeeInit()) glVertexAttrib4Nubv(index, v);} GLEEPFNGLVERTEXATTRIB4NUBVPROC GLeeFuncPtr_glVertexAttrib4Nubv=GLee_Lazy_glVertexAttrib4Nubv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4Nuiv #define GLEE_C_DEFINED_glVertexAttrib4Nuiv void __stdcall GLee_Lazy_glVertexAttrib4Nuiv(GLuint index, const GLuint * v) {if (GLeeInit()) glVertexAttrib4Nuiv(index, v);} GLEEPFNGLVERTEXATTRIB4NUIVPROC GLeeFuncPtr_glVertexAttrib4Nuiv=GLee_Lazy_glVertexAttrib4Nuiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4Nusv #define GLEE_C_DEFINED_glVertexAttrib4Nusv void __stdcall GLee_Lazy_glVertexAttrib4Nusv(GLuint index, const GLushort * v) {if (GLeeInit()) glVertexAttrib4Nusv(index, v);} GLEEPFNGLVERTEXATTRIB4NUSVPROC GLeeFuncPtr_glVertexAttrib4Nusv=GLee_Lazy_glVertexAttrib4Nusv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4bv #define GLEE_C_DEFINED_glVertexAttrib4bv void __stdcall GLee_Lazy_glVertexAttrib4bv(GLuint index, const GLbyte * v) {if (GLeeInit()) glVertexAttrib4bv(index, v);} GLEEPFNGLVERTEXATTRIB4BVPROC GLeeFuncPtr_glVertexAttrib4bv=GLee_Lazy_glVertexAttrib4bv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4d #define GLEE_C_DEFINED_glVertexAttrib4d void __stdcall GLee_Lazy_glVertexAttrib4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glVertexAttrib4d(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4DPROC GLeeFuncPtr_glVertexAttrib4d=GLee_Lazy_glVertexAttrib4d; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4dv #define GLEE_C_DEFINED_glVertexAttrib4dv void __stdcall GLee_Lazy_glVertexAttrib4dv(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib4dv(index, v);} GLEEPFNGLVERTEXATTRIB4DVPROC GLeeFuncPtr_glVertexAttrib4dv=GLee_Lazy_glVertexAttrib4dv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4f #define GLEE_C_DEFINED_glVertexAttrib4f void __stdcall GLee_Lazy_glVertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glVertexAttrib4f(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4FPROC GLeeFuncPtr_glVertexAttrib4f=GLee_Lazy_glVertexAttrib4f; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4fv #define GLEE_C_DEFINED_glVertexAttrib4fv void __stdcall GLee_Lazy_glVertexAttrib4fv(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib4fv(index, v);} GLEEPFNGLVERTEXATTRIB4FVPROC GLeeFuncPtr_glVertexAttrib4fv=GLee_Lazy_glVertexAttrib4fv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4iv #define GLEE_C_DEFINED_glVertexAttrib4iv void __stdcall GLee_Lazy_glVertexAttrib4iv(GLuint index, const GLint * v) {if (GLeeInit()) glVertexAttrib4iv(index, v);} GLEEPFNGLVERTEXATTRIB4IVPROC GLeeFuncPtr_glVertexAttrib4iv=GLee_Lazy_glVertexAttrib4iv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4s #define GLEE_C_DEFINED_glVertexAttrib4s void __stdcall GLee_Lazy_glVertexAttrib4s(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) {if (GLeeInit()) glVertexAttrib4s(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4SPROC GLeeFuncPtr_glVertexAttrib4s=GLee_Lazy_glVertexAttrib4s; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4sv #define GLEE_C_DEFINED_glVertexAttrib4sv void __stdcall GLee_Lazy_glVertexAttrib4sv(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib4sv(index, v);} GLEEPFNGLVERTEXATTRIB4SVPROC GLeeFuncPtr_glVertexAttrib4sv=GLee_Lazy_glVertexAttrib4sv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4ubv #define GLEE_C_DEFINED_glVertexAttrib4ubv void __stdcall GLee_Lazy_glVertexAttrib4ubv(GLuint index, const GLubyte * v) {if (GLeeInit()) glVertexAttrib4ubv(index, v);} GLEEPFNGLVERTEXATTRIB4UBVPROC GLeeFuncPtr_glVertexAttrib4ubv=GLee_Lazy_glVertexAttrib4ubv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4uiv #define GLEE_C_DEFINED_glVertexAttrib4uiv void __stdcall GLee_Lazy_glVertexAttrib4uiv(GLuint index, const GLuint * v) {if (GLeeInit()) glVertexAttrib4uiv(index, v);} GLEEPFNGLVERTEXATTRIB4UIVPROC GLeeFuncPtr_glVertexAttrib4uiv=GLee_Lazy_glVertexAttrib4uiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4usv #define GLEE_C_DEFINED_glVertexAttrib4usv void __stdcall GLee_Lazy_glVertexAttrib4usv(GLuint index, const GLushort * v) {if (GLeeInit()) glVertexAttrib4usv(index, v);} GLEEPFNGLVERTEXATTRIB4USVPROC GLeeFuncPtr_glVertexAttrib4usv=GLee_Lazy_glVertexAttrib4usv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribPointer #define GLEE_C_DEFINED_glVertexAttribPointer void __stdcall GLee_Lazy_glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glVertexAttribPointer(index, size, type, normalized, stride, pointer);} GLEEPFNGLVERTEXATTRIBPOINTERPROC GLeeFuncPtr_glVertexAttribPointer=GLee_Lazy_glVertexAttribPointer; #endif #endif /* GL_VERSION_2_1 */ #ifdef __GLEE_GL_VERSION_2_1 #ifndef GLEE_C_DEFINED_glUniformMatrix2x3fv #define GLEE_C_DEFINED_glUniformMatrix2x3fv void __stdcall GLee_Lazy_glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix2x3fv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX2X3FVPROC GLeeFuncPtr_glUniformMatrix2x3fv=GLee_Lazy_glUniformMatrix2x3fv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix3x2fv #define GLEE_C_DEFINED_glUniformMatrix3x2fv void __stdcall GLee_Lazy_glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix3x2fv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX3X2FVPROC GLeeFuncPtr_glUniformMatrix3x2fv=GLee_Lazy_glUniformMatrix3x2fv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix2x4fv #define GLEE_C_DEFINED_glUniformMatrix2x4fv void __stdcall GLee_Lazy_glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix2x4fv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX2X4FVPROC GLeeFuncPtr_glUniformMatrix2x4fv=GLee_Lazy_glUniformMatrix2x4fv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix4x2fv #define GLEE_C_DEFINED_glUniformMatrix4x2fv void __stdcall GLee_Lazy_glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix4x2fv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX4X2FVPROC GLeeFuncPtr_glUniformMatrix4x2fv=GLee_Lazy_glUniformMatrix4x2fv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix3x4fv #define GLEE_C_DEFINED_glUniformMatrix3x4fv void __stdcall GLee_Lazy_glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix3x4fv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX3X4FVPROC GLeeFuncPtr_glUniformMatrix3x4fv=GLee_Lazy_glUniformMatrix3x4fv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix4x3fv #define GLEE_C_DEFINED_glUniformMatrix4x3fv void __stdcall GLee_Lazy_glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix4x3fv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX4X3FVPROC GLeeFuncPtr_glUniformMatrix4x3fv=GLee_Lazy_glUniformMatrix4x3fv; #endif #endif /* GL_VERSION_3_0 */ #ifdef __GLEE_GL_VERSION_3_0 #ifndef GLEE_C_DEFINED_glColorMaski #define GLEE_C_DEFINED_glColorMaski void __stdcall GLee_Lazy_glColorMaski(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) {if (GLeeInit()) glColorMaski(index, r, g, b, a);} GLEEPFNGLCOLORMASKIPROC GLeeFuncPtr_glColorMaski=GLee_Lazy_glColorMaski; #endif #ifndef GLEE_C_DEFINED_glGetBooleani_v #define GLEE_C_DEFINED_glGetBooleani_v void __stdcall GLee_Lazy_glGetBooleani_v(GLenum target, GLuint index, GLboolean * data) {if (GLeeInit()) glGetBooleani_v(target, index, data);} GLEEPFNGLGETBOOLEANI_VPROC GLeeFuncPtr_glGetBooleani_v=GLee_Lazy_glGetBooleani_v; #endif #ifndef GLEE_C_DEFINED_glGetIntegeri_v #define GLEE_C_DEFINED_glGetIntegeri_v void __stdcall GLee_Lazy_glGetIntegeri_v(GLenum target, GLuint index, GLint * data) {if (GLeeInit()) glGetIntegeri_v(target, index, data);} GLEEPFNGLGETINTEGERI_VPROC GLeeFuncPtr_glGetIntegeri_v=GLee_Lazy_glGetIntegeri_v; #endif #ifndef GLEE_C_DEFINED_glEnablei #define GLEE_C_DEFINED_glEnablei void __stdcall GLee_Lazy_glEnablei(GLenum target, GLuint index) {if (GLeeInit()) glEnablei(target, index);} GLEEPFNGLENABLEIPROC GLeeFuncPtr_glEnablei=GLee_Lazy_glEnablei; #endif #ifndef GLEE_C_DEFINED_glDisablei #define GLEE_C_DEFINED_glDisablei void __stdcall GLee_Lazy_glDisablei(GLenum target, GLuint index) {if (GLeeInit()) glDisablei(target, index);} GLEEPFNGLDISABLEIPROC GLeeFuncPtr_glDisablei=GLee_Lazy_glDisablei; #endif #ifndef GLEE_C_DEFINED_glIsEnabledi #define GLEE_C_DEFINED_glIsEnabledi GLboolean __stdcall GLee_Lazy_glIsEnabledi(GLenum target, GLuint index) {if (GLeeInit()) return glIsEnabledi(target, index); return (GLboolean)0;} GLEEPFNGLISENABLEDIPROC GLeeFuncPtr_glIsEnabledi=GLee_Lazy_glIsEnabledi; #endif #ifndef GLEE_C_DEFINED_glBeginTransformFeedback #define GLEE_C_DEFINED_glBeginTransformFeedback void __stdcall GLee_Lazy_glBeginTransformFeedback(GLenum primitiveMode) {if (GLeeInit()) glBeginTransformFeedback(primitiveMode);} GLEEPFNGLBEGINTRANSFORMFEEDBACKPROC GLeeFuncPtr_glBeginTransformFeedback=GLee_Lazy_glBeginTransformFeedback; #endif #ifndef GLEE_C_DEFINED_glEndTransformFeedback #define GLEE_C_DEFINED_glEndTransformFeedback void __stdcall GLee_Lazy_glEndTransformFeedback(void) {if (GLeeInit()) glEndTransformFeedback();} GLEEPFNGLENDTRANSFORMFEEDBACKPROC GLeeFuncPtr_glEndTransformFeedback=GLee_Lazy_glEndTransformFeedback; #endif #ifndef GLEE_C_DEFINED_glBindBufferRange #define GLEE_C_DEFINED_glBindBufferRange void __stdcall GLee_Lazy_glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) {if (GLeeInit()) glBindBufferRange(target, index, buffer, offset, size);} GLEEPFNGLBINDBUFFERRANGEPROC GLeeFuncPtr_glBindBufferRange=GLee_Lazy_glBindBufferRange; #endif #ifndef GLEE_C_DEFINED_glBindBufferBase #define GLEE_C_DEFINED_glBindBufferBase void __stdcall GLee_Lazy_glBindBufferBase(GLenum target, GLuint index, GLuint buffer) {if (GLeeInit()) glBindBufferBase(target, index, buffer);} GLEEPFNGLBINDBUFFERBASEPROC GLeeFuncPtr_glBindBufferBase=GLee_Lazy_glBindBufferBase; #endif #ifndef GLEE_C_DEFINED_glTransformFeedbackVaryings #define GLEE_C_DEFINED_glTransformFeedbackVaryings void __stdcall GLee_Lazy_glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const * varyings, GLenum bufferMode) {if (GLeeInit()) glTransformFeedbackVaryings(program, count, varyings, bufferMode);} GLEEPFNGLTRANSFORMFEEDBACKVARYINGSPROC GLeeFuncPtr_glTransformFeedbackVaryings=GLee_Lazy_glTransformFeedbackVaryings; #endif #ifndef GLEE_C_DEFINED_glGetTransformFeedbackVarying #define GLEE_C_DEFINED_glGetTransformFeedbackVarying void __stdcall GLee_Lazy_glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name) {if (GLeeInit()) glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);} GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGPROC GLeeFuncPtr_glGetTransformFeedbackVarying=GLee_Lazy_glGetTransformFeedbackVarying; #endif #ifndef GLEE_C_DEFINED_glClampColor #define GLEE_C_DEFINED_glClampColor void __stdcall GLee_Lazy_glClampColor(GLenum target, GLenum clamp) {if (GLeeInit()) glClampColor(target, clamp);} GLEEPFNGLCLAMPCOLORPROC GLeeFuncPtr_glClampColor=GLee_Lazy_glClampColor; #endif #ifndef GLEE_C_DEFINED_glBeginConditionalRender #define GLEE_C_DEFINED_glBeginConditionalRender void __stdcall GLee_Lazy_glBeginConditionalRender(GLuint id, GLenum mode) {if (GLeeInit()) glBeginConditionalRender(id, mode);} GLEEPFNGLBEGINCONDITIONALRENDERPROC GLeeFuncPtr_glBeginConditionalRender=GLee_Lazy_glBeginConditionalRender; #endif #ifndef GLEE_C_DEFINED_glEndConditionalRender #define GLEE_C_DEFINED_glEndConditionalRender void __stdcall GLee_Lazy_glEndConditionalRender(void) {if (GLeeInit()) glEndConditionalRender();} GLEEPFNGLENDCONDITIONALRENDERPROC GLeeFuncPtr_glEndConditionalRender=GLee_Lazy_glEndConditionalRender; #endif #ifndef GLEE_C_DEFINED_glVertexAttribIPointer #define GLEE_C_DEFINED_glVertexAttribIPointer void __stdcall GLee_Lazy_glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glVertexAttribIPointer(index, size, type, stride, pointer);} GLEEPFNGLVERTEXATTRIBIPOINTERPROC GLeeFuncPtr_glVertexAttribIPointer=GLee_Lazy_glVertexAttribIPointer; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribIiv #define GLEE_C_DEFINED_glGetVertexAttribIiv void __stdcall GLee_Lazy_glGetVertexAttribIiv(GLuint index, GLenum pname, GLint * params) {if (GLeeInit()) glGetVertexAttribIiv(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBIIVPROC GLeeFuncPtr_glGetVertexAttribIiv=GLee_Lazy_glGetVertexAttribIiv; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribIuiv #define GLEE_C_DEFINED_glGetVertexAttribIuiv void __stdcall GLee_Lazy_glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint * params) {if (GLeeInit()) glGetVertexAttribIuiv(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBIUIVPROC GLeeFuncPtr_glGetVertexAttribIuiv=GLee_Lazy_glGetVertexAttribIuiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI1i #define GLEE_C_DEFINED_glVertexAttribI1i void __stdcall GLee_Lazy_glVertexAttribI1i(GLuint index, GLint x) {if (GLeeInit()) glVertexAttribI1i(index, x);} GLEEPFNGLVERTEXATTRIBI1IPROC GLeeFuncPtr_glVertexAttribI1i=GLee_Lazy_glVertexAttribI1i; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI2i #define GLEE_C_DEFINED_glVertexAttribI2i void __stdcall GLee_Lazy_glVertexAttribI2i(GLuint index, GLint x, GLint y) {if (GLeeInit()) glVertexAttribI2i(index, x, y);} GLEEPFNGLVERTEXATTRIBI2IPROC GLeeFuncPtr_glVertexAttribI2i=GLee_Lazy_glVertexAttribI2i; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI3i #define GLEE_C_DEFINED_glVertexAttribI3i void __stdcall GLee_Lazy_glVertexAttribI3i(GLuint index, GLint x, GLint y, GLint z) {if (GLeeInit()) glVertexAttribI3i(index, x, y, z);} GLEEPFNGLVERTEXATTRIBI3IPROC GLeeFuncPtr_glVertexAttribI3i=GLee_Lazy_glVertexAttribI3i; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI4i #define GLEE_C_DEFINED_glVertexAttribI4i void __stdcall GLee_Lazy_glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) {if (GLeeInit()) glVertexAttribI4i(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIBI4IPROC GLeeFuncPtr_glVertexAttribI4i=GLee_Lazy_glVertexAttribI4i; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI1ui #define GLEE_C_DEFINED_glVertexAttribI1ui void __stdcall GLee_Lazy_glVertexAttribI1ui(GLuint index, GLuint x) {if (GLeeInit()) glVertexAttribI1ui(index, x);} GLEEPFNGLVERTEXATTRIBI1UIPROC GLeeFuncPtr_glVertexAttribI1ui=GLee_Lazy_glVertexAttribI1ui; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI2ui #define GLEE_C_DEFINED_glVertexAttribI2ui void __stdcall GLee_Lazy_glVertexAttribI2ui(GLuint index, GLuint x, GLuint y) {if (GLeeInit()) glVertexAttribI2ui(index, x, y);} GLEEPFNGLVERTEXATTRIBI2UIPROC GLeeFuncPtr_glVertexAttribI2ui=GLee_Lazy_glVertexAttribI2ui; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI3ui #define GLEE_C_DEFINED_glVertexAttribI3ui void __stdcall GLee_Lazy_glVertexAttribI3ui(GLuint index, GLuint x, GLuint y, GLuint z) {if (GLeeInit()) glVertexAttribI3ui(index, x, y, z);} GLEEPFNGLVERTEXATTRIBI3UIPROC GLeeFuncPtr_glVertexAttribI3ui=GLee_Lazy_glVertexAttribI3ui; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI4ui #define GLEE_C_DEFINED_glVertexAttribI4ui void __stdcall GLee_Lazy_glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) {if (GLeeInit()) glVertexAttribI4ui(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIBI4UIPROC GLeeFuncPtr_glVertexAttribI4ui=GLee_Lazy_glVertexAttribI4ui; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI1iv #define GLEE_C_DEFINED_glVertexAttribI1iv void __stdcall GLee_Lazy_glVertexAttribI1iv(GLuint index, const GLint * v) {if (GLeeInit()) glVertexAttribI1iv(index, v);} GLEEPFNGLVERTEXATTRIBI1IVPROC GLeeFuncPtr_glVertexAttribI1iv=GLee_Lazy_glVertexAttribI1iv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI2iv #define GLEE_C_DEFINED_glVertexAttribI2iv void __stdcall GLee_Lazy_glVertexAttribI2iv(GLuint index, const GLint * v) {if (GLeeInit()) glVertexAttribI2iv(index, v);} GLEEPFNGLVERTEXATTRIBI2IVPROC GLeeFuncPtr_glVertexAttribI2iv=GLee_Lazy_glVertexAttribI2iv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI3iv #define GLEE_C_DEFINED_glVertexAttribI3iv void __stdcall GLee_Lazy_glVertexAttribI3iv(GLuint index, const GLint * v) {if (GLeeInit()) glVertexAttribI3iv(index, v);} GLEEPFNGLVERTEXATTRIBI3IVPROC GLeeFuncPtr_glVertexAttribI3iv=GLee_Lazy_glVertexAttribI3iv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI4iv #define GLEE_C_DEFINED_glVertexAttribI4iv void __stdcall GLee_Lazy_glVertexAttribI4iv(GLuint index, const GLint * v) {if (GLeeInit()) glVertexAttribI4iv(index, v);} GLEEPFNGLVERTEXATTRIBI4IVPROC GLeeFuncPtr_glVertexAttribI4iv=GLee_Lazy_glVertexAttribI4iv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI1uiv #define GLEE_C_DEFINED_glVertexAttribI1uiv void __stdcall GLee_Lazy_glVertexAttribI1uiv(GLuint index, const GLuint * v) {if (GLeeInit()) glVertexAttribI1uiv(index, v);} GLEEPFNGLVERTEXATTRIBI1UIVPROC GLeeFuncPtr_glVertexAttribI1uiv=GLee_Lazy_glVertexAttribI1uiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI2uiv #define GLEE_C_DEFINED_glVertexAttribI2uiv void __stdcall GLee_Lazy_glVertexAttribI2uiv(GLuint index, const GLuint * v) {if (GLeeInit()) glVertexAttribI2uiv(index, v);} GLEEPFNGLVERTEXATTRIBI2UIVPROC GLeeFuncPtr_glVertexAttribI2uiv=GLee_Lazy_glVertexAttribI2uiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI3uiv #define GLEE_C_DEFINED_glVertexAttribI3uiv void __stdcall GLee_Lazy_glVertexAttribI3uiv(GLuint index, const GLuint * v) {if (GLeeInit()) glVertexAttribI3uiv(index, v);} GLEEPFNGLVERTEXATTRIBI3UIVPROC GLeeFuncPtr_glVertexAttribI3uiv=GLee_Lazy_glVertexAttribI3uiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI4uiv #define GLEE_C_DEFINED_glVertexAttribI4uiv void __stdcall GLee_Lazy_glVertexAttribI4uiv(GLuint index, const GLuint * v) {if (GLeeInit()) glVertexAttribI4uiv(index, v);} GLEEPFNGLVERTEXATTRIBI4UIVPROC GLeeFuncPtr_glVertexAttribI4uiv=GLee_Lazy_glVertexAttribI4uiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI4bv #define GLEE_C_DEFINED_glVertexAttribI4bv void __stdcall GLee_Lazy_glVertexAttribI4bv(GLuint index, const GLbyte * v) {if (GLeeInit()) glVertexAttribI4bv(index, v);} GLEEPFNGLVERTEXATTRIBI4BVPROC GLeeFuncPtr_glVertexAttribI4bv=GLee_Lazy_glVertexAttribI4bv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI4sv #define GLEE_C_DEFINED_glVertexAttribI4sv void __stdcall GLee_Lazy_glVertexAttribI4sv(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttribI4sv(index, v);} GLEEPFNGLVERTEXATTRIBI4SVPROC GLeeFuncPtr_glVertexAttribI4sv=GLee_Lazy_glVertexAttribI4sv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI4ubv #define GLEE_C_DEFINED_glVertexAttribI4ubv void __stdcall GLee_Lazy_glVertexAttribI4ubv(GLuint index, const GLubyte * v) {if (GLeeInit()) glVertexAttribI4ubv(index, v);} GLEEPFNGLVERTEXATTRIBI4UBVPROC GLeeFuncPtr_glVertexAttribI4ubv=GLee_Lazy_glVertexAttribI4ubv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribI4usv #define GLEE_C_DEFINED_glVertexAttribI4usv void __stdcall GLee_Lazy_glVertexAttribI4usv(GLuint index, const GLushort * v) {if (GLeeInit()) glVertexAttribI4usv(index, v);} GLEEPFNGLVERTEXATTRIBI4USVPROC GLeeFuncPtr_glVertexAttribI4usv=GLee_Lazy_glVertexAttribI4usv; #endif #ifndef GLEE_C_DEFINED_glGetUniformuiv #define GLEE_C_DEFINED_glGetUniformuiv void __stdcall GLee_Lazy_glGetUniformuiv(GLuint program, GLint location, GLuint * params) {if (GLeeInit()) glGetUniformuiv(program, location, params);} GLEEPFNGLGETUNIFORMUIVPROC GLeeFuncPtr_glGetUniformuiv=GLee_Lazy_glGetUniformuiv; #endif #ifndef GLEE_C_DEFINED_glBindFragDataLocation #define GLEE_C_DEFINED_glBindFragDataLocation void __stdcall GLee_Lazy_glBindFragDataLocation(GLuint program, GLuint color, const GLchar * name) {if (GLeeInit()) glBindFragDataLocation(program, color, name);} GLEEPFNGLBINDFRAGDATALOCATIONPROC GLeeFuncPtr_glBindFragDataLocation=GLee_Lazy_glBindFragDataLocation; #endif #ifndef GLEE_C_DEFINED_glGetFragDataLocation #define GLEE_C_DEFINED_glGetFragDataLocation GLint __stdcall GLee_Lazy_glGetFragDataLocation(GLuint program, const GLchar * name) {if (GLeeInit()) return glGetFragDataLocation(program, name); return (GLint)0;} GLEEPFNGLGETFRAGDATALOCATIONPROC GLeeFuncPtr_glGetFragDataLocation=GLee_Lazy_glGetFragDataLocation; #endif #ifndef GLEE_C_DEFINED_glUniform1ui #define GLEE_C_DEFINED_glUniform1ui void __stdcall GLee_Lazy_glUniform1ui(GLint location, GLuint v0) {if (GLeeInit()) glUniform1ui(location, v0);} GLEEPFNGLUNIFORM1UIPROC GLeeFuncPtr_glUniform1ui=GLee_Lazy_glUniform1ui; #endif #ifndef GLEE_C_DEFINED_glUniform2ui #define GLEE_C_DEFINED_glUniform2ui void __stdcall GLee_Lazy_glUniform2ui(GLint location, GLuint v0, GLuint v1) {if (GLeeInit()) glUniform2ui(location, v0, v1);} GLEEPFNGLUNIFORM2UIPROC GLeeFuncPtr_glUniform2ui=GLee_Lazy_glUniform2ui; #endif #ifndef GLEE_C_DEFINED_glUniform3ui #define GLEE_C_DEFINED_glUniform3ui void __stdcall GLee_Lazy_glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) {if (GLeeInit()) glUniform3ui(location, v0, v1, v2);} GLEEPFNGLUNIFORM3UIPROC GLeeFuncPtr_glUniform3ui=GLee_Lazy_glUniform3ui; #endif #ifndef GLEE_C_DEFINED_glUniform4ui #define GLEE_C_DEFINED_glUniform4ui void __stdcall GLee_Lazy_glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {if (GLeeInit()) glUniform4ui(location, v0, v1, v2, v3);} GLEEPFNGLUNIFORM4UIPROC GLeeFuncPtr_glUniform4ui=GLee_Lazy_glUniform4ui; #endif #ifndef GLEE_C_DEFINED_glUniform1uiv #define GLEE_C_DEFINED_glUniform1uiv void __stdcall GLee_Lazy_glUniform1uiv(GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glUniform1uiv(location, count, value);} GLEEPFNGLUNIFORM1UIVPROC GLeeFuncPtr_glUniform1uiv=GLee_Lazy_glUniform1uiv; #endif #ifndef GLEE_C_DEFINED_glUniform2uiv #define GLEE_C_DEFINED_glUniform2uiv void __stdcall GLee_Lazy_glUniform2uiv(GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glUniform2uiv(location, count, value);} GLEEPFNGLUNIFORM2UIVPROC GLeeFuncPtr_glUniform2uiv=GLee_Lazy_glUniform2uiv; #endif #ifndef GLEE_C_DEFINED_glUniform3uiv #define GLEE_C_DEFINED_glUniform3uiv void __stdcall GLee_Lazy_glUniform3uiv(GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glUniform3uiv(location, count, value);} GLEEPFNGLUNIFORM3UIVPROC GLeeFuncPtr_glUniform3uiv=GLee_Lazy_glUniform3uiv; #endif #ifndef GLEE_C_DEFINED_glUniform4uiv #define GLEE_C_DEFINED_glUniform4uiv void __stdcall GLee_Lazy_glUniform4uiv(GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glUniform4uiv(location, count, value);} GLEEPFNGLUNIFORM4UIVPROC GLeeFuncPtr_glUniform4uiv=GLee_Lazy_glUniform4uiv; #endif #ifndef GLEE_C_DEFINED_glTexParameterIiv #define GLEE_C_DEFINED_glTexParameterIiv void __stdcall GLee_Lazy_glTexParameterIiv(GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glTexParameterIiv(target, pname, params);} GLEEPFNGLTEXPARAMETERIIVPROC GLeeFuncPtr_glTexParameterIiv=GLee_Lazy_glTexParameterIiv; #endif #ifndef GLEE_C_DEFINED_glTexParameterIuiv #define GLEE_C_DEFINED_glTexParameterIuiv void __stdcall GLee_Lazy_glTexParameterIuiv(GLenum target, GLenum pname, const GLuint * params) {if (GLeeInit()) glTexParameterIuiv(target, pname, params);} GLEEPFNGLTEXPARAMETERIUIVPROC GLeeFuncPtr_glTexParameterIuiv=GLee_Lazy_glTexParameterIuiv; #endif #ifndef GLEE_C_DEFINED_glGetTexParameterIiv #define GLEE_C_DEFINED_glGetTexParameterIiv void __stdcall GLee_Lazy_glGetTexParameterIiv(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetTexParameterIiv(target, pname, params);} GLEEPFNGLGETTEXPARAMETERIIVPROC GLeeFuncPtr_glGetTexParameterIiv=GLee_Lazy_glGetTexParameterIiv; #endif #ifndef GLEE_C_DEFINED_glGetTexParameterIuiv #define GLEE_C_DEFINED_glGetTexParameterIuiv void __stdcall GLee_Lazy_glGetTexParameterIuiv(GLenum target, GLenum pname, GLuint * params) {if (GLeeInit()) glGetTexParameterIuiv(target, pname, params);} GLEEPFNGLGETTEXPARAMETERIUIVPROC GLeeFuncPtr_glGetTexParameterIuiv=GLee_Lazy_glGetTexParameterIuiv; #endif #ifndef GLEE_C_DEFINED_glClearBufferiv #define GLEE_C_DEFINED_glClearBufferiv void __stdcall GLee_Lazy_glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint * value) {if (GLeeInit()) glClearBufferiv(buffer, drawbuffer, value);} GLEEPFNGLCLEARBUFFERIVPROC GLeeFuncPtr_glClearBufferiv=GLee_Lazy_glClearBufferiv; #endif #ifndef GLEE_C_DEFINED_glClearBufferuiv #define GLEE_C_DEFINED_glClearBufferuiv void __stdcall GLee_Lazy_glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint * value) {if (GLeeInit()) glClearBufferuiv(buffer, drawbuffer, value);} GLEEPFNGLCLEARBUFFERUIVPROC GLeeFuncPtr_glClearBufferuiv=GLee_Lazy_glClearBufferuiv; #endif #ifndef GLEE_C_DEFINED_glClearBufferfv #define GLEE_C_DEFINED_glClearBufferfv void __stdcall GLee_Lazy_glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat * value) {if (GLeeInit()) glClearBufferfv(buffer, drawbuffer, value);} GLEEPFNGLCLEARBUFFERFVPROC GLeeFuncPtr_glClearBufferfv=GLee_Lazy_glClearBufferfv; #endif #ifndef GLEE_C_DEFINED_glClearBufferfi #define GLEE_C_DEFINED_glClearBufferfi void __stdcall GLee_Lazy_glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) {if (GLeeInit()) glClearBufferfi(buffer, drawbuffer, depth, stencil);} GLEEPFNGLCLEARBUFFERFIPROC GLeeFuncPtr_glClearBufferfi=GLee_Lazy_glClearBufferfi; #endif #ifndef GLEE_C_DEFINED_glGetStringi #define GLEE_C_DEFINED_glGetStringi const GLubyte * __stdcall GLee_Lazy_glGetStringi(GLenum name, GLuint index) {if (GLeeInit()) return glGetStringi(name, index); return (const GLubyte *)0;} GLEEPFNGLGETSTRINGIPROC GLeeFuncPtr_glGetStringi=GLee_Lazy_glGetStringi; #endif #endif /* GL_VERSION_3_1 */ #ifdef __GLEE_GL_VERSION_3_1 #ifndef GLEE_C_DEFINED_glDrawArraysInstanced #define GLEE_C_DEFINED_glDrawArraysInstanced void __stdcall GLee_Lazy_glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) {if (GLeeInit()) glDrawArraysInstanced(mode, first, count, instancecount);} GLEEPFNGLDRAWARRAYSINSTANCEDPROC GLeeFuncPtr_glDrawArraysInstanced=GLee_Lazy_glDrawArraysInstanced; #endif #ifndef GLEE_C_DEFINED_glDrawElementsInstanced #define GLEE_C_DEFINED_glDrawElementsInstanced void __stdcall GLee_Lazy_glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei instancecount) {if (GLeeInit()) glDrawElementsInstanced(mode, count, type, indices, instancecount);} GLEEPFNGLDRAWELEMENTSINSTANCEDPROC GLeeFuncPtr_glDrawElementsInstanced=GLee_Lazy_glDrawElementsInstanced; #endif #ifndef GLEE_C_DEFINED_glTexBuffer #define GLEE_C_DEFINED_glTexBuffer void __stdcall GLee_Lazy_glTexBuffer(GLenum target, GLenum internalformat, GLuint buffer) {if (GLeeInit()) glTexBuffer(target, internalformat, buffer);} GLEEPFNGLTEXBUFFERPROC GLeeFuncPtr_glTexBuffer=GLee_Lazy_glTexBuffer; #endif #ifndef GLEE_C_DEFINED_glPrimitiveRestartIndex #define GLEE_C_DEFINED_glPrimitiveRestartIndex void __stdcall GLee_Lazy_glPrimitiveRestartIndex(GLuint index) {if (GLeeInit()) glPrimitiveRestartIndex(index);} GLEEPFNGLPRIMITIVERESTARTINDEXPROC GLeeFuncPtr_glPrimitiveRestartIndex=GLee_Lazy_glPrimitiveRestartIndex; #endif #endif /* GL_VERSION_3_2 */ #ifdef __GLEE_GL_VERSION_3_2 #ifndef GLEE_C_DEFINED_glGetInteger64i_v #define GLEE_C_DEFINED_glGetInteger64i_v void __stdcall GLee_Lazy_glGetInteger64i_v(GLenum target, GLuint index, GLint64 * data) {if (GLeeInit()) glGetInteger64i_v(target, index, data);} GLEEPFNGLGETINTEGER64I_VPROC GLeeFuncPtr_glGetInteger64i_v=GLee_Lazy_glGetInteger64i_v; #endif #ifndef GLEE_C_DEFINED_glGetBufferParameteri64v #define GLEE_C_DEFINED_glGetBufferParameteri64v void __stdcall GLee_Lazy_glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 * params) {if (GLeeInit()) glGetBufferParameteri64v(target, pname, params);} GLEEPFNGLGETBUFFERPARAMETERI64VPROC GLeeFuncPtr_glGetBufferParameteri64v=GLee_Lazy_glGetBufferParameteri64v; #endif #ifndef GLEE_C_DEFINED_glFramebufferTexture #define GLEE_C_DEFINED_glFramebufferTexture void __stdcall GLee_Lazy_glFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level) {if (GLeeInit()) glFramebufferTexture(target, attachment, texture, level);} GLEEPFNGLFRAMEBUFFERTEXTUREPROC GLeeFuncPtr_glFramebufferTexture=GLee_Lazy_glFramebufferTexture; #endif #endif /* GL_VERSION_3_3 */ #ifdef __GLEE_GL_VERSION_3_3 #ifndef GLEE_C_DEFINED_glVertexAttribDivisor #define GLEE_C_DEFINED_glVertexAttribDivisor void __stdcall GLee_Lazy_glVertexAttribDivisor(GLuint index, GLuint divisor) {if (GLeeInit()) glVertexAttribDivisor(index, divisor);} GLEEPFNGLVERTEXATTRIBDIVISORPROC GLeeFuncPtr_glVertexAttribDivisor=GLee_Lazy_glVertexAttribDivisor; #endif #endif /* GL_VERSION_4_0 */ #ifdef __GLEE_GL_VERSION_4_0 #ifndef GLEE_C_DEFINED_glMinSampleShading #define GLEE_C_DEFINED_glMinSampleShading void __stdcall GLee_Lazy_glMinSampleShading(GLfloat value) {if (GLeeInit()) glMinSampleShading(value);} GLEEPFNGLMINSAMPLESHADINGPROC GLeeFuncPtr_glMinSampleShading=GLee_Lazy_glMinSampleShading; #endif #ifndef GLEE_C_DEFINED_glBlendEquationi #define GLEE_C_DEFINED_glBlendEquationi void __stdcall GLee_Lazy_glBlendEquationi(GLuint buf, GLenum mode) {if (GLeeInit()) glBlendEquationi(buf, mode);} GLEEPFNGLBLENDEQUATIONIPROC GLeeFuncPtr_glBlendEquationi=GLee_Lazy_glBlendEquationi; #endif #ifndef GLEE_C_DEFINED_glBlendEquationSeparatei #define GLEE_C_DEFINED_glBlendEquationSeparatei void __stdcall GLee_Lazy_glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeAlpha) {if (GLeeInit()) glBlendEquationSeparatei(buf, modeRGB, modeAlpha);} GLEEPFNGLBLENDEQUATIONSEPARATEIPROC GLeeFuncPtr_glBlendEquationSeparatei=GLee_Lazy_glBlendEquationSeparatei; #endif #ifndef GLEE_C_DEFINED_glBlendFunci #define GLEE_C_DEFINED_glBlendFunci void __stdcall GLee_Lazy_glBlendFunci(GLuint buf, GLenum src, GLenum dst) {if (GLeeInit()) glBlendFunci(buf, src, dst);} GLEEPFNGLBLENDFUNCIPROC GLeeFuncPtr_glBlendFunci=GLee_Lazy_glBlendFunci; #endif #ifndef GLEE_C_DEFINED_glBlendFuncSeparatei #define GLEE_C_DEFINED_glBlendFuncSeparatei void __stdcall GLee_Lazy_glBlendFuncSeparatei(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {if (GLeeInit()) glBlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);} GLEEPFNGLBLENDFUNCSEPARATEIPROC GLeeFuncPtr_glBlendFuncSeparatei=GLee_Lazy_glBlendFuncSeparatei; #endif #endif /* GL_VERSION_4_1 */ #ifdef __GLEE_GL_VERSION_4_1 #endif /* GL_VERSION_4_2 */ #ifdef __GLEE_GL_VERSION_4_2 #endif /* GL_VERSION_4_3 */ #ifdef __GLEE_GL_VERSION_4_3 #endif /* GL_ARB_multitexture */ #ifdef __GLEE_GL_ARB_multitexture #ifndef GLEE_C_DEFINED_glActiveTextureARB #define GLEE_C_DEFINED_glActiveTextureARB void __stdcall GLee_Lazy_glActiveTextureARB(GLenum texture) {if (GLeeInit()) glActiveTextureARB(texture);} GLEEPFNGLACTIVETEXTUREARBPROC GLeeFuncPtr_glActiveTextureARB=GLee_Lazy_glActiveTextureARB; #endif #ifndef GLEE_C_DEFINED_glClientActiveTextureARB #define GLEE_C_DEFINED_glClientActiveTextureARB void __stdcall GLee_Lazy_glClientActiveTextureARB(GLenum texture) {if (GLeeInit()) glClientActiveTextureARB(texture);} GLEEPFNGLCLIENTACTIVETEXTUREARBPROC GLeeFuncPtr_glClientActiveTextureARB=GLee_Lazy_glClientActiveTextureARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1dARB #define GLEE_C_DEFINED_glMultiTexCoord1dARB void __stdcall GLee_Lazy_glMultiTexCoord1dARB(GLenum target, GLdouble s) {if (GLeeInit()) glMultiTexCoord1dARB(target, s);} GLEEPFNGLMULTITEXCOORD1DARBPROC GLeeFuncPtr_glMultiTexCoord1dARB=GLee_Lazy_glMultiTexCoord1dARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1dvARB #define GLEE_C_DEFINED_glMultiTexCoord1dvARB void __stdcall GLee_Lazy_glMultiTexCoord1dvARB(GLenum target, const GLdouble * v) {if (GLeeInit()) glMultiTexCoord1dvARB(target, v);} GLEEPFNGLMULTITEXCOORD1DVARBPROC GLeeFuncPtr_glMultiTexCoord1dvARB=GLee_Lazy_glMultiTexCoord1dvARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1fARB #define GLEE_C_DEFINED_glMultiTexCoord1fARB void __stdcall GLee_Lazy_glMultiTexCoord1fARB(GLenum target, GLfloat s) {if (GLeeInit()) glMultiTexCoord1fARB(target, s);} GLEEPFNGLMULTITEXCOORD1FARBPROC GLeeFuncPtr_glMultiTexCoord1fARB=GLee_Lazy_glMultiTexCoord1fARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1fvARB #define GLEE_C_DEFINED_glMultiTexCoord1fvARB void __stdcall GLee_Lazy_glMultiTexCoord1fvARB(GLenum target, const GLfloat * v) {if (GLeeInit()) glMultiTexCoord1fvARB(target, v);} GLEEPFNGLMULTITEXCOORD1FVARBPROC GLeeFuncPtr_glMultiTexCoord1fvARB=GLee_Lazy_glMultiTexCoord1fvARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1iARB #define GLEE_C_DEFINED_glMultiTexCoord1iARB void __stdcall GLee_Lazy_glMultiTexCoord1iARB(GLenum target, GLint s) {if (GLeeInit()) glMultiTexCoord1iARB(target, s);} GLEEPFNGLMULTITEXCOORD1IARBPROC GLeeFuncPtr_glMultiTexCoord1iARB=GLee_Lazy_glMultiTexCoord1iARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1ivARB #define GLEE_C_DEFINED_glMultiTexCoord1ivARB void __stdcall GLee_Lazy_glMultiTexCoord1ivARB(GLenum target, const GLint * v) {if (GLeeInit()) glMultiTexCoord1ivARB(target, v);} GLEEPFNGLMULTITEXCOORD1IVARBPROC GLeeFuncPtr_glMultiTexCoord1ivARB=GLee_Lazy_glMultiTexCoord1ivARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1sARB #define GLEE_C_DEFINED_glMultiTexCoord1sARB void __stdcall GLee_Lazy_glMultiTexCoord1sARB(GLenum target, GLshort s) {if (GLeeInit()) glMultiTexCoord1sARB(target, s);} GLEEPFNGLMULTITEXCOORD1SARBPROC GLeeFuncPtr_glMultiTexCoord1sARB=GLee_Lazy_glMultiTexCoord1sARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1svARB #define GLEE_C_DEFINED_glMultiTexCoord1svARB void __stdcall GLee_Lazy_glMultiTexCoord1svARB(GLenum target, const GLshort * v) {if (GLeeInit()) glMultiTexCoord1svARB(target, v);} GLEEPFNGLMULTITEXCOORD1SVARBPROC GLeeFuncPtr_glMultiTexCoord1svARB=GLee_Lazy_glMultiTexCoord1svARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2dARB #define GLEE_C_DEFINED_glMultiTexCoord2dARB void __stdcall GLee_Lazy_glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t) {if (GLeeInit()) glMultiTexCoord2dARB(target, s, t);} GLEEPFNGLMULTITEXCOORD2DARBPROC GLeeFuncPtr_glMultiTexCoord2dARB=GLee_Lazy_glMultiTexCoord2dARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2dvARB #define GLEE_C_DEFINED_glMultiTexCoord2dvARB void __stdcall GLee_Lazy_glMultiTexCoord2dvARB(GLenum target, const GLdouble * v) {if (GLeeInit()) glMultiTexCoord2dvARB(target, v);} GLEEPFNGLMULTITEXCOORD2DVARBPROC GLeeFuncPtr_glMultiTexCoord2dvARB=GLee_Lazy_glMultiTexCoord2dvARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2fARB #define GLEE_C_DEFINED_glMultiTexCoord2fARB void __stdcall GLee_Lazy_glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t) {if (GLeeInit()) glMultiTexCoord2fARB(target, s, t);} GLEEPFNGLMULTITEXCOORD2FARBPROC GLeeFuncPtr_glMultiTexCoord2fARB=GLee_Lazy_glMultiTexCoord2fARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2fvARB #define GLEE_C_DEFINED_glMultiTexCoord2fvARB void __stdcall GLee_Lazy_glMultiTexCoord2fvARB(GLenum target, const GLfloat * v) {if (GLeeInit()) glMultiTexCoord2fvARB(target, v);} GLEEPFNGLMULTITEXCOORD2FVARBPROC GLeeFuncPtr_glMultiTexCoord2fvARB=GLee_Lazy_glMultiTexCoord2fvARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2iARB #define GLEE_C_DEFINED_glMultiTexCoord2iARB void __stdcall GLee_Lazy_glMultiTexCoord2iARB(GLenum target, GLint s, GLint t) {if (GLeeInit()) glMultiTexCoord2iARB(target, s, t);} GLEEPFNGLMULTITEXCOORD2IARBPROC GLeeFuncPtr_glMultiTexCoord2iARB=GLee_Lazy_glMultiTexCoord2iARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2ivARB #define GLEE_C_DEFINED_glMultiTexCoord2ivARB void __stdcall GLee_Lazy_glMultiTexCoord2ivARB(GLenum target, const GLint * v) {if (GLeeInit()) glMultiTexCoord2ivARB(target, v);} GLEEPFNGLMULTITEXCOORD2IVARBPROC GLeeFuncPtr_glMultiTexCoord2ivARB=GLee_Lazy_glMultiTexCoord2ivARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2sARB #define GLEE_C_DEFINED_glMultiTexCoord2sARB void __stdcall GLee_Lazy_glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t) {if (GLeeInit()) glMultiTexCoord2sARB(target, s, t);} GLEEPFNGLMULTITEXCOORD2SARBPROC GLeeFuncPtr_glMultiTexCoord2sARB=GLee_Lazy_glMultiTexCoord2sARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2svARB #define GLEE_C_DEFINED_glMultiTexCoord2svARB void __stdcall GLee_Lazy_glMultiTexCoord2svARB(GLenum target, const GLshort * v) {if (GLeeInit()) glMultiTexCoord2svARB(target, v);} GLEEPFNGLMULTITEXCOORD2SVARBPROC GLeeFuncPtr_glMultiTexCoord2svARB=GLee_Lazy_glMultiTexCoord2svARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3dARB #define GLEE_C_DEFINED_glMultiTexCoord3dARB void __stdcall GLee_Lazy_glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r) {if (GLeeInit()) glMultiTexCoord3dARB(target, s, t, r);} GLEEPFNGLMULTITEXCOORD3DARBPROC GLeeFuncPtr_glMultiTexCoord3dARB=GLee_Lazy_glMultiTexCoord3dARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3dvARB #define GLEE_C_DEFINED_glMultiTexCoord3dvARB void __stdcall GLee_Lazy_glMultiTexCoord3dvARB(GLenum target, const GLdouble * v) {if (GLeeInit()) glMultiTexCoord3dvARB(target, v);} GLEEPFNGLMULTITEXCOORD3DVARBPROC GLeeFuncPtr_glMultiTexCoord3dvARB=GLee_Lazy_glMultiTexCoord3dvARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3fARB #define GLEE_C_DEFINED_glMultiTexCoord3fARB void __stdcall GLee_Lazy_glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r) {if (GLeeInit()) glMultiTexCoord3fARB(target, s, t, r);} GLEEPFNGLMULTITEXCOORD3FARBPROC GLeeFuncPtr_glMultiTexCoord3fARB=GLee_Lazy_glMultiTexCoord3fARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3fvARB #define GLEE_C_DEFINED_glMultiTexCoord3fvARB void __stdcall GLee_Lazy_glMultiTexCoord3fvARB(GLenum target, const GLfloat * v) {if (GLeeInit()) glMultiTexCoord3fvARB(target, v);} GLEEPFNGLMULTITEXCOORD3FVARBPROC GLeeFuncPtr_glMultiTexCoord3fvARB=GLee_Lazy_glMultiTexCoord3fvARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3iARB #define GLEE_C_DEFINED_glMultiTexCoord3iARB void __stdcall GLee_Lazy_glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r) {if (GLeeInit()) glMultiTexCoord3iARB(target, s, t, r);} GLEEPFNGLMULTITEXCOORD3IARBPROC GLeeFuncPtr_glMultiTexCoord3iARB=GLee_Lazy_glMultiTexCoord3iARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3ivARB #define GLEE_C_DEFINED_glMultiTexCoord3ivARB void __stdcall GLee_Lazy_glMultiTexCoord3ivARB(GLenum target, const GLint * v) {if (GLeeInit()) glMultiTexCoord3ivARB(target, v);} GLEEPFNGLMULTITEXCOORD3IVARBPROC GLeeFuncPtr_glMultiTexCoord3ivARB=GLee_Lazy_glMultiTexCoord3ivARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3sARB #define GLEE_C_DEFINED_glMultiTexCoord3sARB void __stdcall GLee_Lazy_glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r) {if (GLeeInit()) glMultiTexCoord3sARB(target, s, t, r);} GLEEPFNGLMULTITEXCOORD3SARBPROC GLeeFuncPtr_glMultiTexCoord3sARB=GLee_Lazy_glMultiTexCoord3sARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3svARB #define GLEE_C_DEFINED_glMultiTexCoord3svARB void __stdcall GLee_Lazy_glMultiTexCoord3svARB(GLenum target, const GLshort * v) {if (GLeeInit()) glMultiTexCoord3svARB(target, v);} GLEEPFNGLMULTITEXCOORD3SVARBPROC GLeeFuncPtr_glMultiTexCoord3svARB=GLee_Lazy_glMultiTexCoord3svARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4dARB #define GLEE_C_DEFINED_glMultiTexCoord4dARB void __stdcall GLee_Lazy_glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) {if (GLeeInit()) glMultiTexCoord4dARB(target, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4DARBPROC GLeeFuncPtr_glMultiTexCoord4dARB=GLee_Lazy_glMultiTexCoord4dARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4dvARB #define GLEE_C_DEFINED_glMultiTexCoord4dvARB void __stdcall GLee_Lazy_glMultiTexCoord4dvARB(GLenum target, const GLdouble * v) {if (GLeeInit()) glMultiTexCoord4dvARB(target, v);} GLEEPFNGLMULTITEXCOORD4DVARBPROC GLeeFuncPtr_glMultiTexCoord4dvARB=GLee_Lazy_glMultiTexCoord4dvARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4fARB #define GLEE_C_DEFINED_glMultiTexCoord4fARB void __stdcall GLee_Lazy_glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {if (GLeeInit()) glMultiTexCoord4fARB(target, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4FARBPROC GLeeFuncPtr_glMultiTexCoord4fARB=GLee_Lazy_glMultiTexCoord4fARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4fvARB #define GLEE_C_DEFINED_glMultiTexCoord4fvARB void __stdcall GLee_Lazy_glMultiTexCoord4fvARB(GLenum target, const GLfloat * v) {if (GLeeInit()) glMultiTexCoord4fvARB(target, v);} GLEEPFNGLMULTITEXCOORD4FVARBPROC GLeeFuncPtr_glMultiTexCoord4fvARB=GLee_Lazy_glMultiTexCoord4fvARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4iARB #define GLEE_C_DEFINED_glMultiTexCoord4iARB void __stdcall GLee_Lazy_glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q) {if (GLeeInit()) glMultiTexCoord4iARB(target, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4IARBPROC GLeeFuncPtr_glMultiTexCoord4iARB=GLee_Lazy_glMultiTexCoord4iARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4ivARB #define GLEE_C_DEFINED_glMultiTexCoord4ivARB void __stdcall GLee_Lazy_glMultiTexCoord4ivARB(GLenum target, const GLint * v) {if (GLeeInit()) glMultiTexCoord4ivARB(target, v);} GLEEPFNGLMULTITEXCOORD4IVARBPROC GLeeFuncPtr_glMultiTexCoord4ivARB=GLee_Lazy_glMultiTexCoord4ivARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4sARB #define GLEE_C_DEFINED_glMultiTexCoord4sARB void __stdcall GLee_Lazy_glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) {if (GLeeInit()) glMultiTexCoord4sARB(target, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4SARBPROC GLeeFuncPtr_glMultiTexCoord4sARB=GLee_Lazy_glMultiTexCoord4sARB; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4svARB #define GLEE_C_DEFINED_glMultiTexCoord4svARB void __stdcall GLee_Lazy_glMultiTexCoord4svARB(GLenum target, const GLshort * v) {if (GLeeInit()) glMultiTexCoord4svARB(target, v);} GLEEPFNGLMULTITEXCOORD4SVARBPROC GLeeFuncPtr_glMultiTexCoord4svARB=GLee_Lazy_glMultiTexCoord4svARB; #endif #endif /* GL_ARB_transpose_matrix */ #ifdef __GLEE_GL_ARB_transpose_matrix #ifndef GLEE_C_DEFINED_glLoadTransposeMatrixfARB #define GLEE_C_DEFINED_glLoadTransposeMatrixfARB void __stdcall GLee_Lazy_glLoadTransposeMatrixfARB(const GLfloat * m) {if (GLeeInit()) glLoadTransposeMatrixfARB(m);} GLEEPFNGLLOADTRANSPOSEMATRIXFARBPROC GLeeFuncPtr_glLoadTransposeMatrixfARB=GLee_Lazy_glLoadTransposeMatrixfARB; #endif #ifndef GLEE_C_DEFINED_glLoadTransposeMatrixdARB #define GLEE_C_DEFINED_glLoadTransposeMatrixdARB void __stdcall GLee_Lazy_glLoadTransposeMatrixdARB(const GLdouble * m) {if (GLeeInit()) glLoadTransposeMatrixdARB(m);} GLEEPFNGLLOADTRANSPOSEMATRIXDARBPROC GLeeFuncPtr_glLoadTransposeMatrixdARB=GLee_Lazy_glLoadTransposeMatrixdARB; #endif #ifndef GLEE_C_DEFINED_glMultTransposeMatrixfARB #define GLEE_C_DEFINED_glMultTransposeMatrixfARB void __stdcall GLee_Lazy_glMultTransposeMatrixfARB(const GLfloat * m) {if (GLeeInit()) glMultTransposeMatrixfARB(m);} GLEEPFNGLMULTTRANSPOSEMATRIXFARBPROC GLeeFuncPtr_glMultTransposeMatrixfARB=GLee_Lazy_glMultTransposeMatrixfARB; #endif #ifndef GLEE_C_DEFINED_glMultTransposeMatrixdARB #define GLEE_C_DEFINED_glMultTransposeMatrixdARB void __stdcall GLee_Lazy_glMultTransposeMatrixdARB(const GLdouble * m) {if (GLeeInit()) glMultTransposeMatrixdARB(m);} GLEEPFNGLMULTTRANSPOSEMATRIXDARBPROC GLeeFuncPtr_glMultTransposeMatrixdARB=GLee_Lazy_glMultTransposeMatrixdARB; #endif #endif /* GL_ARB_multisample */ #ifdef __GLEE_GL_ARB_multisample #ifndef GLEE_C_DEFINED_glSampleCoverageARB #define GLEE_C_DEFINED_glSampleCoverageARB void __stdcall GLee_Lazy_glSampleCoverageARB(GLfloat value, GLboolean invert) {if (GLeeInit()) glSampleCoverageARB(value, invert);} GLEEPFNGLSAMPLECOVERAGEARBPROC GLeeFuncPtr_glSampleCoverageARB=GLee_Lazy_glSampleCoverageARB; #endif #endif /* GL_ARB_texture_env_add */ #ifdef __GLEE_GL_ARB_texture_env_add #endif /* GL_ARB_texture_cube_map */ #ifdef __GLEE_GL_ARB_texture_cube_map #endif /* GL_ARB_texture_compression */ #ifdef __GLEE_GL_ARB_texture_compression #ifndef GLEE_C_DEFINED_glCompressedTexImage3DARB #define GLEE_C_DEFINED_glCompressedTexImage3DARB void __stdcall GLee_Lazy_glCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexImage3DARB(target, level, internalformat, width, height, depth, border, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXIMAGE3DARBPROC GLeeFuncPtr_glCompressedTexImage3DARB=GLee_Lazy_glCompressedTexImage3DARB; #endif #ifndef GLEE_C_DEFINED_glCompressedTexImage2DARB #define GLEE_C_DEFINED_glCompressedTexImage2DARB void __stdcall GLee_Lazy_glCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXIMAGE2DARBPROC GLeeFuncPtr_glCompressedTexImage2DARB=GLee_Lazy_glCompressedTexImage2DARB; #endif #ifndef GLEE_C_DEFINED_glCompressedTexImage1DARB #define GLEE_C_DEFINED_glCompressedTexImage1DARB void __stdcall GLee_Lazy_glCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexImage1DARB(target, level, internalformat, width, border, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXIMAGE1DARBPROC GLeeFuncPtr_glCompressedTexImage1DARB=GLee_Lazy_glCompressedTexImage1DARB; #endif #ifndef GLEE_C_DEFINED_glCompressedTexSubImage3DARB #define GLEE_C_DEFINED_glCompressedTexSubImage3DARB void __stdcall GLee_Lazy_glCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC GLeeFuncPtr_glCompressedTexSubImage3DARB=GLee_Lazy_glCompressedTexSubImage3DARB; #endif #ifndef GLEE_C_DEFINED_glCompressedTexSubImage2DARB #define GLEE_C_DEFINED_glCompressedTexSubImage2DARB void __stdcall GLee_Lazy_glCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC GLeeFuncPtr_glCompressedTexSubImage2DARB=GLee_Lazy_glCompressedTexSubImage2DARB; #endif #ifndef GLEE_C_DEFINED_glCompressedTexSubImage1DARB #define GLEE_C_DEFINED_glCompressedTexSubImage1DARB void __stdcall GLee_Lazy_glCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data) {if (GLeeInit()) glCompressedTexSubImage1DARB(target, level, xoffset, width, format, imageSize, data);} GLEEPFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC GLeeFuncPtr_glCompressedTexSubImage1DARB=GLee_Lazy_glCompressedTexSubImage1DARB; #endif #ifndef GLEE_C_DEFINED_glGetCompressedTexImageARB #define GLEE_C_DEFINED_glGetCompressedTexImageARB void __stdcall GLee_Lazy_glGetCompressedTexImageARB(GLenum target, GLint level, GLvoid * img) {if (GLeeInit()) glGetCompressedTexImageARB(target, level, img);} GLEEPFNGLGETCOMPRESSEDTEXIMAGEARBPROC GLeeFuncPtr_glGetCompressedTexImageARB=GLee_Lazy_glGetCompressedTexImageARB; #endif #endif /* GL_ARB_texture_border_clamp */ #ifdef __GLEE_GL_ARB_texture_border_clamp #endif /* GL_ARB_point_parameters */ #ifdef __GLEE_GL_ARB_point_parameters #ifndef GLEE_C_DEFINED_glPointParameterfARB #define GLEE_C_DEFINED_glPointParameterfARB void __stdcall GLee_Lazy_glPointParameterfARB(GLenum pname, GLfloat param) {if (GLeeInit()) glPointParameterfARB(pname, param);} GLEEPFNGLPOINTPARAMETERFARBPROC GLeeFuncPtr_glPointParameterfARB=GLee_Lazy_glPointParameterfARB; #endif #ifndef GLEE_C_DEFINED_glPointParameterfvARB #define GLEE_C_DEFINED_glPointParameterfvARB void __stdcall GLee_Lazy_glPointParameterfvARB(GLenum pname, const GLfloat * params) {if (GLeeInit()) glPointParameterfvARB(pname, params);} GLEEPFNGLPOINTPARAMETERFVARBPROC GLeeFuncPtr_glPointParameterfvARB=GLee_Lazy_glPointParameterfvARB; #endif #endif /* GL_ARB_vertex_blend */ #ifdef __GLEE_GL_ARB_vertex_blend #ifndef GLEE_C_DEFINED_glWeightbvARB #define GLEE_C_DEFINED_glWeightbvARB void __stdcall GLee_Lazy_glWeightbvARB(GLint size, const GLbyte * weights) {if (GLeeInit()) glWeightbvARB(size, weights);} GLEEPFNGLWEIGHTBVARBPROC GLeeFuncPtr_glWeightbvARB=GLee_Lazy_glWeightbvARB; #endif #ifndef GLEE_C_DEFINED_glWeightsvARB #define GLEE_C_DEFINED_glWeightsvARB void __stdcall GLee_Lazy_glWeightsvARB(GLint size, const GLshort * weights) {if (GLeeInit()) glWeightsvARB(size, weights);} GLEEPFNGLWEIGHTSVARBPROC GLeeFuncPtr_glWeightsvARB=GLee_Lazy_glWeightsvARB; #endif #ifndef GLEE_C_DEFINED_glWeightivARB #define GLEE_C_DEFINED_glWeightivARB void __stdcall GLee_Lazy_glWeightivARB(GLint size, const GLint * weights) {if (GLeeInit()) glWeightivARB(size, weights);} GLEEPFNGLWEIGHTIVARBPROC GLeeFuncPtr_glWeightivARB=GLee_Lazy_glWeightivARB; #endif #ifndef GLEE_C_DEFINED_glWeightfvARB #define GLEE_C_DEFINED_glWeightfvARB void __stdcall GLee_Lazy_glWeightfvARB(GLint size, const GLfloat * weights) {if (GLeeInit()) glWeightfvARB(size, weights);} GLEEPFNGLWEIGHTFVARBPROC GLeeFuncPtr_glWeightfvARB=GLee_Lazy_glWeightfvARB; #endif #ifndef GLEE_C_DEFINED_glWeightdvARB #define GLEE_C_DEFINED_glWeightdvARB void __stdcall GLee_Lazy_glWeightdvARB(GLint size, const GLdouble * weights) {if (GLeeInit()) glWeightdvARB(size, weights);} GLEEPFNGLWEIGHTDVARBPROC GLeeFuncPtr_glWeightdvARB=GLee_Lazy_glWeightdvARB; #endif #ifndef GLEE_C_DEFINED_glWeightubvARB #define GLEE_C_DEFINED_glWeightubvARB void __stdcall GLee_Lazy_glWeightubvARB(GLint size, const GLubyte * weights) {if (GLeeInit()) glWeightubvARB(size, weights);} GLEEPFNGLWEIGHTUBVARBPROC GLeeFuncPtr_glWeightubvARB=GLee_Lazy_glWeightubvARB; #endif #ifndef GLEE_C_DEFINED_glWeightusvARB #define GLEE_C_DEFINED_glWeightusvARB void __stdcall GLee_Lazy_glWeightusvARB(GLint size, const GLushort * weights) {if (GLeeInit()) glWeightusvARB(size, weights);} GLEEPFNGLWEIGHTUSVARBPROC GLeeFuncPtr_glWeightusvARB=GLee_Lazy_glWeightusvARB; #endif #ifndef GLEE_C_DEFINED_glWeightuivARB #define GLEE_C_DEFINED_glWeightuivARB void __stdcall GLee_Lazy_glWeightuivARB(GLint size, const GLuint * weights) {if (GLeeInit()) glWeightuivARB(size, weights);} GLEEPFNGLWEIGHTUIVARBPROC GLeeFuncPtr_glWeightuivARB=GLee_Lazy_glWeightuivARB; #endif #ifndef GLEE_C_DEFINED_glWeightPointerARB #define GLEE_C_DEFINED_glWeightPointerARB void __stdcall GLee_Lazy_glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glWeightPointerARB(size, type, stride, pointer);} GLEEPFNGLWEIGHTPOINTERARBPROC GLeeFuncPtr_glWeightPointerARB=GLee_Lazy_glWeightPointerARB; #endif #ifndef GLEE_C_DEFINED_glVertexBlendARB #define GLEE_C_DEFINED_glVertexBlendARB void __stdcall GLee_Lazy_glVertexBlendARB(GLint count) {if (GLeeInit()) glVertexBlendARB(count);} GLEEPFNGLVERTEXBLENDARBPROC GLeeFuncPtr_glVertexBlendARB=GLee_Lazy_glVertexBlendARB; #endif #endif /* GL_ARB_matrix_palette */ #ifdef __GLEE_GL_ARB_matrix_palette #ifndef GLEE_C_DEFINED_glCurrentPaletteMatrixARB #define GLEE_C_DEFINED_glCurrentPaletteMatrixARB void __stdcall GLee_Lazy_glCurrentPaletteMatrixARB(GLint index) {if (GLeeInit()) glCurrentPaletteMatrixARB(index);} GLEEPFNGLCURRENTPALETTEMATRIXARBPROC GLeeFuncPtr_glCurrentPaletteMatrixARB=GLee_Lazy_glCurrentPaletteMatrixARB; #endif #ifndef GLEE_C_DEFINED_glMatrixIndexubvARB #define GLEE_C_DEFINED_glMatrixIndexubvARB void __stdcall GLee_Lazy_glMatrixIndexubvARB(GLint size, const GLubyte * indices) {if (GLeeInit()) glMatrixIndexubvARB(size, indices);} GLEEPFNGLMATRIXINDEXUBVARBPROC GLeeFuncPtr_glMatrixIndexubvARB=GLee_Lazy_glMatrixIndexubvARB; #endif #ifndef GLEE_C_DEFINED_glMatrixIndexusvARB #define GLEE_C_DEFINED_glMatrixIndexusvARB void __stdcall GLee_Lazy_glMatrixIndexusvARB(GLint size, const GLushort * indices) {if (GLeeInit()) glMatrixIndexusvARB(size, indices);} GLEEPFNGLMATRIXINDEXUSVARBPROC GLeeFuncPtr_glMatrixIndexusvARB=GLee_Lazy_glMatrixIndexusvARB; #endif #ifndef GLEE_C_DEFINED_glMatrixIndexuivARB #define GLEE_C_DEFINED_glMatrixIndexuivARB void __stdcall GLee_Lazy_glMatrixIndexuivARB(GLint size, const GLuint * indices) {if (GLeeInit()) glMatrixIndexuivARB(size, indices);} GLEEPFNGLMATRIXINDEXUIVARBPROC GLeeFuncPtr_glMatrixIndexuivARB=GLee_Lazy_glMatrixIndexuivARB; #endif #ifndef GLEE_C_DEFINED_glMatrixIndexPointerARB #define GLEE_C_DEFINED_glMatrixIndexPointerARB void __stdcall GLee_Lazy_glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glMatrixIndexPointerARB(size, type, stride, pointer);} GLEEPFNGLMATRIXINDEXPOINTERARBPROC GLeeFuncPtr_glMatrixIndexPointerARB=GLee_Lazy_glMatrixIndexPointerARB; #endif #endif /* GL_ARB_texture_env_combine */ #ifdef __GLEE_GL_ARB_texture_env_combine #endif /* GL_ARB_texture_env_crossbar */ #ifdef __GLEE_GL_ARB_texture_env_crossbar #endif /* GL_ARB_texture_env_dot3 */ #ifdef __GLEE_GL_ARB_texture_env_dot3 #endif /* GL_ARB_texture_mirrored_repeat */ #ifdef __GLEE_GL_ARB_texture_mirrored_repeat #endif /* GL_ARB_depth_texture */ #ifdef __GLEE_GL_ARB_depth_texture #endif /* GL_ARB_shadow */ #ifdef __GLEE_GL_ARB_shadow #endif /* GL_ARB_shadow_ambient */ #ifdef __GLEE_GL_ARB_shadow_ambient #endif /* GL_ARB_window_pos */ #ifdef __GLEE_GL_ARB_window_pos #ifndef GLEE_C_DEFINED_glWindowPos2dARB #define GLEE_C_DEFINED_glWindowPos2dARB void __stdcall GLee_Lazy_glWindowPos2dARB(GLdouble x, GLdouble y) {if (GLeeInit()) glWindowPos2dARB(x, y);} GLEEPFNGLWINDOWPOS2DARBPROC GLeeFuncPtr_glWindowPos2dARB=GLee_Lazy_glWindowPos2dARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos2dvARB #define GLEE_C_DEFINED_glWindowPos2dvARB void __stdcall GLee_Lazy_glWindowPos2dvARB(const GLdouble * v) {if (GLeeInit()) glWindowPos2dvARB(v);} GLEEPFNGLWINDOWPOS2DVARBPROC GLeeFuncPtr_glWindowPos2dvARB=GLee_Lazy_glWindowPos2dvARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos2fARB #define GLEE_C_DEFINED_glWindowPos2fARB void __stdcall GLee_Lazy_glWindowPos2fARB(GLfloat x, GLfloat y) {if (GLeeInit()) glWindowPos2fARB(x, y);} GLEEPFNGLWINDOWPOS2FARBPROC GLeeFuncPtr_glWindowPos2fARB=GLee_Lazy_glWindowPos2fARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos2fvARB #define GLEE_C_DEFINED_glWindowPos2fvARB void __stdcall GLee_Lazy_glWindowPos2fvARB(const GLfloat * v) {if (GLeeInit()) glWindowPos2fvARB(v);} GLEEPFNGLWINDOWPOS2FVARBPROC GLeeFuncPtr_glWindowPos2fvARB=GLee_Lazy_glWindowPos2fvARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos2iARB #define GLEE_C_DEFINED_glWindowPos2iARB void __stdcall GLee_Lazy_glWindowPos2iARB(GLint x, GLint y) {if (GLeeInit()) glWindowPos2iARB(x, y);} GLEEPFNGLWINDOWPOS2IARBPROC GLeeFuncPtr_glWindowPos2iARB=GLee_Lazy_glWindowPos2iARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos2ivARB #define GLEE_C_DEFINED_glWindowPos2ivARB void __stdcall GLee_Lazy_glWindowPos2ivARB(const GLint * v) {if (GLeeInit()) glWindowPos2ivARB(v);} GLEEPFNGLWINDOWPOS2IVARBPROC GLeeFuncPtr_glWindowPos2ivARB=GLee_Lazy_glWindowPos2ivARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos2sARB #define GLEE_C_DEFINED_glWindowPos2sARB void __stdcall GLee_Lazy_glWindowPos2sARB(GLshort x, GLshort y) {if (GLeeInit()) glWindowPos2sARB(x, y);} GLEEPFNGLWINDOWPOS2SARBPROC GLeeFuncPtr_glWindowPos2sARB=GLee_Lazy_glWindowPos2sARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos2svARB #define GLEE_C_DEFINED_glWindowPos2svARB void __stdcall GLee_Lazy_glWindowPos2svARB(const GLshort * v) {if (GLeeInit()) glWindowPos2svARB(v);} GLEEPFNGLWINDOWPOS2SVARBPROC GLeeFuncPtr_glWindowPos2svARB=GLee_Lazy_glWindowPos2svARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos3dARB #define GLEE_C_DEFINED_glWindowPos3dARB void __stdcall GLee_Lazy_glWindowPos3dARB(GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glWindowPos3dARB(x, y, z);} GLEEPFNGLWINDOWPOS3DARBPROC GLeeFuncPtr_glWindowPos3dARB=GLee_Lazy_glWindowPos3dARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos3dvARB #define GLEE_C_DEFINED_glWindowPos3dvARB void __stdcall GLee_Lazy_glWindowPos3dvARB(const GLdouble * v) {if (GLeeInit()) glWindowPos3dvARB(v);} GLEEPFNGLWINDOWPOS3DVARBPROC GLeeFuncPtr_glWindowPos3dvARB=GLee_Lazy_glWindowPos3dvARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos3fARB #define GLEE_C_DEFINED_glWindowPos3fARB void __stdcall GLee_Lazy_glWindowPos3fARB(GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glWindowPos3fARB(x, y, z);} GLEEPFNGLWINDOWPOS3FARBPROC GLeeFuncPtr_glWindowPos3fARB=GLee_Lazy_glWindowPos3fARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos3fvARB #define GLEE_C_DEFINED_glWindowPos3fvARB void __stdcall GLee_Lazy_glWindowPos3fvARB(const GLfloat * v) {if (GLeeInit()) glWindowPos3fvARB(v);} GLEEPFNGLWINDOWPOS3FVARBPROC GLeeFuncPtr_glWindowPos3fvARB=GLee_Lazy_glWindowPos3fvARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos3iARB #define GLEE_C_DEFINED_glWindowPos3iARB void __stdcall GLee_Lazy_glWindowPos3iARB(GLint x, GLint y, GLint z) {if (GLeeInit()) glWindowPos3iARB(x, y, z);} GLEEPFNGLWINDOWPOS3IARBPROC GLeeFuncPtr_glWindowPos3iARB=GLee_Lazy_glWindowPos3iARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos3ivARB #define GLEE_C_DEFINED_glWindowPos3ivARB void __stdcall GLee_Lazy_glWindowPos3ivARB(const GLint * v) {if (GLeeInit()) glWindowPos3ivARB(v);} GLEEPFNGLWINDOWPOS3IVARBPROC GLeeFuncPtr_glWindowPos3ivARB=GLee_Lazy_glWindowPos3ivARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos3sARB #define GLEE_C_DEFINED_glWindowPos3sARB void __stdcall GLee_Lazy_glWindowPos3sARB(GLshort x, GLshort y, GLshort z) {if (GLeeInit()) glWindowPos3sARB(x, y, z);} GLEEPFNGLWINDOWPOS3SARBPROC GLeeFuncPtr_glWindowPos3sARB=GLee_Lazy_glWindowPos3sARB; #endif #ifndef GLEE_C_DEFINED_glWindowPos3svARB #define GLEE_C_DEFINED_glWindowPos3svARB void __stdcall GLee_Lazy_glWindowPos3svARB(const GLshort * v) {if (GLeeInit()) glWindowPos3svARB(v);} GLEEPFNGLWINDOWPOS3SVARBPROC GLeeFuncPtr_glWindowPos3svARB=GLee_Lazy_glWindowPos3svARB; #endif #endif /* GL_ARB_vertex_program */ #ifdef __GLEE_GL_ARB_vertex_program #ifndef GLEE_C_DEFINED_glVertexAttrib1dARB #define GLEE_C_DEFINED_glVertexAttrib1dARB void __stdcall GLee_Lazy_glVertexAttrib1dARB(GLuint index, GLdouble x) {if (GLeeInit()) glVertexAttrib1dARB(index, x);} GLEEPFNGLVERTEXATTRIB1DARBPROC GLeeFuncPtr_glVertexAttrib1dARB=GLee_Lazy_glVertexAttrib1dARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1dvARB #define GLEE_C_DEFINED_glVertexAttrib1dvARB void __stdcall GLee_Lazy_glVertexAttrib1dvARB(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib1dvARB(index, v);} GLEEPFNGLVERTEXATTRIB1DVARBPROC GLeeFuncPtr_glVertexAttrib1dvARB=GLee_Lazy_glVertexAttrib1dvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1fARB #define GLEE_C_DEFINED_glVertexAttrib1fARB void __stdcall GLee_Lazy_glVertexAttrib1fARB(GLuint index, GLfloat x) {if (GLeeInit()) glVertexAttrib1fARB(index, x);} GLEEPFNGLVERTEXATTRIB1FARBPROC GLeeFuncPtr_glVertexAttrib1fARB=GLee_Lazy_glVertexAttrib1fARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1fvARB #define GLEE_C_DEFINED_glVertexAttrib1fvARB void __stdcall GLee_Lazy_glVertexAttrib1fvARB(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib1fvARB(index, v);} GLEEPFNGLVERTEXATTRIB1FVARBPROC GLeeFuncPtr_glVertexAttrib1fvARB=GLee_Lazy_glVertexAttrib1fvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1sARB #define GLEE_C_DEFINED_glVertexAttrib1sARB void __stdcall GLee_Lazy_glVertexAttrib1sARB(GLuint index, GLshort x) {if (GLeeInit()) glVertexAttrib1sARB(index, x);} GLEEPFNGLVERTEXATTRIB1SARBPROC GLeeFuncPtr_glVertexAttrib1sARB=GLee_Lazy_glVertexAttrib1sARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1svARB #define GLEE_C_DEFINED_glVertexAttrib1svARB void __stdcall GLee_Lazy_glVertexAttrib1svARB(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib1svARB(index, v);} GLEEPFNGLVERTEXATTRIB1SVARBPROC GLeeFuncPtr_glVertexAttrib1svARB=GLee_Lazy_glVertexAttrib1svARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2dARB #define GLEE_C_DEFINED_glVertexAttrib2dARB void __stdcall GLee_Lazy_glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y) {if (GLeeInit()) glVertexAttrib2dARB(index, x, y);} GLEEPFNGLVERTEXATTRIB2DARBPROC GLeeFuncPtr_glVertexAttrib2dARB=GLee_Lazy_glVertexAttrib2dARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2dvARB #define GLEE_C_DEFINED_glVertexAttrib2dvARB void __stdcall GLee_Lazy_glVertexAttrib2dvARB(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib2dvARB(index, v);} GLEEPFNGLVERTEXATTRIB2DVARBPROC GLeeFuncPtr_glVertexAttrib2dvARB=GLee_Lazy_glVertexAttrib2dvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2fARB #define GLEE_C_DEFINED_glVertexAttrib2fARB void __stdcall GLee_Lazy_glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y) {if (GLeeInit()) glVertexAttrib2fARB(index, x, y);} GLEEPFNGLVERTEXATTRIB2FARBPROC GLeeFuncPtr_glVertexAttrib2fARB=GLee_Lazy_glVertexAttrib2fARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2fvARB #define GLEE_C_DEFINED_glVertexAttrib2fvARB void __stdcall GLee_Lazy_glVertexAttrib2fvARB(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib2fvARB(index, v);} GLEEPFNGLVERTEXATTRIB2FVARBPROC GLeeFuncPtr_glVertexAttrib2fvARB=GLee_Lazy_glVertexAttrib2fvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2sARB #define GLEE_C_DEFINED_glVertexAttrib2sARB void __stdcall GLee_Lazy_glVertexAttrib2sARB(GLuint index, GLshort x, GLshort y) {if (GLeeInit()) glVertexAttrib2sARB(index, x, y);} GLEEPFNGLVERTEXATTRIB2SARBPROC GLeeFuncPtr_glVertexAttrib2sARB=GLee_Lazy_glVertexAttrib2sARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2svARB #define GLEE_C_DEFINED_glVertexAttrib2svARB void __stdcall GLee_Lazy_glVertexAttrib2svARB(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib2svARB(index, v);} GLEEPFNGLVERTEXATTRIB2SVARBPROC GLeeFuncPtr_glVertexAttrib2svARB=GLee_Lazy_glVertexAttrib2svARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3dARB #define GLEE_C_DEFINED_glVertexAttrib3dARB void __stdcall GLee_Lazy_glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glVertexAttrib3dARB(index, x, y, z);} GLEEPFNGLVERTEXATTRIB3DARBPROC GLeeFuncPtr_glVertexAttrib3dARB=GLee_Lazy_glVertexAttrib3dARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3dvARB #define GLEE_C_DEFINED_glVertexAttrib3dvARB void __stdcall GLee_Lazy_glVertexAttrib3dvARB(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib3dvARB(index, v);} GLEEPFNGLVERTEXATTRIB3DVARBPROC GLeeFuncPtr_glVertexAttrib3dvARB=GLee_Lazy_glVertexAttrib3dvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3fARB #define GLEE_C_DEFINED_glVertexAttrib3fARB void __stdcall GLee_Lazy_glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glVertexAttrib3fARB(index, x, y, z);} GLEEPFNGLVERTEXATTRIB3FARBPROC GLeeFuncPtr_glVertexAttrib3fARB=GLee_Lazy_glVertexAttrib3fARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3fvARB #define GLEE_C_DEFINED_glVertexAttrib3fvARB void __stdcall GLee_Lazy_glVertexAttrib3fvARB(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib3fvARB(index, v);} GLEEPFNGLVERTEXATTRIB3FVARBPROC GLeeFuncPtr_glVertexAttrib3fvARB=GLee_Lazy_glVertexAttrib3fvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3sARB #define GLEE_C_DEFINED_glVertexAttrib3sARB void __stdcall GLee_Lazy_glVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z) {if (GLeeInit()) glVertexAttrib3sARB(index, x, y, z);} GLEEPFNGLVERTEXATTRIB3SARBPROC GLeeFuncPtr_glVertexAttrib3sARB=GLee_Lazy_glVertexAttrib3sARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3svARB #define GLEE_C_DEFINED_glVertexAttrib3svARB void __stdcall GLee_Lazy_glVertexAttrib3svARB(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib3svARB(index, v);} GLEEPFNGLVERTEXATTRIB3SVARBPROC GLeeFuncPtr_glVertexAttrib3svARB=GLee_Lazy_glVertexAttrib3svARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4NbvARB #define GLEE_C_DEFINED_glVertexAttrib4NbvARB void __stdcall GLee_Lazy_glVertexAttrib4NbvARB(GLuint index, const GLbyte * v) {if (GLeeInit()) glVertexAttrib4NbvARB(index, v);} GLEEPFNGLVERTEXATTRIB4NBVARBPROC GLeeFuncPtr_glVertexAttrib4NbvARB=GLee_Lazy_glVertexAttrib4NbvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4NivARB #define GLEE_C_DEFINED_glVertexAttrib4NivARB void __stdcall GLee_Lazy_glVertexAttrib4NivARB(GLuint index, const GLint * v) {if (GLeeInit()) glVertexAttrib4NivARB(index, v);} GLEEPFNGLVERTEXATTRIB4NIVARBPROC GLeeFuncPtr_glVertexAttrib4NivARB=GLee_Lazy_glVertexAttrib4NivARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4NsvARB #define GLEE_C_DEFINED_glVertexAttrib4NsvARB void __stdcall GLee_Lazy_glVertexAttrib4NsvARB(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib4NsvARB(index, v);} GLEEPFNGLVERTEXATTRIB4NSVARBPROC GLeeFuncPtr_glVertexAttrib4NsvARB=GLee_Lazy_glVertexAttrib4NsvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4NubARB #define GLEE_C_DEFINED_glVertexAttrib4NubARB void __stdcall GLee_Lazy_glVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) {if (GLeeInit()) glVertexAttrib4NubARB(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4NUBARBPROC GLeeFuncPtr_glVertexAttrib4NubARB=GLee_Lazy_glVertexAttrib4NubARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4NubvARB #define GLEE_C_DEFINED_glVertexAttrib4NubvARB void __stdcall GLee_Lazy_glVertexAttrib4NubvARB(GLuint index, const GLubyte * v) {if (GLeeInit()) glVertexAttrib4NubvARB(index, v);} GLEEPFNGLVERTEXATTRIB4NUBVARBPROC GLeeFuncPtr_glVertexAttrib4NubvARB=GLee_Lazy_glVertexAttrib4NubvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4NuivARB #define GLEE_C_DEFINED_glVertexAttrib4NuivARB void __stdcall GLee_Lazy_glVertexAttrib4NuivARB(GLuint index, const GLuint * v) {if (GLeeInit()) glVertexAttrib4NuivARB(index, v);} GLEEPFNGLVERTEXATTRIB4NUIVARBPROC GLeeFuncPtr_glVertexAttrib4NuivARB=GLee_Lazy_glVertexAttrib4NuivARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4NusvARB #define GLEE_C_DEFINED_glVertexAttrib4NusvARB void __stdcall GLee_Lazy_glVertexAttrib4NusvARB(GLuint index, const GLushort * v) {if (GLeeInit()) glVertexAttrib4NusvARB(index, v);} GLEEPFNGLVERTEXATTRIB4NUSVARBPROC GLeeFuncPtr_glVertexAttrib4NusvARB=GLee_Lazy_glVertexAttrib4NusvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4bvARB #define GLEE_C_DEFINED_glVertexAttrib4bvARB void __stdcall GLee_Lazy_glVertexAttrib4bvARB(GLuint index, const GLbyte * v) {if (GLeeInit()) glVertexAttrib4bvARB(index, v);} GLEEPFNGLVERTEXATTRIB4BVARBPROC GLeeFuncPtr_glVertexAttrib4bvARB=GLee_Lazy_glVertexAttrib4bvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4dARB #define GLEE_C_DEFINED_glVertexAttrib4dARB void __stdcall GLee_Lazy_glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glVertexAttrib4dARB(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4DARBPROC GLeeFuncPtr_glVertexAttrib4dARB=GLee_Lazy_glVertexAttrib4dARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4dvARB #define GLEE_C_DEFINED_glVertexAttrib4dvARB void __stdcall GLee_Lazy_glVertexAttrib4dvARB(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib4dvARB(index, v);} GLEEPFNGLVERTEXATTRIB4DVARBPROC GLeeFuncPtr_glVertexAttrib4dvARB=GLee_Lazy_glVertexAttrib4dvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4fARB #define GLEE_C_DEFINED_glVertexAttrib4fARB void __stdcall GLee_Lazy_glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glVertexAttrib4fARB(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4FARBPROC GLeeFuncPtr_glVertexAttrib4fARB=GLee_Lazy_glVertexAttrib4fARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4fvARB #define GLEE_C_DEFINED_glVertexAttrib4fvARB void __stdcall GLee_Lazy_glVertexAttrib4fvARB(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib4fvARB(index, v);} GLEEPFNGLVERTEXATTRIB4FVARBPROC GLeeFuncPtr_glVertexAttrib4fvARB=GLee_Lazy_glVertexAttrib4fvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4ivARB #define GLEE_C_DEFINED_glVertexAttrib4ivARB void __stdcall GLee_Lazy_glVertexAttrib4ivARB(GLuint index, const GLint * v) {if (GLeeInit()) glVertexAttrib4ivARB(index, v);} GLEEPFNGLVERTEXATTRIB4IVARBPROC GLeeFuncPtr_glVertexAttrib4ivARB=GLee_Lazy_glVertexAttrib4ivARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4sARB #define GLEE_C_DEFINED_glVertexAttrib4sARB void __stdcall GLee_Lazy_glVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) {if (GLeeInit()) glVertexAttrib4sARB(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4SARBPROC GLeeFuncPtr_glVertexAttrib4sARB=GLee_Lazy_glVertexAttrib4sARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4svARB #define GLEE_C_DEFINED_glVertexAttrib4svARB void __stdcall GLee_Lazy_glVertexAttrib4svARB(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib4svARB(index, v);} GLEEPFNGLVERTEXATTRIB4SVARBPROC GLeeFuncPtr_glVertexAttrib4svARB=GLee_Lazy_glVertexAttrib4svARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4ubvARB #define GLEE_C_DEFINED_glVertexAttrib4ubvARB void __stdcall GLee_Lazy_glVertexAttrib4ubvARB(GLuint index, const GLubyte * v) {if (GLeeInit()) glVertexAttrib4ubvARB(index, v);} GLEEPFNGLVERTEXATTRIB4UBVARBPROC GLeeFuncPtr_glVertexAttrib4ubvARB=GLee_Lazy_glVertexAttrib4ubvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4uivARB #define GLEE_C_DEFINED_glVertexAttrib4uivARB void __stdcall GLee_Lazy_glVertexAttrib4uivARB(GLuint index, const GLuint * v) {if (GLeeInit()) glVertexAttrib4uivARB(index, v);} GLEEPFNGLVERTEXATTRIB4UIVARBPROC GLeeFuncPtr_glVertexAttrib4uivARB=GLee_Lazy_glVertexAttrib4uivARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4usvARB #define GLEE_C_DEFINED_glVertexAttrib4usvARB void __stdcall GLee_Lazy_glVertexAttrib4usvARB(GLuint index, const GLushort * v) {if (GLeeInit()) glVertexAttrib4usvARB(index, v);} GLEEPFNGLVERTEXATTRIB4USVARBPROC GLeeFuncPtr_glVertexAttrib4usvARB=GLee_Lazy_glVertexAttrib4usvARB; #endif #ifndef GLEE_C_DEFINED_glVertexAttribPointerARB #define GLEE_C_DEFINED_glVertexAttribPointerARB void __stdcall GLee_Lazy_glVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glVertexAttribPointerARB(index, size, type, normalized, stride, pointer);} GLEEPFNGLVERTEXATTRIBPOINTERARBPROC GLeeFuncPtr_glVertexAttribPointerARB=GLee_Lazy_glVertexAttribPointerARB; #endif #ifndef GLEE_C_DEFINED_glEnableVertexAttribArrayARB #define GLEE_C_DEFINED_glEnableVertexAttribArrayARB void __stdcall GLee_Lazy_glEnableVertexAttribArrayARB(GLuint index) {if (GLeeInit()) glEnableVertexAttribArrayARB(index);} GLEEPFNGLENABLEVERTEXATTRIBARRAYARBPROC GLeeFuncPtr_glEnableVertexAttribArrayARB=GLee_Lazy_glEnableVertexAttribArrayARB; #endif #ifndef GLEE_C_DEFINED_glDisableVertexAttribArrayARB #define GLEE_C_DEFINED_glDisableVertexAttribArrayARB void __stdcall GLee_Lazy_glDisableVertexAttribArrayARB(GLuint index) {if (GLeeInit()) glDisableVertexAttribArrayARB(index);} GLEEPFNGLDISABLEVERTEXATTRIBARRAYARBPROC GLeeFuncPtr_glDisableVertexAttribArrayARB=GLee_Lazy_glDisableVertexAttribArrayARB; #endif #ifndef GLEE_C_DEFINED_glProgramStringARB #define GLEE_C_DEFINED_glProgramStringARB void __stdcall GLee_Lazy_glProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid * string) {if (GLeeInit()) glProgramStringARB(target, format, len, string);} GLEEPFNGLPROGRAMSTRINGARBPROC GLeeFuncPtr_glProgramStringARB=GLee_Lazy_glProgramStringARB; #endif #ifndef GLEE_C_DEFINED_glBindProgramARB #define GLEE_C_DEFINED_glBindProgramARB void __stdcall GLee_Lazy_glBindProgramARB(GLenum target, GLuint program) {if (GLeeInit()) glBindProgramARB(target, program);} GLEEPFNGLBINDPROGRAMARBPROC GLeeFuncPtr_glBindProgramARB=GLee_Lazy_glBindProgramARB; #endif #ifndef GLEE_C_DEFINED_glDeleteProgramsARB #define GLEE_C_DEFINED_glDeleteProgramsARB void __stdcall GLee_Lazy_glDeleteProgramsARB(GLsizei n, const GLuint * programs) {if (GLeeInit()) glDeleteProgramsARB(n, programs);} GLEEPFNGLDELETEPROGRAMSARBPROC GLeeFuncPtr_glDeleteProgramsARB=GLee_Lazy_glDeleteProgramsARB; #endif #ifndef GLEE_C_DEFINED_glGenProgramsARB #define GLEE_C_DEFINED_glGenProgramsARB void __stdcall GLee_Lazy_glGenProgramsARB(GLsizei n, GLuint * programs) {if (GLeeInit()) glGenProgramsARB(n, programs);} GLEEPFNGLGENPROGRAMSARBPROC GLeeFuncPtr_glGenProgramsARB=GLee_Lazy_glGenProgramsARB; #endif #ifndef GLEE_C_DEFINED_glProgramEnvParameter4dARB #define GLEE_C_DEFINED_glProgramEnvParameter4dARB void __stdcall GLee_Lazy_glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glProgramEnvParameter4dARB(target, index, x, y, z, w);} GLEEPFNGLPROGRAMENVPARAMETER4DARBPROC GLeeFuncPtr_glProgramEnvParameter4dARB=GLee_Lazy_glProgramEnvParameter4dARB; #endif #ifndef GLEE_C_DEFINED_glProgramEnvParameter4dvARB #define GLEE_C_DEFINED_glProgramEnvParameter4dvARB void __stdcall GLee_Lazy_glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble * params) {if (GLeeInit()) glProgramEnvParameter4dvARB(target, index, params);} GLEEPFNGLPROGRAMENVPARAMETER4DVARBPROC GLeeFuncPtr_glProgramEnvParameter4dvARB=GLee_Lazy_glProgramEnvParameter4dvARB; #endif #ifndef GLEE_C_DEFINED_glProgramEnvParameter4fARB #define GLEE_C_DEFINED_glProgramEnvParameter4fARB void __stdcall GLee_Lazy_glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glProgramEnvParameter4fARB(target, index, x, y, z, w);} GLEEPFNGLPROGRAMENVPARAMETER4FARBPROC GLeeFuncPtr_glProgramEnvParameter4fARB=GLee_Lazy_glProgramEnvParameter4fARB; #endif #ifndef GLEE_C_DEFINED_glProgramEnvParameter4fvARB #define GLEE_C_DEFINED_glProgramEnvParameter4fvARB void __stdcall GLee_Lazy_glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat * params) {if (GLeeInit()) glProgramEnvParameter4fvARB(target, index, params);} GLEEPFNGLPROGRAMENVPARAMETER4FVARBPROC GLeeFuncPtr_glProgramEnvParameter4fvARB=GLee_Lazy_glProgramEnvParameter4fvARB; #endif #ifndef GLEE_C_DEFINED_glProgramLocalParameter4dARB #define GLEE_C_DEFINED_glProgramLocalParameter4dARB void __stdcall GLee_Lazy_glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glProgramLocalParameter4dARB(target, index, x, y, z, w);} GLEEPFNGLPROGRAMLOCALPARAMETER4DARBPROC GLeeFuncPtr_glProgramLocalParameter4dARB=GLee_Lazy_glProgramLocalParameter4dARB; #endif #ifndef GLEE_C_DEFINED_glProgramLocalParameter4dvARB #define GLEE_C_DEFINED_glProgramLocalParameter4dvARB void __stdcall GLee_Lazy_glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble * params) {if (GLeeInit()) glProgramLocalParameter4dvARB(target, index, params);} GLEEPFNGLPROGRAMLOCALPARAMETER4DVARBPROC GLeeFuncPtr_glProgramLocalParameter4dvARB=GLee_Lazy_glProgramLocalParameter4dvARB; #endif #ifndef GLEE_C_DEFINED_glProgramLocalParameter4fARB #define GLEE_C_DEFINED_glProgramLocalParameter4fARB void __stdcall GLee_Lazy_glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glProgramLocalParameter4fARB(target, index, x, y, z, w);} GLEEPFNGLPROGRAMLOCALPARAMETER4FARBPROC GLeeFuncPtr_glProgramLocalParameter4fARB=GLee_Lazy_glProgramLocalParameter4fARB; #endif #ifndef GLEE_C_DEFINED_glProgramLocalParameter4fvARB #define GLEE_C_DEFINED_glProgramLocalParameter4fvARB void __stdcall GLee_Lazy_glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat * params) {if (GLeeInit()) glProgramLocalParameter4fvARB(target, index, params);} GLEEPFNGLPROGRAMLOCALPARAMETER4FVARBPROC GLeeFuncPtr_glProgramLocalParameter4fvARB=GLee_Lazy_glProgramLocalParameter4fvARB; #endif #ifndef GLEE_C_DEFINED_glGetProgramEnvParameterdvARB #define GLEE_C_DEFINED_glGetProgramEnvParameterdvARB void __stdcall GLee_Lazy_glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble * params) {if (GLeeInit()) glGetProgramEnvParameterdvARB(target, index, params);} GLEEPFNGLGETPROGRAMENVPARAMETERDVARBPROC GLeeFuncPtr_glGetProgramEnvParameterdvARB=GLee_Lazy_glGetProgramEnvParameterdvARB; #endif #ifndef GLEE_C_DEFINED_glGetProgramEnvParameterfvARB #define GLEE_C_DEFINED_glGetProgramEnvParameterfvARB void __stdcall GLee_Lazy_glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat * params) {if (GLeeInit()) glGetProgramEnvParameterfvARB(target, index, params);} GLEEPFNGLGETPROGRAMENVPARAMETERFVARBPROC GLeeFuncPtr_glGetProgramEnvParameterfvARB=GLee_Lazy_glGetProgramEnvParameterfvARB; #endif #ifndef GLEE_C_DEFINED_glGetProgramLocalParameterdvARB #define GLEE_C_DEFINED_glGetProgramLocalParameterdvARB void __stdcall GLee_Lazy_glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble * params) {if (GLeeInit()) glGetProgramLocalParameterdvARB(target, index, params);} GLEEPFNGLGETPROGRAMLOCALPARAMETERDVARBPROC GLeeFuncPtr_glGetProgramLocalParameterdvARB=GLee_Lazy_glGetProgramLocalParameterdvARB; #endif #ifndef GLEE_C_DEFINED_glGetProgramLocalParameterfvARB #define GLEE_C_DEFINED_glGetProgramLocalParameterfvARB void __stdcall GLee_Lazy_glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat * params) {if (GLeeInit()) glGetProgramLocalParameterfvARB(target, index, params);} GLEEPFNGLGETPROGRAMLOCALPARAMETERFVARBPROC GLeeFuncPtr_glGetProgramLocalParameterfvARB=GLee_Lazy_glGetProgramLocalParameterfvARB; #endif #ifndef GLEE_C_DEFINED_glGetProgramivARB #define GLEE_C_DEFINED_glGetProgramivARB void __stdcall GLee_Lazy_glGetProgramivARB(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetProgramivARB(target, pname, params);} GLEEPFNGLGETPROGRAMIVARBPROC GLeeFuncPtr_glGetProgramivARB=GLee_Lazy_glGetProgramivARB; #endif #ifndef GLEE_C_DEFINED_glGetProgramStringARB #define GLEE_C_DEFINED_glGetProgramStringARB void __stdcall GLee_Lazy_glGetProgramStringARB(GLenum target, GLenum pname, GLvoid * string) {if (GLeeInit()) glGetProgramStringARB(target, pname, string);} GLEEPFNGLGETPROGRAMSTRINGARBPROC GLeeFuncPtr_glGetProgramStringARB=GLee_Lazy_glGetProgramStringARB; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribdvARB #define GLEE_C_DEFINED_glGetVertexAttribdvARB void __stdcall GLee_Lazy_glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble * params) {if (GLeeInit()) glGetVertexAttribdvARB(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBDVARBPROC GLeeFuncPtr_glGetVertexAttribdvARB=GLee_Lazy_glGetVertexAttribdvARB; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribfvARB #define GLEE_C_DEFINED_glGetVertexAttribfvARB void __stdcall GLee_Lazy_glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetVertexAttribfvARB(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBFVARBPROC GLeeFuncPtr_glGetVertexAttribfvARB=GLee_Lazy_glGetVertexAttribfvARB; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribivARB #define GLEE_C_DEFINED_glGetVertexAttribivARB void __stdcall GLee_Lazy_glGetVertexAttribivARB(GLuint index, GLenum pname, GLint * params) {if (GLeeInit()) glGetVertexAttribivARB(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBIVARBPROC GLeeFuncPtr_glGetVertexAttribivARB=GLee_Lazy_glGetVertexAttribivARB; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribPointervARB #define GLEE_C_DEFINED_glGetVertexAttribPointervARB void __stdcall GLee_Lazy_glGetVertexAttribPointervARB(GLuint index, GLenum pname, GLvoid* * pointer) {if (GLeeInit()) glGetVertexAttribPointervARB(index, pname, pointer);} GLEEPFNGLGETVERTEXATTRIBPOINTERVARBPROC GLeeFuncPtr_glGetVertexAttribPointervARB=GLee_Lazy_glGetVertexAttribPointervARB; #endif #ifndef GLEE_C_DEFINED_glIsProgramARB #define GLEE_C_DEFINED_glIsProgramARB GLboolean __stdcall GLee_Lazy_glIsProgramARB(GLuint program) {if (GLeeInit()) return glIsProgramARB(program); return (GLboolean)0;} GLEEPFNGLISPROGRAMARBPROC GLeeFuncPtr_glIsProgramARB=GLee_Lazy_glIsProgramARB; #endif #endif /* GL_ARB_fragment_program */ #ifdef __GLEE_GL_ARB_fragment_program #endif /* GL_ARB_vertex_buffer_object */ #ifdef __GLEE_GL_ARB_vertex_buffer_object #ifndef GLEE_C_DEFINED_glBindBufferARB #define GLEE_C_DEFINED_glBindBufferARB void __stdcall GLee_Lazy_glBindBufferARB(GLenum target, GLuint buffer) {if (GLeeInit()) glBindBufferARB(target, buffer);} GLEEPFNGLBINDBUFFERARBPROC GLeeFuncPtr_glBindBufferARB=GLee_Lazy_glBindBufferARB; #endif #ifndef GLEE_C_DEFINED_glDeleteBuffersARB #define GLEE_C_DEFINED_glDeleteBuffersARB void __stdcall GLee_Lazy_glDeleteBuffersARB(GLsizei n, const GLuint * buffers) {if (GLeeInit()) glDeleteBuffersARB(n, buffers);} GLEEPFNGLDELETEBUFFERSARBPROC GLeeFuncPtr_glDeleteBuffersARB=GLee_Lazy_glDeleteBuffersARB; #endif #ifndef GLEE_C_DEFINED_glGenBuffersARB #define GLEE_C_DEFINED_glGenBuffersARB void __stdcall GLee_Lazy_glGenBuffersARB(GLsizei n, GLuint * buffers) {if (GLeeInit()) glGenBuffersARB(n, buffers);} GLEEPFNGLGENBUFFERSARBPROC GLeeFuncPtr_glGenBuffersARB=GLee_Lazy_glGenBuffersARB; #endif #ifndef GLEE_C_DEFINED_glIsBufferARB #define GLEE_C_DEFINED_glIsBufferARB GLboolean __stdcall GLee_Lazy_glIsBufferARB(GLuint buffer) {if (GLeeInit()) return glIsBufferARB(buffer); return (GLboolean)0;} GLEEPFNGLISBUFFERARBPROC GLeeFuncPtr_glIsBufferARB=GLee_Lazy_glIsBufferARB; #endif #ifndef GLEE_C_DEFINED_glBufferDataARB #define GLEE_C_DEFINED_glBufferDataARB void __stdcall GLee_Lazy_glBufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage) {if (GLeeInit()) glBufferDataARB(target, size, data, usage);} GLEEPFNGLBUFFERDATAARBPROC GLeeFuncPtr_glBufferDataARB=GLee_Lazy_glBufferDataARB; #endif #ifndef GLEE_C_DEFINED_glBufferSubDataARB #define GLEE_C_DEFINED_glBufferSubDataARB void __stdcall GLee_Lazy_glBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data) {if (GLeeInit()) glBufferSubDataARB(target, offset, size, data);} GLEEPFNGLBUFFERSUBDATAARBPROC GLeeFuncPtr_glBufferSubDataARB=GLee_Lazy_glBufferSubDataARB; #endif #ifndef GLEE_C_DEFINED_glGetBufferSubDataARB #define GLEE_C_DEFINED_glGetBufferSubDataARB void __stdcall GLee_Lazy_glGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data) {if (GLeeInit()) glGetBufferSubDataARB(target, offset, size, data);} GLEEPFNGLGETBUFFERSUBDATAARBPROC GLeeFuncPtr_glGetBufferSubDataARB=GLee_Lazy_glGetBufferSubDataARB; #endif #ifndef GLEE_C_DEFINED_glMapBufferARB #define GLEE_C_DEFINED_glMapBufferARB GLvoid* __stdcall GLee_Lazy_glMapBufferARB(GLenum target, GLenum access) {if (GLeeInit()) return glMapBufferARB(target, access); return (GLvoid*)0;} GLEEPFNGLMAPBUFFERARBPROC GLeeFuncPtr_glMapBufferARB=GLee_Lazy_glMapBufferARB; #endif #ifndef GLEE_C_DEFINED_glUnmapBufferARB #define GLEE_C_DEFINED_glUnmapBufferARB GLboolean __stdcall GLee_Lazy_glUnmapBufferARB(GLenum target) {if (GLeeInit()) return glUnmapBufferARB(target); return (GLboolean)0;} GLEEPFNGLUNMAPBUFFERARBPROC GLeeFuncPtr_glUnmapBufferARB=GLee_Lazy_glUnmapBufferARB; #endif #ifndef GLEE_C_DEFINED_glGetBufferParameterivARB #define GLEE_C_DEFINED_glGetBufferParameterivARB void __stdcall GLee_Lazy_glGetBufferParameterivARB(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetBufferParameterivARB(target, pname, params);} GLEEPFNGLGETBUFFERPARAMETERIVARBPROC GLeeFuncPtr_glGetBufferParameterivARB=GLee_Lazy_glGetBufferParameterivARB; #endif #ifndef GLEE_C_DEFINED_glGetBufferPointervARB #define GLEE_C_DEFINED_glGetBufferPointervARB void __stdcall GLee_Lazy_glGetBufferPointervARB(GLenum target, GLenum pname, GLvoid* * params) {if (GLeeInit()) glGetBufferPointervARB(target, pname, params);} GLEEPFNGLGETBUFFERPOINTERVARBPROC GLeeFuncPtr_glGetBufferPointervARB=GLee_Lazy_glGetBufferPointervARB; #endif #endif /* GL_ARB_occlusion_query */ #ifdef __GLEE_GL_ARB_occlusion_query #ifndef GLEE_C_DEFINED_glGenQueriesARB #define GLEE_C_DEFINED_glGenQueriesARB void __stdcall GLee_Lazy_glGenQueriesARB(GLsizei n, GLuint * ids) {if (GLeeInit()) glGenQueriesARB(n, ids);} GLEEPFNGLGENQUERIESARBPROC GLeeFuncPtr_glGenQueriesARB=GLee_Lazy_glGenQueriesARB; #endif #ifndef GLEE_C_DEFINED_glDeleteQueriesARB #define GLEE_C_DEFINED_glDeleteQueriesARB void __stdcall GLee_Lazy_glDeleteQueriesARB(GLsizei n, const GLuint * ids) {if (GLeeInit()) glDeleteQueriesARB(n, ids);} GLEEPFNGLDELETEQUERIESARBPROC GLeeFuncPtr_glDeleteQueriesARB=GLee_Lazy_glDeleteQueriesARB; #endif #ifndef GLEE_C_DEFINED_glIsQueryARB #define GLEE_C_DEFINED_glIsQueryARB GLboolean __stdcall GLee_Lazy_glIsQueryARB(GLuint id) {if (GLeeInit()) return glIsQueryARB(id); return (GLboolean)0;} GLEEPFNGLISQUERYARBPROC GLeeFuncPtr_glIsQueryARB=GLee_Lazy_glIsQueryARB; #endif #ifndef GLEE_C_DEFINED_glBeginQueryARB #define GLEE_C_DEFINED_glBeginQueryARB void __stdcall GLee_Lazy_glBeginQueryARB(GLenum target, GLuint id) {if (GLeeInit()) glBeginQueryARB(target, id);} GLEEPFNGLBEGINQUERYARBPROC GLeeFuncPtr_glBeginQueryARB=GLee_Lazy_glBeginQueryARB; #endif #ifndef GLEE_C_DEFINED_glEndQueryARB #define GLEE_C_DEFINED_glEndQueryARB void __stdcall GLee_Lazy_glEndQueryARB(GLenum target) {if (GLeeInit()) glEndQueryARB(target);} GLEEPFNGLENDQUERYARBPROC GLeeFuncPtr_glEndQueryARB=GLee_Lazy_glEndQueryARB; #endif #ifndef GLEE_C_DEFINED_glGetQueryivARB #define GLEE_C_DEFINED_glGetQueryivARB void __stdcall GLee_Lazy_glGetQueryivARB(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetQueryivARB(target, pname, params);} GLEEPFNGLGETQUERYIVARBPROC GLeeFuncPtr_glGetQueryivARB=GLee_Lazy_glGetQueryivARB; #endif #ifndef GLEE_C_DEFINED_glGetQueryObjectivARB #define GLEE_C_DEFINED_glGetQueryObjectivARB void __stdcall GLee_Lazy_glGetQueryObjectivARB(GLuint id, GLenum pname, GLint * params) {if (GLeeInit()) glGetQueryObjectivARB(id, pname, params);} GLEEPFNGLGETQUERYOBJECTIVARBPROC GLeeFuncPtr_glGetQueryObjectivARB=GLee_Lazy_glGetQueryObjectivARB; #endif #ifndef GLEE_C_DEFINED_glGetQueryObjectuivARB #define GLEE_C_DEFINED_glGetQueryObjectuivARB void __stdcall GLee_Lazy_glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint * params) {if (GLeeInit()) glGetQueryObjectuivARB(id, pname, params);} GLEEPFNGLGETQUERYOBJECTUIVARBPROC GLeeFuncPtr_glGetQueryObjectuivARB=GLee_Lazy_glGetQueryObjectuivARB; #endif #endif /* GL_ARB_shader_objects */ #ifdef __GLEE_GL_ARB_shader_objects #ifndef GLEE_C_DEFINED_glDeleteObjectARB #define GLEE_C_DEFINED_glDeleteObjectARB void __stdcall GLee_Lazy_glDeleteObjectARB(GLhandleARB obj) {if (GLeeInit()) glDeleteObjectARB(obj);} GLEEPFNGLDELETEOBJECTARBPROC GLeeFuncPtr_glDeleteObjectARB=GLee_Lazy_glDeleteObjectARB; #endif #ifndef GLEE_C_DEFINED_glGetHandleARB #define GLEE_C_DEFINED_glGetHandleARB GLhandleARB __stdcall GLee_Lazy_glGetHandleARB(GLenum pname) {if (GLeeInit()) return glGetHandleARB(pname); return (GLhandleARB)0;} GLEEPFNGLGETHANDLEARBPROC GLeeFuncPtr_glGetHandleARB=GLee_Lazy_glGetHandleARB; #endif #ifndef GLEE_C_DEFINED_glDetachObjectARB #define GLEE_C_DEFINED_glDetachObjectARB void __stdcall GLee_Lazy_glDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj) {if (GLeeInit()) glDetachObjectARB(containerObj, attachedObj);} GLEEPFNGLDETACHOBJECTARBPROC GLeeFuncPtr_glDetachObjectARB=GLee_Lazy_glDetachObjectARB; #endif #ifndef GLEE_C_DEFINED_glCreateShaderObjectARB #define GLEE_C_DEFINED_glCreateShaderObjectARB GLhandleARB __stdcall GLee_Lazy_glCreateShaderObjectARB(GLenum shaderType) {if (GLeeInit()) return glCreateShaderObjectARB(shaderType); return (GLhandleARB)0;} GLEEPFNGLCREATESHADEROBJECTARBPROC GLeeFuncPtr_glCreateShaderObjectARB=GLee_Lazy_glCreateShaderObjectARB; #endif #ifndef GLEE_C_DEFINED_glShaderSourceARB #define GLEE_C_DEFINED_glShaderSourceARB void __stdcall GLee_Lazy_glShaderSourceARB(GLhandleARB shaderObj, GLsizei count, const GLcharARB* * string, const GLint * length) {if (GLeeInit()) glShaderSourceARB(shaderObj, count, string, length);} GLEEPFNGLSHADERSOURCEARBPROC GLeeFuncPtr_glShaderSourceARB=GLee_Lazy_glShaderSourceARB; #endif #ifndef GLEE_C_DEFINED_glCompileShaderARB #define GLEE_C_DEFINED_glCompileShaderARB void __stdcall GLee_Lazy_glCompileShaderARB(GLhandleARB shaderObj) {if (GLeeInit()) glCompileShaderARB(shaderObj);} GLEEPFNGLCOMPILESHADERARBPROC GLeeFuncPtr_glCompileShaderARB=GLee_Lazy_glCompileShaderARB; #endif #ifndef GLEE_C_DEFINED_glCreateProgramObjectARB #define GLEE_C_DEFINED_glCreateProgramObjectARB GLhandleARB __stdcall GLee_Lazy_glCreateProgramObjectARB(void) {if (GLeeInit()) return glCreateProgramObjectARB(); return (GLhandleARB)0;} GLEEPFNGLCREATEPROGRAMOBJECTARBPROC GLeeFuncPtr_glCreateProgramObjectARB=GLee_Lazy_glCreateProgramObjectARB; #endif #ifndef GLEE_C_DEFINED_glAttachObjectARB #define GLEE_C_DEFINED_glAttachObjectARB void __stdcall GLee_Lazy_glAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj) {if (GLeeInit()) glAttachObjectARB(containerObj, obj);} GLEEPFNGLATTACHOBJECTARBPROC GLeeFuncPtr_glAttachObjectARB=GLee_Lazy_glAttachObjectARB; #endif #ifndef GLEE_C_DEFINED_glLinkProgramARB #define GLEE_C_DEFINED_glLinkProgramARB void __stdcall GLee_Lazy_glLinkProgramARB(GLhandleARB programObj) {if (GLeeInit()) glLinkProgramARB(programObj);} GLEEPFNGLLINKPROGRAMARBPROC GLeeFuncPtr_glLinkProgramARB=GLee_Lazy_glLinkProgramARB; #endif #ifndef GLEE_C_DEFINED_glUseProgramObjectARB #define GLEE_C_DEFINED_glUseProgramObjectARB void __stdcall GLee_Lazy_glUseProgramObjectARB(GLhandleARB programObj) {if (GLeeInit()) glUseProgramObjectARB(programObj);} GLEEPFNGLUSEPROGRAMOBJECTARBPROC GLeeFuncPtr_glUseProgramObjectARB=GLee_Lazy_glUseProgramObjectARB; #endif #ifndef GLEE_C_DEFINED_glValidateProgramARB #define GLEE_C_DEFINED_glValidateProgramARB void __stdcall GLee_Lazy_glValidateProgramARB(GLhandleARB programObj) {if (GLeeInit()) glValidateProgramARB(programObj);} GLEEPFNGLVALIDATEPROGRAMARBPROC GLeeFuncPtr_glValidateProgramARB=GLee_Lazy_glValidateProgramARB; #endif #ifndef GLEE_C_DEFINED_glUniform1fARB #define GLEE_C_DEFINED_glUniform1fARB void __stdcall GLee_Lazy_glUniform1fARB(GLint location, GLfloat v0) {if (GLeeInit()) glUniform1fARB(location, v0);} GLEEPFNGLUNIFORM1FARBPROC GLeeFuncPtr_glUniform1fARB=GLee_Lazy_glUniform1fARB; #endif #ifndef GLEE_C_DEFINED_glUniform2fARB #define GLEE_C_DEFINED_glUniform2fARB void __stdcall GLee_Lazy_glUniform2fARB(GLint location, GLfloat v0, GLfloat v1) {if (GLeeInit()) glUniform2fARB(location, v0, v1);} GLEEPFNGLUNIFORM2FARBPROC GLeeFuncPtr_glUniform2fARB=GLee_Lazy_glUniform2fARB; #endif #ifndef GLEE_C_DEFINED_glUniform3fARB #define GLEE_C_DEFINED_glUniform3fARB void __stdcall GLee_Lazy_glUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {if (GLeeInit()) glUniform3fARB(location, v0, v1, v2);} GLEEPFNGLUNIFORM3FARBPROC GLeeFuncPtr_glUniform3fARB=GLee_Lazy_glUniform3fARB; #endif #ifndef GLEE_C_DEFINED_glUniform4fARB #define GLEE_C_DEFINED_glUniform4fARB void __stdcall GLee_Lazy_glUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {if (GLeeInit()) glUniform4fARB(location, v0, v1, v2, v3);} GLEEPFNGLUNIFORM4FARBPROC GLeeFuncPtr_glUniform4fARB=GLee_Lazy_glUniform4fARB; #endif #ifndef GLEE_C_DEFINED_glUniform1iARB #define GLEE_C_DEFINED_glUniform1iARB void __stdcall GLee_Lazy_glUniform1iARB(GLint location, GLint v0) {if (GLeeInit()) glUniform1iARB(location, v0);} GLEEPFNGLUNIFORM1IARBPROC GLeeFuncPtr_glUniform1iARB=GLee_Lazy_glUniform1iARB; #endif #ifndef GLEE_C_DEFINED_glUniform2iARB #define GLEE_C_DEFINED_glUniform2iARB void __stdcall GLee_Lazy_glUniform2iARB(GLint location, GLint v0, GLint v1) {if (GLeeInit()) glUniform2iARB(location, v0, v1);} GLEEPFNGLUNIFORM2IARBPROC GLeeFuncPtr_glUniform2iARB=GLee_Lazy_glUniform2iARB; #endif #ifndef GLEE_C_DEFINED_glUniform3iARB #define GLEE_C_DEFINED_glUniform3iARB void __stdcall GLee_Lazy_glUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2) {if (GLeeInit()) glUniform3iARB(location, v0, v1, v2);} GLEEPFNGLUNIFORM3IARBPROC GLeeFuncPtr_glUniform3iARB=GLee_Lazy_glUniform3iARB; #endif #ifndef GLEE_C_DEFINED_glUniform4iARB #define GLEE_C_DEFINED_glUniform4iARB void __stdcall GLee_Lazy_glUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {if (GLeeInit()) glUniform4iARB(location, v0, v1, v2, v3);} GLEEPFNGLUNIFORM4IARBPROC GLeeFuncPtr_glUniform4iARB=GLee_Lazy_glUniform4iARB; #endif #ifndef GLEE_C_DEFINED_glUniform1fvARB #define GLEE_C_DEFINED_glUniform1fvARB void __stdcall GLee_Lazy_glUniform1fvARB(GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glUniform1fvARB(location, count, value);} GLEEPFNGLUNIFORM1FVARBPROC GLeeFuncPtr_glUniform1fvARB=GLee_Lazy_glUniform1fvARB; #endif #ifndef GLEE_C_DEFINED_glUniform2fvARB #define GLEE_C_DEFINED_glUniform2fvARB void __stdcall GLee_Lazy_glUniform2fvARB(GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glUniform2fvARB(location, count, value);} GLEEPFNGLUNIFORM2FVARBPROC GLeeFuncPtr_glUniform2fvARB=GLee_Lazy_glUniform2fvARB; #endif #ifndef GLEE_C_DEFINED_glUniform3fvARB #define GLEE_C_DEFINED_glUniform3fvARB void __stdcall GLee_Lazy_glUniform3fvARB(GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glUniform3fvARB(location, count, value);} GLEEPFNGLUNIFORM3FVARBPROC GLeeFuncPtr_glUniform3fvARB=GLee_Lazy_glUniform3fvARB; #endif #ifndef GLEE_C_DEFINED_glUniform4fvARB #define GLEE_C_DEFINED_glUniform4fvARB void __stdcall GLee_Lazy_glUniform4fvARB(GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glUniform4fvARB(location, count, value);} GLEEPFNGLUNIFORM4FVARBPROC GLeeFuncPtr_glUniform4fvARB=GLee_Lazy_glUniform4fvARB; #endif #ifndef GLEE_C_DEFINED_glUniform1ivARB #define GLEE_C_DEFINED_glUniform1ivARB void __stdcall GLee_Lazy_glUniform1ivARB(GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glUniform1ivARB(location, count, value);} GLEEPFNGLUNIFORM1IVARBPROC GLeeFuncPtr_glUniform1ivARB=GLee_Lazy_glUniform1ivARB; #endif #ifndef GLEE_C_DEFINED_glUniform2ivARB #define GLEE_C_DEFINED_glUniform2ivARB void __stdcall GLee_Lazy_glUniform2ivARB(GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glUniform2ivARB(location, count, value);} GLEEPFNGLUNIFORM2IVARBPROC GLeeFuncPtr_glUniform2ivARB=GLee_Lazy_glUniform2ivARB; #endif #ifndef GLEE_C_DEFINED_glUniform3ivARB #define GLEE_C_DEFINED_glUniform3ivARB void __stdcall GLee_Lazy_glUniform3ivARB(GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glUniform3ivARB(location, count, value);} GLEEPFNGLUNIFORM3IVARBPROC GLeeFuncPtr_glUniform3ivARB=GLee_Lazy_glUniform3ivARB; #endif #ifndef GLEE_C_DEFINED_glUniform4ivARB #define GLEE_C_DEFINED_glUniform4ivARB void __stdcall GLee_Lazy_glUniform4ivARB(GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glUniform4ivARB(location, count, value);} GLEEPFNGLUNIFORM4IVARBPROC GLeeFuncPtr_glUniform4ivARB=GLee_Lazy_glUniform4ivARB; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix2fvARB #define GLEE_C_DEFINED_glUniformMatrix2fvARB void __stdcall GLee_Lazy_glUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix2fvARB(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX2FVARBPROC GLeeFuncPtr_glUniformMatrix2fvARB=GLee_Lazy_glUniformMatrix2fvARB; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix3fvARB #define GLEE_C_DEFINED_glUniformMatrix3fvARB void __stdcall GLee_Lazy_glUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix3fvARB(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX3FVARBPROC GLeeFuncPtr_glUniformMatrix3fvARB=GLee_Lazy_glUniformMatrix3fvARB; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix4fvARB #define GLEE_C_DEFINED_glUniformMatrix4fvARB void __stdcall GLee_Lazy_glUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glUniformMatrix4fvARB(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX4FVARBPROC GLeeFuncPtr_glUniformMatrix4fvARB=GLee_Lazy_glUniformMatrix4fvARB; #endif #ifndef GLEE_C_DEFINED_glGetObjectParameterfvARB #define GLEE_C_DEFINED_glGetObjectParameterfvARB void __stdcall GLee_Lazy_glGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetObjectParameterfvARB(obj, pname, params);} GLEEPFNGLGETOBJECTPARAMETERFVARBPROC GLeeFuncPtr_glGetObjectParameterfvARB=GLee_Lazy_glGetObjectParameterfvARB; #endif #ifndef GLEE_C_DEFINED_glGetObjectParameterivARB #define GLEE_C_DEFINED_glGetObjectParameterivARB void __stdcall GLee_Lazy_glGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint * params) {if (GLeeInit()) glGetObjectParameterivARB(obj, pname, params);} GLEEPFNGLGETOBJECTPARAMETERIVARBPROC GLeeFuncPtr_glGetObjectParameterivARB=GLee_Lazy_glGetObjectParameterivARB; #endif #ifndef GLEE_C_DEFINED_glGetInfoLogARB #define GLEE_C_DEFINED_glGetInfoLogARB void __stdcall GLee_Lazy_glGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog) {if (GLeeInit()) glGetInfoLogARB(obj, maxLength, length, infoLog);} GLEEPFNGLGETINFOLOGARBPROC GLeeFuncPtr_glGetInfoLogARB=GLee_Lazy_glGetInfoLogARB; #endif #ifndef GLEE_C_DEFINED_glGetAttachedObjectsARB #define GLEE_C_DEFINED_glGetAttachedObjectsARB void __stdcall GLee_Lazy_glGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxCount, GLsizei * count, GLhandleARB * obj) {if (GLeeInit()) glGetAttachedObjectsARB(containerObj, maxCount, count, obj);} GLEEPFNGLGETATTACHEDOBJECTSARBPROC GLeeFuncPtr_glGetAttachedObjectsARB=GLee_Lazy_glGetAttachedObjectsARB; #endif #ifndef GLEE_C_DEFINED_glGetUniformLocationARB #define GLEE_C_DEFINED_glGetUniformLocationARB GLint __stdcall GLee_Lazy_glGetUniformLocationARB(GLhandleARB programObj, const GLcharARB * name) {if (GLeeInit()) return glGetUniformLocationARB(programObj, name); return (GLint)0;} GLEEPFNGLGETUNIFORMLOCATIONARBPROC GLeeFuncPtr_glGetUniformLocationARB=GLee_Lazy_glGetUniformLocationARB; #endif #ifndef GLEE_C_DEFINED_glGetActiveUniformARB #define GLEE_C_DEFINED_glGetActiveUniformARB void __stdcall GLee_Lazy_glGetActiveUniformARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name) {if (GLeeInit()) glGetActiveUniformARB(programObj, index, maxLength, length, size, type, name);} GLEEPFNGLGETACTIVEUNIFORMARBPROC GLeeFuncPtr_glGetActiveUniformARB=GLee_Lazy_glGetActiveUniformARB; #endif #ifndef GLEE_C_DEFINED_glGetUniformfvARB #define GLEE_C_DEFINED_glGetUniformfvARB void __stdcall GLee_Lazy_glGetUniformfvARB(GLhandleARB programObj, GLint location, GLfloat * params) {if (GLeeInit()) glGetUniformfvARB(programObj, location, params);} GLEEPFNGLGETUNIFORMFVARBPROC GLeeFuncPtr_glGetUniformfvARB=GLee_Lazy_glGetUniformfvARB; #endif #ifndef GLEE_C_DEFINED_glGetUniformivARB #define GLEE_C_DEFINED_glGetUniformivARB void __stdcall GLee_Lazy_glGetUniformivARB(GLhandleARB programObj, GLint location, GLint * params) {if (GLeeInit()) glGetUniformivARB(programObj, location, params);} GLEEPFNGLGETUNIFORMIVARBPROC GLeeFuncPtr_glGetUniformivARB=GLee_Lazy_glGetUniformivARB; #endif #ifndef GLEE_C_DEFINED_glGetShaderSourceARB #define GLEE_C_DEFINED_glGetShaderSourceARB void __stdcall GLee_Lazy_glGetShaderSourceARB(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source) {if (GLeeInit()) glGetShaderSourceARB(obj, maxLength, length, source);} GLEEPFNGLGETSHADERSOURCEARBPROC GLeeFuncPtr_glGetShaderSourceARB=GLee_Lazy_glGetShaderSourceARB; #endif #endif /* GL_ARB_vertex_shader */ #ifdef __GLEE_GL_ARB_vertex_shader #ifndef GLEE_C_DEFINED_glBindAttribLocationARB #define GLEE_C_DEFINED_glBindAttribLocationARB void __stdcall GLee_Lazy_glBindAttribLocationARB(GLhandleARB programObj, GLuint index, const GLcharARB * name) {if (GLeeInit()) glBindAttribLocationARB(programObj, index, name);} GLEEPFNGLBINDATTRIBLOCATIONARBPROC GLeeFuncPtr_glBindAttribLocationARB=GLee_Lazy_glBindAttribLocationARB; #endif #ifndef GLEE_C_DEFINED_glGetActiveAttribARB #define GLEE_C_DEFINED_glGetActiveAttribARB void __stdcall GLee_Lazy_glGetActiveAttribARB(GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name) {if (GLeeInit()) glGetActiveAttribARB(programObj, index, maxLength, length, size, type, name);} GLEEPFNGLGETACTIVEATTRIBARBPROC GLeeFuncPtr_glGetActiveAttribARB=GLee_Lazy_glGetActiveAttribARB; #endif #ifndef GLEE_C_DEFINED_glGetAttribLocationARB #define GLEE_C_DEFINED_glGetAttribLocationARB GLint __stdcall GLee_Lazy_glGetAttribLocationARB(GLhandleARB programObj, const GLcharARB * name) {if (GLeeInit()) return glGetAttribLocationARB(programObj, name); return (GLint)0;} GLEEPFNGLGETATTRIBLOCATIONARBPROC GLeeFuncPtr_glGetAttribLocationARB=GLee_Lazy_glGetAttribLocationARB; #endif #endif /* GL_ARB_fragment_shader */ #ifdef __GLEE_GL_ARB_fragment_shader #endif /* GL_ARB_shading_language_100 */ #ifdef __GLEE_GL_ARB_shading_language_100 #endif /* GL_ARB_texture_non_power_of_two */ #ifdef __GLEE_GL_ARB_texture_non_power_of_two #endif /* GL_ARB_point_sprite */ #ifdef __GLEE_GL_ARB_point_sprite #endif /* GL_ARB_fragment_program_shadow */ #ifdef __GLEE_GL_ARB_fragment_program_shadow #endif /* GL_ARB_draw_buffers */ #ifdef __GLEE_GL_ARB_draw_buffers #ifndef GLEE_C_DEFINED_glDrawBuffersARB #define GLEE_C_DEFINED_glDrawBuffersARB void __stdcall GLee_Lazy_glDrawBuffersARB(GLsizei n, const GLenum * bufs) {if (GLeeInit()) glDrawBuffersARB(n, bufs);} GLEEPFNGLDRAWBUFFERSARBPROC GLeeFuncPtr_glDrawBuffersARB=GLee_Lazy_glDrawBuffersARB; #endif #endif /* GL_ARB_texture_rectangle */ #ifdef __GLEE_GL_ARB_texture_rectangle #endif /* GL_ARB_color_buffer_float */ #ifdef __GLEE_GL_ARB_color_buffer_float #ifndef GLEE_C_DEFINED_glClampColorARB #define GLEE_C_DEFINED_glClampColorARB void __stdcall GLee_Lazy_glClampColorARB(GLenum target, GLenum clamp) {if (GLeeInit()) glClampColorARB(target, clamp);} GLEEPFNGLCLAMPCOLORARBPROC GLeeFuncPtr_glClampColorARB=GLee_Lazy_glClampColorARB; #endif #endif /* GL_ARB_half_float_pixel */ #ifdef __GLEE_GL_ARB_half_float_pixel #endif /* GL_ARB_texture_float */ #ifdef __GLEE_GL_ARB_texture_float #endif /* GL_ARB_pixel_buffer_object */ #ifdef __GLEE_GL_ARB_pixel_buffer_object #endif /* GL_ARB_depth_buffer_float */ #ifdef __GLEE_GL_ARB_depth_buffer_float #endif /* GL_ARB_draw_instanced */ #ifdef __GLEE_GL_ARB_draw_instanced #ifndef GLEE_C_DEFINED_glDrawArraysInstancedARB #define GLEE_C_DEFINED_glDrawArraysInstancedARB void __stdcall GLee_Lazy_glDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei primcount) {if (GLeeInit()) glDrawArraysInstancedARB(mode, first, count, primcount);} GLEEPFNGLDRAWARRAYSINSTANCEDARBPROC GLeeFuncPtr_glDrawArraysInstancedARB=GLee_Lazy_glDrawArraysInstancedARB; #endif #ifndef GLEE_C_DEFINED_glDrawElementsInstancedARB #define GLEE_C_DEFINED_glDrawElementsInstancedARB void __stdcall GLee_Lazy_glDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount) {if (GLeeInit()) glDrawElementsInstancedARB(mode, count, type, indices, primcount);} GLEEPFNGLDRAWELEMENTSINSTANCEDARBPROC GLeeFuncPtr_glDrawElementsInstancedARB=GLee_Lazy_glDrawElementsInstancedARB; #endif #endif /* GL_ARB_framebuffer_object */ #ifdef __GLEE_GL_ARB_framebuffer_object #ifndef GLEE_C_DEFINED_glIsRenderbuffer #define GLEE_C_DEFINED_glIsRenderbuffer GLboolean __stdcall GLee_Lazy_glIsRenderbuffer(GLuint renderbuffer) {if (GLeeInit()) return glIsRenderbuffer(renderbuffer); return (GLboolean)0;} GLEEPFNGLISRENDERBUFFERPROC GLeeFuncPtr_glIsRenderbuffer=GLee_Lazy_glIsRenderbuffer; #endif #ifndef GLEE_C_DEFINED_glBindRenderbuffer #define GLEE_C_DEFINED_glBindRenderbuffer void __stdcall GLee_Lazy_glBindRenderbuffer(GLenum target, GLuint renderbuffer) {if (GLeeInit()) glBindRenderbuffer(target, renderbuffer);} GLEEPFNGLBINDRENDERBUFFERPROC GLeeFuncPtr_glBindRenderbuffer=GLee_Lazy_glBindRenderbuffer; #endif #ifndef GLEE_C_DEFINED_glDeleteRenderbuffers #define GLEE_C_DEFINED_glDeleteRenderbuffers void __stdcall GLee_Lazy_glDeleteRenderbuffers(GLsizei n, const GLuint * renderbuffers) {if (GLeeInit()) glDeleteRenderbuffers(n, renderbuffers);} GLEEPFNGLDELETERENDERBUFFERSPROC GLeeFuncPtr_glDeleteRenderbuffers=GLee_Lazy_glDeleteRenderbuffers; #endif #ifndef GLEE_C_DEFINED_glGenRenderbuffers #define GLEE_C_DEFINED_glGenRenderbuffers void __stdcall GLee_Lazy_glGenRenderbuffers(GLsizei n, GLuint * renderbuffers) {if (GLeeInit()) glGenRenderbuffers(n, renderbuffers);} GLEEPFNGLGENRENDERBUFFERSPROC GLeeFuncPtr_glGenRenderbuffers=GLee_Lazy_glGenRenderbuffers; #endif #ifndef GLEE_C_DEFINED_glRenderbufferStorage #define GLEE_C_DEFINED_glRenderbufferStorage void __stdcall GLee_Lazy_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {if (GLeeInit()) glRenderbufferStorage(target, internalformat, width, height);} GLEEPFNGLRENDERBUFFERSTORAGEPROC GLeeFuncPtr_glRenderbufferStorage=GLee_Lazy_glRenderbufferStorage; #endif #ifndef GLEE_C_DEFINED_glGetRenderbufferParameteriv #define GLEE_C_DEFINED_glGetRenderbufferParameteriv void __stdcall GLee_Lazy_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetRenderbufferParameteriv(target, pname, params);} GLEEPFNGLGETRENDERBUFFERPARAMETERIVPROC GLeeFuncPtr_glGetRenderbufferParameteriv=GLee_Lazy_glGetRenderbufferParameteriv; #endif #ifndef GLEE_C_DEFINED_glIsFramebuffer #define GLEE_C_DEFINED_glIsFramebuffer GLboolean __stdcall GLee_Lazy_glIsFramebuffer(GLuint framebuffer) {if (GLeeInit()) return glIsFramebuffer(framebuffer); return (GLboolean)0;} GLEEPFNGLISFRAMEBUFFERPROC GLeeFuncPtr_glIsFramebuffer=GLee_Lazy_glIsFramebuffer; #endif #ifndef GLEE_C_DEFINED_glBindFramebuffer #define GLEE_C_DEFINED_glBindFramebuffer void __stdcall GLee_Lazy_glBindFramebuffer(GLenum target, GLuint framebuffer) {if (GLeeInit()) glBindFramebuffer(target, framebuffer);} GLEEPFNGLBINDFRAMEBUFFERPROC GLeeFuncPtr_glBindFramebuffer=GLee_Lazy_glBindFramebuffer; #endif #ifndef GLEE_C_DEFINED_glDeleteFramebuffers #define GLEE_C_DEFINED_glDeleteFramebuffers void __stdcall GLee_Lazy_glDeleteFramebuffers(GLsizei n, const GLuint * framebuffers) {if (GLeeInit()) glDeleteFramebuffers(n, framebuffers);} GLEEPFNGLDELETEFRAMEBUFFERSPROC GLeeFuncPtr_glDeleteFramebuffers=GLee_Lazy_glDeleteFramebuffers; #endif #ifndef GLEE_C_DEFINED_glGenFramebuffers #define GLEE_C_DEFINED_glGenFramebuffers void __stdcall GLee_Lazy_glGenFramebuffers(GLsizei n, GLuint * framebuffers) {if (GLeeInit()) glGenFramebuffers(n, framebuffers);} GLEEPFNGLGENFRAMEBUFFERSPROC GLeeFuncPtr_glGenFramebuffers=GLee_Lazy_glGenFramebuffers; #endif #ifndef GLEE_C_DEFINED_glCheckFramebufferStatus #define GLEE_C_DEFINED_glCheckFramebufferStatus GLenum __stdcall GLee_Lazy_glCheckFramebufferStatus(GLenum target) {if (GLeeInit()) return glCheckFramebufferStatus(target); return (GLenum)0;} GLEEPFNGLCHECKFRAMEBUFFERSTATUSPROC GLeeFuncPtr_glCheckFramebufferStatus=GLee_Lazy_glCheckFramebufferStatus; #endif #ifndef GLEE_C_DEFINED_glFramebufferTexture1D #define GLEE_C_DEFINED_glFramebufferTexture1D void __stdcall GLee_Lazy_glFramebufferTexture1D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {if (GLeeInit()) glFramebufferTexture1D(target, attachment, textarget, texture, level);} GLEEPFNGLFRAMEBUFFERTEXTURE1DPROC GLeeFuncPtr_glFramebufferTexture1D=GLee_Lazy_glFramebufferTexture1D; #endif #ifndef GLEE_C_DEFINED_glFramebufferTexture2D #define GLEE_C_DEFINED_glFramebufferTexture2D void __stdcall GLee_Lazy_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {if (GLeeInit()) glFramebufferTexture2D(target, attachment, textarget, texture, level);} GLEEPFNGLFRAMEBUFFERTEXTURE2DPROC GLeeFuncPtr_glFramebufferTexture2D=GLee_Lazy_glFramebufferTexture2D; #endif #ifndef GLEE_C_DEFINED_glFramebufferTexture3D #define GLEE_C_DEFINED_glFramebufferTexture3D void __stdcall GLee_Lazy_glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) {if (GLeeInit()) glFramebufferTexture3D(target, attachment, textarget, texture, level, zoffset);} GLEEPFNGLFRAMEBUFFERTEXTURE3DPROC GLeeFuncPtr_glFramebufferTexture3D=GLee_Lazy_glFramebufferTexture3D; #endif #ifndef GLEE_C_DEFINED_glFramebufferRenderbuffer #define GLEE_C_DEFINED_glFramebufferRenderbuffer void __stdcall GLee_Lazy_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {if (GLeeInit()) glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);} GLEEPFNGLFRAMEBUFFERRENDERBUFFERPROC GLeeFuncPtr_glFramebufferRenderbuffer=GLee_Lazy_glFramebufferRenderbuffer; #endif #ifndef GLEE_C_DEFINED_glGetFramebufferAttachmentParameteriv #define GLEE_C_DEFINED_glGetFramebufferAttachmentParameteriv void __stdcall GLee_Lazy_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint * params) {if (GLeeInit()) glGetFramebufferAttachmentParameteriv(target, attachment, pname, params);} GLEEPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GLeeFuncPtr_glGetFramebufferAttachmentParameteriv=GLee_Lazy_glGetFramebufferAttachmentParameteriv; #endif #ifndef GLEE_C_DEFINED_glGenerateMipmap #define GLEE_C_DEFINED_glGenerateMipmap void __stdcall GLee_Lazy_glGenerateMipmap(GLenum target) {if (GLeeInit()) glGenerateMipmap(target);} GLEEPFNGLGENERATEMIPMAPPROC GLeeFuncPtr_glGenerateMipmap=GLee_Lazy_glGenerateMipmap; #endif #ifndef GLEE_C_DEFINED_glBlitFramebuffer #define GLEE_C_DEFINED_glBlitFramebuffer void __stdcall GLee_Lazy_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {if (GLeeInit()) glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);} GLEEPFNGLBLITFRAMEBUFFERPROC GLeeFuncPtr_glBlitFramebuffer=GLee_Lazy_glBlitFramebuffer; #endif #ifndef GLEE_C_DEFINED_glRenderbufferStorageMultisample #define GLEE_C_DEFINED_glRenderbufferStorageMultisample void __stdcall GLee_Lazy_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {if (GLeeInit()) glRenderbufferStorageMultisample(target, samples, internalformat, width, height);} GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC GLeeFuncPtr_glRenderbufferStorageMultisample=GLee_Lazy_glRenderbufferStorageMultisample; #endif #ifndef GLEE_C_DEFINED_glFramebufferTextureLayer #define GLEE_C_DEFINED_glFramebufferTextureLayer void __stdcall GLee_Lazy_glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) {if (GLeeInit()) glFramebufferTextureLayer(target, attachment, texture, level, layer);} GLEEPFNGLFRAMEBUFFERTEXTURELAYERPROC GLeeFuncPtr_glFramebufferTextureLayer=GLee_Lazy_glFramebufferTextureLayer; #endif #endif /* GL_ARB_framebuffer_sRGB */ #ifdef __GLEE_GL_ARB_framebuffer_sRGB #endif /* GL_ARB_geometry_shader4 */ #ifdef __GLEE_GL_ARB_geometry_shader4 #ifndef GLEE_C_DEFINED_glProgramParameteriARB #define GLEE_C_DEFINED_glProgramParameteriARB void __stdcall GLee_Lazy_glProgramParameteriARB(GLuint program, GLenum pname, GLint value) {if (GLeeInit()) glProgramParameteriARB(program, pname, value);} GLEEPFNGLPROGRAMPARAMETERIARBPROC GLeeFuncPtr_glProgramParameteriARB=GLee_Lazy_glProgramParameteriARB; #endif #ifndef GLEE_C_DEFINED_glFramebufferTextureARB #define GLEE_C_DEFINED_glFramebufferTextureARB void __stdcall GLee_Lazy_glFramebufferTextureARB(GLenum target, GLenum attachment, GLuint texture, GLint level) {if (GLeeInit()) glFramebufferTextureARB(target, attachment, texture, level);} GLEEPFNGLFRAMEBUFFERTEXTUREARBPROC GLeeFuncPtr_glFramebufferTextureARB=GLee_Lazy_glFramebufferTextureARB; #endif #ifndef GLEE_C_DEFINED_glFramebufferTextureLayerARB #define GLEE_C_DEFINED_glFramebufferTextureLayerARB void __stdcall GLee_Lazy_glFramebufferTextureLayerARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) {if (GLeeInit()) glFramebufferTextureLayerARB(target, attachment, texture, level, layer);} GLEEPFNGLFRAMEBUFFERTEXTURELAYERARBPROC GLeeFuncPtr_glFramebufferTextureLayerARB=GLee_Lazy_glFramebufferTextureLayerARB; #endif #ifndef GLEE_C_DEFINED_glFramebufferTextureFaceARB #define GLEE_C_DEFINED_glFramebufferTextureFaceARB void __stdcall GLee_Lazy_glFramebufferTextureFaceARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face) {if (GLeeInit()) glFramebufferTextureFaceARB(target, attachment, texture, level, face);} GLEEPFNGLFRAMEBUFFERTEXTUREFACEARBPROC GLeeFuncPtr_glFramebufferTextureFaceARB=GLee_Lazy_glFramebufferTextureFaceARB; #endif #endif /* GL_ARB_half_float_vertex */ #ifdef __GLEE_GL_ARB_half_float_vertex #endif /* GL_ARB_instanced_arrays */ #ifdef __GLEE_GL_ARB_instanced_arrays #ifndef GLEE_C_DEFINED_glVertexAttribDivisorARB #define GLEE_C_DEFINED_glVertexAttribDivisorARB void __stdcall GLee_Lazy_glVertexAttribDivisorARB(GLuint index, GLuint divisor) {if (GLeeInit()) glVertexAttribDivisorARB(index, divisor);} GLEEPFNGLVERTEXATTRIBDIVISORARBPROC GLeeFuncPtr_glVertexAttribDivisorARB=GLee_Lazy_glVertexAttribDivisorARB; #endif #endif /* GL_ARB_map_buffer_range */ #ifdef __GLEE_GL_ARB_map_buffer_range #ifndef GLEE_C_DEFINED_glMapBufferRange #define GLEE_C_DEFINED_glMapBufferRange GLvoid* __stdcall GLee_Lazy_glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) {if (GLeeInit()) return glMapBufferRange(target, offset, length, access); return (GLvoid*)0;} GLEEPFNGLMAPBUFFERRANGEPROC GLeeFuncPtr_glMapBufferRange=GLee_Lazy_glMapBufferRange; #endif #ifndef GLEE_C_DEFINED_glFlushMappedBufferRange #define GLEE_C_DEFINED_glFlushMappedBufferRange void __stdcall GLee_Lazy_glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) {if (GLeeInit()) glFlushMappedBufferRange(target, offset, length);} GLEEPFNGLFLUSHMAPPEDBUFFERRANGEPROC GLeeFuncPtr_glFlushMappedBufferRange=GLee_Lazy_glFlushMappedBufferRange; #endif #endif /* GL_ARB_texture_buffer_object */ #ifdef __GLEE_GL_ARB_texture_buffer_object #ifndef GLEE_C_DEFINED_glTexBufferARB #define GLEE_C_DEFINED_glTexBufferARB void __stdcall GLee_Lazy_glTexBufferARB(GLenum target, GLenum internalformat, GLuint buffer) {if (GLeeInit()) glTexBufferARB(target, internalformat, buffer);} GLEEPFNGLTEXBUFFERARBPROC GLeeFuncPtr_glTexBufferARB=GLee_Lazy_glTexBufferARB; #endif #endif /* GL_ARB_texture_compression_rgtc */ #ifdef __GLEE_GL_ARB_texture_compression_rgtc #endif /* GL_ARB_texture_rg */ #ifdef __GLEE_GL_ARB_texture_rg #endif /* GL_ARB_vertex_array_object */ #ifdef __GLEE_GL_ARB_vertex_array_object #ifndef GLEE_C_DEFINED_glBindVertexArray #define GLEE_C_DEFINED_glBindVertexArray void __stdcall GLee_Lazy_glBindVertexArray(GLuint array) {if (GLeeInit()) glBindVertexArray(array);} GLEEPFNGLBINDVERTEXARRAYPROC GLeeFuncPtr_glBindVertexArray=GLee_Lazy_glBindVertexArray; #endif #ifndef GLEE_C_DEFINED_glDeleteVertexArrays #define GLEE_C_DEFINED_glDeleteVertexArrays void __stdcall GLee_Lazy_glDeleteVertexArrays(GLsizei n, const GLuint * arrays) {if (GLeeInit()) glDeleteVertexArrays(n, arrays);} GLEEPFNGLDELETEVERTEXARRAYSPROC GLeeFuncPtr_glDeleteVertexArrays=GLee_Lazy_glDeleteVertexArrays; #endif #ifndef GLEE_C_DEFINED_glGenVertexArrays #define GLEE_C_DEFINED_glGenVertexArrays void __stdcall GLee_Lazy_glGenVertexArrays(GLsizei n, GLuint * arrays) {if (GLeeInit()) glGenVertexArrays(n, arrays);} GLEEPFNGLGENVERTEXARRAYSPROC GLeeFuncPtr_glGenVertexArrays=GLee_Lazy_glGenVertexArrays; #endif #ifndef GLEE_C_DEFINED_glIsVertexArray #define GLEE_C_DEFINED_glIsVertexArray GLboolean __stdcall GLee_Lazy_glIsVertexArray(GLuint array) {if (GLeeInit()) return glIsVertexArray(array); return (GLboolean)0;} GLEEPFNGLISVERTEXARRAYPROC GLeeFuncPtr_glIsVertexArray=GLee_Lazy_glIsVertexArray; #endif #endif /* GL_ARB_uniform_buffer_object */ #ifdef __GLEE_GL_ARB_uniform_buffer_object #ifndef GLEE_C_DEFINED_glGetUniformIndices #define GLEE_C_DEFINED_glGetUniformIndices void __stdcall GLee_Lazy_glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const * uniformNames, GLuint * uniformIndices) {if (GLeeInit()) glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices);} GLEEPFNGLGETUNIFORMINDICESPROC GLeeFuncPtr_glGetUniformIndices=GLee_Lazy_glGetUniformIndices; #endif #ifndef GLEE_C_DEFINED_glGetActiveUniformsiv #define GLEE_C_DEFINED_glGetActiveUniformsiv void __stdcall GLee_Lazy_glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params) {if (GLeeInit()) glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);} GLEEPFNGLGETACTIVEUNIFORMSIVPROC GLeeFuncPtr_glGetActiveUniformsiv=GLee_Lazy_glGetActiveUniformsiv; #endif #ifndef GLEE_C_DEFINED_glGetActiveUniformName #define GLEE_C_DEFINED_glGetActiveUniformName void __stdcall GLee_Lazy_glGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformName) {if (GLeeInit()) glGetActiveUniformName(program, uniformIndex, bufSize, length, uniformName);} GLEEPFNGLGETACTIVEUNIFORMNAMEPROC GLeeFuncPtr_glGetActiveUniformName=GLee_Lazy_glGetActiveUniformName; #endif #ifndef GLEE_C_DEFINED_glGetUniformBlockIndex #define GLEE_C_DEFINED_glGetUniformBlockIndex GLuint __stdcall GLee_Lazy_glGetUniformBlockIndex(GLuint program, const GLchar * uniformBlockName) {if (GLeeInit()) return glGetUniformBlockIndex(program, uniformBlockName); return (GLuint)0;} GLEEPFNGLGETUNIFORMBLOCKINDEXPROC GLeeFuncPtr_glGetUniformBlockIndex=GLee_Lazy_glGetUniformBlockIndex; #endif #ifndef GLEE_C_DEFINED_glGetActiveUniformBlockiv #define GLEE_C_DEFINED_glGetActiveUniformBlockiv void __stdcall GLee_Lazy_glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params) {if (GLeeInit()) glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);} GLEEPFNGLGETACTIVEUNIFORMBLOCKIVPROC GLeeFuncPtr_glGetActiveUniformBlockiv=GLee_Lazy_glGetActiveUniformBlockiv; #endif #ifndef GLEE_C_DEFINED_glGetActiveUniformBlockName #define GLEE_C_DEFINED_glGetActiveUniformBlockName void __stdcall GLee_Lazy_glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName) {if (GLeeInit()) glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);} GLEEPFNGLGETACTIVEUNIFORMBLOCKNAMEPROC GLeeFuncPtr_glGetActiveUniformBlockName=GLee_Lazy_glGetActiveUniformBlockName; #endif #ifndef GLEE_C_DEFINED_glUniformBlockBinding #define GLEE_C_DEFINED_glUniformBlockBinding void __stdcall GLee_Lazy_glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) {if (GLeeInit()) glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);} GLEEPFNGLUNIFORMBLOCKBINDINGPROC GLeeFuncPtr_glUniformBlockBinding=GLee_Lazy_glUniformBlockBinding; #endif #endif /* GL_ARB_compatibility */ #ifdef __GLEE_GL_ARB_compatibility #endif /* GL_ARB_copy_buffer */ #ifdef __GLEE_GL_ARB_copy_buffer #ifndef GLEE_C_DEFINED_glCopyBufferSubData #define GLEE_C_DEFINED_glCopyBufferSubData void __stdcall GLee_Lazy_glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) {if (GLeeInit()) glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);} GLEEPFNGLCOPYBUFFERSUBDATAPROC GLeeFuncPtr_glCopyBufferSubData=GLee_Lazy_glCopyBufferSubData; #endif #endif /* GL_ARB_shader_texture_lod */ #ifdef __GLEE_GL_ARB_shader_texture_lod #endif /* GL_ARB_depth_clamp */ #ifdef __GLEE_GL_ARB_depth_clamp #endif /* GL_ARB_draw_elements_base_vertex */ #ifdef __GLEE_GL_ARB_draw_elements_base_vertex #ifndef GLEE_C_DEFINED_glDrawElementsBaseVertex #define GLEE_C_DEFINED_glDrawElementsBaseVertex void __stdcall GLee_Lazy_glDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex) {if (GLeeInit()) glDrawElementsBaseVertex(mode, count, type, indices, basevertex);} GLEEPFNGLDRAWELEMENTSBASEVERTEXPROC GLeeFuncPtr_glDrawElementsBaseVertex=GLee_Lazy_glDrawElementsBaseVertex; #endif #ifndef GLEE_C_DEFINED_glDrawRangeElementsBaseVertex #define GLEE_C_DEFINED_glDrawRangeElementsBaseVertex void __stdcall GLee_Lazy_glDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex) {if (GLeeInit()) glDrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex);} GLEEPFNGLDRAWRANGEELEMENTSBASEVERTEXPROC GLeeFuncPtr_glDrawRangeElementsBaseVertex=GLee_Lazy_glDrawRangeElementsBaseVertex; #endif #ifndef GLEE_C_DEFINED_glDrawElementsInstancedBaseVertex #define GLEE_C_DEFINED_glDrawElementsInstancedBaseVertex void __stdcall GLee_Lazy_glDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei instancecount, GLint basevertex) {if (GLeeInit()) glDrawElementsInstancedBaseVertex(mode, count, type, indices, instancecount, basevertex);} GLEEPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC GLeeFuncPtr_glDrawElementsInstancedBaseVertex=GLee_Lazy_glDrawElementsInstancedBaseVertex; #endif #ifndef GLEE_C_DEFINED_glMultiDrawElementsBaseVertex #define GLEE_C_DEFINED_glMultiDrawElementsBaseVertex void __stdcall GLee_Lazy_glMultiDrawElementsBaseVertex(GLenum mode, const GLsizei * count, GLenum type, const GLvoid* const * indices, GLsizei drawcount, const GLint * basevertex) {if (GLeeInit()) glMultiDrawElementsBaseVertex(mode, count, type, indices, drawcount, basevertex);} GLEEPFNGLMULTIDRAWELEMENTSBASEVERTEXPROC GLeeFuncPtr_glMultiDrawElementsBaseVertex=GLee_Lazy_glMultiDrawElementsBaseVertex; #endif #endif /* GL_ARB_fragment_coord_conventions */ #ifdef __GLEE_GL_ARB_fragment_coord_conventions #endif /* GL_ARB_provoking_vertex */ #ifdef __GLEE_GL_ARB_provoking_vertex #ifndef GLEE_C_DEFINED_glProvokingVertex #define GLEE_C_DEFINED_glProvokingVertex void __stdcall GLee_Lazy_glProvokingVertex(GLenum mode) {if (GLeeInit()) glProvokingVertex(mode);} GLEEPFNGLPROVOKINGVERTEXPROC GLeeFuncPtr_glProvokingVertex=GLee_Lazy_glProvokingVertex; #endif #endif /* GL_ARB_seamless_cube_map */ #ifdef __GLEE_GL_ARB_seamless_cube_map #endif /* GL_ARB_sync */ #ifdef __GLEE_GL_ARB_sync #ifndef GLEE_C_DEFINED_glFenceSync #define GLEE_C_DEFINED_glFenceSync GLsync __stdcall GLee_Lazy_glFenceSync(GLenum condition, GLbitfield flags) {if (GLeeInit()) return glFenceSync(condition, flags); return (GLsync)0;} GLEEPFNGLFENCESYNCPROC GLeeFuncPtr_glFenceSync=GLee_Lazy_glFenceSync; #endif #ifndef GLEE_C_DEFINED_glIsSync #define GLEE_C_DEFINED_glIsSync GLboolean __stdcall GLee_Lazy_glIsSync(GLsync sync) {if (GLeeInit()) return glIsSync(sync); return (GLboolean)0;} GLEEPFNGLISSYNCPROC GLeeFuncPtr_glIsSync=GLee_Lazy_glIsSync; #endif #ifndef GLEE_C_DEFINED_glDeleteSync #define GLEE_C_DEFINED_glDeleteSync void __stdcall GLee_Lazy_glDeleteSync(GLsync sync) {if (GLeeInit()) glDeleteSync(sync);} GLEEPFNGLDELETESYNCPROC GLeeFuncPtr_glDeleteSync=GLee_Lazy_glDeleteSync; #endif #ifndef GLEE_C_DEFINED_glClientWaitSync #define GLEE_C_DEFINED_glClientWaitSync GLenum __stdcall GLee_Lazy_glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {if (GLeeInit()) return glClientWaitSync(sync, flags, timeout); return (GLenum)0;} GLEEPFNGLCLIENTWAITSYNCPROC GLeeFuncPtr_glClientWaitSync=GLee_Lazy_glClientWaitSync; #endif #ifndef GLEE_C_DEFINED_glWaitSync #define GLEE_C_DEFINED_glWaitSync void __stdcall GLee_Lazy_glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) {if (GLeeInit()) glWaitSync(sync, flags, timeout);} GLEEPFNGLWAITSYNCPROC GLeeFuncPtr_glWaitSync=GLee_Lazy_glWaitSync; #endif #ifndef GLEE_C_DEFINED_glGetInteger64v #define GLEE_C_DEFINED_glGetInteger64v void __stdcall GLee_Lazy_glGetInteger64v(GLenum pname, GLint64 * params) {if (GLeeInit()) glGetInteger64v(pname, params);} GLEEPFNGLGETINTEGER64VPROC GLeeFuncPtr_glGetInteger64v=GLee_Lazy_glGetInteger64v; #endif #ifndef GLEE_C_DEFINED_glGetSynciv #define GLEE_C_DEFINED_glGetSynciv void __stdcall GLee_Lazy_glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values) {if (GLeeInit()) glGetSynciv(sync, pname, bufSize, length, values);} GLEEPFNGLGETSYNCIVPROC GLeeFuncPtr_glGetSynciv=GLee_Lazy_glGetSynciv; #endif #endif /* GL_ARB_texture_multisample */ #ifdef __GLEE_GL_ARB_texture_multisample #ifndef GLEE_C_DEFINED_glTexImage2DMultisample #define GLEE_C_DEFINED_glTexImage2DMultisample void __stdcall GLee_Lazy_glTexImage2DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) {if (GLeeInit()) glTexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);} GLEEPFNGLTEXIMAGE2DMULTISAMPLEPROC GLeeFuncPtr_glTexImage2DMultisample=GLee_Lazy_glTexImage2DMultisample; #endif #ifndef GLEE_C_DEFINED_glTexImage3DMultisample #define GLEE_C_DEFINED_glTexImage3DMultisample void __stdcall GLee_Lazy_glTexImage3DMultisample(GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) {if (GLeeInit()) glTexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);} GLEEPFNGLTEXIMAGE3DMULTISAMPLEPROC GLeeFuncPtr_glTexImage3DMultisample=GLee_Lazy_glTexImage3DMultisample; #endif #ifndef GLEE_C_DEFINED_glGetMultisamplefv #define GLEE_C_DEFINED_glGetMultisamplefv void __stdcall GLee_Lazy_glGetMultisamplefv(GLenum pname, GLuint index, GLfloat * val) {if (GLeeInit()) glGetMultisamplefv(pname, index, val);} GLEEPFNGLGETMULTISAMPLEFVPROC GLeeFuncPtr_glGetMultisamplefv=GLee_Lazy_glGetMultisamplefv; #endif #ifndef GLEE_C_DEFINED_glSampleMaski #define GLEE_C_DEFINED_glSampleMaski void __stdcall GLee_Lazy_glSampleMaski(GLuint index, GLbitfield mask) {if (GLeeInit()) glSampleMaski(index, mask);} GLEEPFNGLSAMPLEMASKIPROC GLeeFuncPtr_glSampleMaski=GLee_Lazy_glSampleMaski; #endif #endif /* GL_ARB_vertex_array_bgra */ #ifdef __GLEE_GL_ARB_vertex_array_bgra #endif /* GL_ARB_draw_buffers_blend */ #ifdef __GLEE_GL_ARB_draw_buffers_blend #ifndef GLEE_C_DEFINED_glBlendEquationiARB #define GLEE_C_DEFINED_glBlendEquationiARB void __stdcall GLee_Lazy_glBlendEquationiARB(GLuint buf, GLenum mode) {if (GLeeInit()) glBlendEquationiARB(buf, mode);} GLEEPFNGLBLENDEQUATIONIARBPROC GLeeFuncPtr_glBlendEquationiARB=GLee_Lazy_glBlendEquationiARB; #endif #ifndef GLEE_C_DEFINED_glBlendEquationSeparateiARB #define GLEE_C_DEFINED_glBlendEquationSeparateiARB void __stdcall GLee_Lazy_glBlendEquationSeparateiARB(GLuint buf, GLenum modeRGB, GLenum modeAlpha) {if (GLeeInit()) glBlendEquationSeparateiARB(buf, modeRGB, modeAlpha);} GLEEPFNGLBLENDEQUATIONSEPARATEIARBPROC GLeeFuncPtr_glBlendEquationSeparateiARB=GLee_Lazy_glBlendEquationSeparateiARB; #endif #ifndef GLEE_C_DEFINED_glBlendFunciARB #define GLEE_C_DEFINED_glBlendFunciARB void __stdcall GLee_Lazy_glBlendFunciARB(GLuint buf, GLenum src, GLenum dst) {if (GLeeInit()) glBlendFunciARB(buf, src, dst);} GLEEPFNGLBLENDFUNCIARBPROC GLeeFuncPtr_glBlendFunciARB=GLee_Lazy_glBlendFunciARB; #endif #ifndef GLEE_C_DEFINED_glBlendFuncSeparateiARB #define GLEE_C_DEFINED_glBlendFuncSeparateiARB void __stdcall GLee_Lazy_glBlendFuncSeparateiARB(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {if (GLeeInit()) glBlendFuncSeparateiARB(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);} GLEEPFNGLBLENDFUNCSEPARATEIARBPROC GLeeFuncPtr_glBlendFuncSeparateiARB=GLee_Lazy_glBlendFuncSeparateiARB; #endif #endif /* GL_ARB_sample_shading */ #ifdef __GLEE_GL_ARB_sample_shading #ifndef GLEE_C_DEFINED_glMinSampleShadingARB #define GLEE_C_DEFINED_glMinSampleShadingARB void __stdcall GLee_Lazy_glMinSampleShadingARB(GLfloat value) {if (GLeeInit()) glMinSampleShadingARB(value);} GLEEPFNGLMINSAMPLESHADINGARBPROC GLeeFuncPtr_glMinSampleShadingARB=GLee_Lazy_glMinSampleShadingARB; #endif #endif /* GL_ARB_texture_cube_map_array */ #ifdef __GLEE_GL_ARB_texture_cube_map_array #endif /* GL_ARB_texture_gather */ #ifdef __GLEE_GL_ARB_texture_gather #endif /* GL_ARB_texture_query_lod */ #ifdef __GLEE_GL_ARB_texture_query_lod #endif /* GL_ARB_shading_language_include */ #ifdef __GLEE_GL_ARB_shading_language_include #ifndef GLEE_C_DEFINED_glNamedStringARB #define GLEE_C_DEFINED_glNamedStringARB void __stdcall GLee_Lazy_glNamedStringARB(GLenum type, GLint namelen, const GLchar * name, GLint stringlen, const GLchar * string) {if (GLeeInit()) glNamedStringARB(type, namelen, name, stringlen, string);} GLEEPFNGLNAMEDSTRINGARBPROC GLeeFuncPtr_glNamedStringARB=GLee_Lazy_glNamedStringARB; #endif #ifndef GLEE_C_DEFINED_glDeleteNamedStringARB #define GLEE_C_DEFINED_glDeleteNamedStringARB void __stdcall GLee_Lazy_glDeleteNamedStringARB(GLint namelen, const GLchar * name) {if (GLeeInit()) glDeleteNamedStringARB(namelen, name);} GLEEPFNGLDELETENAMEDSTRINGARBPROC GLeeFuncPtr_glDeleteNamedStringARB=GLee_Lazy_glDeleteNamedStringARB; #endif #ifndef GLEE_C_DEFINED_glCompileShaderIncludeARB #define GLEE_C_DEFINED_glCompileShaderIncludeARB void __stdcall GLee_Lazy_glCompileShaderIncludeARB(GLuint shader, GLsizei count, const GLchar* * path, const GLint * length) {if (GLeeInit()) glCompileShaderIncludeARB(shader, count, path, length);} GLEEPFNGLCOMPILESHADERINCLUDEARBPROC GLeeFuncPtr_glCompileShaderIncludeARB=GLee_Lazy_glCompileShaderIncludeARB; #endif #ifndef GLEE_C_DEFINED_glIsNamedStringARB #define GLEE_C_DEFINED_glIsNamedStringARB GLboolean __stdcall GLee_Lazy_glIsNamedStringARB(GLint namelen, const GLchar * name) {if (GLeeInit()) return glIsNamedStringARB(namelen, name); return (GLboolean)0;} GLEEPFNGLISNAMEDSTRINGARBPROC GLeeFuncPtr_glIsNamedStringARB=GLee_Lazy_glIsNamedStringARB; #endif #ifndef GLEE_C_DEFINED_glGetNamedStringARB #define GLEE_C_DEFINED_glGetNamedStringARB void __stdcall GLee_Lazy_glGetNamedStringARB(GLint namelen, const GLchar * name, GLsizei bufSize, GLint * stringlen, GLchar * string) {if (GLeeInit()) glGetNamedStringARB(namelen, name, bufSize, stringlen, string);} GLEEPFNGLGETNAMEDSTRINGARBPROC GLeeFuncPtr_glGetNamedStringARB=GLee_Lazy_glGetNamedStringARB; #endif #ifndef GLEE_C_DEFINED_glGetNamedStringivARB #define GLEE_C_DEFINED_glGetNamedStringivARB void __stdcall GLee_Lazy_glGetNamedStringivARB(GLint namelen, const GLchar * name, GLenum pname, GLint * params) {if (GLeeInit()) glGetNamedStringivARB(namelen, name, pname, params);} GLEEPFNGLGETNAMEDSTRINGIVARBPROC GLeeFuncPtr_glGetNamedStringivARB=GLee_Lazy_glGetNamedStringivARB; #endif #endif /* GL_ARB_texture_compression_bptc */ #ifdef __GLEE_GL_ARB_texture_compression_bptc #endif /* GL_ARB_blend_func_extended */ #ifdef __GLEE_GL_ARB_blend_func_extended #ifndef GLEE_C_DEFINED_glBindFragDataLocationIndexed #define GLEE_C_DEFINED_glBindFragDataLocationIndexed void __stdcall GLee_Lazy_glBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar * name) {if (GLeeInit()) glBindFragDataLocationIndexed(program, colorNumber, index, name);} GLEEPFNGLBINDFRAGDATALOCATIONINDEXEDPROC GLeeFuncPtr_glBindFragDataLocationIndexed=GLee_Lazy_glBindFragDataLocationIndexed; #endif #ifndef GLEE_C_DEFINED_glGetFragDataIndex #define GLEE_C_DEFINED_glGetFragDataIndex GLint __stdcall GLee_Lazy_glGetFragDataIndex(GLuint program, const GLchar * name) {if (GLeeInit()) return glGetFragDataIndex(program, name); return (GLint)0;} GLEEPFNGLGETFRAGDATAINDEXPROC GLeeFuncPtr_glGetFragDataIndex=GLee_Lazy_glGetFragDataIndex; #endif #endif /* GL_ARB_explicit_attrib_location */ #ifdef __GLEE_GL_ARB_explicit_attrib_location #endif /* GL_ARB_occlusion_query2 */ #ifdef __GLEE_GL_ARB_occlusion_query2 #endif /* GL_ARB_sampler_objects */ #ifdef __GLEE_GL_ARB_sampler_objects #ifndef GLEE_C_DEFINED_glGenSamplers #define GLEE_C_DEFINED_glGenSamplers void __stdcall GLee_Lazy_glGenSamplers(GLsizei count, GLuint * samplers) {if (GLeeInit()) glGenSamplers(count, samplers);} GLEEPFNGLGENSAMPLERSPROC GLeeFuncPtr_glGenSamplers=GLee_Lazy_glGenSamplers; #endif #ifndef GLEE_C_DEFINED_glDeleteSamplers #define GLEE_C_DEFINED_glDeleteSamplers void __stdcall GLee_Lazy_glDeleteSamplers(GLsizei count, const GLuint * samplers) {if (GLeeInit()) glDeleteSamplers(count, samplers);} GLEEPFNGLDELETESAMPLERSPROC GLeeFuncPtr_glDeleteSamplers=GLee_Lazy_glDeleteSamplers; #endif #ifndef GLEE_C_DEFINED_glIsSampler #define GLEE_C_DEFINED_glIsSampler GLboolean __stdcall GLee_Lazy_glIsSampler(GLuint sampler) {if (GLeeInit()) return glIsSampler(sampler); return (GLboolean)0;} GLEEPFNGLISSAMPLERPROC GLeeFuncPtr_glIsSampler=GLee_Lazy_glIsSampler; #endif #ifndef GLEE_C_DEFINED_glBindSampler #define GLEE_C_DEFINED_glBindSampler void __stdcall GLee_Lazy_glBindSampler(GLuint unit, GLuint sampler) {if (GLeeInit()) glBindSampler(unit, sampler);} GLEEPFNGLBINDSAMPLERPROC GLeeFuncPtr_glBindSampler=GLee_Lazy_glBindSampler; #endif #ifndef GLEE_C_DEFINED_glSamplerParameteri #define GLEE_C_DEFINED_glSamplerParameteri void __stdcall GLee_Lazy_glSamplerParameteri(GLuint sampler, GLenum pname, GLint param) {if (GLeeInit()) glSamplerParameteri(sampler, pname, param);} GLEEPFNGLSAMPLERPARAMETERIPROC GLeeFuncPtr_glSamplerParameteri=GLee_Lazy_glSamplerParameteri; #endif #ifndef GLEE_C_DEFINED_glSamplerParameteriv #define GLEE_C_DEFINED_glSamplerParameteriv void __stdcall GLee_Lazy_glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint * param) {if (GLeeInit()) glSamplerParameteriv(sampler, pname, param);} GLEEPFNGLSAMPLERPARAMETERIVPROC GLeeFuncPtr_glSamplerParameteriv=GLee_Lazy_glSamplerParameteriv; #endif #ifndef GLEE_C_DEFINED_glSamplerParameterf #define GLEE_C_DEFINED_glSamplerParameterf void __stdcall GLee_Lazy_glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) {if (GLeeInit()) glSamplerParameterf(sampler, pname, param);} GLEEPFNGLSAMPLERPARAMETERFPROC GLeeFuncPtr_glSamplerParameterf=GLee_Lazy_glSamplerParameterf; #endif #ifndef GLEE_C_DEFINED_glSamplerParameterfv #define GLEE_C_DEFINED_glSamplerParameterfv void __stdcall GLee_Lazy_glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat * param) {if (GLeeInit()) glSamplerParameterfv(sampler, pname, param);} GLEEPFNGLSAMPLERPARAMETERFVPROC GLeeFuncPtr_glSamplerParameterfv=GLee_Lazy_glSamplerParameterfv; #endif #ifndef GLEE_C_DEFINED_glSamplerParameterIiv #define GLEE_C_DEFINED_glSamplerParameterIiv void __stdcall GLee_Lazy_glSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint * param) {if (GLeeInit()) glSamplerParameterIiv(sampler, pname, param);} GLEEPFNGLSAMPLERPARAMETERIIVPROC GLeeFuncPtr_glSamplerParameterIiv=GLee_Lazy_glSamplerParameterIiv; #endif #ifndef GLEE_C_DEFINED_glSamplerParameterIuiv #define GLEE_C_DEFINED_glSamplerParameterIuiv void __stdcall GLee_Lazy_glSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint * param) {if (GLeeInit()) glSamplerParameterIuiv(sampler, pname, param);} GLEEPFNGLSAMPLERPARAMETERIUIVPROC GLeeFuncPtr_glSamplerParameterIuiv=GLee_Lazy_glSamplerParameterIuiv; #endif #ifndef GLEE_C_DEFINED_glGetSamplerParameteriv #define GLEE_C_DEFINED_glGetSamplerParameteriv void __stdcall GLee_Lazy_glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint * params) {if (GLeeInit()) glGetSamplerParameteriv(sampler, pname, params);} GLEEPFNGLGETSAMPLERPARAMETERIVPROC GLeeFuncPtr_glGetSamplerParameteriv=GLee_Lazy_glGetSamplerParameteriv; #endif #ifndef GLEE_C_DEFINED_glGetSamplerParameterIiv #define GLEE_C_DEFINED_glGetSamplerParameterIiv void __stdcall GLee_Lazy_glGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint * params) {if (GLeeInit()) glGetSamplerParameterIiv(sampler, pname, params);} GLEEPFNGLGETSAMPLERPARAMETERIIVPROC GLeeFuncPtr_glGetSamplerParameterIiv=GLee_Lazy_glGetSamplerParameterIiv; #endif #ifndef GLEE_C_DEFINED_glGetSamplerParameterfv #define GLEE_C_DEFINED_glGetSamplerParameterfv void __stdcall GLee_Lazy_glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetSamplerParameterfv(sampler, pname, params);} GLEEPFNGLGETSAMPLERPARAMETERFVPROC GLeeFuncPtr_glGetSamplerParameterfv=GLee_Lazy_glGetSamplerParameterfv; #endif #ifndef GLEE_C_DEFINED_glGetSamplerParameterIuiv #define GLEE_C_DEFINED_glGetSamplerParameterIuiv void __stdcall GLee_Lazy_glGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint * params) {if (GLeeInit()) glGetSamplerParameterIuiv(sampler, pname, params);} GLEEPFNGLGETSAMPLERPARAMETERIUIVPROC GLeeFuncPtr_glGetSamplerParameterIuiv=GLee_Lazy_glGetSamplerParameterIuiv; #endif #endif /* GL_ARB_shader_bit_encoding */ #ifdef __GLEE_GL_ARB_shader_bit_encoding #endif /* GL_ARB_texture_rgb10_a2ui */ #ifdef __GLEE_GL_ARB_texture_rgb10_a2ui #endif /* GL_ARB_texture_swizzle */ #ifdef __GLEE_GL_ARB_texture_swizzle #endif /* GL_ARB_timer_query */ #ifdef __GLEE_GL_ARB_timer_query #ifndef GLEE_C_DEFINED_glQueryCounter #define GLEE_C_DEFINED_glQueryCounter void __stdcall GLee_Lazy_glQueryCounter(GLuint id, GLenum target) {if (GLeeInit()) glQueryCounter(id, target);} GLEEPFNGLQUERYCOUNTERPROC GLeeFuncPtr_glQueryCounter=GLee_Lazy_glQueryCounter; #endif #ifndef GLEE_C_DEFINED_glGetQueryObjecti64v #define GLEE_C_DEFINED_glGetQueryObjecti64v void __stdcall GLee_Lazy_glGetQueryObjecti64v(GLuint id, GLenum pname, GLint64 * params) {if (GLeeInit()) glGetQueryObjecti64v(id, pname, params);} GLEEPFNGLGETQUERYOBJECTI64VPROC GLeeFuncPtr_glGetQueryObjecti64v=GLee_Lazy_glGetQueryObjecti64v; #endif #ifndef GLEE_C_DEFINED_glGetQueryObjectui64v #define GLEE_C_DEFINED_glGetQueryObjectui64v void __stdcall GLee_Lazy_glGetQueryObjectui64v(GLuint id, GLenum pname, GLuint64 * params) {if (GLeeInit()) glGetQueryObjectui64v(id, pname, params);} GLEEPFNGLGETQUERYOBJECTUI64VPROC GLeeFuncPtr_glGetQueryObjectui64v=GLee_Lazy_glGetQueryObjectui64v; #endif #endif /* GL_ARB_vertex_type_2_10_10_10_rev */ #ifdef __GLEE_GL_ARB_vertex_type_2_10_10_10_rev #ifndef GLEE_C_DEFINED_glVertexP2ui #define GLEE_C_DEFINED_glVertexP2ui void __stdcall GLee_Lazy_glVertexP2ui(GLenum type, GLuint value) {if (GLeeInit()) glVertexP2ui(type, value);} GLEEPFNGLVERTEXP2UIPROC GLeeFuncPtr_glVertexP2ui=GLee_Lazy_glVertexP2ui; #endif #ifndef GLEE_C_DEFINED_glVertexP2uiv #define GLEE_C_DEFINED_glVertexP2uiv void __stdcall GLee_Lazy_glVertexP2uiv(GLenum type, const GLuint * value) {if (GLeeInit()) glVertexP2uiv(type, value);} GLEEPFNGLVERTEXP2UIVPROC GLeeFuncPtr_glVertexP2uiv=GLee_Lazy_glVertexP2uiv; #endif #ifndef GLEE_C_DEFINED_glVertexP3ui #define GLEE_C_DEFINED_glVertexP3ui void __stdcall GLee_Lazy_glVertexP3ui(GLenum type, GLuint value) {if (GLeeInit()) glVertexP3ui(type, value);} GLEEPFNGLVERTEXP3UIPROC GLeeFuncPtr_glVertexP3ui=GLee_Lazy_glVertexP3ui; #endif #ifndef GLEE_C_DEFINED_glVertexP3uiv #define GLEE_C_DEFINED_glVertexP3uiv void __stdcall GLee_Lazy_glVertexP3uiv(GLenum type, const GLuint * value) {if (GLeeInit()) glVertexP3uiv(type, value);} GLEEPFNGLVERTEXP3UIVPROC GLeeFuncPtr_glVertexP3uiv=GLee_Lazy_glVertexP3uiv; #endif #ifndef GLEE_C_DEFINED_glVertexP4ui #define GLEE_C_DEFINED_glVertexP4ui void __stdcall GLee_Lazy_glVertexP4ui(GLenum type, GLuint value) {if (GLeeInit()) glVertexP4ui(type, value);} GLEEPFNGLVERTEXP4UIPROC GLeeFuncPtr_glVertexP4ui=GLee_Lazy_glVertexP4ui; #endif #ifndef GLEE_C_DEFINED_glVertexP4uiv #define GLEE_C_DEFINED_glVertexP4uiv void __stdcall GLee_Lazy_glVertexP4uiv(GLenum type, const GLuint * value) {if (GLeeInit()) glVertexP4uiv(type, value);} GLEEPFNGLVERTEXP4UIVPROC GLeeFuncPtr_glVertexP4uiv=GLee_Lazy_glVertexP4uiv; #endif #ifndef GLEE_C_DEFINED_glTexCoordP1ui #define GLEE_C_DEFINED_glTexCoordP1ui void __stdcall GLee_Lazy_glTexCoordP1ui(GLenum type, GLuint coords) {if (GLeeInit()) glTexCoordP1ui(type, coords);} GLEEPFNGLTEXCOORDP1UIPROC GLeeFuncPtr_glTexCoordP1ui=GLee_Lazy_glTexCoordP1ui; #endif #ifndef GLEE_C_DEFINED_glTexCoordP1uiv #define GLEE_C_DEFINED_glTexCoordP1uiv void __stdcall GLee_Lazy_glTexCoordP1uiv(GLenum type, const GLuint * coords) {if (GLeeInit()) glTexCoordP1uiv(type, coords);} GLEEPFNGLTEXCOORDP1UIVPROC GLeeFuncPtr_glTexCoordP1uiv=GLee_Lazy_glTexCoordP1uiv; #endif #ifndef GLEE_C_DEFINED_glTexCoordP2ui #define GLEE_C_DEFINED_glTexCoordP2ui void __stdcall GLee_Lazy_glTexCoordP2ui(GLenum type, GLuint coords) {if (GLeeInit()) glTexCoordP2ui(type, coords);} GLEEPFNGLTEXCOORDP2UIPROC GLeeFuncPtr_glTexCoordP2ui=GLee_Lazy_glTexCoordP2ui; #endif #ifndef GLEE_C_DEFINED_glTexCoordP2uiv #define GLEE_C_DEFINED_glTexCoordP2uiv void __stdcall GLee_Lazy_glTexCoordP2uiv(GLenum type, const GLuint * coords) {if (GLeeInit()) glTexCoordP2uiv(type, coords);} GLEEPFNGLTEXCOORDP2UIVPROC GLeeFuncPtr_glTexCoordP2uiv=GLee_Lazy_glTexCoordP2uiv; #endif #ifndef GLEE_C_DEFINED_glTexCoordP3ui #define GLEE_C_DEFINED_glTexCoordP3ui void __stdcall GLee_Lazy_glTexCoordP3ui(GLenum type, GLuint coords) {if (GLeeInit()) glTexCoordP3ui(type, coords);} GLEEPFNGLTEXCOORDP3UIPROC GLeeFuncPtr_glTexCoordP3ui=GLee_Lazy_glTexCoordP3ui; #endif #ifndef GLEE_C_DEFINED_glTexCoordP3uiv #define GLEE_C_DEFINED_glTexCoordP3uiv void __stdcall GLee_Lazy_glTexCoordP3uiv(GLenum type, const GLuint * coords) {if (GLeeInit()) glTexCoordP3uiv(type, coords);} GLEEPFNGLTEXCOORDP3UIVPROC GLeeFuncPtr_glTexCoordP3uiv=GLee_Lazy_glTexCoordP3uiv; #endif #ifndef GLEE_C_DEFINED_glTexCoordP4ui #define GLEE_C_DEFINED_glTexCoordP4ui void __stdcall GLee_Lazy_glTexCoordP4ui(GLenum type, GLuint coords) {if (GLeeInit()) glTexCoordP4ui(type, coords);} GLEEPFNGLTEXCOORDP4UIPROC GLeeFuncPtr_glTexCoordP4ui=GLee_Lazy_glTexCoordP4ui; #endif #ifndef GLEE_C_DEFINED_glTexCoordP4uiv #define GLEE_C_DEFINED_glTexCoordP4uiv void __stdcall GLee_Lazy_glTexCoordP4uiv(GLenum type, const GLuint * coords) {if (GLeeInit()) glTexCoordP4uiv(type, coords);} GLEEPFNGLTEXCOORDP4UIVPROC GLeeFuncPtr_glTexCoordP4uiv=GLee_Lazy_glTexCoordP4uiv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoordP1ui #define GLEE_C_DEFINED_glMultiTexCoordP1ui void __stdcall GLee_Lazy_glMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords) {if (GLeeInit()) glMultiTexCoordP1ui(texture, type, coords);} GLEEPFNGLMULTITEXCOORDP1UIPROC GLeeFuncPtr_glMultiTexCoordP1ui=GLee_Lazy_glMultiTexCoordP1ui; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoordP1uiv #define GLEE_C_DEFINED_glMultiTexCoordP1uiv void __stdcall GLee_Lazy_glMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint * coords) {if (GLeeInit()) glMultiTexCoordP1uiv(texture, type, coords);} GLEEPFNGLMULTITEXCOORDP1UIVPROC GLeeFuncPtr_glMultiTexCoordP1uiv=GLee_Lazy_glMultiTexCoordP1uiv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoordP2ui #define GLEE_C_DEFINED_glMultiTexCoordP2ui void __stdcall GLee_Lazy_glMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords) {if (GLeeInit()) glMultiTexCoordP2ui(texture, type, coords);} GLEEPFNGLMULTITEXCOORDP2UIPROC GLeeFuncPtr_glMultiTexCoordP2ui=GLee_Lazy_glMultiTexCoordP2ui; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoordP2uiv #define GLEE_C_DEFINED_glMultiTexCoordP2uiv void __stdcall GLee_Lazy_glMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint * coords) {if (GLeeInit()) glMultiTexCoordP2uiv(texture, type, coords);} GLEEPFNGLMULTITEXCOORDP2UIVPROC GLeeFuncPtr_glMultiTexCoordP2uiv=GLee_Lazy_glMultiTexCoordP2uiv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoordP3ui #define GLEE_C_DEFINED_glMultiTexCoordP3ui void __stdcall GLee_Lazy_glMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords) {if (GLeeInit()) glMultiTexCoordP3ui(texture, type, coords);} GLEEPFNGLMULTITEXCOORDP3UIPROC GLeeFuncPtr_glMultiTexCoordP3ui=GLee_Lazy_glMultiTexCoordP3ui; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoordP3uiv #define GLEE_C_DEFINED_glMultiTexCoordP3uiv void __stdcall GLee_Lazy_glMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint * coords) {if (GLeeInit()) glMultiTexCoordP3uiv(texture, type, coords);} GLEEPFNGLMULTITEXCOORDP3UIVPROC GLeeFuncPtr_glMultiTexCoordP3uiv=GLee_Lazy_glMultiTexCoordP3uiv; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoordP4ui #define GLEE_C_DEFINED_glMultiTexCoordP4ui void __stdcall GLee_Lazy_glMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords) {if (GLeeInit()) glMultiTexCoordP4ui(texture, type, coords);} GLEEPFNGLMULTITEXCOORDP4UIPROC GLeeFuncPtr_glMultiTexCoordP4ui=GLee_Lazy_glMultiTexCoordP4ui; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoordP4uiv #define GLEE_C_DEFINED_glMultiTexCoordP4uiv void __stdcall GLee_Lazy_glMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint * coords) {if (GLeeInit()) glMultiTexCoordP4uiv(texture, type, coords);} GLEEPFNGLMULTITEXCOORDP4UIVPROC GLeeFuncPtr_glMultiTexCoordP4uiv=GLee_Lazy_glMultiTexCoordP4uiv; #endif #ifndef GLEE_C_DEFINED_glNormalP3ui #define GLEE_C_DEFINED_glNormalP3ui void __stdcall GLee_Lazy_glNormalP3ui(GLenum type, GLuint coords) {if (GLeeInit()) glNormalP3ui(type, coords);} GLEEPFNGLNORMALP3UIPROC GLeeFuncPtr_glNormalP3ui=GLee_Lazy_glNormalP3ui; #endif #ifndef GLEE_C_DEFINED_glNormalP3uiv #define GLEE_C_DEFINED_glNormalP3uiv void __stdcall GLee_Lazy_glNormalP3uiv(GLenum type, const GLuint * coords) {if (GLeeInit()) glNormalP3uiv(type, coords);} GLEEPFNGLNORMALP3UIVPROC GLeeFuncPtr_glNormalP3uiv=GLee_Lazy_glNormalP3uiv; #endif #ifndef GLEE_C_DEFINED_glColorP3ui #define GLEE_C_DEFINED_glColorP3ui void __stdcall GLee_Lazy_glColorP3ui(GLenum type, GLuint color) {if (GLeeInit()) glColorP3ui(type, color);} GLEEPFNGLCOLORP3UIPROC GLeeFuncPtr_glColorP3ui=GLee_Lazy_glColorP3ui; #endif #ifndef GLEE_C_DEFINED_glColorP3uiv #define GLEE_C_DEFINED_glColorP3uiv void __stdcall GLee_Lazy_glColorP3uiv(GLenum type, const GLuint * color) {if (GLeeInit()) glColorP3uiv(type, color);} GLEEPFNGLCOLORP3UIVPROC GLeeFuncPtr_glColorP3uiv=GLee_Lazy_glColorP3uiv; #endif #ifndef GLEE_C_DEFINED_glColorP4ui #define GLEE_C_DEFINED_glColorP4ui void __stdcall GLee_Lazy_glColorP4ui(GLenum type, GLuint color) {if (GLeeInit()) glColorP4ui(type, color);} GLEEPFNGLCOLORP4UIPROC GLeeFuncPtr_glColorP4ui=GLee_Lazy_glColorP4ui; #endif #ifndef GLEE_C_DEFINED_glColorP4uiv #define GLEE_C_DEFINED_glColorP4uiv void __stdcall GLee_Lazy_glColorP4uiv(GLenum type, const GLuint * color) {if (GLeeInit()) glColorP4uiv(type, color);} GLEEPFNGLCOLORP4UIVPROC GLeeFuncPtr_glColorP4uiv=GLee_Lazy_glColorP4uiv; #endif #ifndef GLEE_C_DEFINED_glSecondaryColorP3ui #define GLEE_C_DEFINED_glSecondaryColorP3ui void __stdcall GLee_Lazy_glSecondaryColorP3ui(GLenum type, GLuint color) {if (GLeeInit()) glSecondaryColorP3ui(type, color);} GLEEPFNGLSECONDARYCOLORP3UIPROC GLeeFuncPtr_glSecondaryColorP3ui=GLee_Lazy_glSecondaryColorP3ui; #endif #ifndef GLEE_C_DEFINED_glSecondaryColorP3uiv #define GLEE_C_DEFINED_glSecondaryColorP3uiv void __stdcall GLee_Lazy_glSecondaryColorP3uiv(GLenum type, const GLuint * color) {if (GLeeInit()) glSecondaryColorP3uiv(type, color);} GLEEPFNGLSECONDARYCOLORP3UIVPROC GLeeFuncPtr_glSecondaryColorP3uiv=GLee_Lazy_glSecondaryColorP3uiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribP1ui #define GLEE_C_DEFINED_glVertexAttribP1ui void __stdcall GLee_Lazy_glVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) {if (GLeeInit()) glVertexAttribP1ui(index, type, normalized, value);} GLEEPFNGLVERTEXATTRIBP1UIPROC GLeeFuncPtr_glVertexAttribP1ui=GLee_Lazy_glVertexAttribP1ui; #endif #ifndef GLEE_C_DEFINED_glVertexAttribP1uiv #define GLEE_C_DEFINED_glVertexAttribP1uiv void __stdcall GLee_Lazy_glVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint * value) {if (GLeeInit()) glVertexAttribP1uiv(index, type, normalized, value);} GLEEPFNGLVERTEXATTRIBP1UIVPROC GLeeFuncPtr_glVertexAttribP1uiv=GLee_Lazy_glVertexAttribP1uiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribP2ui #define GLEE_C_DEFINED_glVertexAttribP2ui void __stdcall GLee_Lazy_glVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) {if (GLeeInit()) glVertexAttribP2ui(index, type, normalized, value);} GLEEPFNGLVERTEXATTRIBP2UIPROC GLeeFuncPtr_glVertexAttribP2ui=GLee_Lazy_glVertexAttribP2ui; #endif #ifndef GLEE_C_DEFINED_glVertexAttribP2uiv #define GLEE_C_DEFINED_glVertexAttribP2uiv void __stdcall GLee_Lazy_glVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint * value) {if (GLeeInit()) glVertexAttribP2uiv(index, type, normalized, value);} GLEEPFNGLVERTEXATTRIBP2UIVPROC GLeeFuncPtr_glVertexAttribP2uiv=GLee_Lazy_glVertexAttribP2uiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribP3ui #define GLEE_C_DEFINED_glVertexAttribP3ui void __stdcall GLee_Lazy_glVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) {if (GLeeInit()) glVertexAttribP3ui(index, type, normalized, value);} GLEEPFNGLVERTEXATTRIBP3UIPROC GLeeFuncPtr_glVertexAttribP3ui=GLee_Lazy_glVertexAttribP3ui; #endif #ifndef GLEE_C_DEFINED_glVertexAttribP3uiv #define GLEE_C_DEFINED_glVertexAttribP3uiv void __stdcall GLee_Lazy_glVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint * value) {if (GLeeInit()) glVertexAttribP3uiv(index, type, normalized, value);} GLEEPFNGLVERTEXATTRIBP3UIVPROC GLeeFuncPtr_glVertexAttribP3uiv=GLee_Lazy_glVertexAttribP3uiv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribP4ui #define GLEE_C_DEFINED_glVertexAttribP4ui void __stdcall GLee_Lazy_glVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value) {if (GLeeInit()) glVertexAttribP4ui(index, type, normalized, value);} GLEEPFNGLVERTEXATTRIBP4UIPROC GLeeFuncPtr_glVertexAttribP4ui=GLee_Lazy_glVertexAttribP4ui; #endif #ifndef GLEE_C_DEFINED_glVertexAttribP4uiv #define GLEE_C_DEFINED_glVertexAttribP4uiv void __stdcall GLee_Lazy_glVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint * value) {if (GLeeInit()) glVertexAttribP4uiv(index, type, normalized, value);} GLEEPFNGLVERTEXATTRIBP4UIVPROC GLeeFuncPtr_glVertexAttribP4uiv=GLee_Lazy_glVertexAttribP4uiv; #endif #endif /* GL_ARB_draw_indirect */ #ifdef __GLEE_GL_ARB_draw_indirect #ifndef GLEE_C_DEFINED_glDrawArraysIndirect #define GLEE_C_DEFINED_glDrawArraysIndirect void __stdcall GLee_Lazy_glDrawArraysIndirect(GLenum mode, const GLvoid * indirect) {if (GLeeInit()) glDrawArraysIndirect(mode, indirect);} GLEEPFNGLDRAWARRAYSINDIRECTPROC GLeeFuncPtr_glDrawArraysIndirect=GLee_Lazy_glDrawArraysIndirect; #endif #ifndef GLEE_C_DEFINED_glDrawElementsIndirect #define GLEE_C_DEFINED_glDrawElementsIndirect void __stdcall GLee_Lazy_glDrawElementsIndirect(GLenum mode, GLenum type, const GLvoid * indirect) {if (GLeeInit()) glDrawElementsIndirect(mode, type, indirect);} GLEEPFNGLDRAWELEMENTSINDIRECTPROC GLeeFuncPtr_glDrawElementsIndirect=GLee_Lazy_glDrawElementsIndirect; #endif #endif /* GL_ARB_gpu_shader5 */ #ifdef __GLEE_GL_ARB_gpu_shader5 #endif /* GL_ARB_gpu_shader_fp64 */ #ifdef __GLEE_GL_ARB_gpu_shader_fp64 #ifndef GLEE_C_DEFINED_glUniform1d #define GLEE_C_DEFINED_glUniform1d void __stdcall GLee_Lazy_glUniform1d(GLint location, GLdouble x) {if (GLeeInit()) glUniform1d(location, x);} GLEEPFNGLUNIFORM1DPROC GLeeFuncPtr_glUniform1d=GLee_Lazy_glUniform1d; #endif #ifndef GLEE_C_DEFINED_glUniform2d #define GLEE_C_DEFINED_glUniform2d void __stdcall GLee_Lazy_glUniform2d(GLint location, GLdouble x, GLdouble y) {if (GLeeInit()) glUniform2d(location, x, y);} GLEEPFNGLUNIFORM2DPROC GLeeFuncPtr_glUniform2d=GLee_Lazy_glUniform2d; #endif #ifndef GLEE_C_DEFINED_glUniform3d #define GLEE_C_DEFINED_glUniform3d void __stdcall GLee_Lazy_glUniform3d(GLint location, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glUniform3d(location, x, y, z);} GLEEPFNGLUNIFORM3DPROC GLeeFuncPtr_glUniform3d=GLee_Lazy_glUniform3d; #endif #ifndef GLEE_C_DEFINED_glUniform4d #define GLEE_C_DEFINED_glUniform4d void __stdcall GLee_Lazy_glUniform4d(GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glUniform4d(location, x, y, z, w);} GLEEPFNGLUNIFORM4DPROC GLeeFuncPtr_glUniform4d=GLee_Lazy_glUniform4d; #endif #ifndef GLEE_C_DEFINED_glUniform1dv #define GLEE_C_DEFINED_glUniform1dv void __stdcall GLee_Lazy_glUniform1dv(GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glUniform1dv(location, count, value);} GLEEPFNGLUNIFORM1DVPROC GLeeFuncPtr_glUniform1dv=GLee_Lazy_glUniform1dv; #endif #ifndef GLEE_C_DEFINED_glUniform2dv #define GLEE_C_DEFINED_glUniform2dv void __stdcall GLee_Lazy_glUniform2dv(GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glUniform2dv(location, count, value);} GLEEPFNGLUNIFORM2DVPROC GLeeFuncPtr_glUniform2dv=GLee_Lazy_glUniform2dv; #endif #ifndef GLEE_C_DEFINED_glUniform3dv #define GLEE_C_DEFINED_glUniform3dv void __stdcall GLee_Lazy_glUniform3dv(GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glUniform3dv(location, count, value);} GLEEPFNGLUNIFORM3DVPROC GLeeFuncPtr_glUniform3dv=GLee_Lazy_glUniform3dv; #endif #ifndef GLEE_C_DEFINED_glUniform4dv #define GLEE_C_DEFINED_glUniform4dv void __stdcall GLee_Lazy_glUniform4dv(GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glUniform4dv(location, count, value);} GLEEPFNGLUNIFORM4DVPROC GLeeFuncPtr_glUniform4dv=GLee_Lazy_glUniform4dv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix2dv #define GLEE_C_DEFINED_glUniformMatrix2dv void __stdcall GLee_Lazy_glUniformMatrix2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glUniformMatrix2dv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX2DVPROC GLeeFuncPtr_glUniformMatrix2dv=GLee_Lazy_glUniformMatrix2dv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix3dv #define GLEE_C_DEFINED_glUniformMatrix3dv void __stdcall GLee_Lazy_glUniformMatrix3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glUniformMatrix3dv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX3DVPROC GLeeFuncPtr_glUniformMatrix3dv=GLee_Lazy_glUniformMatrix3dv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix4dv #define GLEE_C_DEFINED_glUniformMatrix4dv void __stdcall GLee_Lazy_glUniformMatrix4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glUniformMatrix4dv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX4DVPROC GLeeFuncPtr_glUniformMatrix4dv=GLee_Lazy_glUniformMatrix4dv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix2x3dv #define GLEE_C_DEFINED_glUniformMatrix2x3dv void __stdcall GLee_Lazy_glUniformMatrix2x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glUniformMatrix2x3dv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX2X3DVPROC GLeeFuncPtr_glUniformMatrix2x3dv=GLee_Lazy_glUniformMatrix2x3dv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix2x4dv #define GLEE_C_DEFINED_glUniformMatrix2x4dv void __stdcall GLee_Lazy_glUniformMatrix2x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glUniformMatrix2x4dv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX2X4DVPROC GLeeFuncPtr_glUniformMatrix2x4dv=GLee_Lazy_glUniformMatrix2x4dv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix3x2dv #define GLEE_C_DEFINED_glUniformMatrix3x2dv void __stdcall GLee_Lazy_glUniformMatrix3x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glUniformMatrix3x2dv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX3X2DVPROC GLeeFuncPtr_glUniformMatrix3x2dv=GLee_Lazy_glUniformMatrix3x2dv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix3x4dv #define GLEE_C_DEFINED_glUniformMatrix3x4dv void __stdcall GLee_Lazy_glUniformMatrix3x4dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glUniformMatrix3x4dv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX3X4DVPROC GLeeFuncPtr_glUniformMatrix3x4dv=GLee_Lazy_glUniformMatrix3x4dv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix4x2dv #define GLEE_C_DEFINED_glUniformMatrix4x2dv void __stdcall GLee_Lazy_glUniformMatrix4x2dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glUniformMatrix4x2dv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX4X2DVPROC GLeeFuncPtr_glUniformMatrix4x2dv=GLee_Lazy_glUniformMatrix4x2dv; #endif #ifndef GLEE_C_DEFINED_glUniformMatrix4x3dv #define GLEE_C_DEFINED_glUniformMatrix4x3dv void __stdcall GLee_Lazy_glUniformMatrix4x3dv(GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glUniformMatrix4x3dv(location, count, transpose, value);} GLEEPFNGLUNIFORMMATRIX4X3DVPROC GLeeFuncPtr_glUniformMatrix4x3dv=GLee_Lazy_glUniformMatrix4x3dv; #endif #ifndef GLEE_C_DEFINED_glGetUniformdv #define GLEE_C_DEFINED_glGetUniformdv void __stdcall GLee_Lazy_glGetUniformdv(GLuint program, GLint location, GLdouble * params) {if (GLeeInit()) glGetUniformdv(program, location, params);} GLEEPFNGLGETUNIFORMDVPROC GLeeFuncPtr_glGetUniformdv=GLee_Lazy_glGetUniformdv; #endif #endif /* GL_ARB_shader_subroutine */ #ifdef __GLEE_GL_ARB_shader_subroutine #ifndef GLEE_C_DEFINED_glGetSubroutineUniformLocation #define GLEE_C_DEFINED_glGetSubroutineUniformLocation GLint __stdcall GLee_Lazy_glGetSubroutineUniformLocation(GLuint program, GLenum shadertype, const GLchar * name) {if (GLeeInit()) return glGetSubroutineUniformLocation(program, shadertype, name); return (GLint)0;} GLEEPFNGLGETSUBROUTINEUNIFORMLOCATIONPROC GLeeFuncPtr_glGetSubroutineUniformLocation=GLee_Lazy_glGetSubroutineUniformLocation; #endif #ifndef GLEE_C_DEFINED_glGetSubroutineIndex #define GLEE_C_DEFINED_glGetSubroutineIndex GLuint __stdcall GLee_Lazy_glGetSubroutineIndex(GLuint program, GLenum shadertype, const GLchar * name) {if (GLeeInit()) return glGetSubroutineIndex(program, shadertype, name); return (GLuint)0;} GLEEPFNGLGETSUBROUTINEINDEXPROC GLeeFuncPtr_glGetSubroutineIndex=GLee_Lazy_glGetSubroutineIndex; #endif #ifndef GLEE_C_DEFINED_glGetActiveSubroutineUniformiv #define GLEE_C_DEFINED_glGetActiveSubroutineUniformiv void __stdcall GLee_Lazy_glGetActiveSubroutineUniformiv(GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint * values) {if (GLeeInit()) glGetActiveSubroutineUniformiv(program, shadertype, index, pname, values);} GLEEPFNGLGETACTIVESUBROUTINEUNIFORMIVPROC GLeeFuncPtr_glGetActiveSubroutineUniformiv=GLee_Lazy_glGetActiveSubroutineUniformiv; #endif #ifndef GLEE_C_DEFINED_glGetActiveSubroutineUniformName #define GLEE_C_DEFINED_glGetActiveSubroutineUniformName void __stdcall GLee_Lazy_glGetActiveSubroutineUniformName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name) {if (GLeeInit()) glGetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name);} GLEEPFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC GLeeFuncPtr_glGetActiveSubroutineUniformName=GLee_Lazy_glGetActiveSubroutineUniformName; #endif #ifndef GLEE_C_DEFINED_glGetActiveSubroutineName #define GLEE_C_DEFINED_glGetActiveSubroutineName void __stdcall GLee_Lazy_glGetActiveSubroutineName(GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name) {if (GLeeInit()) glGetActiveSubroutineName(program, shadertype, index, bufsize, length, name);} GLEEPFNGLGETACTIVESUBROUTINENAMEPROC GLeeFuncPtr_glGetActiveSubroutineName=GLee_Lazy_glGetActiveSubroutineName; #endif #ifndef GLEE_C_DEFINED_glUniformSubroutinesuiv #define GLEE_C_DEFINED_glUniformSubroutinesuiv void __stdcall GLee_Lazy_glUniformSubroutinesuiv(GLenum shadertype, GLsizei count, const GLuint * indices) {if (GLeeInit()) glUniformSubroutinesuiv(shadertype, count, indices);} GLEEPFNGLUNIFORMSUBROUTINESUIVPROC GLeeFuncPtr_glUniformSubroutinesuiv=GLee_Lazy_glUniformSubroutinesuiv; #endif #ifndef GLEE_C_DEFINED_glGetUniformSubroutineuiv #define GLEE_C_DEFINED_glGetUniformSubroutineuiv void __stdcall GLee_Lazy_glGetUniformSubroutineuiv(GLenum shadertype, GLint location, GLuint * params) {if (GLeeInit()) glGetUniformSubroutineuiv(shadertype, location, params);} GLEEPFNGLGETUNIFORMSUBROUTINEUIVPROC GLeeFuncPtr_glGetUniformSubroutineuiv=GLee_Lazy_glGetUniformSubroutineuiv; #endif #ifndef GLEE_C_DEFINED_glGetProgramStageiv #define GLEE_C_DEFINED_glGetProgramStageiv void __stdcall GLee_Lazy_glGetProgramStageiv(GLuint program, GLenum shadertype, GLenum pname, GLint * values) {if (GLeeInit()) glGetProgramStageiv(program, shadertype, pname, values);} GLEEPFNGLGETPROGRAMSTAGEIVPROC GLeeFuncPtr_glGetProgramStageiv=GLee_Lazy_glGetProgramStageiv; #endif #endif /* GL_ARB_tessellation_shader */ #ifdef __GLEE_GL_ARB_tessellation_shader #ifndef GLEE_C_DEFINED_glPatchParameteri #define GLEE_C_DEFINED_glPatchParameteri void __stdcall GLee_Lazy_glPatchParameteri(GLenum pname, GLint value) {if (GLeeInit()) glPatchParameteri(pname, value);} GLEEPFNGLPATCHPARAMETERIPROC GLeeFuncPtr_glPatchParameteri=GLee_Lazy_glPatchParameteri; #endif #ifndef GLEE_C_DEFINED_glPatchParameterfv #define GLEE_C_DEFINED_glPatchParameterfv void __stdcall GLee_Lazy_glPatchParameterfv(GLenum pname, const GLfloat * values) {if (GLeeInit()) glPatchParameterfv(pname, values);} GLEEPFNGLPATCHPARAMETERFVPROC GLeeFuncPtr_glPatchParameterfv=GLee_Lazy_glPatchParameterfv; #endif #endif /* GL_ARB_texture_buffer_object_rgb32 */ #ifdef __GLEE_GL_ARB_texture_buffer_object_rgb32 #endif /* GL_ARB_transform_feedback2 */ #ifdef __GLEE_GL_ARB_transform_feedback2 #ifndef GLEE_C_DEFINED_glBindTransformFeedback #define GLEE_C_DEFINED_glBindTransformFeedback void __stdcall GLee_Lazy_glBindTransformFeedback(GLenum target, GLuint id) {if (GLeeInit()) glBindTransformFeedback(target, id);} GLEEPFNGLBINDTRANSFORMFEEDBACKPROC GLeeFuncPtr_glBindTransformFeedback=GLee_Lazy_glBindTransformFeedback; #endif #ifndef GLEE_C_DEFINED_glDeleteTransformFeedbacks #define GLEE_C_DEFINED_glDeleteTransformFeedbacks void __stdcall GLee_Lazy_glDeleteTransformFeedbacks(GLsizei n, const GLuint * ids) {if (GLeeInit()) glDeleteTransformFeedbacks(n, ids);} GLEEPFNGLDELETETRANSFORMFEEDBACKSPROC GLeeFuncPtr_glDeleteTransformFeedbacks=GLee_Lazy_glDeleteTransformFeedbacks; #endif #ifndef GLEE_C_DEFINED_glGenTransformFeedbacks #define GLEE_C_DEFINED_glGenTransformFeedbacks void __stdcall GLee_Lazy_glGenTransformFeedbacks(GLsizei n, GLuint * ids) {if (GLeeInit()) glGenTransformFeedbacks(n, ids);} GLEEPFNGLGENTRANSFORMFEEDBACKSPROC GLeeFuncPtr_glGenTransformFeedbacks=GLee_Lazy_glGenTransformFeedbacks; #endif #ifndef GLEE_C_DEFINED_glIsTransformFeedback #define GLEE_C_DEFINED_glIsTransformFeedback GLboolean __stdcall GLee_Lazy_glIsTransformFeedback(GLuint id) {if (GLeeInit()) return glIsTransformFeedback(id); return (GLboolean)0;} GLEEPFNGLISTRANSFORMFEEDBACKPROC GLeeFuncPtr_glIsTransformFeedback=GLee_Lazy_glIsTransformFeedback; #endif #ifndef GLEE_C_DEFINED_glPauseTransformFeedback #define GLEE_C_DEFINED_glPauseTransformFeedback void __stdcall GLee_Lazy_glPauseTransformFeedback(void) {if (GLeeInit()) glPauseTransformFeedback();} GLEEPFNGLPAUSETRANSFORMFEEDBACKPROC GLeeFuncPtr_glPauseTransformFeedback=GLee_Lazy_glPauseTransformFeedback; #endif #ifndef GLEE_C_DEFINED_glResumeTransformFeedback #define GLEE_C_DEFINED_glResumeTransformFeedback void __stdcall GLee_Lazy_glResumeTransformFeedback(void) {if (GLeeInit()) glResumeTransformFeedback();} GLEEPFNGLRESUMETRANSFORMFEEDBACKPROC GLeeFuncPtr_glResumeTransformFeedback=GLee_Lazy_glResumeTransformFeedback; #endif #ifndef GLEE_C_DEFINED_glDrawTransformFeedback #define GLEE_C_DEFINED_glDrawTransformFeedback void __stdcall GLee_Lazy_glDrawTransformFeedback(GLenum mode, GLuint id) {if (GLeeInit()) glDrawTransformFeedback(mode, id);} GLEEPFNGLDRAWTRANSFORMFEEDBACKPROC GLeeFuncPtr_glDrawTransformFeedback=GLee_Lazy_glDrawTransformFeedback; #endif #endif /* GL_ARB_transform_feedback3 */ #ifdef __GLEE_GL_ARB_transform_feedback3 #ifndef GLEE_C_DEFINED_glDrawTransformFeedbackStream #define GLEE_C_DEFINED_glDrawTransformFeedbackStream void __stdcall GLee_Lazy_glDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream) {if (GLeeInit()) glDrawTransformFeedbackStream(mode, id, stream);} GLEEPFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC GLeeFuncPtr_glDrawTransformFeedbackStream=GLee_Lazy_glDrawTransformFeedbackStream; #endif #ifndef GLEE_C_DEFINED_glBeginQueryIndexed #define GLEE_C_DEFINED_glBeginQueryIndexed void __stdcall GLee_Lazy_glBeginQueryIndexed(GLenum target, GLuint index, GLuint id) {if (GLeeInit()) glBeginQueryIndexed(target, index, id);} GLEEPFNGLBEGINQUERYINDEXEDPROC GLeeFuncPtr_glBeginQueryIndexed=GLee_Lazy_glBeginQueryIndexed; #endif #ifndef GLEE_C_DEFINED_glEndQueryIndexed #define GLEE_C_DEFINED_glEndQueryIndexed void __stdcall GLee_Lazy_glEndQueryIndexed(GLenum target, GLuint index) {if (GLeeInit()) glEndQueryIndexed(target, index);} GLEEPFNGLENDQUERYINDEXEDPROC GLeeFuncPtr_glEndQueryIndexed=GLee_Lazy_glEndQueryIndexed; #endif #ifndef GLEE_C_DEFINED_glGetQueryIndexediv #define GLEE_C_DEFINED_glGetQueryIndexediv void __stdcall GLee_Lazy_glGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint * params) {if (GLeeInit()) glGetQueryIndexediv(target, index, pname, params);} GLEEPFNGLGETQUERYINDEXEDIVPROC GLeeFuncPtr_glGetQueryIndexediv=GLee_Lazy_glGetQueryIndexediv; #endif #endif /* GL_ARB_ES2_compatibility */ #ifdef __GLEE_GL_ARB_ES2_compatibility #ifndef GLEE_C_DEFINED_glReleaseShaderCompiler #define GLEE_C_DEFINED_glReleaseShaderCompiler void __stdcall GLee_Lazy_glReleaseShaderCompiler(void) {if (GLeeInit()) glReleaseShaderCompiler();} GLEEPFNGLRELEASESHADERCOMPILERPROC GLeeFuncPtr_glReleaseShaderCompiler=GLee_Lazy_glReleaseShaderCompiler; #endif #ifndef GLEE_C_DEFINED_glShaderBinary #define GLEE_C_DEFINED_glShaderBinary void __stdcall GLee_Lazy_glShaderBinary(GLsizei count, const GLuint * shaders, GLenum binaryformat, const GLvoid * binary, GLsizei length) {if (GLeeInit()) glShaderBinary(count, shaders, binaryformat, binary, length);} GLEEPFNGLSHADERBINARYPROC GLeeFuncPtr_glShaderBinary=GLee_Lazy_glShaderBinary; #endif #ifndef GLEE_C_DEFINED_glGetShaderPrecisionFormat #define GLEE_C_DEFINED_glGetShaderPrecisionFormat void __stdcall GLee_Lazy_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision) {if (GLeeInit()) glGetShaderPrecisionFormat(shadertype, precisiontype, range, precision);} GLEEPFNGLGETSHADERPRECISIONFORMATPROC GLeeFuncPtr_glGetShaderPrecisionFormat=GLee_Lazy_glGetShaderPrecisionFormat; #endif #ifndef GLEE_C_DEFINED_glDepthRangef #define GLEE_C_DEFINED_glDepthRangef void __stdcall GLee_Lazy_glDepthRangef(GLfloat n, GLfloat f) {if (GLeeInit()) glDepthRangef(n, f);} GLEEPFNGLDEPTHRANGEFPROC GLeeFuncPtr_glDepthRangef=GLee_Lazy_glDepthRangef; #endif #ifndef GLEE_C_DEFINED_glClearDepthf #define GLEE_C_DEFINED_glClearDepthf void __stdcall GLee_Lazy_glClearDepthf(GLfloat d) {if (GLeeInit()) glClearDepthf(d);} GLEEPFNGLCLEARDEPTHFPROC GLeeFuncPtr_glClearDepthf=GLee_Lazy_glClearDepthf; #endif #endif /* GL_ARB_get_program_binary */ #ifdef __GLEE_GL_ARB_get_program_binary #ifndef GLEE_C_DEFINED_glGetProgramBinary #define GLEE_C_DEFINED_glGetProgramBinary void __stdcall GLee_Lazy_glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, GLvoid * binary) {if (GLeeInit()) glGetProgramBinary(program, bufSize, length, binaryFormat, binary);} GLEEPFNGLGETPROGRAMBINARYPROC GLeeFuncPtr_glGetProgramBinary=GLee_Lazy_glGetProgramBinary; #endif #ifndef GLEE_C_DEFINED_glProgramBinary #define GLEE_C_DEFINED_glProgramBinary void __stdcall GLee_Lazy_glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid * binary, GLsizei length) {if (GLeeInit()) glProgramBinary(program, binaryFormat, binary, length);} GLEEPFNGLPROGRAMBINARYPROC GLeeFuncPtr_glProgramBinary=GLee_Lazy_glProgramBinary; #endif #ifndef GLEE_C_DEFINED_glProgramParameteri #define GLEE_C_DEFINED_glProgramParameteri void __stdcall GLee_Lazy_glProgramParameteri(GLuint program, GLenum pname, GLint value) {if (GLeeInit()) glProgramParameteri(program, pname, value);} GLEEPFNGLPROGRAMPARAMETERIPROC GLeeFuncPtr_glProgramParameteri=GLee_Lazy_glProgramParameteri; #endif #endif /* GL_ARB_separate_shader_objects */ #ifdef __GLEE_GL_ARB_separate_shader_objects #ifndef GLEE_C_DEFINED_glUseProgramStages #define GLEE_C_DEFINED_glUseProgramStages void __stdcall GLee_Lazy_glUseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) {if (GLeeInit()) glUseProgramStages(pipeline, stages, program);} GLEEPFNGLUSEPROGRAMSTAGESPROC GLeeFuncPtr_glUseProgramStages=GLee_Lazy_glUseProgramStages; #endif #ifndef GLEE_C_DEFINED_glActiveShaderProgram #define GLEE_C_DEFINED_glActiveShaderProgram void __stdcall GLee_Lazy_glActiveShaderProgram(GLuint pipeline, GLuint program) {if (GLeeInit()) glActiveShaderProgram(pipeline, program);} GLEEPFNGLACTIVESHADERPROGRAMPROC GLeeFuncPtr_glActiveShaderProgram=GLee_Lazy_glActiveShaderProgram; #endif #ifndef GLEE_C_DEFINED_glCreateShaderProgramv #define GLEE_C_DEFINED_glCreateShaderProgramv GLuint __stdcall GLee_Lazy_glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const * strings) {if (GLeeInit()) return glCreateShaderProgramv(type, count, strings); return (GLuint)0;} GLEEPFNGLCREATESHADERPROGRAMVPROC GLeeFuncPtr_glCreateShaderProgramv=GLee_Lazy_glCreateShaderProgramv; #endif #ifndef GLEE_C_DEFINED_glBindProgramPipeline #define GLEE_C_DEFINED_glBindProgramPipeline void __stdcall GLee_Lazy_glBindProgramPipeline(GLuint pipeline) {if (GLeeInit()) glBindProgramPipeline(pipeline);} GLEEPFNGLBINDPROGRAMPIPELINEPROC GLeeFuncPtr_glBindProgramPipeline=GLee_Lazy_glBindProgramPipeline; #endif #ifndef GLEE_C_DEFINED_glDeleteProgramPipelines #define GLEE_C_DEFINED_glDeleteProgramPipelines void __stdcall GLee_Lazy_glDeleteProgramPipelines(GLsizei n, const GLuint * pipelines) {if (GLeeInit()) glDeleteProgramPipelines(n, pipelines);} GLEEPFNGLDELETEPROGRAMPIPELINESPROC GLeeFuncPtr_glDeleteProgramPipelines=GLee_Lazy_glDeleteProgramPipelines; #endif #ifndef GLEE_C_DEFINED_glGenProgramPipelines #define GLEE_C_DEFINED_glGenProgramPipelines void __stdcall GLee_Lazy_glGenProgramPipelines(GLsizei n, GLuint * pipelines) {if (GLeeInit()) glGenProgramPipelines(n, pipelines);} GLEEPFNGLGENPROGRAMPIPELINESPROC GLeeFuncPtr_glGenProgramPipelines=GLee_Lazy_glGenProgramPipelines; #endif #ifndef GLEE_C_DEFINED_glIsProgramPipeline #define GLEE_C_DEFINED_glIsProgramPipeline GLboolean __stdcall GLee_Lazy_glIsProgramPipeline(GLuint pipeline) {if (GLeeInit()) return glIsProgramPipeline(pipeline); return (GLboolean)0;} GLEEPFNGLISPROGRAMPIPELINEPROC GLeeFuncPtr_glIsProgramPipeline=GLee_Lazy_glIsProgramPipeline; #endif #ifndef GLEE_C_DEFINED_glGetProgramPipelineiv #define GLEE_C_DEFINED_glGetProgramPipelineiv void __stdcall GLee_Lazy_glGetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint * params) {if (GLeeInit()) glGetProgramPipelineiv(pipeline, pname, params);} GLEEPFNGLGETPROGRAMPIPELINEIVPROC GLeeFuncPtr_glGetProgramPipelineiv=GLee_Lazy_glGetProgramPipelineiv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1i #define GLEE_C_DEFINED_glProgramUniform1i void __stdcall GLee_Lazy_glProgramUniform1i(GLuint program, GLint location, GLint v0) {if (GLeeInit()) glProgramUniform1i(program, location, v0);} GLEEPFNGLPROGRAMUNIFORM1IPROC GLeeFuncPtr_glProgramUniform1i=GLee_Lazy_glProgramUniform1i; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1iv #define GLEE_C_DEFINED_glProgramUniform1iv void __stdcall GLee_Lazy_glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glProgramUniform1iv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM1IVPROC GLeeFuncPtr_glProgramUniform1iv=GLee_Lazy_glProgramUniform1iv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1f #define GLEE_C_DEFINED_glProgramUniform1f void __stdcall GLee_Lazy_glProgramUniform1f(GLuint program, GLint location, GLfloat v0) {if (GLeeInit()) glProgramUniform1f(program, location, v0);} GLEEPFNGLPROGRAMUNIFORM1FPROC GLeeFuncPtr_glProgramUniform1f=GLee_Lazy_glProgramUniform1f; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1fv #define GLEE_C_DEFINED_glProgramUniform1fv void __stdcall GLee_Lazy_glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glProgramUniform1fv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM1FVPROC GLeeFuncPtr_glProgramUniform1fv=GLee_Lazy_glProgramUniform1fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1d #define GLEE_C_DEFINED_glProgramUniform1d void __stdcall GLee_Lazy_glProgramUniform1d(GLuint program, GLint location, GLdouble v0) {if (GLeeInit()) glProgramUniform1d(program, location, v0);} GLEEPFNGLPROGRAMUNIFORM1DPROC GLeeFuncPtr_glProgramUniform1d=GLee_Lazy_glProgramUniform1d; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1dv #define GLEE_C_DEFINED_glProgramUniform1dv void __stdcall GLee_Lazy_glProgramUniform1dv(GLuint program, GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glProgramUniform1dv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM1DVPROC GLeeFuncPtr_glProgramUniform1dv=GLee_Lazy_glProgramUniform1dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1ui #define GLEE_C_DEFINED_glProgramUniform1ui void __stdcall GLee_Lazy_glProgramUniform1ui(GLuint program, GLint location, GLuint v0) {if (GLeeInit()) glProgramUniform1ui(program, location, v0);} GLEEPFNGLPROGRAMUNIFORM1UIPROC GLeeFuncPtr_glProgramUniform1ui=GLee_Lazy_glProgramUniform1ui; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1uiv #define GLEE_C_DEFINED_glProgramUniform1uiv void __stdcall GLee_Lazy_glProgramUniform1uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glProgramUniform1uiv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM1UIVPROC GLeeFuncPtr_glProgramUniform1uiv=GLee_Lazy_glProgramUniform1uiv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2i #define GLEE_C_DEFINED_glProgramUniform2i void __stdcall GLee_Lazy_glProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) {if (GLeeInit()) glProgramUniform2i(program, location, v0, v1);} GLEEPFNGLPROGRAMUNIFORM2IPROC GLeeFuncPtr_glProgramUniform2i=GLee_Lazy_glProgramUniform2i; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2iv #define GLEE_C_DEFINED_glProgramUniform2iv void __stdcall GLee_Lazy_glProgramUniform2iv(GLuint program, GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glProgramUniform2iv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM2IVPROC GLeeFuncPtr_glProgramUniform2iv=GLee_Lazy_glProgramUniform2iv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2f #define GLEE_C_DEFINED_glProgramUniform2f void __stdcall GLee_Lazy_glProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) {if (GLeeInit()) glProgramUniform2f(program, location, v0, v1);} GLEEPFNGLPROGRAMUNIFORM2FPROC GLeeFuncPtr_glProgramUniform2f=GLee_Lazy_glProgramUniform2f; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2fv #define GLEE_C_DEFINED_glProgramUniform2fv void __stdcall GLee_Lazy_glProgramUniform2fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glProgramUniform2fv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM2FVPROC GLeeFuncPtr_glProgramUniform2fv=GLee_Lazy_glProgramUniform2fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2d #define GLEE_C_DEFINED_glProgramUniform2d void __stdcall GLee_Lazy_glProgramUniform2d(GLuint program, GLint location, GLdouble v0, GLdouble v1) {if (GLeeInit()) glProgramUniform2d(program, location, v0, v1);} GLEEPFNGLPROGRAMUNIFORM2DPROC GLeeFuncPtr_glProgramUniform2d=GLee_Lazy_glProgramUniform2d; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2dv #define GLEE_C_DEFINED_glProgramUniform2dv void __stdcall GLee_Lazy_glProgramUniform2dv(GLuint program, GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glProgramUniform2dv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM2DVPROC GLeeFuncPtr_glProgramUniform2dv=GLee_Lazy_glProgramUniform2dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2ui #define GLEE_C_DEFINED_glProgramUniform2ui void __stdcall GLee_Lazy_glProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) {if (GLeeInit()) glProgramUniform2ui(program, location, v0, v1);} GLEEPFNGLPROGRAMUNIFORM2UIPROC GLeeFuncPtr_glProgramUniform2ui=GLee_Lazy_glProgramUniform2ui; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2uiv #define GLEE_C_DEFINED_glProgramUniform2uiv void __stdcall GLee_Lazy_glProgramUniform2uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glProgramUniform2uiv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM2UIVPROC GLeeFuncPtr_glProgramUniform2uiv=GLee_Lazy_glProgramUniform2uiv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3i #define GLEE_C_DEFINED_glProgramUniform3i void __stdcall GLee_Lazy_glProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) {if (GLeeInit()) glProgramUniform3i(program, location, v0, v1, v2);} GLEEPFNGLPROGRAMUNIFORM3IPROC GLeeFuncPtr_glProgramUniform3i=GLee_Lazy_glProgramUniform3i; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3iv #define GLEE_C_DEFINED_glProgramUniform3iv void __stdcall GLee_Lazy_glProgramUniform3iv(GLuint program, GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glProgramUniform3iv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM3IVPROC GLeeFuncPtr_glProgramUniform3iv=GLee_Lazy_glProgramUniform3iv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3f #define GLEE_C_DEFINED_glProgramUniform3f void __stdcall GLee_Lazy_glProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {if (GLeeInit()) glProgramUniform3f(program, location, v0, v1, v2);} GLEEPFNGLPROGRAMUNIFORM3FPROC GLeeFuncPtr_glProgramUniform3f=GLee_Lazy_glProgramUniform3f; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3fv #define GLEE_C_DEFINED_glProgramUniform3fv void __stdcall GLee_Lazy_glProgramUniform3fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glProgramUniform3fv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM3FVPROC GLeeFuncPtr_glProgramUniform3fv=GLee_Lazy_glProgramUniform3fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3d #define GLEE_C_DEFINED_glProgramUniform3d void __stdcall GLee_Lazy_glProgramUniform3d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2) {if (GLeeInit()) glProgramUniform3d(program, location, v0, v1, v2);} GLEEPFNGLPROGRAMUNIFORM3DPROC GLeeFuncPtr_glProgramUniform3d=GLee_Lazy_glProgramUniform3d; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3dv #define GLEE_C_DEFINED_glProgramUniform3dv void __stdcall GLee_Lazy_glProgramUniform3dv(GLuint program, GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glProgramUniform3dv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM3DVPROC GLeeFuncPtr_glProgramUniform3dv=GLee_Lazy_glProgramUniform3dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3ui #define GLEE_C_DEFINED_glProgramUniform3ui void __stdcall GLee_Lazy_glProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) {if (GLeeInit()) glProgramUniform3ui(program, location, v0, v1, v2);} GLEEPFNGLPROGRAMUNIFORM3UIPROC GLeeFuncPtr_glProgramUniform3ui=GLee_Lazy_glProgramUniform3ui; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3uiv #define GLEE_C_DEFINED_glProgramUniform3uiv void __stdcall GLee_Lazy_glProgramUniform3uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glProgramUniform3uiv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM3UIVPROC GLeeFuncPtr_glProgramUniform3uiv=GLee_Lazy_glProgramUniform3uiv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4i #define GLEE_C_DEFINED_glProgramUniform4i void __stdcall GLee_Lazy_glProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {if (GLeeInit()) glProgramUniform4i(program, location, v0, v1, v2, v3);} GLEEPFNGLPROGRAMUNIFORM4IPROC GLeeFuncPtr_glProgramUniform4i=GLee_Lazy_glProgramUniform4i; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4iv #define GLEE_C_DEFINED_glProgramUniform4iv void __stdcall GLee_Lazy_glProgramUniform4iv(GLuint program, GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glProgramUniform4iv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM4IVPROC GLeeFuncPtr_glProgramUniform4iv=GLee_Lazy_glProgramUniform4iv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4f #define GLEE_C_DEFINED_glProgramUniform4f void __stdcall GLee_Lazy_glProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {if (GLeeInit()) glProgramUniform4f(program, location, v0, v1, v2, v3);} GLEEPFNGLPROGRAMUNIFORM4FPROC GLeeFuncPtr_glProgramUniform4f=GLee_Lazy_glProgramUniform4f; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4fv #define GLEE_C_DEFINED_glProgramUniform4fv void __stdcall GLee_Lazy_glProgramUniform4fv(GLuint program, GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glProgramUniform4fv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM4FVPROC GLeeFuncPtr_glProgramUniform4fv=GLee_Lazy_glProgramUniform4fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4d #define GLEE_C_DEFINED_glProgramUniform4d void __stdcall GLee_Lazy_glProgramUniform4d(GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3) {if (GLeeInit()) glProgramUniform4d(program, location, v0, v1, v2, v3);} GLEEPFNGLPROGRAMUNIFORM4DPROC GLeeFuncPtr_glProgramUniform4d=GLee_Lazy_glProgramUniform4d; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4dv #define GLEE_C_DEFINED_glProgramUniform4dv void __stdcall GLee_Lazy_glProgramUniform4dv(GLuint program, GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glProgramUniform4dv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM4DVPROC GLeeFuncPtr_glProgramUniform4dv=GLee_Lazy_glProgramUniform4dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4ui #define GLEE_C_DEFINED_glProgramUniform4ui void __stdcall GLee_Lazy_glProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {if (GLeeInit()) glProgramUniform4ui(program, location, v0, v1, v2, v3);} GLEEPFNGLPROGRAMUNIFORM4UIPROC GLeeFuncPtr_glProgramUniform4ui=GLee_Lazy_glProgramUniform4ui; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4uiv #define GLEE_C_DEFINED_glProgramUniform4uiv void __stdcall GLee_Lazy_glProgramUniform4uiv(GLuint program, GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glProgramUniform4uiv(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM4UIVPROC GLeeFuncPtr_glProgramUniform4uiv=GLee_Lazy_glProgramUniform4uiv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2fv #define GLEE_C_DEFINED_glProgramUniformMatrix2fv void __stdcall GLee_Lazy_glProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix2fv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2FVPROC GLeeFuncPtr_glProgramUniformMatrix2fv=GLee_Lazy_glProgramUniformMatrix2fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3fv #define GLEE_C_DEFINED_glProgramUniformMatrix3fv void __stdcall GLee_Lazy_glProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix3fv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3FVPROC GLeeFuncPtr_glProgramUniformMatrix3fv=GLee_Lazy_glProgramUniformMatrix3fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4fv #define GLEE_C_DEFINED_glProgramUniformMatrix4fv void __stdcall GLee_Lazy_glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix4fv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4FVPROC GLeeFuncPtr_glProgramUniformMatrix4fv=GLee_Lazy_glProgramUniformMatrix4fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2dv #define GLEE_C_DEFINED_glProgramUniformMatrix2dv void __stdcall GLee_Lazy_glProgramUniformMatrix2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix2dv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2DVPROC GLeeFuncPtr_glProgramUniformMatrix2dv=GLee_Lazy_glProgramUniformMatrix2dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3dv #define GLEE_C_DEFINED_glProgramUniformMatrix3dv void __stdcall GLee_Lazy_glProgramUniformMatrix3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix3dv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3DVPROC GLeeFuncPtr_glProgramUniformMatrix3dv=GLee_Lazy_glProgramUniformMatrix3dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4dv #define GLEE_C_DEFINED_glProgramUniformMatrix4dv void __stdcall GLee_Lazy_glProgramUniformMatrix4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix4dv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4DVPROC GLeeFuncPtr_glProgramUniformMatrix4dv=GLee_Lazy_glProgramUniformMatrix4dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2x3fv #define GLEE_C_DEFINED_glProgramUniformMatrix2x3fv void __stdcall GLee_Lazy_glProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix2x3fv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2X3FVPROC GLeeFuncPtr_glProgramUniformMatrix2x3fv=GLee_Lazy_glProgramUniformMatrix2x3fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3x2fv #define GLEE_C_DEFINED_glProgramUniformMatrix3x2fv void __stdcall GLee_Lazy_glProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix3x2fv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3X2FVPROC GLeeFuncPtr_glProgramUniformMatrix3x2fv=GLee_Lazy_glProgramUniformMatrix3x2fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2x4fv #define GLEE_C_DEFINED_glProgramUniformMatrix2x4fv void __stdcall GLee_Lazy_glProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix2x4fv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2X4FVPROC GLeeFuncPtr_glProgramUniformMatrix2x4fv=GLee_Lazy_glProgramUniformMatrix2x4fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4x2fv #define GLEE_C_DEFINED_glProgramUniformMatrix4x2fv void __stdcall GLee_Lazy_glProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix4x2fv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4X2FVPROC GLeeFuncPtr_glProgramUniformMatrix4x2fv=GLee_Lazy_glProgramUniformMatrix4x2fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3x4fv #define GLEE_C_DEFINED_glProgramUniformMatrix3x4fv void __stdcall GLee_Lazy_glProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix3x4fv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3X4FVPROC GLeeFuncPtr_glProgramUniformMatrix3x4fv=GLee_Lazy_glProgramUniformMatrix3x4fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4x3fv #define GLEE_C_DEFINED_glProgramUniformMatrix4x3fv void __stdcall GLee_Lazy_glProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix4x3fv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4X3FVPROC GLeeFuncPtr_glProgramUniformMatrix4x3fv=GLee_Lazy_glProgramUniformMatrix4x3fv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2x3dv #define GLEE_C_DEFINED_glProgramUniformMatrix2x3dv void __stdcall GLee_Lazy_glProgramUniformMatrix2x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix2x3dv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2X3DVPROC GLeeFuncPtr_glProgramUniformMatrix2x3dv=GLee_Lazy_glProgramUniformMatrix2x3dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3x2dv #define GLEE_C_DEFINED_glProgramUniformMatrix3x2dv void __stdcall GLee_Lazy_glProgramUniformMatrix3x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix3x2dv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3X2DVPROC GLeeFuncPtr_glProgramUniformMatrix3x2dv=GLee_Lazy_glProgramUniformMatrix3x2dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2x4dv #define GLEE_C_DEFINED_glProgramUniformMatrix2x4dv void __stdcall GLee_Lazy_glProgramUniformMatrix2x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix2x4dv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2X4DVPROC GLeeFuncPtr_glProgramUniformMatrix2x4dv=GLee_Lazy_glProgramUniformMatrix2x4dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4x2dv #define GLEE_C_DEFINED_glProgramUniformMatrix4x2dv void __stdcall GLee_Lazy_glProgramUniformMatrix4x2dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix4x2dv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4X2DVPROC GLeeFuncPtr_glProgramUniformMatrix4x2dv=GLee_Lazy_glProgramUniformMatrix4x2dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3x4dv #define GLEE_C_DEFINED_glProgramUniformMatrix3x4dv void __stdcall GLee_Lazy_glProgramUniformMatrix3x4dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix3x4dv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3X4DVPROC GLeeFuncPtr_glProgramUniformMatrix3x4dv=GLee_Lazy_glProgramUniformMatrix3x4dv; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4x3dv #define GLEE_C_DEFINED_glProgramUniformMatrix4x3dv void __stdcall GLee_Lazy_glProgramUniformMatrix4x3dv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix4x3dv(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4X3DVPROC GLeeFuncPtr_glProgramUniformMatrix4x3dv=GLee_Lazy_glProgramUniformMatrix4x3dv; #endif #ifndef GLEE_C_DEFINED_glValidateProgramPipeline #define GLEE_C_DEFINED_glValidateProgramPipeline void __stdcall GLee_Lazy_glValidateProgramPipeline(GLuint pipeline) {if (GLeeInit()) glValidateProgramPipeline(pipeline);} GLEEPFNGLVALIDATEPROGRAMPIPELINEPROC GLeeFuncPtr_glValidateProgramPipeline=GLee_Lazy_glValidateProgramPipeline; #endif #ifndef GLEE_C_DEFINED_glGetProgramPipelineInfoLog #define GLEE_C_DEFINED_glGetProgramPipelineInfoLog void __stdcall GLee_Lazy_glGetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog) {if (GLeeInit()) glGetProgramPipelineInfoLog(pipeline, bufSize, length, infoLog);} GLEEPFNGLGETPROGRAMPIPELINEINFOLOGPROC GLeeFuncPtr_glGetProgramPipelineInfoLog=GLee_Lazy_glGetProgramPipelineInfoLog; #endif #endif /* GL_ARB_shader_precision */ #ifdef __GLEE_GL_ARB_shader_precision #endif /* GL_ARB_vertex_attrib_64bit */ #ifdef __GLEE_GL_ARB_vertex_attrib_64bit #ifndef GLEE_C_DEFINED_glVertexAttribL1d #define GLEE_C_DEFINED_glVertexAttribL1d void __stdcall GLee_Lazy_glVertexAttribL1d(GLuint index, GLdouble x) {if (GLeeInit()) glVertexAttribL1d(index, x);} GLEEPFNGLVERTEXATTRIBL1DPROC GLeeFuncPtr_glVertexAttribL1d=GLee_Lazy_glVertexAttribL1d; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL2d #define GLEE_C_DEFINED_glVertexAttribL2d void __stdcall GLee_Lazy_glVertexAttribL2d(GLuint index, GLdouble x, GLdouble y) {if (GLeeInit()) glVertexAttribL2d(index, x, y);} GLEEPFNGLVERTEXATTRIBL2DPROC GLeeFuncPtr_glVertexAttribL2d=GLee_Lazy_glVertexAttribL2d; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL3d #define GLEE_C_DEFINED_glVertexAttribL3d void __stdcall GLee_Lazy_glVertexAttribL3d(GLuint index, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glVertexAttribL3d(index, x, y, z);} GLEEPFNGLVERTEXATTRIBL3DPROC GLeeFuncPtr_glVertexAttribL3d=GLee_Lazy_glVertexAttribL3d; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL4d #define GLEE_C_DEFINED_glVertexAttribL4d void __stdcall GLee_Lazy_glVertexAttribL4d(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glVertexAttribL4d(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIBL4DPROC GLeeFuncPtr_glVertexAttribL4d=GLee_Lazy_glVertexAttribL4d; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL1dv #define GLEE_C_DEFINED_glVertexAttribL1dv void __stdcall GLee_Lazy_glVertexAttribL1dv(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttribL1dv(index, v);} GLEEPFNGLVERTEXATTRIBL1DVPROC GLeeFuncPtr_glVertexAttribL1dv=GLee_Lazy_glVertexAttribL1dv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL2dv #define GLEE_C_DEFINED_glVertexAttribL2dv void __stdcall GLee_Lazy_glVertexAttribL2dv(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttribL2dv(index, v);} GLEEPFNGLVERTEXATTRIBL2DVPROC GLeeFuncPtr_glVertexAttribL2dv=GLee_Lazy_glVertexAttribL2dv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL3dv #define GLEE_C_DEFINED_glVertexAttribL3dv void __stdcall GLee_Lazy_glVertexAttribL3dv(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttribL3dv(index, v);} GLEEPFNGLVERTEXATTRIBL3DVPROC GLeeFuncPtr_glVertexAttribL3dv=GLee_Lazy_glVertexAttribL3dv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL4dv #define GLEE_C_DEFINED_glVertexAttribL4dv void __stdcall GLee_Lazy_glVertexAttribL4dv(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttribL4dv(index, v);} GLEEPFNGLVERTEXATTRIBL4DVPROC GLeeFuncPtr_glVertexAttribL4dv=GLee_Lazy_glVertexAttribL4dv; #endif #ifndef GLEE_C_DEFINED_glVertexAttribLPointer #define GLEE_C_DEFINED_glVertexAttribLPointer void __stdcall GLee_Lazy_glVertexAttribLPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glVertexAttribLPointer(index, size, type, stride, pointer);} GLEEPFNGLVERTEXATTRIBLPOINTERPROC GLeeFuncPtr_glVertexAttribLPointer=GLee_Lazy_glVertexAttribLPointer; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribLdv #define GLEE_C_DEFINED_glGetVertexAttribLdv void __stdcall GLee_Lazy_glGetVertexAttribLdv(GLuint index, GLenum pname, GLdouble * params) {if (GLeeInit()) glGetVertexAttribLdv(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBLDVPROC GLeeFuncPtr_glGetVertexAttribLdv=GLee_Lazy_glGetVertexAttribLdv; #endif #endif /* GL_ARB_viewport_array */ #ifdef __GLEE_GL_ARB_viewport_array #ifndef GLEE_C_DEFINED_glViewportArrayv #define GLEE_C_DEFINED_glViewportArrayv void __stdcall GLee_Lazy_glViewportArrayv(GLuint first, GLsizei count, const GLfloat * v) {if (GLeeInit()) glViewportArrayv(first, count, v);} GLEEPFNGLVIEWPORTARRAYVPROC GLeeFuncPtr_glViewportArrayv=GLee_Lazy_glViewportArrayv; #endif #ifndef GLEE_C_DEFINED_glViewportIndexedf #define GLEE_C_DEFINED_glViewportIndexedf void __stdcall GLee_Lazy_glViewportIndexedf(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) {if (GLeeInit()) glViewportIndexedf(index, x, y, w, h);} GLEEPFNGLVIEWPORTINDEXEDFPROC GLeeFuncPtr_glViewportIndexedf=GLee_Lazy_glViewportIndexedf; #endif #ifndef GLEE_C_DEFINED_glViewportIndexedfv #define GLEE_C_DEFINED_glViewportIndexedfv void __stdcall GLee_Lazy_glViewportIndexedfv(GLuint index, const GLfloat * v) {if (GLeeInit()) glViewportIndexedfv(index, v);} GLEEPFNGLVIEWPORTINDEXEDFVPROC GLeeFuncPtr_glViewportIndexedfv=GLee_Lazy_glViewportIndexedfv; #endif #ifndef GLEE_C_DEFINED_glScissorArrayv #define GLEE_C_DEFINED_glScissorArrayv void __stdcall GLee_Lazy_glScissorArrayv(GLuint first, GLsizei count, const GLint * v) {if (GLeeInit()) glScissorArrayv(first, count, v);} GLEEPFNGLSCISSORARRAYVPROC GLeeFuncPtr_glScissorArrayv=GLee_Lazy_glScissorArrayv; #endif #ifndef GLEE_C_DEFINED_glScissorIndexed #define GLEE_C_DEFINED_glScissorIndexed void __stdcall GLee_Lazy_glScissorIndexed(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) {if (GLeeInit()) glScissorIndexed(index, left, bottom, width, height);} GLEEPFNGLSCISSORINDEXEDPROC GLeeFuncPtr_glScissorIndexed=GLee_Lazy_glScissorIndexed; #endif #ifndef GLEE_C_DEFINED_glScissorIndexedv #define GLEE_C_DEFINED_glScissorIndexedv void __stdcall GLee_Lazy_glScissorIndexedv(GLuint index, const GLint * v) {if (GLeeInit()) glScissorIndexedv(index, v);} GLEEPFNGLSCISSORINDEXEDVPROC GLeeFuncPtr_glScissorIndexedv=GLee_Lazy_glScissorIndexedv; #endif #ifndef GLEE_C_DEFINED_glDepthRangeArrayv #define GLEE_C_DEFINED_glDepthRangeArrayv void __stdcall GLee_Lazy_glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble * v) {if (GLeeInit()) glDepthRangeArrayv(first, count, v);} GLEEPFNGLDEPTHRANGEARRAYVPROC GLeeFuncPtr_glDepthRangeArrayv=GLee_Lazy_glDepthRangeArrayv; #endif #ifndef GLEE_C_DEFINED_glDepthRangeIndexed #define GLEE_C_DEFINED_glDepthRangeIndexed void __stdcall GLee_Lazy_glDepthRangeIndexed(GLuint index, GLdouble n, GLdouble f) {if (GLeeInit()) glDepthRangeIndexed(index, n, f);} GLEEPFNGLDEPTHRANGEINDEXEDPROC GLeeFuncPtr_glDepthRangeIndexed=GLee_Lazy_glDepthRangeIndexed; #endif #ifndef GLEE_C_DEFINED_glGetFloati_v #define GLEE_C_DEFINED_glGetFloati_v void __stdcall GLee_Lazy_glGetFloati_v(GLenum target, GLuint index, GLfloat * data) {if (GLeeInit()) glGetFloati_v(target, index, data);} GLEEPFNGLGETFLOATI_VPROC GLeeFuncPtr_glGetFloati_v=GLee_Lazy_glGetFloati_v; #endif #ifndef GLEE_C_DEFINED_glGetDoublei_v #define GLEE_C_DEFINED_glGetDoublei_v void __stdcall GLee_Lazy_glGetDoublei_v(GLenum target, GLuint index, GLdouble * data) {if (GLeeInit()) glGetDoublei_v(target, index, data);} GLEEPFNGLGETDOUBLEI_VPROC GLeeFuncPtr_glGetDoublei_v=GLee_Lazy_glGetDoublei_v; #endif #endif /* GL_ARB_cl_event */ #ifdef __GLEE_GL_ARB_cl_event #ifndef GLEE_C_DEFINED_glCreateSyncFromCLeventARB #define GLEE_C_DEFINED_glCreateSyncFromCLeventARB GLsync __stdcall GLee_Lazy_glCreateSyncFromCLeventARB(struct _cl_context * context, struct _cl_event * event, GLbitfield flags) {if (GLeeInit()) return glCreateSyncFromCLeventARB(context, event, flags); return (GLsync)0;} GLEEPFNGLCREATESYNCFROMCLEVENTARBPROC GLeeFuncPtr_glCreateSyncFromCLeventARB=GLee_Lazy_glCreateSyncFromCLeventARB; #endif #endif /* GL_ARB_debug_output */ #ifdef __GLEE_GL_ARB_debug_output #ifndef GLEE_C_DEFINED_glDebugMessageControlARB #define GLEE_C_DEFINED_glDebugMessageControlARB void __stdcall GLee_Lazy_glDebugMessageControlARB(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled) {if (GLeeInit()) glDebugMessageControlARB(source, type, severity, count, ids, enabled);} GLEEPFNGLDEBUGMESSAGECONTROLARBPROC GLeeFuncPtr_glDebugMessageControlARB=GLee_Lazy_glDebugMessageControlARB; #endif #ifndef GLEE_C_DEFINED_glDebugMessageInsertARB #define GLEE_C_DEFINED_glDebugMessageInsertARB void __stdcall GLee_Lazy_glDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf) {if (GLeeInit()) glDebugMessageInsertARB(source, type, id, severity, length, buf);} GLEEPFNGLDEBUGMESSAGEINSERTARBPROC GLeeFuncPtr_glDebugMessageInsertARB=GLee_Lazy_glDebugMessageInsertARB; #endif #ifndef GLEE_C_DEFINED_glDebugMessageCallbackARB #define GLEE_C_DEFINED_glDebugMessageCallbackARB void __stdcall GLee_Lazy_glDebugMessageCallbackARB(GLDEBUGPROCARB callback, const GLvoid * userParam) {if (GLeeInit()) glDebugMessageCallbackARB(callback, userParam);} GLEEPFNGLDEBUGMESSAGECALLBACKARBPROC GLeeFuncPtr_glDebugMessageCallbackARB=GLee_Lazy_glDebugMessageCallbackARB; #endif #ifndef GLEE_C_DEFINED_glGetDebugMessageLogARB #define GLEE_C_DEFINED_glGetDebugMessageLogARB GLuint __stdcall GLee_Lazy_glGetDebugMessageLogARB(GLuint count, GLsizei bufsize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog) {if (GLeeInit()) return glGetDebugMessageLogARB(count, bufsize, sources, types, ids, severities, lengths, messageLog); return (GLuint)0;} GLEEPFNGLGETDEBUGMESSAGELOGARBPROC GLeeFuncPtr_glGetDebugMessageLogARB=GLee_Lazy_glGetDebugMessageLogARB; #endif #endif /* GL_ARB_robustness */ #ifdef __GLEE_GL_ARB_robustness #ifndef GLEE_C_DEFINED_glGetGraphicsResetStatusARB #define GLEE_C_DEFINED_glGetGraphicsResetStatusARB GLenum __stdcall GLee_Lazy_glGetGraphicsResetStatusARB(void) {if (GLeeInit()) return glGetGraphicsResetStatusARB(); return (GLenum)0;} GLEEPFNGLGETGRAPHICSRESETSTATUSARBPROC GLeeFuncPtr_glGetGraphicsResetStatusARB=GLee_Lazy_glGetGraphicsResetStatusARB; #endif #ifndef GLEE_C_DEFINED_glGetnMapdvARB #define GLEE_C_DEFINED_glGetnMapdvARB void __stdcall GLee_Lazy_glGetnMapdvARB(GLenum target, GLenum query, GLsizei bufSize, GLdouble * v) {if (GLeeInit()) glGetnMapdvARB(target, query, bufSize, v);} GLEEPFNGLGETNMAPDVARBPROC GLeeFuncPtr_glGetnMapdvARB=GLee_Lazy_glGetnMapdvARB; #endif #ifndef GLEE_C_DEFINED_glGetnMapfvARB #define GLEE_C_DEFINED_glGetnMapfvARB void __stdcall GLee_Lazy_glGetnMapfvARB(GLenum target, GLenum query, GLsizei bufSize, GLfloat * v) {if (GLeeInit()) glGetnMapfvARB(target, query, bufSize, v);} GLEEPFNGLGETNMAPFVARBPROC GLeeFuncPtr_glGetnMapfvARB=GLee_Lazy_glGetnMapfvARB; #endif #ifndef GLEE_C_DEFINED_glGetnMapivARB #define GLEE_C_DEFINED_glGetnMapivARB void __stdcall GLee_Lazy_glGetnMapivARB(GLenum target, GLenum query, GLsizei bufSize, GLint * v) {if (GLeeInit()) glGetnMapivARB(target, query, bufSize, v);} GLEEPFNGLGETNMAPIVARBPROC GLeeFuncPtr_glGetnMapivARB=GLee_Lazy_glGetnMapivARB; #endif #ifndef GLEE_C_DEFINED_glGetnPixelMapfvARB #define GLEE_C_DEFINED_glGetnPixelMapfvARB void __stdcall GLee_Lazy_glGetnPixelMapfvARB(GLenum map, GLsizei bufSize, GLfloat * values) {if (GLeeInit()) glGetnPixelMapfvARB(map, bufSize, values);} GLEEPFNGLGETNPIXELMAPFVARBPROC GLeeFuncPtr_glGetnPixelMapfvARB=GLee_Lazy_glGetnPixelMapfvARB; #endif #ifndef GLEE_C_DEFINED_glGetnPixelMapuivARB #define GLEE_C_DEFINED_glGetnPixelMapuivARB void __stdcall GLee_Lazy_glGetnPixelMapuivARB(GLenum map, GLsizei bufSize, GLuint * values) {if (GLeeInit()) glGetnPixelMapuivARB(map, bufSize, values);} GLEEPFNGLGETNPIXELMAPUIVARBPROC GLeeFuncPtr_glGetnPixelMapuivARB=GLee_Lazy_glGetnPixelMapuivARB; #endif #ifndef GLEE_C_DEFINED_glGetnPixelMapusvARB #define GLEE_C_DEFINED_glGetnPixelMapusvARB void __stdcall GLee_Lazy_glGetnPixelMapusvARB(GLenum map, GLsizei bufSize, GLushort * values) {if (GLeeInit()) glGetnPixelMapusvARB(map, bufSize, values);} GLEEPFNGLGETNPIXELMAPUSVARBPROC GLeeFuncPtr_glGetnPixelMapusvARB=GLee_Lazy_glGetnPixelMapusvARB; #endif #ifndef GLEE_C_DEFINED_glGetnPolygonStippleARB #define GLEE_C_DEFINED_glGetnPolygonStippleARB void __stdcall GLee_Lazy_glGetnPolygonStippleARB(GLsizei bufSize, GLubyte * pattern) {if (GLeeInit()) glGetnPolygonStippleARB(bufSize, pattern);} GLEEPFNGLGETNPOLYGONSTIPPLEARBPROC GLeeFuncPtr_glGetnPolygonStippleARB=GLee_Lazy_glGetnPolygonStippleARB; #endif #ifndef GLEE_C_DEFINED_glGetnColorTableARB #define GLEE_C_DEFINED_glGetnColorTableARB void __stdcall GLee_Lazy_glGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid * table) {if (GLeeInit()) glGetnColorTableARB(target, format, type, bufSize, table);} GLEEPFNGLGETNCOLORTABLEARBPROC GLeeFuncPtr_glGetnColorTableARB=GLee_Lazy_glGetnColorTableARB; #endif #ifndef GLEE_C_DEFINED_glGetnConvolutionFilterARB #define GLEE_C_DEFINED_glGetnConvolutionFilterARB void __stdcall GLee_Lazy_glGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid * image) {if (GLeeInit()) glGetnConvolutionFilterARB(target, format, type, bufSize, image);} GLEEPFNGLGETNCONVOLUTIONFILTERARBPROC GLeeFuncPtr_glGetnConvolutionFilterARB=GLee_Lazy_glGetnConvolutionFilterARB; #endif #ifndef GLEE_C_DEFINED_glGetnSeparableFilterARB #define GLEE_C_DEFINED_glGetnSeparableFilterARB void __stdcall GLee_Lazy_glGetnSeparableFilterARB(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid * row, GLsizei columnBufSize, GLvoid * column, GLvoid * span) {if (GLeeInit()) glGetnSeparableFilterARB(target, format, type, rowBufSize, row, columnBufSize, column, span);} GLEEPFNGLGETNSEPARABLEFILTERARBPROC GLeeFuncPtr_glGetnSeparableFilterARB=GLee_Lazy_glGetnSeparableFilterARB; #endif #ifndef GLEE_C_DEFINED_glGetnHistogramARB #define GLEE_C_DEFINED_glGetnHistogramARB void __stdcall GLee_Lazy_glGetnHistogramARB(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid * values) {if (GLeeInit()) glGetnHistogramARB(target, reset, format, type, bufSize, values);} GLEEPFNGLGETNHISTOGRAMARBPROC GLeeFuncPtr_glGetnHistogramARB=GLee_Lazy_glGetnHistogramARB; #endif #ifndef GLEE_C_DEFINED_glGetnMinmaxARB #define GLEE_C_DEFINED_glGetnMinmaxARB void __stdcall GLee_Lazy_glGetnMinmaxARB(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid * values) {if (GLeeInit()) glGetnMinmaxARB(target, reset, format, type, bufSize, values);} GLEEPFNGLGETNMINMAXARBPROC GLeeFuncPtr_glGetnMinmaxARB=GLee_Lazy_glGetnMinmaxARB; #endif #ifndef GLEE_C_DEFINED_glGetnTexImageARB #define GLEE_C_DEFINED_glGetnTexImageARB void __stdcall GLee_Lazy_glGetnTexImageARB(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid * img) {if (GLeeInit()) glGetnTexImageARB(target, level, format, type, bufSize, img);} GLEEPFNGLGETNTEXIMAGEARBPROC GLeeFuncPtr_glGetnTexImageARB=GLee_Lazy_glGetnTexImageARB; #endif #ifndef GLEE_C_DEFINED_glReadnPixelsARB #define GLEE_C_DEFINED_glReadnPixelsARB void __stdcall GLee_Lazy_glReadnPixelsARB(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid * data) {if (GLeeInit()) glReadnPixelsARB(x, y, width, height, format, type, bufSize, data);} GLEEPFNGLREADNPIXELSARBPROC GLeeFuncPtr_glReadnPixelsARB=GLee_Lazy_glReadnPixelsARB; #endif #ifndef GLEE_C_DEFINED_glGetnCompressedTexImageARB #define GLEE_C_DEFINED_glGetnCompressedTexImageARB void __stdcall GLee_Lazy_glGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, GLvoid * img) {if (GLeeInit()) glGetnCompressedTexImageARB(target, lod, bufSize, img);} GLEEPFNGLGETNCOMPRESSEDTEXIMAGEARBPROC GLeeFuncPtr_glGetnCompressedTexImageARB=GLee_Lazy_glGetnCompressedTexImageARB; #endif #ifndef GLEE_C_DEFINED_glGetnUniformfvARB #define GLEE_C_DEFINED_glGetnUniformfvARB void __stdcall GLee_Lazy_glGetnUniformfvARB(GLuint program, GLint location, GLsizei bufSize, GLfloat * params) {if (GLeeInit()) glGetnUniformfvARB(program, location, bufSize, params);} GLEEPFNGLGETNUNIFORMFVARBPROC GLeeFuncPtr_glGetnUniformfvARB=GLee_Lazy_glGetnUniformfvARB; #endif #ifndef GLEE_C_DEFINED_glGetnUniformivARB #define GLEE_C_DEFINED_glGetnUniformivARB void __stdcall GLee_Lazy_glGetnUniformivARB(GLuint program, GLint location, GLsizei bufSize, GLint * params) {if (GLeeInit()) glGetnUniformivARB(program, location, bufSize, params);} GLEEPFNGLGETNUNIFORMIVARBPROC GLeeFuncPtr_glGetnUniformivARB=GLee_Lazy_glGetnUniformivARB; #endif #ifndef GLEE_C_DEFINED_glGetnUniformuivARB #define GLEE_C_DEFINED_glGetnUniformuivARB void __stdcall GLee_Lazy_glGetnUniformuivARB(GLuint program, GLint location, GLsizei bufSize, GLuint * params) {if (GLeeInit()) glGetnUniformuivARB(program, location, bufSize, params);} GLEEPFNGLGETNUNIFORMUIVARBPROC GLeeFuncPtr_glGetnUniformuivARB=GLee_Lazy_glGetnUniformuivARB; #endif #ifndef GLEE_C_DEFINED_glGetnUniformdvARB #define GLEE_C_DEFINED_glGetnUniformdvARB void __stdcall GLee_Lazy_glGetnUniformdvARB(GLuint program, GLint location, GLsizei bufSize, GLdouble * params) {if (GLeeInit()) glGetnUniformdvARB(program, location, bufSize, params);} GLEEPFNGLGETNUNIFORMDVARBPROC GLeeFuncPtr_glGetnUniformdvARB=GLee_Lazy_glGetnUniformdvARB; #endif #endif /* GL_ARB_shader_stencil_export */ #ifdef __GLEE_GL_ARB_shader_stencil_export #endif /* GL_ARB_base_instance */ #ifdef __GLEE_GL_ARB_base_instance #ifndef GLEE_C_DEFINED_glDrawArraysInstancedBaseInstance #define GLEE_C_DEFINED_glDrawArraysInstancedBaseInstance void __stdcall GLee_Lazy_glDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance) {if (GLeeInit()) glDrawArraysInstancedBaseInstance(mode, first, count, instancecount, baseinstance);} GLEEPFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC GLeeFuncPtr_glDrawArraysInstancedBaseInstance=GLee_Lazy_glDrawArraysInstancedBaseInstance; #endif #ifndef GLEE_C_DEFINED_glDrawElementsInstancedBaseInstance #define GLEE_C_DEFINED_glDrawElementsInstancedBaseInstance void __stdcall GLee_Lazy_glDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLuint baseinstance) {if (GLeeInit()) glDrawElementsInstancedBaseInstance(mode, count, type, indices, instancecount, baseinstance);} GLEEPFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC GLeeFuncPtr_glDrawElementsInstancedBaseInstance=GLee_Lazy_glDrawElementsInstancedBaseInstance; #endif #ifndef GLEE_C_DEFINED_glDrawElementsInstancedBaseVertexBaseInstance #define GLEE_C_DEFINED_glDrawElementsInstancedBaseVertexBaseInstance void __stdcall GLee_Lazy_glDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance) {if (GLeeInit()) glDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, indices, instancecount, basevertex, baseinstance);} GLEEPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC GLeeFuncPtr_glDrawElementsInstancedBaseVertexBaseInstance=GLee_Lazy_glDrawElementsInstancedBaseVertexBaseInstance; #endif #endif /* GL_ARB_shading_language_420pack */ #ifdef __GLEE_GL_ARB_shading_language_420pack #endif /* GL_ARB_transform_feedback_instanced */ #ifdef __GLEE_GL_ARB_transform_feedback_instanced #ifndef GLEE_C_DEFINED_glDrawTransformFeedbackInstanced #define GLEE_C_DEFINED_glDrawTransformFeedbackInstanced void __stdcall GLee_Lazy_glDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount) {if (GLeeInit()) glDrawTransformFeedbackInstanced(mode, id, instancecount);} GLEEPFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC GLeeFuncPtr_glDrawTransformFeedbackInstanced=GLee_Lazy_glDrawTransformFeedbackInstanced; #endif #ifndef GLEE_C_DEFINED_glDrawTransformFeedbackStreamInstanced #define GLEE_C_DEFINED_glDrawTransformFeedbackStreamInstanced void __stdcall GLee_Lazy_glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount) {if (GLeeInit()) glDrawTransformFeedbackStreamInstanced(mode, id, stream, instancecount);} GLEEPFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC GLeeFuncPtr_glDrawTransformFeedbackStreamInstanced=GLee_Lazy_glDrawTransformFeedbackStreamInstanced; #endif #endif /* GL_ARB_compressed_texture_pixel_storage */ #ifdef __GLEE_GL_ARB_compressed_texture_pixel_storage #endif /* GL_ARB_conservative_depth */ #ifdef __GLEE_GL_ARB_conservative_depth #endif /* GL_ARB_internalformat_query */ #ifdef __GLEE_GL_ARB_internalformat_query #ifndef GLEE_C_DEFINED_glGetInternalformativ #define GLEE_C_DEFINED_glGetInternalformativ void __stdcall GLee_Lazy_glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint * params) {if (GLeeInit()) glGetInternalformativ(target, internalformat, pname, bufSize, params);} GLEEPFNGLGETINTERNALFORMATIVPROC GLeeFuncPtr_glGetInternalformativ=GLee_Lazy_glGetInternalformativ; #endif #endif /* GL_ARB_map_buffer_alignment */ #ifdef __GLEE_GL_ARB_map_buffer_alignment #endif /* GL_ARB_shader_atomic_counters */ #ifdef __GLEE_GL_ARB_shader_atomic_counters #ifndef GLEE_C_DEFINED_glGetActiveAtomicCounterBufferiv #define GLEE_C_DEFINED_glGetActiveAtomicCounterBufferiv void __stdcall GLee_Lazy_glGetActiveAtomicCounterBufferiv(GLuint program, GLuint bufferIndex, GLenum pname, GLint * params) {if (GLeeInit()) glGetActiveAtomicCounterBufferiv(program, bufferIndex, pname, params);} GLEEPFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC GLeeFuncPtr_glGetActiveAtomicCounterBufferiv=GLee_Lazy_glGetActiveAtomicCounterBufferiv; #endif #endif /* GL_ARB_shader_image_load_store */ #ifdef __GLEE_GL_ARB_shader_image_load_store #ifndef GLEE_C_DEFINED_glBindImageTexture #define GLEE_C_DEFINED_glBindImageTexture void __stdcall GLee_Lazy_glBindImageTexture(GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format) {if (GLeeInit()) glBindImageTexture(unit, texture, level, layered, layer, access, format);} GLEEPFNGLBINDIMAGETEXTUREPROC GLeeFuncPtr_glBindImageTexture=GLee_Lazy_glBindImageTexture; #endif #ifndef GLEE_C_DEFINED_glMemoryBarrier #define GLEE_C_DEFINED_glMemoryBarrier void __stdcall GLee_Lazy_glMemoryBarrier(GLbitfield barriers) {if (GLeeInit()) glMemoryBarrier(barriers);} GLEEPFNGLMEMORYBARRIERPROC GLeeFuncPtr_glMemoryBarrier=GLee_Lazy_glMemoryBarrier; #endif #endif /* GL_ARB_shading_language_packing */ #ifdef __GLEE_GL_ARB_shading_language_packing #endif /* GL_ARB_texture_storage */ #ifdef __GLEE_GL_ARB_texture_storage #ifndef GLEE_C_DEFINED_glTexStorage1D #define GLEE_C_DEFINED_glTexStorage1D void __stdcall GLee_Lazy_glTexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {if (GLeeInit()) glTexStorage1D(target, levels, internalformat, width);} GLEEPFNGLTEXSTORAGE1DPROC GLeeFuncPtr_glTexStorage1D=GLee_Lazy_glTexStorage1D; #endif #ifndef GLEE_C_DEFINED_glTexStorage2D #define GLEE_C_DEFINED_glTexStorage2D void __stdcall GLee_Lazy_glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {if (GLeeInit()) glTexStorage2D(target, levels, internalformat, width, height);} GLEEPFNGLTEXSTORAGE2DPROC GLeeFuncPtr_glTexStorage2D=GLee_Lazy_glTexStorage2D; #endif #ifndef GLEE_C_DEFINED_glTexStorage3D #define GLEE_C_DEFINED_glTexStorage3D void __stdcall GLee_Lazy_glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {if (GLeeInit()) glTexStorage3D(target, levels, internalformat, width, height, depth);} GLEEPFNGLTEXSTORAGE3DPROC GLeeFuncPtr_glTexStorage3D=GLee_Lazy_glTexStorage3D; #endif #ifndef GLEE_C_DEFINED_glTextureStorage1DEXT #define GLEE_C_DEFINED_glTextureStorage1DEXT void __stdcall GLee_Lazy_glTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width) {if (GLeeInit()) glTextureStorage1DEXT(texture, target, levels, internalformat, width);} GLEEPFNGLTEXTURESTORAGE1DEXTPROC GLeeFuncPtr_glTextureStorage1DEXT=GLee_Lazy_glTextureStorage1DEXT; #endif #ifndef GLEE_C_DEFINED_glTextureStorage2DEXT #define GLEE_C_DEFINED_glTextureStorage2DEXT void __stdcall GLee_Lazy_glTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) {if (GLeeInit()) glTextureStorage2DEXT(texture, target, levels, internalformat, width, height);} GLEEPFNGLTEXTURESTORAGE2DEXTPROC GLeeFuncPtr_glTextureStorage2DEXT=GLee_Lazy_glTextureStorage2DEXT; #endif #ifndef GLEE_C_DEFINED_glTextureStorage3DEXT #define GLEE_C_DEFINED_glTextureStorage3DEXT void __stdcall GLee_Lazy_glTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) {if (GLeeInit()) glTextureStorage3DEXT(texture, target, levels, internalformat, width, height, depth);} GLEEPFNGLTEXTURESTORAGE3DEXTPROC GLeeFuncPtr_glTextureStorage3DEXT=GLee_Lazy_glTextureStorage3DEXT; #endif #endif /* GL_KHR_texture_compression_astc_ldr */ #ifdef __GLEE_GL_KHR_texture_compression_astc_ldr #endif /* GL_KHR_debug */ #ifdef __GLEE_GL_KHR_debug #ifndef GLEE_C_DEFINED_glDebugMessageControl #define GLEE_C_DEFINED_glDebugMessageControl void __stdcall GLee_Lazy_glDebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled) {if (GLeeInit()) glDebugMessageControl(source, type, severity, count, ids, enabled);} GLEEPFNGLDEBUGMESSAGECONTROLPROC GLeeFuncPtr_glDebugMessageControl=GLee_Lazy_glDebugMessageControl; #endif #ifndef GLEE_C_DEFINED_glDebugMessageInsert #define GLEE_C_DEFINED_glDebugMessageInsert void __stdcall GLee_Lazy_glDebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf) {if (GLeeInit()) glDebugMessageInsert(source, type, id, severity, length, buf);} GLEEPFNGLDEBUGMESSAGEINSERTPROC GLeeFuncPtr_glDebugMessageInsert=GLee_Lazy_glDebugMessageInsert; #endif #ifndef GLEE_C_DEFINED_glDebugMessageCallback #define GLEE_C_DEFINED_glDebugMessageCallback void __stdcall GLee_Lazy_glDebugMessageCallback(GLDEBUGPROC callback, const void * userParam) {if (GLeeInit()) glDebugMessageCallback(callback, userParam);} GLEEPFNGLDEBUGMESSAGECALLBACKPROC GLeeFuncPtr_glDebugMessageCallback=GLee_Lazy_glDebugMessageCallback; #endif #ifndef GLEE_C_DEFINED_glGetDebugMessageLog #define GLEE_C_DEFINED_glGetDebugMessageLog GLuint __stdcall GLee_Lazy_glGetDebugMessageLog(GLuint count, GLsizei bufsize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog) {if (GLeeInit()) return glGetDebugMessageLog(count, bufsize, sources, types, ids, severities, lengths, messageLog); return (GLuint)0;} GLEEPFNGLGETDEBUGMESSAGELOGPROC GLeeFuncPtr_glGetDebugMessageLog=GLee_Lazy_glGetDebugMessageLog; #endif #ifndef GLEE_C_DEFINED_glPushDebugGroup #define GLEE_C_DEFINED_glPushDebugGroup void __stdcall GLee_Lazy_glPushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar * message) {if (GLeeInit()) glPushDebugGroup(source, id, length, message);} GLEEPFNGLPUSHDEBUGGROUPPROC GLeeFuncPtr_glPushDebugGroup=GLee_Lazy_glPushDebugGroup; #endif #ifndef GLEE_C_DEFINED_glPopDebugGroup #define GLEE_C_DEFINED_glPopDebugGroup void __stdcall GLee_Lazy_glPopDebugGroup(void) {if (GLeeInit()) glPopDebugGroup();} GLEEPFNGLPOPDEBUGGROUPPROC GLeeFuncPtr_glPopDebugGroup=GLee_Lazy_glPopDebugGroup; #endif #ifndef GLEE_C_DEFINED_glObjectLabel #define GLEE_C_DEFINED_glObjectLabel void __stdcall GLee_Lazy_glObjectLabel(GLenum identifier, GLuint name, GLsizei length, const GLchar * label) {if (GLeeInit()) glObjectLabel(identifier, name, length, label);} GLEEPFNGLOBJECTLABELPROC GLeeFuncPtr_glObjectLabel=GLee_Lazy_glObjectLabel; #endif #ifndef GLEE_C_DEFINED_glGetObjectLabel #define GLEE_C_DEFINED_glGetObjectLabel void __stdcall GLee_Lazy_glGetObjectLabel(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label) {if (GLeeInit()) glGetObjectLabel(identifier, name, bufSize, length, label);} GLEEPFNGLGETOBJECTLABELPROC GLeeFuncPtr_glGetObjectLabel=GLee_Lazy_glGetObjectLabel; #endif #ifndef GLEE_C_DEFINED_glObjectPtrLabel #define GLEE_C_DEFINED_glObjectPtrLabel void __stdcall GLee_Lazy_glObjectPtrLabel(const void * ptr, GLsizei length, const GLchar * label) {if (GLeeInit()) glObjectPtrLabel(ptr, length, label);} GLEEPFNGLOBJECTPTRLABELPROC GLeeFuncPtr_glObjectPtrLabel=GLee_Lazy_glObjectPtrLabel; #endif #ifndef GLEE_C_DEFINED_glGetObjectPtrLabel #define GLEE_C_DEFINED_glGetObjectPtrLabel void __stdcall GLee_Lazy_glGetObjectPtrLabel(const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label) {if (GLeeInit()) glGetObjectPtrLabel(ptr, bufSize, length, label);} GLEEPFNGLGETOBJECTPTRLABELPROC GLeeFuncPtr_glGetObjectPtrLabel=GLee_Lazy_glGetObjectPtrLabel; #endif #endif /* GL_ARB_arrays_of_arrays */ #ifdef __GLEE_GL_ARB_arrays_of_arrays #endif /* GL_ARB_clear_buffer_object */ #ifdef __GLEE_GL_ARB_clear_buffer_object #ifndef GLEE_C_DEFINED_glClearBufferData #define GLEE_C_DEFINED_glClearBufferData void __stdcall GLee_Lazy_glClearBufferData(GLenum target, GLenum internalformat, GLenum format, GLenum type, const void * data) {if (GLeeInit()) glClearBufferData(target, internalformat, format, type, data);} GLEEPFNGLCLEARBUFFERDATAPROC GLeeFuncPtr_glClearBufferData=GLee_Lazy_glClearBufferData; #endif #ifndef GLEE_C_DEFINED_glClearBufferSubData #define GLEE_C_DEFINED_glClearBufferSubData void __stdcall GLee_Lazy_glClearBufferSubData(GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data) {if (GLeeInit()) glClearBufferSubData(target, internalformat, offset, size, format, type, data);} GLEEPFNGLCLEARBUFFERSUBDATAPROC GLeeFuncPtr_glClearBufferSubData=GLee_Lazy_glClearBufferSubData; #endif #ifndef GLEE_C_DEFINED_glClearNamedBufferDataEXT #define GLEE_C_DEFINED_glClearNamedBufferDataEXT void __stdcall GLee_Lazy_glClearNamedBufferDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void * data) {if (GLeeInit()) glClearNamedBufferDataEXT(buffer, internalformat, format, type, data);} GLEEPFNGLCLEARNAMEDBUFFERDATAEXTPROC GLeeFuncPtr_glClearNamedBufferDataEXT=GLee_Lazy_glClearNamedBufferDataEXT; #endif #ifndef GLEE_C_DEFINED_glClearNamedBufferSubDataEXT #define GLEE_C_DEFINED_glClearNamedBufferSubDataEXT void __stdcall GLee_Lazy_glClearNamedBufferSubDataEXT(GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void * data) {if (GLeeInit()) glClearNamedBufferSubDataEXT(buffer, internalformat, format, type, offset, size, data);} GLEEPFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC GLeeFuncPtr_glClearNamedBufferSubDataEXT=GLee_Lazy_glClearNamedBufferSubDataEXT; #endif #endif /* GL_ARB_compute_shader */ #ifdef __GLEE_GL_ARB_compute_shader #ifndef GLEE_C_DEFINED_glDispatchCompute #define GLEE_C_DEFINED_glDispatchCompute void __stdcall GLee_Lazy_glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) {if (GLeeInit()) glDispatchCompute(num_groups_x, num_groups_y, num_groups_z);} GLEEPFNGLDISPATCHCOMPUTEPROC GLeeFuncPtr_glDispatchCompute=GLee_Lazy_glDispatchCompute; #endif #ifndef GLEE_C_DEFINED_glDispatchComputeIndirect #define GLEE_C_DEFINED_glDispatchComputeIndirect void __stdcall GLee_Lazy_glDispatchComputeIndirect(GLintptr indirect) {if (GLeeInit()) glDispatchComputeIndirect(indirect);} GLEEPFNGLDISPATCHCOMPUTEINDIRECTPROC GLeeFuncPtr_glDispatchComputeIndirect=GLee_Lazy_glDispatchComputeIndirect; #endif #endif /* GL_ARB_copy_image */ #ifdef __GLEE_GL_ARB_copy_image #ifndef GLEE_C_DEFINED_glCopyImageSubData #define GLEE_C_DEFINED_glCopyImageSubData void __stdcall GLee_Lazy_glCopyImageSubData(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth) {if (GLeeInit()) glCopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);} GLEEPFNGLCOPYIMAGESUBDATAPROC GLeeFuncPtr_glCopyImageSubData=GLee_Lazy_glCopyImageSubData; #endif #endif /* GL_ARB_texture_view */ #ifdef __GLEE_GL_ARB_texture_view #ifndef GLEE_C_DEFINED_glTextureView #define GLEE_C_DEFINED_glTextureView void __stdcall GLee_Lazy_glTextureView(GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers) {if (GLeeInit()) glTextureView(texture, target, origtexture, internalformat, minlevel, numlevels, minlayer, numlayers);} GLEEPFNGLTEXTUREVIEWPROC GLeeFuncPtr_glTextureView=GLee_Lazy_glTextureView; #endif #endif /* GL_ARB_vertex_attrib_binding */ #ifdef __GLEE_GL_ARB_vertex_attrib_binding #ifndef GLEE_C_DEFINED_glBindVertexBuffer #define GLEE_C_DEFINED_glBindVertexBuffer void __stdcall GLee_Lazy_glBindVertexBuffer(GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) {if (GLeeInit()) glBindVertexBuffer(bindingindex, buffer, offset, stride);} GLEEPFNGLBINDVERTEXBUFFERPROC GLeeFuncPtr_glBindVertexBuffer=GLee_Lazy_glBindVertexBuffer; #endif #ifndef GLEE_C_DEFINED_glVertexAttribFormat #define GLEE_C_DEFINED_glVertexAttribFormat void __stdcall GLee_Lazy_glVertexAttribFormat(GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) {if (GLeeInit()) glVertexAttribFormat(attribindex, size, type, normalized, relativeoffset);} GLEEPFNGLVERTEXATTRIBFORMATPROC GLeeFuncPtr_glVertexAttribFormat=GLee_Lazy_glVertexAttribFormat; #endif #ifndef GLEE_C_DEFINED_glVertexAttribIFormat #define GLEE_C_DEFINED_glVertexAttribIFormat void __stdcall GLee_Lazy_glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) {if (GLeeInit()) glVertexAttribIFormat(attribindex, size, type, relativeoffset);} GLEEPFNGLVERTEXATTRIBIFORMATPROC GLeeFuncPtr_glVertexAttribIFormat=GLee_Lazy_glVertexAttribIFormat; #endif #ifndef GLEE_C_DEFINED_glVertexAttribLFormat #define GLEE_C_DEFINED_glVertexAttribLFormat void __stdcall GLee_Lazy_glVertexAttribLFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) {if (GLeeInit()) glVertexAttribLFormat(attribindex, size, type, relativeoffset);} GLEEPFNGLVERTEXATTRIBLFORMATPROC GLeeFuncPtr_glVertexAttribLFormat=GLee_Lazy_glVertexAttribLFormat; #endif #ifndef GLEE_C_DEFINED_glVertexAttribBinding #define GLEE_C_DEFINED_glVertexAttribBinding void __stdcall GLee_Lazy_glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) {if (GLeeInit()) glVertexAttribBinding(attribindex, bindingindex);} GLEEPFNGLVERTEXATTRIBBINDINGPROC GLeeFuncPtr_glVertexAttribBinding=GLee_Lazy_glVertexAttribBinding; #endif #ifndef GLEE_C_DEFINED_glVertexBindingDivisor #define GLEE_C_DEFINED_glVertexBindingDivisor void __stdcall GLee_Lazy_glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) {if (GLeeInit()) glVertexBindingDivisor(bindingindex, divisor);} GLEEPFNGLVERTEXBINDINGDIVISORPROC GLeeFuncPtr_glVertexBindingDivisor=GLee_Lazy_glVertexBindingDivisor; #endif #ifndef GLEE_C_DEFINED_glVertexArrayBindVertexBufferEXT #define GLEE_C_DEFINED_glVertexArrayBindVertexBufferEXT void __stdcall GLee_Lazy_glVertexArrayBindVertexBufferEXT(GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride) {if (GLeeInit()) glVertexArrayBindVertexBufferEXT(vaobj, bindingindex, buffer, offset, stride);} GLEEPFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC GLeeFuncPtr_glVertexArrayBindVertexBufferEXT=GLee_Lazy_glVertexArrayBindVertexBufferEXT; #endif #ifndef GLEE_C_DEFINED_glVertexArrayVertexAttribFormatEXT #define GLEE_C_DEFINED_glVertexArrayVertexAttribFormatEXT void __stdcall GLee_Lazy_glVertexArrayVertexAttribFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset) {if (GLeeInit()) glVertexArrayVertexAttribFormatEXT(vaobj, attribindex, size, type, normalized, relativeoffset);} GLEEPFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC GLeeFuncPtr_glVertexArrayVertexAttribFormatEXT=GLee_Lazy_glVertexArrayVertexAttribFormatEXT; #endif #ifndef GLEE_C_DEFINED_glVertexArrayVertexAttribIFormatEXT #define GLEE_C_DEFINED_glVertexArrayVertexAttribIFormatEXT void __stdcall GLee_Lazy_glVertexArrayVertexAttribIFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) {if (GLeeInit()) glVertexArrayVertexAttribIFormatEXT(vaobj, attribindex, size, type, relativeoffset);} GLEEPFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC GLeeFuncPtr_glVertexArrayVertexAttribIFormatEXT=GLee_Lazy_glVertexArrayVertexAttribIFormatEXT; #endif #ifndef GLEE_C_DEFINED_glVertexArrayVertexAttribLFormatEXT #define GLEE_C_DEFINED_glVertexArrayVertexAttribLFormatEXT void __stdcall GLee_Lazy_glVertexArrayVertexAttribLFormatEXT(GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) {if (GLeeInit()) glVertexArrayVertexAttribLFormatEXT(vaobj, attribindex, size, type, relativeoffset);} GLEEPFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC GLeeFuncPtr_glVertexArrayVertexAttribLFormatEXT=GLee_Lazy_glVertexArrayVertexAttribLFormatEXT; #endif #ifndef GLEE_C_DEFINED_glVertexArrayVertexAttribBindingEXT #define GLEE_C_DEFINED_glVertexArrayVertexAttribBindingEXT void __stdcall GLee_Lazy_glVertexArrayVertexAttribBindingEXT(GLuint vaobj, GLuint attribindex, GLuint bindingindex) {if (GLeeInit()) glVertexArrayVertexAttribBindingEXT(vaobj, attribindex, bindingindex);} GLEEPFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC GLeeFuncPtr_glVertexArrayVertexAttribBindingEXT=GLee_Lazy_glVertexArrayVertexAttribBindingEXT; #endif #ifndef GLEE_C_DEFINED_glVertexArrayVertexBindingDivisorEXT #define GLEE_C_DEFINED_glVertexArrayVertexBindingDivisorEXT void __stdcall GLee_Lazy_glVertexArrayVertexBindingDivisorEXT(GLuint vaobj, GLuint bindingindex, GLuint divisor) {if (GLeeInit()) glVertexArrayVertexBindingDivisorEXT(vaobj, bindingindex, divisor);} GLEEPFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC GLeeFuncPtr_glVertexArrayVertexBindingDivisorEXT=GLee_Lazy_glVertexArrayVertexBindingDivisorEXT; #endif #endif /* GL_ARB_robustness_isolation */ #ifdef __GLEE_GL_ARB_robustness_isolation #endif /* GL_ARB_ES3_compatibility */ #ifdef __GLEE_GL_ARB_ES3_compatibility #endif /* GL_ARB_explicit_uniform_location */ #ifdef __GLEE_GL_ARB_explicit_uniform_location #endif /* GL_ARB_fragment_layer_viewport */ #ifdef __GLEE_GL_ARB_fragment_layer_viewport #endif /* GL_ARB_framebuffer_no_attachments */ #ifdef __GLEE_GL_ARB_framebuffer_no_attachments #ifndef GLEE_C_DEFINED_glFramebufferParameteri #define GLEE_C_DEFINED_glFramebufferParameteri void __stdcall GLee_Lazy_glFramebufferParameteri(GLenum target, GLenum pname, GLint param) {if (GLeeInit()) glFramebufferParameteri(target, pname, param);} GLEEPFNGLFRAMEBUFFERPARAMETERIPROC GLeeFuncPtr_glFramebufferParameteri=GLee_Lazy_glFramebufferParameteri; #endif #ifndef GLEE_C_DEFINED_glGetFramebufferParameteriv #define GLEE_C_DEFINED_glGetFramebufferParameteriv void __stdcall GLee_Lazy_glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetFramebufferParameteriv(target, pname, params);} GLEEPFNGLGETFRAMEBUFFERPARAMETERIVPROC GLeeFuncPtr_glGetFramebufferParameteriv=GLee_Lazy_glGetFramebufferParameteriv; #endif #ifndef GLEE_C_DEFINED_glNamedFramebufferParameteriEXT #define GLEE_C_DEFINED_glNamedFramebufferParameteriEXT void __stdcall GLee_Lazy_glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param) {if (GLeeInit()) glNamedFramebufferParameteriEXT(framebuffer, pname, param);} GLEEPFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC GLeeFuncPtr_glNamedFramebufferParameteriEXT=GLee_Lazy_glNamedFramebufferParameteriEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedFramebufferParameterivEXT #define GLEE_C_DEFINED_glGetNamedFramebufferParameterivEXT void __stdcall GLee_Lazy_glGetNamedFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint * params) {if (GLeeInit()) glGetNamedFramebufferParameterivEXT(framebuffer, pname, params);} GLEEPFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC GLeeFuncPtr_glGetNamedFramebufferParameterivEXT=GLee_Lazy_glGetNamedFramebufferParameterivEXT; #endif #endif /* GL_ARB_internalformat_query2 */ #ifdef __GLEE_GL_ARB_internalformat_query2 #ifndef GLEE_C_DEFINED_glGetInternalformati64v #define GLEE_C_DEFINED_glGetInternalformati64v void __stdcall GLee_Lazy_glGetInternalformati64v(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 * params) {if (GLeeInit()) glGetInternalformati64v(target, internalformat, pname, bufSize, params);} GLEEPFNGLGETINTERNALFORMATI64VPROC GLeeFuncPtr_glGetInternalformati64v=GLee_Lazy_glGetInternalformati64v; #endif #endif /* GL_ARB_invalidate_subdata */ #ifdef __GLEE_GL_ARB_invalidate_subdata #ifndef GLEE_C_DEFINED_glInvalidateTexSubImage #define GLEE_C_DEFINED_glInvalidateTexSubImage void __stdcall GLee_Lazy_glInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth) {if (GLeeInit()) glInvalidateTexSubImage(texture, level, xoffset, yoffset, zoffset, width, height, depth);} GLEEPFNGLINVALIDATETEXSUBIMAGEPROC GLeeFuncPtr_glInvalidateTexSubImage=GLee_Lazy_glInvalidateTexSubImage; #endif #ifndef GLEE_C_DEFINED_glInvalidateTexImage #define GLEE_C_DEFINED_glInvalidateTexImage void __stdcall GLee_Lazy_glInvalidateTexImage(GLuint texture, GLint level) {if (GLeeInit()) glInvalidateTexImage(texture, level);} GLEEPFNGLINVALIDATETEXIMAGEPROC GLeeFuncPtr_glInvalidateTexImage=GLee_Lazy_glInvalidateTexImage; #endif #ifndef GLEE_C_DEFINED_glInvalidateBufferSubData #define GLEE_C_DEFINED_glInvalidateBufferSubData void __stdcall GLee_Lazy_glInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length) {if (GLeeInit()) glInvalidateBufferSubData(buffer, offset, length);} GLEEPFNGLINVALIDATEBUFFERSUBDATAPROC GLeeFuncPtr_glInvalidateBufferSubData=GLee_Lazy_glInvalidateBufferSubData; #endif #ifndef GLEE_C_DEFINED_glInvalidateBufferData #define GLEE_C_DEFINED_glInvalidateBufferData void __stdcall GLee_Lazy_glInvalidateBufferData(GLuint buffer) {if (GLeeInit()) glInvalidateBufferData(buffer);} GLEEPFNGLINVALIDATEBUFFERDATAPROC GLeeFuncPtr_glInvalidateBufferData=GLee_Lazy_glInvalidateBufferData; #endif #ifndef GLEE_C_DEFINED_glInvalidateFramebuffer #define GLEE_C_DEFINED_glInvalidateFramebuffer void __stdcall GLee_Lazy_glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments) {if (GLeeInit()) glInvalidateFramebuffer(target, numAttachments, attachments);} GLEEPFNGLINVALIDATEFRAMEBUFFERPROC GLeeFuncPtr_glInvalidateFramebuffer=GLee_Lazy_glInvalidateFramebuffer; #endif #ifndef GLEE_C_DEFINED_glInvalidateSubFramebuffer #define GLEE_C_DEFINED_glInvalidateSubFramebuffer void __stdcall GLee_Lazy_glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height) {if (GLeeInit()) glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);} GLEEPFNGLINVALIDATESUBFRAMEBUFFERPROC GLeeFuncPtr_glInvalidateSubFramebuffer=GLee_Lazy_glInvalidateSubFramebuffer; #endif #endif /* GL_ARB_multi_draw_indirect */ #ifdef __GLEE_GL_ARB_multi_draw_indirect #ifndef GLEE_C_DEFINED_glMultiDrawArraysIndirect #define GLEE_C_DEFINED_glMultiDrawArraysIndirect void __stdcall GLee_Lazy_glMultiDrawArraysIndirect(GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride) {if (GLeeInit()) glMultiDrawArraysIndirect(mode, indirect, drawcount, stride);} GLEEPFNGLMULTIDRAWARRAYSINDIRECTPROC GLeeFuncPtr_glMultiDrawArraysIndirect=GLee_Lazy_glMultiDrawArraysIndirect; #endif #ifndef GLEE_C_DEFINED_glMultiDrawElementsIndirect #define GLEE_C_DEFINED_glMultiDrawElementsIndirect void __stdcall GLee_Lazy_glMultiDrawElementsIndirect(GLenum mode, GLenum type, const void * indirect, GLsizei drawcount, GLsizei stride) {if (GLeeInit()) glMultiDrawElementsIndirect(mode, type, indirect, drawcount, stride);} GLEEPFNGLMULTIDRAWELEMENTSINDIRECTPROC GLeeFuncPtr_glMultiDrawElementsIndirect=GLee_Lazy_glMultiDrawElementsIndirect; #endif #endif /* GL_ARB_program_interface_query */ #ifdef __GLEE_GL_ARB_program_interface_query #ifndef GLEE_C_DEFINED_glGetProgramInterfaceiv #define GLEE_C_DEFINED_glGetProgramInterfaceiv void __stdcall GLee_Lazy_glGetProgramInterfaceiv(GLuint program, GLenum programInterface, GLenum pname, GLint * params) {if (GLeeInit()) glGetProgramInterfaceiv(program, programInterface, pname, params);} GLEEPFNGLGETPROGRAMINTERFACEIVPROC GLeeFuncPtr_glGetProgramInterfaceiv=GLee_Lazy_glGetProgramInterfaceiv; #endif #ifndef GLEE_C_DEFINED_glGetProgramResourceIndex #define GLEE_C_DEFINED_glGetProgramResourceIndex GLuint __stdcall GLee_Lazy_glGetProgramResourceIndex(GLuint program, GLenum programInterface, const GLchar * name) {if (GLeeInit()) return glGetProgramResourceIndex(program, programInterface, name); return (GLuint)0;} GLEEPFNGLGETPROGRAMRESOURCEINDEXPROC GLeeFuncPtr_glGetProgramResourceIndex=GLee_Lazy_glGetProgramResourceIndex; #endif #ifndef GLEE_C_DEFINED_glGetProgramResourceName #define GLEE_C_DEFINED_glGetProgramResourceName void __stdcall GLee_Lazy_glGetProgramResourceName(GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, GLchar * name) {if (GLeeInit()) glGetProgramResourceName(program, programInterface, index, bufSize, length, name);} GLEEPFNGLGETPROGRAMRESOURCENAMEPROC GLeeFuncPtr_glGetProgramResourceName=GLee_Lazy_glGetProgramResourceName; #endif #ifndef GLEE_C_DEFINED_glGetProgramResourceiv #define GLEE_C_DEFINED_glGetProgramResourceiv void __stdcall GLee_Lazy_glGetProgramResourceiv(GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLint * params) {if (GLeeInit()) glGetProgramResourceiv(program, programInterface, index, propCount, props, bufSize, length, params);} GLEEPFNGLGETPROGRAMRESOURCEIVPROC GLeeFuncPtr_glGetProgramResourceiv=GLee_Lazy_glGetProgramResourceiv; #endif #ifndef GLEE_C_DEFINED_glGetProgramResourceLocation #define GLEE_C_DEFINED_glGetProgramResourceLocation GLint __stdcall GLee_Lazy_glGetProgramResourceLocation(GLuint program, GLenum programInterface, const GLchar * name) {if (GLeeInit()) return glGetProgramResourceLocation(program, programInterface, name); return (GLint)0;} GLEEPFNGLGETPROGRAMRESOURCELOCATIONPROC GLeeFuncPtr_glGetProgramResourceLocation=GLee_Lazy_glGetProgramResourceLocation; #endif #ifndef GLEE_C_DEFINED_glGetProgramResourceLocationIndex #define GLEE_C_DEFINED_glGetProgramResourceLocationIndex GLint __stdcall GLee_Lazy_glGetProgramResourceLocationIndex(GLuint program, GLenum programInterface, const GLchar * name) {if (GLeeInit()) return glGetProgramResourceLocationIndex(program, programInterface, name); return (GLint)0;} GLEEPFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC GLeeFuncPtr_glGetProgramResourceLocationIndex=GLee_Lazy_glGetProgramResourceLocationIndex; #endif #endif /* GL_ARB_robust_buffer_access_behavior */ #ifdef __GLEE_GL_ARB_robust_buffer_access_behavior #endif /* GL_ARB_shader_image_size */ #ifdef __GLEE_GL_ARB_shader_image_size #endif /* GL_ARB_shader_storage_buffer_object */ #ifdef __GLEE_GL_ARB_shader_storage_buffer_object #ifndef GLEE_C_DEFINED_glShaderStorageBlockBinding #define GLEE_C_DEFINED_glShaderStorageBlockBinding void __stdcall GLee_Lazy_glShaderStorageBlockBinding(GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding) {if (GLeeInit()) glShaderStorageBlockBinding(program, storageBlockIndex, storageBlockBinding);} GLEEPFNGLSHADERSTORAGEBLOCKBINDINGPROC GLeeFuncPtr_glShaderStorageBlockBinding=GLee_Lazy_glShaderStorageBlockBinding; #endif #endif /* GL_ARB_stencil_texturing */ #ifdef __GLEE_GL_ARB_stencil_texturing #endif /* GL_ARB_texture_buffer_range */ #ifdef __GLEE_GL_ARB_texture_buffer_range #ifndef GLEE_C_DEFINED_glTexBufferRange #define GLEE_C_DEFINED_glTexBufferRange void __stdcall GLee_Lazy_glTexBufferRange(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) {if (GLeeInit()) glTexBufferRange(target, internalformat, buffer, offset, size);} GLEEPFNGLTEXBUFFERRANGEPROC GLeeFuncPtr_glTexBufferRange=GLee_Lazy_glTexBufferRange; #endif #ifndef GLEE_C_DEFINED_glTextureBufferRangeEXT #define GLEE_C_DEFINED_glTextureBufferRangeEXT void __stdcall GLee_Lazy_glTextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size) {if (GLeeInit()) glTextureBufferRangeEXT(texture, target, internalformat, buffer, offset, size);} GLEEPFNGLTEXTUREBUFFERRANGEEXTPROC GLeeFuncPtr_glTextureBufferRangeEXT=GLee_Lazy_glTextureBufferRangeEXT; #endif #endif /* GL_ARB_texture_query_levels */ #ifdef __GLEE_GL_ARB_texture_query_levels #endif /* GL_ARB_texture_storage_multisample */ #ifdef __GLEE_GL_ARB_texture_storage_multisample #ifndef GLEE_C_DEFINED_glTexStorage2DMultisample #define GLEE_C_DEFINED_glTexStorage2DMultisample void __stdcall GLee_Lazy_glTexStorage2DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) {if (GLeeInit()) glTexStorage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);} GLEEPFNGLTEXSTORAGE2DMULTISAMPLEPROC GLeeFuncPtr_glTexStorage2DMultisample=GLee_Lazy_glTexStorage2DMultisample; #endif #ifndef GLEE_C_DEFINED_glTexStorage3DMultisample #define GLEE_C_DEFINED_glTexStorage3DMultisample void __stdcall GLee_Lazy_glTexStorage3DMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) {if (GLeeInit()) glTexStorage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);} GLEEPFNGLTEXSTORAGE3DMULTISAMPLEPROC GLeeFuncPtr_glTexStorage3DMultisample=GLee_Lazy_glTexStorage3DMultisample; #endif #ifndef GLEE_C_DEFINED_glTextureStorage2DMultisampleEXT #define GLEE_C_DEFINED_glTextureStorage2DMultisampleEXT void __stdcall GLee_Lazy_glTextureStorage2DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations) {if (GLeeInit()) glTextureStorage2DMultisampleEXT(texture, target, samples, internalformat, width, height, fixedsamplelocations);} GLEEPFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC GLeeFuncPtr_glTextureStorage2DMultisampleEXT=GLee_Lazy_glTextureStorage2DMultisampleEXT; #endif #ifndef GLEE_C_DEFINED_glTextureStorage3DMultisampleEXT #define GLEE_C_DEFINED_glTextureStorage3DMultisampleEXT void __stdcall GLee_Lazy_glTextureStorage3DMultisampleEXT(GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations) {if (GLeeInit()) glTextureStorage3DMultisampleEXT(texture, target, samples, internalformat, width, height, depth, fixedsamplelocations);} GLEEPFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC GLeeFuncPtr_glTextureStorage3DMultisampleEXT=GLee_Lazy_glTextureStorage3DMultisampleEXT; #endif #endif /* GL_EXT_abgr */ #ifdef __GLEE_GL_EXT_abgr #endif /* GL_EXT_blend_color */ #ifdef __GLEE_GL_EXT_blend_color #ifndef GLEE_C_DEFINED_glBlendColorEXT #define GLEE_C_DEFINED_glBlendColorEXT void __stdcall GLee_Lazy_glBlendColorEXT(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {if (GLeeInit()) glBlendColorEXT(red, green, blue, alpha);} GLEEPFNGLBLENDCOLOREXTPROC GLeeFuncPtr_glBlendColorEXT=GLee_Lazy_glBlendColorEXT; #endif #endif /* GL_EXT_polygon_offset */ #ifdef __GLEE_GL_EXT_polygon_offset #ifndef GLEE_C_DEFINED_glPolygonOffsetEXT #define GLEE_C_DEFINED_glPolygonOffsetEXT void __stdcall GLee_Lazy_glPolygonOffsetEXT(GLfloat factor, GLfloat bias) {if (GLeeInit()) glPolygonOffsetEXT(factor, bias);} GLEEPFNGLPOLYGONOFFSETEXTPROC GLeeFuncPtr_glPolygonOffsetEXT=GLee_Lazy_glPolygonOffsetEXT; #endif #endif /* GL_EXT_texture */ #ifdef __GLEE_GL_EXT_texture #endif /* GL_EXT_texture3D */ #ifdef __GLEE_GL_EXT_texture3D #ifndef GLEE_C_DEFINED_glTexImage3DEXT #define GLEE_C_DEFINED_glTexImage3DEXT void __stdcall GLee_Lazy_glTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTexImage3DEXT(target, level, internalformat, width, height, depth, border, format, type, pixels);} GLEEPFNGLTEXIMAGE3DEXTPROC GLeeFuncPtr_glTexImage3DEXT=GLee_Lazy_glTexImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glTexSubImage3DEXT #define GLEE_C_DEFINED_glTexSubImage3DEXT void __stdcall GLee_Lazy_glTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);} GLEEPFNGLTEXSUBIMAGE3DEXTPROC GLeeFuncPtr_glTexSubImage3DEXT=GLee_Lazy_glTexSubImage3DEXT; #endif #endif /* GL_SGIS_texture_filter4 */ #ifdef __GLEE_GL_SGIS_texture_filter4 #ifndef GLEE_C_DEFINED_glGetTexFilterFuncSGIS #define GLEE_C_DEFINED_glGetTexFilterFuncSGIS void __stdcall GLee_Lazy_glGetTexFilterFuncSGIS(GLenum target, GLenum filter, GLfloat * weights) {if (GLeeInit()) glGetTexFilterFuncSGIS(target, filter, weights);} GLEEPFNGLGETTEXFILTERFUNCSGISPROC GLeeFuncPtr_glGetTexFilterFuncSGIS=GLee_Lazy_glGetTexFilterFuncSGIS; #endif #ifndef GLEE_C_DEFINED_glTexFilterFuncSGIS #define GLEE_C_DEFINED_glTexFilterFuncSGIS void __stdcall GLee_Lazy_glTexFilterFuncSGIS(GLenum target, GLenum filter, GLsizei n, const GLfloat * weights) {if (GLeeInit()) glTexFilterFuncSGIS(target, filter, n, weights);} GLEEPFNGLTEXFILTERFUNCSGISPROC GLeeFuncPtr_glTexFilterFuncSGIS=GLee_Lazy_glTexFilterFuncSGIS; #endif #endif /* GL_EXT_subtexture */ #ifdef __GLEE_GL_EXT_subtexture #ifndef GLEE_C_DEFINED_glTexSubImage1DEXT #define GLEE_C_DEFINED_glTexSubImage1DEXT void __stdcall GLee_Lazy_glTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTexSubImage1DEXT(target, level, xoffset, width, format, type, pixels);} GLEEPFNGLTEXSUBIMAGE1DEXTPROC GLeeFuncPtr_glTexSubImage1DEXT=GLee_Lazy_glTexSubImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glTexSubImage2DEXT #define GLEE_C_DEFINED_glTexSubImage2DEXT void __stdcall GLee_Lazy_glTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTexSubImage2DEXT(target, level, xoffset, yoffset, width, height, format, type, pixels);} GLEEPFNGLTEXSUBIMAGE2DEXTPROC GLeeFuncPtr_glTexSubImage2DEXT=GLee_Lazy_glTexSubImage2DEXT; #endif #endif /* GL_EXT_copy_texture */ #ifdef __GLEE_GL_EXT_copy_texture #ifndef GLEE_C_DEFINED_glCopyTexImage1DEXT #define GLEE_C_DEFINED_glCopyTexImage1DEXT void __stdcall GLee_Lazy_glCopyTexImage1DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) {if (GLeeInit()) glCopyTexImage1DEXT(target, level, internalformat, x, y, width, border);} GLEEPFNGLCOPYTEXIMAGE1DEXTPROC GLeeFuncPtr_glCopyTexImage1DEXT=GLee_Lazy_glCopyTexImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyTexImage2DEXT #define GLEE_C_DEFINED_glCopyTexImage2DEXT void __stdcall GLee_Lazy_glCopyTexImage2DEXT(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) {if (GLeeInit()) glCopyTexImage2DEXT(target, level, internalformat, x, y, width, height, border);} GLEEPFNGLCOPYTEXIMAGE2DEXTPROC GLeeFuncPtr_glCopyTexImage2DEXT=GLee_Lazy_glCopyTexImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyTexSubImage1DEXT #define GLEE_C_DEFINED_glCopyTexSubImage1DEXT void __stdcall GLee_Lazy_glCopyTexSubImage1DEXT(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) {if (GLeeInit()) glCopyTexSubImage1DEXT(target, level, xoffset, x, y, width);} GLEEPFNGLCOPYTEXSUBIMAGE1DEXTPROC GLeeFuncPtr_glCopyTexSubImage1DEXT=GLee_Lazy_glCopyTexSubImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyTexSubImage2DEXT #define GLEE_C_DEFINED_glCopyTexSubImage2DEXT void __stdcall GLee_Lazy_glCopyTexSubImage2DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) {if (GLeeInit()) glCopyTexSubImage2DEXT(target, level, xoffset, yoffset, x, y, width, height);} GLEEPFNGLCOPYTEXSUBIMAGE2DEXTPROC GLeeFuncPtr_glCopyTexSubImage2DEXT=GLee_Lazy_glCopyTexSubImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyTexSubImage3DEXT #define GLEE_C_DEFINED_glCopyTexSubImage3DEXT void __stdcall GLee_Lazy_glCopyTexSubImage3DEXT(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {if (GLeeInit()) glCopyTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, x, y, width, height);} GLEEPFNGLCOPYTEXSUBIMAGE3DEXTPROC GLeeFuncPtr_glCopyTexSubImage3DEXT=GLee_Lazy_glCopyTexSubImage3DEXT; #endif #endif /* GL_EXT_histogram */ #ifdef __GLEE_GL_EXT_histogram #ifndef GLEE_C_DEFINED_glGetHistogramEXT #define GLEE_C_DEFINED_glGetHistogramEXT void __stdcall GLee_Lazy_glGetHistogramEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values) {if (GLeeInit()) glGetHistogramEXT(target, reset, format, type, values);} GLEEPFNGLGETHISTOGRAMEXTPROC GLeeFuncPtr_glGetHistogramEXT=GLee_Lazy_glGetHistogramEXT; #endif #ifndef GLEE_C_DEFINED_glGetHistogramParameterfvEXT #define GLEE_C_DEFINED_glGetHistogramParameterfvEXT void __stdcall GLee_Lazy_glGetHistogramParameterfvEXT(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetHistogramParameterfvEXT(target, pname, params);} GLEEPFNGLGETHISTOGRAMPARAMETERFVEXTPROC GLeeFuncPtr_glGetHistogramParameterfvEXT=GLee_Lazy_glGetHistogramParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetHistogramParameterivEXT #define GLEE_C_DEFINED_glGetHistogramParameterivEXT void __stdcall GLee_Lazy_glGetHistogramParameterivEXT(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetHistogramParameterivEXT(target, pname, params);} GLEEPFNGLGETHISTOGRAMPARAMETERIVEXTPROC GLeeFuncPtr_glGetHistogramParameterivEXT=GLee_Lazy_glGetHistogramParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glGetMinmaxEXT #define GLEE_C_DEFINED_glGetMinmaxEXT void __stdcall GLee_Lazy_glGetMinmaxEXT(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values) {if (GLeeInit()) glGetMinmaxEXT(target, reset, format, type, values);} GLEEPFNGLGETMINMAXEXTPROC GLeeFuncPtr_glGetMinmaxEXT=GLee_Lazy_glGetMinmaxEXT; #endif #ifndef GLEE_C_DEFINED_glGetMinmaxParameterfvEXT #define GLEE_C_DEFINED_glGetMinmaxParameterfvEXT void __stdcall GLee_Lazy_glGetMinmaxParameterfvEXT(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetMinmaxParameterfvEXT(target, pname, params);} GLEEPFNGLGETMINMAXPARAMETERFVEXTPROC GLeeFuncPtr_glGetMinmaxParameterfvEXT=GLee_Lazy_glGetMinmaxParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetMinmaxParameterivEXT #define GLEE_C_DEFINED_glGetMinmaxParameterivEXT void __stdcall GLee_Lazy_glGetMinmaxParameterivEXT(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetMinmaxParameterivEXT(target, pname, params);} GLEEPFNGLGETMINMAXPARAMETERIVEXTPROC GLeeFuncPtr_glGetMinmaxParameterivEXT=GLee_Lazy_glGetMinmaxParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glHistogramEXT #define GLEE_C_DEFINED_glHistogramEXT void __stdcall GLee_Lazy_glHistogramEXT(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink) {if (GLeeInit()) glHistogramEXT(target, width, internalformat, sink);} GLEEPFNGLHISTOGRAMEXTPROC GLeeFuncPtr_glHistogramEXT=GLee_Lazy_glHistogramEXT; #endif #ifndef GLEE_C_DEFINED_glMinmaxEXT #define GLEE_C_DEFINED_glMinmaxEXT void __stdcall GLee_Lazy_glMinmaxEXT(GLenum target, GLenum internalformat, GLboolean sink) {if (GLeeInit()) glMinmaxEXT(target, internalformat, sink);} GLEEPFNGLMINMAXEXTPROC GLeeFuncPtr_glMinmaxEXT=GLee_Lazy_glMinmaxEXT; #endif #ifndef GLEE_C_DEFINED_glResetHistogramEXT #define GLEE_C_DEFINED_glResetHistogramEXT void __stdcall GLee_Lazy_glResetHistogramEXT(GLenum target) {if (GLeeInit()) glResetHistogramEXT(target);} GLEEPFNGLRESETHISTOGRAMEXTPROC GLeeFuncPtr_glResetHistogramEXT=GLee_Lazy_glResetHistogramEXT; #endif #ifndef GLEE_C_DEFINED_glResetMinmaxEXT #define GLEE_C_DEFINED_glResetMinmaxEXT void __stdcall GLee_Lazy_glResetMinmaxEXT(GLenum target) {if (GLeeInit()) glResetMinmaxEXT(target);} GLEEPFNGLRESETMINMAXEXTPROC GLeeFuncPtr_glResetMinmaxEXT=GLee_Lazy_glResetMinmaxEXT; #endif #endif /* GL_EXT_convolution */ #ifdef __GLEE_GL_EXT_convolution #ifndef GLEE_C_DEFINED_glConvolutionFilter1DEXT #define GLEE_C_DEFINED_glConvolutionFilter1DEXT void __stdcall GLee_Lazy_glConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image) {if (GLeeInit()) glConvolutionFilter1DEXT(target, internalformat, width, format, type, image);} GLEEPFNGLCONVOLUTIONFILTER1DEXTPROC GLeeFuncPtr_glConvolutionFilter1DEXT=GLee_Lazy_glConvolutionFilter1DEXT; #endif #ifndef GLEE_C_DEFINED_glConvolutionFilter2DEXT #define GLEE_C_DEFINED_glConvolutionFilter2DEXT void __stdcall GLee_Lazy_glConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image) {if (GLeeInit()) glConvolutionFilter2DEXT(target, internalformat, width, height, format, type, image);} GLEEPFNGLCONVOLUTIONFILTER2DEXTPROC GLeeFuncPtr_glConvolutionFilter2DEXT=GLee_Lazy_glConvolutionFilter2DEXT; #endif #ifndef GLEE_C_DEFINED_glConvolutionParameterfEXT #define GLEE_C_DEFINED_glConvolutionParameterfEXT void __stdcall GLee_Lazy_glConvolutionParameterfEXT(GLenum target, GLenum pname, GLfloat params) {if (GLeeInit()) glConvolutionParameterfEXT(target, pname, params);} GLEEPFNGLCONVOLUTIONPARAMETERFEXTPROC GLeeFuncPtr_glConvolutionParameterfEXT=GLee_Lazy_glConvolutionParameterfEXT; #endif #ifndef GLEE_C_DEFINED_glConvolutionParameterfvEXT #define GLEE_C_DEFINED_glConvolutionParameterfvEXT void __stdcall GLee_Lazy_glConvolutionParameterfvEXT(GLenum target, GLenum pname, const GLfloat * params) {if (GLeeInit()) glConvolutionParameterfvEXT(target, pname, params);} GLEEPFNGLCONVOLUTIONPARAMETERFVEXTPROC GLeeFuncPtr_glConvolutionParameterfvEXT=GLee_Lazy_glConvolutionParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glConvolutionParameteriEXT #define GLEE_C_DEFINED_glConvolutionParameteriEXT void __stdcall GLee_Lazy_glConvolutionParameteriEXT(GLenum target, GLenum pname, GLint params) {if (GLeeInit()) glConvolutionParameteriEXT(target, pname, params);} GLEEPFNGLCONVOLUTIONPARAMETERIEXTPROC GLeeFuncPtr_glConvolutionParameteriEXT=GLee_Lazy_glConvolutionParameteriEXT; #endif #ifndef GLEE_C_DEFINED_glConvolutionParameterivEXT #define GLEE_C_DEFINED_glConvolutionParameterivEXT void __stdcall GLee_Lazy_glConvolutionParameterivEXT(GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glConvolutionParameterivEXT(target, pname, params);} GLEEPFNGLCONVOLUTIONPARAMETERIVEXTPROC GLeeFuncPtr_glConvolutionParameterivEXT=GLee_Lazy_glConvolutionParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glCopyConvolutionFilter1DEXT #define GLEE_C_DEFINED_glCopyConvolutionFilter1DEXT void __stdcall GLee_Lazy_glCopyConvolutionFilter1DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) {if (GLeeInit()) glCopyConvolutionFilter1DEXT(target, internalformat, x, y, width);} GLEEPFNGLCOPYCONVOLUTIONFILTER1DEXTPROC GLeeFuncPtr_glCopyConvolutionFilter1DEXT=GLee_Lazy_glCopyConvolutionFilter1DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyConvolutionFilter2DEXT #define GLEE_C_DEFINED_glCopyConvolutionFilter2DEXT void __stdcall GLee_Lazy_glCopyConvolutionFilter2DEXT(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) {if (GLeeInit()) glCopyConvolutionFilter2DEXT(target, internalformat, x, y, width, height);} GLEEPFNGLCOPYCONVOLUTIONFILTER2DEXTPROC GLeeFuncPtr_glCopyConvolutionFilter2DEXT=GLee_Lazy_glCopyConvolutionFilter2DEXT; #endif #ifndef GLEE_C_DEFINED_glGetConvolutionFilterEXT #define GLEE_C_DEFINED_glGetConvolutionFilterEXT void __stdcall GLee_Lazy_glGetConvolutionFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid * image) {if (GLeeInit()) glGetConvolutionFilterEXT(target, format, type, image);} GLEEPFNGLGETCONVOLUTIONFILTEREXTPROC GLeeFuncPtr_glGetConvolutionFilterEXT=GLee_Lazy_glGetConvolutionFilterEXT; #endif #ifndef GLEE_C_DEFINED_glGetConvolutionParameterfvEXT #define GLEE_C_DEFINED_glGetConvolutionParameterfvEXT void __stdcall GLee_Lazy_glGetConvolutionParameterfvEXT(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetConvolutionParameterfvEXT(target, pname, params);} GLEEPFNGLGETCONVOLUTIONPARAMETERFVEXTPROC GLeeFuncPtr_glGetConvolutionParameterfvEXT=GLee_Lazy_glGetConvolutionParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetConvolutionParameterivEXT #define GLEE_C_DEFINED_glGetConvolutionParameterivEXT void __stdcall GLee_Lazy_glGetConvolutionParameterivEXT(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetConvolutionParameterivEXT(target, pname, params);} GLEEPFNGLGETCONVOLUTIONPARAMETERIVEXTPROC GLeeFuncPtr_glGetConvolutionParameterivEXT=GLee_Lazy_glGetConvolutionParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glGetSeparableFilterEXT #define GLEE_C_DEFINED_glGetSeparableFilterEXT void __stdcall GLee_Lazy_glGetSeparableFilterEXT(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span) {if (GLeeInit()) glGetSeparableFilterEXT(target, format, type, row, column, span);} GLEEPFNGLGETSEPARABLEFILTEREXTPROC GLeeFuncPtr_glGetSeparableFilterEXT=GLee_Lazy_glGetSeparableFilterEXT; #endif #ifndef GLEE_C_DEFINED_glSeparableFilter2DEXT #define GLEE_C_DEFINED_glSeparableFilter2DEXT void __stdcall GLee_Lazy_glSeparableFilter2DEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column) {if (GLeeInit()) glSeparableFilter2DEXT(target, internalformat, width, height, format, type, row, column);} GLEEPFNGLSEPARABLEFILTER2DEXTPROC GLeeFuncPtr_glSeparableFilter2DEXT=GLee_Lazy_glSeparableFilter2DEXT; #endif #endif /* GL_SGI_color_matrix */ #ifdef __GLEE_GL_SGI_color_matrix #endif /* GL_SGI_color_table */ #ifdef __GLEE_GL_SGI_color_table #ifndef GLEE_C_DEFINED_glColorTableSGI #define GLEE_C_DEFINED_glColorTableSGI void __stdcall GLee_Lazy_glColorTableSGI(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table) {if (GLeeInit()) glColorTableSGI(target, internalformat, width, format, type, table);} GLEEPFNGLCOLORTABLESGIPROC GLeeFuncPtr_glColorTableSGI=GLee_Lazy_glColorTableSGI; #endif #ifndef GLEE_C_DEFINED_glColorTableParameterfvSGI #define GLEE_C_DEFINED_glColorTableParameterfvSGI void __stdcall GLee_Lazy_glColorTableParameterfvSGI(GLenum target, GLenum pname, const GLfloat * params) {if (GLeeInit()) glColorTableParameterfvSGI(target, pname, params);} GLEEPFNGLCOLORTABLEPARAMETERFVSGIPROC GLeeFuncPtr_glColorTableParameterfvSGI=GLee_Lazy_glColorTableParameterfvSGI; #endif #ifndef GLEE_C_DEFINED_glColorTableParameterivSGI #define GLEE_C_DEFINED_glColorTableParameterivSGI void __stdcall GLee_Lazy_glColorTableParameterivSGI(GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glColorTableParameterivSGI(target, pname, params);} GLEEPFNGLCOLORTABLEPARAMETERIVSGIPROC GLeeFuncPtr_glColorTableParameterivSGI=GLee_Lazy_glColorTableParameterivSGI; #endif #ifndef GLEE_C_DEFINED_glCopyColorTableSGI #define GLEE_C_DEFINED_glCopyColorTableSGI void __stdcall GLee_Lazy_glCopyColorTableSGI(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width) {if (GLeeInit()) glCopyColorTableSGI(target, internalformat, x, y, width);} GLEEPFNGLCOPYCOLORTABLESGIPROC GLeeFuncPtr_glCopyColorTableSGI=GLee_Lazy_glCopyColorTableSGI; #endif #ifndef GLEE_C_DEFINED_glGetColorTableSGI #define GLEE_C_DEFINED_glGetColorTableSGI void __stdcall GLee_Lazy_glGetColorTableSGI(GLenum target, GLenum format, GLenum type, GLvoid * table) {if (GLeeInit()) glGetColorTableSGI(target, format, type, table);} GLEEPFNGLGETCOLORTABLESGIPROC GLeeFuncPtr_glGetColorTableSGI=GLee_Lazy_glGetColorTableSGI; #endif #ifndef GLEE_C_DEFINED_glGetColorTableParameterfvSGI #define GLEE_C_DEFINED_glGetColorTableParameterfvSGI void __stdcall GLee_Lazy_glGetColorTableParameterfvSGI(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetColorTableParameterfvSGI(target, pname, params);} GLEEPFNGLGETCOLORTABLEPARAMETERFVSGIPROC GLeeFuncPtr_glGetColorTableParameterfvSGI=GLee_Lazy_glGetColorTableParameterfvSGI; #endif #ifndef GLEE_C_DEFINED_glGetColorTableParameterivSGI #define GLEE_C_DEFINED_glGetColorTableParameterivSGI void __stdcall GLee_Lazy_glGetColorTableParameterivSGI(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetColorTableParameterivSGI(target, pname, params);} GLEEPFNGLGETCOLORTABLEPARAMETERIVSGIPROC GLeeFuncPtr_glGetColorTableParameterivSGI=GLee_Lazy_glGetColorTableParameterivSGI; #endif #endif /* GL_SGIS_pixel_texture */ #ifdef __GLEE_GL_SGIS_pixel_texture #ifndef GLEE_C_DEFINED_glPixelTexGenParameteriSGIS #define GLEE_C_DEFINED_glPixelTexGenParameteriSGIS void __stdcall GLee_Lazy_glPixelTexGenParameteriSGIS(GLenum pname, GLint param) {if (GLeeInit()) glPixelTexGenParameteriSGIS(pname, param);} GLEEPFNGLPIXELTEXGENPARAMETERISGISPROC GLeeFuncPtr_glPixelTexGenParameteriSGIS=GLee_Lazy_glPixelTexGenParameteriSGIS; #endif #ifndef GLEE_C_DEFINED_glPixelTexGenParameterivSGIS #define GLEE_C_DEFINED_glPixelTexGenParameterivSGIS void __stdcall GLee_Lazy_glPixelTexGenParameterivSGIS(GLenum pname, const GLint * params) {if (GLeeInit()) glPixelTexGenParameterivSGIS(pname, params);} GLEEPFNGLPIXELTEXGENPARAMETERIVSGISPROC GLeeFuncPtr_glPixelTexGenParameterivSGIS=GLee_Lazy_glPixelTexGenParameterivSGIS; #endif #ifndef GLEE_C_DEFINED_glPixelTexGenParameterfSGIS #define GLEE_C_DEFINED_glPixelTexGenParameterfSGIS void __stdcall GLee_Lazy_glPixelTexGenParameterfSGIS(GLenum pname, GLfloat param) {if (GLeeInit()) glPixelTexGenParameterfSGIS(pname, param);} GLEEPFNGLPIXELTEXGENPARAMETERFSGISPROC GLeeFuncPtr_glPixelTexGenParameterfSGIS=GLee_Lazy_glPixelTexGenParameterfSGIS; #endif #ifndef GLEE_C_DEFINED_glPixelTexGenParameterfvSGIS #define GLEE_C_DEFINED_glPixelTexGenParameterfvSGIS void __stdcall GLee_Lazy_glPixelTexGenParameterfvSGIS(GLenum pname, const GLfloat * params) {if (GLeeInit()) glPixelTexGenParameterfvSGIS(pname, params);} GLEEPFNGLPIXELTEXGENPARAMETERFVSGISPROC GLeeFuncPtr_glPixelTexGenParameterfvSGIS=GLee_Lazy_glPixelTexGenParameterfvSGIS; #endif #ifndef GLEE_C_DEFINED_glGetPixelTexGenParameterivSGIS #define GLEE_C_DEFINED_glGetPixelTexGenParameterivSGIS void __stdcall GLee_Lazy_glGetPixelTexGenParameterivSGIS(GLenum pname, GLint * params) {if (GLeeInit()) glGetPixelTexGenParameterivSGIS(pname, params);} GLEEPFNGLGETPIXELTEXGENPARAMETERIVSGISPROC GLeeFuncPtr_glGetPixelTexGenParameterivSGIS=GLee_Lazy_glGetPixelTexGenParameterivSGIS; #endif #ifndef GLEE_C_DEFINED_glGetPixelTexGenParameterfvSGIS #define GLEE_C_DEFINED_glGetPixelTexGenParameterfvSGIS void __stdcall GLee_Lazy_glGetPixelTexGenParameterfvSGIS(GLenum pname, GLfloat * params) {if (GLeeInit()) glGetPixelTexGenParameterfvSGIS(pname, params);} GLEEPFNGLGETPIXELTEXGENPARAMETERFVSGISPROC GLeeFuncPtr_glGetPixelTexGenParameterfvSGIS=GLee_Lazy_glGetPixelTexGenParameterfvSGIS; #endif #endif /* GL_SGIX_pixel_texture */ #ifdef __GLEE_GL_SGIX_pixel_texture #ifndef GLEE_C_DEFINED_glPixelTexGenSGIX #define GLEE_C_DEFINED_glPixelTexGenSGIX void __stdcall GLee_Lazy_glPixelTexGenSGIX(GLenum mode) {if (GLeeInit()) glPixelTexGenSGIX(mode);} GLEEPFNGLPIXELTEXGENSGIXPROC GLeeFuncPtr_glPixelTexGenSGIX=GLee_Lazy_glPixelTexGenSGIX; #endif #endif /* GL_SGIS_texture4D */ #ifdef __GLEE_GL_SGIS_texture4D #ifndef GLEE_C_DEFINED_glTexImage4DSGIS #define GLEE_C_DEFINED_glTexImage4DSGIS void __stdcall GLee_Lazy_glTexImage4DSGIS(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTexImage4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, pixels);} GLEEPFNGLTEXIMAGE4DSGISPROC GLeeFuncPtr_glTexImage4DSGIS=GLee_Lazy_glTexImage4DSGIS; #endif #ifndef GLEE_C_DEFINED_glTexSubImage4DSGIS #define GLEE_C_DEFINED_glTexSubImage4DSGIS void __stdcall GLee_Lazy_glTexSubImage4DSGIS(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTexSubImage4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels);} GLEEPFNGLTEXSUBIMAGE4DSGISPROC GLeeFuncPtr_glTexSubImage4DSGIS=GLee_Lazy_glTexSubImage4DSGIS; #endif #endif /* GL_SGI_texture_color_table */ #ifdef __GLEE_GL_SGI_texture_color_table #endif /* GL_EXT_cmyka */ #ifdef __GLEE_GL_EXT_cmyka #endif /* GL_EXT_texture_object */ #ifdef __GLEE_GL_EXT_texture_object #ifndef GLEE_C_DEFINED_glAreTexturesResidentEXT #define GLEE_C_DEFINED_glAreTexturesResidentEXT GLboolean __stdcall GLee_Lazy_glAreTexturesResidentEXT(GLsizei n, const GLuint * textures, GLboolean * residences) {if (GLeeInit()) return glAreTexturesResidentEXT(n, textures, residences); return (GLboolean)0;} GLEEPFNGLARETEXTURESRESIDENTEXTPROC GLeeFuncPtr_glAreTexturesResidentEXT=GLee_Lazy_glAreTexturesResidentEXT; #endif #ifndef GLEE_C_DEFINED_glBindTextureEXT #define GLEE_C_DEFINED_glBindTextureEXT void __stdcall GLee_Lazy_glBindTextureEXT(GLenum target, GLuint texture) {if (GLeeInit()) glBindTextureEXT(target, texture);} GLEEPFNGLBINDTEXTUREEXTPROC GLeeFuncPtr_glBindTextureEXT=GLee_Lazy_glBindTextureEXT; #endif #ifndef GLEE_C_DEFINED_glDeleteTexturesEXT #define GLEE_C_DEFINED_glDeleteTexturesEXT void __stdcall GLee_Lazy_glDeleteTexturesEXT(GLsizei n, const GLuint * textures) {if (GLeeInit()) glDeleteTexturesEXT(n, textures);} GLEEPFNGLDELETETEXTURESEXTPROC GLeeFuncPtr_glDeleteTexturesEXT=GLee_Lazy_glDeleteTexturesEXT; #endif #ifndef GLEE_C_DEFINED_glGenTexturesEXT #define GLEE_C_DEFINED_glGenTexturesEXT void __stdcall GLee_Lazy_glGenTexturesEXT(GLsizei n, GLuint * textures) {if (GLeeInit()) glGenTexturesEXT(n, textures);} GLEEPFNGLGENTEXTURESEXTPROC GLeeFuncPtr_glGenTexturesEXT=GLee_Lazy_glGenTexturesEXT; #endif #ifndef GLEE_C_DEFINED_glIsTextureEXT #define GLEE_C_DEFINED_glIsTextureEXT GLboolean __stdcall GLee_Lazy_glIsTextureEXT(GLuint texture) {if (GLeeInit()) return glIsTextureEXT(texture); return (GLboolean)0;} GLEEPFNGLISTEXTUREEXTPROC GLeeFuncPtr_glIsTextureEXT=GLee_Lazy_glIsTextureEXT; #endif #ifndef GLEE_C_DEFINED_glPrioritizeTexturesEXT #define GLEE_C_DEFINED_glPrioritizeTexturesEXT void __stdcall GLee_Lazy_glPrioritizeTexturesEXT(GLsizei n, const GLuint * textures, const GLclampf * priorities) {if (GLeeInit()) glPrioritizeTexturesEXT(n, textures, priorities);} GLEEPFNGLPRIORITIZETEXTURESEXTPROC GLeeFuncPtr_glPrioritizeTexturesEXT=GLee_Lazy_glPrioritizeTexturesEXT; #endif #endif /* GL_SGIS_detail_texture */ #ifdef __GLEE_GL_SGIS_detail_texture #ifndef GLEE_C_DEFINED_glDetailTexFuncSGIS #define GLEE_C_DEFINED_glDetailTexFuncSGIS void __stdcall GLee_Lazy_glDetailTexFuncSGIS(GLenum target, GLsizei n, const GLfloat * points) {if (GLeeInit()) glDetailTexFuncSGIS(target, n, points);} GLEEPFNGLDETAILTEXFUNCSGISPROC GLeeFuncPtr_glDetailTexFuncSGIS=GLee_Lazy_glDetailTexFuncSGIS; #endif #ifndef GLEE_C_DEFINED_glGetDetailTexFuncSGIS #define GLEE_C_DEFINED_glGetDetailTexFuncSGIS void __stdcall GLee_Lazy_glGetDetailTexFuncSGIS(GLenum target, GLfloat * points) {if (GLeeInit()) glGetDetailTexFuncSGIS(target, points);} GLEEPFNGLGETDETAILTEXFUNCSGISPROC GLeeFuncPtr_glGetDetailTexFuncSGIS=GLee_Lazy_glGetDetailTexFuncSGIS; #endif #endif /* GL_SGIS_sharpen_texture */ #ifdef __GLEE_GL_SGIS_sharpen_texture #ifndef GLEE_C_DEFINED_glSharpenTexFuncSGIS #define GLEE_C_DEFINED_glSharpenTexFuncSGIS void __stdcall GLee_Lazy_glSharpenTexFuncSGIS(GLenum target, GLsizei n, const GLfloat * points) {if (GLeeInit()) glSharpenTexFuncSGIS(target, n, points);} GLEEPFNGLSHARPENTEXFUNCSGISPROC GLeeFuncPtr_glSharpenTexFuncSGIS=GLee_Lazy_glSharpenTexFuncSGIS; #endif #ifndef GLEE_C_DEFINED_glGetSharpenTexFuncSGIS #define GLEE_C_DEFINED_glGetSharpenTexFuncSGIS void __stdcall GLee_Lazy_glGetSharpenTexFuncSGIS(GLenum target, GLfloat * points) {if (GLeeInit()) glGetSharpenTexFuncSGIS(target, points);} GLEEPFNGLGETSHARPENTEXFUNCSGISPROC GLeeFuncPtr_glGetSharpenTexFuncSGIS=GLee_Lazy_glGetSharpenTexFuncSGIS; #endif #endif /* GL_EXT_packed_pixels */ #ifdef __GLEE_GL_EXT_packed_pixels #endif /* GL_SGIS_texture_lod */ #ifdef __GLEE_GL_SGIS_texture_lod #endif /* GL_SGIS_multisample */ #ifdef __GLEE_GL_SGIS_multisample #ifndef GLEE_C_DEFINED_glSampleMaskSGIS #define GLEE_C_DEFINED_glSampleMaskSGIS void __stdcall GLee_Lazy_glSampleMaskSGIS(GLclampf value, GLboolean invert) {if (GLeeInit()) glSampleMaskSGIS(value, invert);} GLEEPFNGLSAMPLEMASKSGISPROC GLeeFuncPtr_glSampleMaskSGIS=GLee_Lazy_glSampleMaskSGIS; #endif #ifndef GLEE_C_DEFINED_glSamplePatternSGIS #define GLEE_C_DEFINED_glSamplePatternSGIS void __stdcall GLee_Lazy_glSamplePatternSGIS(GLenum pattern) {if (GLeeInit()) glSamplePatternSGIS(pattern);} GLEEPFNGLSAMPLEPATTERNSGISPROC GLeeFuncPtr_glSamplePatternSGIS=GLee_Lazy_glSamplePatternSGIS; #endif #endif /* GL_EXT_rescale_normal */ #ifdef __GLEE_GL_EXT_rescale_normal #endif /* GL_EXT_vertex_array */ #ifdef __GLEE_GL_EXT_vertex_array #ifndef GLEE_C_DEFINED_glArrayElementEXT #define GLEE_C_DEFINED_glArrayElementEXT void __stdcall GLee_Lazy_glArrayElementEXT(GLint i) {if (GLeeInit()) glArrayElementEXT(i);} GLEEPFNGLARRAYELEMENTEXTPROC GLeeFuncPtr_glArrayElementEXT=GLee_Lazy_glArrayElementEXT; #endif #ifndef GLEE_C_DEFINED_glColorPointerEXT #define GLEE_C_DEFINED_glColorPointerEXT void __stdcall GLee_Lazy_glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) {if (GLeeInit()) glColorPointerEXT(size, type, stride, count, pointer);} GLEEPFNGLCOLORPOINTEREXTPROC GLeeFuncPtr_glColorPointerEXT=GLee_Lazy_glColorPointerEXT; #endif #ifndef GLEE_C_DEFINED_glDrawArraysEXT #define GLEE_C_DEFINED_glDrawArraysEXT void __stdcall GLee_Lazy_glDrawArraysEXT(GLenum mode, GLint first, GLsizei count) {if (GLeeInit()) glDrawArraysEXT(mode, first, count);} GLEEPFNGLDRAWARRAYSEXTPROC GLeeFuncPtr_glDrawArraysEXT=GLee_Lazy_glDrawArraysEXT; #endif #ifndef GLEE_C_DEFINED_glEdgeFlagPointerEXT #define GLEE_C_DEFINED_glEdgeFlagPointerEXT void __stdcall GLee_Lazy_glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean * pointer) {if (GLeeInit()) glEdgeFlagPointerEXT(stride, count, pointer);} GLEEPFNGLEDGEFLAGPOINTEREXTPROC GLeeFuncPtr_glEdgeFlagPointerEXT=GLee_Lazy_glEdgeFlagPointerEXT; #endif #ifndef GLEE_C_DEFINED_glGetPointervEXT #define GLEE_C_DEFINED_glGetPointervEXT void __stdcall GLee_Lazy_glGetPointervEXT(GLenum pname, GLvoid* * params) {if (GLeeInit()) glGetPointervEXT(pname, params);} GLEEPFNGLGETPOINTERVEXTPROC GLeeFuncPtr_glGetPointervEXT=GLee_Lazy_glGetPointervEXT; #endif #ifndef GLEE_C_DEFINED_glIndexPointerEXT #define GLEE_C_DEFINED_glIndexPointerEXT void __stdcall GLee_Lazy_glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) {if (GLeeInit()) glIndexPointerEXT(type, stride, count, pointer);} GLEEPFNGLINDEXPOINTEREXTPROC GLeeFuncPtr_glIndexPointerEXT=GLee_Lazy_glIndexPointerEXT; #endif #ifndef GLEE_C_DEFINED_glNormalPointerEXT #define GLEE_C_DEFINED_glNormalPointerEXT void __stdcall GLee_Lazy_glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) {if (GLeeInit()) glNormalPointerEXT(type, stride, count, pointer);} GLEEPFNGLNORMALPOINTEREXTPROC GLeeFuncPtr_glNormalPointerEXT=GLee_Lazy_glNormalPointerEXT; #endif #ifndef GLEE_C_DEFINED_glTexCoordPointerEXT #define GLEE_C_DEFINED_glTexCoordPointerEXT void __stdcall GLee_Lazy_glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) {if (GLeeInit()) glTexCoordPointerEXT(size, type, stride, count, pointer);} GLEEPFNGLTEXCOORDPOINTEREXTPROC GLeeFuncPtr_glTexCoordPointerEXT=GLee_Lazy_glTexCoordPointerEXT; #endif #ifndef GLEE_C_DEFINED_glVertexPointerEXT #define GLEE_C_DEFINED_glVertexPointerEXT void __stdcall GLee_Lazy_glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer) {if (GLeeInit()) glVertexPointerEXT(size, type, stride, count, pointer);} GLEEPFNGLVERTEXPOINTEREXTPROC GLeeFuncPtr_glVertexPointerEXT=GLee_Lazy_glVertexPointerEXT; #endif #endif /* GL_EXT_misc_attribute */ #ifdef __GLEE_GL_EXT_misc_attribute #endif /* GL_SGIS_generate_mipmap */ #ifdef __GLEE_GL_SGIS_generate_mipmap #endif /* GL_SGIX_clipmap */ #ifdef __GLEE_GL_SGIX_clipmap #endif /* GL_SGIX_shadow */ #ifdef __GLEE_GL_SGIX_shadow #endif /* GL_SGIS_texture_edge_clamp */ #ifdef __GLEE_GL_SGIS_texture_edge_clamp #endif /* GL_SGIS_texture_border_clamp */ #ifdef __GLEE_GL_SGIS_texture_border_clamp #endif /* GL_EXT_blend_minmax */ #ifdef __GLEE_GL_EXT_blend_minmax #ifndef GLEE_C_DEFINED_glBlendEquationEXT #define GLEE_C_DEFINED_glBlendEquationEXT void __stdcall GLee_Lazy_glBlendEquationEXT(GLenum mode) {if (GLeeInit()) glBlendEquationEXT(mode);} GLEEPFNGLBLENDEQUATIONEXTPROC GLeeFuncPtr_glBlendEquationEXT=GLee_Lazy_glBlendEquationEXT; #endif #endif /* GL_EXT_blend_subtract */ #ifdef __GLEE_GL_EXT_blend_subtract #endif /* GL_EXT_blend_logic_op */ #ifdef __GLEE_GL_EXT_blend_logic_op #endif /* GL_SGIX_interlace */ #ifdef __GLEE_GL_SGIX_interlace #endif /* GL_SGIX_pixel_tiles */ #ifdef __GLEE_GL_SGIX_pixel_tiles #endif /* GL_SGIS_texture_select */ #ifdef __GLEE_GL_SGIS_texture_select #endif /* GL_SGIX_sprite */ #ifdef __GLEE_GL_SGIX_sprite #ifndef GLEE_C_DEFINED_glSpriteParameterfSGIX #define GLEE_C_DEFINED_glSpriteParameterfSGIX void __stdcall GLee_Lazy_glSpriteParameterfSGIX(GLenum pname, GLfloat param) {if (GLeeInit()) glSpriteParameterfSGIX(pname, param);} GLEEPFNGLSPRITEPARAMETERFSGIXPROC GLeeFuncPtr_glSpriteParameterfSGIX=GLee_Lazy_glSpriteParameterfSGIX; #endif #ifndef GLEE_C_DEFINED_glSpriteParameterfvSGIX #define GLEE_C_DEFINED_glSpriteParameterfvSGIX void __stdcall GLee_Lazy_glSpriteParameterfvSGIX(GLenum pname, const GLfloat * params) {if (GLeeInit()) glSpriteParameterfvSGIX(pname, params);} GLEEPFNGLSPRITEPARAMETERFVSGIXPROC GLeeFuncPtr_glSpriteParameterfvSGIX=GLee_Lazy_glSpriteParameterfvSGIX; #endif #ifndef GLEE_C_DEFINED_glSpriteParameteriSGIX #define GLEE_C_DEFINED_glSpriteParameteriSGIX void __stdcall GLee_Lazy_glSpriteParameteriSGIX(GLenum pname, GLint param) {if (GLeeInit()) glSpriteParameteriSGIX(pname, param);} GLEEPFNGLSPRITEPARAMETERISGIXPROC GLeeFuncPtr_glSpriteParameteriSGIX=GLee_Lazy_glSpriteParameteriSGIX; #endif #ifndef GLEE_C_DEFINED_glSpriteParameterivSGIX #define GLEE_C_DEFINED_glSpriteParameterivSGIX void __stdcall GLee_Lazy_glSpriteParameterivSGIX(GLenum pname, const GLint * params) {if (GLeeInit()) glSpriteParameterivSGIX(pname, params);} GLEEPFNGLSPRITEPARAMETERIVSGIXPROC GLeeFuncPtr_glSpriteParameterivSGIX=GLee_Lazy_glSpriteParameterivSGIX; #endif #endif /* GL_SGIX_texture_multi_buffer */ #ifdef __GLEE_GL_SGIX_texture_multi_buffer #endif /* GL_EXT_point_parameters */ #ifdef __GLEE_GL_EXT_point_parameters #ifndef GLEE_C_DEFINED_glPointParameterfEXT #define GLEE_C_DEFINED_glPointParameterfEXT void __stdcall GLee_Lazy_glPointParameterfEXT(GLenum pname, GLfloat param) {if (GLeeInit()) glPointParameterfEXT(pname, param);} GLEEPFNGLPOINTPARAMETERFEXTPROC GLeeFuncPtr_glPointParameterfEXT=GLee_Lazy_glPointParameterfEXT; #endif #ifndef GLEE_C_DEFINED_glPointParameterfvEXT #define GLEE_C_DEFINED_glPointParameterfvEXT void __stdcall GLee_Lazy_glPointParameterfvEXT(GLenum pname, const GLfloat * params) {if (GLeeInit()) glPointParameterfvEXT(pname, params);} GLEEPFNGLPOINTPARAMETERFVEXTPROC GLeeFuncPtr_glPointParameterfvEXT=GLee_Lazy_glPointParameterfvEXT; #endif #endif /* GL_SGIS_point_parameters */ #ifdef __GLEE_GL_SGIS_point_parameters #ifndef GLEE_C_DEFINED_glPointParameterfSGIS #define GLEE_C_DEFINED_glPointParameterfSGIS void __stdcall GLee_Lazy_glPointParameterfSGIS(GLenum pname, GLfloat param) {if (GLeeInit()) glPointParameterfSGIS(pname, param);} GLEEPFNGLPOINTPARAMETERFSGISPROC GLeeFuncPtr_glPointParameterfSGIS=GLee_Lazy_glPointParameterfSGIS; #endif #ifndef GLEE_C_DEFINED_glPointParameterfvSGIS #define GLEE_C_DEFINED_glPointParameterfvSGIS void __stdcall GLee_Lazy_glPointParameterfvSGIS(GLenum pname, const GLfloat * params) {if (GLeeInit()) glPointParameterfvSGIS(pname, params);} GLEEPFNGLPOINTPARAMETERFVSGISPROC GLeeFuncPtr_glPointParameterfvSGIS=GLee_Lazy_glPointParameterfvSGIS; #endif #endif /* GL_SGIX_instruments */ #ifdef __GLEE_GL_SGIX_instruments #ifndef GLEE_C_DEFINED_glGetInstrumentsSGIX #define GLEE_C_DEFINED_glGetInstrumentsSGIX GLint __stdcall GLee_Lazy_glGetInstrumentsSGIX(void) {if (GLeeInit()) return glGetInstrumentsSGIX(); return (GLint)0;} GLEEPFNGLGETINSTRUMENTSSGIXPROC GLeeFuncPtr_glGetInstrumentsSGIX=GLee_Lazy_glGetInstrumentsSGIX; #endif #ifndef GLEE_C_DEFINED_glInstrumentsBufferSGIX #define GLEE_C_DEFINED_glInstrumentsBufferSGIX void __stdcall GLee_Lazy_glInstrumentsBufferSGIX(GLsizei size, GLint * buffer) {if (GLeeInit()) glInstrumentsBufferSGIX(size, buffer);} GLEEPFNGLINSTRUMENTSBUFFERSGIXPROC GLeeFuncPtr_glInstrumentsBufferSGIX=GLee_Lazy_glInstrumentsBufferSGIX; #endif #ifndef GLEE_C_DEFINED_glPollInstrumentsSGIX #define GLEE_C_DEFINED_glPollInstrumentsSGIX GLint __stdcall GLee_Lazy_glPollInstrumentsSGIX(GLint * marker_p) {if (GLeeInit()) return glPollInstrumentsSGIX(marker_p); return (GLint)0;} GLEEPFNGLPOLLINSTRUMENTSSGIXPROC GLeeFuncPtr_glPollInstrumentsSGIX=GLee_Lazy_glPollInstrumentsSGIX; #endif #ifndef GLEE_C_DEFINED_glReadInstrumentsSGIX #define GLEE_C_DEFINED_glReadInstrumentsSGIX void __stdcall GLee_Lazy_glReadInstrumentsSGIX(GLint marker) {if (GLeeInit()) glReadInstrumentsSGIX(marker);} GLEEPFNGLREADINSTRUMENTSSGIXPROC GLeeFuncPtr_glReadInstrumentsSGIX=GLee_Lazy_glReadInstrumentsSGIX; #endif #ifndef GLEE_C_DEFINED_glStartInstrumentsSGIX #define GLEE_C_DEFINED_glStartInstrumentsSGIX void __stdcall GLee_Lazy_glStartInstrumentsSGIX(void) {if (GLeeInit()) glStartInstrumentsSGIX();} GLEEPFNGLSTARTINSTRUMENTSSGIXPROC GLeeFuncPtr_glStartInstrumentsSGIX=GLee_Lazy_glStartInstrumentsSGIX; #endif #ifndef GLEE_C_DEFINED_glStopInstrumentsSGIX #define GLEE_C_DEFINED_glStopInstrumentsSGIX void __stdcall GLee_Lazy_glStopInstrumentsSGIX(GLint marker) {if (GLeeInit()) glStopInstrumentsSGIX(marker);} GLEEPFNGLSTOPINSTRUMENTSSGIXPROC GLeeFuncPtr_glStopInstrumentsSGIX=GLee_Lazy_glStopInstrumentsSGIX; #endif #endif /* GL_SGIX_texture_scale_bias */ #ifdef __GLEE_GL_SGIX_texture_scale_bias #endif /* GL_SGIX_framezoom */ #ifdef __GLEE_GL_SGIX_framezoom #ifndef GLEE_C_DEFINED_glFrameZoomSGIX #define GLEE_C_DEFINED_glFrameZoomSGIX void __stdcall GLee_Lazy_glFrameZoomSGIX(GLint factor) {if (GLeeInit()) glFrameZoomSGIX(factor);} GLEEPFNGLFRAMEZOOMSGIXPROC GLeeFuncPtr_glFrameZoomSGIX=GLee_Lazy_glFrameZoomSGIX; #endif #endif /* GL_SGIX_tag_sample_buffer */ #ifdef __GLEE_GL_SGIX_tag_sample_buffer #ifndef GLEE_C_DEFINED_glTagSampleBufferSGIX #define GLEE_C_DEFINED_glTagSampleBufferSGIX void __stdcall GLee_Lazy_glTagSampleBufferSGIX(void) {if (GLeeInit()) glTagSampleBufferSGIX();} GLEEPFNGLTAGSAMPLEBUFFERSGIXPROC GLeeFuncPtr_glTagSampleBufferSGIX=GLee_Lazy_glTagSampleBufferSGIX; #endif #endif /* GL_FfdMaskSGIX */ #ifdef __GLEE_GL_FfdMaskSGIX #endif /* GL_SGIX_polynomial_ffd */ #ifdef __GLEE_GL_SGIX_polynomial_ffd #ifndef GLEE_C_DEFINED_glDeformationMap3dSGIX #define GLEE_C_DEFINED_glDeformationMap3dSGIX void __stdcall GLee_Lazy_glDeformationMap3dSGIX(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble * points) {if (GLeeInit()) glDeformationMap3dSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points);} GLEEPFNGLDEFORMATIONMAP3DSGIXPROC GLeeFuncPtr_glDeformationMap3dSGIX=GLee_Lazy_glDeformationMap3dSGIX; #endif #ifndef GLEE_C_DEFINED_glDeformationMap3fSGIX #define GLEE_C_DEFINED_glDeformationMap3fSGIX void __stdcall GLee_Lazy_glDeformationMap3fSGIX(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat * points) {if (GLeeInit()) glDeformationMap3fSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points);} GLEEPFNGLDEFORMATIONMAP3FSGIXPROC GLeeFuncPtr_glDeformationMap3fSGIX=GLee_Lazy_glDeformationMap3fSGIX; #endif #ifndef GLEE_C_DEFINED_glDeformSGIX #define GLEE_C_DEFINED_glDeformSGIX void __stdcall GLee_Lazy_glDeformSGIX(GLbitfield mask) {if (GLeeInit()) glDeformSGIX(mask);} GLEEPFNGLDEFORMSGIXPROC GLeeFuncPtr_glDeformSGIX=GLee_Lazy_glDeformSGIX; #endif #ifndef GLEE_C_DEFINED_glLoadIdentityDeformationMapSGIX #define GLEE_C_DEFINED_glLoadIdentityDeformationMapSGIX void __stdcall GLee_Lazy_glLoadIdentityDeformationMapSGIX(GLbitfield mask) {if (GLeeInit()) glLoadIdentityDeformationMapSGIX(mask);} GLEEPFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC GLeeFuncPtr_glLoadIdentityDeformationMapSGIX=GLee_Lazy_glLoadIdentityDeformationMapSGIX; #endif #endif /* GL_SGIX_reference_plane */ #ifdef __GLEE_GL_SGIX_reference_plane #ifndef GLEE_C_DEFINED_glReferencePlaneSGIX #define GLEE_C_DEFINED_glReferencePlaneSGIX void __stdcall GLee_Lazy_glReferencePlaneSGIX(const GLdouble * equation) {if (GLeeInit()) glReferencePlaneSGIX(equation);} GLEEPFNGLREFERENCEPLANESGIXPROC GLeeFuncPtr_glReferencePlaneSGIX=GLee_Lazy_glReferencePlaneSGIX; #endif #endif /* GL_SGIX_flush_raster */ #ifdef __GLEE_GL_SGIX_flush_raster #ifndef GLEE_C_DEFINED_glFlushRasterSGIX #define GLEE_C_DEFINED_glFlushRasterSGIX void __stdcall GLee_Lazy_glFlushRasterSGIX(void) {if (GLeeInit()) glFlushRasterSGIX();} GLEEPFNGLFLUSHRASTERSGIXPROC GLeeFuncPtr_glFlushRasterSGIX=GLee_Lazy_glFlushRasterSGIX; #endif #endif /* GL_SGIX_depth_texture */ #ifdef __GLEE_GL_SGIX_depth_texture #endif /* GL_SGIS_fog_function */ #ifdef __GLEE_GL_SGIS_fog_function #ifndef GLEE_C_DEFINED_glFogFuncSGIS #define GLEE_C_DEFINED_glFogFuncSGIS void __stdcall GLee_Lazy_glFogFuncSGIS(GLsizei n, const GLfloat * points) {if (GLeeInit()) glFogFuncSGIS(n, points);} GLEEPFNGLFOGFUNCSGISPROC GLeeFuncPtr_glFogFuncSGIS=GLee_Lazy_glFogFuncSGIS; #endif #ifndef GLEE_C_DEFINED_glGetFogFuncSGIS #define GLEE_C_DEFINED_glGetFogFuncSGIS void __stdcall GLee_Lazy_glGetFogFuncSGIS(GLfloat * points) {if (GLeeInit()) glGetFogFuncSGIS(points);} GLEEPFNGLGETFOGFUNCSGISPROC GLeeFuncPtr_glGetFogFuncSGIS=GLee_Lazy_glGetFogFuncSGIS; #endif #endif /* GL_SGIX_fog_offset */ #ifdef __GLEE_GL_SGIX_fog_offset #endif /* GL_HP_image_transform */ #ifdef __GLEE_GL_HP_image_transform #ifndef GLEE_C_DEFINED_glImageTransformParameteriHP #define GLEE_C_DEFINED_glImageTransformParameteriHP void __stdcall GLee_Lazy_glImageTransformParameteriHP(GLenum target, GLenum pname, GLint param) {if (GLeeInit()) glImageTransformParameteriHP(target, pname, param);} GLEEPFNGLIMAGETRANSFORMPARAMETERIHPPROC GLeeFuncPtr_glImageTransformParameteriHP=GLee_Lazy_glImageTransformParameteriHP; #endif #ifndef GLEE_C_DEFINED_glImageTransformParameterfHP #define GLEE_C_DEFINED_glImageTransformParameterfHP void __stdcall GLee_Lazy_glImageTransformParameterfHP(GLenum target, GLenum pname, GLfloat param) {if (GLeeInit()) glImageTransformParameterfHP(target, pname, param);} GLEEPFNGLIMAGETRANSFORMPARAMETERFHPPROC GLeeFuncPtr_glImageTransformParameterfHP=GLee_Lazy_glImageTransformParameterfHP; #endif #ifndef GLEE_C_DEFINED_glImageTransformParameterivHP #define GLEE_C_DEFINED_glImageTransformParameterivHP void __stdcall GLee_Lazy_glImageTransformParameterivHP(GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glImageTransformParameterivHP(target, pname, params);} GLEEPFNGLIMAGETRANSFORMPARAMETERIVHPPROC GLeeFuncPtr_glImageTransformParameterivHP=GLee_Lazy_glImageTransformParameterivHP; #endif #ifndef GLEE_C_DEFINED_glImageTransformParameterfvHP #define GLEE_C_DEFINED_glImageTransformParameterfvHP void __stdcall GLee_Lazy_glImageTransformParameterfvHP(GLenum target, GLenum pname, const GLfloat * params) {if (GLeeInit()) glImageTransformParameterfvHP(target, pname, params);} GLEEPFNGLIMAGETRANSFORMPARAMETERFVHPPROC GLeeFuncPtr_glImageTransformParameterfvHP=GLee_Lazy_glImageTransformParameterfvHP; #endif #ifndef GLEE_C_DEFINED_glGetImageTransformParameterivHP #define GLEE_C_DEFINED_glGetImageTransformParameterivHP void __stdcall GLee_Lazy_glGetImageTransformParameterivHP(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetImageTransformParameterivHP(target, pname, params);} GLEEPFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC GLeeFuncPtr_glGetImageTransformParameterivHP=GLee_Lazy_glGetImageTransformParameterivHP; #endif #ifndef GLEE_C_DEFINED_glGetImageTransformParameterfvHP #define GLEE_C_DEFINED_glGetImageTransformParameterfvHP void __stdcall GLee_Lazy_glGetImageTransformParameterfvHP(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetImageTransformParameterfvHP(target, pname, params);} GLEEPFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC GLeeFuncPtr_glGetImageTransformParameterfvHP=GLee_Lazy_glGetImageTransformParameterfvHP; #endif #endif /* GL_HP_convolution_border_modes */ #ifdef __GLEE_GL_HP_convolution_border_modes #endif /* GL_INGR_palette_buffer */ #ifdef __GLEE_GL_INGR_palette_buffer #endif /* GL_SGIX_texture_add_env */ #ifdef __GLEE_GL_SGIX_texture_add_env #endif /* GL_EXT_color_subtable */ #ifdef __GLEE_GL_EXT_color_subtable #ifndef GLEE_C_DEFINED_glColorSubTableEXT #define GLEE_C_DEFINED_glColorSubTableEXT void __stdcall GLee_Lazy_glColorSubTableEXT(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data) {if (GLeeInit()) glColorSubTableEXT(target, start, count, format, type, data);} GLEEPFNGLCOLORSUBTABLEEXTPROC GLeeFuncPtr_glColorSubTableEXT=GLee_Lazy_glColorSubTableEXT; #endif #ifndef GLEE_C_DEFINED_glCopyColorSubTableEXT #define GLEE_C_DEFINED_glCopyColorSubTableEXT void __stdcall GLee_Lazy_glCopyColorSubTableEXT(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width) {if (GLeeInit()) glCopyColorSubTableEXT(target, start, x, y, width);} GLEEPFNGLCOPYCOLORSUBTABLEEXTPROC GLeeFuncPtr_glCopyColorSubTableEXT=GLee_Lazy_glCopyColorSubTableEXT; #endif #endif /* GL_PGI_vertex_hints */ #ifdef __GLEE_GL_PGI_vertex_hints #endif /* GL_PGI_misc_hints */ #ifdef __GLEE_GL_PGI_misc_hints #ifndef GLEE_C_DEFINED_glHintPGI #define GLEE_C_DEFINED_glHintPGI void __stdcall GLee_Lazy_glHintPGI(GLenum target, GLint mode) {if (GLeeInit()) glHintPGI(target, mode);} GLEEPFNGLHINTPGIPROC GLeeFuncPtr_glHintPGI=GLee_Lazy_glHintPGI; #endif #endif /* GL_EXT_paletted_texture */ #ifdef __GLEE_GL_EXT_paletted_texture #ifndef GLEE_C_DEFINED_glColorTableEXT #define GLEE_C_DEFINED_glColorTableEXT void __stdcall GLee_Lazy_glColorTableEXT(GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid * table) {if (GLeeInit()) glColorTableEXT(target, internalFormat, width, format, type, table);} GLEEPFNGLCOLORTABLEEXTPROC GLeeFuncPtr_glColorTableEXT=GLee_Lazy_glColorTableEXT; #endif #ifndef GLEE_C_DEFINED_glGetColorTableEXT #define GLEE_C_DEFINED_glGetColorTableEXT void __stdcall GLee_Lazy_glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid * data) {if (GLeeInit()) glGetColorTableEXT(target, format, type, data);} GLEEPFNGLGETCOLORTABLEEXTPROC GLeeFuncPtr_glGetColorTableEXT=GLee_Lazy_glGetColorTableEXT; #endif #ifndef GLEE_C_DEFINED_glGetColorTableParameterivEXT #define GLEE_C_DEFINED_glGetColorTableParameterivEXT void __stdcall GLee_Lazy_glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetColorTableParameterivEXT(target, pname, params);} GLEEPFNGLGETCOLORTABLEPARAMETERIVEXTPROC GLeeFuncPtr_glGetColorTableParameterivEXT=GLee_Lazy_glGetColorTableParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glGetColorTableParameterfvEXT #define GLEE_C_DEFINED_glGetColorTableParameterfvEXT void __stdcall GLee_Lazy_glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetColorTableParameterfvEXT(target, pname, params);} GLEEPFNGLGETCOLORTABLEPARAMETERFVEXTPROC GLeeFuncPtr_glGetColorTableParameterfvEXT=GLee_Lazy_glGetColorTableParameterfvEXT; #endif #endif /* GL_EXT_clip_volume_hint */ #ifdef __GLEE_GL_EXT_clip_volume_hint #endif /* GL_SGIX_list_priority */ #ifdef __GLEE_GL_SGIX_list_priority #ifndef GLEE_C_DEFINED_glGetListParameterfvSGIX #define GLEE_C_DEFINED_glGetListParameterfvSGIX void __stdcall GLee_Lazy_glGetListParameterfvSGIX(GLuint list, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetListParameterfvSGIX(list, pname, params);} GLEEPFNGLGETLISTPARAMETERFVSGIXPROC GLeeFuncPtr_glGetListParameterfvSGIX=GLee_Lazy_glGetListParameterfvSGIX; #endif #ifndef GLEE_C_DEFINED_glGetListParameterivSGIX #define GLEE_C_DEFINED_glGetListParameterivSGIX void __stdcall GLee_Lazy_glGetListParameterivSGIX(GLuint list, GLenum pname, GLint * params) {if (GLeeInit()) glGetListParameterivSGIX(list, pname, params);} GLEEPFNGLGETLISTPARAMETERIVSGIXPROC GLeeFuncPtr_glGetListParameterivSGIX=GLee_Lazy_glGetListParameterivSGIX; #endif #ifndef GLEE_C_DEFINED_glListParameterfSGIX #define GLEE_C_DEFINED_glListParameterfSGIX void __stdcall GLee_Lazy_glListParameterfSGIX(GLuint list, GLenum pname, GLfloat param) {if (GLeeInit()) glListParameterfSGIX(list, pname, param);} GLEEPFNGLLISTPARAMETERFSGIXPROC GLeeFuncPtr_glListParameterfSGIX=GLee_Lazy_glListParameterfSGIX; #endif #ifndef GLEE_C_DEFINED_glListParameterfvSGIX #define GLEE_C_DEFINED_glListParameterfvSGIX void __stdcall GLee_Lazy_glListParameterfvSGIX(GLuint list, GLenum pname, const GLfloat * params) {if (GLeeInit()) glListParameterfvSGIX(list, pname, params);} GLEEPFNGLLISTPARAMETERFVSGIXPROC GLeeFuncPtr_glListParameterfvSGIX=GLee_Lazy_glListParameterfvSGIX; #endif #ifndef GLEE_C_DEFINED_glListParameteriSGIX #define GLEE_C_DEFINED_glListParameteriSGIX void __stdcall GLee_Lazy_glListParameteriSGIX(GLuint list, GLenum pname, GLint param) {if (GLeeInit()) glListParameteriSGIX(list, pname, param);} GLEEPFNGLLISTPARAMETERISGIXPROC GLeeFuncPtr_glListParameteriSGIX=GLee_Lazy_glListParameteriSGIX; #endif #ifndef GLEE_C_DEFINED_glListParameterivSGIX #define GLEE_C_DEFINED_glListParameterivSGIX void __stdcall GLee_Lazy_glListParameterivSGIX(GLuint list, GLenum pname, const GLint * params) {if (GLeeInit()) glListParameterivSGIX(list, pname, params);} GLEEPFNGLLISTPARAMETERIVSGIXPROC GLeeFuncPtr_glListParameterivSGIX=GLee_Lazy_glListParameterivSGIX; #endif #endif /* GL_SGIX_ir_instrument1 */ #ifdef __GLEE_GL_SGIX_ir_instrument1 #endif /* GL_SGIX_calligraphic_fragment */ #ifdef __GLEE_GL_SGIX_calligraphic_fragment #endif /* GL_SGIX_texture_lod_bias */ #ifdef __GLEE_GL_SGIX_texture_lod_bias #endif /* GL_SGIX_shadow_ambient */ #ifdef __GLEE_GL_SGIX_shadow_ambient #endif /* GL_EXT_index_texture */ #ifdef __GLEE_GL_EXT_index_texture #endif /* GL_EXT_index_material */ #ifdef __GLEE_GL_EXT_index_material #ifndef GLEE_C_DEFINED_glIndexMaterialEXT #define GLEE_C_DEFINED_glIndexMaterialEXT void __stdcall GLee_Lazy_glIndexMaterialEXT(GLenum face, GLenum mode) {if (GLeeInit()) glIndexMaterialEXT(face, mode);} GLEEPFNGLINDEXMATERIALEXTPROC GLeeFuncPtr_glIndexMaterialEXT=GLee_Lazy_glIndexMaterialEXT; #endif #endif /* GL_EXT_index_func */ #ifdef __GLEE_GL_EXT_index_func #ifndef GLEE_C_DEFINED_glIndexFuncEXT #define GLEE_C_DEFINED_glIndexFuncEXT void __stdcall GLee_Lazy_glIndexFuncEXT(GLenum func, GLclampf ref) {if (GLeeInit()) glIndexFuncEXT(func, ref);} GLEEPFNGLINDEXFUNCEXTPROC GLeeFuncPtr_glIndexFuncEXT=GLee_Lazy_glIndexFuncEXT; #endif #endif /* GL_EXT_index_array_formats */ #ifdef __GLEE_GL_EXT_index_array_formats #endif /* GL_EXT_compiled_vertex_array */ #ifdef __GLEE_GL_EXT_compiled_vertex_array #ifndef GLEE_C_DEFINED_glLockArraysEXT #define GLEE_C_DEFINED_glLockArraysEXT void __stdcall GLee_Lazy_glLockArraysEXT(GLint first, GLsizei count) {if (GLeeInit()) glLockArraysEXT(first, count);} GLEEPFNGLLOCKARRAYSEXTPROC GLeeFuncPtr_glLockArraysEXT=GLee_Lazy_glLockArraysEXT; #endif #ifndef GLEE_C_DEFINED_glUnlockArraysEXT #define GLEE_C_DEFINED_glUnlockArraysEXT void __stdcall GLee_Lazy_glUnlockArraysEXT(void) {if (GLeeInit()) glUnlockArraysEXT();} GLEEPFNGLUNLOCKARRAYSEXTPROC GLeeFuncPtr_glUnlockArraysEXT=GLee_Lazy_glUnlockArraysEXT; #endif #endif /* GL_EXT_cull_vertex */ #ifdef __GLEE_GL_EXT_cull_vertex #ifndef GLEE_C_DEFINED_glCullParameterdvEXT #define GLEE_C_DEFINED_glCullParameterdvEXT void __stdcall GLee_Lazy_glCullParameterdvEXT(GLenum pname, GLdouble * params) {if (GLeeInit()) glCullParameterdvEXT(pname, params);} GLEEPFNGLCULLPARAMETERDVEXTPROC GLeeFuncPtr_glCullParameterdvEXT=GLee_Lazy_glCullParameterdvEXT; #endif #ifndef GLEE_C_DEFINED_glCullParameterfvEXT #define GLEE_C_DEFINED_glCullParameterfvEXT void __stdcall GLee_Lazy_glCullParameterfvEXT(GLenum pname, GLfloat * params) {if (GLeeInit()) glCullParameterfvEXT(pname, params);} GLEEPFNGLCULLPARAMETERFVEXTPROC GLeeFuncPtr_glCullParameterfvEXT=GLee_Lazy_glCullParameterfvEXT; #endif #endif /* GL_SGIX_ycrcb */ #ifdef __GLEE_GL_SGIX_ycrcb #endif /* GL_SGIX_fragment_lighting */ #ifdef __GLEE_GL_SGIX_fragment_lighting #ifndef GLEE_C_DEFINED_glFragmentColorMaterialSGIX #define GLEE_C_DEFINED_glFragmentColorMaterialSGIX void __stdcall GLee_Lazy_glFragmentColorMaterialSGIX(GLenum face, GLenum mode) {if (GLeeInit()) glFragmentColorMaterialSGIX(face, mode);} GLEEPFNGLFRAGMENTCOLORMATERIALSGIXPROC GLeeFuncPtr_glFragmentColorMaterialSGIX=GLee_Lazy_glFragmentColorMaterialSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentLightfSGIX #define GLEE_C_DEFINED_glFragmentLightfSGIX void __stdcall GLee_Lazy_glFragmentLightfSGIX(GLenum light, GLenum pname, GLfloat param) {if (GLeeInit()) glFragmentLightfSGIX(light, pname, param);} GLEEPFNGLFRAGMENTLIGHTFSGIXPROC GLeeFuncPtr_glFragmentLightfSGIX=GLee_Lazy_glFragmentLightfSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentLightfvSGIX #define GLEE_C_DEFINED_glFragmentLightfvSGIX void __stdcall GLee_Lazy_glFragmentLightfvSGIX(GLenum light, GLenum pname, const GLfloat * params) {if (GLeeInit()) glFragmentLightfvSGIX(light, pname, params);} GLEEPFNGLFRAGMENTLIGHTFVSGIXPROC GLeeFuncPtr_glFragmentLightfvSGIX=GLee_Lazy_glFragmentLightfvSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentLightiSGIX #define GLEE_C_DEFINED_glFragmentLightiSGIX void __stdcall GLee_Lazy_glFragmentLightiSGIX(GLenum light, GLenum pname, GLint param) {if (GLeeInit()) glFragmentLightiSGIX(light, pname, param);} GLEEPFNGLFRAGMENTLIGHTISGIXPROC GLeeFuncPtr_glFragmentLightiSGIX=GLee_Lazy_glFragmentLightiSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentLightivSGIX #define GLEE_C_DEFINED_glFragmentLightivSGIX void __stdcall GLee_Lazy_glFragmentLightivSGIX(GLenum light, GLenum pname, const GLint * params) {if (GLeeInit()) glFragmentLightivSGIX(light, pname, params);} GLEEPFNGLFRAGMENTLIGHTIVSGIXPROC GLeeFuncPtr_glFragmentLightivSGIX=GLee_Lazy_glFragmentLightivSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentLightModelfSGIX #define GLEE_C_DEFINED_glFragmentLightModelfSGIX void __stdcall GLee_Lazy_glFragmentLightModelfSGIX(GLenum pname, GLfloat param) {if (GLeeInit()) glFragmentLightModelfSGIX(pname, param);} GLEEPFNGLFRAGMENTLIGHTMODELFSGIXPROC GLeeFuncPtr_glFragmentLightModelfSGIX=GLee_Lazy_glFragmentLightModelfSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentLightModelfvSGIX #define GLEE_C_DEFINED_glFragmentLightModelfvSGIX void __stdcall GLee_Lazy_glFragmentLightModelfvSGIX(GLenum pname, const GLfloat * params) {if (GLeeInit()) glFragmentLightModelfvSGIX(pname, params);} GLEEPFNGLFRAGMENTLIGHTMODELFVSGIXPROC GLeeFuncPtr_glFragmentLightModelfvSGIX=GLee_Lazy_glFragmentLightModelfvSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentLightModeliSGIX #define GLEE_C_DEFINED_glFragmentLightModeliSGIX void __stdcall GLee_Lazy_glFragmentLightModeliSGIX(GLenum pname, GLint param) {if (GLeeInit()) glFragmentLightModeliSGIX(pname, param);} GLEEPFNGLFRAGMENTLIGHTMODELISGIXPROC GLeeFuncPtr_glFragmentLightModeliSGIX=GLee_Lazy_glFragmentLightModeliSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentLightModelivSGIX #define GLEE_C_DEFINED_glFragmentLightModelivSGIX void __stdcall GLee_Lazy_glFragmentLightModelivSGIX(GLenum pname, const GLint * params) {if (GLeeInit()) glFragmentLightModelivSGIX(pname, params);} GLEEPFNGLFRAGMENTLIGHTMODELIVSGIXPROC GLeeFuncPtr_glFragmentLightModelivSGIX=GLee_Lazy_glFragmentLightModelivSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentMaterialfSGIX #define GLEE_C_DEFINED_glFragmentMaterialfSGIX void __stdcall GLee_Lazy_glFragmentMaterialfSGIX(GLenum face, GLenum pname, GLfloat param) {if (GLeeInit()) glFragmentMaterialfSGIX(face, pname, param);} GLEEPFNGLFRAGMENTMATERIALFSGIXPROC GLeeFuncPtr_glFragmentMaterialfSGIX=GLee_Lazy_glFragmentMaterialfSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentMaterialfvSGIX #define GLEE_C_DEFINED_glFragmentMaterialfvSGIX void __stdcall GLee_Lazy_glFragmentMaterialfvSGIX(GLenum face, GLenum pname, const GLfloat * params) {if (GLeeInit()) glFragmentMaterialfvSGIX(face, pname, params);} GLEEPFNGLFRAGMENTMATERIALFVSGIXPROC GLeeFuncPtr_glFragmentMaterialfvSGIX=GLee_Lazy_glFragmentMaterialfvSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentMaterialiSGIX #define GLEE_C_DEFINED_glFragmentMaterialiSGIX void __stdcall GLee_Lazy_glFragmentMaterialiSGIX(GLenum face, GLenum pname, GLint param) {if (GLeeInit()) glFragmentMaterialiSGIX(face, pname, param);} GLEEPFNGLFRAGMENTMATERIALISGIXPROC GLeeFuncPtr_glFragmentMaterialiSGIX=GLee_Lazy_glFragmentMaterialiSGIX; #endif #ifndef GLEE_C_DEFINED_glFragmentMaterialivSGIX #define GLEE_C_DEFINED_glFragmentMaterialivSGIX void __stdcall GLee_Lazy_glFragmentMaterialivSGIX(GLenum face, GLenum pname, const GLint * params) {if (GLeeInit()) glFragmentMaterialivSGIX(face, pname, params);} GLEEPFNGLFRAGMENTMATERIALIVSGIXPROC GLeeFuncPtr_glFragmentMaterialivSGIX=GLee_Lazy_glFragmentMaterialivSGIX; #endif #ifndef GLEE_C_DEFINED_glGetFragmentLightfvSGIX #define GLEE_C_DEFINED_glGetFragmentLightfvSGIX void __stdcall GLee_Lazy_glGetFragmentLightfvSGIX(GLenum light, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetFragmentLightfvSGIX(light, pname, params);} GLEEPFNGLGETFRAGMENTLIGHTFVSGIXPROC GLeeFuncPtr_glGetFragmentLightfvSGIX=GLee_Lazy_glGetFragmentLightfvSGIX; #endif #ifndef GLEE_C_DEFINED_glGetFragmentLightivSGIX #define GLEE_C_DEFINED_glGetFragmentLightivSGIX void __stdcall GLee_Lazy_glGetFragmentLightivSGIX(GLenum light, GLenum pname, GLint * params) {if (GLeeInit()) glGetFragmentLightivSGIX(light, pname, params);} GLEEPFNGLGETFRAGMENTLIGHTIVSGIXPROC GLeeFuncPtr_glGetFragmentLightivSGIX=GLee_Lazy_glGetFragmentLightivSGIX; #endif #ifndef GLEE_C_DEFINED_glGetFragmentMaterialfvSGIX #define GLEE_C_DEFINED_glGetFragmentMaterialfvSGIX void __stdcall GLee_Lazy_glGetFragmentMaterialfvSGIX(GLenum face, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetFragmentMaterialfvSGIX(face, pname, params);} GLEEPFNGLGETFRAGMENTMATERIALFVSGIXPROC GLeeFuncPtr_glGetFragmentMaterialfvSGIX=GLee_Lazy_glGetFragmentMaterialfvSGIX; #endif #ifndef GLEE_C_DEFINED_glGetFragmentMaterialivSGIX #define GLEE_C_DEFINED_glGetFragmentMaterialivSGIX void __stdcall GLee_Lazy_glGetFragmentMaterialivSGIX(GLenum face, GLenum pname, GLint * params) {if (GLeeInit()) glGetFragmentMaterialivSGIX(face, pname, params);} GLEEPFNGLGETFRAGMENTMATERIALIVSGIXPROC GLeeFuncPtr_glGetFragmentMaterialivSGIX=GLee_Lazy_glGetFragmentMaterialivSGIX; #endif #ifndef GLEE_C_DEFINED_glLightEnviSGIX #define GLEE_C_DEFINED_glLightEnviSGIX void __stdcall GLee_Lazy_glLightEnviSGIX(GLenum pname, GLint param) {if (GLeeInit()) glLightEnviSGIX(pname, param);} GLEEPFNGLLIGHTENVISGIXPROC GLeeFuncPtr_glLightEnviSGIX=GLee_Lazy_glLightEnviSGIX; #endif #endif /* GL_IBM_rasterpos_clip */ #ifdef __GLEE_GL_IBM_rasterpos_clip #endif /* GL_HP_texture_lighting */ #ifdef __GLEE_GL_HP_texture_lighting #endif /* GL_EXT_draw_range_elements */ #ifdef __GLEE_GL_EXT_draw_range_elements #ifndef GLEE_C_DEFINED_glDrawRangeElementsEXT #define GLEE_C_DEFINED_glDrawRangeElementsEXT void __stdcall GLee_Lazy_glDrawRangeElementsEXT(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices) {if (GLeeInit()) glDrawRangeElementsEXT(mode, start, end, count, type, indices);} GLEEPFNGLDRAWRANGEELEMENTSEXTPROC GLeeFuncPtr_glDrawRangeElementsEXT=GLee_Lazy_glDrawRangeElementsEXT; #endif #endif /* GL_WIN_phong_shading */ #ifdef __GLEE_GL_WIN_phong_shading #endif /* GL_WIN_specular_fog */ #ifdef __GLEE_GL_WIN_specular_fog #endif /* GL_EXT_light_texture */ #ifdef __GLEE_GL_EXT_light_texture #ifndef GLEE_C_DEFINED_glApplyTextureEXT #define GLEE_C_DEFINED_glApplyTextureEXT void __stdcall GLee_Lazy_glApplyTextureEXT(GLenum mode) {if (GLeeInit()) glApplyTextureEXT(mode);} GLEEPFNGLAPPLYTEXTUREEXTPROC GLeeFuncPtr_glApplyTextureEXT=GLee_Lazy_glApplyTextureEXT; #endif #ifndef GLEE_C_DEFINED_glTextureLightEXT #define GLEE_C_DEFINED_glTextureLightEXT void __stdcall GLee_Lazy_glTextureLightEXT(GLenum pname) {if (GLeeInit()) glTextureLightEXT(pname);} GLEEPFNGLTEXTURELIGHTEXTPROC GLeeFuncPtr_glTextureLightEXT=GLee_Lazy_glTextureLightEXT; #endif #ifndef GLEE_C_DEFINED_glTextureMaterialEXT #define GLEE_C_DEFINED_glTextureMaterialEXT void __stdcall GLee_Lazy_glTextureMaterialEXT(GLenum face, GLenum mode) {if (GLeeInit()) glTextureMaterialEXT(face, mode);} GLEEPFNGLTEXTUREMATERIALEXTPROC GLeeFuncPtr_glTextureMaterialEXT=GLee_Lazy_glTextureMaterialEXT; #endif #endif /* GL_SGIX_blend_alpha_minmax */ #ifdef __GLEE_GL_SGIX_blend_alpha_minmax #endif /* GL_SGIX_impact_pixel_texture */ #ifdef __GLEE_GL_SGIX_impact_pixel_texture #endif /* GL_EXT_bgra */ #ifdef __GLEE_GL_EXT_bgra #endif /* GL_SGIX_async */ #ifdef __GLEE_GL_SGIX_async #ifndef GLEE_C_DEFINED_glAsyncMarkerSGIX #define GLEE_C_DEFINED_glAsyncMarkerSGIX void __stdcall GLee_Lazy_glAsyncMarkerSGIX(GLuint marker) {if (GLeeInit()) glAsyncMarkerSGIX(marker);} GLEEPFNGLASYNCMARKERSGIXPROC GLeeFuncPtr_glAsyncMarkerSGIX=GLee_Lazy_glAsyncMarkerSGIX; #endif #ifndef GLEE_C_DEFINED_glFinishAsyncSGIX #define GLEE_C_DEFINED_glFinishAsyncSGIX GLint __stdcall GLee_Lazy_glFinishAsyncSGIX(GLuint * markerp) {if (GLeeInit()) return glFinishAsyncSGIX(markerp); return (GLint)0;} GLEEPFNGLFINISHASYNCSGIXPROC GLeeFuncPtr_glFinishAsyncSGIX=GLee_Lazy_glFinishAsyncSGIX; #endif #ifndef GLEE_C_DEFINED_glPollAsyncSGIX #define GLEE_C_DEFINED_glPollAsyncSGIX GLint __stdcall GLee_Lazy_glPollAsyncSGIX(GLuint * markerp) {if (GLeeInit()) return glPollAsyncSGIX(markerp); return (GLint)0;} GLEEPFNGLPOLLASYNCSGIXPROC GLeeFuncPtr_glPollAsyncSGIX=GLee_Lazy_glPollAsyncSGIX; #endif #ifndef GLEE_C_DEFINED_glGenAsyncMarkersSGIX #define GLEE_C_DEFINED_glGenAsyncMarkersSGIX GLuint __stdcall GLee_Lazy_glGenAsyncMarkersSGIX(GLsizei range) {if (GLeeInit()) return glGenAsyncMarkersSGIX(range); return (GLuint)0;} GLEEPFNGLGENASYNCMARKERSSGIXPROC GLeeFuncPtr_glGenAsyncMarkersSGIX=GLee_Lazy_glGenAsyncMarkersSGIX; #endif #ifndef GLEE_C_DEFINED_glDeleteAsyncMarkersSGIX #define GLEE_C_DEFINED_glDeleteAsyncMarkersSGIX void __stdcall GLee_Lazy_glDeleteAsyncMarkersSGIX(GLuint marker, GLsizei range) {if (GLeeInit()) glDeleteAsyncMarkersSGIX(marker, range);} GLEEPFNGLDELETEASYNCMARKERSSGIXPROC GLeeFuncPtr_glDeleteAsyncMarkersSGIX=GLee_Lazy_glDeleteAsyncMarkersSGIX; #endif #ifndef GLEE_C_DEFINED_glIsAsyncMarkerSGIX #define GLEE_C_DEFINED_glIsAsyncMarkerSGIX GLboolean __stdcall GLee_Lazy_glIsAsyncMarkerSGIX(GLuint marker) {if (GLeeInit()) return glIsAsyncMarkerSGIX(marker); return (GLboolean)0;} GLEEPFNGLISASYNCMARKERSGIXPROC GLeeFuncPtr_glIsAsyncMarkerSGIX=GLee_Lazy_glIsAsyncMarkerSGIX; #endif #endif /* GL_SGIX_async_pixel */ #ifdef __GLEE_GL_SGIX_async_pixel #endif /* GL_SGIX_async_histogram */ #ifdef __GLEE_GL_SGIX_async_histogram #endif /* GL_INTEL_texture_scissor */ #ifdef __GLEE_GL_INTEL_texture_scissor #endif /* GL_INTEL_parallel_arrays */ #ifdef __GLEE_GL_INTEL_parallel_arrays #ifndef GLEE_C_DEFINED_glVertexPointervINTEL #define GLEE_C_DEFINED_glVertexPointervINTEL void __stdcall GLee_Lazy_glVertexPointervINTEL(GLint size, GLenum type, const GLvoid* * pointer) {if (GLeeInit()) glVertexPointervINTEL(size, type, pointer);} GLEEPFNGLVERTEXPOINTERVINTELPROC GLeeFuncPtr_glVertexPointervINTEL=GLee_Lazy_glVertexPointervINTEL; #endif #ifndef GLEE_C_DEFINED_glNormalPointervINTEL #define GLEE_C_DEFINED_glNormalPointervINTEL void __stdcall GLee_Lazy_glNormalPointervINTEL(GLenum type, const GLvoid* * pointer) {if (GLeeInit()) glNormalPointervINTEL(type, pointer);} GLEEPFNGLNORMALPOINTERVINTELPROC GLeeFuncPtr_glNormalPointervINTEL=GLee_Lazy_glNormalPointervINTEL; #endif #ifndef GLEE_C_DEFINED_glColorPointervINTEL #define GLEE_C_DEFINED_glColorPointervINTEL void __stdcall GLee_Lazy_glColorPointervINTEL(GLint size, GLenum type, const GLvoid* * pointer) {if (GLeeInit()) glColorPointervINTEL(size, type, pointer);} GLEEPFNGLCOLORPOINTERVINTELPROC GLeeFuncPtr_glColorPointervINTEL=GLee_Lazy_glColorPointervINTEL; #endif #ifndef GLEE_C_DEFINED_glTexCoordPointervINTEL #define GLEE_C_DEFINED_glTexCoordPointervINTEL void __stdcall GLee_Lazy_glTexCoordPointervINTEL(GLint size, GLenum type, const GLvoid* * pointer) {if (GLeeInit()) glTexCoordPointervINTEL(size, type, pointer);} GLEEPFNGLTEXCOORDPOINTERVINTELPROC GLeeFuncPtr_glTexCoordPointervINTEL=GLee_Lazy_glTexCoordPointervINTEL; #endif #endif /* GL_HP_occlusion_test */ #ifdef __GLEE_GL_HP_occlusion_test #endif /* GL_EXT_pixel_transform */ #ifdef __GLEE_GL_EXT_pixel_transform #ifndef GLEE_C_DEFINED_glPixelTransformParameteriEXT #define GLEE_C_DEFINED_glPixelTransformParameteriEXT void __stdcall GLee_Lazy_glPixelTransformParameteriEXT(GLenum target, GLenum pname, GLint param) {if (GLeeInit()) glPixelTransformParameteriEXT(target, pname, param);} GLEEPFNGLPIXELTRANSFORMPARAMETERIEXTPROC GLeeFuncPtr_glPixelTransformParameteriEXT=GLee_Lazy_glPixelTransformParameteriEXT; #endif #ifndef GLEE_C_DEFINED_glPixelTransformParameterfEXT #define GLEE_C_DEFINED_glPixelTransformParameterfEXT void __stdcall GLee_Lazy_glPixelTransformParameterfEXT(GLenum target, GLenum pname, GLfloat param) {if (GLeeInit()) glPixelTransformParameterfEXT(target, pname, param);} GLEEPFNGLPIXELTRANSFORMPARAMETERFEXTPROC GLeeFuncPtr_glPixelTransformParameterfEXT=GLee_Lazy_glPixelTransformParameterfEXT; #endif #ifndef GLEE_C_DEFINED_glPixelTransformParameterivEXT #define GLEE_C_DEFINED_glPixelTransformParameterivEXT void __stdcall GLee_Lazy_glPixelTransformParameterivEXT(GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glPixelTransformParameterivEXT(target, pname, params);} GLEEPFNGLPIXELTRANSFORMPARAMETERIVEXTPROC GLeeFuncPtr_glPixelTransformParameterivEXT=GLee_Lazy_glPixelTransformParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glPixelTransformParameterfvEXT #define GLEE_C_DEFINED_glPixelTransformParameterfvEXT void __stdcall GLee_Lazy_glPixelTransformParameterfvEXT(GLenum target, GLenum pname, const GLfloat * params) {if (GLeeInit()) glPixelTransformParameterfvEXT(target, pname, params);} GLEEPFNGLPIXELTRANSFORMPARAMETERFVEXTPROC GLeeFuncPtr_glPixelTransformParameterfvEXT=GLee_Lazy_glPixelTransformParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetPixelTransformParameterivEXT #define GLEE_C_DEFINED_glGetPixelTransformParameterivEXT void __stdcall GLee_Lazy_glGetPixelTransformParameterivEXT(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetPixelTransformParameterivEXT(target, pname, params);} GLEEPFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC GLeeFuncPtr_glGetPixelTransformParameterivEXT=GLee_Lazy_glGetPixelTransformParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glGetPixelTransformParameterfvEXT #define GLEE_C_DEFINED_glGetPixelTransformParameterfvEXT void __stdcall GLee_Lazy_glGetPixelTransformParameterfvEXT(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetPixelTransformParameterfvEXT(target, pname, params);} GLEEPFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC GLeeFuncPtr_glGetPixelTransformParameterfvEXT=GLee_Lazy_glGetPixelTransformParameterfvEXT; #endif #endif /* GL_EXT_pixel_transform_color_table */ #ifdef __GLEE_GL_EXT_pixel_transform_color_table #endif /* GL_EXT_shared_texture_palette */ #ifdef __GLEE_GL_EXT_shared_texture_palette #endif /* GL_EXT_separate_specular_color */ #ifdef __GLEE_GL_EXT_separate_specular_color #endif /* GL_EXT_secondary_color */ #ifdef __GLEE_GL_EXT_secondary_color #ifndef GLEE_C_DEFINED_glSecondaryColor3bEXT #define GLEE_C_DEFINED_glSecondaryColor3bEXT void __stdcall GLee_Lazy_glSecondaryColor3bEXT(GLbyte red, GLbyte green, GLbyte blue) {if (GLeeInit()) glSecondaryColor3bEXT(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3BEXTPROC GLeeFuncPtr_glSecondaryColor3bEXT=GLee_Lazy_glSecondaryColor3bEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3bvEXT #define GLEE_C_DEFINED_glSecondaryColor3bvEXT void __stdcall GLee_Lazy_glSecondaryColor3bvEXT(const GLbyte * v) {if (GLeeInit()) glSecondaryColor3bvEXT(v);} GLEEPFNGLSECONDARYCOLOR3BVEXTPROC GLeeFuncPtr_glSecondaryColor3bvEXT=GLee_Lazy_glSecondaryColor3bvEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3dEXT #define GLEE_C_DEFINED_glSecondaryColor3dEXT void __stdcall GLee_Lazy_glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue) {if (GLeeInit()) glSecondaryColor3dEXT(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3DEXTPROC GLeeFuncPtr_glSecondaryColor3dEXT=GLee_Lazy_glSecondaryColor3dEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3dvEXT #define GLEE_C_DEFINED_glSecondaryColor3dvEXT void __stdcall GLee_Lazy_glSecondaryColor3dvEXT(const GLdouble * v) {if (GLeeInit()) glSecondaryColor3dvEXT(v);} GLEEPFNGLSECONDARYCOLOR3DVEXTPROC GLeeFuncPtr_glSecondaryColor3dvEXT=GLee_Lazy_glSecondaryColor3dvEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3fEXT #define GLEE_C_DEFINED_glSecondaryColor3fEXT void __stdcall GLee_Lazy_glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue) {if (GLeeInit()) glSecondaryColor3fEXT(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3FEXTPROC GLeeFuncPtr_glSecondaryColor3fEXT=GLee_Lazy_glSecondaryColor3fEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3fvEXT #define GLEE_C_DEFINED_glSecondaryColor3fvEXT void __stdcall GLee_Lazy_glSecondaryColor3fvEXT(const GLfloat * v) {if (GLeeInit()) glSecondaryColor3fvEXT(v);} GLEEPFNGLSECONDARYCOLOR3FVEXTPROC GLeeFuncPtr_glSecondaryColor3fvEXT=GLee_Lazy_glSecondaryColor3fvEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3iEXT #define GLEE_C_DEFINED_glSecondaryColor3iEXT void __stdcall GLee_Lazy_glSecondaryColor3iEXT(GLint red, GLint green, GLint blue) {if (GLeeInit()) glSecondaryColor3iEXT(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3IEXTPROC GLeeFuncPtr_glSecondaryColor3iEXT=GLee_Lazy_glSecondaryColor3iEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3ivEXT #define GLEE_C_DEFINED_glSecondaryColor3ivEXT void __stdcall GLee_Lazy_glSecondaryColor3ivEXT(const GLint * v) {if (GLeeInit()) glSecondaryColor3ivEXT(v);} GLEEPFNGLSECONDARYCOLOR3IVEXTPROC GLeeFuncPtr_glSecondaryColor3ivEXT=GLee_Lazy_glSecondaryColor3ivEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3sEXT #define GLEE_C_DEFINED_glSecondaryColor3sEXT void __stdcall GLee_Lazy_glSecondaryColor3sEXT(GLshort red, GLshort green, GLshort blue) {if (GLeeInit()) glSecondaryColor3sEXT(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3SEXTPROC GLeeFuncPtr_glSecondaryColor3sEXT=GLee_Lazy_glSecondaryColor3sEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3svEXT #define GLEE_C_DEFINED_glSecondaryColor3svEXT void __stdcall GLee_Lazy_glSecondaryColor3svEXT(const GLshort * v) {if (GLeeInit()) glSecondaryColor3svEXT(v);} GLEEPFNGLSECONDARYCOLOR3SVEXTPROC GLeeFuncPtr_glSecondaryColor3svEXT=GLee_Lazy_glSecondaryColor3svEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3ubEXT #define GLEE_C_DEFINED_glSecondaryColor3ubEXT void __stdcall GLee_Lazy_glSecondaryColor3ubEXT(GLubyte red, GLubyte green, GLubyte blue) {if (GLeeInit()) glSecondaryColor3ubEXT(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3UBEXTPROC GLeeFuncPtr_glSecondaryColor3ubEXT=GLee_Lazy_glSecondaryColor3ubEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3ubvEXT #define GLEE_C_DEFINED_glSecondaryColor3ubvEXT void __stdcall GLee_Lazy_glSecondaryColor3ubvEXT(const GLubyte * v) {if (GLeeInit()) glSecondaryColor3ubvEXT(v);} GLEEPFNGLSECONDARYCOLOR3UBVEXTPROC GLeeFuncPtr_glSecondaryColor3ubvEXT=GLee_Lazy_glSecondaryColor3ubvEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3uiEXT #define GLEE_C_DEFINED_glSecondaryColor3uiEXT void __stdcall GLee_Lazy_glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue) {if (GLeeInit()) glSecondaryColor3uiEXT(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3UIEXTPROC GLeeFuncPtr_glSecondaryColor3uiEXT=GLee_Lazy_glSecondaryColor3uiEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3uivEXT #define GLEE_C_DEFINED_glSecondaryColor3uivEXT void __stdcall GLee_Lazy_glSecondaryColor3uivEXT(const GLuint * v) {if (GLeeInit()) glSecondaryColor3uivEXT(v);} GLEEPFNGLSECONDARYCOLOR3UIVEXTPROC GLeeFuncPtr_glSecondaryColor3uivEXT=GLee_Lazy_glSecondaryColor3uivEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3usEXT #define GLEE_C_DEFINED_glSecondaryColor3usEXT void __stdcall GLee_Lazy_glSecondaryColor3usEXT(GLushort red, GLushort green, GLushort blue) {if (GLeeInit()) glSecondaryColor3usEXT(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3USEXTPROC GLeeFuncPtr_glSecondaryColor3usEXT=GLee_Lazy_glSecondaryColor3usEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3usvEXT #define GLEE_C_DEFINED_glSecondaryColor3usvEXT void __stdcall GLee_Lazy_glSecondaryColor3usvEXT(const GLushort * v) {if (GLeeInit()) glSecondaryColor3usvEXT(v);} GLEEPFNGLSECONDARYCOLOR3USVEXTPROC GLeeFuncPtr_glSecondaryColor3usvEXT=GLee_Lazy_glSecondaryColor3usvEXT; #endif #ifndef GLEE_C_DEFINED_glSecondaryColorPointerEXT #define GLEE_C_DEFINED_glSecondaryColorPointerEXT void __stdcall GLee_Lazy_glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glSecondaryColorPointerEXT(size, type, stride, pointer);} GLEEPFNGLSECONDARYCOLORPOINTEREXTPROC GLeeFuncPtr_glSecondaryColorPointerEXT=GLee_Lazy_glSecondaryColorPointerEXT; #endif #endif /* GL_EXT_texture_perturb_normal */ #ifdef __GLEE_GL_EXT_texture_perturb_normal #ifndef GLEE_C_DEFINED_glTextureNormalEXT #define GLEE_C_DEFINED_glTextureNormalEXT void __stdcall GLee_Lazy_glTextureNormalEXT(GLenum mode) {if (GLeeInit()) glTextureNormalEXT(mode);} GLEEPFNGLTEXTURENORMALEXTPROC GLeeFuncPtr_glTextureNormalEXT=GLee_Lazy_glTextureNormalEXT; #endif #endif /* GL_EXT_multi_draw_arrays */ #ifdef __GLEE_GL_EXT_multi_draw_arrays #ifndef GLEE_C_DEFINED_glMultiDrawArraysEXT #define GLEE_C_DEFINED_glMultiDrawArraysEXT void __stdcall GLee_Lazy_glMultiDrawArraysEXT(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount) {if (GLeeInit()) glMultiDrawArraysEXT(mode, first, count, primcount);} GLEEPFNGLMULTIDRAWARRAYSEXTPROC GLeeFuncPtr_glMultiDrawArraysEXT=GLee_Lazy_glMultiDrawArraysEXT; #endif #ifndef GLEE_C_DEFINED_glMultiDrawElementsEXT #define GLEE_C_DEFINED_glMultiDrawElementsEXT void __stdcall GLee_Lazy_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count, GLenum type, const GLvoid* * indices, GLsizei primcount) {if (GLeeInit()) glMultiDrawElementsEXT(mode, count, type, indices, primcount);} GLEEPFNGLMULTIDRAWELEMENTSEXTPROC GLeeFuncPtr_glMultiDrawElementsEXT=GLee_Lazy_glMultiDrawElementsEXT; #endif #endif /* GL_EXT_fog_coord */ #ifdef __GLEE_GL_EXT_fog_coord #ifndef GLEE_C_DEFINED_glFogCoordfEXT #define GLEE_C_DEFINED_glFogCoordfEXT void __stdcall GLee_Lazy_glFogCoordfEXT(GLfloat coord) {if (GLeeInit()) glFogCoordfEXT(coord);} GLEEPFNGLFOGCOORDFEXTPROC GLeeFuncPtr_glFogCoordfEXT=GLee_Lazy_glFogCoordfEXT; #endif #ifndef GLEE_C_DEFINED_glFogCoordfvEXT #define GLEE_C_DEFINED_glFogCoordfvEXT void __stdcall GLee_Lazy_glFogCoordfvEXT(const GLfloat * coord) {if (GLeeInit()) glFogCoordfvEXT(coord);} GLEEPFNGLFOGCOORDFVEXTPROC GLeeFuncPtr_glFogCoordfvEXT=GLee_Lazy_glFogCoordfvEXT; #endif #ifndef GLEE_C_DEFINED_glFogCoorddEXT #define GLEE_C_DEFINED_glFogCoorddEXT void __stdcall GLee_Lazy_glFogCoorddEXT(GLdouble coord) {if (GLeeInit()) glFogCoorddEXT(coord);} GLEEPFNGLFOGCOORDDEXTPROC GLeeFuncPtr_glFogCoorddEXT=GLee_Lazy_glFogCoorddEXT; #endif #ifndef GLEE_C_DEFINED_glFogCoorddvEXT #define GLEE_C_DEFINED_glFogCoorddvEXT void __stdcall GLee_Lazy_glFogCoorddvEXT(const GLdouble * coord) {if (GLeeInit()) glFogCoorddvEXT(coord);} GLEEPFNGLFOGCOORDDVEXTPROC GLeeFuncPtr_glFogCoorddvEXT=GLee_Lazy_glFogCoorddvEXT; #endif #ifndef GLEE_C_DEFINED_glFogCoordPointerEXT #define GLEE_C_DEFINED_glFogCoordPointerEXT void __stdcall GLee_Lazy_glFogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glFogCoordPointerEXT(type, stride, pointer);} GLEEPFNGLFOGCOORDPOINTEREXTPROC GLeeFuncPtr_glFogCoordPointerEXT=GLee_Lazy_glFogCoordPointerEXT; #endif #endif /* GL_REND_screen_coordinates */ #ifdef __GLEE_GL_REND_screen_coordinates #endif /* GL_EXT_coordinate_frame */ #ifdef __GLEE_GL_EXT_coordinate_frame #ifndef GLEE_C_DEFINED_glTangent3bEXT #define GLEE_C_DEFINED_glTangent3bEXT void __stdcall GLee_Lazy_glTangent3bEXT(GLbyte tx, GLbyte ty, GLbyte tz) {if (GLeeInit()) glTangent3bEXT(tx, ty, tz);} GLEEPFNGLTANGENT3BEXTPROC GLeeFuncPtr_glTangent3bEXT=GLee_Lazy_glTangent3bEXT; #endif #ifndef GLEE_C_DEFINED_glTangent3bvEXT #define GLEE_C_DEFINED_glTangent3bvEXT void __stdcall GLee_Lazy_glTangent3bvEXT(const GLbyte * v) {if (GLeeInit()) glTangent3bvEXT(v);} GLEEPFNGLTANGENT3BVEXTPROC GLeeFuncPtr_glTangent3bvEXT=GLee_Lazy_glTangent3bvEXT; #endif #ifndef GLEE_C_DEFINED_glTangent3dEXT #define GLEE_C_DEFINED_glTangent3dEXT void __stdcall GLee_Lazy_glTangent3dEXT(GLdouble tx, GLdouble ty, GLdouble tz) {if (GLeeInit()) glTangent3dEXT(tx, ty, tz);} GLEEPFNGLTANGENT3DEXTPROC GLeeFuncPtr_glTangent3dEXT=GLee_Lazy_glTangent3dEXT; #endif #ifndef GLEE_C_DEFINED_glTangent3dvEXT #define GLEE_C_DEFINED_glTangent3dvEXT void __stdcall GLee_Lazy_glTangent3dvEXT(const GLdouble * v) {if (GLeeInit()) glTangent3dvEXT(v);} GLEEPFNGLTANGENT3DVEXTPROC GLeeFuncPtr_glTangent3dvEXT=GLee_Lazy_glTangent3dvEXT; #endif #ifndef GLEE_C_DEFINED_glTangent3fEXT #define GLEE_C_DEFINED_glTangent3fEXT void __stdcall GLee_Lazy_glTangent3fEXT(GLfloat tx, GLfloat ty, GLfloat tz) {if (GLeeInit()) glTangent3fEXT(tx, ty, tz);} GLEEPFNGLTANGENT3FEXTPROC GLeeFuncPtr_glTangent3fEXT=GLee_Lazy_glTangent3fEXT; #endif #ifndef GLEE_C_DEFINED_glTangent3fvEXT #define GLEE_C_DEFINED_glTangent3fvEXT void __stdcall GLee_Lazy_glTangent3fvEXT(const GLfloat * v) {if (GLeeInit()) glTangent3fvEXT(v);} GLEEPFNGLTANGENT3FVEXTPROC GLeeFuncPtr_glTangent3fvEXT=GLee_Lazy_glTangent3fvEXT; #endif #ifndef GLEE_C_DEFINED_glTangent3iEXT #define GLEE_C_DEFINED_glTangent3iEXT void __stdcall GLee_Lazy_glTangent3iEXT(GLint tx, GLint ty, GLint tz) {if (GLeeInit()) glTangent3iEXT(tx, ty, tz);} GLEEPFNGLTANGENT3IEXTPROC GLeeFuncPtr_glTangent3iEXT=GLee_Lazy_glTangent3iEXT; #endif #ifndef GLEE_C_DEFINED_glTangent3ivEXT #define GLEE_C_DEFINED_glTangent3ivEXT void __stdcall GLee_Lazy_glTangent3ivEXT(const GLint * v) {if (GLeeInit()) glTangent3ivEXT(v);} GLEEPFNGLTANGENT3IVEXTPROC GLeeFuncPtr_glTangent3ivEXT=GLee_Lazy_glTangent3ivEXT; #endif #ifndef GLEE_C_DEFINED_glTangent3sEXT #define GLEE_C_DEFINED_glTangent3sEXT void __stdcall GLee_Lazy_glTangent3sEXT(GLshort tx, GLshort ty, GLshort tz) {if (GLeeInit()) glTangent3sEXT(tx, ty, tz);} GLEEPFNGLTANGENT3SEXTPROC GLeeFuncPtr_glTangent3sEXT=GLee_Lazy_glTangent3sEXT; #endif #ifndef GLEE_C_DEFINED_glTangent3svEXT #define GLEE_C_DEFINED_glTangent3svEXT void __stdcall GLee_Lazy_glTangent3svEXT(const GLshort * v) {if (GLeeInit()) glTangent3svEXT(v);} GLEEPFNGLTANGENT3SVEXTPROC GLeeFuncPtr_glTangent3svEXT=GLee_Lazy_glTangent3svEXT; #endif #ifndef GLEE_C_DEFINED_glBinormal3bEXT #define GLEE_C_DEFINED_glBinormal3bEXT void __stdcall GLee_Lazy_glBinormal3bEXT(GLbyte bx, GLbyte by, GLbyte bz) {if (GLeeInit()) glBinormal3bEXT(bx, by, bz);} GLEEPFNGLBINORMAL3BEXTPROC GLeeFuncPtr_glBinormal3bEXT=GLee_Lazy_glBinormal3bEXT; #endif #ifndef GLEE_C_DEFINED_glBinormal3bvEXT #define GLEE_C_DEFINED_glBinormal3bvEXT void __stdcall GLee_Lazy_glBinormal3bvEXT(const GLbyte * v) {if (GLeeInit()) glBinormal3bvEXT(v);} GLEEPFNGLBINORMAL3BVEXTPROC GLeeFuncPtr_glBinormal3bvEXT=GLee_Lazy_glBinormal3bvEXT; #endif #ifndef GLEE_C_DEFINED_glBinormal3dEXT #define GLEE_C_DEFINED_glBinormal3dEXT void __stdcall GLee_Lazy_glBinormal3dEXT(GLdouble bx, GLdouble by, GLdouble bz) {if (GLeeInit()) glBinormal3dEXT(bx, by, bz);} GLEEPFNGLBINORMAL3DEXTPROC GLeeFuncPtr_glBinormal3dEXT=GLee_Lazy_glBinormal3dEXT; #endif #ifndef GLEE_C_DEFINED_glBinormal3dvEXT #define GLEE_C_DEFINED_glBinormal3dvEXT void __stdcall GLee_Lazy_glBinormal3dvEXT(const GLdouble * v) {if (GLeeInit()) glBinormal3dvEXT(v);} GLEEPFNGLBINORMAL3DVEXTPROC GLeeFuncPtr_glBinormal3dvEXT=GLee_Lazy_glBinormal3dvEXT; #endif #ifndef GLEE_C_DEFINED_glBinormal3fEXT #define GLEE_C_DEFINED_glBinormal3fEXT void __stdcall GLee_Lazy_glBinormal3fEXT(GLfloat bx, GLfloat by, GLfloat bz) {if (GLeeInit()) glBinormal3fEXT(bx, by, bz);} GLEEPFNGLBINORMAL3FEXTPROC GLeeFuncPtr_glBinormal3fEXT=GLee_Lazy_glBinormal3fEXT; #endif #ifndef GLEE_C_DEFINED_glBinormal3fvEXT #define GLEE_C_DEFINED_glBinormal3fvEXT void __stdcall GLee_Lazy_glBinormal3fvEXT(const GLfloat * v) {if (GLeeInit()) glBinormal3fvEXT(v);} GLEEPFNGLBINORMAL3FVEXTPROC GLeeFuncPtr_glBinormal3fvEXT=GLee_Lazy_glBinormal3fvEXT; #endif #ifndef GLEE_C_DEFINED_glBinormal3iEXT #define GLEE_C_DEFINED_glBinormal3iEXT void __stdcall GLee_Lazy_glBinormal3iEXT(GLint bx, GLint by, GLint bz) {if (GLeeInit()) glBinormal3iEXT(bx, by, bz);} GLEEPFNGLBINORMAL3IEXTPROC GLeeFuncPtr_glBinormal3iEXT=GLee_Lazy_glBinormal3iEXT; #endif #ifndef GLEE_C_DEFINED_glBinormal3ivEXT #define GLEE_C_DEFINED_glBinormal3ivEXT void __stdcall GLee_Lazy_glBinormal3ivEXT(const GLint * v) {if (GLeeInit()) glBinormal3ivEXT(v);} GLEEPFNGLBINORMAL3IVEXTPROC GLeeFuncPtr_glBinormal3ivEXT=GLee_Lazy_glBinormal3ivEXT; #endif #ifndef GLEE_C_DEFINED_glBinormal3sEXT #define GLEE_C_DEFINED_glBinormal3sEXT void __stdcall GLee_Lazy_glBinormal3sEXT(GLshort bx, GLshort by, GLshort bz) {if (GLeeInit()) glBinormal3sEXT(bx, by, bz);} GLEEPFNGLBINORMAL3SEXTPROC GLeeFuncPtr_glBinormal3sEXT=GLee_Lazy_glBinormal3sEXT; #endif #ifndef GLEE_C_DEFINED_glBinormal3svEXT #define GLEE_C_DEFINED_glBinormal3svEXT void __stdcall GLee_Lazy_glBinormal3svEXT(const GLshort * v) {if (GLeeInit()) glBinormal3svEXT(v);} GLEEPFNGLBINORMAL3SVEXTPROC GLeeFuncPtr_glBinormal3svEXT=GLee_Lazy_glBinormal3svEXT; #endif #ifndef GLEE_C_DEFINED_glTangentPointerEXT #define GLEE_C_DEFINED_glTangentPointerEXT void __stdcall GLee_Lazy_glTangentPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glTangentPointerEXT(type, stride, pointer);} GLEEPFNGLTANGENTPOINTEREXTPROC GLeeFuncPtr_glTangentPointerEXT=GLee_Lazy_glTangentPointerEXT; #endif #ifndef GLEE_C_DEFINED_glBinormalPointerEXT #define GLEE_C_DEFINED_glBinormalPointerEXT void __stdcall GLee_Lazy_glBinormalPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glBinormalPointerEXT(type, stride, pointer);} GLEEPFNGLBINORMALPOINTEREXTPROC GLeeFuncPtr_glBinormalPointerEXT=GLee_Lazy_glBinormalPointerEXT; #endif #endif /* GL_EXT_texture_env_combine */ #ifdef __GLEE_GL_EXT_texture_env_combine #endif /* GL_APPLE_specular_vector */ #ifdef __GLEE_GL_APPLE_specular_vector #endif /* GL_APPLE_transform_hint */ #ifdef __GLEE_GL_APPLE_transform_hint #endif /* GL_SGIX_fog_scale */ #ifdef __GLEE_GL_SGIX_fog_scale #endif /* GL_SUNX_constant_data */ #ifdef __GLEE_GL_SUNX_constant_data #ifndef GLEE_C_DEFINED_glFinishTextureSUNX #define GLEE_C_DEFINED_glFinishTextureSUNX void __stdcall GLee_Lazy_glFinishTextureSUNX(void) {if (GLeeInit()) glFinishTextureSUNX();} GLEEPFNGLFINISHTEXTURESUNXPROC GLeeFuncPtr_glFinishTextureSUNX=GLee_Lazy_glFinishTextureSUNX; #endif #endif /* GL_SUN_global_alpha */ #ifdef __GLEE_GL_SUN_global_alpha #ifndef GLEE_C_DEFINED_glGlobalAlphaFactorbSUN #define GLEE_C_DEFINED_glGlobalAlphaFactorbSUN void __stdcall GLee_Lazy_glGlobalAlphaFactorbSUN(GLbyte factor) {if (GLeeInit()) glGlobalAlphaFactorbSUN(factor);} GLEEPFNGLGLOBALALPHAFACTORBSUNPROC GLeeFuncPtr_glGlobalAlphaFactorbSUN=GLee_Lazy_glGlobalAlphaFactorbSUN; #endif #ifndef GLEE_C_DEFINED_glGlobalAlphaFactorsSUN #define GLEE_C_DEFINED_glGlobalAlphaFactorsSUN void __stdcall GLee_Lazy_glGlobalAlphaFactorsSUN(GLshort factor) {if (GLeeInit()) glGlobalAlphaFactorsSUN(factor);} GLEEPFNGLGLOBALALPHAFACTORSSUNPROC GLeeFuncPtr_glGlobalAlphaFactorsSUN=GLee_Lazy_glGlobalAlphaFactorsSUN; #endif #ifndef GLEE_C_DEFINED_glGlobalAlphaFactoriSUN #define GLEE_C_DEFINED_glGlobalAlphaFactoriSUN void __stdcall GLee_Lazy_glGlobalAlphaFactoriSUN(GLint factor) {if (GLeeInit()) glGlobalAlphaFactoriSUN(factor);} GLEEPFNGLGLOBALALPHAFACTORISUNPROC GLeeFuncPtr_glGlobalAlphaFactoriSUN=GLee_Lazy_glGlobalAlphaFactoriSUN; #endif #ifndef GLEE_C_DEFINED_glGlobalAlphaFactorfSUN #define GLEE_C_DEFINED_glGlobalAlphaFactorfSUN void __stdcall GLee_Lazy_glGlobalAlphaFactorfSUN(GLfloat factor) {if (GLeeInit()) glGlobalAlphaFactorfSUN(factor);} GLEEPFNGLGLOBALALPHAFACTORFSUNPROC GLeeFuncPtr_glGlobalAlphaFactorfSUN=GLee_Lazy_glGlobalAlphaFactorfSUN; #endif #ifndef GLEE_C_DEFINED_glGlobalAlphaFactordSUN #define GLEE_C_DEFINED_glGlobalAlphaFactordSUN void __stdcall GLee_Lazy_glGlobalAlphaFactordSUN(GLdouble factor) {if (GLeeInit()) glGlobalAlphaFactordSUN(factor);} GLEEPFNGLGLOBALALPHAFACTORDSUNPROC GLeeFuncPtr_glGlobalAlphaFactordSUN=GLee_Lazy_glGlobalAlphaFactordSUN; #endif #ifndef GLEE_C_DEFINED_glGlobalAlphaFactorubSUN #define GLEE_C_DEFINED_glGlobalAlphaFactorubSUN void __stdcall GLee_Lazy_glGlobalAlphaFactorubSUN(GLubyte factor) {if (GLeeInit()) glGlobalAlphaFactorubSUN(factor);} GLEEPFNGLGLOBALALPHAFACTORUBSUNPROC GLeeFuncPtr_glGlobalAlphaFactorubSUN=GLee_Lazy_glGlobalAlphaFactorubSUN; #endif #ifndef GLEE_C_DEFINED_glGlobalAlphaFactorusSUN #define GLEE_C_DEFINED_glGlobalAlphaFactorusSUN void __stdcall GLee_Lazy_glGlobalAlphaFactorusSUN(GLushort factor) {if (GLeeInit()) glGlobalAlphaFactorusSUN(factor);} GLEEPFNGLGLOBALALPHAFACTORUSSUNPROC GLeeFuncPtr_glGlobalAlphaFactorusSUN=GLee_Lazy_glGlobalAlphaFactorusSUN; #endif #ifndef GLEE_C_DEFINED_glGlobalAlphaFactoruiSUN #define GLEE_C_DEFINED_glGlobalAlphaFactoruiSUN void __stdcall GLee_Lazy_glGlobalAlphaFactoruiSUN(GLuint factor) {if (GLeeInit()) glGlobalAlphaFactoruiSUN(factor);} GLEEPFNGLGLOBALALPHAFACTORUISUNPROC GLeeFuncPtr_glGlobalAlphaFactoruiSUN=GLee_Lazy_glGlobalAlphaFactoruiSUN; #endif #endif /* GL_SUN_triangle_list */ #ifdef __GLEE_GL_SUN_triangle_list #ifndef GLEE_C_DEFINED_glReplacementCodeuiSUN #define GLEE_C_DEFINED_glReplacementCodeuiSUN void __stdcall GLee_Lazy_glReplacementCodeuiSUN(GLuint code) {if (GLeeInit()) glReplacementCodeuiSUN(code);} GLEEPFNGLREPLACEMENTCODEUISUNPROC GLeeFuncPtr_glReplacementCodeuiSUN=GLee_Lazy_glReplacementCodeuiSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeusSUN #define GLEE_C_DEFINED_glReplacementCodeusSUN void __stdcall GLee_Lazy_glReplacementCodeusSUN(GLushort code) {if (GLeeInit()) glReplacementCodeusSUN(code);} GLEEPFNGLREPLACEMENTCODEUSSUNPROC GLeeFuncPtr_glReplacementCodeusSUN=GLee_Lazy_glReplacementCodeusSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeubSUN #define GLEE_C_DEFINED_glReplacementCodeubSUN void __stdcall GLee_Lazy_glReplacementCodeubSUN(GLubyte code) {if (GLeeInit()) glReplacementCodeubSUN(code);} GLEEPFNGLREPLACEMENTCODEUBSUNPROC GLeeFuncPtr_glReplacementCodeubSUN=GLee_Lazy_glReplacementCodeubSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuivSUN #define GLEE_C_DEFINED_glReplacementCodeuivSUN void __stdcall GLee_Lazy_glReplacementCodeuivSUN(const GLuint * code) {if (GLeeInit()) glReplacementCodeuivSUN(code);} GLEEPFNGLREPLACEMENTCODEUIVSUNPROC GLeeFuncPtr_glReplacementCodeuivSUN=GLee_Lazy_glReplacementCodeuivSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeusvSUN #define GLEE_C_DEFINED_glReplacementCodeusvSUN void __stdcall GLee_Lazy_glReplacementCodeusvSUN(const GLushort * code) {if (GLeeInit()) glReplacementCodeusvSUN(code);} GLEEPFNGLREPLACEMENTCODEUSVSUNPROC GLeeFuncPtr_glReplacementCodeusvSUN=GLee_Lazy_glReplacementCodeusvSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeubvSUN #define GLEE_C_DEFINED_glReplacementCodeubvSUN void __stdcall GLee_Lazy_glReplacementCodeubvSUN(const GLubyte * code) {if (GLeeInit()) glReplacementCodeubvSUN(code);} GLEEPFNGLREPLACEMENTCODEUBVSUNPROC GLeeFuncPtr_glReplacementCodeubvSUN=GLee_Lazy_glReplacementCodeubvSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodePointerSUN #define GLEE_C_DEFINED_glReplacementCodePointerSUN void __stdcall GLee_Lazy_glReplacementCodePointerSUN(GLenum type, GLsizei stride, const GLvoid* * pointer) {if (GLeeInit()) glReplacementCodePointerSUN(type, stride, pointer);} GLEEPFNGLREPLACEMENTCODEPOINTERSUNPROC GLeeFuncPtr_glReplacementCodePointerSUN=GLee_Lazy_glReplacementCodePointerSUN; #endif #endif /* GL_SUN_vertex */ #ifdef __GLEE_GL_SUN_vertex #ifndef GLEE_C_DEFINED_glColor4ubVertex2fSUN #define GLEE_C_DEFINED_glColor4ubVertex2fSUN void __stdcall GLee_Lazy_glColor4ubVertex2fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y) {if (GLeeInit()) glColor4ubVertex2fSUN(r, g, b, a, x, y);} GLEEPFNGLCOLOR4UBVERTEX2FSUNPROC GLeeFuncPtr_glColor4ubVertex2fSUN=GLee_Lazy_glColor4ubVertex2fSUN; #endif #ifndef GLEE_C_DEFINED_glColor4ubVertex2fvSUN #define GLEE_C_DEFINED_glColor4ubVertex2fvSUN void __stdcall GLee_Lazy_glColor4ubVertex2fvSUN(const GLubyte * c, const GLfloat * v) {if (GLeeInit()) glColor4ubVertex2fvSUN(c, v);} GLEEPFNGLCOLOR4UBVERTEX2FVSUNPROC GLeeFuncPtr_glColor4ubVertex2fvSUN=GLee_Lazy_glColor4ubVertex2fvSUN; #endif #ifndef GLEE_C_DEFINED_glColor4ubVertex3fSUN #define GLEE_C_DEFINED_glColor4ubVertex3fSUN void __stdcall GLee_Lazy_glColor4ubVertex3fSUN(GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glColor4ubVertex3fSUN(r, g, b, a, x, y, z);} GLEEPFNGLCOLOR4UBVERTEX3FSUNPROC GLeeFuncPtr_glColor4ubVertex3fSUN=GLee_Lazy_glColor4ubVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glColor4ubVertex3fvSUN #define GLEE_C_DEFINED_glColor4ubVertex3fvSUN void __stdcall GLee_Lazy_glColor4ubVertex3fvSUN(const GLubyte * c, const GLfloat * v) {if (GLeeInit()) glColor4ubVertex3fvSUN(c, v);} GLEEPFNGLCOLOR4UBVERTEX3FVSUNPROC GLeeFuncPtr_glColor4ubVertex3fvSUN=GLee_Lazy_glColor4ubVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glColor3fVertex3fSUN #define GLEE_C_DEFINED_glColor3fVertex3fSUN void __stdcall GLee_Lazy_glColor3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glColor3fVertex3fSUN(r, g, b, x, y, z);} GLEEPFNGLCOLOR3FVERTEX3FSUNPROC GLeeFuncPtr_glColor3fVertex3fSUN=GLee_Lazy_glColor3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glColor3fVertex3fvSUN #define GLEE_C_DEFINED_glColor3fVertex3fvSUN void __stdcall GLee_Lazy_glColor3fVertex3fvSUN(const GLfloat * c, const GLfloat * v) {if (GLeeInit()) glColor3fVertex3fvSUN(c, v);} GLEEPFNGLCOLOR3FVERTEX3FVSUNPROC GLeeFuncPtr_glColor3fVertex3fvSUN=GLee_Lazy_glColor3fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glNormal3fVertex3fSUN #define GLEE_C_DEFINED_glNormal3fVertex3fSUN void __stdcall GLee_Lazy_glNormal3fVertex3fSUN(GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glNormal3fVertex3fSUN(nx, ny, nz, x, y, z);} GLEEPFNGLNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glNormal3fVertex3fSUN=GLee_Lazy_glNormal3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glNormal3fVertex3fvSUN #define GLEE_C_DEFINED_glNormal3fVertex3fvSUN void __stdcall GLee_Lazy_glNormal3fVertex3fvSUN(const GLfloat * n, const GLfloat * v) {if (GLeeInit()) glNormal3fVertex3fvSUN(n, v);} GLEEPFNGLNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glNormal3fVertex3fvSUN=GLee_Lazy_glNormal3fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glColor4fNormal3fVertex3fSUN #define GLEE_C_DEFINED_glColor4fNormal3fVertex3fSUN void __stdcall GLee_Lazy_glColor4fNormal3fVertex3fSUN(GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glColor4fNormal3fVertex3fSUN(r, g, b, a, nx, ny, nz, x, y, z);} GLEEPFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glColor4fNormal3fVertex3fSUN=GLee_Lazy_glColor4fNormal3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glColor4fNormal3fVertex3fvSUN #define GLEE_C_DEFINED_glColor4fNormal3fVertex3fvSUN void __stdcall GLee_Lazy_glColor4fNormal3fVertex3fvSUN(const GLfloat * c, const GLfloat * n, const GLfloat * v) {if (GLeeInit()) glColor4fNormal3fVertex3fvSUN(c, n, v);} GLEEPFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glColor4fNormal3fVertex3fvSUN=GLee_Lazy_glColor4fNormal3fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord2fVertex3fSUN #define GLEE_C_DEFINED_glTexCoord2fVertex3fSUN void __stdcall GLee_Lazy_glTexCoord2fVertex3fSUN(GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glTexCoord2fVertex3fSUN(s, t, x, y, z);} GLEEPFNGLTEXCOORD2FVERTEX3FSUNPROC GLeeFuncPtr_glTexCoord2fVertex3fSUN=GLee_Lazy_glTexCoord2fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord2fVertex3fvSUN #define GLEE_C_DEFINED_glTexCoord2fVertex3fvSUN void __stdcall GLee_Lazy_glTexCoord2fVertex3fvSUN(const GLfloat * tc, const GLfloat * v) {if (GLeeInit()) glTexCoord2fVertex3fvSUN(tc, v);} GLEEPFNGLTEXCOORD2FVERTEX3FVSUNPROC GLeeFuncPtr_glTexCoord2fVertex3fvSUN=GLee_Lazy_glTexCoord2fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord4fVertex4fSUN #define GLEE_C_DEFINED_glTexCoord4fVertex4fSUN void __stdcall GLee_Lazy_glTexCoord4fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glTexCoord4fVertex4fSUN(s, t, p, q, x, y, z, w);} GLEEPFNGLTEXCOORD4FVERTEX4FSUNPROC GLeeFuncPtr_glTexCoord4fVertex4fSUN=GLee_Lazy_glTexCoord4fVertex4fSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord4fVertex4fvSUN #define GLEE_C_DEFINED_glTexCoord4fVertex4fvSUN void __stdcall GLee_Lazy_glTexCoord4fVertex4fvSUN(const GLfloat * tc, const GLfloat * v) {if (GLeeInit()) glTexCoord4fVertex4fvSUN(tc, v);} GLEEPFNGLTEXCOORD4FVERTEX4FVSUNPROC GLeeFuncPtr_glTexCoord4fVertex4fvSUN=GLee_Lazy_glTexCoord4fVertex4fvSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord2fColor4ubVertex3fSUN #define GLEE_C_DEFINED_glTexCoord2fColor4ubVertex3fSUN void __stdcall GLee_Lazy_glTexCoord2fColor4ubVertex3fSUN(GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glTexCoord2fColor4ubVertex3fSUN(s, t, r, g, b, a, x, y, z);} GLEEPFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC GLeeFuncPtr_glTexCoord2fColor4ubVertex3fSUN=GLee_Lazy_glTexCoord2fColor4ubVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord2fColor4ubVertex3fvSUN #define GLEE_C_DEFINED_glTexCoord2fColor4ubVertex3fvSUN void __stdcall GLee_Lazy_glTexCoord2fColor4ubVertex3fvSUN(const GLfloat * tc, const GLubyte * c, const GLfloat * v) {if (GLeeInit()) glTexCoord2fColor4ubVertex3fvSUN(tc, c, v);} GLEEPFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC GLeeFuncPtr_glTexCoord2fColor4ubVertex3fvSUN=GLee_Lazy_glTexCoord2fColor4ubVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord2fColor3fVertex3fSUN #define GLEE_C_DEFINED_glTexCoord2fColor3fVertex3fSUN void __stdcall GLee_Lazy_glTexCoord2fColor3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glTexCoord2fColor3fVertex3fSUN(s, t, r, g, b, x, y, z);} GLEEPFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC GLeeFuncPtr_glTexCoord2fColor3fVertex3fSUN=GLee_Lazy_glTexCoord2fColor3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord2fColor3fVertex3fvSUN #define GLEE_C_DEFINED_glTexCoord2fColor3fVertex3fvSUN void __stdcall GLee_Lazy_glTexCoord2fColor3fVertex3fvSUN(const GLfloat * tc, const GLfloat * c, const GLfloat * v) {if (GLeeInit()) glTexCoord2fColor3fVertex3fvSUN(tc, c, v);} GLEEPFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC GLeeFuncPtr_glTexCoord2fColor3fVertex3fvSUN=GLee_Lazy_glTexCoord2fColor3fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord2fNormal3fVertex3fSUN #define GLEE_C_DEFINED_glTexCoord2fNormal3fVertex3fSUN void __stdcall GLee_Lazy_glTexCoord2fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glTexCoord2fNormal3fVertex3fSUN(s, t, nx, ny, nz, x, y, z);} GLEEPFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glTexCoord2fNormal3fVertex3fSUN=GLee_Lazy_glTexCoord2fNormal3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord2fNormal3fVertex3fvSUN #define GLEE_C_DEFINED_glTexCoord2fNormal3fVertex3fvSUN void __stdcall GLee_Lazy_glTexCoord2fNormal3fVertex3fvSUN(const GLfloat * tc, const GLfloat * n, const GLfloat * v) {if (GLeeInit()) glTexCoord2fNormal3fVertex3fvSUN(tc, n, v);} GLEEPFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glTexCoord2fNormal3fVertex3fvSUN=GLee_Lazy_glTexCoord2fNormal3fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord2fColor4fNormal3fVertex3fSUN #define GLEE_C_DEFINED_glTexCoord2fColor4fNormal3fVertex3fSUN void __stdcall GLee_Lazy_glTexCoord2fColor4fNormal3fVertex3fSUN(GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glTexCoord2fColor4fNormal3fVertex3fSUN(s, t, r, g, b, a, nx, ny, nz, x, y, z);} GLEEPFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glTexCoord2fColor4fNormal3fVertex3fSUN=GLee_Lazy_glTexCoord2fColor4fNormal3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord2fColor4fNormal3fVertex3fvSUN #define GLEE_C_DEFINED_glTexCoord2fColor4fNormal3fVertex3fvSUN void __stdcall GLee_Lazy_glTexCoord2fColor4fNormal3fVertex3fvSUN(const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v) {if (GLeeInit()) glTexCoord2fColor4fNormal3fVertex3fvSUN(tc, c, n, v);} GLEEPFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glTexCoord2fColor4fNormal3fVertex3fvSUN=GLee_Lazy_glTexCoord2fColor4fNormal3fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord4fColor4fNormal3fVertex4fSUN #define GLEE_C_DEFINED_glTexCoord4fColor4fNormal3fVertex4fSUN void __stdcall GLee_Lazy_glTexCoord4fColor4fNormal3fVertex4fSUN(GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glTexCoord4fColor4fNormal3fVertex4fSUN(s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w);} GLEEPFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC GLeeFuncPtr_glTexCoord4fColor4fNormal3fVertex4fSUN=GLee_Lazy_glTexCoord4fColor4fNormal3fVertex4fSUN; #endif #ifndef GLEE_C_DEFINED_glTexCoord4fColor4fNormal3fVertex4fvSUN #define GLEE_C_DEFINED_glTexCoord4fColor4fNormal3fVertex4fvSUN void __stdcall GLee_Lazy_glTexCoord4fColor4fNormal3fVertex4fvSUN(const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v) {if (GLeeInit()) glTexCoord4fColor4fNormal3fVertex4fvSUN(tc, c, n, v);} GLEEPFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC GLeeFuncPtr_glTexCoord4fColor4fNormal3fVertex4fvSUN=GLee_Lazy_glTexCoord4fColor4fNormal3fVertex4fvSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiVertex3fSUN #define GLEE_C_DEFINED_glReplacementCodeuiVertex3fSUN void __stdcall GLee_Lazy_glReplacementCodeuiVertex3fSUN(GLuint rc, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glReplacementCodeuiVertex3fSUN(rc, x, y, z);} GLEEPFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiVertex3fSUN=GLee_Lazy_glReplacementCodeuiVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiVertex3fvSUN #define GLEE_C_DEFINED_glReplacementCodeuiVertex3fvSUN void __stdcall GLee_Lazy_glReplacementCodeuiVertex3fvSUN(const GLuint * rc, const GLfloat * v) {if (GLeeInit()) glReplacementCodeuiVertex3fvSUN(rc, v);} GLEEPFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiVertex3fvSUN=GLee_Lazy_glReplacementCodeuiVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiColor4ubVertex3fSUN #define GLEE_C_DEFINED_glReplacementCodeuiColor4ubVertex3fSUN void __stdcall GLee_Lazy_glReplacementCodeuiColor4ubVertex3fSUN(GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glReplacementCodeuiColor4ubVertex3fSUN(rc, r, g, b, a, x, y, z);} GLEEPFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiColor4ubVertex3fSUN=GLee_Lazy_glReplacementCodeuiColor4ubVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiColor4ubVertex3fvSUN #define GLEE_C_DEFINED_glReplacementCodeuiColor4ubVertex3fvSUN void __stdcall GLee_Lazy_glReplacementCodeuiColor4ubVertex3fvSUN(const GLuint * rc, const GLubyte * c, const GLfloat * v) {if (GLeeInit()) glReplacementCodeuiColor4ubVertex3fvSUN(rc, c, v);} GLEEPFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiColor4ubVertex3fvSUN=GLee_Lazy_glReplacementCodeuiColor4ubVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiColor3fVertex3fSUN #define GLEE_C_DEFINED_glReplacementCodeuiColor3fVertex3fSUN void __stdcall GLee_Lazy_glReplacementCodeuiColor3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glReplacementCodeuiColor3fVertex3fSUN(rc, r, g, b, x, y, z);} GLEEPFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiColor3fVertex3fSUN=GLee_Lazy_glReplacementCodeuiColor3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiColor3fVertex3fvSUN #define GLEE_C_DEFINED_glReplacementCodeuiColor3fVertex3fvSUN void __stdcall GLee_Lazy_glReplacementCodeuiColor3fVertex3fvSUN(const GLuint * rc, const GLfloat * c, const GLfloat * v) {if (GLeeInit()) glReplacementCodeuiColor3fVertex3fvSUN(rc, c, v);} GLEEPFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiColor3fVertex3fvSUN=GLee_Lazy_glReplacementCodeuiColor3fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiNormal3fVertex3fSUN #define GLEE_C_DEFINED_glReplacementCodeuiNormal3fVertex3fSUN void __stdcall GLee_Lazy_glReplacementCodeuiNormal3fVertex3fSUN(GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glReplacementCodeuiNormal3fVertex3fSUN(rc, nx, ny, nz, x, y, z);} GLEEPFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiNormal3fVertex3fSUN=GLee_Lazy_glReplacementCodeuiNormal3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiNormal3fVertex3fvSUN #define GLEE_C_DEFINED_glReplacementCodeuiNormal3fVertex3fvSUN void __stdcall GLee_Lazy_glReplacementCodeuiNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * n, const GLfloat * v) {if (GLeeInit()) glReplacementCodeuiNormal3fVertex3fvSUN(rc, n, v);} GLEEPFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiNormal3fVertex3fvSUN=GLee_Lazy_glReplacementCodeuiNormal3fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiColor4fNormal3fVertex3fSUN #define GLEE_C_DEFINED_glReplacementCodeuiColor4fNormal3fVertex3fSUN void __stdcall GLee_Lazy_glReplacementCodeuiColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glReplacementCodeuiColor4fNormal3fVertex3fSUN(rc, r, g, b, a, nx, ny, nz, x, y, z);} GLEEPFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiColor4fNormal3fVertex3fSUN=GLee_Lazy_glReplacementCodeuiColor4fNormal3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiColor4fNormal3fVertex3fvSUN #define GLEE_C_DEFINED_glReplacementCodeuiColor4fNormal3fVertex3fvSUN void __stdcall GLee_Lazy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * c, const GLfloat * n, const GLfloat * v) {if (GLeeInit()) glReplacementCodeuiColor4fNormal3fVertex3fvSUN(rc, c, n, v);} GLEEPFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiColor4fNormal3fVertex3fvSUN=GLee_Lazy_glReplacementCodeuiColor4fNormal3fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fVertex3fSUN #define GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fVertex3fSUN void __stdcall GLee_Lazy_glReplacementCodeuiTexCoord2fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glReplacementCodeuiTexCoord2fVertex3fSUN(rc, s, t, x, y, z);} GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fVertex3fSUN=GLee_Lazy_glReplacementCodeuiTexCoord2fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fVertex3fvSUN #define GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fVertex3fvSUN void __stdcall GLee_Lazy_glReplacementCodeuiTexCoord2fVertex3fvSUN(const GLuint * rc, const GLfloat * tc, const GLfloat * v) {if (GLeeInit()) glReplacementCodeuiTexCoord2fVertex3fvSUN(rc, tc, v);} GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fVertex3fvSUN=GLee_Lazy_glReplacementCodeuiTexCoord2fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN #define GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN void __stdcall GLee_Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(rc, s, t, nx, ny, nz, x, y, z);} GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN=GLee_Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN #define GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN void __stdcall GLee_Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * tc, const GLfloat * n, const GLfloat * v) {if (GLeeInit()) glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(rc, tc, n, v);} GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN=GLee_Lazy_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN #define GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN void __stdcall GLee_Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(rc, s, t, r, g, b, a, nx, ny, nz, x, y, z);} GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN=GLee_Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; #endif #ifndef GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN #define GLEE_C_DEFINED_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN void __stdcall GLee_Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(const GLuint * rc, const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v) {if (GLeeInit()) glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(rc, tc, c, n, v);} GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN=GLee_Lazy_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; #endif #endif /* GL_EXT_blend_func_separate */ #ifdef __GLEE_GL_EXT_blend_func_separate #ifndef GLEE_C_DEFINED_glBlendFuncSeparateEXT #define GLEE_C_DEFINED_glBlendFuncSeparateEXT void __stdcall GLee_Lazy_glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) {if (GLeeInit()) glBlendFuncSeparateEXT(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);} GLEEPFNGLBLENDFUNCSEPARATEEXTPROC GLeeFuncPtr_glBlendFuncSeparateEXT=GLee_Lazy_glBlendFuncSeparateEXT; #endif #endif /* GL_INGR_color_clamp */ #ifdef __GLEE_GL_INGR_color_clamp #endif /* GL_INGR_interlace_read */ #ifdef __GLEE_GL_INGR_interlace_read #endif /* GL_EXT_stencil_wrap */ #ifdef __GLEE_GL_EXT_stencil_wrap #endif /* GL_EXT_422_pixels */ #ifdef __GLEE_GL_EXT_422_pixels #endif /* GL_NV_texgen_reflection */ #ifdef __GLEE_GL_NV_texgen_reflection #endif /* GL_EXT_texture_cube_map */ #ifdef __GLEE_GL_EXT_texture_cube_map #endif /* GL_SUN_convolution_border_modes */ #ifdef __GLEE_GL_SUN_convolution_border_modes #endif /* GL_EXT_texture_env_add */ #ifdef __GLEE_GL_EXT_texture_env_add #endif /* GL_EXT_texture_lod_bias */ #ifdef __GLEE_GL_EXT_texture_lod_bias #endif /* GL_EXT_texture_filter_anisotropic */ #ifdef __GLEE_GL_EXT_texture_filter_anisotropic #endif /* GL_EXT_vertex_weighting */ #ifdef __GLEE_GL_EXT_vertex_weighting #ifndef GLEE_C_DEFINED_glVertexWeightfEXT #define GLEE_C_DEFINED_glVertexWeightfEXT void __stdcall GLee_Lazy_glVertexWeightfEXT(GLfloat weight) {if (GLeeInit()) glVertexWeightfEXT(weight);} GLEEPFNGLVERTEXWEIGHTFEXTPROC GLeeFuncPtr_glVertexWeightfEXT=GLee_Lazy_glVertexWeightfEXT; #endif #ifndef GLEE_C_DEFINED_glVertexWeightfvEXT #define GLEE_C_DEFINED_glVertexWeightfvEXT void __stdcall GLee_Lazy_glVertexWeightfvEXT(const GLfloat * weight) {if (GLeeInit()) glVertexWeightfvEXT(weight);} GLEEPFNGLVERTEXWEIGHTFVEXTPROC GLeeFuncPtr_glVertexWeightfvEXT=GLee_Lazy_glVertexWeightfvEXT; #endif #ifndef GLEE_C_DEFINED_glVertexWeightPointerEXT #define GLEE_C_DEFINED_glVertexWeightPointerEXT void __stdcall GLee_Lazy_glVertexWeightPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glVertexWeightPointerEXT(size, type, stride, pointer);} GLEEPFNGLVERTEXWEIGHTPOINTEREXTPROC GLeeFuncPtr_glVertexWeightPointerEXT=GLee_Lazy_glVertexWeightPointerEXT; #endif #endif /* GL_NV_light_max_exponent */ #ifdef __GLEE_GL_NV_light_max_exponent #endif /* GL_NV_vertex_array_range */ #ifdef __GLEE_GL_NV_vertex_array_range #ifndef GLEE_C_DEFINED_glFlushVertexArrayRangeNV #define GLEE_C_DEFINED_glFlushVertexArrayRangeNV void __stdcall GLee_Lazy_glFlushVertexArrayRangeNV(void) {if (GLeeInit()) glFlushVertexArrayRangeNV();} GLEEPFNGLFLUSHVERTEXARRAYRANGENVPROC GLeeFuncPtr_glFlushVertexArrayRangeNV=GLee_Lazy_glFlushVertexArrayRangeNV; #endif #ifndef GLEE_C_DEFINED_glVertexArrayRangeNV #define GLEE_C_DEFINED_glVertexArrayRangeNV void __stdcall GLee_Lazy_glVertexArrayRangeNV(GLsizei length, const GLvoid * pointer) {if (GLeeInit()) glVertexArrayRangeNV(length, pointer);} GLEEPFNGLVERTEXARRAYRANGENVPROC GLeeFuncPtr_glVertexArrayRangeNV=GLee_Lazy_glVertexArrayRangeNV; #endif #endif /* GL_NV_register_combiners */ #ifdef __GLEE_GL_NV_register_combiners #ifndef GLEE_C_DEFINED_glCombinerParameterfvNV #define GLEE_C_DEFINED_glCombinerParameterfvNV void __stdcall GLee_Lazy_glCombinerParameterfvNV(GLenum pname, const GLfloat * params) {if (GLeeInit()) glCombinerParameterfvNV(pname, params);} GLEEPFNGLCOMBINERPARAMETERFVNVPROC GLeeFuncPtr_glCombinerParameterfvNV=GLee_Lazy_glCombinerParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glCombinerParameterfNV #define GLEE_C_DEFINED_glCombinerParameterfNV void __stdcall GLee_Lazy_glCombinerParameterfNV(GLenum pname, GLfloat param) {if (GLeeInit()) glCombinerParameterfNV(pname, param);} GLEEPFNGLCOMBINERPARAMETERFNVPROC GLeeFuncPtr_glCombinerParameterfNV=GLee_Lazy_glCombinerParameterfNV; #endif #ifndef GLEE_C_DEFINED_glCombinerParameterivNV #define GLEE_C_DEFINED_glCombinerParameterivNV void __stdcall GLee_Lazy_glCombinerParameterivNV(GLenum pname, const GLint * params) {if (GLeeInit()) glCombinerParameterivNV(pname, params);} GLEEPFNGLCOMBINERPARAMETERIVNVPROC GLeeFuncPtr_glCombinerParameterivNV=GLee_Lazy_glCombinerParameterivNV; #endif #ifndef GLEE_C_DEFINED_glCombinerParameteriNV #define GLEE_C_DEFINED_glCombinerParameteriNV void __stdcall GLee_Lazy_glCombinerParameteriNV(GLenum pname, GLint param) {if (GLeeInit()) glCombinerParameteriNV(pname, param);} GLEEPFNGLCOMBINERPARAMETERINVPROC GLeeFuncPtr_glCombinerParameteriNV=GLee_Lazy_glCombinerParameteriNV; #endif #ifndef GLEE_C_DEFINED_glCombinerInputNV #define GLEE_C_DEFINED_glCombinerInputNV void __stdcall GLee_Lazy_glCombinerInputNV(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) {if (GLeeInit()) glCombinerInputNV(stage, portion, variable, input, mapping, componentUsage);} GLEEPFNGLCOMBINERINPUTNVPROC GLeeFuncPtr_glCombinerInputNV=GLee_Lazy_glCombinerInputNV; #endif #ifndef GLEE_C_DEFINED_glCombinerOutputNV #define GLEE_C_DEFINED_glCombinerOutputNV void __stdcall GLee_Lazy_glCombinerOutputNV(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum) {if (GLeeInit()) glCombinerOutputNV(stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum);} GLEEPFNGLCOMBINEROUTPUTNVPROC GLeeFuncPtr_glCombinerOutputNV=GLee_Lazy_glCombinerOutputNV; #endif #ifndef GLEE_C_DEFINED_glFinalCombinerInputNV #define GLEE_C_DEFINED_glFinalCombinerInputNV void __stdcall GLee_Lazy_glFinalCombinerInputNV(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) {if (GLeeInit()) glFinalCombinerInputNV(variable, input, mapping, componentUsage);} GLEEPFNGLFINALCOMBINERINPUTNVPROC GLeeFuncPtr_glFinalCombinerInputNV=GLee_Lazy_glFinalCombinerInputNV; #endif #ifndef GLEE_C_DEFINED_glGetCombinerInputParameterfvNV #define GLEE_C_DEFINED_glGetCombinerInputParameterfvNV void __stdcall GLee_Lazy_glGetCombinerInputParameterfvNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetCombinerInputParameterfvNV(stage, portion, variable, pname, params);} GLEEPFNGLGETCOMBINERINPUTPARAMETERFVNVPROC GLeeFuncPtr_glGetCombinerInputParameterfvNV=GLee_Lazy_glGetCombinerInputParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glGetCombinerInputParameterivNV #define GLEE_C_DEFINED_glGetCombinerInputParameterivNV void __stdcall GLee_Lazy_glGetCombinerInputParameterivNV(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params) {if (GLeeInit()) glGetCombinerInputParameterivNV(stage, portion, variable, pname, params);} GLEEPFNGLGETCOMBINERINPUTPARAMETERIVNVPROC GLeeFuncPtr_glGetCombinerInputParameterivNV=GLee_Lazy_glGetCombinerInputParameterivNV; #endif #ifndef GLEE_C_DEFINED_glGetCombinerOutputParameterfvNV #define GLEE_C_DEFINED_glGetCombinerOutputParameterfvNV void __stdcall GLee_Lazy_glGetCombinerOutputParameterfvNV(GLenum stage, GLenum portion, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetCombinerOutputParameterfvNV(stage, portion, pname, params);} GLEEPFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC GLeeFuncPtr_glGetCombinerOutputParameterfvNV=GLee_Lazy_glGetCombinerOutputParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glGetCombinerOutputParameterivNV #define GLEE_C_DEFINED_glGetCombinerOutputParameterivNV void __stdcall GLee_Lazy_glGetCombinerOutputParameterivNV(GLenum stage, GLenum portion, GLenum pname, GLint * params) {if (GLeeInit()) glGetCombinerOutputParameterivNV(stage, portion, pname, params);} GLEEPFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC GLeeFuncPtr_glGetCombinerOutputParameterivNV=GLee_Lazy_glGetCombinerOutputParameterivNV; #endif #ifndef GLEE_C_DEFINED_glGetFinalCombinerInputParameterfvNV #define GLEE_C_DEFINED_glGetFinalCombinerInputParameterfvNV void __stdcall GLee_Lazy_glGetFinalCombinerInputParameterfvNV(GLenum variable, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetFinalCombinerInputParameterfvNV(variable, pname, params);} GLEEPFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC GLeeFuncPtr_glGetFinalCombinerInputParameterfvNV=GLee_Lazy_glGetFinalCombinerInputParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glGetFinalCombinerInputParameterivNV #define GLEE_C_DEFINED_glGetFinalCombinerInputParameterivNV void __stdcall GLee_Lazy_glGetFinalCombinerInputParameterivNV(GLenum variable, GLenum pname, GLint * params) {if (GLeeInit()) glGetFinalCombinerInputParameterivNV(variable, pname, params);} GLEEPFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC GLeeFuncPtr_glGetFinalCombinerInputParameterivNV=GLee_Lazy_glGetFinalCombinerInputParameterivNV; #endif #endif /* GL_NV_fog_distance */ #ifdef __GLEE_GL_NV_fog_distance #endif /* GL_NV_texgen_emboss */ #ifdef __GLEE_GL_NV_texgen_emboss #endif /* GL_NV_blend_square */ #ifdef __GLEE_GL_NV_blend_square #endif /* GL_NV_texture_env_combine4 */ #ifdef __GLEE_GL_NV_texture_env_combine4 #endif /* GL_MESA_resize_buffers */ #ifdef __GLEE_GL_MESA_resize_buffers #ifndef GLEE_C_DEFINED_glResizeBuffersMESA #define GLEE_C_DEFINED_glResizeBuffersMESA void __stdcall GLee_Lazy_glResizeBuffersMESA(void) {if (GLeeInit()) glResizeBuffersMESA();} GLEEPFNGLRESIZEBUFFERSMESAPROC GLeeFuncPtr_glResizeBuffersMESA=GLee_Lazy_glResizeBuffersMESA; #endif #endif /* GL_MESA_window_pos */ #ifdef __GLEE_GL_MESA_window_pos #ifndef GLEE_C_DEFINED_glWindowPos2dMESA #define GLEE_C_DEFINED_glWindowPos2dMESA void __stdcall GLee_Lazy_glWindowPos2dMESA(GLdouble x, GLdouble y) {if (GLeeInit()) glWindowPos2dMESA(x, y);} GLEEPFNGLWINDOWPOS2DMESAPROC GLeeFuncPtr_glWindowPos2dMESA=GLee_Lazy_glWindowPos2dMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos2dvMESA #define GLEE_C_DEFINED_glWindowPos2dvMESA void __stdcall GLee_Lazy_glWindowPos2dvMESA(const GLdouble * v) {if (GLeeInit()) glWindowPos2dvMESA(v);} GLEEPFNGLWINDOWPOS2DVMESAPROC GLeeFuncPtr_glWindowPos2dvMESA=GLee_Lazy_glWindowPos2dvMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos2fMESA #define GLEE_C_DEFINED_glWindowPos2fMESA void __stdcall GLee_Lazy_glWindowPos2fMESA(GLfloat x, GLfloat y) {if (GLeeInit()) glWindowPos2fMESA(x, y);} GLEEPFNGLWINDOWPOS2FMESAPROC GLeeFuncPtr_glWindowPos2fMESA=GLee_Lazy_glWindowPos2fMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos2fvMESA #define GLEE_C_DEFINED_glWindowPos2fvMESA void __stdcall GLee_Lazy_glWindowPos2fvMESA(const GLfloat * v) {if (GLeeInit()) glWindowPos2fvMESA(v);} GLEEPFNGLWINDOWPOS2FVMESAPROC GLeeFuncPtr_glWindowPos2fvMESA=GLee_Lazy_glWindowPos2fvMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos2iMESA #define GLEE_C_DEFINED_glWindowPos2iMESA void __stdcall GLee_Lazy_glWindowPos2iMESA(GLint x, GLint y) {if (GLeeInit()) glWindowPos2iMESA(x, y);} GLEEPFNGLWINDOWPOS2IMESAPROC GLeeFuncPtr_glWindowPos2iMESA=GLee_Lazy_glWindowPos2iMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos2ivMESA #define GLEE_C_DEFINED_glWindowPos2ivMESA void __stdcall GLee_Lazy_glWindowPos2ivMESA(const GLint * v) {if (GLeeInit()) glWindowPos2ivMESA(v);} GLEEPFNGLWINDOWPOS2IVMESAPROC GLeeFuncPtr_glWindowPos2ivMESA=GLee_Lazy_glWindowPos2ivMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos2sMESA #define GLEE_C_DEFINED_glWindowPos2sMESA void __stdcall GLee_Lazy_glWindowPos2sMESA(GLshort x, GLshort y) {if (GLeeInit()) glWindowPos2sMESA(x, y);} GLEEPFNGLWINDOWPOS2SMESAPROC GLeeFuncPtr_glWindowPos2sMESA=GLee_Lazy_glWindowPos2sMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos2svMESA #define GLEE_C_DEFINED_glWindowPos2svMESA void __stdcall GLee_Lazy_glWindowPos2svMESA(const GLshort * v) {if (GLeeInit()) glWindowPos2svMESA(v);} GLEEPFNGLWINDOWPOS2SVMESAPROC GLeeFuncPtr_glWindowPos2svMESA=GLee_Lazy_glWindowPos2svMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos3dMESA #define GLEE_C_DEFINED_glWindowPos3dMESA void __stdcall GLee_Lazy_glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glWindowPos3dMESA(x, y, z);} GLEEPFNGLWINDOWPOS3DMESAPROC GLeeFuncPtr_glWindowPos3dMESA=GLee_Lazy_glWindowPos3dMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos3dvMESA #define GLEE_C_DEFINED_glWindowPos3dvMESA void __stdcall GLee_Lazy_glWindowPos3dvMESA(const GLdouble * v) {if (GLeeInit()) glWindowPos3dvMESA(v);} GLEEPFNGLWINDOWPOS3DVMESAPROC GLeeFuncPtr_glWindowPos3dvMESA=GLee_Lazy_glWindowPos3dvMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos3fMESA #define GLEE_C_DEFINED_glWindowPos3fMESA void __stdcall GLee_Lazy_glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glWindowPos3fMESA(x, y, z);} GLEEPFNGLWINDOWPOS3FMESAPROC GLeeFuncPtr_glWindowPos3fMESA=GLee_Lazy_glWindowPos3fMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos3fvMESA #define GLEE_C_DEFINED_glWindowPos3fvMESA void __stdcall GLee_Lazy_glWindowPos3fvMESA(const GLfloat * v) {if (GLeeInit()) glWindowPos3fvMESA(v);} GLEEPFNGLWINDOWPOS3FVMESAPROC GLeeFuncPtr_glWindowPos3fvMESA=GLee_Lazy_glWindowPos3fvMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos3iMESA #define GLEE_C_DEFINED_glWindowPos3iMESA void __stdcall GLee_Lazy_glWindowPos3iMESA(GLint x, GLint y, GLint z) {if (GLeeInit()) glWindowPos3iMESA(x, y, z);} GLEEPFNGLWINDOWPOS3IMESAPROC GLeeFuncPtr_glWindowPos3iMESA=GLee_Lazy_glWindowPos3iMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos3ivMESA #define GLEE_C_DEFINED_glWindowPos3ivMESA void __stdcall GLee_Lazy_glWindowPos3ivMESA(const GLint * v) {if (GLeeInit()) glWindowPos3ivMESA(v);} GLEEPFNGLWINDOWPOS3IVMESAPROC GLeeFuncPtr_glWindowPos3ivMESA=GLee_Lazy_glWindowPos3ivMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos3sMESA #define GLEE_C_DEFINED_glWindowPos3sMESA void __stdcall GLee_Lazy_glWindowPos3sMESA(GLshort x, GLshort y, GLshort z) {if (GLeeInit()) glWindowPos3sMESA(x, y, z);} GLEEPFNGLWINDOWPOS3SMESAPROC GLeeFuncPtr_glWindowPos3sMESA=GLee_Lazy_glWindowPos3sMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos3svMESA #define GLEE_C_DEFINED_glWindowPos3svMESA void __stdcall GLee_Lazy_glWindowPos3svMESA(const GLshort * v) {if (GLeeInit()) glWindowPos3svMESA(v);} GLEEPFNGLWINDOWPOS3SVMESAPROC GLeeFuncPtr_glWindowPos3svMESA=GLee_Lazy_glWindowPos3svMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos4dMESA #define GLEE_C_DEFINED_glWindowPos4dMESA void __stdcall GLee_Lazy_glWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glWindowPos4dMESA(x, y, z, w);} GLEEPFNGLWINDOWPOS4DMESAPROC GLeeFuncPtr_glWindowPos4dMESA=GLee_Lazy_glWindowPos4dMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos4dvMESA #define GLEE_C_DEFINED_glWindowPos4dvMESA void __stdcall GLee_Lazy_glWindowPos4dvMESA(const GLdouble * v) {if (GLeeInit()) glWindowPos4dvMESA(v);} GLEEPFNGLWINDOWPOS4DVMESAPROC GLeeFuncPtr_glWindowPos4dvMESA=GLee_Lazy_glWindowPos4dvMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos4fMESA #define GLEE_C_DEFINED_glWindowPos4fMESA void __stdcall GLee_Lazy_glWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glWindowPos4fMESA(x, y, z, w);} GLEEPFNGLWINDOWPOS4FMESAPROC GLeeFuncPtr_glWindowPos4fMESA=GLee_Lazy_glWindowPos4fMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos4fvMESA #define GLEE_C_DEFINED_glWindowPos4fvMESA void __stdcall GLee_Lazy_glWindowPos4fvMESA(const GLfloat * v) {if (GLeeInit()) glWindowPos4fvMESA(v);} GLEEPFNGLWINDOWPOS4FVMESAPROC GLeeFuncPtr_glWindowPos4fvMESA=GLee_Lazy_glWindowPos4fvMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos4iMESA #define GLEE_C_DEFINED_glWindowPos4iMESA void __stdcall GLee_Lazy_glWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w) {if (GLeeInit()) glWindowPos4iMESA(x, y, z, w);} GLEEPFNGLWINDOWPOS4IMESAPROC GLeeFuncPtr_glWindowPos4iMESA=GLee_Lazy_glWindowPos4iMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos4ivMESA #define GLEE_C_DEFINED_glWindowPos4ivMESA void __stdcall GLee_Lazy_glWindowPos4ivMESA(const GLint * v) {if (GLeeInit()) glWindowPos4ivMESA(v);} GLEEPFNGLWINDOWPOS4IVMESAPROC GLeeFuncPtr_glWindowPos4ivMESA=GLee_Lazy_glWindowPos4ivMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos4sMESA #define GLEE_C_DEFINED_glWindowPos4sMESA void __stdcall GLee_Lazy_glWindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w) {if (GLeeInit()) glWindowPos4sMESA(x, y, z, w);} GLEEPFNGLWINDOWPOS4SMESAPROC GLeeFuncPtr_glWindowPos4sMESA=GLee_Lazy_glWindowPos4sMESA; #endif #ifndef GLEE_C_DEFINED_glWindowPos4svMESA #define GLEE_C_DEFINED_glWindowPos4svMESA void __stdcall GLee_Lazy_glWindowPos4svMESA(const GLshort * v) {if (GLeeInit()) glWindowPos4svMESA(v);} GLEEPFNGLWINDOWPOS4SVMESAPROC GLeeFuncPtr_glWindowPos4svMESA=GLee_Lazy_glWindowPos4svMESA; #endif #endif /* GL_EXT_texture_compression_s3tc */ #ifdef __GLEE_GL_EXT_texture_compression_s3tc #endif /* GL_IBM_cull_vertex */ #ifdef __GLEE_GL_IBM_cull_vertex #endif /* GL_IBM_multimode_draw_arrays */ #ifdef __GLEE_GL_IBM_multimode_draw_arrays #ifndef GLEE_C_DEFINED_glMultiModeDrawArraysIBM #define GLEE_C_DEFINED_glMultiModeDrawArraysIBM void __stdcall GLee_Lazy_glMultiModeDrawArraysIBM(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride) {if (GLeeInit()) glMultiModeDrawArraysIBM(mode, first, count, primcount, modestride);} GLEEPFNGLMULTIMODEDRAWARRAYSIBMPROC GLeeFuncPtr_glMultiModeDrawArraysIBM=GLee_Lazy_glMultiModeDrawArraysIBM; #endif #ifndef GLEE_C_DEFINED_glMultiModeDrawElementsIBM #define GLEE_C_DEFINED_glMultiModeDrawElementsIBM void __stdcall GLee_Lazy_glMultiModeDrawElementsIBM(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid* const * indices, GLsizei primcount, GLint modestride) {if (GLeeInit()) glMultiModeDrawElementsIBM(mode, count, type, indices, primcount, modestride);} GLEEPFNGLMULTIMODEDRAWELEMENTSIBMPROC GLeeFuncPtr_glMultiModeDrawElementsIBM=GLee_Lazy_glMultiModeDrawElementsIBM; #endif #endif /* GL_IBM_vertex_array_lists */ #ifdef __GLEE_GL_IBM_vertex_array_lists #ifndef GLEE_C_DEFINED_glColorPointerListIBM #define GLEE_C_DEFINED_glColorPointerListIBM void __stdcall GLee_Lazy_glColorPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride) {if (GLeeInit()) glColorPointerListIBM(size, type, stride, pointer, ptrstride);} GLEEPFNGLCOLORPOINTERLISTIBMPROC GLeeFuncPtr_glColorPointerListIBM=GLee_Lazy_glColorPointerListIBM; #endif #ifndef GLEE_C_DEFINED_glSecondaryColorPointerListIBM #define GLEE_C_DEFINED_glSecondaryColorPointerListIBM void __stdcall GLee_Lazy_glSecondaryColorPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride) {if (GLeeInit()) glSecondaryColorPointerListIBM(size, type, stride, pointer, ptrstride);} GLEEPFNGLSECONDARYCOLORPOINTERLISTIBMPROC GLeeFuncPtr_glSecondaryColorPointerListIBM=GLee_Lazy_glSecondaryColorPointerListIBM; #endif #ifndef GLEE_C_DEFINED_glEdgeFlagPointerListIBM #define GLEE_C_DEFINED_glEdgeFlagPointerListIBM void __stdcall GLee_Lazy_glEdgeFlagPointerListIBM(GLint stride, const GLboolean* * pointer, GLint ptrstride) {if (GLeeInit()) glEdgeFlagPointerListIBM(stride, pointer, ptrstride);} GLEEPFNGLEDGEFLAGPOINTERLISTIBMPROC GLeeFuncPtr_glEdgeFlagPointerListIBM=GLee_Lazy_glEdgeFlagPointerListIBM; #endif #ifndef GLEE_C_DEFINED_glFogCoordPointerListIBM #define GLEE_C_DEFINED_glFogCoordPointerListIBM void __stdcall GLee_Lazy_glFogCoordPointerListIBM(GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride) {if (GLeeInit()) glFogCoordPointerListIBM(type, stride, pointer, ptrstride);} GLEEPFNGLFOGCOORDPOINTERLISTIBMPROC GLeeFuncPtr_glFogCoordPointerListIBM=GLee_Lazy_glFogCoordPointerListIBM; #endif #ifndef GLEE_C_DEFINED_glIndexPointerListIBM #define GLEE_C_DEFINED_glIndexPointerListIBM void __stdcall GLee_Lazy_glIndexPointerListIBM(GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride) {if (GLeeInit()) glIndexPointerListIBM(type, stride, pointer, ptrstride);} GLEEPFNGLINDEXPOINTERLISTIBMPROC GLeeFuncPtr_glIndexPointerListIBM=GLee_Lazy_glIndexPointerListIBM; #endif #ifndef GLEE_C_DEFINED_glNormalPointerListIBM #define GLEE_C_DEFINED_glNormalPointerListIBM void __stdcall GLee_Lazy_glNormalPointerListIBM(GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride) {if (GLeeInit()) glNormalPointerListIBM(type, stride, pointer, ptrstride);} GLEEPFNGLNORMALPOINTERLISTIBMPROC GLeeFuncPtr_glNormalPointerListIBM=GLee_Lazy_glNormalPointerListIBM; #endif #ifndef GLEE_C_DEFINED_glTexCoordPointerListIBM #define GLEE_C_DEFINED_glTexCoordPointerListIBM void __stdcall GLee_Lazy_glTexCoordPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride) {if (GLeeInit()) glTexCoordPointerListIBM(size, type, stride, pointer, ptrstride);} GLEEPFNGLTEXCOORDPOINTERLISTIBMPROC GLeeFuncPtr_glTexCoordPointerListIBM=GLee_Lazy_glTexCoordPointerListIBM; #endif #ifndef GLEE_C_DEFINED_glVertexPointerListIBM #define GLEE_C_DEFINED_glVertexPointerListIBM void __stdcall GLee_Lazy_glVertexPointerListIBM(GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride) {if (GLeeInit()) glVertexPointerListIBM(size, type, stride, pointer, ptrstride);} GLEEPFNGLVERTEXPOINTERLISTIBMPROC GLeeFuncPtr_glVertexPointerListIBM=GLee_Lazy_glVertexPointerListIBM; #endif #endif /* GL_SGIX_subsample */ #ifdef __GLEE_GL_SGIX_subsample #endif /* GL_SGIX_ycrcb_subsample */ #ifdef __GLEE_GL_SGIX_ycrcb_subsample #endif /* GL_SGIX_ycrcba */ #ifdef __GLEE_GL_SGIX_ycrcba #endif /* GL_SGI_depth_pass_instrument */ #ifdef __GLEE_GL_SGI_depth_pass_instrument #endif /* GL_3DFX_texture_compression_FXT1 */ #ifdef __GLEE_GL_3DFX_texture_compression_FXT1 #endif /* GL_3DFX_multisample */ #ifdef __GLEE_GL_3DFX_multisample #endif /* GL_3DFX_tbuffer */ #ifdef __GLEE_GL_3DFX_tbuffer #ifndef GLEE_C_DEFINED_glTbufferMask3DFX #define GLEE_C_DEFINED_glTbufferMask3DFX void __stdcall GLee_Lazy_glTbufferMask3DFX(GLuint mask) {if (GLeeInit()) glTbufferMask3DFX(mask);} GLEEPFNGLTBUFFERMASK3DFXPROC GLeeFuncPtr_glTbufferMask3DFX=GLee_Lazy_glTbufferMask3DFX; #endif #endif /* GL_EXT_multisample */ #ifdef __GLEE_GL_EXT_multisample #ifndef GLEE_C_DEFINED_glSampleMaskEXT #define GLEE_C_DEFINED_glSampleMaskEXT void __stdcall GLee_Lazy_glSampleMaskEXT(GLclampf value, GLboolean invert) {if (GLeeInit()) glSampleMaskEXT(value, invert);} GLEEPFNGLSAMPLEMASKEXTPROC GLeeFuncPtr_glSampleMaskEXT=GLee_Lazy_glSampleMaskEXT; #endif #ifndef GLEE_C_DEFINED_glSamplePatternEXT #define GLEE_C_DEFINED_glSamplePatternEXT void __stdcall GLee_Lazy_glSamplePatternEXT(GLenum pattern) {if (GLeeInit()) glSamplePatternEXT(pattern);} GLEEPFNGLSAMPLEPATTERNEXTPROC GLeeFuncPtr_glSamplePatternEXT=GLee_Lazy_glSamplePatternEXT; #endif #endif /* GL_SGIX_vertex_preclip */ #ifdef __GLEE_GL_SGIX_vertex_preclip #endif /* GL_SGIX_convolution_accuracy */ #ifdef __GLEE_GL_SGIX_convolution_accuracy #endif /* GL_SGIX_resample */ #ifdef __GLEE_GL_SGIX_resample #endif /* GL_SGIS_point_line_texgen */ #ifdef __GLEE_GL_SGIS_point_line_texgen #endif /* GL_SGIS_texture_color_mask */ #ifdef __GLEE_GL_SGIS_texture_color_mask #ifndef GLEE_C_DEFINED_glTextureColorMaskSGIS #define GLEE_C_DEFINED_glTextureColorMaskSGIS void __stdcall GLee_Lazy_glTextureColorMaskSGIS(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {if (GLeeInit()) glTextureColorMaskSGIS(red, green, blue, alpha);} GLEEPFNGLTEXTURECOLORMASKSGISPROC GLeeFuncPtr_glTextureColorMaskSGIS=GLee_Lazy_glTextureColorMaskSGIS; #endif #endif /* GL_EXT_texture_env_dot3 */ #ifdef __GLEE_GL_EXT_texture_env_dot3 #endif /* GL_ATI_texture_mirror_once */ #ifdef __GLEE_GL_ATI_texture_mirror_once #endif /* GL_NV_fence */ #ifdef __GLEE_GL_NV_fence #ifndef GLEE_C_DEFINED_glDeleteFencesNV #define GLEE_C_DEFINED_glDeleteFencesNV void __stdcall GLee_Lazy_glDeleteFencesNV(GLsizei n, const GLuint * fences) {if (GLeeInit()) glDeleteFencesNV(n, fences);} GLEEPFNGLDELETEFENCESNVPROC GLeeFuncPtr_glDeleteFencesNV=GLee_Lazy_glDeleteFencesNV; #endif #ifndef GLEE_C_DEFINED_glGenFencesNV #define GLEE_C_DEFINED_glGenFencesNV void __stdcall GLee_Lazy_glGenFencesNV(GLsizei n, GLuint * fences) {if (GLeeInit()) glGenFencesNV(n, fences);} GLEEPFNGLGENFENCESNVPROC GLeeFuncPtr_glGenFencesNV=GLee_Lazy_glGenFencesNV; #endif #ifndef GLEE_C_DEFINED_glIsFenceNV #define GLEE_C_DEFINED_glIsFenceNV GLboolean __stdcall GLee_Lazy_glIsFenceNV(GLuint fence) {if (GLeeInit()) return glIsFenceNV(fence); return (GLboolean)0;} GLEEPFNGLISFENCENVPROC GLeeFuncPtr_glIsFenceNV=GLee_Lazy_glIsFenceNV; #endif #ifndef GLEE_C_DEFINED_glTestFenceNV #define GLEE_C_DEFINED_glTestFenceNV GLboolean __stdcall GLee_Lazy_glTestFenceNV(GLuint fence) {if (GLeeInit()) return glTestFenceNV(fence); return (GLboolean)0;} GLEEPFNGLTESTFENCENVPROC GLeeFuncPtr_glTestFenceNV=GLee_Lazy_glTestFenceNV; #endif #ifndef GLEE_C_DEFINED_glGetFenceivNV #define GLEE_C_DEFINED_glGetFenceivNV void __stdcall GLee_Lazy_glGetFenceivNV(GLuint fence, GLenum pname, GLint * params) {if (GLeeInit()) glGetFenceivNV(fence, pname, params);} GLEEPFNGLGETFENCEIVNVPROC GLeeFuncPtr_glGetFenceivNV=GLee_Lazy_glGetFenceivNV; #endif #ifndef GLEE_C_DEFINED_glFinishFenceNV #define GLEE_C_DEFINED_glFinishFenceNV void __stdcall GLee_Lazy_glFinishFenceNV(GLuint fence) {if (GLeeInit()) glFinishFenceNV(fence);} GLEEPFNGLFINISHFENCENVPROC GLeeFuncPtr_glFinishFenceNV=GLee_Lazy_glFinishFenceNV; #endif #ifndef GLEE_C_DEFINED_glSetFenceNV #define GLEE_C_DEFINED_glSetFenceNV void __stdcall GLee_Lazy_glSetFenceNV(GLuint fence, GLenum condition) {if (GLeeInit()) glSetFenceNV(fence, condition);} GLEEPFNGLSETFENCENVPROC GLeeFuncPtr_glSetFenceNV=GLee_Lazy_glSetFenceNV; #endif #endif /* GL_IBM_texture_mirrored_repeat */ #ifdef __GLEE_GL_IBM_texture_mirrored_repeat #endif /* GL_NV_evaluators */ #ifdef __GLEE_GL_NV_evaluators #ifndef GLEE_C_DEFINED_glMapControlPointsNV #define GLEE_C_DEFINED_glMapControlPointsNV void __stdcall GLee_Lazy_glMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid * points) {if (GLeeInit()) glMapControlPointsNV(target, index, type, ustride, vstride, uorder, vorder, packed, points);} GLEEPFNGLMAPCONTROLPOINTSNVPROC GLeeFuncPtr_glMapControlPointsNV=GLee_Lazy_glMapControlPointsNV; #endif #ifndef GLEE_C_DEFINED_glMapParameterivNV #define GLEE_C_DEFINED_glMapParameterivNV void __stdcall GLee_Lazy_glMapParameterivNV(GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glMapParameterivNV(target, pname, params);} GLEEPFNGLMAPPARAMETERIVNVPROC GLeeFuncPtr_glMapParameterivNV=GLee_Lazy_glMapParameterivNV; #endif #ifndef GLEE_C_DEFINED_glMapParameterfvNV #define GLEE_C_DEFINED_glMapParameterfvNV void __stdcall GLee_Lazy_glMapParameterfvNV(GLenum target, GLenum pname, const GLfloat * params) {if (GLeeInit()) glMapParameterfvNV(target, pname, params);} GLEEPFNGLMAPPARAMETERFVNVPROC GLeeFuncPtr_glMapParameterfvNV=GLee_Lazy_glMapParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glGetMapControlPointsNV #define GLEE_C_DEFINED_glGetMapControlPointsNV void __stdcall GLee_Lazy_glGetMapControlPointsNV(GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid * points) {if (GLeeInit()) glGetMapControlPointsNV(target, index, type, ustride, vstride, packed, points);} GLEEPFNGLGETMAPCONTROLPOINTSNVPROC GLeeFuncPtr_glGetMapControlPointsNV=GLee_Lazy_glGetMapControlPointsNV; #endif #ifndef GLEE_C_DEFINED_glGetMapParameterivNV #define GLEE_C_DEFINED_glGetMapParameterivNV void __stdcall GLee_Lazy_glGetMapParameterivNV(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetMapParameterivNV(target, pname, params);} GLEEPFNGLGETMAPPARAMETERIVNVPROC GLeeFuncPtr_glGetMapParameterivNV=GLee_Lazy_glGetMapParameterivNV; #endif #ifndef GLEE_C_DEFINED_glGetMapParameterfvNV #define GLEE_C_DEFINED_glGetMapParameterfvNV void __stdcall GLee_Lazy_glGetMapParameterfvNV(GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetMapParameterfvNV(target, pname, params);} GLEEPFNGLGETMAPPARAMETERFVNVPROC GLeeFuncPtr_glGetMapParameterfvNV=GLee_Lazy_glGetMapParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glGetMapAttribParameterivNV #define GLEE_C_DEFINED_glGetMapAttribParameterivNV void __stdcall GLee_Lazy_glGetMapAttribParameterivNV(GLenum target, GLuint index, GLenum pname, GLint * params) {if (GLeeInit()) glGetMapAttribParameterivNV(target, index, pname, params);} GLEEPFNGLGETMAPATTRIBPARAMETERIVNVPROC GLeeFuncPtr_glGetMapAttribParameterivNV=GLee_Lazy_glGetMapAttribParameterivNV; #endif #ifndef GLEE_C_DEFINED_glGetMapAttribParameterfvNV #define GLEE_C_DEFINED_glGetMapAttribParameterfvNV void __stdcall GLee_Lazy_glGetMapAttribParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetMapAttribParameterfvNV(target, index, pname, params);} GLEEPFNGLGETMAPATTRIBPARAMETERFVNVPROC GLeeFuncPtr_glGetMapAttribParameterfvNV=GLee_Lazy_glGetMapAttribParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glEvalMapsNV #define GLEE_C_DEFINED_glEvalMapsNV void __stdcall GLee_Lazy_glEvalMapsNV(GLenum target, GLenum mode) {if (GLeeInit()) glEvalMapsNV(target, mode);} GLEEPFNGLEVALMAPSNVPROC GLeeFuncPtr_glEvalMapsNV=GLee_Lazy_glEvalMapsNV; #endif #endif /* GL_NV_packed_depth_stencil */ #ifdef __GLEE_GL_NV_packed_depth_stencil #endif /* GL_NV_register_combiners2 */ #ifdef __GLEE_GL_NV_register_combiners2 #ifndef GLEE_C_DEFINED_glCombinerStageParameterfvNV #define GLEE_C_DEFINED_glCombinerStageParameterfvNV void __stdcall GLee_Lazy_glCombinerStageParameterfvNV(GLenum stage, GLenum pname, const GLfloat * params) {if (GLeeInit()) glCombinerStageParameterfvNV(stage, pname, params);} GLEEPFNGLCOMBINERSTAGEPARAMETERFVNVPROC GLeeFuncPtr_glCombinerStageParameterfvNV=GLee_Lazy_glCombinerStageParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glGetCombinerStageParameterfvNV #define GLEE_C_DEFINED_glGetCombinerStageParameterfvNV void __stdcall GLee_Lazy_glGetCombinerStageParameterfvNV(GLenum stage, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetCombinerStageParameterfvNV(stage, pname, params);} GLEEPFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC GLeeFuncPtr_glGetCombinerStageParameterfvNV=GLee_Lazy_glGetCombinerStageParameterfvNV; #endif #endif /* GL_NV_texture_compression_vtc */ #ifdef __GLEE_GL_NV_texture_compression_vtc #endif /* GL_NV_texture_rectangle */ #ifdef __GLEE_GL_NV_texture_rectangle #endif /* GL_NV_texture_shader */ #ifdef __GLEE_GL_NV_texture_shader #endif /* GL_NV_texture_shader2 */ #ifdef __GLEE_GL_NV_texture_shader2 #endif /* GL_NV_vertex_array_range2 */ #ifdef __GLEE_GL_NV_vertex_array_range2 #endif /* GL_NV_vertex_program */ #ifdef __GLEE_GL_NV_vertex_program #ifndef GLEE_C_DEFINED_glAreProgramsResidentNV #define GLEE_C_DEFINED_glAreProgramsResidentNV GLboolean __stdcall GLee_Lazy_glAreProgramsResidentNV(GLsizei n, const GLuint * programs, GLboolean * residences) {if (GLeeInit()) return glAreProgramsResidentNV(n, programs, residences); return (GLboolean)0;} GLEEPFNGLAREPROGRAMSRESIDENTNVPROC GLeeFuncPtr_glAreProgramsResidentNV=GLee_Lazy_glAreProgramsResidentNV; #endif #ifndef GLEE_C_DEFINED_glBindProgramNV #define GLEE_C_DEFINED_glBindProgramNV void __stdcall GLee_Lazy_glBindProgramNV(GLenum target, GLuint id) {if (GLeeInit()) glBindProgramNV(target, id);} GLEEPFNGLBINDPROGRAMNVPROC GLeeFuncPtr_glBindProgramNV=GLee_Lazy_glBindProgramNV; #endif #ifndef GLEE_C_DEFINED_glDeleteProgramsNV #define GLEE_C_DEFINED_glDeleteProgramsNV void __stdcall GLee_Lazy_glDeleteProgramsNV(GLsizei n, const GLuint * programs) {if (GLeeInit()) glDeleteProgramsNV(n, programs);} GLEEPFNGLDELETEPROGRAMSNVPROC GLeeFuncPtr_glDeleteProgramsNV=GLee_Lazy_glDeleteProgramsNV; #endif #ifndef GLEE_C_DEFINED_glExecuteProgramNV #define GLEE_C_DEFINED_glExecuteProgramNV void __stdcall GLee_Lazy_glExecuteProgramNV(GLenum target, GLuint id, const GLfloat * params) {if (GLeeInit()) glExecuteProgramNV(target, id, params);} GLEEPFNGLEXECUTEPROGRAMNVPROC GLeeFuncPtr_glExecuteProgramNV=GLee_Lazy_glExecuteProgramNV; #endif #ifndef GLEE_C_DEFINED_glGenProgramsNV #define GLEE_C_DEFINED_glGenProgramsNV void __stdcall GLee_Lazy_glGenProgramsNV(GLsizei n, GLuint * programs) {if (GLeeInit()) glGenProgramsNV(n, programs);} GLEEPFNGLGENPROGRAMSNVPROC GLeeFuncPtr_glGenProgramsNV=GLee_Lazy_glGenProgramsNV; #endif #ifndef GLEE_C_DEFINED_glGetProgramParameterdvNV #define GLEE_C_DEFINED_glGetProgramParameterdvNV void __stdcall GLee_Lazy_glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble * params) {if (GLeeInit()) glGetProgramParameterdvNV(target, index, pname, params);} GLEEPFNGLGETPROGRAMPARAMETERDVNVPROC GLeeFuncPtr_glGetProgramParameterdvNV=GLee_Lazy_glGetProgramParameterdvNV; #endif #ifndef GLEE_C_DEFINED_glGetProgramParameterfvNV #define GLEE_C_DEFINED_glGetProgramParameterfvNV void __stdcall GLee_Lazy_glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetProgramParameterfvNV(target, index, pname, params);} GLEEPFNGLGETPROGRAMPARAMETERFVNVPROC GLeeFuncPtr_glGetProgramParameterfvNV=GLee_Lazy_glGetProgramParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glGetProgramivNV #define GLEE_C_DEFINED_glGetProgramivNV void __stdcall GLee_Lazy_glGetProgramivNV(GLuint id, GLenum pname, GLint * params) {if (GLeeInit()) glGetProgramivNV(id, pname, params);} GLEEPFNGLGETPROGRAMIVNVPROC GLeeFuncPtr_glGetProgramivNV=GLee_Lazy_glGetProgramivNV; #endif #ifndef GLEE_C_DEFINED_glGetProgramStringNV #define GLEE_C_DEFINED_glGetProgramStringNV void __stdcall GLee_Lazy_glGetProgramStringNV(GLuint id, GLenum pname, GLubyte * program) {if (GLeeInit()) glGetProgramStringNV(id, pname, program);} GLEEPFNGLGETPROGRAMSTRINGNVPROC GLeeFuncPtr_glGetProgramStringNV=GLee_Lazy_glGetProgramStringNV; #endif #ifndef GLEE_C_DEFINED_glGetTrackMatrixivNV #define GLEE_C_DEFINED_glGetTrackMatrixivNV void __stdcall GLee_Lazy_glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint * params) {if (GLeeInit()) glGetTrackMatrixivNV(target, address, pname, params);} GLEEPFNGLGETTRACKMATRIXIVNVPROC GLeeFuncPtr_glGetTrackMatrixivNV=GLee_Lazy_glGetTrackMatrixivNV; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribdvNV #define GLEE_C_DEFINED_glGetVertexAttribdvNV void __stdcall GLee_Lazy_glGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble * params) {if (GLeeInit()) glGetVertexAttribdvNV(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBDVNVPROC GLeeFuncPtr_glGetVertexAttribdvNV=GLee_Lazy_glGetVertexAttribdvNV; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribfvNV #define GLEE_C_DEFINED_glGetVertexAttribfvNV void __stdcall GLee_Lazy_glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetVertexAttribfvNV(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBFVNVPROC GLeeFuncPtr_glGetVertexAttribfvNV=GLee_Lazy_glGetVertexAttribfvNV; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribivNV #define GLEE_C_DEFINED_glGetVertexAttribivNV void __stdcall GLee_Lazy_glGetVertexAttribivNV(GLuint index, GLenum pname, GLint * params) {if (GLeeInit()) glGetVertexAttribivNV(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBIVNVPROC GLeeFuncPtr_glGetVertexAttribivNV=GLee_Lazy_glGetVertexAttribivNV; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribPointervNV #define GLEE_C_DEFINED_glGetVertexAttribPointervNV void __stdcall GLee_Lazy_glGetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid* * pointer) {if (GLeeInit()) glGetVertexAttribPointervNV(index, pname, pointer);} GLEEPFNGLGETVERTEXATTRIBPOINTERVNVPROC GLeeFuncPtr_glGetVertexAttribPointervNV=GLee_Lazy_glGetVertexAttribPointervNV; #endif #ifndef GLEE_C_DEFINED_glIsProgramNV #define GLEE_C_DEFINED_glIsProgramNV GLboolean __stdcall GLee_Lazy_glIsProgramNV(GLuint id) {if (GLeeInit()) return glIsProgramNV(id); return (GLboolean)0;} GLEEPFNGLISPROGRAMNVPROC GLeeFuncPtr_glIsProgramNV=GLee_Lazy_glIsProgramNV; #endif #ifndef GLEE_C_DEFINED_glLoadProgramNV #define GLEE_C_DEFINED_glLoadProgramNV void __stdcall GLee_Lazy_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte * program) {if (GLeeInit()) glLoadProgramNV(target, id, len, program);} GLEEPFNGLLOADPROGRAMNVPROC GLeeFuncPtr_glLoadProgramNV=GLee_Lazy_glLoadProgramNV; #endif #ifndef GLEE_C_DEFINED_glProgramParameter4dNV #define GLEE_C_DEFINED_glProgramParameter4dNV void __stdcall GLee_Lazy_glProgramParameter4dNV(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glProgramParameter4dNV(target, index, x, y, z, w);} GLEEPFNGLPROGRAMPARAMETER4DNVPROC GLeeFuncPtr_glProgramParameter4dNV=GLee_Lazy_glProgramParameter4dNV; #endif #ifndef GLEE_C_DEFINED_glProgramParameter4dvNV #define GLEE_C_DEFINED_glProgramParameter4dvNV void __stdcall GLee_Lazy_glProgramParameter4dvNV(GLenum target, GLuint index, const GLdouble * v) {if (GLeeInit()) glProgramParameter4dvNV(target, index, v);} GLEEPFNGLPROGRAMPARAMETER4DVNVPROC GLeeFuncPtr_glProgramParameter4dvNV=GLee_Lazy_glProgramParameter4dvNV; #endif #ifndef GLEE_C_DEFINED_glProgramParameter4fNV #define GLEE_C_DEFINED_glProgramParameter4fNV void __stdcall GLee_Lazy_glProgramParameter4fNV(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glProgramParameter4fNV(target, index, x, y, z, w);} GLEEPFNGLPROGRAMPARAMETER4FNVPROC GLeeFuncPtr_glProgramParameter4fNV=GLee_Lazy_glProgramParameter4fNV; #endif #ifndef GLEE_C_DEFINED_glProgramParameter4fvNV #define GLEE_C_DEFINED_glProgramParameter4fvNV void __stdcall GLee_Lazy_glProgramParameter4fvNV(GLenum target, GLuint index, const GLfloat * v) {if (GLeeInit()) glProgramParameter4fvNV(target, index, v);} GLEEPFNGLPROGRAMPARAMETER4FVNVPROC GLeeFuncPtr_glProgramParameter4fvNV=GLee_Lazy_glProgramParameter4fvNV; #endif #ifndef GLEE_C_DEFINED_glProgramParameters4dvNV #define GLEE_C_DEFINED_glProgramParameters4dvNV void __stdcall GLee_Lazy_glProgramParameters4dvNV(GLenum target, GLuint index, GLsizei count, const GLdouble * v) {if (GLeeInit()) glProgramParameters4dvNV(target, index, count, v);} GLEEPFNGLPROGRAMPARAMETERS4DVNVPROC GLeeFuncPtr_glProgramParameters4dvNV=GLee_Lazy_glProgramParameters4dvNV; #endif #ifndef GLEE_C_DEFINED_glProgramParameters4fvNV #define GLEE_C_DEFINED_glProgramParameters4fvNV void __stdcall GLee_Lazy_glProgramParameters4fvNV(GLenum target, GLuint index, GLsizei count, const GLfloat * v) {if (GLeeInit()) glProgramParameters4fvNV(target, index, count, v);} GLEEPFNGLPROGRAMPARAMETERS4FVNVPROC GLeeFuncPtr_glProgramParameters4fvNV=GLee_Lazy_glProgramParameters4fvNV; #endif #ifndef GLEE_C_DEFINED_glRequestResidentProgramsNV #define GLEE_C_DEFINED_glRequestResidentProgramsNV void __stdcall GLee_Lazy_glRequestResidentProgramsNV(GLsizei n, const GLuint * programs) {if (GLeeInit()) glRequestResidentProgramsNV(n, programs);} GLEEPFNGLREQUESTRESIDENTPROGRAMSNVPROC GLeeFuncPtr_glRequestResidentProgramsNV=GLee_Lazy_glRequestResidentProgramsNV; #endif #ifndef GLEE_C_DEFINED_glTrackMatrixNV #define GLEE_C_DEFINED_glTrackMatrixNV void __stdcall GLee_Lazy_glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform) {if (GLeeInit()) glTrackMatrixNV(target, address, matrix, transform);} GLEEPFNGLTRACKMATRIXNVPROC GLeeFuncPtr_glTrackMatrixNV=GLee_Lazy_glTrackMatrixNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribPointerNV #define GLEE_C_DEFINED_glVertexAttribPointerNV void __stdcall GLee_Lazy_glVertexAttribPointerNV(GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glVertexAttribPointerNV(index, fsize, type, stride, pointer);} GLEEPFNGLVERTEXATTRIBPOINTERNVPROC GLeeFuncPtr_glVertexAttribPointerNV=GLee_Lazy_glVertexAttribPointerNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1dNV #define GLEE_C_DEFINED_glVertexAttrib1dNV void __stdcall GLee_Lazy_glVertexAttrib1dNV(GLuint index, GLdouble x) {if (GLeeInit()) glVertexAttrib1dNV(index, x);} GLEEPFNGLVERTEXATTRIB1DNVPROC GLeeFuncPtr_glVertexAttrib1dNV=GLee_Lazy_glVertexAttrib1dNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1dvNV #define GLEE_C_DEFINED_glVertexAttrib1dvNV void __stdcall GLee_Lazy_glVertexAttrib1dvNV(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib1dvNV(index, v);} GLEEPFNGLVERTEXATTRIB1DVNVPROC GLeeFuncPtr_glVertexAttrib1dvNV=GLee_Lazy_glVertexAttrib1dvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1fNV #define GLEE_C_DEFINED_glVertexAttrib1fNV void __stdcall GLee_Lazy_glVertexAttrib1fNV(GLuint index, GLfloat x) {if (GLeeInit()) glVertexAttrib1fNV(index, x);} GLEEPFNGLVERTEXATTRIB1FNVPROC GLeeFuncPtr_glVertexAttrib1fNV=GLee_Lazy_glVertexAttrib1fNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1fvNV #define GLEE_C_DEFINED_glVertexAttrib1fvNV void __stdcall GLee_Lazy_glVertexAttrib1fvNV(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib1fvNV(index, v);} GLEEPFNGLVERTEXATTRIB1FVNVPROC GLeeFuncPtr_glVertexAttrib1fvNV=GLee_Lazy_glVertexAttrib1fvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1sNV #define GLEE_C_DEFINED_glVertexAttrib1sNV void __stdcall GLee_Lazy_glVertexAttrib1sNV(GLuint index, GLshort x) {if (GLeeInit()) glVertexAttrib1sNV(index, x);} GLEEPFNGLVERTEXATTRIB1SNVPROC GLeeFuncPtr_glVertexAttrib1sNV=GLee_Lazy_glVertexAttrib1sNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1svNV #define GLEE_C_DEFINED_glVertexAttrib1svNV void __stdcall GLee_Lazy_glVertexAttrib1svNV(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib1svNV(index, v);} GLEEPFNGLVERTEXATTRIB1SVNVPROC GLeeFuncPtr_glVertexAttrib1svNV=GLee_Lazy_glVertexAttrib1svNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2dNV #define GLEE_C_DEFINED_glVertexAttrib2dNV void __stdcall GLee_Lazy_glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y) {if (GLeeInit()) glVertexAttrib2dNV(index, x, y);} GLEEPFNGLVERTEXATTRIB2DNVPROC GLeeFuncPtr_glVertexAttrib2dNV=GLee_Lazy_glVertexAttrib2dNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2dvNV #define GLEE_C_DEFINED_glVertexAttrib2dvNV void __stdcall GLee_Lazy_glVertexAttrib2dvNV(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib2dvNV(index, v);} GLEEPFNGLVERTEXATTRIB2DVNVPROC GLeeFuncPtr_glVertexAttrib2dvNV=GLee_Lazy_glVertexAttrib2dvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2fNV #define GLEE_C_DEFINED_glVertexAttrib2fNV void __stdcall GLee_Lazy_glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y) {if (GLeeInit()) glVertexAttrib2fNV(index, x, y);} GLEEPFNGLVERTEXATTRIB2FNVPROC GLeeFuncPtr_glVertexAttrib2fNV=GLee_Lazy_glVertexAttrib2fNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2fvNV #define GLEE_C_DEFINED_glVertexAttrib2fvNV void __stdcall GLee_Lazy_glVertexAttrib2fvNV(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib2fvNV(index, v);} GLEEPFNGLVERTEXATTRIB2FVNVPROC GLeeFuncPtr_glVertexAttrib2fvNV=GLee_Lazy_glVertexAttrib2fvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2sNV #define GLEE_C_DEFINED_glVertexAttrib2sNV void __stdcall GLee_Lazy_glVertexAttrib2sNV(GLuint index, GLshort x, GLshort y) {if (GLeeInit()) glVertexAttrib2sNV(index, x, y);} GLEEPFNGLVERTEXATTRIB2SNVPROC GLeeFuncPtr_glVertexAttrib2sNV=GLee_Lazy_glVertexAttrib2sNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2svNV #define GLEE_C_DEFINED_glVertexAttrib2svNV void __stdcall GLee_Lazy_glVertexAttrib2svNV(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib2svNV(index, v);} GLEEPFNGLVERTEXATTRIB2SVNVPROC GLeeFuncPtr_glVertexAttrib2svNV=GLee_Lazy_glVertexAttrib2svNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3dNV #define GLEE_C_DEFINED_glVertexAttrib3dNV void __stdcall GLee_Lazy_glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glVertexAttrib3dNV(index, x, y, z);} GLEEPFNGLVERTEXATTRIB3DNVPROC GLeeFuncPtr_glVertexAttrib3dNV=GLee_Lazy_glVertexAttrib3dNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3dvNV #define GLEE_C_DEFINED_glVertexAttrib3dvNV void __stdcall GLee_Lazy_glVertexAttrib3dvNV(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib3dvNV(index, v);} GLEEPFNGLVERTEXATTRIB3DVNVPROC GLeeFuncPtr_glVertexAttrib3dvNV=GLee_Lazy_glVertexAttrib3dvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3fNV #define GLEE_C_DEFINED_glVertexAttrib3fNV void __stdcall GLee_Lazy_glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glVertexAttrib3fNV(index, x, y, z);} GLEEPFNGLVERTEXATTRIB3FNVPROC GLeeFuncPtr_glVertexAttrib3fNV=GLee_Lazy_glVertexAttrib3fNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3fvNV #define GLEE_C_DEFINED_glVertexAttrib3fvNV void __stdcall GLee_Lazy_glVertexAttrib3fvNV(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib3fvNV(index, v);} GLEEPFNGLVERTEXATTRIB3FVNVPROC GLeeFuncPtr_glVertexAttrib3fvNV=GLee_Lazy_glVertexAttrib3fvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3sNV #define GLEE_C_DEFINED_glVertexAttrib3sNV void __stdcall GLee_Lazy_glVertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z) {if (GLeeInit()) glVertexAttrib3sNV(index, x, y, z);} GLEEPFNGLVERTEXATTRIB3SNVPROC GLeeFuncPtr_glVertexAttrib3sNV=GLee_Lazy_glVertexAttrib3sNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3svNV #define GLEE_C_DEFINED_glVertexAttrib3svNV void __stdcall GLee_Lazy_glVertexAttrib3svNV(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib3svNV(index, v);} GLEEPFNGLVERTEXATTRIB3SVNVPROC GLeeFuncPtr_glVertexAttrib3svNV=GLee_Lazy_glVertexAttrib3svNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4dNV #define GLEE_C_DEFINED_glVertexAttrib4dNV void __stdcall GLee_Lazy_glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glVertexAttrib4dNV(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4DNVPROC GLeeFuncPtr_glVertexAttrib4dNV=GLee_Lazy_glVertexAttrib4dNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4dvNV #define GLEE_C_DEFINED_glVertexAttrib4dvNV void __stdcall GLee_Lazy_glVertexAttrib4dvNV(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttrib4dvNV(index, v);} GLEEPFNGLVERTEXATTRIB4DVNVPROC GLeeFuncPtr_glVertexAttrib4dvNV=GLee_Lazy_glVertexAttrib4dvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4fNV #define GLEE_C_DEFINED_glVertexAttrib4fNV void __stdcall GLee_Lazy_glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glVertexAttrib4fNV(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4FNVPROC GLeeFuncPtr_glVertexAttrib4fNV=GLee_Lazy_glVertexAttrib4fNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4fvNV #define GLEE_C_DEFINED_glVertexAttrib4fvNV void __stdcall GLee_Lazy_glVertexAttrib4fvNV(GLuint index, const GLfloat * v) {if (GLeeInit()) glVertexAttrib4fvNV(index, v);} GLEEPFNGLVERTEXATTRIB4FVNVPROC GLeeFuncPtr_glVertexAttrib4fvNV=GLee_Lazy_glVertexAttrib4fvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4sNV #define GLEE_C_DEFINED_glVertexAttrib4sNV void __stdcall GLee_Lazy_glVertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) {if (GLeeInit()) glVertexAttrib4sNV(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4SNVPROC GLeeFuncPtr_glVertexAttrib4sNV=GLee_Lazy_glVertexAttrib4sNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4svNV #define GLEE_C_DEFINED_glVertexAttrib4svNV void __stdcall GLee_Lazy_glVertexAttrib4svNV(GLuint index, const GLshort * v) {if (GLeeInit()) glVertexAttrib4svNV(index, v);} GLEEPFNGLVERTEXATTRIB4SVNVPROC GLeeFuncPtr_glVertexAttrib4svNV=GLee_Lazy_glVertexAttrib4svNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4ubNV #define GLEE_C_DEFINED_glVertexAttrib4ubNV void __stdcall GLee_Lazy_glVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) {if (GLeeInit()) glVertexAttrib4ubNV(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4UBNVPROC GLeeFuncPtr_glVertexAttrib4ubNV=GLee_Lazy_glVertexAttrib4ubNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4ubvNV #define GLEE_C_DEFINED_glVertexAttrib4ubvNV void __stdcall GLee_Lazy_glVertexAttrib4ubvNV(GLuint index, const GLubyte * v) {if (GLeeInit()) glVertexAttrib4ubvNV(index, v);} GLEEPFNGLVERTEXATTRIB4UBVNVPROC GLeeFuncPtr_glVertexAttrib4ubvNV=GLee_Lazy_glVertexAttrib4ubvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs1dvNV #define GLEE_C_DEFINED_glVertexAttribs1dvNV void __stdcall GLee_Lazy_glVertexAttribs1dvNV(GLuint index, GLsizei count, const GLdouble * v) {if (GLeeInit()) glVertexAttribs1dvNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS1DVNVPROC GLeeFuncPtr_glVertexAttribs1dvNV=GLee_Lazy_glVertexAttribs1dvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs1fvNV #define GLEE_C_DEFINED_glVertexAttribs1fvNV void __stdcall GLee_Lazy_glVertexAttribs1fvNV(GLuint index, GLsizei count, const GLfloat * v) {if (GLeeInit()) glVertexAttribs1fvNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS1FVNVPROC GLeeFuncPtr_glVertexAttribs1fvNV=GLee_Lazy_glVertexAttribs1fvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs1svNV #define GLEE_C_DEFINED_glVertexAttribs1svNV void __stdcall GLee_Lazy_glVertexAttribs1svNV(GLuint index, GLsizei count, const GLshort * v) {if (GLeeInit()) glVertexAttribs1svNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS1SVNVPROC GLeeFuncPtr_glVertexAttribs1svNV=GLee_Lazy_glVertexAttribs1svNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs2dvNV #define GLEE_C_DEFINED_glVertexAttribs2dvNV void __stdcall GLee_Lazy_glVertexAttribs2dvNV(GLuint index, GLsizei count, const GLdouble * v) {if (GLeeInit()) glVertexAttribs2dvNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS2DVNVPROC GLeeFuncPtr_glVertexAttribs2dvNV=GLee_Lazy_glVertexAttribs2dvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs2fvNV #define GLEE_C_DEFINED_glVertexAttribs2fvNV void __stdcall GLee_Lazy_glVertexAttribs2fvNV(GLuint index, GLsizei count, const GLfloat * v) {if (GLeeInit()) glVertexAttribs2fvNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS2FVNVPROC GLeeFuncPtr_glVertexAttribs2fvNV=GLee_Lazy_glVertexAttribs2fvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs2svNV #define GLEE_C_DEFINED_glVertexAttribs2svNV void __stdcall GLee_Lazy_glVertexAttribs2svNV(GLuint index, GLsizei count, const GLshort * v) {if (GLeeInit()) glVertexAttribs2svNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS2SVNVPROC GLeeFuncPtr_glVertexAttribs2svNV=GLee_Lazy_glVertexAttribs2svNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs3dvNV #define GLEE_C_DEFINED_glVertexAttribs3dvNV void __stdcall GLee_Lazy_glVertexAttribs3dvNV(GLuint index, GLsizei count, const GLdouble * v) {if (GLeeInit()) glVertexAttribs3dvNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS3DVNVPROC GLeeFuncPtr_glVertexAttribs3dvNV=GLee_Lazy_glVertexAttribs3dvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs3fvNV #define GLEE_C_DEFINED_glVertexAttribs3fvNV void __stdcall GLee_Lazy_glVertexAttribs3fvNV(GLuint index, GLsizei count, const GLfloat * v) {if (GLeeInit()) glVertexAttribs3fvNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS3FVNVPROC GLeeFuncPtr_glVertexAttribs3fvNV=GLee_Lazy_glVertexAttribs3fvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs3svNV #define GLEE_C_DEFINED_glVertexAttribs3svNV void __stdcall GLee_Lazy_glVertexAttribs3svNV(GLuint index, GLsizei count, const GLshort * v) {if (GLeeInit()) glVertexAttribs3svNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS3SVNVPROC GLeeFuncPtr_glVertexAttribs3svNV=GLee_Lazy_glVertexAttribs3svNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs4dvNV #define GLEE_C_DEFINED_glVertexAttribs4dvNV void __stdcall GLee_Lazy_glVertexAttribs4dvNV(GLuint index, GLsizei count, const GLdouble * v) {if (GLeeInit()) glVertexAttribs4dvNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS4DVNVPROC GLeeFuncPtr_glVertexAttribs4dvNV=GLee_Lazy_glVertexAttribs4dvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs4fvNV #define GLEE_C_DEFINED_glVertexAttribs4fvNV void __stdcall GLee_Lazy_glVertexAttribs4fvNV(GLuint index, GLsizei count, const GLfloat * v) {if (GLeeInit()) glVertexAttribs4fvNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS4FVNVPROC GLeeFuncPtr_glVertexAttribs4fvNV=GLee_Lazy_glVertexAttribs4fvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs4svNV #define GLEE_C_DEFINED_glVertexAttribs4svNV void __stdcall GLee_Lazy_glVertexAttribs4svNV(GLuint index, GLsizei count, const GLshort * v) {if (GLeeInit()) glVertexAttribs4svNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS4SVNVPROC GLeeFuncPtr_glVertexAttribs4svNV=GLee_Lazy_glVertexAttribs4svNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs4ubvNV #define GLEE_C_DEFINED_glVertexAttribs4ubvNV void __stdcall GLee_Lazy_glVertexAttribs4ubvNV(GLuint index, GLsizei count, const GLubyte * v) {if (GLeeInit()) glVertexAttribs4ubvNV(index, count, v);} GLEEPFNGLVERTEXATTRIBS4UBVNVPROC GLeeFuncPtr_glVertexAttribs4ubvNV=GLee_Lazy_glVertexAttribs4ubvNV; #endif #endif /* GL_SGIX_texture_coordinate_clamp */ #ifdef __GLEE_GL_SGIX_texture_coordinate_clamp #endif /* GL_SGIX_scalebias_hint */ #ifdef __GLEE_GL_SGIX_scalebias_hint #endif /* GL_OML_interlace */ #ifdef __GLEE_GL_OML_interlace #endif /* GL_OML_subsample */ #ifdef __GLEE_GL_OML_subsample #endif /* GL_OML_resample */ #ifdef __GLEE_GL_OML_resample #endif /* GL_NV_copy_depth_to_color */ #ifdef __GLEE_GL_NV_copy_depth_to_color #endif /* GL_ATI_envmap_bumpmap */ #ifdef __GLEE_GL_ATI_envmap_bumpmap #ifndef GLEE_C_DEFINED_glTexBumpParameterivATI #define GLEE_C_DEFINED_glTexBumpParameterivATI void __stdcall GLee_Lazy_glTexBumpParameterivATI(GLenum pname, const GLint * param) {if (GLeeInit()) glTexBumpParameterivATI(pname, param);} GLEEPFNGLTEXBUMPPARAMETERIVATIPROC GLeeFuncPtr_glTexBumpParameterivATI=GLee_Lazy_glTexBumpParameterivATI; #endif #ifndef GLEE_C_DEFINED_glTexBumpParameterfvATI #define GLEE_C_DEFINED_glTexBumpParameterfvATI void __stdcall GLee_Lazy_glTexBumpParameterfvATI(GLenum pname, const GLfloat * param) {if (GLeeInit()) glTexBumpParameterfvATI(pname, param);} GLEEPFNGLTEXBUMPPARAMETERFVATIPROC GLeeFuncPtr_glTexBumpParameterfvATI=GLee_Lazy_glTexBumpParameterfvATI; #endif #ifndef GLEE_C_DEFINED_glGetTexBumpParameterivATI #define GLEE_C_DEFINED_glGetTexBumpParameterivATI void __stdcall GLee_Lazy_glGetTexBumpParameterivATI(GLenum pname, GLint * param) {if (GLeeInit()) glGetTexBumpParameterivATI(pname, param);} GLEEPFNGLGETTEXBUMPPARAMETERIVATIPROC GLeeFuncPtr_glGetTexBumpParameterivATI=GLee_Lazy_glGetTexBumpParameterivATI; #endif #ifndef GLEE_C_DEFINED_glGetTexBumpParameterfvATI #define GLEE_C_DEFINED_glGetTexBumpParameterfvATI void __stdcall GLee_Lazy_glGetTexBumpParameterfvATI(GLenum pname, GLfloat * param) {if (GLeeInit()) glGetTexBumpParameterfvATI(pname, param);} GLEEPFNGLGETTEXBUMPPARAMETERFVATIPROC GLeeFuncPtr_glGetTexBumpParameterfvATI=GLee_Lazy_glGetTexBumpParameterfvATI; #endif #endif /* GL_ATI_fragment_shader */ #ifdef __GLEE_GL_ATI_fragment_shader #ifndef GLEE_C_DEFINED_glGenFragmentShadersATI #define GLEE_C_DEFINED_glGenFragmentShadersATI GLuint __stdcall GLee_Lazy_glGenFragmentShadersATI(GLuint range) {if (GLeeInit()) return glGenFragmentShadersATI(range); return (GLuint)0;} GLEEPFNGLGENFRAGMENTSHADERSATIPROC GLeeFuncPtr_glGenFragmentShadersATI=GLee_Lazy_glGenFragmentShadersATI; #endif #ifndef GLEE_C_DEFINED_glBindFragmentShaderATI #define GLEE_C_DEFINED_glBindFragmentShaderATI void __stdcall GLee_Lazy_glBindFragmentShaderATI(GLuint id) {if (GLeeInit()) glBindFragmentShaderATI(id);} GLEEPFNGLBINDFRAGMENTSHADERATIPROC GLeeFuncPtr_glBindFragmentShaderATI=GLee_Lazy_glBindFragmentShaderATI; #endif #ifndef GLEE_C_DEFINED_glDeleteFragmentShaderATI #define GLEE_C_DEFINED_glDeleteFragmentShaderATI void __stdcall GLee_Lazy_glDeleteFragmentShaderATI(GLuint id) {if (GLeeInit()) glDeleteFragmentShaderATI(id);} GLEEPFNGLDELETEFRAGMENTSHADERATIPROC GLeeFuncPtr_glDeleteFragmentShaderATI=GLee_Lazy_glDeleteFragmentShaderATI; #endif #ifndef GLEE_C_DEFINED_glBeginFragmentShaderATI #define GLEE_C_DEFINED_glBeginFragmentShaderATI void __stdcall GLee_Lazy_glBeginFragmentShaderATI(void) {if (GLeeInit()) glBeginFragmentShaderATI();} GLEEPFNGLBEGINFRAGMENTSHADERATIPROC GLeeFuncPtr_glBeginFragmentShaderATI=GLee_Lazy_glBeginFragmentShaderATI; #endif #ifndef GLEE_C_DEFINED_glEndFragmentShaderATI #define GLEE_C_DEFINED_glEndFragmentShaderATI void __stdcall GLee_Lazy_glEndFragmentShaderATI(void) {if (GLeeInit()) glEndFragmentShaderATI();} GLEEPFNGLENDFRAGMENTSHADERATIPROC GLeeFuncPtr_glEndFragmentShaderATI=GLee_Lazy_glEndFragmentShaderATI; #endif #ifndef GLEE_C_DEFINED_glPassTexCoordATI #define GLEE_C_DEFINED_glPassTexCoordATI void __stdcall GLee_Lazy_glPassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle) {if (GLeeInit()) glPassTexCoordATI(dst, coord, swizzle);} GLEEPFNGLPASSTEXCOORDATIPROC GLeeFuncPtr_glPassTexCoordATI=GLee_Lazy_glPassTexCoordATI; #endif #ifndef GLEE_C_DEFINED_glSampleMapATI #define GLEE_C_DEFINED_glSampleMapATI void __stdcall GLee_Lazy_glSampleMapATI(GLuint dst, GLuint interp, GLenum swizzle) {if (GLeeInit()) glSampleMapATI(dst, interp, swizzle);} GLEEPFNGLSAMPLEMAPATIPROC GLeeFuncPtr_glSampleMapATI=GLee_Lazy_glSampleMapATI; #endif #ifndef GLEE_C_DEFINED_glColorFragmentOp1ATI #define GLEE_C_DEFINED_glColorFragmentOp1ATI void __stdcall GLee_Lazy_glColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod) {if (GLeeInit()) glColorFragmentOp1ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod);} GLEEPFNGLCOLORFRAGMENTOP1ATIPROC GLeeFuncPtr_glColorFragmentOp1ATI=GLee_Lazy_glColorFragmentOp1ATI; #endif #ifndef GLEE_C_DEFINED_glColorFragmentOp2ATI #define GLEE_C_DEFINED_glColorFragmentOp2ATI void __stdcall GLee_Lazy_glColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod) {if (GLeeInit()) glColorFragmentOp2ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod);} GLEEPFNGLCOLORFRAGMENTOP2ATIPROC GLeeFuncPtr_glColorFragmentOp2ATI=GLee_Lazy_glColorFragmentOp2ATI; #endif #ifndef GLEE_C_DEFINED_glColorFragmentOp3ATI #define GLEE_C_DEFINED_glColorFragmentOp3ATI void __stdcall GLee_Lazy_glColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod) {if (GLeeInit()) glColorFragmentOp3ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod);} GLEEPFNGLCOLORFRAGMENTOP3ATIPROC GLeeFuncPtr_glColorFragmentOp3ATI=GLee_Lazy_glColorFragmentOp3ATI; #endif #ifndef GLEE_C_DEFINED_glAlphaFragmentOp1ATI #define GLEE_C_DEFINED_glAlphaFragmentOp1ATI void __stdcall GLee_Lazy_glAlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod) {if (GLeeInit()) glAlphaFragmentOp1ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod);} GLEEPFNGLALPHAFRAGMENTOP1ATIPROC GLeeFuncPtr_glAlphaFragmentOp1ATI=GLee_Lazy_glAlphaFragmentOp1ATI; #endif #ifndef GLEE_C_DEFINED_glAlphaFragmentOp2ATI #define GLEE_C_DEFINED_glAlphaFragmentOp2ATI void __stdcall GLee_Lazy_glAlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod) {if (GLeeInit()) glAlphaFragmentOp2ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod);} GLEEPFNGLALPHAFRAGMENTOP2ATIPROC GLeeFuncPtr_glAlphaFragmentOp2ATI=GLee_Lazy_glAlphaFragmentOp2ATI; #endif #ifndef GLEE_C_DEFINED_glAlphaFragmentOp3ATI #define GLEE_C_DEFINED_glAlphaFragmentOp3ATI void __stdcall GLee_Lazy_glAlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod) {if (GLeeInit()) glAlphaFragmentOp3ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod);} GLEEPFNGLALPHAFRAGMENTOP3ATIPROC GLeeFuncPtr_glAlphaFragmentOp3ATI=GLee_Lazy_glAlphaFragmentOp3ATI; #endif #ifndef GLEE_C_DEFINED_glSetFragmentShaderConstantATI #define GLEE_C_DEFINED_glSetFragmentShaderConstantATI void __stdcall GLee_Lazy_glSetFragmentShaderConstantATI(GLuint dst, const GLfloat * value) {if (GLeeInit()) glSetFragmentShaderConstantATI(dst, value);} GLEEPFNGLSETFRAGMENTSHADERCONSTANTATIPROC GLeeFuncPtr_glSetFragmentShaderConstantATI=GLee_Lazy_glSetFragmentShaderConstantATI; #endif #endif /* GL_ATI_pn_triangles */ #ifdef __GLEE_GL_ATI_pn_triangles #ifndef GLEE_C_DEFINED_glPNTrianglesiATI #define GLEE_C_DEFINED_glPNTrianglesiATI void __stdcall GLee_Lazy_glPNTrianglesiATI(GLenum pname, GLint param) {if (GLeeInit()) glPNTrianglesiATI(pname, param);} GLEEPFNGLPNTRIANGLESIATIPROC GLeeFuncPtr_glPNTrianglesiATI=GLee_Lazy_glPNTrianglesiATI; #endif #ifndef GLEE_C_DEFINED_glPNTrianglesfATI #define GLEE_C_DEFINED_glPNTrianglesfATI void __stdcall GLee_Lazy_glPNTrianglesfATI(GLenum pname, GLfloat param) {if (GLeeInit()) glPNTrianglesfATI(pname, param);} GLEEPFNGLPNTRIANGLESFATIPROC GLeeFuncPtr_glPNTrianglesfATI=GLee_Lazy_glPNTrianglesfATI; #endif #endif /* GL_ATI_vertex_array_object */ #ifdef __GLEE_GL_ATI_vertex_array_object #ifndef GLEE_C_DEFINED_glNewObjectBufferATI #define GLEE_C_DEFINED_glNewObjectBufferATI GLuint __stdcall GLee_Lazy_glNewObjectBufferATI(GLsizei size, const GLvoid * pointer, GLenum usage) {if (GLeeInit()) return glNewObjectBufferATI(size, pointer, usage); return (GLuint)0;} GLEEPFNGLNEWOBJECTBUFFERATIPROC GLeeFuncPtr_glNewObjectBufferATI=GLee_Lazy_glNewObjectBufferATI; #endif #ifndef GLEE_C_DEFINED_glIsObjectBufferATI #define GLEE_C_DEFINED_glIsObjectBufferATI GLboolean __stdcall GLee_Lazy_glIsObjectBufferATI(GLuint buffer) {if (GLeeInit()) return glIsObjectBufferATI(buffer); return (GLboolean)0;} GLEEPFNGLISOBJECTBUFFERATIPROC GLeeFuncPtr_glIsObjectBufferATI=GLee_Lazy_glIsObjectBufferATI; #endif #ifndef GLEE_C_DEFINED_glUpdateObjectBufferATI #define GLEE_C_DEFINED_glUpdateObjectBufferATI void __stdcall GLee_Lazy_glUpdateObjectBufferATI(GLuint buffer, GLuint offset, GLsizei size, const GLvoid * pointer, GLenum preserve) {if (GLeeInit()) glUpdateObjectBufferATI(buffer, offset, size, pointer, preserve);} GLEEPFNGLUPDATEOBJECTBUFFERATIPROC GLeeFuncPtr_glUpdateObjectBufferATI=GLee_Lazy_glUpdateObjectBufferATI; #endif #ifndef GLEE_C_DEFINED_glGetObjectBufferfvATI #define GLEE_C_DEFINED_glGetObjectBufferfvATI void __stdcall GLee_Lazy_glGetObjectBufferfvATI(GLuint buffer, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetObjectBufferfvATI(buffer, pname, params);} GLEEPFNGLGETOBJECTBUFFERFVATIPROC GLeeFuncPtr_glGetObjectBufferfvATI=GLee_Lazy_glGetObjectBufferfvATI; #endif #ifndef GLEE_C_DEFINED_glGetObjectBufferivATI #define GLEE_C_DEFINED_glGetObjectBufferivATI void __stdcall GLee_Lazy_glGetObjectBufferivATI(GLuint buffer, GLenum pname, GLint * params) {if (GLeeInit()) glGetObjectBufferivATI(buffer, pname, params);} GLEEPFNGLGETOBJECTBUFFERIVATIPROC GLeeFuncPtr_glGetObjectBufferivATI=GLee_Lazy_glGetObjectBufferivATI; #endif #ifndef GLEE_C_DEFINED_glFreeObjectBufferATI #define GLEE_C_DEFINED_glFreeObjectBufferATI void __stdcall GLee_Lazy_glFreeObjectBufferATI(GLuint buffer) {if (GLeeInit()) glFreeObjectBufferATI(buffer);} GLEEPFNGLFREEOBJECTBUFFERATIPROC GLeeFuncPtr_glFreeObjectBufferATI=GLee_Lazy_glFreeObjectBufferATI; #endif #ifndef GLEE_C_DEFINED_glArrayObjectATI #define GLEE_C_DEFINED_glArrayObjectATI void __stdcall GLee_Lazy_glArrayObjectATI(GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset) {if (GLeeInit()) glArrayObjectATI(array, size, type, stride, buffer, offset);} GLEEPFNGLARRAYOBJECTATIPROC GLeeFuncPtr_glArrayObjectATI=GLee_Lazy_glArrayObjectATI; #endif #ifndef GLEE_C_DEFINED_glGetArrayObjectfvATI #define GLEE_C_DEFINED_glGetArrayObjectfvATI void __stdcall GLee_Lazy_glGetArrayObjectfvATI(GLenum array, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetArrayObjectfvATI(array, pname, params);} GLEEPFNGLGETARRAYOBJECTFVATIPROC GLeeFuncPtr_glGetArrayObjectfvATI=GLee_Lazy_glGetArrayObjectfvATI; #endif #ifndef GLEE_C_DEFINED_glGetArrayObjectivATI #define GLEE_C_DEFINED_glGetArrayObjectivATI void __stdcall GLee_Lazy_glGetArrayObjectivATI(GLenum array, GLenum pname, GLint * params) {if (GLeeInit()) glGetArrayObjectivATI(array, pname, params);} GLEEPFNGLGETARRAYOBJECTIVATIPROC GLeeFuncPtr_glGetArrayObjectivATI=GLee_Lazy_glGetArrayObjectivATI; #endif #ifndef GLEE_C_DEFINED_glVariantArrayObjectATI #define GLEE_C_DEFINED_glVariantArrayObjectATI void __stdcall GLee_Lazy_glVariantArrayObjectATI(GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset) {if (GLeeInit()) glVariantArrayObjectATI(id, type, stride, buffer, offset);} GLEEPFNGLVARIANTARRAYOBJECTATIPROC GLeeFuncPtr_glVariantArrayObjectATI=GLee_Lazy_glVariantArrayObjectATI; #endif #ifndef GLEE_C_DEFINED_glGetVariantArrayObjectfvATI #define GLEE_C_DEFINED_glGetVariantArrayObjectfvATI void __stdcall GLee_Lazy_glGetVariantArrayObjectfvATI(GLuint id, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetVariantArrayObjectfvATI(id, pname, params);} GLEEPFNGLGETVARIANTARRAYOBJECTFVATIPROC GLeeFuncPtr_glGetVariantArrayObjectfvATI=GLee_Lazy_glGetVariantArrayObjectfvATI; #endif #ifndef GLEE_C_DEFINED_glGetVariantArrayObjectivATI #define GLEE_C_DEFINED_glGetVariantArrayObjectivATI void __stdcall GLee_Lazy_glGetVariantArrayObjectivATI(GLuint id, GLenum pname, GLint * params) {if (GLeeInit()) glGetVariantArrayObjectivATI(id, pname, params);} GLEEPFNGLGETVARIANTARRAYOBJECTIVATIPROC GLeeFuncPtr_glGetVariantArrayObjectivATI=GLee_Lazy_glGetVariantArrayObjectivATI; #endif #endif /* GL_EXT_vertex_shader */ #ifdef __GLEE_GL_EXT_vertex_shader #ifndef GLEE_C_DEFINED_glBeginVertexShaderEXT #define GLEE_C_DEFINED_glBeginVertexShaderEXT void __stdcall GLee_Lazy_glBeginVertexShaderEXT(void) {if (GLeeInit()) glBeginVertexShaderEXT();} GLEEPFNGLBEGINVERTEXSHADEREXTPROC GLeeFuncPtr_glBeginVertexShaderEXT=GLee_Lazy_glBeginVertexShaderEXT; #endif #ifndef GLEE_C_DEFINED_glEndVertexShaderEXT #define GLEE_C_DEFINED_glEndVertexShaderEXT void __stdcall GLee_Lazy_glEndVertexShaderEXT(void) {if (GLeeInit()) glEndVertexShaderEXT();} GLEEPFNGLENDVERTEXSHADEREXTPROC GLeeFuncPtr_glEndVertexShaderEXT=GLee_Lazy_glEndVertexShaderEXT; #endif #ifndef GLEE_C_DEFINED_glBindVertexShaderEXT #define GLEE_C_DEFINED_glBindVertexShaderEXT void __stdcall GLee_Lazy_glBindVertexShaderEXT(GLuint id) {if (GLeeInit()) glBindVertexShaderEXT(id);} GLEEPFNGLBINDVERTEXSHADEREXTPROC GLeeFuncPtr_glBindVertexShaderEXT=GLee_Lazy_glBindVertexShaderEXT; #endif #ifndef GLEE_C_DEFINED_glGenVertexShadersEXT #define GLEE_C_DEFINED_glGenVertexShadersEXT GLuint __stdcall GLee_Lazy_glGenVertexShadersEXT(GLuint range) {if (GLeeInit()) return glGenVertexShadersEXT(range); return (GLuint)0;} GLEEPFNGLGENVERTEXSHADERSEXTPROC GLeeFuncPtr_glGenVertexShadersEXT=GLee_Lazy_glGenVertexShadersEXT; #endif #ifndef GLEE_C_DEFINED_glDeleteVertexShaderEXT #define GLEE_C_DEFINED_glDeleteVertexShaderEXT void __stdcall GLee_Lazy_glDeleteVertexShaderEXT(GLuint id) {if (GLeeInit()) glDeleteVertexShaderEXT(id);} GLEEPFNGLDELETEVERTEXSHADEREXTPROC GLeeFuncPtr_glDeleteVertexShaderEXT=GLee_Lazy_glDeleteVertexShaderEXT; #endif #ifndef GLEE_C_DEFINED_glShaderOp1EXT #define GLEE_C_DEFINED_glShaderOp1EXT void __stdcall GLee_Lazy_glShaderOp1EXT(GLenum op, GLuint res, GLuint arg1) {if (GLeeInit()) glShaderOp1EXT(op, res, arg1);} GLEEPFNGLSHADEROP1EXTPROC GLeeFuncPtr_glShaderOp1EXT=GLee_Lazy_glShaderOp1EXT; #endif #ifndef GLEE_C_DEFINED_glShaderOp2EXT #define GLEE_C_DEFINED_glShaderOp2EXT void __stdcall GLee_Lazy_glShaderOp2EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2) {if (GLeeInit()) glShaderOp2EXT(op, res, arg1, arg2);} GLEEPFNGLSHADEROP2EXTPROC GLeeFuncPtr_glShaderOp2EXT=GLee_Lazy_glShaderOp2EXT; #endif #ifndef GLEE_C_DEFINED_glShaderOp3EXT #define GLEE_C_DEFINED_glShaderOp3EXT void __stdcall GLee_Lazy_glShaderOp3EXT(GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3) {if (GLeeInit()) glShaderOp3EXT(op, res, arg1, arg2, arg3);} GLEEPFNGLSHADEROP3EXTPROC GLeeFuncPtr_glShaderOp3EXT=GLee_Lazy_glShaderOp3EXT; #endif #ifndef GLEE_C_DEFINED_glSwizzleEXT #define GLEE_C_DEFINED_glSwizzleEXT void __stdcall GLee_Lazy_glSwizzleEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW) {if (GLeeInit()) glSwizzleEXT(res, in, outX, outY, outZ, outW);} GLEEPFNGLSWIZZLEEXTPROC GLeeFuncPtr_glSwizzleEXT=GLee_Lazy_glSwizzleEXT; #endif #ifndef GLEE_C_DEFINED_glWriteMaskEXT #define GLEE_C_DEFINED_glWriteMaskEXT void __stdcall GLee_Lazy_glWriteMaskEXT(GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW) {if (GLeeInit()) glWriteMaskEXT(res, in, outX, outY, outZ, outW);} GLEEPFNGLWRITEMASKEXTPROC GLeeFuncPtr_glWriteMaskEXT=GLee_Lazy_glWriteMaskEXT; #endif #ifndef GLEE_C_DEFINED_glInsertComponentEXT #define GLEE_C_DEFINED_glInsertComponentEXT void __stdcall GLee_Lazy_glInsertComponentEXT(GLuint res, GLuint src, GLuint num) {if (GLeeInit()) glInsertComponentEXT(res, src, num);} GLEEPFNGLINSERTCOMPONENTEXTPROC GLeeFuncPtr_glInsertComponentEXT=GLee_Lazy_glInsertComponentEXT; #endif #ifndef GLEE_C_DEFINED_glExtractComponentEXT #define GLEE_C_DEFINED_glExtractComponentEXT void __stdcall GLee_Lazy_glExtractComponentEXT(GLuint res, GLuint src, GLuint num) {if (GLeeInit()) glExtractComponentEXT(res, src, num);} GLEEPFNGLEXTRACTCOMPONENTEXTPROC GLeeFuncPtr_glExtractComponentEXT=GLee_Lazy_glExtractComponentEXT; #endif #ifndef GLEE_C_DEFINED_glGenSymbolsEXT #define GLEE_C_DEFINED_glGenSymbolsEXT GLuint __stdcall GLee_Lazy_glGenSymbolsEXT(GLenum datatype, GLenum storagetype, GLenum range, GLuint components) {if (GLeeInit()) return glGenSymbolsEXT(datatype, storagetype, range, components); return (GLuint)0;} GLEEPFNGLGENSYMBOLSEXTPROC GLeeFuncPtr_glGenSymbolsEXT=GLee_Lazy_glGenSymbolsEXT; #endif #ifndef GLEE_C_DEFINED_glSetInvariantEXT #define GLEE_C_DEFINED_glSetInvariantEXT void __stdcall GLee_Lazy_glSetInvariantEXT(GLuint id, GLenum type, const GLvoid * addr) {if (GLeeInit()) glSetInvariantEXT(id, type, addr);} GLEEPFNGLSETINVARIANTEXTPROC GLeeFuncPtr_glSetInvariantEXT=GLee_Lazy_glSetInvariantEXT; #endif #ifndef GLEE_C_DEFINED_glSetLocalConstantEXT #define GLEE_C_DEFINED_glSetLocalConstantEXT void __stdcall GLee_Lazy_glSetLocalConstantEXT(GLuint id, GLenum type, const GLvoid * addr) {if (GLeeInit()) glSetLocalConstantEXT(id, type, addr);} GLEEPFNGLSETLOCALCONSTANTEXTPROC GLeeFuncPtr_glSetLocalConstantEXT=GLee_Lazy_glSetLocalConstantEXT; #endif #ifndef GLEE_C_DEFINED_glVariantbvEXT #define GLEE_C_DEFINED_glVariantbvEXT void __stdcall GLee_Lazy_glVariantbvEXT(GLuint id, const GLbyte * addr) {if (GLeeInit()) glVariantbvEXT(id, addr);} GLEEPFNGLVARIANTBVEXTPROC GLeeFuncPtr_glVariantbvEXT=GLee_Lazy_glVariantbvEXT; #endif #ifndef GLEE_C_DEFINED_glVariantsvEXT #define GLEE_C_DEFINED_glVariantsvEXT void __stdcall GLee_Lazy_glVariantsvEXT(GLuint id, const GLshort * addr) {if (GLeeInit()) glVariantsvEXT(id, addr);} GLEEPFNGLVARIANTSVEXTPROC GLeeFuncPtr_glVariantsvEXT=GLee_Lazy_glVariantsvEXT; #endif #ifndef GLEE_C_DEFINED_glVariantivEXT #define GLEE_C_DEFINED_glVariantivEXT void __stdcall GLee_Lazy_glVariantivEXT(GLuint id, const GLint * addr) {if (GLeeInit()) glVariantivEXT(id, addr);} GLEEPFNGLVARIANTIVEXTPROC GLeeFuncPtr_glVariantivEXT=GLee_Lazy_glVariantivEXT; #endif #ifndef GLEE_C_DEFINED_glVariantfvEXT #define GLEE_C_DEFINED_glVariantfvEXT void __stdcall GLee_Lazy_glVariantfvEXT(GLuint id, const GLfloat * addr) {if (GLeeInit()) glVariantfvEXT(id, addr);} GLEEPFNGLVARIANTFVEXTPROC GLeeFuncPtr_glVariantfvEXT=GLee_Lazy_glVariantfvEXT; #endif #ifndef GLEE_C_DEFINED_glVariantdvEXT #define GLEE_C_DEFINED_glVariantdvEXT void __stdcall GLee_Lazy_glVariantdvEXT(GLuint id, const GLdouble * addr) {if (GLeeInit()) glVariantdvEXT(id, addr);} GLEEPFNGLVARIANTDVEXTPROC GLeeFuncPtr_glVariantdvEXT=GLee_Lazy_glVariantdvEXT; #endif #ifndef GLEE_C_DEFINED_glVariantubvEXT #define GLEE_C_DEFINED_glVariantubvEXT void __stdcall GLee_Lazy_glVariantubvEXT(GLuint id, const GLubyte * addr) {if (GLeeInit()) glVariantubvEXT(id, addr);} GLEEPFNGLVARIANTUBVEXTPROC GLeeFuncPtr_glVariantubvEXT=GLee_Lazy_glVariantubvEXT; #endif #ifndef GLEE_C_DEFINED_glVariantusvEXT #define GLEE_C_DEFINED_glVariantusvEXT void __stdcall GLee_Lazy_glVariantusvEXT(GLuint id, const GLushort * addr) {if (GLeeInit()) glVariantusvEXT(id, addr);} GLEEPFNGLVARIANTUSVEXTPROC GLeeFuncPtr_glVariantusvEXT=GLee_Lazy_glVariantusvEXT; #endif #ifndef GLEE_C_DEFINED_glVariantuivEXT #define GLEE_C_DEFINED_glVariantuivEXT void __stdcall GLee_Lazy_glVariantuivEXT(GLuint id, const GLuint * addr) {if (GLeeInit()) glVariantuivEXT(id, addr);} GLEEPFNGLVARIANTUIVEXTPROC GLeeFuncPtr_glVariantuivEXT=GLee_Lazy_glVariantuivEXT; #endif #ifndef GLEE_C_DEFINED_glVariantPointerEXT #define GLEE_C_DEFINED_glVariantPointerEXT void __stdcall GLee_Lazy_glVariantPointerEXT(GLuint id, GLenum type, GLuint stride, const GLvoid * addr) {if (GLeeInit()) glVariantPointerEXT(id, type, stride, addr);} GLEEPFNGLVARIANTPOINTEREXTPROC GLeeFuncPtr_glVariantPointerEXT=GLee_Lazy_glVariantPointerEXT; #endif #ifndef GLEE_C_DEFINED_glEnableVariantClientStateEXT #define GLEE_C_DEFINED_glEnableVariantClientStateEXT void __stdcall GLee_Lazy_glEnableVariantClientStateEXT(GLuint id) {if (GLeeInit()) glEnableVariantClientStateEXT(id);} GLEEPFNGLENABLEVARIANTCLIENTSTATEEXTPROC GLeeFuncPtr_glEnableVariantClientStateEXT=GLee_Lazy_glEnableVariantClientStateEXT; #endif #ifndef GLEE_C_DEFINED_glDisableVariantClientStateEXT #define GLEE_C_DEFINED_glDisableVariantClientStateEXT void __stdcall GLee_Lazy_glDisableVariantClientStateEXT(GLuint id) {if (GLeeInit()) glDisableVariantClientStateEXT(id);} GLEEPFNGLDISABLEVARIANTCLIENTSTATEEXTPROC GLeeFuncPtr_glDisableVariantClientStateEXT=GLee_Lazy_glDisableVariantClientStateEXT; #endif #ifndef GLEE_C_DEFINED_glBindLightParameterEXT #define GLEE_C_DEFINED_glBindLightParameterEXT GLuint __stdcall GLee_Lazy_glBindLightParameterEXT(GLenum light, GLenum value) {if (GLeeInit()) return glBindLightParameterEXT(light, value); return (GLuint)0;} GLEEPFNGLBINDLIGHTPARAMETEREXTPROC GLeeFuncPtr_glBindLightParameterEXT=GLee_Lazy_glBindLightParameterEXT; #endif #ifndef GLEE_C_DEFINED_glBindMaterialParameterEXT #define GLEE_C_DEFINED_glBindMaterialParameterEXT GLuint __stdcall GLee_Lazy_glBindMaterialParameterEXT(GLenum face, GLenum value) {if (GLeeInit()) return glBindMaterialParameterEXT(face, value); return (GLuint)0;} GLEEPFNGLBINDMATERIALPARAMETEREXTPROC GLeeFuncPtr_glBindMaterialParameterEXT=GLee_Lazy_glBindMaterialParameterEXT; #endif #ifndef GLEE_C_DEFINED_glBindTexGenParameterEXT #define GLEE_C_DEFINED_glBindTexGenParameterEXT GLuint __stdcall GLee_Lazy_glBindTexGenParameterEXT(GLenum unit, GLenum coord, GLenum value) {if (GLeeInit()) return glBindTexGenParameterEXT(unit, coord, value); return (GLuint)0;} GLEEPFNGLBINDTEXGENPARAMETEREXTPROC GLeeFuncPtr_glBindTexGenParameterEXT=GLee_Lazy_glBindTexGenParameterEXT; #endif #ifndef GLEE_C_DEFINED_glBindTextureUnitParameterEXT #define GLEE_C_DEFINED_glBindTextureUnitParameterEXT GLuint __stdcall GLee_Lazy_glBindTextureUnitParameterEXT(GLenum unit, GLenum value) {if (GLeeInit()) return glBindTextureUnitParameterEXT(unit, value); return (GLuint)0;} GLEEPFNGLBINDTEXTUREUNITPARAMETEREXTPROC GLeeFuncPtr_glBindTextureUnitParameterEXT=GLee_Lazy_glBindTextureUnitParameterEXT; #endif #ifndef GLEE_C_DEFINED_glBindParameterEXT #define GLEE_C_DEFINED_glBindParameterEXT GLuint __stdcall GLee_Lazy_glBindParameterEXT(GLenum value) {if (GLeeInit()) return glBindParameterEXT(value); return (GLuint)0;} GLEEPFNGLBINDPARAMETEREXTPROC GLeeFuncPtr_glBindParameterEXT=GLee_Lazy_glBindParameterEXT; #endif #ifndef GLEE_C_DEFINED_glIsVariantEnabledEXT #define GLEE_C_DEFINED_glIsVariantEnabledEXT GLboolean __stdcall GLee_Lazy_glIsVariantEnabledEXT(GLuint id, GLenum cap) {if (GLeeInit()) return glIsVariantEnabledEXT(id, cap); return (GLboolean)0;} GLEEPFNGLISVARIANTENABLEDEXTPROC GLeeFuncPtr_glIsVariantEnabledEXT=GLee_Lazy_glIsVariantEnabledEXT; #endif #ifndef GLEE_C_DEFINED_glGetVariantBooleanvEXT #define GLEE_C_DEFINED_glGetVariantBooleanvEXT void __stdcall GLee_Lazy_glGetVariantBooleanvEXT(GLuint id, GLenum value, GLboolean * data) {if (GLeeInit()) glGetVariantBooleanvEXT(id, value, data);} GLEEPFNGLGETVARIANTBOOLEANVEXTPROC GLeeFuncPtr_glGetVariantBooleanvEXT=GLee_Lazy_glGetVariantBooleanvEXT; #endif #ifndef GLEE_C_DEFINED_glGetVariantIntegervEXT #define GLEE_C_DEFINED_glGetVariantIntegervEXT void __stdcall GLee_Lazy_glGetVariantIntegervEXT(GLuint id, GLenum value, GLint * data) {if (GLeeInit()) glGetVariantIntegervEXT(id, value, data);} GLEEPFNGLGETVARIANTINTEGERVEXTPROC GLeeFuncPtr_glGetVariantIntegervEXT=GLee_Lazy_glGetVariantIntegervEXT; #endif #ifndef GLEE_C_DEFINED_glGetVariantFloatvEXT #define GLEE_C_DEFINED_glGetVariantFloatvEXT void __stdcall GLee_Lazy_glGetVariantFloatvEXT(GLuint id, GLenum value, GLfloat * data) {if (GLeeInit()) glGetVariantFloatvEXT(id, value, data);} GLEEPFNGLGETVARIANTFLOATVEXTPROC GLeeFuncPtr_glGetVariantFloatvEXT=GLee_Lazy_glGetVariantFloatvEXT; #endif #ifndef GLEE_C_DEFINED_glGetVariantPointervEXT #define GLEE_C_DEFINED_glGetVariantPointervEXT void __stdcall GLee_Lazy_glGetVariantPointervEXT(GLuint id, GLenum value, GLvoid* * data) {if (GLeeInit()) glGetVariantPointervEXT(id, value, data);} GLEEPFNGLGETVARIANTPOINTERVEXTPROC GLeeFuncPtr_glGetVariantPointervEXT=GLee_Lazy_glGetVariantPointervEXT; #endif #ifndef GLEE_C_DEFINED_glGetInvariantBooleanvEXT #define GLEE_C_DEFINED_glGetInvariantBooleanvEXT void __stdcall GLee_Lazy_glGetInvariantBooleanvEXT(GLuint id, GLenum value, GLboolean * data) {if (GLeeInit()) glGetInvariantBooleanvEXT(id, value, data);} GLEEPFNGLGETINVARIANTBOOLEANVEXTPROC GLeeFuncPtr_glGetInvariantBooleanvEXT=GLee_Lazy_glGetInvariantBooleanvEXT; #endif #ifndef GLEE_C_DEFINED_glGetInvariantIntegervEXT #define GLEE_C_DEFINED_glGetInvariantIntegervEXT void __stdcall GLee_Lazy_glGetInvariantIntegervEXT(GLuint id, GLenum value, GLint * data) {if (GLeeInit()) glGetInvariantIntegervEXT(id, value, data);} GLEEPFNGLGETINVARIANTINTEGERVEXTPROC GLeeFuncPtr_glGetInvariantIntegervEXT=GLee_Lazy_glGetInvariantIntegervEXT; #endif #ifndef GLEE_C_DEFINED_glGetInvariantFloatvEXT #define GLEE_C_DEFINED_glGetInvariantFloatvEXT void __stdcall GLee_Lazy_glGetInvariantFloatvEXT(GLuint id, GLenum value, GLfloat * data) {if (GLeeInit()) glGetInvariantFloatvEXT(id, value, data);} GLEEPFNGLGETINVARIANTFLOATVEXTPROC GLeeFuncPtr_glGetInvariantFloatvEXT=GLee_Lazy_glGetInvariantFloatvEXT; #endif #ifndef GLEE_C_DEFINED_glGetLocalConstantBooleanvEXT #define GLEE_C_DEFINED_glGetLocalConstantBooleanvEXT void __stdcall GLee_Lazy_glGetLocalConstantBooleanvEXT(GLuint id, GLenum value, GLboolean * data) {if (GLeeInit()) glGetLocalConstantBooleanvEXT(id, value, data);} GLEEPFNGLGETLOCALCONSTANTBOOLEANVEXTPROC GLeeFuncPtr_glGetLocalConstantBooleanvEXT=GLee_Lazy_glGetLocalConstantBooleanvEXT; #endif #ifndef GLEE_C_DEFINED_glGetLocalConstantIntegervEXT #define GLEE_C_DEFINED_glGetLocalConstantIntegervEXT void __stdcall GLee_Lazy_glGetLocalConstantIntegervEXT(GLuint id, GLenum value, GLint * data) {if (GLeeInit()) glGetLocalConstantIntegervEXT(id, value, data);} GLEEPFNGLGETLOCALCONSTANTINTEGERVEXTPROC GLeeFuncPtr_glGetLocalConstantIntegervEXT=GLee_Lazy_glGetLocalConstantIntegervEXT; #endif #ifndef GLEE_C_DEFINED_glGetLocalConstantFloatvEXT #define GLEE_C_DEFINED_glGetLocalConstantFloatvEXT void __stdcall GLee_Lazy_glGetLocalConstantFloatvEXT(GLuint id, GLenum value, GLfloat * data) {if (GLeeInit()) glGetLocalConstantFloatvEXT(id, value, data);} GLEEPFNGLGETLOCALCONSTANTFLOATVEXTPROC GLeeFuncPtr_glGetLocalConstantFloatvEXT=GLee_Lazy_glGetLocalConstantFloatvEXT; #endif #endif /* GL_ATI_vertex_streams */ #ifdef __GLEE_GL_ATI_vertex_streams #ifndef GLEE_C_DEFINED_glVertexStream1sATI #define GLEE_C_DEFINED_glVertexStream1sATI void __stdcall GLee_Lazy_glVertexStream1sATI(GLenum stream, GLshort x) {if (GLeeInit()) glVertexStream1sATI(stream, x);} GLEEPFNGLVERTEXSTREAM1SATIPROC GLeeFuncPtr_glVertexStream1sATI=GLee_Lazy_glVertexStream1sATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream1svATI #define GLEE_C_DEFINED_glVertexStream1svATI void __stdcall GLee_Lazy_glVertexStream1svATI(GLenum stream, const GLshort * coords) {if (GLeeInit()) glVertexStream1svATI(stream, coords);} GLEEPFNGLVERTEXSTREAM1SVATIPROC GLeeFuncPtr_glVertexStream1svATI=GLee_Lazy_glVertexStream1svATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream1iATI #define GLEE_C_DEFINED_glVertexStream1iATI void __stdcall GLee_Lazy_glVertexStream1iATI(GLenum stream, GLint x) {if (GLeeInit()) glVertexStream1iATI(stream, x);} GLEEPFNGLVERTEXSTREAM1IATIPROC GLeeFuncPtr_glVertexStream1iATI=GLee_Lazy_glVertexStream1iATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream1ivATI #define GLEE_C_DEFINED_glVertexStream1ivATI void __stdcall GLee_Lazy_glVertexStream1ivATI(GLenum stream, const GLint * coords) {if (GLeeInit()) glVertexStream1ivATI(stream, coords);} GLEEPFNGLVERTEXSTREAM1IVATIPROC GLeeFuncPtr_glVertexStream1ivATI=GLee_Lazy_glVertexStream1ivATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream1fATI #define GLEE_C_DEFINED_glVertexStream1fATI void __stdcall GLee_Lazy_glVertexStream1fATI(GLenum stream, GLfloat x) {if (GLeeInit()) glVertexStream1fATI(stream, x);} GLEEPFNGLVERTEXSTREAM1FATIPROC GLeeFuncPtr_glVertexStream1fATI=GLee_Lazy_glVertexStream1fATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream1fvATI #define GLEE_C_DEFINED_glVertexStream1fvATI void __stdcall GLee_Lazy_glVertexStream1fvATI(GLenum stream, const GLfloat * coords) {if (GLeeInit()) glVertexStream1fvATI(stream, coords);} GLEEPFNGLVERTEXSTREAM1FVATIPROC GLeeFuncPtr_glVertexStream1fvATI=GLee_Lazy_glVertexStream1fvATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream1dATI #define GLEE_C_DEFINED_glVertexStream1dATI void __stdcall GLee_Lazy_glVertexStream1dATI(GLenum stream, GLdouble x) {if (GLeeInit()) glVertexStream1dATI(stream, x);} GLEEPFNGLVERTEXSTREAM1DATIPROC GLeeFuncPtr_glVertexStream1dATI=GLee_Lazy_glVertexStream1dATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream1dvATI #define GLEE_C_DEFINED_glVertexStream1dvATI void __stdcall GLee_Lazy_glVertexStream1dvATI(GLenum stream, const GLdouble * coords) {if (GLeeInit()) glVertexStream1dvATI(stream, coords);} GLEEPFNGLVERTEXSTREAM1DVATIPROC GLeeFuncPtr_glVertexStream1dvATI=GLee_Lazy_glVertexStream1dvATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream2sATI #define GLEE_C_DEFINED_glVertexStream2sATI void __stdcall GLee_Lazy_glVertexStream2sATI(GLenum stream, GLshort x, GLshort y) {if (GLeeInit()) glVertexStream2sATI(stream, x, y);} GLEEPFNGLVERTEXSTREAM2SATIPROC GLeeFuncPtr_glVertexStream2sATI=GLee_Lazy_glVertexStream2sATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream2svATI #define GLEE_C_DEFINED_glVertexStream2svATI void __stdcall GLee_Lazy_glVertexStream2svATI(GLenum stream, const GLshort * coords) {if (GLeeInit()) glVertexStream2svATI(stream, coords);} GLEEPFNGLVERTEXSTREAM2SVATIPROC GLeeFuncPtr_glVertexStream2svATI=GLee_Lazy_glVertexStream2svATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream2iATI #define GLEE_C_DEFINED_glVertexStream2iATI void __stdcall GLee_Lazy_glVertexStream2iATI(GLenum stream, GLint x, GLint y) {if (GLeeInit()) glVertexStream2iATI(stream, x, y);} GLEEPFNGLVERTEXSTREAM2IATIPROC GLeeFuncPtr_glVertexStream2iATI=GLee_Lazy_glVertexStream2iATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream2ivATI #define GLEE_C_DEFINED_glVertexStream2ivATI void __stdcall GLee_Lazy_glVertexStream2ivATI(GLenum stream, const GLint * coords) {if (GLeeInit()) glVertexStream2ivATI(stream, coords);} GLEEPFNGLVERTEXSTREAM2IVATIPROC GLeeFuncPtr_glVertexStream2ivATI=GLee_Lazy_glVertexStream2ivATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream2fATI #define GLEE_C_DEFINED_glVertexStream2fATI void __stdcall GLee_Lazy_glVertexStream2fATI(GLenum stream, GLfloat x, GLfloat y) {if (GLeeInit()) glVertexStream2fATI(stream, x, y);} GLEEPFNGLVERTEXSTREAM2FATIPROC GLeeFuncPtr_glVertexStream2fATI=GLee_Lazy_glVertexStream2fATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream2fvATI #define GLEE_C_DEFINED_glVertexStream2fvATI void __stdcall GLee_Lazy_glVertexStream2fvATI(GLenum stream, const GLfloat * coords) {if (GLeeInit()) glVertexStream2fvATI(stream, coords);} GLEEPFNGLVERTEXSTREAM2FVATIPROC GLeeFuncPtr_glVertexStream2fvATI=GLee_Lazy_glVertexStream2fvATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream2dATI #define GLEE_C_DEFINED_glVertexStream2dATI void __stdcall GLee_Lazy_glVertexStream2dATI(GLenum stream, GLdouble x, GLdouble y) {if (GLeeInit()) glVertexStream2dATI(stream, x, y);} GLEEPFNGLVERTEXSTREAM2DATIPROC GLeeFuncPtr_glVertexStream2dATI=GLee_Lazy_glVertexStream2dATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream2dvATI #define GLEE_C_DEFINED_glVertexStream2dvATI void __stdcall GLee_Lazy_glVertexStream2dvATI(GLenum stream, const GLdouble * coords) {if (GLeeInit()) glVertexStream2dvATI(stream, coords);} GLEEPFNGLVERTEXSTREAM2DVATIPROC GLeeFuncPtr_glVertexStream2dvATI=GLee_Lazy_glVertexStream2dvATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream3sATI #define GLEE_C_DEFINED_glVertexStream3sATI void __stdcall GLee_Lazy_glVertexStream3sATI(GLenum stream, GLshort x, GLshort y, GLshort z) {if (GLeeInit()) glVertexStream3sATI(stream, x, y, z);} GLEEPFNGLVERTEXSTREAM3SATIPROC GLeeFuncPtr_glVertexStream3sATI=GLee_Lazy_glVertexStream3sATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream3svATI #define GLEE_C_DEFINED_glVertexStream3svATI void __stdcall GLee_Lazy_glVertexStream3svATI(GLenum stream, const GLshort * coords) {if (GLeeInit()) glVertexStream3svATI(stream, coords);} GLEEPFNGLVERTEXSTREAM3SVATIPROC GLeeFuncPtr_glVertexStream3svATI=GLee_Lazy_glVertexStream3svATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream3iATI #define GLEE_C_DEFINED_glVertexStream3iATI void __stdcall GLee_Lazy_glVertexStream3iATI(GLenum stream, GLint x, GLint y, GLint z) {if (GLeeInit()) glVertexStream3iATI(stream, x, y, z);} GLEEPFNGLVERTEXSTREAM3IATIPROC GLeeFuncPtr_glVertexStream3iATI=GLee_Lazy_glVertexStream3iATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream3ivATI #define GLEE_C_DEFINED_glVertexStream3ivATI void __stdcall GLee_Lazy_glVertexStream3ivATI(GLenum stream, const GLint * coords) {if (GLeeInit()) glVertexStream3ivATI(stream, coords);} GLEEPFNGLVERTEXSTREAM3IVATIPROC GLeeFuncPtr_glVertexStream3ivATI=GLee_Lazy_glVertexStream3ivATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream3fATI #define GLEE_C_DEFINED_glVertexStream3fATI void __stdcall GLee_Lazy_glVertexStream3fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glVertexStream3fATI(stream, x, y, z);} GLEEPFNGLVERTEXSTREAM3FATIPROC GLeeFuncPtr_glVertexStream3fATI=GLee_Lazy_glVertexStream3fATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream3fvATI #define GLEE_C_DEFINED_glVertexStream3fvATI void __stdcall GLee_Lazy_glVertexStream3fvATI(GLenum stream, const GLfloat * coords) {if (GLeeInit()) glVertexStream3fvATI(stream, coords);} GLEEPFNGLVERTEXSTREAM3FVATIPROC GLeeFuncPtr_glVertexStream3fvATI=GLee_Lazy_glVertexStream3fvATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream3dATI #define GLEE_C_DEFINED_glVertexStream3dATI void __stdcall GLee_Lazy_glVertexStream3dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glVertexStream3dATI(stream, x, y, z);} GLEEPFNGLVERTEXSTREAM3DATIPROC GLeeFuncPtr_glVertexStream3dATI=GLee_Lazy_glVertexStream3dATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream3dvATI #define GLEE_C_DEFINED_glVertexStream3dvATI void __stdcall GLee_Lazy_glVertexStream3dvATI(GLenum stream, const GLdouble * coords) {if (GLeeInit()) glVertexStream3dvATI(stream, coords);} GLEEPFNGLVERTEXSTREAM3DVATIPROC GLeeFuncPtr_glVertexStream3dvATI=GLee_Lazy_glVertexStream3dvATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream4sATI #define GLEE_C_DEFINED_glVertexStream4sATI void __stdcall GLee_Lazy_glVertexStream4sATI(GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w) {if (GLeeInit()) glVertexStream4sATI(stream, x, y, z, w);} GLEEPFNGLVERTEXSTREAM4SATIPROC GLeeFuncPtr_glVertexStream4sATI=GLee_Lazy_glVertexStream4sATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream4svATI #define GLEE_C_DEFINED_glVertexStream4svATI void __stdcall GLee_Lazy_glVertexStream4svATI(GLenum stream, const GLshort * coords) {if (GLeeInit()) glVertexStream4svATI(stream, coords);} GLEEPFNGLVERTEXSTREAM4SVATIPROC GLeeFuncPtr_glVertexStream4svATI=GLee_Lazy_glVertexStream4svATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream4iATI #define GLEE_C_DEFINED_glVertexStream4iATI void __stdcall GLee_Lazy_glVertexStream4iATI(GLenum stream, GLint x, GLint y, GLint z, GLint w) {if (GLeeInit()) glVertexStream4iATI(stream, x, y, z, w);} GLEEPFNGLVERTEXSTREAM4IATIPROC GLeeFuncPtr_glVertexStream4iATI=GLee_Lazy_glVertexStream4iATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream4ivATI #define GLEE_C_DEFINED_glVertexStream4ivATI void __stdcall GLee_Lazy_glVertexStream4ivATI(GLenum stream, const GLint * coords) {if (GLeeInit()) glVertexStream4ivATI(stream, coords);} GLEEPFNGLVERTEXSTREAM4IVATIPROC GLeeFuncPtr_glVertexStream4ivATI=GLee_Lazy_glVertexStream4ivATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream4fATI #define GLEE_C_DEFINED_glVertexStream4fATI void __stdcall GLee_Lazy_glVertexStream4fATI(GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glVertexStream4fATI(stream, x, y, z, w);} GLEEPFNGLVERTEXSTREAM4FATIPROC GLeeFuncPtr_glVertexStream4fATI=GLee_Lazy_glVertexStream4fATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream4fvATI #define GLEE_C_DEFINED_glVertexStream4fvATI void __stdcall GLee_Lazy_glVertexStream4fvATI(GLenum stream, const GLfloat * coords) {if (GLeeInit()) glVertexStream4fvATI(stream, coords);} GLEEPFNGLVERTEXSTREAM4FVATIPROC GLeeFuncPtr_glVertexStream4fvATI=GLee_Lazy_glVertexStream4fvATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream4dATI #define GLEE_C_DEFINED_glVertexStream4dATI void __stdcall GLee_Lazy_glVertexStream4dATI(GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glVertexStream4dATI(stream, x, y, z, w);} GLEEPFNGLVERTEXSTREAM4DATIPROC GLeeFuncPtr_glVertexStream4dATI=GLee_Lazy_glVertexStream4dATI; #endif #ifndef GLEE_C_DEFINED_glVertexStream4dvATI #define GLEE_C_DEFINED_glVertexStream4dvATI void __stdcall GLee_Lazy_glVertexStream4dvATI(GLenum stream, const GLdouble * coords) {if (GLeeInit()) glVertexStream4dvATI(stream, coords);} GLEEPFNGLVERTEXSTREAM4DVATIPROC GLeeFuncPtr_glVertexStream4dvATI=GLee_Lazy_glVertexStream4dvATI; #endif #ifndef GLEE_C_DEFINED_glNormalStream3bATI #define GLEE_C_DEFINED_glNormalStream3bATI void __stdcall GLee_Lazy_glNormalStream3bATI(GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz) {if (GLeeInit()) glNormalStream3bATI(stream, nx, ny, nz);} GLEEPFNGLNORMALSTREAM3BATIPROC GLeeFuncPtr_glNormalStream3bATI=GLee_Lazy_glNormalStream3bATI; #endif #ifndef GLEE_C_DEFINED_glNormalStream3bvATI #define GLEE_C_DEFINED_glNormalStream3bvATI void __stdcall GLee_Lazy_glNormalStream3bvATI(GLenum stream, const GLbyte * coords) {if (GLeeInit()) glNormalStream3bvATI(stream, coords);} GLEEPFNGLNORMALSTREAM3BVATIPROC GLeeFuncPtr_glNormalStream3bvATI=GLee_Lazy_glNormalStream3bvATI; #endif #ifndef GLEE_C_DEFINED_glNormalStream3sATI #define GLEE_C_DEFINED_glNormalStream3sATI void __stdcall GLee_Lazy_glNormalStream3sATI(GLenum stream, GLshort nx, GLshort ny, GLshort nz) {if (GLeeInit()) glNormalStream3sATI(stream, nx, ny, nz);} GLEEPFNGLNORMALSTREAM3SATIPROC GLeeFuncPtr_glNormalStream3sATI=GLee_Lazy_glNormalStream3sATI; #endif #ifndef GLEE_C_DEFINED_glNormalStream3svATI #define GLEE_C_DEFINED_glNormalStream3svATI void __stdcall GLee_Lazy_glNormalStream3svATI(GLenum stream, const GLshort * coords) {if (GLeeInit()) glNormalStream3svATI(stream, coords);} GLEEPFNGLNORMALSTREAM3SVATIPROC GLeeFuncPtr_glNormalStream3svATI=GLee_Lazy_glNormalStream3svATI; #endif #ifndef GLEE_C_DEFINED_glNormalStream3iATI #define GLEE_C_DEFINED_glNormalStream3iATI void __stdcall GLee_Lazy_glNormalStream3iATI(GLenum stream, GLint nx, GLint ny, GLint nz) {if (GLeeInit()) glNormalStream3iATI(stream, nx, ny, nz);} GLEEPFNGLNORMALSTREAM3IATIPROC GLeeFuncPtr_glNormalStream3iATI=GLee_Lazy_glNormalStream3iATI; #endif #ifndef GLEE_C_DEFINED_glNormalStream3ivATI #define GLEE_C_DEFINED_glNormalStream3ivATI void __stdcall GLee_Lazy_glNormalStream3ivATI(GLenum stream, const GLint * coords) {if (GLeeInit()) glNormalStream3ivATI(stream, coords);} GLEEPFNGLNORMALSTREAM3IVATIPROC GLeeFuncPtr_glNormalStream3ivATI=GLee_Lazy_glNormalStream3ivATI; #endif #ifndef GLEE_C_DEFINED_glNormalStream3fATI #define GLEE_C_DEFINED_glNormalStream3fATI void __stdcall GLee_Lazy_glNormalStream3fATI(GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz) {if (GLeeInit()) glNormalStream3fATI(stream, nx, ny, nz);} GLEEPFNGLNORMALSTREAM3FATIPROC GLeeFuncPtr_glNormalStream3fATI=GLee_Lazy_glNormalStream3fATI; #endif #ifndef GLEE_C_DEFINED_glNormalStream3fvATI #define GLEE_C_DEFINED_glNormalStream3fvATI void __stdcall GLee_Lazy_glNormalStream3fvATI(GLenum stream, const GLfloat * coords) {if (GLeeInit()) glNormalStream3fvATI(stream, coords);} GLEEPFNGLNORMALSTREAM3FVATIPROC GLeeFuncPtr_glNormalStream3fvATI=GLee_Lazy_glNormalStream3fvATI; #endif #ifndef GLEE_C_DEFINED_glNormalStream3dATI #define GLEE_C_DEFINED_glNormalStream3dATI void __stdcall GLee_Lazy_glNormalStream3dATI(GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz) {if (GLeeInit()) glNormalStream3dATI(stream, nx, ny, nz);} GLEEPFNGLNORMALSTREAM3DATIPROC GLeeFuncPtr_glNormalStream3dATI=GLee_Lazy_glNormalStream3dATI; #endif #ifndef GLEE_C_DEFINED_glNormalStream3dvATI #define GLEE_C_DEFINED_glNormalStream3dvATI void __stdcall GLee_Lazy_glNormalStream3dvATI(GLenum stream, const GLdouble * coords) {if (GLeeInit()) glNormalStream3dvATI(stream, coords);} GLEEPFNGLNORMALSTREAM3DVATIPROC GLeeFuncPtr_glNormalStream3dvATI=GLee_Lazy_glNormalStream3dvATI; #endif #ifndef GLEE_C_DEFINED_glClientActiveVertexStreamATI #define GLEE_C_DEFINED_glClientActiveVertexStreamATI void __stdcall GLee_Lazy_glClientActiveVertexStreamATI(GLenum stream) {if (GLeeInit()) glClientActiveVertexStreamATI(stream);} GLEEPFNGLCLIENTACTIVEVERTEXSTREAMATIPROC GLeeFuncPtr_glClientActiveVertexStreamATI=GLee_Lazy_glClientActiveVertexStreamATI; #endif #ifndef GLEE_C_DEFINED_glVertexBlendEnviATI #define GLEE_C_DEFINED_glVertexBlendEnviATI void __stdcall GLee_Lazy_glVertexBlendEnviATI(GLenum pname, GLint param) {if (GLeeInit()) glVertexBlendEnviATI(pname, param);} GLEEPFNGLVERTEXBLENDENVIATIPROC GLeeFuncPtr_glVertexBlendEnviATI=GLee_Lazy_glVertexBlendEnviATI; #endif #ifndef GLEE_C_DEFINED_glVertexBlendEnvfATI #define GLEE_C_DEFINED_glVertexBlendEnvfATI void __stdcall GLee_Lazy_glVertexBlendEnvfATI(GLenum pname, GLfloat param) {if (GLeeInit()) glVertexBlendEnvfATI(pname, param);} GLEEPFNGLVERTEXBLENDENVFATIPROC GLeeFuncPtr_glVertexBlendEnvfATI=GLee_Lazy_glVertexBlendEnvfATI; #endif #endif /* GL_ATI_element_array */ #ifdef __GLEE_GL_ATI_element_array #ifndef GLEE_C_DEFINED_glElementPointerATI #define GLEE_C_DEFINED_glElementPointerATI void __stdcall GLee_Lazy_glElementPointerATI(GLenum type, const GLvoid * pointer) {if (GLeeInit()) glElementPointerATI(type, pointer);} GLEEPFNGLELEMENTPOINTERATIPROC GLeeFuncPtr_glElementPointerATI=GLee_Lazy_glElementPointerATI; #endif #ifndef GLEE_C_DEFINED_glDrawElementArrayATI #define GLEE_C_DEFINED_glDrawElementArrayATI void __stdcall GLee_Lazy_glDrawElementArrayATI(GLenum mode, GLsizei count) {if (GLeeInit()) glDrawElementArrayATI(mode, count);} GLEEPFNGLDRAWELEMENTARRAYATIPROC GLeeFuncPtr_glDrawElementArrayATI=GLee_Lazy_glDrawElementArrayATI; #endif #ifndef GLEE_C_DEFINED_glDrawRangeElementArrayATI #define GLEE_C_DEFINED_glDrawRangeElementArrayATI void __stdcall GLee_Lazy_glDrawRangeElementArrayATI(GLenum mode, GLuint start, GLuint end, GLsizei count) {if (GLeeInit()) glDrawRangeElementArrayATI(mode, start, end, count);} GLEEPFNGLDRAWRANGEELEMENTARRAYATIPROC GLeeFuncPtr_glDrawRangeElementArrayATI=GLee_Lazy_glDrawRangeElementArrayATI; #endif #endif /* GL_SUN_mesh_array */ #ifdef __GLEE_GL_SUN_mesh_array #ifndef GLEE_C_DEFINED_glDrawMeshArraysSUN #define GLEE_C_DEFINED_glDrawMeshArraysSUN void __stdcall GLee_Lazy_glDrawMeshArraysSUN(GLenum mode, GLint first, GLsizei count, GLsizei width) {if (GLeeInit()) glDrawMeshArraysSUN(mode, first, count, width);} GLEEPFNGLDRAWMESHARRAYSSUNPROC GLeeFuncPtr_glDrawMeshArraysSUN=GLee_Lazy_glDrawMeshArraysSUN; #endif #endif /* GL_SUN_slice_accum */ #ifdef __GLEE_GL_SUN_slice_accum #endif /* GL_NV_multisample_filter_hint */ #ifdef __GLEE_GL_NV_multisample_filter_hint #endif /* GL_NV_depth_clamp */ #ifdef __GLEE_GL_NV_depth_clamp #endif /* GL_NV_occlusion_query */ #ifdef __GLEE_GL_NV_occlusion_query #ifndef GLEE_C_DEFINED_glGenOcclusionQueriesNV #define GLEE_C_DEFINED_glGenOcclusionQueriesNV void __stdcall GLee_Lazy_glGenOcclusionQueriesNV(GLsizei n, GLuint * ids) {if (GLeeInit()) glGenOcclusionQueriesNV(n, ids);} GLEEPFNGLGENOCCLUSIONQUERIESNVPROC GLeeFuncPtr_glGenOcclusionQueriesNV=GLee_Lazy_glGenOcclusionQueriesNV; #endif #ifndef GLEE_C_DEFINED_glDeleteOcclusionQueriesNV #define GLEE_C_DEFINED_glDeleteOcclusionQueriesNV void __stdcall GLee_Lazy_glDeleteOcclusionQueriesNV(GLsizei n, const GLuint * ids) {if (GLeeInit()) glDeleteOcclusionQueriesNV(n, ids);} GLEEPFNGLDELETEOCCLUSIONQUERIESNVPROC GLeeFuncPtr_glDeleteOcclusionQueriesNV=GLee_Lazy_glDeleteOcclusionQueriesNV; #endif #ifndef GLEE_C_DEFINED_glIsOcclusionQueryNV #define GLEE_C_DEFINED_glIsOcclusionQueryNV GLboolean __stdcall GLee_Lazy_glIsOcclusionQueryNV(GLuint id) {if (GLeeInit()) return glIsOcclusionQueryNV(id); return (GLboolean)0;} GLEEPFNGLISOCCLUSIONQUERYNVPROC GLeeFuncPtr_glIsOcclusionQueryNV=GLee_Lazy_glIsOcclusionQueryNV; #endif #ifndef GLEE_C_DEFINED_glBeginOcclusionQueryNV #define GLEE_C_DEFINED_glBeginOcclusionQueryNV void __stdcall GLee_Lazy_glBeginOcclusionQueryNV(GLuint id) {if (GLeeInit()) glBeginOcclusionQueryNV(id);} GLEEPFNGLBEGINOCCLUSIONQUERYNVPROC GLeeFuncPtr_glBeginOcclusionQueryNV=GLee_Lazy_glBeginOcclusionQueryNV; #endif #ifndef GLEE_C_DEFINED_glEndOcclusionQueryNV #define GLEE_C_DEFINED_glEndOcclusionQueryNV void __stdcall GLee_Lazy_glEndOcclusionQueryNV(void) {if (GLeeInit()) glEndOcclusionQueryNV();} GLEEPFNGLENDOCCLUSIONQUERYNVPROC GLeeFuncPtr_glEndOcclusionQueryNV=GLee_Lazy_glEndOcclusionQueryNV; #endif #ifndef GLEE_C_DEFINED_glGetOcclusionQueryivNV #define GLEE_C_DEFINED_glGetOcclusionQueryivNV void __stdcall GLee_Lazy_glGetOcclusionQueryivNV(GLuint id, GLenum pname, GLint * params) {if (GLeeInit()) glGetOcclusionQueryivNV(id, pname, params);} GLEEPFNGLGETOCCLUSIONQUERYIVNVPROC GLeeFuncPtr_glGetOcclusionQueryivNV=GLee_Lazy_glGetOcclusionQueryivNV; #endif #ifndef GLEE_C_DEFINED_glGetOcclusionQueryuivNV #define GLEE_C_DEFINED_glGetOcclusionQueryuivNV void __stdcall GLee_Lazy_glGetOcclusionQueryuivNV(GLuint id, GLenum pname, GLuint * params) {if (GLeeInit()) glGetOcclusionQueryuivNV(id, pname, params);} GLEEPFNGLGETOCCLUSIONQUERYUIVNVPROC GLeeFuncPtr_glGetOcclusionQueryuivNV=GLee_Lazy_glGetOcclusionQueryuivNV; #endif #endif /* GL_NV_point_sprite */ #ifdef __GLEE_GL_NV_point_sprite #ifndef GLEE_C_DEFINED_glPointParameteriNV #define GLEE_C_DEFINED_glPointParameteriNV void __stdcall GLee_Lazy_glPointParameteriNV(GLenum pname, GLint param) {if (GLeeInit()) glPointParameteriNV(pname, param);} GLEEPFNGLPOINTPARAMETERINVPROC GLeeFuncPtr_glPointParameteriNV=GLee_Lazy_glPointParameteriNV; #endif #ifndef GLEE_C_DEFINED_glPointParameterivNV #define GLEE_C_DEFINED_glPointParameterivNV void __stdcall GLee_Lazy_glPointParameterivNV(GLenum pname, const GLint * params) {if (GLeeInit()) glPointParameterivNV(pname, params);} GLEEPFNGLPOINTPARAMETERIVNVPROC GLeeFuncPtr_glPointParameterivNV=GLee_Lazy_glPointParameterivNV; #endif #endif /* GL_NV_texture_shader3 */ #ifdef __GLEE_GL_NV_texture_shader3 #endif /* GL_NV_vertex_program1_1 */ #ifdef __GLEE_GL_NV_vertex_program1_1 #endif /* GL_EXT_shadow_funcs */ #ifdef __GLEE_GL_EXT_shadow_funcs #endif /* GL_EXT_stencil_two_side */ #ifdef __GLEE_GL_EXT_stencil_two_side #ifndef GLEE_C_DEFINED_glActiveStencilFaceEXT #define GLEE_C_DEFINED_glActiveStencilFaceEXT void __stdcall GLee_Lazy_glActiveStencilFaceEXT(GLenum face) {if (GLeeInit()) glActiveStencilFaceEXT(face);} GLEEPFNGLACTIVESTENCILFACEEXTPROC GLeeFuncPtr_glActiveStencilFaceEXT=GLee_Lazy_glActiveStencilFaceEXT; #endif #endif /* GL_ATI_text_fragment_shader */ #ifdef __GLEE_GL_ATI_text_fragment_shader #endif /* GL_APPLE_client_storage */ #ifdef __GLEE_GL_APPLE_client_storage #endif /* GL_APPLE_element_array */ #ifdef __GLEE_GL_APPLE_element_array #ifndef GLEE_C_DEFINED_glElementPointerAPPLE #define GLEE_C_DEFINED_glElementPointerAPPLE void __stdcall GLee_Lazy_glElementPointerAPPLE(GLenum type, const GLvoid * pointer) {if (GLeeInit()) glElementPointerAPPLE(type, pointer);} GLEEPFNGLELEMENTPOINTERAPPLEPROC GLeeFuncPtr_glElementPointerAPPLE=GLee_Lazy_glElementPointerAPPLE; #endif #ifndef GLEE_C_DEFINED_glDrawElementArrayAPPLE #define GLEE_C_DEFINED_glDrawElementArrayAPPLE void __stdcall GLee_Lazy_glDrawElementArrayAPPLE(GLenum mode, GLint first, GLsizei count) {if (GLeeInit()) glDrawElementArrayAPPLE(mode, first, count);} GLEEPFNGLDRAWELEMENTARRAYAPPLEPROC GLeeFuncPtr_glDrawElementArrayAPPLE=GLee_Lazy_glDrawElementArrayAPPLE; #endif #ifndef GLEE_C_DEFINED_glDrawRangeElementArrayAPPLE #define GLEE_C_DEFINED_glDrawRangeElementArrayAPPLE void __stdcall GLee_Lazy_glDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count) {if (GLeeInit()) glDrawRangeElementArrayAPPLE(mode, start, end, first, count);} GLEEPFNGLDRAWRANGEELEMENTARRAYAPPLEPROC GLeeFuncPtr_glDrawRangeElementArrayAPPLE=GLee_Lazy_glDrawRangeElementArrayAPPLE; #endif #ifndef GLEE_C_DEFINED_glMultiDrawElementArrayAPPLE #define GLEE_C_DEFINED_glMultiDrawElementArrayAPPLE void __stdcall GLee_Lazy_glMultiDrawElementArrayAPPLE(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount) {if (GLeeInit()) glMultiDrawElementArrayAPPLE(mode, first, count, primcount);} GLEEPFNGLMULTIDRAWELEMENTARRAYAPPLEPROC GLeeFuncPtr_glMultiDrawElementArrayAPPLE=GLee_Lazy_glMultiDrawElementArrayAPPLE; #endif #ifndef GLEE_C_DEFINED_glMultiDrawRangeElementArrayAPPLE #define GLEE_C_DEFINED_glMultiDrawRangeElementArrayAPPLE void __stdcall GLee_Lazy_glMultiDrawRangeElementArrayAPPLE(GLenum mode, GLuint start, GLuint end, const GLint * first, const GLsizei * count, GLsizei primcount) {if (GLeeInit()) glMultiDrawRangeElementArrayAPPLE(mode, start, end, first, count, primcount);} GLEEPFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC GLeeFuncPtr_glMultiDrawRangeElementArrayAPPLE=GLee_Lazy_glMultiDrawRangeElementArrayAPPLE; #endif #endif /* GL_APPLE_fence */ #ifdef __GLEE_GL_APPLE_fence #ifndef GLEE_C_DEFINED_glGenFencesAPPLE #define GLEE_C_DEFINED_glGenFencesAPPLE void __stdcall GLee_Lazy_glGenFencesAPPLE(GLsizei n, GLuint * fences) {if (GLeeInit()) glGenFencesAPPLE(n, fences);} GLEEPFNGLGENFENCESAPPLEPROC GLeeFuncPtr_glGenFencesAPPLE=GLee_Lazy_glGenFencesAPPLE; #endif #ifndef GLEE_C_DEFINED_glDeleteFencesAPPLE #define GLEE_C_DEFINED_glDeleteFencesAPPLE void __stdcall GLee_Lazy_glDeleteFencesAPPLE(GLsizei n, const GLuint * fences) {if (GLeeInit()) glDeleteFencesAPPLE(n, fences);} GLEEPFNGLDELETEFENCESAPPLEPROC GLeeFuncPtr_glDeleteFencesAPPLE=GLee_Lazy_glDeleteFencesAPPLE; #endif #ifndef GLEE_C_DEFINED_glSetFenceAPPLE #define GLEE_C_DEFINED_glSetFenceAPPLE void __stdcall GLee_Lazy_glSetFenceAPPLE(GLuint fence) {if (GLeeInit()) glSetFenceAPPLE(fence);} GLEEPFNGLSETFENCEAPPLEPROC GLeeFuncPtr_glSetFenceAPPLE=GLee_Lazy_glSetFenceAPPLE; #endif #ifndef GLEE_C_DEFINED_glIsFenceAPPLE #define GLEE_C_DEFINED_glIsFenceAPPLE GLboolean __stdcall GLee_Lazy_glIsFenceAPPLE(GLuint fence) {if (GLeeInit()) return glIsFenceAPPLE(fence); return (GLboolean)0;} GLEEPFNGLISFENCEAPPLEPROC GLeeFuncPtr_glIsFenceAPPLE=GLee_Lazy_glIsFenceAPPLE; #endif #ifndef GLEE_C_DEFINED_glTestFenceAPPLE #define GLEE_C_DEFINED_glTestFenceAPPLE GLboolean __stdcall GLee_Lazy_glTestFenceAPPLE(GLuint fence) {if (GLeeInit()) return glTestFenceAPPLE(fence); return (GLboolean)0;} GLEEPFNGLTESTFENCEAPPLEPROC GLeeFuncPtr_glTestFenceAPPLE=GLee_Lazy_glTestFenceAPPLE; #endif #ifndef GLEE_C_DEFINED_glFinishFenceAPPLE #define GLEE_C_DEFINED_glFinishFenceAPPLE void __stdcall GLee_Lazy_glFinishFenceAPPLE(GLuint fence) {if (GLeeInit()) glFinishFenceAPPLE(fence);} GLEEPFNGLFINISHFENCEAPPLEPROC GLeeFuncPtr_glFinishFenceAPPLE=GLee_Lazy_glFinishFenceAPPLE; #endif #ifndef GLEE_C_DEFINED_glTestObjectAPPLE #define GLEE_C_DEFINED_glTestObjectAPPLE GLboolean __stdcall GLee_Lazy_glTestObjectAPPLE(GLenum object, GLuint name) {if (GLeeInit()) return glTestObjectAPPLE(object, name); return (GLboolean)0;} GLEEPFNGLTESTOBJECTAPPLEPROC GLeeFuncPtr_glTestObjectAPPLE=GLee_Lazy_glTestObjectAPPLE; #endif #ifndef GLEE_C_DEFINED_glFinishObjectAPPLE #define GLEE_C_DEFINED_glFinishObjectAPPLE void __stdcall GLee_Lazy_glFinishObjectAPPLE(GLenum object, GLint name) {if (GLeeInit()) glFinishObjectAPPLE(object, name);} GLEEPFNGLFINISHOBJECTAPPLEPROC GLeeFuncPtr_glFinishObjectAPPLE=GLee_Lazy_glFinishObjectAPPLE; #endif #endif /* GL_APPLE_vertex_array_object */ #ifdef __GLEE_GL_APPLE_vertex_array_object #ifndef GLEE_C_DEFINED_glBindVertexArrayAPPLE #define GLEE_C_DEFINED_glBindVertexArrayAPPLE void __stdcall GLee_Lazy_glBindVertexArrayAPPLE(GLuint array) {if (GLeeInit()) glBindVertexArrayAPPLE(array);} GLEEPFNGLBINDVERTEXARRAYAPPLEPROC GLeeFuncPtr_glBindVertexArrayAPPLE=GLee_Lazy_glBindVertexArrayAPPLE; #endif #ifndef GLEE_C_DEFINED_glDeleteVertexArraysAPPLE #define GLEE_C_DEFINED_glDeleteVertexArraysAPPLE void __stdcall GLee_Lazy_glDeleteVertexArraysAPPLE(GLsizei n, const GLuint * arrays) {if (GLeeInit()) glDeleteVertexArraysAPPLE(n, arrays);} GLEEPFNGLDELETEVERTEXARRAYSAPPLEPROC GLeeFuncPtr_glDeleteVertexArraysAPPLE=GLee_Lazy_glDeleteVertexArraysAPPLE; #endif #ifndef GLEE_C_DEFINED_glGenVertexArraysAPPLE #define GLEE_C_DEFINED_glGenVertexArraysAPPLE void __stdcall GLee_Lazy_glGenVertexArraysAPPLE(GLsizei n, GLuint * arrays) {if (GLeeInit()) glGenVertexArraysAPPLE(n, arrays);} GLEEPFNGLGENVERTEXARRAYSAPPLEPROC GLeeFuncPtr_glGenVertexArraysAPPLE=GLee_Lazy_glGenVertexArraysAPPLE; #endif #ifndef GLEE_C_DEFINED_glIsVertexArrayAPPLE #define GLEE_C_DEFINED_glIsVertexArrayAPPLE GLboolean __stdcall GLee_Lazy_glIsVertexArrayAPPLE(GLuint array) {if (GLeeInit()) return glIsVertexArrayAPPLE(array); return (GLboolean)0;} GLEEPFNGLISVERTEXARRAYAPPLEPROC GLeeFuncPtr_glIsVertexArrayAPPLE=GLee_Lazy_glIsVertexArrayAPPLE; #endif #endif /* GL_APPLE_vertex_array_range */ #ifdef __GLEE_GL_APPLE_vertex_array_range #ifndef GLEE_C_DEFINED_glVertexArrayRangeAPPLE #define GLEE_C_DEFINED_glVertexArrayRangeAPPLE void __stdcall GLee_Lazy_glVertexArrayRangeAPPLE(GLsizei length, GLvoid * pointer) {if (GLeeInit()) glVertexArrayRangeAPPLE(length, pointer);} GLEEPFNGLVERTEXARRAYRANGEAPPLEPROC GLeeFuncPtr_glVertexArrayRangeAPPLE=GLee_Lazy_glVertexArrayRangeAPPLE; #endif #ifndef GLEE_C_DEFINED_glFlushVertexArrayRangeAPPLE #define GLEE_C_DEFINED_glFlushVertexArrayRangeAPPLE void __stdcall GLee_Lazy_glFlushVertexArrayRangeAPPLE(GLsizei length, GLvoid * pointer) {if (GLeeInit()) glFlushVertexArrayRangeAPPLE(length, pointer);} GLEEPFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC GLeeFuncPtr_glFlushVertexArrayRangeAPPLE=GLee_Lazy_glFlushVertexArrayRangeAPPLE; #endif #ifndef GLEE_C_DEFINED_glVertexArrayParameteriAPPLE #define GLEE_C_DEFINED_glVertexArrayParameteriAPPLE void __stdcall GLee_Lazy_glVertexArrayParameteriAPPLE(GLenum pname, GLint param) {if (GLeeInit()) glVertexArrayParameteriAPPLE(pname, param);} GLEEPFNGLVERTEXARRAYPARAMETERIAPPLEPROC GLeeFuncPtr_glVertexArrayParameteriAPPLE=GLee_Lazy_glVertexArrayParameteriAPPLE; #endif #endif /* GL_APPLE_ycbcr_422 */ #ifdef __GLEE_GL_APPLE_ycbcr_422 #endif /* GL_S3_s3tc */ #ifdef __GLEE_GL_S3_s3tc #endif /* GL_ATI_draw_buffers */ #ifdef __GLEE_GL_ATI_draw_buffers #ifndef GLEE_C_DEFINED_glDrawBuffersATI #define GLEE_C_DEFINED_glDrawBuffersATI void __stdcall GLee_Lazy_glDrawBuffersATI(GLsizei n, const GLenum * bufs) {if (GLeeInit()) glDrawBuffersATI(n, bufs);} GLEEPFNGLDRAWBUFFERSATIPROC GLeeFuncPtr_glDrawBuffersATI=GLee_Lazy_glDrawBuffersATI; #endif #endif /* GL_ATI_pixel_format_float */ #ifdef __GLEE_GL_ATI_pixel_format_float #endif /* GL_ATI_texture_env_combine3 */ #ifdef __GLEE_GL_ATI_texture_env_combine3 #endif /* GL_ATI_texture_float */ #ifdef __GLEE_GL_ATI_texture_float #endif /* GL_NV_float_buffer */ #ifdef __GLEE_GL_NV_float_buffer #endif /* GL_NV_fragment_program */ #ifdef __GLEE_GL_NV_fragment_program #ifndef GLEE_C_DEFINED_glProgramNamedParameter4fNV #define GLEE_C_DEFINED_glProgramNamedParameter4fNV void __stdcall GLee_Lazy_glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glProgramNamedParameter4fNV(id, len, name, x, y, z, w);} GLEEPFNGLPROGRAMNAMEDPARAMETER4FNVPROC GLeeFuncPtr_glProgramNamedParameter4fNV=GLee_Lazy_glProgramNamedParameter4fNV; #endif #ifndef GLEE_C_DEFINED_glProgramNamedParameter4fvNV #define GLEE_C_DEFINED_glProgramNamedParameter4fvNV void __stdcall GLee_Lazy_glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v) {if (GLeeInit()) glProgramNamedParameter4fvNV(id, len, name, v);} GLEEPFNGLPROGRAMNAMEDPARAMETER4FVNVPROC GLeeFuncPtr_glProgramNamedParameter4fvNV=GLee_Lazy_glProgramNamedParameter4fvNV; #endif #ifndef GLEE_C_DEFINED_glProgramNamedParameter4dNV #define GLEE_C_DEFINED_glProgramNamedParameter4dNV void __stdcall GLee_Lazy_glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glProgramNamedParameter4dNV(id, len, name, x, y, z, w);} GLEEPFNGLPROGRAMNAMEDPARAMETER4DNVPROC GLeeFuncPtr_glProgramNamedParameter4dNV=GLee_Lazy_glProgramNamedParameter4dNV; #endif #ifndef GLEE_C_DEFINED_glProgramNamedParameter4dvNV #define GLEE_C_DEFINED_glProgramNamedParameter4dvNV void __stdcall GLee_Lazy_glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v) {if (GLeeInit()) glProgramNamedParameter4dvNV(id, len, name, v);} GLEEPFNGLPROGRAMNAMEDPARAMETER4DVNVPROC GLeeFuncPtr_glProgramNamedParameter4dvNV=GLee_Lazy_glProgramNamedParameter4dvNV; #endif #ifndef GLEE_C_DEFINED_glGetProgramNamedParameterfvNV #define GLEE_C_DEFINED_glGetProgramNamedParameterfvNV void __stdcall GLee_Lazy_glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params) {if (GLeeInit()) glGetProgramNamedParameterfvNV(id, len, name, params);} GLEEPFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC GLeeFuncPtr_glGetProgramNamedParameterfvNV=GLee_Lazy_glGetProgramNamedParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glGetProgramNamedParameterdvNV #define GLEE_C_DEFINED_glGetProgramNamedParameterdvNV void __stdcall GLee_Lazy_glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params) {if (GLeeInit()) glGetProgramNamedParameterdvNV(id, len, name, params);} GLEEPFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC GLeeFuncPtr_glGetProgramNamedParameterdvNV=GLee_Lazy_glGetProgramNamedParameterdvNV; #endif #endif /* GL_NV_half_float */ #ifdef __GLEE_GL_NV_half_float #ifndef GLEE_C_DEFINED_glVertex2hNV #define GLEE_C_DEFINED_glVertex2hNV void __stdcall GLee_Lazy_glVertex2hNV(GLhalfNV x, GLhalfNV y) {if (GLeeInit()) glVertex2hNV(x, y);} GLEEPFNGLVERTEX2HNVPROC GLeeFuncPtr_glVertex2hNV=GLee_Lazy_glVertex2hNV; #endif #ifndef GLEE_C_DEFINED_glVertex2hvNV #define GLEE_C_DEFINED_glVertex2hvNV void __stdcall GLee_Lazy_glVertex2hvNV(const GLhalfNV * v) {if (GLeeInit()) glVertex2hvNV(v);} GLEEPFNGLVERTEX2HVNVPROC GLeeFuncPtr_glVertex2hvNV=GLee_Lazy_glVertex2hvNV; #endif #ifndef GLEE_C_DEFINED_glVertex3hNV #define GLEE_C_DEFINED_glVertex3hNV void __stdcall GLee_Lazy_glVertex3hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z) {if (GLeeInit()) glVertex3hNV(x, y, z);} GLEEPFNGLVERTEX3HNVPROC GLeeFuncPtr_glVertex3hNV=GLee_Lazy_glVertex3hNV; #endif #ifndef GLEE_C_DEFINED_glVertex3hvNV #define GLEE_C_DEFINED_glVertex3hvNV void __stdcall GLee_Lazy_glVertex3hvNV(const GLhalfNV * v) {if (GLeeInit()) glVertex3hvNV(v);} GLEEPFNGLVERTEX3HVNVPROC GLeeFuncPtr_glVertex3hvNV=GLee_Lazy_glVertex3hvNV; #endif #ifndef GLEE_C_DEFINED_glVertex4hNV #define GLEE_C_DEFINED_glVertex4hNV void __stdcall GLee_Lazy_glVertex4hNV(GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w) {if (GLeeInit()) glVertex4hNV(x, y, z, w);} GLEEPFNGLVERTEX4HNVPROC GLeeFuncPtr_glVertex4hNV=GLee_Lazy_glVertex4hNV; #endif #ifndef GLEE_C_DEFINED_glVertex4hvNV #define GLEE_C_DEFINED_glVertex4hvNV void __stdcall GLee_Lazy_glVertex4hvNV(const GLhalfNV * v) {if (GLeeInit()) glVertex4hvNV(v);} GLEEPFNGLVERTEX4HVNVPROC GLeeFuncPtr_glVertex4hvNV=GLee_Lazy_glVertex4hvNV; #endif #ifndef GLEE_C_DEFINED_glNormal3hNV #define GLEE_C_DEFINED_glNormal3hNV void __stdcall GLee_Lazy_glNormal3hNV(GLhalfNV nx, GLhalfNV ny, GLhalfNV nz) {if (GLeeInit()) glNormal3hNV(nx, ny, nz);} GLEEPFNGLNORMAL3HNVPROC GLeeFuncPtr_glNormal3hNV=GLee_Lazy_glNormal3hNV; #endif #ifndef GLEE_C_DEFINED_glNormal3hvNV #define GLEE_C_DEFINED_glNormal3hvNV void __stdcall GLee_Lazy_glNormal3hvNV(const GLhalfNV * v) {if (GLeeInit()) glNormal3hvNV(v);} GLEEPFNGLNORMAL3HVNVPROC GLeeFuncPtr_glNormal3hvNV=GLee_Lazy_glNormal3hvNV; #endif #ifndef GLEE_C_DEFINED_glColor3hNV #define GLEE_C_DEFINED_glColor3hNV void __stdcall GLee_Lazy_glColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue) {if (GLeeInit()) glColor3hNV(red, green, blue);} GLEEPFNGLCOLOR3HNVPROC GLeeFuncPtr_glColor3hNV=GLee_Lazy_glColor3hNV; #endif #ifndef GLEE_C_DEFINED_glColor3hvNV #define GLEE_C_DEFINED_glColor3hvNV void __stdcall GLee_Lazy_glColor3hvNV(const GLhalfNV * v) {if (GLeeInit()) glColor3hvNV(v);} GLEEPFNGLCOLOR3HVNVPROC GLeeFuncPtr_glColor3hvNV=GLee_Lazy_glColor3hvNV; #endif #ifndef GLEE_C_DEFINED_glColor4hNV #define GLEE_C_DEFINED_glColor4hNV void __stdcall GLee_Lazy_glColor4hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha) {if (GLeeInit()) glColor4hNV(red, green, blue, alpha);} GLEEPFNGLCOLOR4HNVPROC GLeeFuncPtr_glColor4hNV=GLee_Lazy_glColor4hNV; #endif #ifndef GLEE_C_DEFINED_glColor4hvNV #define GLEE_C_DEFINED_glColor4hvNV void __stdcall GLee_Lazy_glColor4hvNV(const GLhalfNV * v) {if (GLeeInit()) glColor4hvNV(v);} GLEEPFNGLCOLOR4HVNVPROC GLeeFuncPtr_glColor4hvNV=GLee_Lazy_glColor4hvNV; #endif #ifndef GLEE_C_DEFINED_glTexCoord1hNV #define GLEE_C_DEFINED_glTexCoord1hNV void __stdcall GLee_Lazy_glTexCoord1hNV(GLhalfNV s) {if (GLeeInit()) glTexCoord1hNV(s);} GLEEPFNGLTEXCOORD1HNVPROC GLeeFuncPtr_glTexCoord1hNV=GLee_Lazy_glTexCoord1hNV; #endif #ifndef GLEE_C_DEFINED_glTexCoord1hvNV #define GLEE_C_DEFINED_glTexCoord1hvNV void __stdcall GLee_Lazy_glTexCoord1hvNV(const GLhalfNV * v) {if (GLeeInit()) glTexCoord1hvNV(v);} GLEEPFNGLTEXCOORD1HVNVPROC GLeeFuncPtr_glTexCoord1hvNV=GLee_Lazy_glTexCoord1hvNV; #endif #ifndef GLEE_C_DEFINED_glTexCoord2hNV #define GLEE_C_DEFINED_glTexCoord2hNV void __stdcall GLee_Lazy_glTexCoord2hNV(GLhalfNV s, GLhalfNV t) {if (GLeeInit()) glTexCoord2hNV(s, t);} GLEEPFNGLTEXCOORD2HNVPROC GLeeFuncPtr_glTexCoord2hNV=GLee_Lazy_glTexCoord2hNV; #endif #ifndef GLEE_C_DEFINED_glTexCoord2hvNV #define GLEE_C_DEFINED_glTexCoord2hvNV void __stdcall GLee_Lazy_glTexCoord2hvNV(const GLhalfNV * v) {if (GLeeInit()) glTexCoord2hvNV(v);} GLEEPFNGLTEXCOORD2HVNVPROC GLeeFuncPtr_glTexCoord2hvNV=GLee_Lazy_glTexCoord2hvNV; #endif #ifndef GLEE_C_DEFINED_glTexCoord3hNV #define GLEE_C_DEFINED_glTexCoord3hNV void __stdcall GLee_Lazy_glTexCoord3hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r) {if (GLeeInit()) glTexCoord3hNV(s, t, r);} GLEEPFNGLTEXCOORD3HNVPROC GLeeFuncPtr_glTexCoord3hNV=GLee_Lazy_glTexCoord3hNV; #endif #ifndef GLEE_C_DEFINED_glTexCoord3hvNV #define GLEE_C_DEFINED_glTexCoord3hvNV void __stdcall GLee_Lazy_glTexCoord3hvNV(const GLhalfNV * v) {if (GLeeInit()) glTexCoord3hvNV(v);} GLEEPFNGLTEXCOORD3HVNVPROC GLeeFuncPtr_glTexCoord3hvNV=GLee_Lazy_glTexCoord3hvNV; #endif #ifndef GLEE_C_DEFINED_glTexCoord4hNV #define GLEE_C_DEFINED_glTexCoord4hNV void __stdcall GLee_Lazy_glTexCoord4hNV(GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q) {if (GLeeInit()) glTexCoord4hNV(s, t, r, q);} GLEEPFNGLTEXCOORD4HNVPROC GLeeFuncPtr_glTexCoord4hNV=GLee_Lazy_glTexCoord4hNV; #endif #ifndef GLEE_C_DEFINED_glTexCoord4hvNV #define GLEE_C_DEFINED_glTexCoord4hvNV void __stdcall GLee_Lazy_glTexCoord4hvNV(const GLhalfNV * v) {if (GLeeInit()) glTexCoord4hvNV(v);} GLEEPFNGLTEXCOORD4HVNVPROC GLeeFuncPtr_glTexCoord4hvNV=GLee_Lazy_glTexCoord4hvNV; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1hNV #define GLEE_C_DEFINED_glMultiTexCoord1hNV void __stdcall GLee_Lazy_glMultiTexCoord1hNV(GLenum target, GLhalfNV s) {if (GLeeInit()) glMultiTexCoord1hNV(target, s);} GLEEPFNGLMULTITEXCOORD1HNVPROC GLeeFuncPtr_glMultiTexCoord1hNV=GLee_Lazy_glMultiTexCoord1hNV; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1hvNV #define GLEE_C_DEFINED_glMultiTexCoord1hvNV void __stdcall GLee_Lazy_glMultiTexCoord1hvNV(GLenum target, const GLhalfNV * v) {if (GLeeInit()) glMultiTexCoord1hvNV(target, v);} GLEEPFNGLMULTITEXCOORD1HVNVPROC GLeeFuncPtr_glMultiTexCoord1hvNV=GLee_Lazy_glMultiTexCoord1hvNV; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2hNV #define GLEE_C_DEFINED_glMultiTexCoord2hNV void __stdcall GLee_Lazy_glMultiTexCoord2hNV(GLenum target, GLhalfNV s, GLhalfNV t) {if (GLeeInit()) glMultiTexCoord2hNV(target, s, t);} GLEEPFNGLMULTITEXCOORD2HNVPROC GLeeFuncPtr_glMultiTexCoord2hNV=GLee_Lazy_glMultiTexCoord2hNV; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2hvNV #define GLEE_C_DEFINED_glMultiTexCoord2hvNV void __stdcall GLee_Lazy_glMultiTexCoord2hvNV(GLenum target, const GLhalfNV * v) {if (GLeeInit()) glMultiTexCoord2hvNV(target, v);} GLEEPFNGLMULTITEXCOORD2HVNVPROC GLeeFuncPtr_glMultiTexCoord2hvNV=GLee_Lazy_glMultiTexCoord2hvNV; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3hNV #define GLEE_C_DEFINED_glMultiTexCoord3hNV void __stdcall GLee_Lazy_glMultiTexCoord3hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r) {if (GLeeInit()) glMultiTexCoord3hNV(target, s, t, r);} GLEEPFNGLMULTITEXCOORD3HNVPROC GLeeFuncPtr_glMultiTexCoord3hNV=GLee_Lazy_glMultiTexCoord3hNV; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3hvNV #define GLEE_C_DEFINED_glMultiTexCoord3hvNV void __stdcall GLee_Lazy_glMultiTexCoord3hvNV(GLenum target, const GLhalfNV * v) {if (GLeeInit()) glMultiTexCoord3hvNV(target, v);} GLEEPFNGLMULTITEXCOORD3HVNVPROC GLeeFuncPtr_glMultiTexCoord3hvNV=GLee_Lazy_glMultiTexCoord3hvNV; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4hNV #define GLEE_C_DEFINED_glMultiTexCoord4hNV void __stdcall GLee_Lazy_glMultiTexCoord4hNV(GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q) {if (GLeeInit()) glMultiTexCoord4hNV(target, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4HNVPROC GLeeFuncPtr_glMultiTexCoord4hNV=GLee_Lazy_glMultiTexCoord4hNV; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4hvNV #define GLEE_C_DEFINED_glMultiTexCoord4hvNV void __stdcall GLee_Lazy_glMultiTexCoord4hvNV(GLenum target, const GLhalfNV * v) {if (GLeeInit()) glMultiTexCoord4hvNV(target, v);} GLEEPFNGLMULTITEXCOORD4HVNVPROC GLeeFuncPtr_glMultiTexCoord4hvNV=GLee_Lazy_glMultiTexCoord4hvNV; #endif #ifndef GLEE_C_DEFINED_glFogCoordhNV #define GLEE_C_DEFINED_glFogCoordhNV void __stdcall GLee_Lazy_glFogCoordhNV(GLhalfNV fog) {if (GLeeInit()) glFogCoordhNV(fog);} GLEEPFNGLFOGCOORDHNVPROC GLeeFuncPtr_glFogCoordhNV=GLee_Lazy_glFogCoordhNV; #endif #ifndef GLEE_C_DEFINED_glFogCoordhvNV #define GLEE_C_DEFINED_glFogCoordhvNV void __stdcall GLee_Lazy_glFogCoordhvNV(const GLhalfNV * fog) {if (GLeeInit()) glFogCoordhvNV(fog);} GLEEPFNGLFOGCOORDHVNVPROC GLeeFuncPtr_glFogCoordhvNV=GLee_Lazy_glFogCoordhvNV; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3hNV #define GLEE_C_DEFINED_glSecondaryColor3hNV void __stdcall GLee_Lazy_glSecondaryColor3hNV(GLhalfNV red, GLhalfNV green, GLhalfNV blue) {if (GLeeInit()) glSecondaryColor3hNV(red, green, blue);} GLEEPFNGLSECONDARYCOLOR3HNVPROC GLeeFuncPtr_glSecondaryColor3hNV=GLee_Lazy_glSecondaryColor3hNV; #endif #ifndef GLEE_C_DEFINED_glSecondaryColor3hvNV #define GLEE_C_DEFINED_glSecondaryColor3hvNV void __stdcall GLee_Lazy_glSecondaryColor3hvNV(const GLhalfNV * v) {if (GLeeInit()) glSecondaryColor3hvNV(v);} GLEEPFNGLSECONDARYCOLOR3HVNVPROC GLeeFuncPtr_glSecondaryColor3hvNV=GLee_Lazy_glSecondaryColor3hvNV; #endif #ifndef GLEE_C_DEFINED_glVertexWeighthNV #define GLEE_C_DEFINED_glVertexWeighthNV void __stdcall GLee_Lazy_glVertexWeighthNV(GLhalfNV weight) {if (GLeeInit()) glVertexWeighthNV(weight);} GLEEPFNGLVERTEXWEIGHTHNVPROC GLeeFuncPtr_glVertexWeighthNV=GLee_Lazy_glVertexWeighthNV; #endif #ifndef GLEE_C_DEFINED_glVertexWeighthvNV #define GLEE_C_DEFINED_glVertexWeighthvNV void __stdcall GLee_Lazy_glVertexWeighthvNV(const GLhalfNV * weight) {if (GLeeInit()) glVertexWeighthvNV(weight);} GLEEPFNGLVERTEXWEIGHTHVNVPROC GLeeFuncPtr_glVertexWeighthvNV=GLee_Lazy_glVertexWeighthvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1hNV #define GLEE_C_DEFINED_glVertexAttrib1hNV void __stdcall GLee_Lazy_glVertexAttrib1hNV(GLuint index, GLhalfNV x) {if (GLeeInit()) glVertexAttrib1hNV(index, x);} GLEEPFNGLVERTEXATTRIB1HNVPROC GLeeFuncPtr_glVertexAttrib1hNV=GLee_Lazy_glVertexAttrib1hNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib1hvNV #define GLEE_C_DEFINED_glVertexAttrib1hvNV void __stdcall GLee_Lazy_glVertexAttrib1hvNV(GLuint index, const GLhalfNV * v) {if (GLeeInit()) glVertexAttrib1hvNV(index, v);} GLEEPFNGLVERTEXATTRIB1HVNVPROC GLeeFuncPtr_glVertexAttrib1hvNV=GLee_Lazy_glVertexAttrib1hvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2hNV #define GLEE_C_DEFINED_glVertexAttrib2hNV void __stdcall GLee_Lazy_glVertexAttrib2hNV(GLuint index, GLhalfNV x, GLhalfNV y) {if (GLeeInit()) glVertexAttrib2hNV(index, x, y);} GLEEPFNGLVERTEXATTRIB2HNVPROC GLeeFuncPtr_glVertexAttrib2hNV=GLee_Lazy_glVertexAttrib2hNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib2hvNV #define GLEE_C_DEFINED_glVertexAttrib2hvNV void __stdcall GLee_Lazy_glVertexAttrib2hvNV(GLuint index, const GLhalfNV * v) {if (GLeeInit()) glVertexAttrib2hvNV(index, v);} GLEEPFNGLVERTEXATTRIB2HVNVPROC GLeeFuncPtr_glVertexAttrib2hvNV=GLee_Lazy_glVertexAttrib2hvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3hNV #define GLEE_C_DEFINED_glVertexAttrib3hNV void __stdcall GLee_Lazy_glVertexAttrib3hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z) {if (GLeeInit()) glVertexAttrib3hNV(index, x, y, z);} GLEEPFNGLVERTEXATTRIB3HNVPROC GLeeFuncPtr_glVertexAttrib3hNV=GLee_Lazy_glVertexAttrib3hNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib3hvNV #define GLEE_C_DEFINED_glVertexAttrib3hvNV void __stdcall GLee_Lazy_glVertexAttrib3hvNV(GLuint index, const GLhalfNV * v) {if (GLeeInit()) glVertexAttrib3hvNV(index, v);} GLEEPFNGLVERTEXATTRIB3HVNVPROC GLeeFuncPtr_glVertexAttrib3hvNV=GLee_Lazy_glVertexAttrib3hvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4hNV #define GLEE_C_DEFINED_glVertexAttrib4hNV void __stdcall GLee_Lazy_glVertexAttrib4hNV(GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w) {if (GLeeInit()) glVertexAttrib4hNV(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIB4HNVPROC GLeeFuncPtr_glVertexAttrib4hNV=GLee_Lazy_glVertexAttrib4hNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttrib4hvNV #define GLEE_C_DEFINED_glVertexAttrib4hvNV void __stdcall GLee_Lazy_glVertexAttrib4hvNV(GLuint index, const GLhalfNV * v) {if (GLeeInit()) glVertexAttrib4hvNV(index, v);} GLEEPFNGLVERTEXATTRIB4HVNVPROC GLeeFuncPtr_glVertexAttrib4hvNV=GLee_Lazy_glVertexAttrib4hvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs1hvNV #define GLEE_C_DEFINED_glVertexAttribs1hvNV void __stdcall GLee_Lazy_glVertexAttribs1hvNV(GLuint index, GLsizei n, const GLhalfNV * v) {if (GLeeInit()) glVertexAttribs1hvNV(index, n, v);} GLEEPFNGLVERTEXATTRIBS1HVNVPROC GLeeFuncPtr_glVertexAttribs1hvNV=GLee_Lazy_glVertexAttribs1hvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs2hvNV #define GLEE_C_DEFINED_glVertexAttribs2hvNV void __stdcall GLee_Lazy_glVertexAttribs2hvNV(GLuint index, GLsizei n, const GLhalfNV * v) {if (GLeeInit()) glVertexAttribs2hvNV(index, n, v);} GLEEPFNGLVERTEXATTRIBS2HVNVPROC GLeeFuncPtr_glVertexAttribs2hvNV=GLee_Lazy_glVertexAttribs2hvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs3hvNV #define GLEE_C_DEFINED_glVertexAttribs3hvNV void __stdcall GLee_Lazy_glVertexAttribs3hvNV(GLuint index, GLsizei n, const GLhalfNV * v) {if (GLeeInit()) glVertexAttribs3hvNV(index, n, v);} GLEEPFNGLVERTEXATTRIBS3HVNVPROC GLeeFuncPtr_glVertexAttribs3hvNV=GLee_Lazy_glVertexAttribs3hvNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribs4hvNV #define GLEE_C_DEFINED_glVertexAttribs4hvNV void __stdcall GLee_Lazy_glVertexAttribs4hvNV(GLuint index, GLsizei n, const GLhalfNV * v) {if (GLeeInit()) glVertexAttribs4hvNV(index, n, v);} GLEEPFNGLVERTEXATTRIBS4HVNVPROC GLeeFuncPtr_glVertexAttribs4hvNV=GLee_Lazy_glVertexAttribs4hvNV; #endif #endif /* GL_NV_pixel_data_range */ #ifdef __GLEE_GL_NV_pixel_data_range #ifndef GLEE_C_DEFINED_glPixelDataRangeNV #define GLEE_C_DEFINED_glPixelDataRangeNV void __stdcall GLee_Lazy_glPixelDataRangeNV(GLenum target, GLsizei length, const GLvoid * pointer) {if (GLeeInit()) glPixelDataRangeNV(target, length, pointer);} GLEEPFNGLPIXELDATARANGENVPROC GLeeFuncPtr_glPixelDataRangeNV=GLee_Lazy_glPixelDataRangeNV; #endif #ifndef GLEE_C_DEFINED_glFlushPixelDataRangeNV #define GLEE_C_DEFINED_glFlushPixelDataRangeNV void __stdcall GLee_Lazy_glFlushPixelDataRangeNV(GLenum target) {if (GLeeInit()) glFlushPixelDataRangeNV(target);} GLEEPFNGLFLUSHPIXELDATARANGENVPROC GLeeFuncPtr_glFlushPixelDataRangeNV=GLee_Lazy_glFlushPixelDataRangeNV; #endif #endif /* GL_NV_primitive_restart */ #ifdef __GLEE_GL_NV_primitive_restart #ifndef GLEE_C_DEFINED_glPrimitiveRestartNV #define GLEE_C_DEFINED_glPrimitiveRestartNV void __stdcall GLee_Lazy_glPrimitiveRestartNV(void) {if (GLeeInit()) glPrimitiveRestartNV();} GLEEPFNGLPRIMITIVERESTARTNVPROC GLeeFuncPtr_glPrimitiveRestartNV=GLee_Lazy_glPrimitiveRestartNV; #endif #ifndef GLEE_C_DEFINED_glPrimitiveRestartIndexNV #define GLEE_C_DEFINED_glPrimitiveRestartIndexNV void __stdcall GLee_Lazy_glPrimitiveRestartIndexNV(GLuint index) {if (GLeeInit()) glPrimitiveRestartIndexNV(index);} GLEEPFNGLPRIMITIVERESTARTINDEXNVPROC GLeeFuncPtr_glPrimitiveRestartIndexNV=GLee_Lazy_glPrimitiveRestartIndexNV; #endif #endif /* GL_NV_texture_expand_normal */ #ifdef __GLEE_GL_NV_texture_expand_normal #endif /* GL_NV_vertex_program2 */ #ifdef __GLEE_GL_NV_vertex_program2 #endif /* GL_ATI_map_object_buffer */ #ifdef __GLEE_GL_ATI_map_object_buffer #ifndef GLEE_C_DEFINED_glMapObjectBufferATI #define GLEE_C_DEFINED_glMapObjectBufferATI GLvoid* __stdcall GLee_Lazy_glMapObjectBufferATI(GLuint buffer) {if (GLeeInit()) return glMapObjectBufferATI(buffer); return (GLvoid*)0;} GLEEPFNGLMAPOBJECTBUFFERATIPROC GLeeFuncPtr_glMapObjectBufferATI=GLee_Lazy_glMapObjectBufferATI; #endif #ifndef GLEE_C_DEFINED_glUnmapObjectBufferATI #define GLEE_C_DEFINED_glUnmapObjectBufferATI void __stdcall GLee_Lazy_glUnmapObjectBufferATI(GLuint buffer) {if (GLeeInit()) glUnmapObjectBufferATI(buffer);} GLEEPFNGLUNMAPOBJECTBUFFERATIPROC GLeeFuncPtr_glUnmapObjectBufferATI=GLee_Lazy_glUnmapObjectBufferATI; #endif #endif /* GL_ATI_separate_stencil */ #ifdef __GLEE_GL_ATI_separate_stencil #ifndef GLEE_C_DEFINED_glStencilOpSeparateATI #define GLEE_C_DEFINED_glStencilOpSeparateATI void __stdcall GLee_Lazy_glStencilOpSeparateATI(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass) {if (GLeeInit()) glStencilOpSeparateATI(face, sfail, dpfail, dppass);} GLEEPFNGLSTENCILOPSEPARATEATIPROC GLeeFuncPtr_glStencilOpSeparateATI=GLee_Lazy_glStencilOpSeparateATI; #endif #ifndef GLEE_C_DEFINED_glStencilFuncSeparateATI #define GLEE_C_DEFINED_glStencilFuncSeparateATI void __stdcall GLee_Lazy_glStencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask) {if (GLeeInit()) glStencilFuncSeparateATI(frontfunc, backfunc, ref, mask);} GLEEPFNGLSTENCILFUNCSEPARATEATIPROC GLeeFuncPtr_glStencilFuncSeparateATI=GLee_Lazy_glStencilFuncSeparateATI; #endif #endif /* GL_ATI_vertex_attrib_array_object */ #ifdef __GLEE_GL_ATI_vertex_attrib_array_object #ifndef GLEE_C_DEFINED_glVertexAttribArrayObjectATI #define GLEE_C_DEFINED_glVertexAttribArrayObjectATI void __stdcall GLee_Lazy_glVertexAttribArrayObjectATI(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset) {if (GLeeInit()) glVertexAttribArrayObjectATI(index, size, type, normalized, stride, buffer, offset);} GLEEPFNGLVERTEXATTRIBARRAYOBJECTATIPROC GLeeFuncPtr_glVertexAttribArrayObjectATI=GLee_Lazy_glVertexAttribArrayObjectATI; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribArrayObjectfvATI #define GLEE_C_DEFINED_glGetVertexAttribArrayObjectfvATI void __stdcall GLee_Lazy_glGetVertexAttribArrayObjectfvATI(GLuint index, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetVertexAttribArrayObjectfvATI(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC GLeeFuncPtr_glGetVertexAttribArrayObjectfvATI=GLee_Lazy_glGetVertexAttribArrayObjectfvATI; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribArrayObjectivATI #define GLEE_C_DEFINED_glGetVertexAttribArrayObjectivATI void __stdcall GLee_Lazy_glGetVertexAttribArrayObjectivATI(GLuint index, GLenum pname, GLint * params) {if (GLeeInit()) glGetVertexAttribArrayObjectivATI(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC GLeeFuncPtr_glGetVertexAttribArrayObjectivATI=GLee_Lazy_glGetVertexAttribArrayObjectivATI; #endif #endif /* GL_OES_byte_coordinates */ #ifdef __GLEE_GL_OES_byte_coordinates #ifndef GLEE_C_DEFINED_glMultiTexCoord1bOES #define GLEE_C_DEFINED_glMultiTexCoord1bOES void __stdcall GLee_Lazy_glMultiTexCoord1bOES(GLenum texture, GLbyte s) {if (GLeeInit()) glMultiTexCoord1bOES(texture, s);} GLEEPFNGLMULTITEXCOORD1BOESPROC GLeeFuncPtr_glMultiTexCoord1bOES=GLee_Lazy_glMultiTexCoord1bOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1bvOES #define GLEE_C_DEFINED_glMultiTexCoord1bvOES void __stdcall GLee_Lazy_glMultiTexCoord1bvOES(GLenum texture, const GLbyte * coords) {if (GLeeInit()) glMultiTexCoord1bvOES(texture, coords);} GLEEPFNGLMULTITEXCOORD1BVOESPROC GLeeFuncPtr_glMultiTexCoord1bvOES=GLee_Lazy_glMultiTexCoord1bvOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2bOES #define GLEE_C_DEFINED_glMultiTexCoord2bOES void __stdcall GLee_Lazy_glMultiTexCoord2bOES(GLenum texture, GLbyte s, GLbyte t) {if (GLeeInit()) glMultiTexCoord2bOES(texture, s, t);} GLEEPFNGLMULTITEXCOORD2BOESPROC GLeeFuncPtr_glMultiTexCoord2bOES=GLee_Lazy_glMultiTexCoord2bOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2bvOES #define GLEE_C_DEFINED_glMultiTexCoord2bvOES void __stdcall GLee_Lazy_glMultiTexCoord2bvOES(GLenum texture, const GLbyte * coords) {if (GLeeInit()) glMultiTexCoord2bvOES(texture, coords);} GLEEPFNGLMULTITEXCOORD2BVOESPROC GLeeFuncPtr_glMultiTexCoord2bvOES=GLee_Lazy_glMultiTexCoord2bvOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3bOES #define GLEE_C_DEFINED_glMultiTexCoord3bOES void __stdcall GLee_Lazy_glMultiTexCoord3bOES(GLenum texture, GLbyte s, GLbyte t, GLbyte r) {if (GLeeInit()) glMultiTexCoord3bOES(texture, s, t, r);} GLEEPFNGLMULTITEXCOORD3BOESPROC GLeeFuncPtr_glMultiTexCoord3bOES=GLee_Lazy_glMultiTexCoord3bOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3bvOES #define GLEE_C_DEFINED_glMultiTexCoord3bvOES void __stdcall GLee_Lazy_glMultiTexCoord3bvOES(GLenum texture, const GLbyte * coords) {if (GLeeInit()) glMultiTexCoord3bvOES(texture, coords);} GLEEPFNGLMULTITEXCOORD3BVOESPROC GLeeFuncPtr_glMultiTexCoord3bvOES=GLee_Lazy_glMultiTexCoord3bvOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4bOES #define GLEE_C_DEFINED_glMultiTexCoord4bOES void __stdcall GLee_Lazy_glMultiTexCoord4bOES(GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q) {if (GLeeInit()) glMultiTexCoord4bOES(texture, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4BOESPROC GLeeFuncPtr_glMultiTexCoord4bOES=GLee_Lazy_glMultiTexCoord4bOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4bvOES #define GLEE_C_DEFINED_glMultiTexCoord4bvOES void __stdcall GLee_Lazy_glMultiTexCoord4bvOES(GLenum texture, const GLbyte * coords) {if (GLeeInit()) glMultiTexCoord4bvOES(texture, coords);} GLEEPFNGLMULTITEXCOORD4BVOESPROC GLeeFuncPtr_glMultiTexCoord4bvOES=GLee_Lazy_glMultiTexCoord4bvOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord1bOES #define GLEE_C_DEFINED_glTexCoord1bOES void __stdcall GLee_Lazy_glTexCoord1bOES(GLbyte s) {if (GLeeInit()) glTexCoord1bOES(s);} GLEEPFNGLTEXCOORD1BOESPROC GLeeFuncPtr_glTexCoord1bOES=GLee_Lazy_glTexCoord1bOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord1bvOES #define GLEE_C_DEFINED_glTexCoord1bvOES void __stdcall GLee_Lazy_glTexCoord1bvOES(const GLbyte * coords) {if (GLeeInit()) glTexCoord1bvOES(coords);} GLEEPFNGLTEXCOORD1BVOESPROC GLeeFuncPtr_glTexCoord1bvOES=GLee_Lazy_glTexCoord1bvOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord2bOES #define GLEE_C_DEFINED_glTexCoord2bOES void __stdcall GLee_Lazy_glTexCoord2bOES(GLbyte s, GLbyte t) {if (GLeeInit()) glTexCoord2bOES(s, t);} GLEEPFNGLTEXCOORD2BOESPROC GLeeFuncPtr_glTexCoord2bOES=GLee_Lazy_glTexCoord2bOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord2bvOES #define GLEE_C_DEFINED_glTexCoord2bvOES void __stdcall GLee_Lazy_glTexCoord2bvOES(const GLbyte * coords) {if (GLeeInit()) glTexCoord2bvOES(coords);} GLEEPFNGLTEXCOORD2BVOESPROC GLeeFuncPtr_glTexCoord2bvOES=GLee_Lazy_glTexCoord2bvOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord3bOES #define GLEE_C_DEFINED_glTexCoord3bOES void __stdcall GLee_Lazy_glTexCoord3bOES(GLbyte s, GLbyte t, GLbyte r) {if (GLeeInit()) glTexCoord3bOES(s, t, r);} GLEEPFNGLTEXCOORD3BOESPROC GLeeFuncPtr_glTexCoord3bOES=GLee_Lazy_glTexCoord3bOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord3bvOES #define GLEE_C_DEFINED_glTexCoord3bvOES void __stdcall GLee_Lazy_glTexCoord3bvOES(const GLbyte * coords) {if (GLeeInit()) glTexCoord3bvOES(coords);} GLEEPFNGLTEXCOORD3BVOESPROC GLeeFuncPtr_glTexCoord3bvOES=GLee_Lazy_glTexCoord3bvOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord4bOES #define GLEE_C_DEFINED_glTexCoord4bOES void __stdcall GLee_Lazy_glTexCoord4bOES(GLbyte s, GLbyte t, GLbyte r, GLbyte q) {if (GLeeInit()) glTexCoord4bOES(s, t, r, q);} GLEEPFNGLTEXCOORD4BOESPROC GLeeFuncPtr_glTexCoord4bOES=GLee_Lazy_glTexCoord4bOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord4bvOES #define GLEE_C_DEFINED_glTexCoord4bvOES void __stdcall GLee_Lazy_glTexCoord4bvOES(const GLbyte * coords) {if (GLeeInit()) glTexCoord4bvOES(coords);} GLEEPFNGLTEXCOORD4BVOESPROC GLeeFuncPtr_glTexCoord4bvOES=GLee_Lazy_glTexCoord4bvOES; #endif #ifndef GLEE_C_DEFINED_glVertex2bOES #define GLEE_C_DEFINED_glVertex2bOES void __stdcall GLee_Lazy_glVertex2bOES(GLbyte x) {if (GLeeInit()) glVertex2bOES(x);} GLEEPFNGLVERTEX2BOESPROC GLeeFuncPtr_glVertex2bOES=GLee_Lazy_glVertex2bOES; #endif #ifndef GLEE_C_DEFINED_glVertex2bvOES #define GLEE_C_DEFINED_glVertex2bvOES void __stdcall GLee_Lazy_glVertex2bvOES(const GLbyte * coords) {if (GLeeInit()) glVertex2bvOES(coords);} GLEEPFNGLVERTEX2BVOESPROC GLeeFuncPtr_glVertex2bvOES=GLee_Lazy_glVertex2bvOES; #endif #ifndef GLEE_C_DEFINED_glVertex3bOES #define GLEE_C_DEFINED_glVertex3bOES void __stdcall GLee_Lazy_glVertex3bOES(GLbyte x, GLbyte y) {if (GLeeInit()) glVertex3bOES(x, y);} GLEEPFNGLVERTEX3BOESPROC GLeeFuncPtr_glVertex3bOES=GLee_Lazy_glVertex3bOES; #endif #ifndef GLEE_C_DEFINED_glVertex3bvOES #define GLEE_C_DEFINED_glVertex3bvOES void __stdcall GLee_Lazy_glVertex3bvOES(const GLbyte * coords) {if (GLeeInit()) glVertex3bvOES(coords);} GLEEPFNGLVERTEX3BVOESPROC GLeeFuncPtr_glVertex3bvOES=GLee_Lazy_glVertex3bvOES; #endif #ifndef GLEE_C_DEFINED_glVertex4bOES #define GLEE_C_DEFINED_glVertex4bOES void __stdcall GLee_Lazy_glVertex4bOES(GLbyte x, GLbyte y, GLbyte z) {if (GLeeInit()) glVertex4bOES(x, y, z);} GLEEPFNGLVERTEX4BOESPROC GLeeFuncPtr_glVertex4bOES=GLee_Lazy_glVertex4bOES; #endif #ifndef GLEE_C_DEFINED_glVertex4bvOES #define GLEE_C_DEFINED_glVertex4bvOES void __stdcall GLee_Lazy_glVertex4bvOES(const GLbyte * coords) {if (GLeeInit()) glVertex4bvOES(coords);} GLEEPFNGLVERTEX4BVOESPROC GLeeFuncPtr_glVertex4bvOES=GLee_Lazy_glVertex4bvOES; #endif #endif /* GL_OES_fixed_point */ #ifdef __GLEE_GL_OES_fixed_point #ifndef GLEE_C_DEFINED_glAccumxOES #define GLEE_C_DEFINED_glAccumxOES void __stdcall GLee_Lazy_glAccumxOES(GLenum op, GLfixed value) {if (GLeeInit()) glAccumxOES(op, value);} GLEEPFNGLACCUMXOESPROC GLeeFuncPtr_glAccumxOES=GLee_Lazy_glAccumxOES; #endif #ifndef GLEE_C_DEFINED_glAlphaFuncxOES #define GLEE_C_DEFINED_glAlphaFuncxOES void __stdcall GLee_Lazy_glAlphaFuncxOES(GLenum func, GLfixed ref) {if (GLeeInit()) glAlphaFuncxOES(func, ref);} GLEEPFNGLALPHAFUNCXOESPROC GLeeFuncPtr_glAlphaFuncxOES=GLee_Lazy_glAlphaFuncxOES; #endif #ifndef GLEE_C_DEFINED_glBitmapxOES #define GLEE_C_DEFINED_glBitmapxOES void __stdcall GLee_Lazy_glBitmapxOES(GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte * bitmap) {if (GLeeInit()) glBitmapxOES(width, height, xorig, yorig, xmove, ymove, bitmap);} GLEEPFNGLBITMAPXOESPROC GLeeFuncPtr_glBitmapxOES=GLee_Lazy_glBitmapxOES; #endif #ifndef GLEE_C_DEFINED_glBlendColorxOES #define GLEE_C_DEFINED_glBlendColorxOES void __stdcall GLee_Lazy_glBlendColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {if (GLeeInit()) glBlendColorxOES(red, green, blue, alpha);} GLEEPFNGLBLENDCOLORXOESPROC GLeeFuncPtr_glBlendColorxOES=GLee_Lazy_glBlendColorxOES; #endif #ifndef GLEE_C_DEFINED_glClearAccumxOES #define GLEE_C_DEFINED_glClearAccumxOES void __stdcall GLee_Lazy_glClearAccumxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {if (GLeeInit()) glClearAccumxOES(red, green, blue, alpha);} GLEEPFNGLCLEARACCUMXOESPROC GLeeFuncPtr_glClearAccumxOES=GLee_Lazy_glClearAccumxOES; #endif #ifndef GLEE_C_DEFINED_glClearColorxOES #define GLEE_C_DEFINED_glClearColorxOES void __stdcall GLee_Lazy_glClearColorxOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {if (GLeeInit()) glClearColorxOES(red, green, blue, alpha);} GLEEPFNGLCLEARCOLORXOESPROC GLeeFuncPtr_glClearColorxOES=GLee_Lazy_glClearColorxOES; #endif #ifndef GLEE_C_DEFINED_glClearDepthxOES #define GLEE_C_DEFINED_glClearDepthxOES void __stdcall GLee_Lazy_glClearDepthxOES(GLfixed depth) {if (GLeeInit()) glClearDepthxOES(depth);} GLEEPFNGLCLEARDEPTHXOESPROC GLeeFuncPtr_glClearDepthxOES=GLee_Lazy_glClearDepthxOES; #endif #ifndef GLEE_C_DEFINED_glClipPlanexOES #define GLEE_C_DEFINED_glClipPlanexOES void __stdcall GLee_Lazy_glClipPlanexOES(GLenum plane, const GLfixed * equation) {if (GLeeInit()) glClipPlanexOES(plane, equation);} GLEEPFNGLCLIPPLANEXOESPROC GLeeFuncPtr_glClipPlanexOES=GLee_Lazy_glClipPlanexOES; #endif #ifndef GLEE_C_DEFINED_glColor3xOES #define GLEE_C_DEFINED_glColor3xOES void __stdcall GLee_Lazy_glColor3xOES(GLfixed red, GLfixed green, GLfixed blue) {if (GLeeInit()) glColor3xOES(red, green, blue);} GLEEPFNGLCOLOR3XOESPROC GLeeFuncPtr_glColor3xOES=GLee_Lazy_glColor3xOES; #endif #ifndef GLEE_C_DEFINED_glColor4xOES #define GLEE_C_DEFINED_glColor4xOES void __stdcall GLee_Lazy_glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {if (GLeeInit()) glColor4xOES(red, green, blue, alpha);} GLEEPFNGLCOLOR4XOESPROC GLeeFuncPtr_glColor4xOES=GLee_Lazy_glColor4xOES; #endif #ifndef GLEE_C_DEFINED_glColor3xvOES #define GLEE_C_DEFINED_glColor3xvOES void __stdcall GLee_Lazy_glColor3xvOES(const GLfixed * components) {if (GLeeInit()) glColor3xvOES(components);} GLEEPFNGLCOLOR3XVOESPROC GLeeFuncPtr_glColor3xvOES=GLee_Lazy_glColor3xvOES; #endif #ifndef GLEE_C_DEFINED_glColor4xvOES #define GLEE_C_DEFINED_glColor4xvOES void __stdcall GLee_Lazy_glColor4xvOES(const GLfixed * components) {if (GLeeInit()) glColor4xvOES(components);} GLEEPFNGLCOLOR4XVOESPROC GLeeFuncPtr_glColor4xvOES=GLee_Lazy_glColor4xvOES; #endif #ifndef GLEE_C_DEFINED_glConvolutionParameterxOES #define GLEE_C_DEFINED_glConvolutionParameterxOES void __stdcall GLee_Lazy_glConvolutionParameterxOES(GLenum target, GLenum pname, GLfixed param) {if (GLeeInit()) glConvolutionParameterxOES(target, pname, param);} GLEEPFNGLCONVOLUTIONPARAMETERXOESPROC GLeeFuncPtr_glConvolutionParameterxOES=GLee_Lazy_glConvolutionParameterxOES; #endif #ifndef GLEE_C_DEFINED_glConvolutionParameterxvOES #define GLEE_C_DEFINED_glConvolutionParameterxvOES void __stdcall GLee_Lazy_glConvolutionParameterxvOES(GLenum target, GLenum pname, const GLfixed * params) {if (GLeeInit()) glConvolutionParameterxvOES(target, pname, params);} GLEEPFNGLCONVOLUTIONPARAMETERXVOESPROC GLeeFuncPtr_glConvolutionParameterxvOES=GLee_Lazy_glConvolutionParameterxvOES; #endif #ifndef GLEE_C_DEFINED_glDepthRangexOES #define GLEE_C_DEFINED_glDepthRangexOES void __stdcall GLee_Lazy_glDepthRangexOES(GLfixed n, GLfixed f) {if (GLeeInit()) glDepthRangexOES(n, f);} GLEEPFNGLDEPTHRANGEXOESPROC GLeeFuncPtr_glDepthRangexOES=GLee_Lazy_glDepthRangexOES; #endif #ifndef GLEE_C_DEFINED_glEvalCoord1xOES #define GLEE_C_DEFINED_glEvalCoord1xOES void __stdcall GLee_Lazy_glEvalCoord1xOES(GLfixed u) {if (GLeeInit()) glEvalCoord1xOES(u);} GLEEPFNGLEVALCOORD1XOESPROC GLeeFuncPtr_glEvalCoord1xOES=GLee_Lazy_glEvalCoord1xOES; #endif #ifndef GLEE_C_DEFINED_glEvalCoord2xOES #define GLEE_C_DEFINED_glEvalCoord2xOES void __stdcall GLee_Lazy_glEvalCoord2xOES(GLfixed u, GLfixed v) {if (GLeeInit()) glEvalCoord2xOES(u, v);} GLEEPFNGLEVALCOORD2XOESPROC GLeeFuncPtr_glEvalCoord2xOES=GLee_Lazy_glEvalCoord2xOES; #endif #ifndef GLEE_C_DEFINED_glEvalCoord1xvOES #define GLEE_C_DEFINED_glEvalCoord1xvOES void __stdcall GLee_Lazy_glEvalCoord1xvOES(const GLfixed * coords) {if (GLeeInit()) glEvalCoord1xvOES(coords);} GLEEPFNGLEVALCOORD1XVOESPROC GLeeFuncPtr_glEvalCoord1xvOES=GLee_Lazy_glEvalCoord1xvOES; #endif #ifndef GLEE_C_DEFINED_glEvalCoord2xvOES #define GLEE_C_DEFINED_glEvalCoord2xvOES void __stdcall GLee_Lazy_glEvalCoord2xvOES(const GLfixed * coords) {if (GLeeInit()) glEvalCoord2xvOES(coords);} GLEEPFNGLEVALCOORD2XVOESPROC GLeeFuncPtr_glEvalCoord2xvOES=GLee_Lazy_glEvalCoord2xvOES; #endif #ifndef GLEE_C_DEFINED_glFeedbackBufferxOES #define GLEE_C_DEFINED_glFeedbackBufferxOES void __stdcall GLee_Lazy_glFeedbackBufferxOES(GLsizei n, GLenum type, const GLfixed * buffer) {if (GLeeInit()) glFeedbackBufferxOES(n, type, buffer);} GLEEPFNGLFEEDBACKBUFFERXOESPROC GLeeFuncPtr_glFeedbackBufferxOES=GLee_Lazy_glFeedbackBufferxOES; #endif #ifndef GLEE_C_DEFINED_glFogxOES #define GLEE_C_DEFINED_glFogxOES void __stdcall GLee_Lazy_glFogxOES(GLenum pname, GLfixed param) {if (GLeeInit()) glFogxOES(pname, param);} GLEEPFNGLFOGXOESPROC GLeeFuncPtr_glFogxOES=GLee_Lazy_glFogxOES; #endif #ifndef GLEE_C_DEFINED_glFogxvOES #define GLEE_C_DEFINED_glFogxvOES void __stdcall GLee_Lazy_glFogxvOES(GLenum pname, const GLfixed * param) {if (GLeeInit()) glFogxvOES(pname, param);} GLEEPFNGLFOGXVOESPROC GLeeFuncPtr_glFogxvOES=GLee_Lazy_glFogxvOES; #endif #ifndef GLEE_C_DEFINED_glFrustumxOES #define GLEE_C_DEFINED_glFrustumxOES void __stdcall GLee_Lazy_glFrustumxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) {if (GLeeInit()) glFrustumxOES(l, r, b, t, n, f);} GLEEPFNGLFRUSTUMXOESPROC GLeeFuncPtr_glFrustumxOES=GLee_Lazy_glFrustumxOES; #endif #ifndef GLEE_C_DEFINED_glGetClipPlanexOES #define GLEE_C_DEFINED_glGetClipPlanexOES void __stdcall GLee_Lazy_glGetClipPlanexOES(GLenum plane, GLfixed * equation) {if (GLeeInit()) glGetClipPlanexOES(plane, equation);} GLEEPFNGLGETCLIPPLANEXOESPROC GLeeFuncPtr_glGetClipPlanexOES=GLee_Lazy_glGetClipPlanexOES; #endif #ifndef GLEE_C_DEFINED_glGetConvolutionParameterxvOES #define GLEE_C_DEFINED_glGetConvolutionParameterxvOES void __stdcall GLee_Lazy_glGetConvolutionParameterxvOES(GLenum target, GLenum pname, GLfixed * params) {if (GLeeInit()) glGetConvolutionParameterxvOES(target, pname, params);} GLEEPFNGLGETCONVOLUTIONPARAMETERXVOESPROC GLeeFuncPtr_glGetConvolutionParameterxvOES=GLee_Lazy_glGetConvolutionParameterxvOES; #endif #ifndef GLEE_C_DEFINED_glGetFixedvOES #define GLEE_C_DEFINED_glGetFixedvOES void __stdcall GLee_Lazy_glGetFixedvOES(GLenum pname, GLfixed * params) {if (GLeeInit()) glGetFixedvOES(pname, params);} GLEEPFNGLGETFIXEDVOESPROC GLeeFuncPtr_glGetFixedvOES=GLee_Lazy_glGetFixedvOES; #endif #ifndef GLEE_C_DEFINED_glGetHistogramParameterxvOES #define GLEE_C_DEFINED_glGetHistogramParameterxvOES void __stdcall GLee_Lazy_glGetHistogramParameterxvOES(GLenum target, GLenum pname, GLfixed * params) {if (GLeeInit()) glGetHistogramParameterxvOES(target, pname, params);} GLEEPFNGLGETHISTOGRAMPARAMETERXVOESPROC GLeeFuncPtr_glGetHistogramParameterxvOES=GLee_Lazy_glGetHistogramParameterxvOES; #endif #ifndef GLEE_C_DEFINED_glGetLightxOES #define GLEE_C_DEFINED_glGetLightxOES void __stdcall GLee_Lazy_glGetLightxOES(GLenum light, GLenum pname, GLfixed * params) {if (GLeeInit()) glGetLightxOES(light, pname, params);} GLEEPFNGLGETLIGHTXOESPROC GLeeFuncPtr_glGetLightxOES=GLee_Lazy_glGetLightxOES; #endif #ifndef GLEE_C_DEFINED_glGetMapxvOES #define GLEE_C_DEFINED_glGetMapxvOES void __stdcall GLee_Lazy_glGetMapxvOES(GLenum target, GLenum query, GLfixed * v) {if (GLeeInit()) glGetMapxvOES(target, query, v);} GLEEPFNGLGETMAPXVOESPROC GLeeFuncPtr_glGetMapxvOES=GLee_Lazy_glGetMapxvOES; #endif #ifndef GLEE_C_DEFINED_glGetMaterialxOES #define GLEE_C_DEFINED_glGetMaterialxOES void __stdcall GLee_Lazy_glGetMaterialxOES(GLenum face, GLenum pname, GLfixed param) {if (GLeeInit()) glGetMaterialxOES(face, pname, param);} GLEEPFNGLGETMATERIALXOESPROC GLeeFuncPtr_glGetMaterialxOES=GLee_Lazy_glGetMaterialxOES; #endif #ifndef GLEE_C_DEFINED_glGetPixelMapxv #define GLEE_C_DEFINED_glGetPixelMapxv void __stdcall GLee_Lazy_glGetPixelMapxv(GLenum map, GLint size, GLfixed * values) {if (GLeeInit()) glGetPixelMapxv(map, size, values);} GLEEPFNGLGETPIXELMAPXVPROC GLeeFuncPtr_glGetPixelMapxv=GLee_Lazy_glGetPixelMapxv; #endif #ifndef GLEE_C_DEFINED_glGetTexEnvxvOES #define GLEE_C_DEFINED_glGetTexEnvxvOES void __stdcall GLee_Lazy_glGetTexEnvxvOES(GLenum target, GLenum pname, GLfixed * params) {if (GLeeInit()) glGetTexEnvxvOES(target, pname, params);} GLEEPFNGLGETTEXENVXVOESPROC GLeeFuncPtr_glGetTexEnvxvOES=GLee_Lazy_glGetTexEnvxvOES; #endif #ifndef GLEE_C_DEFINED_glGetTexGenxvOES #define GLEE_C_DEFINED_glGetTexGenxvOES void __stdcall GLee_Lazy_glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed * params) {if (GLeeInit()) glGetTexGenxvOES(coord, pname, params);} GLEEPFNGLGETTEXGENXVOESPROC GLeeFuncPtr_glGetTexGenxvOES=GLee_Lazy_glGetTexGenxvOES; #endif #ifndef GLEE_C_DEFINED_glGetTexLevelParameterxvOES #define GLEE_C_DEFINED_glGetTexLevelParameterxvOES void __stdcall GLee_Lazy_glGetTexLevelParameterxvOES(GLenum target, GLint level, GLenum pname, GLfixed * params) {if (GLeeInit()) glGetTexLevelParameterxvOES(target, level, pname, params);} GLEEPFNGLGETTEXLEVELPARAMETERXVOESPROC GLeeFuncPtr_glGetTexLevelParameterxvOES=GLee_Lazy_glGetTexLevelParameterxvOES; #endif #ifndef GLEE_C_DEFINED_glGetTexParameterxvOES #define GLEE_C_DEFINED_glGetTexParameterxvOES void __stdcall GLee_Lazy_glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed * params) {if (GLeeInit()) glGetTexParameterxvOES(target, pname, params);} GLEEPFNGLGETTEXPARAMETERXVOESPROC GLeeFuncPtr_glGetTexParameterxvOES=GLee_Lazy_glGetTexParameterxvOES; #endif #ifndef GLEE_C_DEFINED_glIndexxOES #define GLEE_C_DEFINED_glIndexxOES void __stdcall GLee_Lazy_glIndexxOES(GLfixed component) {if (GLeeInit()) glIndexxOES(component);} GLEEPFNGLINDEXXOESPROC GLeeFuncPtr_glIndexxOES=GLee_Lazy_glIndexxOES; #endif #ifndef GLEE_C_DEFINED_glIndexxvOES #define GLEE_C_DEFINED_glIndexxvOES void __stdcall GLee_Lazy_glIndexxvOES(const GLfixed * component) {if (GLeeInit()) glIndexxvOES(component);} GLEEPFNGLINDEXXVOESPROC GLeeFuncPtr_glIndexxvOES=GLee_Lazy_glIndexxvOES; #endif #ifndef GLEE_C_DEFINED_glLightModelxOES #define GLEE_C_DEFINED_glLightModelxOES void __stdcall GLee_Lazy_glLightModelxOES(GLenum pname, GLfixed param) {if (GLeeInit()) glLightModelxOES(pname, param);} GLEEPFNGLLIGHTMODELXOESPROC GLeeFuncPtr_glLightModelxOES=GLee_Lazy_glLightModelxOES; #endif #ifndef GLEE_C_DEFINED_glLightModelxvOES #define GLEE_C_DEFINED_glLightModelxvOES void __stdcall GLee_Lazy_glLightModelxvOES(GLenum pname, const GLfixed * param) {if (GLeeInit()) glLightModelxvOES(pname, param);} GLEEPFNGLLIGHTMODELXVOESPROC GLeeFuncPtr_glLightModelxvOES=GLee_Lazy_glLightModelxvOES; #endif #ifndef GLEE_C_DEFINED_glLightxOES #define GLEE_C_DEFINED_glLightxOES void __stdcall GLee_Lazy_glLightxOES(GLenum light, GLenum pname, GLfixed param) {if (GLeeInit()) glLightxOES(light, pname, param);} GLEEPFNGLLIGHTXOESPROC GLeeFuncPtr_glLightxOES=GLee_Lazy_glLightxOES; #endif #ifndef GLEE_C_DEFINED_glLightxvOES #define GLEE_C_DEFINED_glLightxvOES void __stdcall GLee_Lazy_glLightxvOES(GLenum light, GLenum pname, const GLfixed * params) {if (GLeeInit()) glLightxvOES(light, pname, params);} GLEEPFNGLLIGHTXVOESPROC GLeeFuncPtr_glLightxvOES=GLee_Lazy_glLightxvOES; #endif #ifndef GLEE_C_DEFINED_glLineWidthxOES #define GLEE_C_DEFINED_glLineWidthxOES void __stdcall GLee_Lazy_glLineWidthxOES(GLfixed width) {if (GLeeInit()) glLineWidthxOES(width);} GLEEPFNGLLINEWIDTHXOESPROC GLeeFuncPtr_glLineWidthxOES=GLee_Lazy_glLineWidthxOES; #endif #ifndef GLEE_C_DEFINED_glLoadMatrixxOES #define GLEE_C_DEFINED_glLoadMatrixxOES void __stdcall GLee_Lazy_glLoadMatrixxOES(const GLfixed * m) {if (GLeeInit()) glLoadMatrixxOES(m);} GLEEPFNGLLOADMATRIXXOESPROC GLeeFuncPtr_glLoadMatrixxOES=GLee_Lazy_glLoadMatrixxOES; #endif #ifndef GLEE_C_DEFINED_glLoadTransposeMatrixxOES #define GLEE_C_DEFINED_glLoadTransposeMatrixxOES void __stdcall GLee_Lazy_glLoadTransposeMatrixxOES(const GLfixed * m) {if (GLeeInit()) glLoadTransposeMatrixxOES(m);} GLEEPFNGLLOADTRANSPOSEMATRIXXOESPROC GLeeFuncPtr_glLoadTransposeMatrixxOES=GLee_Lazy_glLoadTransposeMatrixxOES; #endif #ifndef GLEE_C_DEFINED_glMap1xOES #define GLEE_C_DEFINED_glMap1xOES void __stdcall GLee_Lazy_glMap1xOES(GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points) {if (GLeeInit()) glMap1xOES(target, u1, u2, stride, order, points);} GLEEPFNGLMAP1XOESPROC GLeeFuncPtr_glMap1xOES=GLee_Lazy_glMap1xOES; #endif #ifndef GLEE_C_DEFINED_glMap2xOES #define GLEE_C_DEFINED_glMap2xOES void __stdcall GLee_Lazy_glMap2xOES(GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points) {if (GLeeInit()) glMap2xOES(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);} GLEEPFNGLMAP2XOESPROC GLeeFuncPtr_glMap2xOES=GLee_Lazy_glMap2xOES; #endif #ifndef GLEE_C_DEFINED_glMapGrid1xOES #define GLEE_C_DEFINED_glMapGrid1xOES void __stdcall GLee_Lazy_glMapGrid1xOES(GLint n, GLfixed u1, GLfixed u2) {if (GLeeInit()) glMapGrid1xOES(n, u1, u2);} GLEEPFNGLMAPGRID1XOESPROC GLeeFuncPtr_glMapGrid1xOES=GLee_Lazy_glMapGrid1xOES; #endif #ifndef GLEE_C_DEFINED_glMapGrid2xOES #define GLEE_C_DEFINED_glMapGrid2xOES void __stdcall GLee_Lazy_glMapGrid2xOES(GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2) {if (GLeeInit()) glMapGrid2xOES(n, u1, u2, v1, v2);} GLEEPFNGLMAPGRID2XOESPROC GLeeFuncPtr_glMapGrid2xOES=GLee_Lazy_glMapGrid2xOES; #endif #ifndef GLEE_C_DEFINED_glMaterialxOES #define GLEE_C_DEFINED_glMaterialxOES void __stdcall GLee_Lazy_glMaterialxOES(GLenum face, GLenum pname, GLfixed param) {if (GLeeInit()) glMaterialxOES(face, pname, param);} GLEEPFNGLMATERIALXOESPROC GLeeFuncPtr_glMaterialxOES=GLee_Lazy_glMaterialxOES; #endif #ifndef GLEE_C_DEFINED_glMaterialxvOES #define GLEE_C_DEFINED_glMaterialxvOES void __stdcall GLee_Lazy_glMaterialxvOES(GLenum face, GLenum pname, const GLfixed * param) {if (GLeeInit()) glMaterialxvOES(face, pname, param);} GLEEPFNGLMATERIALXVOESPROC GLeeFuncPtr_glMaterialxvOES=GLee_Lazy_glMaterialxvOES; #endif #ifndef GLEE_C_DEFINED_glMultMatrixxOES #define GLEE_C_DEFINED_glMultMatrixxOES void __stdcall GLee_Lazy_glMultMatrixxOES(const GLfixed * m) {if (GLeeInit()) glMultMatrixxOES(m);} GLEEPFNGLMULTMATRIXXOESPROC GLeeFuncPtr_glMultMatrixxOES=GLee_Lazy_glMultMatrixxOES; #endif #ifndef GLEE_C_DEFINED_glMultTransposeMatrixxOES #define GLEE_C_DEFINED_glMultTransposeMatrixxOES void __stdcall GLee_Lazy_glMultTransposeMatrixxOES(const GLfixed * m) {if (GLeeInit()) glMultTransposeMatrixxOES(m);} GLEEPFNGLMULTTRANSPOSEMATRIXXOESPROC GLeeFuncPtr_glMultTransposeMatrixxOES=GLee_Lazy_glMultTransposeMatrixxOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1xOES #define GLEE_C_DEFINED_glMultiTexCoord1xOES void __stdcall GLee_Lazy_glMultiTexCoord1xOES(GLenum texture, GLfixed s) {if (GLeeInit()) glMultiTexCoord1xOES(texture, s);} GLEEPFNGLMULTITEXCOORD1XOESPROC GLeeFuncPtr_glMultiTexCoord1xOES=GLee_Lazy_glMultiTexCoord1xOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2xOES #define GLEE_C_DEFINED_glMultiTexCoord2xOES void __stdcall GLee_Lazy_glMultiTexCoord2xOES(GLenum texture, GLfixed s, GLfixed t) {if (GLeeInit()) glMultiTexCoord2xOES(texture, s, t);} GLEEPFNGLMULTITEXCOORD2XOESPROC GLeeFuncPtr_glMultiTexCoord2xOES=GLee_Lazy_glMultiTexCoord2xOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3xOES #define GLEE_C_DEFINED_glMultiTexCoord3xOES void __stdcall GLee_Lazy_glMultiTexCoord3xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r) {if (GLeeInit()) glMultiTexCoord3xOES(texture, s, t, r);} GLEEPFNGLMULTITEXCOORD3XOESPROC GLeeFuncPtr_glMultiTexCoord3xOES=GLee_Lazy_glMultiTexCoord3xOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4xOES #define GLEE_C_DEFINED_glMultiTexCoord4xOES void __stdcall GLee_Lazy_glMultiTexCoord4xOES(GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {if (GLeeInit()) glMultiTexCoord4xOES(texture, s, t, r, q);} GLEEPFNGLMULTITEXCOORD4XOESPROC GLeeFuncPtr_glMultiTexCoord4xOES=GLee_Lazy_glMultiTexCoord4xOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord1xvOES #define GLEE_C_DEFINED_glMultiTexCoord1xvOES void __stdcall GLee_Lazy_glMultiTexCoord1xvOES(GLenum texture, const GLfixed * coords) {if (GLeeInit()) glMultiTexCoord1xvOES(texture, coords);} GLEEPFNGLMULTITEXCOORD1XVOESPROC GLeeFuncPtr_glMultiTexCoord1xvOES=GLee_Lazy_glMultiTexCoord1xvOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord2xvOES #define GLEE_C_DEFINED_glMultiTexCoord2xvOES void __stdcall GLee_Lazy_glMultiTexCoord2xvOES(GLenum texture, const GLfixed * coords) {if (GLeeInit()) glMultiTexCoord2xvOES(texture, coords);} GLEEPFNGLMULTITEXCOORD2XVOESPROC GLeeFuncPtr_glMultiTexCoord2xvOES=GLee_Lazy_glMultiTexCoord2xvOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord3xvOES #define GLEE_C_DEFINED_glMultiTexCoord3xvOES void __stdcall GLee_Lazy_glMultiTexCoord3xvOES(GLenum texture, const GLfixed * coords) {if (GLeeInit()) glMultiTexCoord3xvOES(texture, coords);} GLEEPFNGLMULTITEXCOORD3XVOESPROC GLeeFuncPtr_glMultiTexCoord3xvOES=GLee_Lazy_glMultiTexCoord3xvOES; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoord4xvOES #define GLEE_C_DEFINED_glMultiTexCoord4xvOES void __stdcall GLee_Lazy_glMultiTexCoord4xvOES(GLenum texture, const GLfixed * coords) {if (GLeeInit()) glMultiTexCoord4xvOES(texture, coords);} GLEEPFNGLMULTITEXCOORD4XVOESPROC GLeeFuncPtr_glMultiTexCoord4xvOES=GLee_Lazy_glMultiTexCoord4xvOES; #endif #ifndef GLEE_C_DEFINED_glNormal3xOES #define GLEE_C_DEFINED_glNormal3xOES void __stdcall GLee_Lazy_glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz) {if (GLeeInit()) glNormal3xOES(nx, ny, nz);} GLEEPFNGLNORMAL3XOESPROC GLeeFuncPtr_glNormal3xOES=GLee_Lazy_glNormal3xOES; #endif #ifndef GLEE_C_DEFINED_glNormal3xvOES #define GLEE_C_DEFINED_glNormal3xvOES void __stdcall GLee_Lazy_glNormal3xvOES(const GLfixed * coords) {if (GLeeInit()) glNormal3xvOES(coords);} GLEEPFNGLNORMAL3XVOESPROC GLeeFuncPtr_glNormal3xvOES=GLee_Lazy_glNormal3xvOES; #endif #ifndef GLEE_C_DEFINED_glOrthoxOES #define GLEE_C_DEFINED_glOrthoxOES void __stdcall GLee_Lazy_glOrthoxOES(GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f) {if (GLeeInit()) glOrthoxOES(l, r, b, t, n, f);} GLEEPFNGLORTHOXOESPROC GLeeFuncPtr_glOrthoxOES=GLee_Lazy_glOrthoxOES; #endif #ifndef GLEE_C_DEFINED_glPassThroughxOES #define GLEE_C_DEFINED_glPassThroughxOES void __stdcall GLee_Lazy_glPassThroughxOES(GLfixed token) {if (GLeeInit()) glPassThroughxOES(token);} GLEEPFNGLPASSTHROUGHXOESPROC GLeeFuncPtr_glPassThroughxOES=GLee_Lazy_glPassThroughxOES; #endif #ifndef GLEE_C_DEFINED_glPixelMapx #define GLEE_C_DEFINED_glPixelMapx void __stdcall GLee_Lazy_glPixelMapx(GLenum map, GLint size, const GLfixed * values) {if (GLeeInit()) glPixelMapx(map, size, values);} GLEEPFNGLPIXELMAPXPROC GLeeFuncPtr_glPixelMapx=GLee_Lazy_glPixelMapx; #endif #ifndef GLEE_C_DEFINED_glPixelStorex #define GLEE_C_DEFINED_glPixelStorex void __stdcall GLee_Lazy_glPixelStorex(GLenum pname, GLfixed param) {if (GLeeInit()) glPixelStorex(pname, param);} GLEEPFNGLPIXELSTOREXPROC GLeeFuncPtr_glPixelStorex=GLee_Lazy_glPixelStorex; #endif #ifndef GLEE_C_DEFINED_glPixelTransferxOES #define GLEE_C_DEFINED_glPixelTransferxOES void __stdcall GLee_Lazy_glPixelTransferxOES(GLenum pname, GLfixed param) {if (GLeeInit()) glPixelTransferxOES(pname, param);} GLEEPFNGLPIXELTRANSFERXOESPROC GLeeFuncPtr_glPixelTransferxOES=GLee_Lazy_glPixelTransferxOES; #endif #ifndef GLEE_C_DEFINED_glPixelZoomxOES #define GLEE_C_DEFINED_glPixelZoomxOES void __stdcall GLee_Lazy_glPixelZoomxOES(GLfixed xfactor, GLfixed yfactor) {if (GLeeInit()) glPixelZoomxOES(xfactor, yfactor);} GLEEPFNGLPIXELZOOMXOESPROC GLeeFuncPtr_glPixelZoomxOES=GLee_Lazy_glPixelZoomxOES; #endif #ifndef GLEE_C_DEFINED_glPointParameterxvOES #define GLEE_C_DEFINED_glPointParameterxvOES void __stdcall GLee_Lazy_glPointParameterxvOES(GLenum pname, const GLfixed * params) {if (GLeeInit()) glPointParameterxvOES(pname, params);} GLEEPFNGLPOINTPARAMETERXVOESPROC GLeeFuncPtr_glPointParameterxvOES=GLee_Lazy_glPointParameterxvOES; #endif #ifndef GLEE_C_DEFINED_glPointSizexOES #define GLEE_C_DEFINED_glPointSizexOES void __stdcall GLee_Lazy_glPointSizexOES(GLfixed size) {if (GLeeInit()) glPointSizexOES(size);} GLEEPFNGLPOINTSIZEXOESPROC GLeeFuncPtr_glPointSizexOES=GLee_Lazy_glPointSizexOES; #endif #ifndef GLEE_C_DEFINED_glPolygonOffsetxOES #define GLEE_C_DEFINED_glPolygonOffsetxOES void __stdcall GLee_Lazy_glPolygonOffsetxOES(GLfixed factor, GLfixed units) {if (GLeeInit()) glPolygonOffsetxOES(factor, units);} GLEEPFNGLPOLYGONOFFSETXOESPROC GLeeFuncPtr_glPolygonOffsetxOES=GLee_Lazy_glPolygonOffsetxOES; #endif #ifndef GLEE_C_DEFINED_glPrioritizeTexturesxOES #define GLEE_C_DEFINED_glPrioritizeTexturesxOES void __stdcall GLee_Lazy_glPrioritizeTexturesxOES(GLsizei n, const GLuint * textures, const GLfixed * priorities) {if (GLeeInit()) glPrioritizeTexturesxOES(n, textures, priorities);} GLEEPFNGLPRIORITIZETEXTURESXOESPROC GLeeFuncPtr_glPrioritizeTexturesxOES=GLee_Lazy_glPrioritizeTexturesxOES; #endif #ifndef GLEE_C_DEFINED_glRasterPos2xOES #define GLEE_C_DEFINED_glRasterPos2xOES void __stdcall GLee_Lazy_glRasterPos2xOES(GLfixed x, GLfixed y) {if (GLeeInit()) glRasterPos2xOES(x, y);} GLEEPFNGLRASTERPOS2XOESPROC GLeeFuncPtr_glRasterPos2xOES=GLee_Lazy_glRasterPos2xOES; #endif #ifndef GLEE_C_DEFINED_glRasterPos3xOES #define GLEE_C_DEFINED_glRasterPos3xOES void __stdcall GLee_Lazy_glRasterPos3xOES(GLfixed x, GLfixed y, GLfixed z) {if (GLeeInit()) glRasterPos3xOES(x, y, z);} GLEEPFNGLRASTERPOS3XOESPROC GLeeFuncPtr_glRasterPos3xOES=GLee_Lazy_glRasterPos3xOES; #endif #ifndef GLEE_C_DEFINED_glRasterPos4xOES #define GLEE_C_DEFINED_glRasterPos4xOES void __stdcall GLee_Lazy_glRasterPos4xOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w) {if (GLeeInit()) glRasterPos4xOES(x, y, z, w);} GLEEPFNGLRASTERPOS4XOESPROC GLeeFuncPtr_glRasterPos4xOES=GLee_Lazy_glRasterPos4xOES; #endif #ifndef GLEE_C_DEFINED_glRasterPos2xvOES #define GLEE_C_DEFINED_glRasterPos2xvOES void __stdcall GLee_Lazy_glRasterPos2xvOES(const GLfixed * coords) {if (GLeeInit()) glRasterPos2xvOES(coords);} GLEEPFNGLRASTERPOS2XVOESPROC GLeeFuncPtr_glRasterPos2xvOES=GLee_Lazy_glRasterPos2xvOES; #endif #ifndef GLEE_C_DEFINED_glRasterPos3xvOES #define GLEE_C_DEFINED_glRasterPos3xvOES void __stdcall GLee_Lazy_glRasterPos3xvOES(const GLfixed * coords) {if (GLeeInit()) glRasterPos3xvOES(coords);} GLEEPFNGLRASTERPOS3XVOESPROC GLeeFuncPtr_glRasterPos3xvOES=GLee_Lazy_glRasterPos3xvOES; #endif #ifndef GLEE_C_DEFINED_glRasterPos4xvOES #define GLEE_C_DEFINED_glRasterPos4xvOES void __stdcall GLee_Lazy_glRasterPos4xvOES(const GLfixed * coords) {if (GLeeInit()) glRasterPos4xvOES(coords);} GLEEPFNGLRASTERPOS4XVOESPROC GLeeFuncPtr_glRasterPos4xvOES=GLee_Lazy_glRasterPos4xvOES; #endif #ifndef GLEE_C_DEFINED_glRectxOES #define GLEE_C_DEFINED_glRectxOES void __stdcall GLee_Lazy_glRectxOES(GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2) {if (GLeeInit()) glRectxOES(x1, y1, x2, y2);} GLEEPFNGLRECTXOESPROC GLeeFuncPtr_glRectxOES=GLee_Lazy_glRectxOES; #endif #ifndef GLEE_C_DEFINED_glRectxvOES #define GLEE_C_DEFINED_glRectxvOES void __stdcall GLee_Lazy_glRectxvOES(const GLfixed * v1, const GLfixed * v2) {if (GLeeInit()) glRectxvOES(v1, v2);} GLEEPFNGLRECTXVOESPROC GLeeFuncPtr_glRectxvOES=GLee_Lazy_glRectxvOES; #endif #ifndef GLEE_C_DEFINED_glRotatexOES #define GLEE_C_DEFINED_glRotatexOES void __stdcall GLee_Lazy_glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {if (GLeeInit()) glRotatexOES(angle, x, y, z);} GLEEPFNGLROTATEXOESPROC GLeeFuncPtr_glRotatexOES=GLee_Lazy_glRotatexOES; #endif #ifndef GLEE_C_DEFINED_glSampleCoverageOES #define GLEE_C_DEFINED_glSampleCoverageOES void __stdcall GLee_Lazy_glSampleCoverageOES(GLfixed value, GLboolean invert) {if (GLeeInit()) glSampleCoverageOES(value, invert);} GLEEPFNGLSAMPLECOVERAGEOESPROC GLeeFuncPtr_glSampleCoverageOES=GLee_Lazy_glSampleCoverageOES; #endif #ifndef GLEE_C_DEFINED_glScalexOES #define GLEE_C_DEFINED_glScalexOES void __stdcall GLee_Lazy_glScalexOES(GLfixed x, GLfixed y, GLfixed z) {if (GLeeInit()) glScalexOES(x, y, z);} GLEEPFNGLSCALEXOESPROC GLeeFuncPtr_glScalexOES=GLee_Lazy_glScalexOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord1xOES #define GLEE_C_DEFINED_glTexCoord1xOES void __stdcall GLee_Lazy_glTexCoord1xOES(GLfixed s) {if (GLeeInit()) glTexCoord1xOES(s);} GLEEPFNGLTEXCOORD1XOESPROC GLeeFuncPtr_glTexCoord1xOES=GLee_Lazy_glTexCoord1xOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord2xOES #define GLEE_C_DEFINED_glTexCoord2xOES void __stdcall GLee_Lazy_glTexCoord2xOES(GLfixed s, GLfixed t) {if (GLeeInit()) glTexCoord2xOES(s, t);} GLEEPFNGLTEXCOORD2XOESPROC GLeeFuncPtr_glTexCoord2xOES=GLee_Lazy_glTexCoord2xOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord3xOES #define GLEE_C_DEFINED_glTexCoord3xOES void __stdcall GLee_Lazy_glTexCoord3xOES(GLfixed s, GLfixed t, GLfixed r) {if (GLeeInit()) glTexCoord3xOES(s, t, r);} GLEEPFNGLTEXCOORD3XOESPROC GLeeFuncPtr_glTexCoord3xOES=GLee_Lazy_glTexCoord3xOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord4xOES #define GLEE_C_DEFINED_glTexCoord4xOES void __stdcall GLee_Lazy_glTexCoord4xOES(GLfixed s, GLfixed t, GLfixed r, GLfixed q) {if (GLeeInit()) glTexCoord4xOES(s, t, r, q);} GLEEPFNGLTEXCOORD4XOESPROC GLeeFuncPtr_glTexCoord4xOES=GLee_Lazy_glTexCoord4xOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord1xvOES #define GLEE_C_DEFINED_glTexCoord1xvOES void __stdcall GLee_Lazy_glTexCoord1xvOES(const GLfixed * coords) {if (GLeeInit()) glTexCoord1xvOES(coords);} GLEEPFNGLTEXCOORD1XVOESPROC GLeeFuncPtr_glTexCoord1xvOES=GLee_Lazy_glTexCoord1xvOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord2xvOES #define GLEE_C_DEFINED_glTexCoord2xvOES void __stdcall GLee_Lazy_glTexCoord2xvOES(const GLfixed * coords) {if (GLeeInit()) glTexCoord2xvOES(coords);} GLEEPFNGLTEXCOORD2XVOESPROC GLeeFuncPtr_glTexCoord2xvOES=GLee_Lazy_glTexCoord2xvOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord3xvOES #define GLEE_C_DEFINED_glTexCoord3xvOES void __stdcall GLee_Lazy_glTexCoord3xvOES(const GLfixed * coords) {if (GLeeInit()) glTexCoord3xvOES(coords);} GLEEPFNGLTEXCOORD3XVOESPROC GLeeFuncPtr_glTexCoord3xvOES=GLee_Lazy_glTexCoord3xvOES; #endif #ifndef GLEE_C_DEFINED_glTexCoord4xvOES #define GLEE_C_DEFINED_glTexCoord4xvOES void __stdcall GLee_Lazy_glTexCoord4xvOES(const GLfixed * coords) {if (GLeeInit()) glTexCoord4xvOES(coords);} GLEEPFNGLTEXCOORD4XVOESPROC GLeeFuncPtr_glTexCoord4xvOES=GLee_Lazy_glTexCoord4xvOES; #endif #ifndef GLEE_C_DEFINED_glTexEnvxOES #define GLEE_C_DEFINED_glTexEnvxOES void __stdcall GLee_Lazy_glTexEnvxOES(GLenum target, GLenum pname, GLfixed param) {if (GLeeInit()) glTexEnvxOES(target, pname, param);} GLEEPFNGLTEXENVXOESPROC GLeeFuncPtr_glTexEnvxOES=GLee_Lazy_glTexEnvxOES; #endif #ifndef GLEE_C_DEFINED_glTexEnvxvOES #define GLEE_C_DEFINED_glTexEnvxvOES void __stdcall GLee_Lazy_glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed * params) {if (GLeeInit()) glTexEnvxvOES(target, pname, params);} GLEEPFNGLTEXENVXVOESPROC GLeeFuncPtr_glTexEnvxvOES=GLee_Lazy_glTexEnvxvOES; #endif #ifndef GLEE_C_DEFINED_glTexGenxOES #define GLEE_C_DEFINED_glTexGenxOES void __stdcall GLee_Lazy_glTexGenxOES(GLenum coord, GLenum pname, GLfixed param) {if (GLeeInit()) glTexGenxOES(coord, pname, param);} GLEEPFNGLTEXGENXOESPROC GLeeFuncPtr_glTexGenxOES=GLee_Lazy_glTexGenxOES; #endif #ifndef GLEE_C_DEFINED_glTexGenxvOES #define GLEE_C_DEFINED_glTexGenxvOES void __stdcall GLee_Lazy_glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed * params) {if (GLeeInit()) glTexGenxvOES(coord, pname, params);} GLEEPFNGLTEXGENXVOESPROC GLeeFuncPtr_glTexGenxvOES=GLee_Lazy_glTexGenxvOES; #endif #ifndef GLEE_C_DEFINED_glTexParameterxOES #define GLEE_C_DEFINED_glTexParameterxOES void __stdcall GLee_Lazy_glTexParameterxOES(GLenum target, GLenum pname, GLfixed param) {if (GLeeInit()) glTexParameterxOES(target, pname, param);} GLEEPFNGLTEXPARAMETERXOESPROC GLeeFuncPtr_glTexParameterxOES=GLee_Lazy_glTexParameterxOES; #endif #ifndef GLEE_C_DEFINED_glTexParameterxvOES #define GLEE_C_DEFINED_glTexParameterxvOES void __stdcall GLee_Lazy_glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed * params) {if (GLeeInit()) glTexParameterxvOES(target, pname, params);} GLEEPFNGLTEXPARAMETERXVOESPROC GLeeFuncPtr_glTexParameterxvOES=GLee_Lazy_glTexParameterxvOES; #endif #ifndef GLEE_C_DEFINED_glTranslatexOES #define GLEE_C_DEFINED_glTranslatexOES void __stdcall GLee_Lazy_glTranslatexOES(GLfixed x, GLfixed y, GLfixed z) {if (GLeeInit()) glTranslatexOES(x, y, z);} GLEEPFNGLTRANSLATEXOESPROC GLeeFuncPtr_glTranslatexOES=GLee_Lazy_glTranslatexOES; #endif #ifndef GLEE_C_DEFINED_glVertex2xOES #define GLEE_C_DEFINED_glVertex2xOES void __stdcall GLee_Lazy_glVertex2xOES(GLfixed x) {if (GLeeInit()) glVertex2xOES(x);} GLEEPFNGLVERTEX2XOESPROC GLeeFuncPtr_glVertex2xOES=GLee_Lazy_glVertex2xOES; #endif #ifndef GLEE_C_DEFINED_glVertex3xOES #define GLEE_C_DEFINED_glVertex3xOES void __stdcall GLee_Lazy_glVertex3xOES(GLfixed x, GLfixed y) {if (GLeeInit()) glVertex3xOES(x, y);} GLEEPFNGLVERTEX3XOESPROC GLeeFuncPtr_glVertex3xOES=GLee_Lazy_glVertex3xOES; #endif #ifndef GLEE_C_DEFINED_glVertex4xOES #define GLEE_C_DEFINED_glVertex4xOES void __stdcall GLee_Lazy_glVertex4xOES(GLfixed x, GLfixed y, GLfixed z) {if (GLeeInit()) glVertex4xOES(x, y, z);} GLEEPFNGLVERTEX4XOESPROC GLeeFuncPtr_glVertex4xOES=GLee_Lazy_glVertex4xOES; #endif #ifndef GLEE_C_DEFINED_glVertex2xvOES #define GLEE_C_DEFINED_glVertex2xvOES void __stdcall GLee_Lazy_glVertex2xvOES(const GLfixed * coords) {if (GLeeInit()) glVertex2xvOES(coords);} GLEEPFNGLVERTEX2XVOESPROC GLeeFuncPtr_glVertex2xvOES=GLee_Lazy_glVertex2xvOES; #endif #ifndef GLEE_C_DEFINED_glVertex3xvOES #define GLEE_C_DEFINED_glVertex3xvOES void __stdcall GLee_Lazy_glVertex3xvOES(const GLfixed * coords) {if (GLeeInit()) glVertex3xvOES(coords);} GLEEPFNGLVERTEX3XVOESPROC GLeeFuncPtr_glVertex3xvOES=GLee_Lazy_glVertex3xvOES; #endif #ifndef GLEE_C_DEFINED_glVertex4xvOES #define GLEE_C_DEFINED_glVertex4xvOES void __stdcall GLee_Lazy_glVertex4xvOES(const GLfixed * coords) {if (GLeeInit()) glVertex4xvOES(coords);} GLEEPFNGLVERTEX4XVOESPROC GLeeFuncPtr_glVertex4xvOES=GLee_Lazy_glVertex4xvOES; #endif #endif /* GL_OES_single_precision */ #ifdef __GLEE_GL_OES_single_precision #ifndef GLEE_C_DEFINED_glDepthRangefOES #define GLEE_C_DEFINED_glDepthRangefOES void __stdcall GLee_Lazy_glDepthRangefOES(GLclampf n, GLclampf f) {if (GLeeInit()) glDepthRangefOES(n, f);} GLEEPFNGLDEPTHRANGEFOESPROC GLeeFuncPtr_glDepthRangefOES=GLee_Lazy_glDepthRangefOES; #endif #ifndef GLEE_C_DEFINED_glFrustumfOES #define GLEE_C_DEFINED_glFrustumfOES void __stdcall GLee_Lazy_glFrustumfOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) {if (GLeeInit()) glFrustumfOES(l, r, b, t, n, f);} GLEEPFNGLFRUSTUMFOESPROC GLeeFuncPtr_glFrustumfOES=GLee_Lazy_glFrustumfOES; #endif #ifndef GLEE_C_DEFINED_glOrthofOES #define GLEE_C_DEFINED_glOrthofOES void __stdcall GLee_Lazy_glOrthofOES(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) {if (GLeeInit()) glOrthofOES(l, r, b, t, n, f);} GLEEPFNGLORTHOFOESPROC GLeeFuncPtr_glOrthofOES=GLee_Lazy_glOrthofOES; #endif #ifndef GLEE_C_DEFINED_glClipPlanefOES #define GLEE_C_DEFINED_glClipPlanefOES void __stdcall GLee_Lazy_glClipPlanefOES(GLenum plane, const GLfloat * equation) {if (GLeeInit()) glClipPlanefOES(plane, equation);} GLEEPFNGLCLIPPLANEFOESPROC GLeeFuncPtr_glClipPlanefOES=GLee_Lazy_glClipPlanefOES; #endif #ifndef GLEE_C_DEFINED_glClearDepthfOES #define GLEE_C_DEFINED_glClearDepthfOES void __stdcall GLee_Lazy_glClearDepthfOES(GLclampd depth) {if (GLeeInit()) glClearDepthfOES(depth);} GLEEPFNGLCLEARDEPTHFOESPROC GLeeFuncPtr_glClearDepthfOES=GLee_Lazy_glClearDepthfOES; #endif #ifndef GLEE_C_DEFINED_glGetClipPlanefOES #define GLEE_C_DEFINED_glGetClipPlanefOES void __stdcall GLee_Lazy_glGetClipPlanefOES(GLenum plane, GLfloat * equation) {if (GLeeInit()) glGetClipPlanefOES(plane, equation);} GLEEPFNGLGETCLIPPLANEFOESPROC GLeeFuncPtr_glGetClipPlanefOES=GLee_Lazy_glGetClipPlanefOES; #endif #endif /* GL_OES_compressed_paletted_texture */ #ifdef __GLEE_GL_OES_compressed_paletted_texture #endif /* GL_OES_read_format */ #ifdef __GLEE_GL_OES_read_format #endif /* GL_OES_query_matrix */ #ifdef __GLEE_GL_OES_query_matrix #ifndef GLEE_C_DEFINED_glQueryMatrixxOES #define GLEE_C_DEFINED_glQueryMatrixxOES GLbitfield __stdcall GLee_Lazy_glQueryMatrixxOES(const GLfixed * mantissa, const GLint * exponent) {if (GLeeInit()) return glQueryMatrixxOES(mantissa, exponent); return (GLbitfield)0;} GLEEPFNGLQUERYMATRIXXOESPROC GLeeFuncPtr_glQueryMatrixxOES=GLee_Lazy_glQueryMatrixxOES; #endif #endif /* GL_EXT_depth_bounds_test */ #ifdef __GLEE_GL_EXT_depth_bounds_test #ifndef GLEE_C_DEFINED_glDepthBoundsEXT #define GLEE_C_DEFINED_glDepthBoundsEXT void __stdcall GLee_Lazy_glDepthBoundsEXT(GLclampd zmin, GLclampd zmax) {if (GLeeInit()) glDepthBoundsEXT(zmin, zmax);} GLEEPFNGLDEPTHBOUNDSEXTPROC GLeeFuncPtr_glDepthBoundsEXT=GLee_Lazy_glDepthBoundsEXT; #endif #endif /* GL_EXT_texture_mirror_clamp */ #ifdef __GLEE_GL_EXT_texture_mirror_clamp #endif /* GL_EXT_blend_equation_separate */ #ifdef __GLEE_GL_EXT_blend_equation_separate #ifndef GLEE_C_DEFINED_glBlendEquationSeparateEXT #define GLEE_C_DEFINED_glBlendEquationSeparateEXT void __stdcall GLee_Lazy_glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeAlpha) {if (GLeeInit()) glBlendEquationSeparateEXT(modeRGB, modeAlpha);} GLEEPFNGLBLENDEQUATIONSEPARATEEXTPROC GLeeFuncPtr_glBlendEquationSeparateEXT=GLee_Lazy_glBlendEquationSeparateEXT; #endif #endif /* GL_MESA_pack_invert */ #ifdef __GLEE_GL_MESA_pack_invert #endif /* GL_MESA_ycbcr_texture */ #ifdef __GLEE_GL_MESA_ycbcr_texture #endif /* GL_EXT_pixel_buffer_object */ #ifdef __GLEE_GL_EXT_pixel_buffer_object #endif /* GL_NV_fragment_program_option */ #ifdef __GLEE_GL_NV_fragment_program_option #endif /* GL_NV_fragment_program2 */ #ifdef __GLEE_GL_NV_fragment_program2 #endif /* GL_NV_vertex_program2_option */ #ifdef __GLEE_GL_NV_vertex_program2_option #endif /* GL_NV_vertex_program3 */ #ifdef __GLEE_GL_NV_vertex_program3 #endif /* GL_EXT_framebuffer_object */ #ifdef __GLEE_GL_EXT_framebuffer_object #ifndef GLEE_C_DEFINED_glIsRenderbufferEXT #define GLEE_C_DEFINED_glIsRenderbufferEXT GLboolean __stdcall GLee_Lazy_glIsRenderbufferEXT(GLuint renderbuffer) {if (GLeeInit()) return glIsRenderbufferEXT(renderbuffer); return (GLboolean)0;} GLEEPFNGLISRENDERBUFFEREXTPROC GLeeFuncPtr_glIsRenderbufferEXT=GLee_Lazy_glIsRenderbufferEXT; #endif #ifndef GLEE_C_DEFINED_glBindRenderbufferEXT #define GLEE_C_DEFINED_glBindRenderbufferEXT void __stdcall GLee_Lazy_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer) {if (GLeeInit()) glBindRenderbufferEXT(target, renderbuffer);} GLEEPFNGLBINDRENDERBUFFEREXTPROC GLeeFuncPtr_glBindRenderbufferEXT=GLee_Lazy_glBindRenderbufferEXT; #endif #ifndef GLEE_C_DEFINED_glDeleteRenderbuffersEXT #define GLEE_C_DEFINED_glDeleteRenderbuffersEXT void __stdcall GLee_Lazy_glDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers) {if (GLeeInit()) glDeleteRenderbuffersEXT(n, renderbuffers);} GLEEPFNGLDELETERENDERBUFFERSEXTPROC GLeeFuncPtr_glDeleteRenderbuffersEXT=GLee_Lazy_glDeleteRenderbuffersEXT; #endif #ifndef GLEE_C_DEFINED_glGenRenderbuffersEXT #define GLEE_C_DEFINED_glGenRenderbuffersEXT void __stdcall GLee_Lazy_glGenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers) {if (GLeeInit()) glGenRenderbuffersEXT(n, renderbuffers);} GLEEPFNGLGENRENDERBUFFERSEXTPROC GLeeFuncPtr_glGenRenderbuffersEXT=GLee_Lazy_glGenRenderbuffersEXT; #endif #ifndef GLEE_C_DEFINED_glRenderbufferStorageEXT #define GLEE_C_DEFINED_glRenderbufferStorageEXT void __stdcall GLee_Lazy_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {if (GLeeInit()) glRenderbufferStorageEXT(target, internalformat, width, height);} GLEEPFNGLRENDERBUFFERSTORAGEEXTPROC GLeeFuncPtr_glRenderbufferStorageEXT=GLee_Lazy_glRenderbufferStorageEXT; #endif #ifndef GLEE_C_DEFINED_glGetRenderbufferParameterivEXT #define GLEE_C_DEFINED_glGetRenderbufferParameterivEXT void __stdcall GLee_Lazy_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetRenderbufferParameterivEXT(target, pname, params);} GLEEPFNGLGETRENDERBUFFERPARAMETERIVEXTPROC GLeeFuncPtr_glGetRenderbufferParameterivEXT=GLee_Lazy_glGetRenderbufferParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glIsFramebufferEXT #define GLEE_C_DEFINED_glIsFramebufferEXT GLboolean __stdcall GLee_Lazy_glIsFramebufferEXT(GLuint framebuffer) {if (GLeeInit()) return glIsFramebufferEXT(framebuffer); return (GLboolean)0;} GLEEPFNGLISFRAMEBUFFEREXTPROC GLeeFuncPtr_glIsFramebufferEXT=GLee_Lazy_glIsFramebufferEXT; #endif #ifndef GLEE_C_DEFINED_glBindFramebufferEXT #define GLEE_C_DEFINED_glBindFramebufferEXT void __stdcall GLee_Lazy_glBindFramebufferEXT(GLenum target, GLuint framebuffer) {if (GLeeInit()) glBindFramebufferEXT(target, framebuffer);} GLEEPFNGLBINDFRAMEBUFFEREXTPROC GLeeFuncPtr_glBindFramebufferEXT=GLee_Lazy_glBindFramebufferEXT; #endif #ifndef GLEE_C_DEFINED_glDeleteFramebuffersEXT #define GLEE_C_DEFINED_glDeleteFramebuffersEXT void __stdcall GLee_Lazy_glDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers) {if (GLeeInit()) glDeleteFramebuffersEXT(n, framebuffers);} GLEEPFNGLDELETEFRAMEBUFFERSEXTPROC GLeeFuncPtr_glDeleteFramebuffersEXT=GLee_Lazy_glDeleteFramebuffersEXT; #endif #ifndef GLEE_C_DEFINED_glGenFramebuffersEXT #define GLEE_C_DEFINED_glGenFramebuffersEXT void __stdcall GLee_Lazy_glGenFramebuffersEXT(GLsizei n, GLuint * framebuffers) {if (GLeeInit()) glGenFramebuffersEXT(n, framebuffers);} GLEEPFNGLGENFRAMEBUFFERSEXTPROC GLeeFuncPtr_glGenFramebuffersEXT=GLee_Lazy_glGenFramebuffersEXT; #endif #ifndef GLEE_C_DEFINED_glCheckFramebufferStatusEXT #define GLEE_C_DEFINED_glCheckFramebufferStatusEXT GLenum __stdcall GLee_Lazy_glCheckFramebufferStatusEXT(GLenum target) {if (GLeeInit()) return glCheckFramebufferStatusEXT(target); return (GLenum)0;} GLEEPFNGLCHECKFRAMEBUFFERSTATUSEXTPROC GLeeFuncPtr_glCheckFramebufferStatusEXT=GLee_Lazy_glCheckFramebufferStatusEXT; #endif #ifndef GLEE_C_DEFINED_glFramebufferTexture1DEXT #define GLEE_C_DEFINED_glFramebufferTexture1DEXT void __stdcall GLee_Lazy_glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {if (GLeeInit()) glFramebufferTexture1DEXT(target, attachment, textarget, texture, level);} GLEEPFNGLFRAMEBUFFERTEXTURE1DEXTPROC GLeeFuncPtr_glFramebufferTexture1DEXT=GLee_Lazy_glFramebufferTexture1DEXT; #endif #ifndef GLEE_C_DEFINED_glFramebufferTexture2DEXT #define GLEE_C_DEFINED_glFramebufferTexture2DEXT void __stdcall GLee_Lazy_glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {if (GLeeInit()) glFramebufferTexture2DEXT(target, attachment, textarget, texture, level);} GLEEPFNGLFRAMEBUFFERTEXTURE2DEXTPROC GLeeFuncPtr_glFramebufferTexture2DEXT=GLee_Lazy_glFramebufferTexture2DEXT; #endif #ifndef GLEE_C_DEFINED_glFramebufferTexture3DEXT #define GLEE_C_DEFINED_glFramebufferTexture3DEXT void __stdcall GLee_Lazy_glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) {if (GLeeInit()) glFramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset);} GLEEPFNGLFRAMEBUFFERTEXTURE3DEXTPROC GLeeFuncPtr_glFramebufferTexture3DEXT=GLee_Lazy_glFramebufferTexture3DEXT; #endif #ifndef GLEE_C_DEFINED_glFramebufferRenderbufferEXT #define GLEE_C_DEFINED_glFramebufferRenderbufferEXT void __stdcall GLee_Lazy_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {if (GLeeInit()) glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);} GLEEPFNGLFRAMEBUFFERRENDERBUFFEREXTPROC GLeeFuncPtr_glFramebufferRenderbufferEXT=GLee_Lazy_glFramebufferRenderbufferEXT; #endif #ifndef GLEE_C_DEFINED_glGetFramebufferAttachmentParameterivEXT #define GLEE_C_DEFINED_glGetFramebufferAttachmentParameterivEXT void __stdcall GLee_Lazy_glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint * params) {if (GLeeInit()) glGetFramebufferAttachmentParameterivEXT(target, attachment, pname, params);} GLEEPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC GLeeFuncPtr_glGetFramebufferAttachmentParameterivEXT=GLee_Lazy_glGetFramebufferAttachmentParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glGenerateMipmapEXT #define GLEE_C_DEFINED_glGenerateMipmapEXT void __stdcall GLee_Lazy_glGenerateMipmapEXT(GLenum target) {if (GLeeInit()) glGenerateMipmapEXT(target);} GLEEPFNGLGENERATEMIPMAPEXTPROC GLeeFuncPtr_glGenerateMipmapEXT=GLee_Lazy_glGenerateMipmapEXT; #endif #endif /* GL_GREMEDY_string_marker */ #ifdef __GLEE_GL_GREMEDY_string_marker #ifndef GLEE_C_DEFINED_glStringMarkerGREMEDY #define GLEE_C_DEFINED_glStringMarkerGREMEDY void __stdcall GLee_Lazy_glStringMarkerGREMEDY(GLsizei len, const GLvoid * string) {if (GLeeInit()) glStringMarkerGREMEDY(len, string);} GLEEPFNGLSTRINGMARKERGREMEDYPROC GLeeFuncPtr_glStringMarkerGREMEDY=GLee_Lazy_glStringMarkerGREMEDY; #endif #endif /* GL_EXT_packed_depth_stencil */ #ifdef __GLEE_GL_EXT_packed_depth_stencil #endif /* GL_EXT_stencil_clear_tag */ #ifdef __GLEE_GL_EXT_stencil_clear_tag #ifndef GLEE_C_DEFINED_glStencilClearTagEXT #define GLEE_C_DEFINED_glStencilClearTagEXT void __stdcall GLee_Lazy_glStencilClearTagEXT(GLsizei stencilTagBits, GLuint stencilClearTag) {if (GLeeInit()) glStencilClearTagEXT(stencilTagBits, stencilClearTag);} GLEEPFNGLSTENCILCLEARTAGEXTPROC GLeeFuncPtr_glStencilClearTagEXT=GLee_Lazy_glStencilClearTagEXT; #endif #endif /* GL_EXT_texture_sRGB */ #ifdef __GLEE_GL_EXT_texture_sRGB #endif /* GL_EXT_framebuffer_blit */ #ifdef __GLEE_GL_EXT_framebuffer_blit #ifndef GLEE_C_DEFINED_glBlitFramebufferEXT #define GLEE_C_DEFINED_glBlitFramebufferEXT void __stdcall GLee_Lazy_glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {if (GLeeInit()) glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);} GLEEPFNGLBLITFRAMEBUFFEREXTPROC GLeeFuncPtr_glBlitFramebufferEXT=GLee_Lazy_glBlitFramebufferEXT; #endif #endif /* GL_EXT_framebuffer_multisample */ #ifdef __GLEE_GL_EXT_framebuffer_multisample #ifndef GLEE_C_DEFINED_glRenderbufferStorageMultisampleEXT #define GLEE_C_DEFINED_glRenderbufferStorageMultisampleEXT void __stdcall GLee_Lazy_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {if (GLeeInit()) glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);} GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC GLeeFuncPtr_glRenderbufferStorageMultisampleEXT=GLee_Lazy_glRenderbufferStorageMultisampleEXT; #endif #endif /* GL_MESAX_texture_stack */ #ifdef __GLEE_GL_MESAX_texture_stack #endif /* GL_EXT_timer_query */ #ifdef __GLEE_GL_EXT_timer_query #ifndef GLEE_C_DEFINED_glGetQueryObjecti64vEXT #define GLEE_C_DEFINED_glGetQueryObjecti64vEXT void __stdcall GLee_Lazy_glGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64EXT * params) {if (GLeeInit()) glGetQueryObjecti64vEXT(id, pname, params);} GLEEPFNGLGETQUERYOBJECTI64VEXTPROC GLeeFuncPtr_glGetQueryObjecti64vEXT=GLee_Lazy_glGetQueryObjecti64vEXT; #endif #ifndef GLEE_C_DEFINED_glGetQueryObjectui64vEXT #define GLEE_C_DEFINED_glGetQueryObjectui64vEXT void __stdcall GLee_Lazy_glGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64EXT * params) {if (GLeeInit()) glGetQueryObjectui64vEXT(id, pname, params);} GLEEPFNGLGETQUERYOBJECTUI64VEXTPROC GLeeFuncPtr_glGetQueryObjectui64vEXT=GLee_Lazy_glGetQueryObjectui64vEXT; #endif #endif /* GL_EXT_gpu_program_parameters */ #ifdef __GLEE_GL_EXT_gpu_program_parameters #ifndef GLEE_C_DEFINED_glProgramEnvParameters4fvEXT #define GLEE_C_DEFINED_glProgramEnvParameters4fvEXT void __stdcall GLee_Lazy_glProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat * params) {if (GLeeInit()) glProgramEnvParameters4fvEXT(target, index, count, params);} GLEEPFNGLPROGRAMENVPARAMETERS4FVEXTPROC GLeeFuncPtr_glProgramEnvParameters4fvEXT=GLee_Lazy_glProgramEnvParameters4fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramLocalParameters4fvEXT #define GLEE_C_DEFINED_glProgramLocalParameters4fvEXT void __stdcall GLee_Lazy_glProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat * params) {if (GLeeInit()) glProgramLocalParameters4fvEXT(target, index, count, params);} GLEEPFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC GLeeFuncPtr_glProgramLocalParameters4fvEXT=GLee_Lazy_glProgramLocalParameters4fvEXT; #endif #endif /* GL_APPLE_flush_buffer_range */ #ifdef __GLEE_GL_APPLE_flush_buffer_range #ifndef GLEE_C_DEFINED_glBufferParameteriAPPLE #define GLEE_C_DEFINED_glBufferParameteriAPPLE void __stdcall GLee_Lazy_glBufferParameteriAPPLE(GLenum target, GLenum pname, GLint param) {if (GLeeInit()) glBufferParameteriAPPLE(target, pname, param);} GLEEPFNGLBUFFERPARAMETERIAPPLEPROC GLeeFuncPtr_glBufferParameteriAPPLE=GLee_Lazy_glBufferParameteriAPPLE; #endif #ifndef GLEE_C_DEFINED_glFlushMappedBufferRangeAPPLE #define GLEE_C_DEFINED_glFlushMappedBufferRangeAPPLE void __stdcall GLee_Lazy_glFlushMappedBufferRangeAPPLE(GLenum target, GLintptr offset, GLsizeiptr size) {if (GLeeInit()) glFlushMappedBufferRangeAPPLE(target, offset, size);} GLEEPFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC GLeeFuncPtr_glFlushMappedBufferRangeAPPLE=GLee_Lazy_glFlushMappedBufferRangeAPPLE; #endif #endif /* GL_EXT_gpu_shader4 */ #ifdef __GLEE_GL_EXT_gpu_shader4 #ifndef GLEE_C_DEFINED_glGetUniformuivEXT #define GLEE_C_DEFINED_glGetUniformuivEXT void __stdcall GLee_Lazy_glGetUniformuivEXT(GLuint program, GLint location, GLuint * params) {if (GLeeInit()) glGetUniformuivEXT(program, location, params);} GLEEPFNGLGETUNIFORMUIVEXTPROC GLeeFuncPtr_glGetUniformuivEXT=GLee_Lazy_glGetUniformuivEXT; #endif #ifndef GLEE_C_DEFINED_glBindFragDataLocationEXT #define GLEE_C_DEFINED_glBindFragDataLocationEXT void __stdcall GLee_Lazy_glBindFragDataLocationEXT(GLuint program, GLuint color, const GLchar * name) {if (GLeeInit()) glBindFragDataLocationEXT(program, color, name);} GLEEPFNGLBINDFRAGDATALOCATIONEXTPROC GLeeFuncPtr_glBindFragDataLocationEXT=GLee_Lazy_glBindFragDataLocationEXT; #endif #ifndef GLEE_C_DEFINED_glGetFragDataLocationEXT #define GLEE_C_DEFINED_glGetFragDataLocationEXT GLint __stdcall GLee_Lazy_glGetFragDataLocationEXT(GLuint program, const GLchar * name) {if (GLeeInit()) return glGetFragDataLocationEXT(program, name); return (GLint)0;} GLEEPFNGLGETFRAGDATALOCATIONEXTPROC GLeeFuncPtr_glGetFragDataLocationEXT=GLee_Lazy_glGetFragDataLocationEXT; #endif #ifndef GLEE_C_DEFINED_glUniform1uiEXT #define GLEE_C_DEFINED_glUniform1uiEXT void __stdcall GLee_Lazy_glUniform1uiEXT(GLint location, GLuint v0) {if (GLeeInit()) glUniform1uiEXT(location, v0);} GLEEPFNGLUNIFORM1UIEXTPROC GLeeFuncPtr_glUniform1uiEXT=GLee_Lazy_glUniform1uiEXT; #endif #ifndef GLEE_C_DEFINED_glUniform2uiEXT #define GLEE_C_DEFINED_glUniform2uiEXT void __stdcall GLee_Lazy_glUniform2uiEXT(GLint location, GLuint v0, GLuint v1) {if (GLeeInit()) glUniform2uiEXT(location, v0, v1);} GLEEPFNGLUNIFORM2UIEXTPROC GLeeFuncPtr_glUniform2uiEXT=GLee_Lazy_glUniform2uiEXT; #endif #ifndef GLEE_C_DEFINED_glUniform3uiEXT #define GLEE_C_DEFINED_glUniform3uiEXT void __stdcall GLee_Lazy_glUniform3uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2) {if (GLeeInit()) glUniform3uiEXT(location, v0, v1, v2);} GLEEPFNGLUNIFORM3UIEXTPROC GLeeFuncPtr_glUniform3uiEXT=GLee_Lazy_glUniform3uiEXT; #endif #ifndef GLEE_C_DEFINED_glUniform4uiEXT #define GLEE_C_DEFINED_glUniform4uiEXT void __stdcall GLee_Lazy_glUniform4uiEXT(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {if (GLeeInit()) glUniform4uiEXT(location, v0, v1, v2, v3);} GLEEPFNGLUNIFORM4UIEXTPROC GLeeFuncPtr_glUniform4uiEXT=GLee_Lazy_glUniform4uiEXT; #endif #ifndef GLEE_C_DEFINED_glUniform1uivEXT #define GLEE_C_DEFINED_glUniform1uivEXT void __stdcall GLee_Lazy_glUniform1uivEXT(GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glUniform1uivEXT(location, count, value);} GLEEPFNGLUNIFORM1UIVEXTPROC GLeeFuncPtr_glUniform1uivEXT=GLee_Lazy_glUniform1uivEXT; #endif #ifndef GLEE_C_DEFINED_glUniform2uivEXT #define GLEE_C_DEFINED_glUniform2uivEXT void __stdcall GLee_Lazy_glUniform2uivEXT(GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glUniform2uivEXT(location, count, value);} GLEEPFNGLUNIFORM2UIVEXTPROC GLeeFuncPtr_glUniform2uivEXT=GLee_Lazy_glUniform2uivEXT; #endif #ifndef GLEE_C_DEFINED_glUniform3uivEXT #define GLEE_C_DEFINED_glUniform3uivEXT void __stdcall GLee_Lazy_glUniform3uivEXT(GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glUniform3uivEXT(location, count, value);} GLEEPFNGLUNIFORM3UIVEXTPROC GLeeFuncPtr_glUniform3uivEXT=GLee_Lazy_glUniform3uivEXT; #endif #ifndef GLEE_C_DEFINED_glUniform4uivEXT #define GLEE_C_DEFINED_glUniform4uivEXT void __stdcall GLee_Lazy_glUniform4uivEXT(GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glUniform4uivEXT(location, count, value);} GLEEPFNGLUNIFORM4UIVEXTPROC GLeeFuncPtr_glUniform4uivEXT=GLee_Lazy_glUniform4uivEXT; #endif #endif /* GL_EXT_draw_instanced */ #ifdef __GLEE_GL_EXT_draw_instanced #ifndef GLEE_C_DEFINED_glDrawArraysInstancedEXT #define GLEE_C_DEFINED_glDrawArraysInstancedEXT void __stdcall GLee_Lazy_glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount) {if (GLeeInit()) glDrawArraysInstancedEXT(mode, start, count, primcount);} GLEEPFNGLDRAWARRAYSINSTANCEDEXTPROC GLeeFuncPtr_glDrawArraysInstancedEXT=GLee_Lazy_glDrawArraysInstancedEXT; #endif #ifndef GLEE_C_DEFINED_glDrawElementsInstancedEXT #define GLEE_C_DEFINED_glDrawElementsInstancedEXT void __stdcall GLee_Lazy_glDrawElementsInstancedEXT(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount) {if (GLeeInit()) glDrawElementsInstancedEXT(mode, count, type, indices, primcount);} GLEEPFNGLDRAWELEMENTSINSTANCEDEXTPROC GLeeFuncPtr_glDrawElementsInstancedEXT=GLee_Lazy_glDrawElementsInstancedEXT; #endif #endif /* GL_EXT_packed_float */ #ifdef __GLEE_GL_EXT_packed_float #endif /* GL_EXT_texture_array */ #ifdef __GLEE_GL_EXT_texture_array #endif /* GL_EXT_texture_buffer_object */ #ifdef __GLEE_GL_EXT_texture_buffer_object #ifndef GLEE_C_DEFINED_glTexBufferEXT #define GLEE_C_DEFINED_glTexBufferEXT void __stdcall GLee_Lazy_glTexBufferEXT(GLenum target, GLenum internalformat, GLuint buffer) {if (GLeeInit()) glTexBufferEXT(target, internalformat, buffer);} GLEEPFNGLTEXBUFFEREXTPROC GLeeFuncPtr_glTexBufferEXT=GLee_Lazy_glTexBufferEXT; #endif #endif /* GL_EXT_texture_compression_latc */ #ifdef __GLEE_GL_EXT_texture_compression_latc #endif /* GL_EXT_texture_compression_rgtc */ #ifdef __GLEE_GL_EXT_texture_compression_rgtc #endif /* GL_EXT_texture_shared_exponent */ #ifdef __GLEE_GL_EXT_texture_shared_exponent #endif /* GL_NV_depth_buffer_float */ #ifdef __GLEE_GL_NV_depth_buffer_float #ifndef GLEE_C_DEFINED_glDepthRangedNV #define GLEE_C_DEFINED_glDepthRangedNV void __stdcall GLee_Lazy_glDepthRangedNV(GLdouble zNear, GLdouble zFar) {if (GLeeInit()) glDepthRangedNV(zNear, zFar);} GLEEPFNGLDEPTHRANGEDNVPROC GLeeFuncPtr_glDepthRangedNV=GLee_Lazy_glDepthRangedNV; #endif #ifndef GLEE_C_DEFINED_glClearDepthdNV #define GLEE_C_DEFINED_glClearDepthdNV void __stdcall GLee_Lazy_glClearDepthdNV(GLdouble depth) {if (GLeeInit()) glClearDepthdNV(depth);} GLEEPFNGLCLEARDEPTHDNVPROC GLeeFuncPtr_glClearDepthdNV=GLee_Lazy_glClearDepthdNV; #endif #ifndef GLEE_C_DEFINED_glDepthBoundsdNV #define GLEE_C_DEFINED_glDepthBoundsdNV void __stdcall GLee_Lazy_glDepthBoundsdNV(GLdouble zmin, GLdouble zmax) {if (GLeeInit()) glDepthBoundsdNV(zmin, zmax);} GLEEPFNGLDEPTHBOUNDSDNVPROC GLeeFuncPtr_glDepthBoundsdNV=GLee_Lazy_glDepthBoundsdNV; #endif #endif /* GL_NV_framebuffer_multisample_coverage */ #ifdef __GLEE_GL_NV_framebuffer_multisample_coverage #ifndef GLEE_C_DEFINED_glRenderbufferStorageMultisampleCoverageNV #define GLEE_C_DEFINED_glRenderbufferStorageMultisampleCoverageNV void __stdcall GLee_Lazy_glRenderbufferStorageMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height) {if (GLeeInit()) glRenderbufferStorageMultisampleCoverageNV(target, coverageSamples, colorSamples, internalformat, width, height);} GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC GLeeFuncPtr_glRenderbufferStorageMultisampleCoverageNV=GLee_Lazy_glRenderbufferStorageMultisampleCoverageNV; #endif #endif /* GL_EXT_framebuffer_sRGB */ #ifdef __GLEE_GL_EXT_framebuffer_sRGB #endif /* GL_NV_geometry_shader4 */ #ifdef __GLEE_GL_NV_geometry_shader4 #endif /* GL_NV_parameter_buffer_object */ #ifdef __GLEE_GL_NV_parameter_buffer_object #ifndef GLEE_C_DEFINED_glProgramBufferParametersfvNV #define GLEE_C_DEFINED_glProgramBufferParametersfvNV void __stdcall GLee_Lazy_glProgramBufferParametersfvNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat * params) {if (GLeeInit()) glProgramBufferParametersfvNV(target, bindingIndex, wordIndex, count, params);} GLEEPFNGLPROGRAMBUFFERPARAMETERSFVNVPROC GLeeFuncPtr_glProgramBufferParametersfvNV=GLee_Lazy_glProgramBufferParametersfvNV; #endif #ifndef GLEE_C_DEFINED_glProgramBufferParametersIivNV #define GLEE_C_DEFINED_glProgramBufferParametersIivNV void __stdcall GLee_Lazy_glProgramBufferParametersIivNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint * params) {if (GLeeInit()) glProgramBufferParametersIivNV(target, bindingIndex, wordIndex, count, params);} GLEEPFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC GLeeFuncPtr_glProgramBufferParametersIivNV=GLee_Lazy_glProgramBufferParametersIivNV; #endif #ifndef GLEE_C_DEFINED_glProgramBufferParametersIuivNV #define GLEE_C_DEFINED_glProgramBufferParametersIuivNV void __stdcall GLee_Lazy_glProgramBufferParametersIuivNV(GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint * params) {if (GLeeInit()) glProgramBufferParametersIuivNV(target, bindingIndex, wordIndex, count, params);} GLEEPFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC GLeeFuncPtr_glProgramBufferParametersIuivNV=GLee_Lazy_glProgramBufferParametersIuivNV; #endif #endif /* GL_EXT_draw_buffers2 */ #ifdef __GLEE_GL_EXT_draw_buffers2 #ifndef GLEE_C_DEFINED_glColorMaskIndexedEXT #define GLEE_C_DEFINED_glColorMaskIndexedEXT void __stdcall GLee_Lazy_glColorMaskIndexedEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) {if (GLeeInit()) glColorMaskIndexedEXT(index, r, g, b, a);} GLEEPFNGLCOLORMASKINDEXEDEXTPROC GLeeFuncPtr_glColorMaskIndexedEXT=GLee_Lazy_glColorMaskIndexedEXT; #endif #ifndef GLEE_C_DEFINED_glGetBooleanIndexedvEXT #define GLEE_C_DEFINED_glGetBooleanIndexedvEXT void __stdcall GLee_Lazy_glGetBooleanIndexedvEXT(GLenum target, GLuint index, GLboolean * data) {if (GLeeInit()) glGetBooleanIndexedvEXT(target, index, data);} GLEEPFNGLGETBOOLEANINDEXEDVEXTPROC GLeeFuncPtr_glGetBooleanIndexedvEXT=GLee_Lazy_glGetBooleanIndexedvEXT; #endif #ifndef GLEE_C_DEFINED_glGetIntegerIndexedvEXT #define GLEE_C_DEFINED_glGetIntegerIndexedvEXT void __stdcall GLee_Lazy_glGetIntegerIndexedvEXT(GLenum target, GLuint index, GLint * data) {if (GLeeInit()) glGetIntegerIndexedvEXT(target, index, data);} GLEEPFNGLGETINTEGERINDEXEDVEXTPROC GLeeFuncPtr_glGetIntegerIndexedvEXT=GLee_Lazy_glGetIntegerIndexedvEXT; #endif #ifndef GLEE_C_DEFINED_glEnableIndexedEXT #define GLEE_C_DEFINED_glEnableIndexedEXT void __stdcall GLee_Lazy_glEnableIndexedEXT(GLenum target, GLuint index) {if (GLeeInit()) glEnableIndexedEXT(target, index);} GLEEPFNGLENABLEINDEXEDEXTPROC GLeeFuncPtr_glEnableIndexedEXT=GLee_Lazy_glEnableIndexedEXT; #endif #ifndef GLEE_C_DEFINED_glDisableIndexedEXT #define GLEE_C_DEFINED_glDisableIndexedEXT void __stdcall GLee_Lazy_glDisableIndexedEXT(GLenum target, GLuint index) {if (GLeeInit()) glDisableIndexedEXT(target, index);} GLEEPFNGLDISABLEINDEXEDEXTPROC GLeeFuncPtr_glDisableIndexedEXT=GLee_Lazy_glDisableIndexedEXT; #endif #ifndef GLEE_C_DEFINED_glIsEnabledIndexedEXT #define GLEE_C_DEFINED_glIsEnabledIndexedEXT GLboolean __stdcall GLee_Lazy_glIsEnabledIndexedEXT(GLenum target, GLuint index) {if (GLeeInit()) return glIsEnabledIndexedEXT(target, index); return (GLboolean)0;} GLEEPFNGLISENABLEDINDEXEDEXTPROC GLeeFuncPtr_glIsEnabledIndexedEXT=GLee_Lazy_glIsEnabledIndexedEXT; #endif #endif /* GL_NV_transform_feedback */ #ifdef __GLEE_GL_NV_transform_feedback #ifndef GLEE_C_DEFINED_glBeginTransformFeedbackNV #define GLEE_C_DEFINED_glBeginTransformFeedbackNV void __stdcall GLee_Lazy_glBeginTransformFeedbackNV(GLenum primitiveMode) {if (GLeeInit()) glBeginTransformFeedbackNV(primitiveMode);} GLEEPFNGLBEGINTRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glBeginTransformFeedbackNV=GLee_Lazy_glBeginTransformFeedbackNV; #endif #ifndef GLEE_C_DEFINED_glEndTransformFeedbackNV #define GLEE_C_DEFINED_glEndTransformFeedbackNV void __stdcall GLee_Lazy_glEndTransformFeedbackNV(void) {if (GLeeInit()) glEndTransformFeedbackNV();} GLEEPFNGLENDTRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glEndTransformFeedbackNV=GLee_Lazy_glEndTransformFeedbackNV; #endif #ifndef GLEE_C_DEFINED_glTransformFeedbackAttribsNV #define GLEE_C_DEFINED_glTransformFeedbackAttribsNV void __stdcall GLee_Lazy_glTransformFeedbackAttribsNV(GLuint count, const GLint * attribs, GLenum bufferMode) {if (GLeeInit()) glTransformFeedbackAttribsNV(count, attribs, bufferMode);} GLEEPFNGLTRANSFORMFEEDBACKATTRIBSNVPROC GLeeFuncPtr_glTransformFeedbackAttribsNV=GLee_Lazy_glTransformFeedbackAttribsNV; #endif #ifndef GLEE_C_DEFINED_glBindBufferRangeNV #define GLEE_C_DEFINED_glBindBufferRangeNV void __stdcall GLee_Lazy_glBindBufferRangeNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) {if (GLeeInit()) glBindBufferRangeNV(target, index, buffer, offset, size);} GLEEPFNGLBINDBUFFERRANGENVPROC GLeeFuncPtr_glBindBufferRangeNV=GLee_Lazy_glBindBufferRangeNV; #endif #ifndef GLEE_C_DEFINED_glBindBufferOffsetNV #define GLEE_C_DEFINED_glBindBufferOffsetNV void __stdcall GLee_Lazy_glBindBufferOffsetNV(GLenum target, GLuint index, GLuint buffer, GLintptr offset) {if (GLeeInit()) glBindBufferOffsetNV(target, index, buffer, offset);} GLEEPFNGLBINDBUFFEROFFSETNVPROC GLeeFuncPtr_glBindBufferOffsetNV=GLee_Lazy_glBindBufferOffsetNV; #endif #ifndef GLEE_C_DEFINED_glBindBufferBaseNV #define GLEE_C_DEFINED_glBindBufferBaseNV void __stdcall GLee_Lazy_glBindBufferBaseNV(GLenum target, GLuint index, GLuint buffer) {if (GLeeInit()) glBindBufferBaseNV(target, index, buffer);} GLEEPFNGLBINDBUFFERBASENVPROC GLeeFuncPtr_glBindBufferBaseNV=GLee_Lazy_glBindBufferBaseNV; #endif #ifndef GLEE_C_DEFINED_glTransformFeedbackVaryingsNV #define GLEE_C_DEFINED_glTransformFeedbackVaryingsNV void __stdcall GLee_Lazy_glTransformFeedbackVaryingsNV(GLuint program, GLsizei count, const GLint * locations, GLenum bufferMode) {if (GLeeInit()) glTransformFeedbackVaryingsNV(program, count, locations, bufferMode);} GLEEPFNGLTRANSFORMFEEDBACKVARYINGSNVPROC GLeeFuncPtr_glTransformFeedbackVaryingsNV=GLee_Lazy_glTransformFeedbackVaryingsNV; #endif #ifndef GLEE_C_DEFINED_glActiveVaryingNV #define GLEE_C_DEFINED_glActiveVaryingNV void __stdcall GLee_Lazy_glActiveVaryingNV(GLuint program, const GLchar * name) {if (GLeeInit()) glActiveVaryingNV(program, name);} GLEEPFNGLACTIVEVARYINGNVPROC GLeeFuncPtr_glActiveVaryingNV=GLee_Lazy_glActiveVaryingNV; #endif #ifndef GLEE_C_DEFINED_glGetVaryingLocationNV #define GLEE_C_DEFINED_glGetVaryingLocationNV GLint __stdcall GLee_Lazy_glGetVaryingLocationNV(GLuint program, const GLchar * name) {if (GLeeInit()) return glGetVaryingLocationNV(program, name); return (GLint)0;} GLEEPFNGLGETVARYINGLOCATIONNVPROC GLeeFuncPtr_glGetVaryingLocationNV=GLee_Lazy_glGetVaryingLocationNV; #endif #ifndef GLEE_C_DEFINED_glGetActiveVaryingNV #define GLEE_C_DEFINED_glGetActiveVaryingNV void __stdcall GLee_Lazy_glGetActiveVaryingNV(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name) {if (GLeeInit()) glGetActiveVaryingNV(program, index, bufSize, length, size, type, name);} GLEEPFNGLGETACTIVEVARYINGNVPROC GLeeFuncPtr_glGetActiveVaryingNV=GLee_Lazy_glGetActiveVaryingNV; #endif #ifndef GLEE_C_DEFINED_glGetTransformFeedbackVaryingNV #define GLEE_C_DEFINED_glGetTransformFeedbackVaryingNV void __stdcall GLee_Lazy_glGetTransformFeedbackVaryingNV(GLuint program, GLuint index, GLint * location) {if (GLeeInit()) glGetTransformFeedbackVaryingNV(program, index, location);} GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC GLeeFuncPtr_glGetTransformFeedbackVaryingNV=GLee_Lazy_glGetTransformFeedbackVaryingNV; #endif #ifndef GLEE_C_DEFINED_glTransformFeedbackStreamAttribsNV #define GLEE_C_DEFINED_glTransformFeedbackStreamAttribsNV void __stdcall GLee_Lazy_glTransformFeedbackStreamAttribsNV(GLsizei count, const GLint * attribs, GLsizei nbuffers, const GLint * bufstreams, GLenum bufferMode) {if (GLeeInit()) glTransformFeedbackStreamAttribsNV(count, attribs, nbuffers, bufstreams, bufferMode);} GLEEPFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC GLeeFuncPtr_glTransformFeedbackStreamAttribsNV=GLee_Lazy_glTransformFeedbackStreamAttribsNV; #endif #endif /* GL_EXT_bindable_uniform */ #ifdef __GLEE_GL_EXT_bindable_uniform #ifndef GLEE_C_DEFINED_glUniformBufferEXT #define GLEE_C_DEFINED_glUniformBufferEXT void __stdcall GLee_Lazy_glUniformBufferEXT(GLuint program, GLint location, GLuint buffer) {if (GLeeInit()) glUniformBufferEXT(program, location, buffer);} GLEEPFNGLUNIFORMBUFFEREXTPROC GLeeFuncPtr_glUniformBufferEXT=GLee_Lazy_glUniformBufferEXT; #endif #ifndef GLEE_C_DEFINED_glGetUniformBufferSizeEXT #define GLEE_C_DEFINED_glGetUniformBufferSizeEXT GLint __stdcall GLee_Lazy_glGetUniformBufferSizeEXT(GLuint program, GLint location) {if (GLeeInit()) return glGetUniformBufferSizeEXT(program, location); return (GLint)0;} GLEEPFNGLGETUNIFORMBUFFERSIZEEXTPROC GLeeFuncPtr_glGetUniformBufferSizeEXT=GLee_Lazy_glGetUniformBufferSizeEXT; #endif #ifndef GLEE_C_DEFINED_glGetUniformOffsetEXT #define GLEE_C_DEFINED_glGetUniformOffsetEXT GLintptr __stdcall GLee_Lazy_glGetUniformOffsetEXT(GLuint program, GLint location) {if (GLeeInit()) return glGetUniformOffsetEXT(program, location); return (GLintptr)0;} GLEEPFNGLGETUNIFORMOFFSETEXTPROC GLeeFuncPtr_glGetUniformOffsetEXT=GLee_Lazy_glGetUniformOffsetEXT; #endif #endif /* GL_EXT_texture_integer */ #ifdef __GLEE_GL_EXT_texture_integer #ifndef GLEE_C_DEFINED_glTexParameterIivEXT #define GLEE_C_DEFINED_glTexParameterIivEXT void __stdcall GLee_Lazy_glTexParameterIivEXT(GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glTexParameterIivEXT(target, pname, params);} GLEEPFNGLTEXPARAMETERIIVEXTPROC GLeeFuncPtr_glTexParameterIivEXT=GLee_Lazy_glTexParameterIivEXT; #endif #ifndef GLEE_C_DEFINED_glTexParameterIuivEXT #define GLEE_C_DEFINED_glTexParameterIuivEXT void __stdcall GLee_Lazy_glTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint * params) {if (GLeeInit()) glTexParameterIuivEXT(target, pname, params);} GLEEPFNGLTEXPARAMETERIUIVEXTPROC GLeeFuncPtr_glTexParameterIuivEXT=GLee_Lazy_glTexParameterIuivEXT; #endif #ifndef GLEE_C_DEFINED_glGetTexParameterIivEXT #define GLEE_C_DEFINED_glGetTexParameterIivEXT void __stdcall GLee_Lazy_glGetTexParameterIivEXT(GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetTexParameterIivEXT(target, pname, params);} GLEEPFNGLGETTEXPARAMETERIIVEXTPROC GLeeFuncPtr_glGetTexParameterIivEXT=GLee_Lazy_glGetTexParameterIivEXT; #endif #ifndef GLEE_C_DEFINED_glGetTexParameterIuivEXT #define GLEE_C_DEFINED_glGetTexParameterIuivEXT void __stdcall GLee_Lazy_glGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint * params) {if (GLeeInit()) glGetTexParameterIuivEXT(target, pname, params);} GLEEPFNGLGETTEXPARAMETERIUIVEXTPROC GLeeFuncPtr_glGetTexParameterIuivEXT=GLee_Lazy_glGetTexParameterIuivEXT; #endif #ifndef GLEE_C_DEFINED_glClearColorIiEXT #define GLEE_C_DEFINED_glClearColorIiEXT void __stdcall GLee_Lazy_glClearColorIiEXT(GLint red, GLint green, GLint blue, GLint alpha) {if (GLeeInit()) glClearColorIiEXT(red, green, blue, alpha);} GLEEPFNGLCLEARCOLORIIEXTPROC GLeeFuncPtr_glClearColorIiEXT=GLee_Lazy_glClearColorIiEXT; #endif #ifndef GLEE_C_DEFINED_glClearColorIuiEXT #define GLEE_C_DEFINED_glClearColorIuiEXT void __stdcall GLee_Lazy_glClearColorIuiEXT(GLuint red, GLuint green, GLuint blue, GLuint alpha) {if (GLeeInit()) glClearColorIuiEXT(red, green, blue, alpha);} GLEEPFNGLCLEARCOLORIUIEXTPROC GLeeFuncPtr_glClearColorIuiEXT=GLee_Lazy_glClearColorIuiEXT; #endif #endif /* GL_GREMEDY_frame_terminator */ #ifdef __GLEE_GL_GREMEDY_frame_terminator #ifndef GLEE_C_DEFINED_glFrameTerminatorGREMEDY #define GLEE_C_DEFINED_glFrameTerminatorGREMEDY void __stdcall GLee_Lazy_glFrameTerminatorGREMEDY(void) {if (GLeeInit()) glFrameTerminatorGREMEDY();} GLEEPFNGLFRAMETERMINATORGREMEDYPROC GLeeFuncPtr_glFrameTerminatorGREMEDY=GLee_Lazy_glFrameTerminatorGREMEDY; #endif #endif /* GL_NV_conditional_render */ #ifdef __GLEE_GL_NV_conditional_render #ifndef GLEE_C_DEFINED_glBeginConditionalRenderNV #define GLEE_C_DEFINED_glBeginConditionalRenderNV void __stdcall GLee_Lazy_glBeginConditionalRenderNV(GLuint id, GLenum mode) {if (GLeeInit()) glBeginConditionalRenderNV(id, mode);} GLEEPFNGLBEGINCONDITIONALRENDERNVPROC GLeeFuncPtr_glBeginConditionalRenderNV=GLee_Lazy_glBeginConditionalRenderNV; #endif #ifndef GLEE_C_DEFINED_glEndConditionalRenderNV #define GLEE_C_DEFINED_glEndConditionalRenderNV void __stdcall GLee_Lazy_glEndConditionalRenderNV(void) {if (GLeeInit()) glEndConditionalRenderNV();} GLEEPFNGLENDCONDITIONALRENDERNVPROC GLeeFuncPtr_glEndConditionalRenderNV=GLee_Lazy_glEndConditionalRenderNV; #endif #endif /* GL_NV_present_video */ #ifdef __GLEE_GL_NV_present_video #ifndef GLEE_C_DEFINED_glPresentFrameKeyedNV #define GLEE_C_DEFINED_glPresentFrameKeyedNV void __stdcall GLee_Lazy_glPresentFrameKeyedNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1) {if (GLeeInit()) glPresentFrameKeyedNV(video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, key0, target1, fill1, key1);} GLEEPFNGLPRESENTFRAMEKEYEDNVPROC GLeeFuncPtr_glPresentFrameKeyedNV=GLee_Lazy_glPresentFrameKeyedNV; #endif #ifndef GLEE_C_DEFINED_glPresentFrameDualFillNV #define GLEE_C_DEFINED_glPresentFrameDualFillNV void __stdcall GLee_Lazy_glPresentFrameDualFillNV(GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3) {if (GLeeInit()) glPresentFrameDualFillNV(video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, target1, fill1, target2, fill2, target3, fill3);} GLEEPFNGLPRESENTFRAMEDUALFILLNVPROC GLeeFuncPtr_glPresentFrameDualFillNV=GLee_Lazy_glPresentFrameDualFillNV; #endif #ifndef GLEE_C_DEFINED_glGetVideoivNV #define GLEE_C_DEFINED_glGetVideoivNV void __stdcall GLee_Lazy_glGetVideoivNV(GLuint video_slot, GLenum pname, GLint * params) {if (GLeeInit()) glGetVideoivNV(video_slot, pname, params);} GLEEPFNGLGETVIDEOIVNVPROC GLeeFuncPtr_glGetVideoivNV=GLee_Lazy_glGetVideoivNV; #endif #ifndef GLEE_C_DEFINED_glGetVideouivNV #define GLEE_C_DEFINED_glGetVideouivNV void __stdcall GLee_Lazy_glGetVideouivNV(GLuint video_slot, GLenum pname, GLuint * params) {if (GLeeInit()) glGetVideouivNV(video_slot, pname, params);} GLEEPFNGLGETVIDEOUIVNVPROC GLeeFuncPtr_glGetVideouivNV=GLee_Lazy_glGetVideouivNV; #endif #ifndef GLEE_C_DEFINED_glGetVideoi64vNV #define GLEE_C_DEFINED_glGetVideoi64vNV void __stdcall GLee_Lazy_glGetVideoi64vNV(GLuint video_slot, GLenum pname, GLint64EXT * params) {if (GLeeInit()) glGetVideoi64vNV(video_slot, pname, params);} GLEEPFNGLGETVIDEOI64VNVPROC GLeeFuncPtr_glGetVideoi64vNV=GLee_Lazy_glGetVideoi64vNV; #endif #ifndef GLEE_C_DEFINED_glGetVideoui64vNV #define GLEE_C_DEFINED_glGetVideoui64vNV void __stdcall GLee_Lazy_glGetVideoui64vNV(GLuint video_slot, GLenum pname, GLuint64EXT * params) {if (GLeeInit()) glGetVideoui64vNV(video_slot, pname, params);} GLEEPFNGLGETVIDEOUI64VNVPROC GLeeFuncPtr_glGetVideoui64vNV=GLee_Lazy_glGetVideoui64vNV; #endif #endif /* GL_EXT_transform_feedback */ #ifdef __GLEE_GL_EXT_transform_feedback #ifndef GLEE_C_DEFINED_glBeginTransformFeedbackEXT #define GLEE_C_DEFINED_glBeginTransformFeedbackEXT void __stdcall GLee_Lazy_glBeginTransformFeedbackEXT(GLenum primitiveMode) {if (GLeeInit()) glBeginTransformFeedbackEXT(primitiveMode);} GLEEPFNGLBEGINTRANSFORMFEEDBACKEXTPROC GLeeFuncPtr_glBeginTransformFeedbackEXT=GLee_Lazy_glBeginTransformFeedbackEXT; #endif #ifndef GLEE_C_DEFINED_glEndTransformFeedbackEXT #define GLEE_C_DEFINED_glEndTransformFeedbackEXT void __stdcall GLee_Lazy_glEndTransformFeedbackEXT(void) {if (GLeeInit()) glEndTransformFeedbackEXT();} GLEEPFNGLENDTRANSFORMFEEDBACKEXTPROC GLeeFuncPtr_glEndTransformFeedbackEXT=GLee_Lazy_glEndTransformFeedbackEXT; #endif #ifndef GLEE_C_DEFINED_glBindBufferRangeEXT #define GLEE_C_DEFINED_glBindBufferRangeEXT void __stdcall GLee_Lazy_glBindBufferRangeEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) {if (GLeeInit()) glBindBufferRangeEXT(target, index, buffer, offset, size);} GLEEPFNGLBINDBUFFERRANGEEXTPROC GLeeFuncPtr_glBindBufferRangeEXT=GLee_Lazy_glBindBufferRangeEXT; #endif #ifndef GLEE_C_DEFINED_glBindBufferOffsetEXT #define GLEE_C_DEFINED_glBindBufferOffsetEXT void __stdcall GLee_Lazy_glBindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset) {if (GLeeInit()) glBindBufferOffsetEXT(target, index, buffer, offset);} GLEEPFNGLBINDBUFFEROFFSETEXTPROC GLeeFuncPtr_glBindBufferOffsetEXT=GLee_Lazy_glBindBufferOffsetEXT; #endif #ifndef GLEE_C_DEFINED_glBindBufferBaseEXT #define GLEE_C_DEFINED_glBindBufferBaseEXT void __stdcall GLee_Lazy_glBindBufferBaseEXT(GLenum target, GLuint index, GLuint buffer) {if (GLeeInit()) glBindBufferBaseEXT(target, index, buffer);} GLEEPFNGLBINDBUFFERBASEEXTPROC GLeeFuncPtr_glBindBufferBaseEXT=GLee_Lazy_glBindBufferBaseEXT; #endif #ifndef GLEE_C_DEFINED_glTransformFeedbackVaryingsEXT #define GLEE_C_DEFINED_glTransformFeedbackVaryingsEXT void __stdcall GLee_Lazy_glTransformFeedbackVaryingsEXT(GLuint program, GLsizei count, const GLchar* * varyings, GLenum bufferMode) {if (GLeeInit()) glTransformFeedbackVaryingsEXT(program, count, varyings, bufferMode);} GLEEPFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC GLeeFuncPtr_glTransformFeedbackVaryingsEXT=GLee_Lazy_glTransformFeedbackVaryingsEXT; #endif #ifndef GLEE_C_DEFINED_glGetTransformFeedbackVaryingEXT #define GLEE_C_DEFINED_glGetTransformFeedbackVaryingEXT void __stdcall GLee_Lazy_glGetTransformFeedbackVaryingEXT(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name) {if (GLeeInit()) glGetTransformFeedbackVaryingEXT(program, index, bufSize, length, size, type, name);} GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC GLeeFuncPtr_glGetTransformFeedbackVaryingEXT=GLee_Lazy_glGetTransformFeedbackVaryingEXT; #endif #endif /* GL_EXT_direct_state_access */ #ifdef __GLEE_GL_EXT_direct_state_access #ifndef GLEE_C_DEFINED_glClientAttribDefaultEXT #define GLEE_C_DEFINED_glClientAttribDefaultEXT void __stdcall GLee_Lazy_glClientAttribDefaultEXT(GLbitfield mask) {if (GLeeInit()) glClientAttribDefaultEXT(mask);} GLEEPFNGLCLIENTATTRIBDEFAULTEXTPROC GLeeFuncPtr_glClientAttribDefaultEXT=GLee_Lazy_glClientAttribDefaultEXT; #endif #ifndef GLEE_C_DEFINED_glPushClientAttribDefaultEXT #define GLEE_C_DEFINED_glPushClientAttribDefaultEXT void __stdcall GLee_Lazy_glPushClientAttribDefaultEXT(GLbitfield mask) {if (GLeeInit()) glPushClientAttribDefaultEXT(mask);} GLEEPFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC GLeeFuncPtr_glPushClientAttribDefaultEXT=GLee_Lazy_glPushClientAttribDefaultEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixLoadfEXT #define GLEE_C_DEFINED_glMatrixLoadfEXT void __stdcall GLee_Lazy_glMatrixLoadfEXT(GLenum mode, const GLfloat * m) {if (GLeeInit()) glMatrixLoadfEXT(mode, m);} GLEEPFNGLMATRIXLOADFEXTPROC GLeeFuncPtr_glMatrixLoadfEXT=GLee_Lazy_glMatrixLoadfEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixLoaddEXT #define GLEE_C_DEFINED_glMatrixLoaddEXT void __stdcall GLee_Lazy_glMatrixLoaddEXT(GLenum mode, const GLdouble * m) {if (GLeeInit()) glMatrixLoaddEXT(mode, m);} GLEEPFNGLMATRIXLOADDEXTPROC GLeeFuncPtr_glMatrixLoaddEXT=GLee_Lazy_glMatrixLoaddEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixMultfEXT #define GLEE_C_DEFINED_glMatrixMultfEXT void __stdcall GLee_Lazy_glMatrixMultfEXT(GLenum mode, const GLfloat * m) {if (GLeeInit()) glMatrixMultfEXT(mode, m);} GLEEPFNGLMATRIXMULTFEXTPROC GLeeFuncPtr_glMatrixMultfEXT=GLee_Lazy_glMatrixMultfEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixMultdEXT #define GLEE_C_DEFINED_glMatrixMultdEXT void __stdcall GLee_Lazy_glMatrixMultdEXT(GLenum mode, const GLdouble * m) {if (GLeeInit()) glMatrixMultdEXT(mode, m);} GLEEPFNGLMATRIXMULTDEXTPROC GLeeFuncPtr_glMatrixMultdEXT=GLee_Lazy_glMatrixMultdEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixLoadIdentityEXT #define GLEE_C_DEFINED_glMatrixLoadIdentityEXT void __stdcall GLee_Lazy_glMatrixLoadIdentityEXT(GLenum mode) {if (GLeeInit()) glMatrixLoadIdentityEXT(mode);} GLEEPFNGLMATRIXLOADIDENTITYEXTPROC GLeeFuncPtr_glMatrixLoadIdentityEXT=GLee_Lazy_glMatrixLoadIdentityEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixRotatefEXT #define GLEE_C_DEFINED_glMatrixRotatefEXT void __stdcall GLee_Lazy_glMatrixRotatefEXT(GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glMatrixRotatefEXT(mode, angle, x, y, z);} GLEEPFNGLMATRIXROTATEFEXTPROC GLeeFuncPtr_glMatrixRotatefEXT=GLee_Lazy_glMatrixRotatefEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixRotatedEXT #define GLEE_C_DEFINED_glMatrixRotatedEXT void __stdcall GLee_Lazy_glMatrixRotatedEXT(GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glMatrixRotatedEXT(mode, angle, x, y, z);} GLEEPFNGLMATRIXROTATEDEXTPROC GLeeFuncPtr_glMatrixRotatedEXT=GLee_Lazy_glMatrixRotatedEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixScalefEXT #define GLEE_C_DEFINED_glMatrixScalefEXT void __stdcall GLee_Lazy_glMatrixScalefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glMatrixScalefEXT(mode, x, y, z);} GLEEPFNGLMATRIXSCALEFEXTPROC GLeeFuncPtr_glMatrixScalefEXT=GLee_Lazy_glMatrixScalefEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixScaledEXT #define GLEE_C_DEFINED_glMatrixScaledEXT void __stdcall GLee_Lazy_glMatrixScaledEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glMatrixScaledEXT(mode, x, y, z);} GLEEPFNGLMATRIXSCALEDEXTPROC GLeeFuncPtr_glMatrixScaledEXT=GLee_Lazy_glMatrixScaledEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixTranslatefEXT #define GLEE_C_DEFINED_glMatrixTranslatefEXT void __stdcall GLee_Lazy_glMatrixTranslatefEXT(GLenum mode, GLfloat x, GLfloat y, GLfloat z) {if (GLeeInit()) glMatrixTranslatefEXT(mode, x, y, z);} GLEEPFNGLMATRIXTRANSLATEFEXTPROC GLeeFuncPtr_glMatrixTranslatefEXT=GLee_Lazy_glMatrixTranslatefEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixTranslatedEXT #define GLEE_C_DEFINED_glMatrixTranslatedEXT void __stdcall GLee_Lazy_glMatrixTranslatedEXT(GLenum mode, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glMatrixTranslatedEXT(mode, x, y, z);} GLEEPFNGLMATRIXTRANSLATEDEXTPROC GLeeFuncPtr_glMatrixTranslatedEXT=GLee_Lazy_glMatrixTranslatedEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixFrustumEXT #define GLEE_C_DEFINED_glMatrixFrustumEXT void __stdcall GLee_Lazy_glMatrixFrustumEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) {if (GLeeInit()) glMatrixFrustumEXT(mode, left, right, bottom, top, zNear, zFar);} GLEEPFNGLMATRIXFRUSTUMEXTPROC GLeeFuncPtr_glMatrixFrustumEXT=GLee_Lazy_glMatrixFrustumEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixOrthoEXT #define GLEE_C_DEFINED_glMatrixOrthoEXT void __stdcall GLee_Lazy_glMatrixOrthoEXT(GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar) {if (GLeeInit()) glMatrixOrthoEXT(mode, left, right, bottom, top, zNear, zFar);} GLEEPFNGLMATRIXORTHOEXTPROC GLeeFuncPtr_glMatrixOrthoEXT=GLee_Lazy_glMatrixOrthoEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixPopEXT #define GLEE_C_DEFINED_glMatrixPopEXT void __stdcall GLee_Lazy_glMatrixPopEXT(GLenum mode) {if (GLeeInit()) glMatrixPopEXT(mode);} GLEEPFNGLMATRIXPOPEXTPROC GLeeFuncPtr_glMatrixPopEXT=GLee_Lazy_glMatrixPopEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixPushEXT #define GLEE_C_DEFINED_glMatrixPushEXT void __stdcall GLee_Lazy_glMatrixPushEXT(GLenum mode) {if (GLeeInit()) glMatrixPushEXT(mode);} GLEEPFNGLMATRIXPUSHEXTPROC GLeeFuncPtr_glMatrixPushEXT=GLee_Lazy_glMatrixPushEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixLoadTransposefEXT #define GLEE_C_DEFINED_glMatrixLoadTransposefEXT void __stdcall GLee_Lazy_glMatrixLoadTransposefEXT(GLenum mode, const GLfloat * m) {if (GLeeInit()) glMatrixLoadTransposefEXT(mode, m);} GLEEPFNGLMATRIXLOADTRANSPOSEFEXTPROC GLeeFuncPtr_glMatrixLoadTransposefEXT=GLee_Lazy_glMatrixLoadTransposefEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixLoadTransposedEXT #define GLEE_C_DEFINED_glMatrixLoadTransposedEXT void __stdcall GLee_Lazy_glMatrixLoadTransposedEXT(GLenum mode, const GLdouble * m) {if (GLeeInit()) glMatrixLoadTransposedEXT(mode, m);} GLEEPFNGLMATRIXLOADTRANSPOSEDEXTPROC GLeeFuncPtr_glMatrixLoadTransposedEXT=GLee_Lazy_glMatrixLoadTransposedEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixMultTransposefEXT #define GLEE_C_DEFINED_glMatrixMultTransposefEXT void __stdcall GLee_Lazy_glMatrixMultTransposefEXT(GLenum mode, const GLfloat * m) {if (GLeeInit()) glMatrixMultTransposefEXT(mode, m);} GLEEPFNGLMATRIXMULTTRANSPOSEFEXTPROC GLeeFuncPtr_glMatrixMultTransposefEXT=GLee_Lazy_glMatrixMultTransposefEXT; #endif #ifndef GLEE_C_DEFINED_glMatrixMultTransposedEXT #define GLEE_C_DEFINED_glMatrixMultTransposedEXT void __stdcall GLee_Lazy_glMatrixMultTransposedEXT(GLenum mode, const GLdouble * m) {if (GLeeInit()) glMatrixMultTransposedEXT(mode, m);} GLEEPFNGLMATRIXMULTTRANSPOSEDEXTPROC GLeeFuncPtr_glMatrixMultTransposedEXT=GLee_Lazy_glMatrixMultTransposedEXT; #endif #ifndef GLEE_C_DEFINED_glTextureParameterfEXT #define GLEE_C_DEFINED_glTextureParameterfEXT void __stdcall GLee_Lazy_glTextureParameterfEXT(GLuint texture, GLenum target, GLenum pname, GLfloat param) {if (GLeeInit()) glTextureParameterfEXT(texture, target, pname, param);} GLEEPFNGLTEXTUREPARAMETERFEXTPROC GLeeFuncPtr_glTextureParameterfEXT=GLee_Lazy_glTextureParameterfEXT; #endif #ifndef GLEE_C_DEFINED_glTextureParameterfvEXT #define GLEE_C_DEFINED_glTextureParameterfvEXT void __stdcall GLee_Lazy_glTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, const GLfloat * params) {if (GLeeInit()) glTextureParameterfvEXT(texture, target, pname, params);} GLEEPFNGLTEXTUREPARAMETERFVEXTPROC GLeeFuncPtr_glTextureParameterfvEXT=GLee_Lazy_glTextureParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glTextureParameteriEXT #define GLEE_C_DEFINED_glTextureParameteriEXT void __stdcall GLee_Lazy_glTextureParameteriEXT(GLuint texture, GLenum target, GLenum pname, GLint param) {if (GLeeInit()) glTextureParameteriEXT(texture, target, pname, param);} GLEEPFNGLTEXTUREPARAMETERIEXTPROC GLeeFuncPtr_glTextureParameteriEXT=GLee_Lazy_glTextureParameteriEXT; #endif #ifndef GLEE_C_DEFINED_glTextureParameterivEXT #define GLEE_C_DEFINED_glTextureParameterivEXT void __stdcall GLee_Lazy_glTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glTextureParameterivEXT(texture, target, pname, params);} GLEEPFNGLTEXTUREPARAMETERIVEXTPROC GLeeFuncPtr_glTextureParameterivEXT=GLee_Lazy_glTextureParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glTextureImage1DEXT #define GLEE_C_DEFINED_glTextureImage1DEXT void __stdcall GLee_Lazy_glTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTextureImage1DEXT(texture, target, level, internalformat, width, border, format, type, pixels);} GLEEPFNGLTEXTUREIMAGE1DEXTPROC GLeeFuncPtr_glTextureImage1DEXT=GLee_Lazy_glTextureImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glTextureImage2DEXT #define GLEE_C_DEFINED_glTextureImage2DEXT void __stdcall GLee_Lazy_glTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTextureImage2DEXT(texture, target, level, internalformat, width, height, border, format, type, pixels);} GLEEPFNGLTEXTUREIMAGE2DEXTPROC GLeeFuncPtr_glTextureImage2DEXT=GLee_Lazy_glTextureImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glTextureSubImage1DEXT #define GLEE_C_DEFINED_glTextureSubImage1DEXT void __stdcall GLee_Lazy_glTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, pixels);} GLEEPFNGLTEXTURESUBIMAGE1DEXTPROC GLeeFuncPtr_glTextureSubImage1DEXT=GLee_Lazy_glTextureSubImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glTextureSubImage2DEXT #define GLEE_C_DEFINED_glTextureSubImage2DEXT void __stdcall GLee_Lazy_glTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels);} GLEEPFNGLTEXTURESUBIMAGE2DEXTPROC GLeeFuncPtr_glTextureSubImage2DEXT=GLee_Lazy_glTextureSubImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyTextureImage1DEXT #define GLEE_C_DEFINED_glCopyTextureImage1DEXT void __stdcall GLee_Lazy_glCopyTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) {if (GLeeInit()) glCopyTextureImage1DEXT(texture, target, level, internalformat, x, y, width, border);} GLEEPFNGLCOPYTEXTUREIMAGE1DEXTPROC GLeeFuncPtr_glCopyTextureImage1DEXT=GLee_Lazy_glCopyTextureImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyTextureImage2DEXT #define GLEE_C_DEFINED_glCopyTextureImage2DEXT void __stdcall GLee_Lazy_glCopyTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) {if (GLeeInit()) glCopyTextureImage2DEXT(texture, target, level, internalformat, x, y, width, height, border);} GLEEPFNGLCOPYTEXTUREIMAGE2DEXTPROC GLeeFuncPtr_glCopyTextureImage2DEXT=GLee_Lazy_glCopyTextureImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyTextureSubImage1DEXT #define GLEE_C_DEFINED_glCopyTextureSubImage1DEXT void __stdcall GLee_Lazy_glCopyTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) {if (GLeeInit()) glCopyTextureSubImage1DEXT(texture, target, level, xoffset, x, y, width);} GLEEPFNGLCOPYTEXTURESUBIMAGE1DEXTPROC GLeeFuncPtr_glCopyTextureSubImage1DEXT=GLee_Lazy_glCopyTextureSubImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyTextureSubImage2DEXT #define GLEE_C_DEFINED_glCopyTextureSubImage2DEXT void __stdcall GLee_Lazy_glCopyTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) {if (GLeeInit()) glCopyTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, x, y, width, height);} GLEEPFNGLCOPYTEXTURESUBIMAGE2DEXTPROC GLeeFuncPtr_glCopyTextureSubImage2DEXT=GLee_Lazy_glCopyTextureSubImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glGetTextureImageEXT #define GLEE_C_DEFINED_glGetTextureImageEXT void __stdcall GLee_Lazy_glGetTextureImageEXT(GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels) {if (GLeeInit()) glGetTextureImageEXT(texture, target, level, format, type, pixels);} GLEEPFNGLGETTEXTUREIMAGEEXTPROC GLeeFuncPtr_glGetTextureImageEXT=GLee_Lazy_glGetTextureImageEXT; #endif #ifndef GLEE_C_DEFINED_glGetTextureParameterfvEXT #define GLEE_C_DEFINED_glGetTextureParameterfvEXT void __stdcall GLee_Lazy_glGetTextureParameterfvEXT(GLuint texture, GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetTextureParameterfvEXT(texture, target, pname, params);} GLEEPFNGLGETTEXTUREPARAMETERFVEXTPROC GLeeFuncPtr_glGetTextureParameterfvEXT=GLee_Lazy_glGetTextureParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetTextureParameterivEXT #define GLEE_C_DEFINED_glGetTextureParameterivEXT void __stdcall GLee_Lazy_glGetTextureParameterivEXT(GLuint texture, GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetTextureParameterivEXT(texture, target, pname, params);} GLEEPFNGLGETTEXTUREPARAMETERIVEXTPROC GLeeFuncPtr_glGetTextureParameterivEXT=GLee_Lazy_glGetTextureParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glGetTextureLevelParameterfvEXT #define GLEE_C_DEFINED_glGetTextureLevelParameterfvEXT void __stdcall GLee_Lazy_glGetTextureLevelParameterfvEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetTextureLevelParameterfvEXT(texture, target, level, pname, params);} GLEEPFNGLGETTEXTURELEVELPARAMETERFVEXTPROC GLeeFuncPtr_glGetTextureLevelParameterfvEXT=GLee_Lazy_glGetTextureLevelParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetTextureLevelParameterivEXT #define GLEE_C_DEFINED_glGetTextureLevelParameterivEXT void __stdcall GLee_Lazy_glGetTextureLevelParameterivEXT(GLuint texture, GLenum target, GLint level, GLenum pname, GLint * params) {if (GLeeInit()) glGetTextureLevelParameterivEXT(texture, target, level, pname, params);} GLEEPFNGLGETTEXTURELEVELPARAMETERIVEXTPROC GLeeFuncPtr_glGetTextureLevelParameterivEXT=GLee_Lazy_glGetTextureLevelParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glTextureImage3DEXT #define GLEE_C_DEFINED_glTextureImage3DEXT void __stdcall GLee_Lazy_glTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, pixels);} GLEEPFNGLTEXTUREIMAGE3DEXTPROC GLeeFuncPtr_glTextureImage3DEXT=GLee_Lazy_glTextureImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glTextureSubImage3DEXT #define GLEE_C_DEFINED_glTextureSubImage3DEXT void __stdcall GLee_Lazy_glTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);} GLEEPFNGLTEXTURESUBIMAGE3DEXTPROC GLeeFuncPtr_glTextureSubImage3DEXT=GLee_Lazy_glTextureSubImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyTextureSubImage3DEXT #define GLEE_C_DEFINED_glCopyTextureSubImage3DEXT void __stdcall GLee_Lazy_glCopyTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {if (GLeeInit()) glCopyTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, x, y, width, height);} GLEEPFNGLCOPYTEXTURESUBIMAGE3DEXTPROC GLeeFuncPtr_glCopyTextureSubImage3DEXT=GLee_Lazy_glCopyTextureSubImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexParameterfEXT #define GLEE_C_DEFINED_glMultiTexParameterfEXT void __stdcall GLee_Lazy_glMultiTexParameterfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param) {if (GLeeInit()) glMultiTexParameterfEXT(texunit, target, pname, param);} GLEEPFNGLMULTITEXPARAMETERFEXTPROC GLeeFuncPtr_glMultiTexParameterfEXT=GLee_Lazy_glMultiTexParameterfEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexParameterfvEXT #define GLEE_C_DEFINED_glMultiTexParameterfvEXT void __stdcall GLee_Lazy_glMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat * params) {if (GLeeInit()) glMultiTexParameterfvEXT(texunit, target, pname, params);} GLEEPFNGLMULTITEXPARAMETERFVEXTPROC GLeeFuncPtr_glMultiTexParameterfvEXT=GLee_Lazy_glMultiTexParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexParameteriEXT #define GLEE_C_DEFINED_glMultiTexParameteriEXT void __stdcall GLee_Lazy_glMultiTexParameteriEXT(GLenum texunit, GLenum target, GLenum pname, GLint param) {if (GLeeInit()) glMultiTexParameteriEXT(texunit, target, pname, param);} GLEEPFNGLMULTITEXPARAMETERIEXTPROC GLeeFuncPtr_glMultiTexParameteriEXT=GLee_Lazy_glMultiTexParameteriEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexParameterivEXT #define GLEE_C_DEFINED_glMultiTexParameterivEXT void __stdcall GLee_Lazy_glMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glMultiTexParameterivEXT(texunit, target, pname, params);} GLEEPFNGLMULTITEXPARAMETERIVEXTPROC GLeeFuncPtr_glMultiTexParameterivEXT=GLee_Lazy_glMultiTexParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexImage1DEXT #define GLEE_C_DEFINED_glMultiTexImage1DEXT void __stdcall GLee_Lazy_glMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, format, type, pixels);} GLEEPFNGLMULTITEXIMAGE1DEXTPROC GLeeFuncPtr_glMultiTexImage1DEXT=GLee_Lazy_glMultiTexImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexImage2DEXT #define GLEE_C_DEFINED_glMultiTexImage2DEXT void __stdcall GLee_Lazy_glMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, format, type, pixels);} GLEEPFNGLMULTITEXIMAGE2DEXTPROC GLeeFuncPtr_glMultiTexImage2DEXT=GLee_Lazy_glMultiTexImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexSubImage1DEXT #define GLEE_C_DEFINED_glMultiTexSubImage1DEXT void __stdcall GLee_Lazy_glMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, type, pixels);} GLEEPFNGLMULTITEXSUBIMAGE1DEXTPROC GLeeFuncPtr_glMultiTexSubImage1DEXT=GLee_Lazy_glMultiTexSubImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexSubImage2DEXT #define GLEE_C_DEFINED_glMultiTexSubImage2DEXT void __stdcall GLee_Lazy_glMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, pixels);} GLEEPFNGLMULTITEXSUBIMAGE2DEXTPROC GLeeFuncPtr_glMultiTexSubImage2DEXT=GLee_Lazy_glMultiTexSubImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyMultiTexImage1DEXT #define GLEE_C_DEFINED_glCopyMultiTexImage1DEXT void __stdcall GLee_Lazy_glCopyMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border) {if (GLeeInit()) glCopyMultiTexImage1DEXT(texunit, target, level, internalformat, x, y, width, border);} GLEEPFNGLCOPYMULTITEXIMAGE1DEXTPROC GLeeFuncPtr_glCopyMultiTexImage1DEXT=GLee_Lazy_glCopyMultiTexImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyMultiTexImage2DEXT #define GLEE_C_DEFINED_glCopyMultiTexImage2DEXT void __stdcall GLee_Lazy_glCopyMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) {if (GLeeInit()) glCopyMultiTexImage2DEXT(texunit, target, level, internalformat, x, y, width, height, border);} GLEEPFNGLCOPYMULTITEXIMAGE2DEXTPROC GLeeFuncPtr_glCopyMultiTexImage2DEXT=GLee_Lazy_glCopyMultiTexImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyMultiTexSubImage1DEXT #define GLEE_C_DEFINED_glCopyMultiTexSubImage1DEXT void __stdcall GLee_Lazy_glCopyMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width) {if (GLeeInit()) glCopyMultiTexSubImage1DEXT(texunit, target, level, xoffset, x, y, width);} GLEEPFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC GLeeFuncPtr_glCopyMultiTexSubImage1DEXT=GLee_Lazy_glCopyMultiTexSubImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyMultiTexSubImage2DEXT #define GLEE_C_DEFINED_glCopyMultiTexSubImage2DEXT void __stdcall GLee_Lazy_glCopyMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) {if (GLeeInit()) glCopyMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, x, y, width, height);} GLEEPFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC GLeeFuncPtr_glCopyMultiTexSubImage2DEXT=GLee_Lazy_glCopyMultiTexSubImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexImageEXT #define GLEE_C_DEFINED_glGetMultiTexImageEXT void __stdcall GLee_Lazy_glGetMultiTexImageEXT(GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels) {if (GLeeInit()) glGetMultiTexImageEXT(texunit, target, level, format, type, pixels);} GLEEPFNGLGETMULTITEXIMAGEEXTPROC GLeeFuncPtr_glGetMultiTexImageEXT=GLee_Lazy_glGetMultiTexImageEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexParameterfvEXT #define GLEE_C_DEFINED_glGetMultiTexParameterfvEXT void __stdcall GLee_Lazy_glGetMultiTexParameterfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetMultiTexParameterfvEXT(texunit, target, pname, params);} GLEEPFNGLGETMULTITEXPARAMETERFVEXTPROC GLeeFuncPtr_glGetMultiTexParameterfvEXT=GLee_Lazy_glGetMultiTexParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexParameterivEXT #define GLEE_C_DEFINED_glGetMultiTexParameterivEXT void __stdcall GLee_Lazy_glGetMultiTexParameterivEXT(GLenum texunit, GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetMultiTexParameterivEXT(texunit, target, pname, params);} GLEEPFNGLGETMULTITEXPARAMETERIVEXTPROC GLeeFuncPtr_glGetMultiTexParameterivEXT=GLee_Lazy_glGetMultiTexParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexLevelParameterfvEXT #define GLEE_C_DEFINED_glGetMultiTexLevelParameterfvEXT void __stdcall GLee_Lazy_glGetMultiTexLevelParameterfvEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetMultiTexLevelParameterfvEXT(texunit, target, level, pname, params);} GLEEPFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC GLeeFuncPtr_glGetMultiTexLevelParameterfvEXT=GLee_Lazy_glGetMultiTexLevelParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexLevelParameterivEXT #define GLEE_C_DEFINED_glGetMultiTexLevelParameterivEXT void __stdcall GLee_Lazy_glGetMultiTexLevelParameterivEXT(GLenum texunit, GLenum target, GLint level, GLenum pname, GLint * params) {if (GLeeInit()) glGetMultiTexLevelParameterivEXT(texunit, target, level, pname, params);} GLEEPFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC GLeeFuncPtr_glGetMultiTexLevelParameterivEXT=GLee_Lazy_glGetMultiTexLevelParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexImage3DEXT #define GLEE_C_DEFINED_glMultiTexImage3DEXT void __stdcall GLee_Lazy_glMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, pixels);} GLEEPFNGLMULTITEXIMAGE3DEXTPROC GLeeFuncPtr_glMultiTexImage3DEXT=GLee_Lazy_glMultiTexImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexSubImage3DEXT #define GLEE_C_DEFINED_glMultiTexSubImage3DEXT void __stdcall GLee_Lazy_glMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels) {if (GLeeInit()) glMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);} GLEEPFNGLMULTITEXSUBIMAGE3DEXTPROC GLeeFuncPtr_glMultiTexSubImage3DEXT=GLee_Lazy_glMultiTexSubImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glCopyMultiTexSubImage3DEXT #define GLEE_C_DEFINED_glCopyMultiTexSubImage3DEXT void __stdcall GLee_Lazy_glCopyMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) {if (GLeeInit()) glCopyMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height);} GLEEPFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC GLeeFuncPtr_glCopyMultiTexSubImage3DEXT=GLee_Lazy_glCopyMultiTexSubImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glBindMultiTextureEXT #define GLEE_C_DEFINED_glBindMultiTextureEXT void __stdcall GLee_Lazy_glBindMultiTextureEXT(GLenum texunit, GLenum target, GLuint texture) {if (GLeeInit()) glBindMultiTextureEXT(texunit, target, texture);} GLEEPFNGLBINDMULTITEXTUREEXTPROC GLeeFuncPtr_glBindMultiTextureEXT=GLee_Lazy_glBindMultiTextureEXT; #endif #ifndef GLEE_C_DEFINED_glEnableClientStateIndexedEXT #define GLEE_C_DEFINED_glEnableClientStateIndexedEXT void __stdcall GLee_Lazy_glEnableClientStateIndexedEXT(GLenum array, GLuint index) {if (GLeeInit()) glEnableClientStateIndexedEXT(array, index);} GLEEPFNGLENABLECLIENTSTATEINDEXEDEXTPROC GLeeFuncPtr_glEnableClientStateIndexedEXT=GLee_Lazy_glEnableClientStateIndexedEXT; #endif #ifndef GLEE_C_DEFINED_glDisableClientStateIndexedEXT #define GLEE_C_DEFINED_glDisableClientStateIndexedEXT void __stdcall GLee_Lazy_glDisableClientStateIndexedEXT(GLenum array, GLuint index) {if (GLeeInit()) glDisableClientStateIndexedEXT(array, index);} GLEEPFNGLDISABLECLIENTSTATEINDEXEDEXTPROC GLeeFuncPtr_glDisableClientStateIndexedEXT=GLee_Lazy_glDisableClientStateIndexedEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexCoordPointerEXT #define GLEE_C_DEFINED_glMultiTexCoordPointerEXT void __stdcall GLee_Lazy_glMultiTexCoordPointerEXT(GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glMultiTexCoordPointerEXT(texunit, size, type, stride, pointer);} GLEEPFNGLMULTITEXCOORDPOINTEREXTPROC GLeeFuncPtr_glMultiTexCoordPointerEXT=GLee_Lazy_glMultiTexCoordPointerEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexEnvfEXT #define GLEE_C_DEFINED_glMultiTexEnvfEXT void __stdcall GLee_Lazy_glMultiTexEnvfEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat param) {if (GLeeInit()) glMultiTexEnvfEXT(texunit, target, pname, param);} GLEEPFNGLMULTITEXENVFEXTPROC GLeeFuncPtr_glMultiTexEnvfEXT=GLee_Lazy_glMultiTexEnvfEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexEnvfvEXT #define GLEE_C_DEFINED_glMultiTexEnvfvEXT void __stdcall GLee_Lazy_glMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, const GLfloat * params) {if (GLeeInit()) glMultiTexEnvfvEXT(texunit, target, pname, params);} GLEEPFNGLMULTITEXENVFVEXTPROC GLeeFuncPtr_glMultiTexEnvfvEXT=GLee_Lazy_glMultiTexEnvfvEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexEnviEXT #define GLEE_C_DEFINED_glMultiTexEnviEXT void __stdcall GLee_Lazy_glMultiTexEnviEXT(GLenum texunit, GLenum target, GLenum pname, GLint param) {if (GLeeInit()) glMultiTexEnviEXT(texunit, target, pname, param);} GLEEPFNGLMULTITEXENVIEXTPROC GLeeFuncPtr_glMultiTexEnviEXT=GLee_Lazy_glMultiTexEnviEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexEnvivEXT #define GLEE_C_DEFINED_glMultiTexEnvivEXT void __stdcall GLee_Lazy_glMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glMultiTexEnvivEXT(texunit, target, pname, params);} GLEEPFNGLMULTITEXENVIVEXTPROC GLeeFuncPtr_glMultiTexEnvivEXT=GLee_Lazy_glMultiTexEnvivEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexGendEXT #define GLEE_C_DEFINED_glMultiTexGendEXT void __stdcall GLee_Lazy_glMultiTexGendEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble param) {if (GLeeInit()) glMultiTexGendEXT(texunit, coord, pname, param);} GLEEPFNGLMULTITEXGENDEXTPROC GLeeFuncPtr_glMultiTexGendEXT=GLee_Lazy_glMultiTexGendEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexGendvEXT #define GLEE_C_DEFINED_glMultiTexGendvEXT void __stdcall GLee_Lazy_glMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLdouble * params) {if (GLeeInit()) glMultiTexGendvEXT(texunit, coord, pname, params);} GLEEPFNGLMULTITEXGENDVEXTPROC GLeeFuncPtr_glMultiTexGendvEXT=GLee_Lazy_glMultiTexGendvEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexGenfEXT #define GLEE_C_DEFINED_glMultiTexGenfEXT void __stdcall GLee_Lazy_glMultiTexGenfEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat param) {if (GLeeInit()) glMultiTexGenfEXT(texunit, coord, pname, param);} GLEEPFNGLMULTITEXGENFEXTPROC GLeeFuncPtr_glMultiTexGenfEXT=GLee_Lazy_glMultiTexGenfEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexGenfvEXT #define GLEE_C_DEFINED_glMultiTexGenfvEXT void __stdcall GLee_Lazy_glMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, const GLfloat * params) {if (GLeeInit()) glMultiTexGenfvEXT(texunit, coord, pname, params);} GLEEPFNGLMULTITEXGENFVEXTPROC GLeeFuncPtr_glMultiTexGenfvEXT=GLee_Lazy_glMultiTexGenfvEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexGeniEXT #define GLEE_C_DEFINED_glMultiTexGeniEXT void __stdcall GLee_Lazy_glMultiTexGeniEXT(GLenum texunit, GLenum coord, GLenum pname, GLint param) {if (GLeeInit()) glMultiTexGeniEXT(texunit, coord, pname, param);} GLEEPFNGLMULTITEXGENIEXTPROC GLeeFuncPtr_glMultiTexGeniEXT=GLee_Lazy_glMultiTexGeniEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexGenivEXT #define GLEE_C_DEFINED_glMultiTexGenivEXT void __stdcall GLee_Lazy_glMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, const GLint * params) {if (GLeeInit()) glMultiTexGenivEXT(texunit, coord, pname, params);} GLEEPFNGLMULTITEXGENIVEXTPROC GLeeFuncPtr_glMultiTexGenivEXT=GLee_Lazy_glMultiTexGenivEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexEnvfvEXT #define GLEE_C_DEFINED_glGetMultiTexEnvfvEXT void __stdcall GLee_Lazy_glGetMultiTexEnvfvEXT(GLenum texunit, GLenum target, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetMultiTexEnvfvEXT(texunit, target, pname, params);} GLEEPFNGLGETMULTITEXENVFVEXTPROC GLeeFuncPtr_glGetMultiTexEnvfvEXT=GLee_Lazy_glGetMultiTexEnvfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexEnvivEXT #define GLEE_C_DEFINED_glGetMultiTexEnvivEXT void __stdcall GLee_Lazy_glGetMultiTexEnvivEXT(GLenum texunit, GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetMultiTexEnvivEXT(texunit, target, pname, params);} GLEEPFNGLGETMULTITEXENVIVEXTPROC GLeeFuncPtr_glGetMultiTexEnvivEXT=GLee_Lazy_glGetMultiTexEnvivEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexGendvEXT #define GLEE_C_DEFINED_glGetMultiTexGendvEXT void __stdcall GLee_Lazy_glGetMultiTexGendvEXT(GLenum texunit, GLenum coord, GLenum pname, GLdouble * params) {if (GLeeInit()) glGetMultiTexGendvEXT(texunit, coord, pname, params);} GLEEPFNGLGETMULTITEXGENDVEXTPROC GLeeFuncPtr_glGetMultiTexGendvEXT=GLee_Lazy_glGetMultiTexGendvEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexGenfvEXT #define GLEE_C_DEFINED_glGetMultiTexGenfvEXT void __stdcall GLee_Lazy_glGetMultiTexGenfvEXT(GLenum texunit, GLenum coord, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetMultiTexGenfvEXT(texunit, coord, pname, params);} GLEEPFNGLGETMULTITEXGENFVEXTPROC GLeeFuncPtr_glGetMultiTexGenfvEXT=GLee_Lazy_glGetMultiTexGenfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexGenivEXT #define GLEE_C_DEFINED_glGetMultiTexGenivEXT void __stdcall GLee_Lazy_glGetMultiTexGenivEXT(GLenum texunit, GLenum coord, GLenum pname, GLint * params) {if (GLeeInit()) glGetMultiTexGenivEXT(texunit, coord, pname, params);} GLEEPFNGLGETMULTITEXGENIVEXTPROC GLeeFuncPtr_glGetMultiTexGenivEXT=GLee_Lazy_glGetMultiTexGenivEXT; #endif #ifndef GLEE_C_DEFINED_glGetFloatIndexedvEXT #define GLEE_C_DEFINED_glGetFloatIndexedvEXT void __stdcall GLee_Lazy_glGetFloatIndexedvEXT(GLenum target, GLuint index, GLfloat * data) {if (GLeeInit()) glGetFloatIndexedvEXT(target, index, data);} GLEEPFNGLGETFLOATINDEXEDVEXTPROC GLeeFuncPtr_glGetFloatIndexedvEXT=GLee_Lazy_glGetFloatIndexedvEXT; #endif #ifndef GLEE_C_DEFINED_glGetDoubleIndexedvEXT #define GLEE_C_DEFINED_glGetDoubleIndexedvEXT void __stdcall GLee_Lazy_glGetDoubleIndexedvEXT(GLenum target, GLuint index, GLdouble * data) {if (GLeeInit()) glGetDoubleIndexedvEXT(target, index, data);} GLEEPFNGLGETDOUBLEINDEXEDVEXTPROC GLeeFuncPtr_glGetDoubleIndexedvEXT=GLee_Lazy_glGetDoubleIndexedvEXT; #endif #ifndef GLEE_C_DEFINED_glGetPointerIndexedvEXT #define GLEE_C_DEFINED_glGetPointerIndexedvEXT void __stdcall GLee_Lazy_glGetPointerIndexedvEXT(GLenum target, GLuint index, GLvoid* * data) {if (GLeeInit()) glGetPointerIndexedvEXT(target, index, data);} GLEEPFNGLGETPOINTERINDEXEDVEXTPROC GLeeFuncPtr_glGetPointerIndexedvEXT=GLee_Lazy_glGetPointerIndexedvEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedTextureImage3DEXT #define GLEE_C_DEFINED_glCompressedTextureImage3DEXT void __stdcall GLee_Lazy_glCompressedTextureImage3DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, bits);} GLEEPFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC GLeeFuncPtr_glCompressedTextureImage3DEXT=GLee_Lazy_glCompressedTextureImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedTextureImage2DEXT #define GLEE_C_DEFINED_glCompressedTextureImage2DEXT void __stdcall GLee_Lazy_glCompressedTextureImage2DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedTextureImage2DEXT(texture, target, level, internalformat, width, height, border, imageSize, bits);} GLEEPFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC GLeeFuncPtr_glCompressedTextureImage2DEXT=GLee_Lazy_glCompressedTextureImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedTextureImage1DEXT #define GLEE_C_DEFINED_glCompressedTextureImage1DEXT void __stdcall GLee_Lazy_glCompressedTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedTextureImage1DEXT(texture, target, level, internalformat, width, border, imageSize, bits);} GLEEPFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC GLeeFuncPtr_glCompressedTextureImage1DEXT=GLee_Lazy_glCompressedTextureImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedTextureSubImage3DEXT #define GLEE_C_DEFINED_glCompressedTextureSubImage3DEXT void __stdcall GLee_Lazy_glCompressedTextureSubImage3DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);} GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC GLeeFuncPtr_glCompressedTextureSubImage3DEXT=GLee_Lazy_glCompressedTextureSubImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedTextureSubImage2DEXT #define GLEE_C_DEFINED_glCompressedTextureSubImage2DEXT void __stdcall GLee_Lazy_glCompressedTextureSubImage2DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits);} GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC GLeeFuncPtr_glCompressedTextureSubImage2DEXT=GLee_Lazy_glCompressedTextureSubImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedTextureSubImage1DEXT #define GLEE_C_DEFINED_glCompressedTextureSubImage1DEXT void __stdcall GLee_Lazy_glCompressedTextureSubImage1DEXT(GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, bits);} GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC GLeeFuncPtr_glCompressedTextureSubImage1DEXT=GLee_Lazy_glCompressedTextureSubImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glGetCompressedTextureImageEXT #define GLEE_C_DEFINED_glGetCompressedTextureImageEXT void __stdcall GLee_Lazy_glGetCompressedTextureImageEXT(GLuint texture, GLenum target, GLint lod, GLvoid * img) {if (GLeeInit()) glGetCompressedTextureImageEXT(texture, target, lod, img);} GLEEPFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC GLeeFuncPtr_glGetCompressedTextureImageEXT=GLee_Lazy_glGetCompressedTextureImageEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedMultiTexImage3DEXT #define GLEE_C_DEFINED_glCompressedMultiTexImage3DEXT void __stdcall GLee_Lazy_glCompressedMultiTexImage3DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, bits);} GLEEPFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC GLeeFuncPtr_glCompressedMultiTexImage3DEXT=GLee_Lazy_glCompressedMultiTexImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedMultiTexImage2DEXT #define GLEE_C_DEFINED_glCompressedMultiTexImage2DEXT void __stdcall GLee_Lazy_glCompressedMultiTexImage2DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, bits);} GLEEPFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC GLeeFuncPtr_glCompressedMultiTexImage2DEXT=GLee_Lazy_glCompressedMultiTexImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedMultiTexImage1DEXT #define GLEE_C_DEFINED_glCompressedMultiTexImage1DEXT void __stdcall GLee_Lazy_glCompressedMultiTexImage1DEXT(GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, imageSize, bits);} GLEEPFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC GLeeFuncPtr_glCompressedMultiTexImage1DEXT=GLee_Lazy_glCompressedMultiTexImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedMultiTexSubImage3DEXT #define GLEE_C_DEFINED_glCompressedMultiTexSubImage3DEXT void __stdcall GLee_Lazy_glCompressedMultiTexSubImage3DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits);} GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC GLeeFuncPtr_glCompressedMultiTexSubImage3DEXT=GLee_Lazy_glCompressedMultiTexSubImage3DEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedMultiTexSubImage2DEXT #define GLEE_C_DEFINED_glCompressedMultiTexSubImage2DEXT void __stdcall GLee_Lazy_glCompressedMultiTexSubImage2DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits);} GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC GLeeFuncPtr_glCompressedMultiTexSubImage2DEXT=GLee_Lazy_glCompressedMultiTexSubImage2DEXT; #endif #ifndef GLEE_C_DEFINED_glCompressedMultiTexSubImage1DEXT #define GLEE_C_DEFINED_glCompressedMultiTexSubImage1DEXT void __stdcall GLee_Lazy_glCompressedMultiTexSubImage1DEXT(GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * bits) {if (GLeeInit()) glCompressedMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, imageSize, bits);} GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC GLeeFuncPtr_glCompressedMultiTexSubImage1DEXT=GLee_Lazy_glCompressedMultiTexSubImage1DEXT; #endif #ifndef GLEE_C_DEFINED_glGetCompressedMultiTexImageEXT #define GLEE_C_DEFINED_glGetCompressedMultiTexImageEXT void __stdcall GLee_Lazy_glGetCompressedMultiTexImageEXT(GLenum texunit, GLenum target, GLint lod, GLvoid * img) {if (GLeeInit()) glGetCompressedMultiTexImageEXT(texunit, target, lod, img);} GLEEPFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC GLeeFuncPtr_glGetCompressedMultiTexImageEXT=GLee_Lazy_glGetCompressedMultiTexImageEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramStringEXT #define GLEE_C_DEFINED_glNamedProgramStringEXT void __stdcall GLee_Lazy_glNamedProgramStringEXT(GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid * string) {if (GLeeInit()) glNamedProgramStringEXT(program, target, format, len, string);} GLEEPFNGLNAMEDPROGRAMSTRINGEXTPROC GLeeFuncPtr_glNamedProgramStringEXT=GLee_Lazy_glNamedProgramStringEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParameter4dEXT #define GLEE_C_DEFINED_glNamedProgramLocalParameter4dEXT void __stdcall GLee_Lazy_glNamedProgramLocalParameter4dEXT(GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glNamedProgramLocalParameter4dEXT(program, target, index, x, y, z, w);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC GLeeFuncPtr_glNamedProgramLocalParameter4dEXT=GLee_Lazy_glNamedProgramLocalParameter4dEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParameter4dvEXT #define GLEE_C_DEFINED_glNamedProgramLocalParameter4dvEXT void __stdcall GLee_Lazy_glNamedProgramLocalParameter4dvEXT(GLuint program, GLenum target, GLuint index, const GLdouble * params) {if (GLeeInit()) glNamedProgramLocalParameter4dvEXT(program, target, index, params);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC GLeeFuncPtr_glNamedProgramLocalParameter4dvEXT=GLee_Lazy_glNamedProgramLocalParameter4dvEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParameter4fEXT #define GLEE_C_DEFINED_glNamedProgramLocalParameter4fEXT void __stdcall GLee_Lazy_glNamedProgramLocalParameter4fEXT(GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) {if (GLeeInit()) glNamedProgramLocalParameter4fEXT(program, target, index, x, y, z, w);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC GLeeFuncPtr_glNamedProgramLocalParameter4fEXT=GLee_Lazy_glNamedProgramLocalParameter4fEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParameter4fvEXT #define GLEE_C_DEFINED_glNamedProgramLocalParameter4fvEXT void __stdcall GLee_Lazy_glNamedProgramLocalParameter4fvEXT(GLuint program, GLenum target, GLuint index, const GLfloat * params) {if (GLeeInit()) glNamedProgramLocalParameter4fvEXT(program, target, index, params);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC GLeeFuncPtr_glNamedProgramLocalParameter4fvEXT=GLee_Lazy_glNamedProgramLocalParameter4fvEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedProgramLocalParameterdvEXT #define GLEE_C_DEFINED_glGetNamedProgramLocalParameterdvEXT void __stdcall GLee_Lazy_glGetNamedProgramLocalParameterdvEXT(GLuint program, GLenum target, GLuint index, GLdouble * params) {if (GLeeInit()) glGetNamedProgramLocalParameterdvEXT(program, target, index, params);} GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC GLeeFuncPtr_glGetNamedProgramLocalParameterdvEXT=GLee_Lazy_glGetNamedProgramLocalParameterdvEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedProgramLocalParameterfvEXT #define GLEE_C_DEFINED_glGetNamedProgramLocalParameterfvEXT void __stdcall GLee_Lazy_glGetNamedProgramLocalParameterfvEXT(GLuint program, GLenum target, GLuint index, GLfloat * params) {if (GLeeInit()) glGetNamedProgramLocalParameterfvEXT(program, target, index, params);} GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC GLeeFuncPtr_glGetNamedProgramLocalParameterfvEXT=GLee_Lazy_glGetNamedProgramLocalParameterfvEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedProgramivEXT #define GLEE_C_DEFINED_glGetNamedProgramivEXT void __stdcall GLee_Lazy_glGetNamedProgramivEXT(GLuint program, GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetNamedProgramivEXT(program, target, pname, params);} GLEEPFNGLGETNAMEDPROGRAMIVEXTPROC GLeeFuncPtr_glGetNamedProgramivEXT=GLee_Lazy_glGetNamedProgramivEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedProgramStringEXT #define GLEE_C_DEFINED_glGetNamedProgramStringEXT void __stdcall GLee_Lazy_glGetNamedProgramStringEXT(GLuint program, GLenum target, GLenum pname, GLvoid * string) {if (GLeeInit()) glGetNamedProgramStringEXT(program, target, pname, string);} GLEEPFNGLGETNAMEDPROGRAMSTRINGEXTPROC GLeeFuncPtr_glGetNamedProgramStringEXT=GLee_Lazy_glGetNamedProgramStringEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParameters4fvEXT #define GLEE_C_DEFINED_glNamedProgramLocalParameters4fvEXT void __stdcall GLee_Lazy_glNamedProgramLocalParameters4fvEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat * params) {if (GLeeInit()) glNamedProgramLocalParameters4fvEXT(program, target, index, count, params);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC GLeeFuncPtr_glNamedProgramLocalParameters4fvEXT=GLee_Lazy_glNamedProgramLocalParameters4fvEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParameterI4iEXT #define GLEE_C_DEFINED_glNamedProgramLocalParameterI4iEXT void __stdcall GLee_Lazy_glNamedProgramLocalParameterI4iEXT(GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w) {if (GLeeInit()) glNamedProgramLocalParameterI4iEXT(program, target, index, x, y, z, w);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC GLeeFuncPtr_glNamedProgramLocalParameterI4iEXT=GLee_Lazy_glNamedProgramLocalParameterI4iEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParameterI4ivEXT #define GLEE_C_DEFINED_glNamedProgramLocalParameterI4ivEXT void __stdcall GLee_Lazy_glNamedProgramLocalParameterI4ivEXT(GLuint program, GLenum target, GLuint index, const GLint * params) {if (GLeeInit()) glNamedProgramLocalParameterI4ivEXT(program, target, index, params);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC GLeeFuncPtr_glNamedProgramLocalParameterI4ivEXT=GLee_Lazy_glNamedProgramLocalParameterI4ivEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParametersI4ivEXT #define GLEE_C_DEFINED_glNamedProgramLocalParametersI4ivEXT void __stdcall GLee_Lazy_glNamedProgramLocalParametersI4ivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLint * params) {if (GLeeInit()) glNamedProgramLocalParametersI4ivEXT(program, target, index, count, params);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC GLeeFuncPtr_glNamedProgramLocalParametersI4ivEXT=GLee_Lazy_glNamedProgramLocalParametersI4ivEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParameterI4uiEXT #define GLEE_C_DEFINED_glNamedProgramLocalParameterI4uiEXT void __stdcall GLee_Lazy_glNamedProgramLocalParameterI4uiEXT(GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) {if (GLeeInit()) glNamedProgramLocalParameterI4uiEXT(program, target, index, x, y, z, w);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC GLeeFuncPtr_glNamedProgramLocalParameterI4uiEXT=GLee_Lazy_glNamedProgramLocalParameterI4uiEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParameterI4uivEXT #define GLEE_C_DEFINED_glNamedProgramLocalParameterI4uivEXT void __stdcall GLee_Lazy_glNamedProgramLocalParameterI4uivEXT(GLuint program, GLenum target, GLuint index, const GLuint * params) {if (GLeeInit()) glNamedProgramLocalParameterI4uivEXT(program, target, index, params);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC GLeeFuncPtr_glNamedProgramLocalParameterI4uivEXT=GLee_Lazy_glNamedProgramLocalParameterI4uivEXT; #endif #ifndef GLEE_C_DEFINED_glNamedProgramLocalParametersI4uivEXT #define GLEE_C_DEFINED_glNamedProgramLocalParametersI4uivEXT void __stdcall GLee_Lazy_glNamedProgramLocalParametersI4uivEXT(GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint * params) {if (GLeeInit()) glNamedProgramLocalParametersI4uivEXT(program, target, index, count, params);} GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC GLeeFuncPtr_glNamedProgramLocalParametersI4uivEXT=GLee_Lazy_glNamedProgramLocalParametersI4uivEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedProgramLocalParameterIivEXT #define GLEE_C_DEFINED_glGetNamedProgramLocalParameterIivEXT void __stdcall GLee_Lazy_glGetNamedProgramLocalParameterIivEXT(GLuint program, GLenum target, GLuint index, GLint * params) {if (GLeeInit()) glGetNamedProgramLocalParameterIivEXT(program, target, index, params);} GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC GLeeFuncPtr_glGetNamedProgramLocalParameterIivEXT=GLee_Lazy_glGetNamedProgramLocalParameterIivEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedProgramLocalParameterIuivEXT #define GLEE_C_DEFINED_glGetNamedProgramLocalParameterIuivEXT void __stdcall GLee_Lazy_glGetNamedProgramLocalParameterIuivEXT(GLuint program, GLenum target, GLuint index, GLuint * params) {if (GLeeInit()) glGetNamedProgramLocalParameterIuivEXT(program, target, index, params);} GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC GLeeFuncPtr_glGetNamedProgramLocalParameterIuivEXT=GLee_Lazy_glGetNamedProgramLocalParameterIuivEXT; #endif #ifndef GLEE_C_DEFINED_glTextureParameterIivEXT #define GLEE_C_DEFINED_glTextureParameterIivEXT void __stdcall GLee_Lazy_glTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glTextureParameterIivEXT(texture, target, pname, params);} GLEEPFNGLTEXTUREPARAMETERIIVEXTPROC GLeeFuncPtr_glTextureParameterIivEXT=GLee_Lazy_glTextureParameterIivEXT; #endif #ifndef GLEE_C_DEFINED_glTextureParameterIuivEXT #define GLEE_C_DEFINED_glTextureParameterIuivEXT void __stdcall GLee_Lazy_glTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, const GLuint * params) {if (GLeeInit()) glTextureParameterIuivEXT(texture, target, pname, params);} GLEEPFNGLTEXTUREPARAMETERIUIVEXTPROC GLeeFuncPtr_glTextureParameterIuivEXT=GLee_Lazy_glTextureParameterIuivEXT; #endif #ifndef GLEE_C_DEFINED_glGetTextureParameterIivEXT #define GLEE_C_DEFINED_glGetTextureParameterIivEXT void __stdcall GLee_Lazy_glGetTextureParameterIivEXT(GLuint texture, GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetTextureParameterIivEXT(texture, target, pname, params);} GLEEPFNGLGETTEXTUREPARAMETERIIVEXTPROC GLeeFuncPtr_glGetTextureParameterIivEXT=GLee_Lazy_glGetTextureParameterIivEXT; #endif #ifndef GLEE_C_DEFINED_glGetTextureParameterIuivEXT #define GLEE_C_DEFINED_glGetTextureParameterIuivEXT void __stdcall GLee_Lazy_glGetTextureParameterIuivEXT(GLuint texture, GLenum target, GLenum pname, GLuint * params) {if (GLeeInit()) glGetTextureParameterIuivEXT(texture, target, pname, params);} GLEEPFNGLGETTEXTUREPARAMETERIUIVEXTPROC GLeeFuncPtr_glGetTextureParameterIuivEXT=GLee_Lazy_glGetTextureParameterIuivEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexParameterIivEXT #define GLEE_C_DEFINED_glMultiTexParameterIivEXT void __stdcall GLee_Lazy_glMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, const GLint * params) {if (GLeeInit()) glMultiTexParameterIivEXT(texunit, target, pname, params);} GLEEPFNGLMULTITEXPARAMETERIIVEXTPROC GLeeFuncPtr_glMultiTexParameterIivEXT=GLee_Lazy_glMultiTexParameterIivEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexParameterIuivEXT #define GLEE_C_DEFINED_glMultiTexParameterIuivEXT void __stdcall GLee_Lazy_glMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, const GLuint * params) {if (GLeeInit()) glMultiTexParameterIuivEXT(texunit, target, pname, params);} GLEEPFNGLMULTITEXPARAMETERIUIVEXTPROC GLeeFuncPtr_glMultiTexParameterIuivEXT=GLee_Lazy_glMultiTexParameterIuivEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexParameterIivEXT #define GLEE_C_DEFINED_glGetMultiTexParameterIivEXT void __stdcall GLee_Lazy_glGetMultiTexParameterIivEXT(GLenum texunit, GLenum target, GLenum pname, GLint * params) {if (GLeeInit()) glGetMultiTexParameterIivEXT(texunit, target, pname, params);} GLEEPFNGLGETMULTITEXPARAMETERIIVEXTPROC GLeeFuncPtr_glGetMultiTexParameterIivEXT=GLee_Lazy_glGetMultiTexParameterIivEXT; #endif #ifndef GLEE_C_DEFINED_glGetMultiTexParameterIuivEXT #define GLEE_C_DEFINED_glGetMultiTexParameterIuivEXT void __stdcall GLee_Lazy_glGetMultiTexParameterIuivEXT(GLenum texunit, GLenum target, GLenum pname, GLuint * params) {if (GLeeInit()) glGetMultiTexParameterIuivEXT(texunit, target, pname, params);} GLEEPFNGLGETMULTITEXPARAMETERIUIVEXTPROC GLeeFuncPtr_glGetMultiTexParameterIuivEXT=GLee_Lazy_glGetMultiTexParameterIuivEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1fEXT #define GLEE_C_DEFINED_glProgramUniform1fEXT void __stdcall GLee_Lazy_glProgramUniform1fEXT(GLuint program, GLint location, GLfloat v0) {if (GLeeInit()) glProgramUniform1fEXT(program, location, v0);} GLEEPFNGLPROGRAMUNIFORM1FEXTPROC GLeeFuncPtr_glProgramUniform1fEXT=GLee_Lazy_glProgramUniform1fEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2fEXT #define GLEE_C_DEFINED_glProgramUniform2fEXT void __stdcall GLee_Lazy_glProgramUniform2fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1) {if (GLeeInit()) glProgramUniform2fEXT(program, location, v0, v1);} GLEEPFNGLPROGRAMUNIFORM2FEXTPROC GLeeFuncPtr_glProgramUniform2fEXT=GLee_Lazy_glProgramUniform2fEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3fEXT #define GLEE_C_DEFINED_glProgramUniform3fEXT void __stdcall GLee_Lazy_glProgramUniform3fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2) {if (GLeeInit()) glProgramUniform3fEXT(program, location, v0, v1, v2);} GLEEPFNGLPROGRAMUNIFORM3FEXTPROC GLeeFuncPtr_glProgramUniform3fEXT=GLee_Lazy_glProgramUniform3fEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4fEXT #define GLEE_C_DEFINED_glProgramUniform4fEXT void __stdcall GLee_Lazy_glProgramUniform4fEXT(GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3) {if (GLeeInit()) glProgramUniform4fEXT(program, location, v0, v1, v2, v3);} GLEEPFNGLPROGRAMUNIFORM4FEXTPROC GLeeFuncPtr_glProgramUniform4fEXT=GLee_Lazy_glProgramUniform4fEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1iEXT #define GLEE_C_DEFINED_glProgramUniform1iEXT void __stdcall GLee_Lazy_glProgramUniform1iEXT(GLuint program, GLint location, GLint v0) {if (GLeeInit()) glProgramUniform1iEXT(program, location, v0);} GLEEPFNGLPROGRAMUNIFORM1IEXTPROC GLeeFuncPtr_glProgramUniform1iEXT=GLee_Lazy_glProgramUniform1iEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2iEXT #define GLEE_C_DEFINED_glProgramUniform2iEXT void __stdcall GLee_Lazy_glProgramUniform2iEXT(GLuint program, GLint location, GLint v0, GLint v1) {if (GLeeInit()) glProgramUniform2iEXT(program, location, v0, v1);} GLEEPFNGLPROGRAMUNIFORM2IEXTPROC GLeeFuncPtr_glProgramUniform2iEXT=GLee_Lazy_glProgramUniform2iEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3iEXT #define GLEE_C_DEFINED_glProgramUniform3iEXT void __stdcall GLee_Lazy_glProgramUniform3iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2) {if (GLeeInit()) glProgramUniform3iEXT(program, location, v0, v1, v2);} GLEEPFNGLPROGRAMUNIFORM3IEXTPROC GLeeFuncPtr_glProgramUniform3iEXT=GLee_Lazy_glProgramUniform3iEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4iEXT #define GLEE_C_DEFINED_glProgramUniform4iEXT void __stdcall GLee_Lazy_glProgramUniform4iEXT(GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3) {if (GLeeInit()) glProgramUniform4iEXT(program, location, v0, v1, v2, v3);} GLEEPFNGLPROGRAMUNIFORM4IEXTPROC GLeeFuncPtr_glProgramUniform4iEXT=GLee_Lazy_glProgramUniform4iEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1fvEXT #define GLEE_C_DEFINED_glProgramUniform1fvEXT void __stdcall GLee_Lazy_glProgramUniform1fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glProgramUniform1fvEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM1FVEXTPROC GLeeFuncPtr_glProgramUniform1fvEXT=GLee_Lazy_glProgramUniform1fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2fvEXT #define GLEE_C_DEFINED_glProgramUniform2fvEXT void __stdcall GLee_Lazy_glProgramUniform2fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glProgramUniform2fvEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM2FVEXTPROC GLeeFuncPtr_glProgramUniform2fvEXT=GLee_Lazy_glProgramUniform2fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3fvEXT #define GLEE_C_DEFINED_glProgramUniform3fvEXT void __stdcall GLee_Lazy_glProgramUniform3fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glProgramUniform3fvEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM3FVEXTPROC GLeeFuncPtr_glProgramUniform3fvEXT=GLee_Lazy_glProgramUniform3fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4fvEXT #define GLEE_C_DEFINED_glProgramUniform4fvEXT void __stdcall GLee_Lazy_glProgramUniform4fvEXT(GLuint program, GLint location, GLsizei count, const GLfloat * value) {if (GLeeInit()) glProgramUniform4fvEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM4FVEXTPROC GLeeFuncPtr_glProgramUniform4fvEXT=GLee_Lazy_glProgramUniform4fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1ivEXT #define GLEE_C_DEFINED_glProgramUniform1ivEXT void __stdcall GLee_Lazy_glProgramUniform1ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glProgramUniform1ivEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM1IVEXTPROC GLeeFuncPtr_glProgramUniform1ivEXT=GLee_Lazy_glProgramUniform1ivEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2ivEXT #define GLEE_C_DEFINED_glProgramUniform2ivEXT void __stdcall GLee_Lazy_glProgramUniform2ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glProgramUniform2ivEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM2IVEXTPROC GLeeFuncPtr_glProgramUniform2ivEXT=GLee_Lazy_glProgramUniform2ivEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3ivEXT #define GLEE_C_DEFINED_glProgramUniform3ivEXT void __stdcall GLee_Lazy_glProgramUniform3ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glProgramUniform3ivEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM3IVEXTPROC GLeeFuncPtr_glProgramUniform3ivEXT=GLee_Lazy_glProgramUniform3ivEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4ivEXT #define GLEE_C_DEFINED_glProgramUniform4ivEXT void __stdcall GLee_Lazy_glProgramUniform4ivEXT(GLuint program, GLint location, GLsizei count, const GLint * value) {if (GLeeInit()) glProgramUniform4ivEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM4IVEXTPROC GLeeFuncPtr_glProgramUniform4ivEXT=GLee_Lazy_glProgramUniform4ivEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2fvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix2fvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix2fvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2fvEXT=GLee_Lazy_glProgramUniformMatrix2fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3fvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix3fvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix3fvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3fvEXT=GLee_Lazy_glProgramUniformMatrix3fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4fvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix4fvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix4fvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4fvEXT=GLee_Lazy_glProgramUniformMatrix4fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2x3fvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix2x3fvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix2x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix2x3fvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2x3fvEXT=GLee_Lazy_glProgramUniformMatrix2x3fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3x2fvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix3x2fvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix3x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix3x2fvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3x2fvEXT=GLee_Lazy_glProgramUniformMatrix3x2fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2x4fvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix2x4fvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix2x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix2x4fvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2x4fvEXT=GLee_Lazy_glProgramUniformMatrix2x4fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4x2fvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix4x2fvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix4x2fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix4x2fvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4x2fvEXT=GLee_Lazy_glProgramUniformMatrix4x2fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3x4fvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix3x4fvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix3x4fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix3x4fvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3x4fvEXT=GLee_Lazy_glProgramUniformMatrix3x4fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4x3fvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix4x3fvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix4x3fvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value) {if (GLeeInit()) glProgramUniformMatrix4x3fvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4x3fvEXT=GLee_Lazy_glProgramUniformMatrix4x3fvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1uiEXT #define GLEE_C_DEFINED_glProgramUniform1uiEXT void __stdcall GLee_Lazy_glProgramUniform1uiEXT(GLuint program, GLint location, GLuint v0) {if (GLeeInit()) glProgramUniform1uiEXT(program, location, v0);} GLEEPFNGLPROGRAMUNIFORM1UIEXTPROC GLeeFuncPtr_glProgramUniform1uiEXT=GLee_Lazy_glProgramUniform1uiEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2uiEXT #define GLEE_C_DEFINED_glProgramUniform2uiEXT void __stdcall GLee_Lazy_glProgramUniform2uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1) {if (GLeeInit()) glProgramUniform2uiEXT(program, location, v0, v1);} GLEEPFNGLPROGRAMUNIFORM2UIEXTPROC GLeeFuncPtr_glProgramUniform2uiEXT=GLee_Lazy_glProgramUniform2uiEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3uiEXT #define GLEE_C_DEFINED_glProgramUniform3uiEXT void __stdcall GLee_Lazy_glProgramUniform3uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2) {if (GLeeInit()) glProgramUniform3uiEXT(program, location, v0, v1, v2);} GLEEPFNGLPROGRAMUNIFORM3UIEXTPROC GLeeFuncPtr_glProgramUniform3uiEXT=GLee_Lazy_glProgramUniform3uiEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4uiEXT #define GLEE_C_DEFINED_glProgramUniform4uiEXT void __stdcall GLee_Lazy_glProgramUniform4uiEXT(GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {if (GLeeInit()) glProgramUniform4uiEXT(program, location, v0, v1, v2, v3);} GLEEPFNGLPROGRAMUNIFORM4UIEXTPROC GLeeFuncPtr_glProgramUniform4uiEXT=GLee_Lazy_glProgramUniform4uiEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1uivEXT #define GLEE_C_DEFINED_glProgramUniform1uivEXT void __stdcall GLee_Lazy_glProgramUniform1uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glProgramUniform1uivEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM1UIVEXTPROC GLeeFuncPtr_glProgramUniform1uivEXT=GLee_Lazy_glProgramUniform1uivEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2uivEXT #define GLEE_C_DEFINED_glProgramUniform2uivEXT void __stdcall GLee_Lazy_glProgramUniform2uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glProgramUniform2uivEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM2UIVEXTPROC GLeeFuncPtr_glProgramUniform2uivEXT=GLee_Lazy_glProgramUniform2uivEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3uivEXT #define GLEE_C_DEFINED_glProgramUniform3uivEXT void __stdcall GLee_Lazy_glProgramUniform3uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glProgramUniform3uivEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM3UIVEXTPROC GLeeFuncPtr_glProgramUniform3uivEXT=GLee_Lazy_glProgramUniform3uivEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4uivEXT #define GLEE_C_DEFINED_glProgramUniform4uivEXT void __stdcall GLee_Lazy_glProgramUniform4uivEXT(GLuint program, GLint location, GLsizei count, const GLuint * value) {if (GLeeInit()) glProgramUniform4uivEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM4UIVEXTPROC GLeeFuncPtr_glProgramUniform4uivEXT=GLee_Lazy_glProgramUniform4uivEXT; #endif #ifndef GLEE_C_DEFINED_glNamedBufferDataEXT #define GLEE_C_DEFINED_glNamedBufferDataEXT void __stdcall GLee_Lazy_glNamedBufferDataEXT(GLuint buffer, GLsizeiptr size, const GLvoid * data, GLenum usage) {if (GLeeInit()) glNamedBufferDataEXT(buffer, size, data, usage);} GLEEPFNGLNAMEDBUFFERDATAEXTPROC GLeeFuncPtr_glNamedBufferDataEXT=GLee_Lazy_glNamedBufferDataEXT; #endif #ifndef GLEE_C_DEFINED_glNamedBufferSubDataEXT #define GLEE_C_DEFINED_glNamedBufferSubDataEXT void __stdcall GLee_Lazy_glNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid * data) {if (GLeeInit()) glNamedBufferSubDataEXT(buffer, offset, size, data);} GLEEPFNGLNAMEDBUFFERSUBDATAEXTPROC GLeeFuncPtr_glNamedBufferSubDataEXT=GLee_Lazy_glNamedBufferSubDataEXT; #endif #ifndef GLEE_C_DEFINED_glMapNamedBufferEXT #define GLEE_C_DEFINED_glMapNamedBufferEXT GLvoid* __stdcall GLee_Lazy_glMapNamedBufferEXT(GLuint buffer, GLenum access) {if (GLeeInit()) return glMapNamedBufferEXT(buffer, access); return (GLvoid*)0;} GLEEPFNGLMAPNAMEDBUFFEREXTPROC GLeeFuncPtr_glMapNamedBufferEXT=GLee_Lazy_glMapNamedBufferEXT; #endif #ifndef GLEE_C_DEFINED_glUnmapNamedBufferEXT #define GLEE_C_DEFINED_glUnmapNamedBufferEXT GLboolean __stdcall GLee_Lazy_glUnmapNamedBufferEXT(GLuint buffer) {if (GLeeInit()) return glUnmapNamedBufferEXT(buffer); return (GLboolean)0;} GLEEPFNGLUNMAPNAMEDBUFFEREXTPROC GLeeFuncPtr_glUnmapNamedBufferEXT=GLee_Lazy_glUnmapNamedBufferEXT; #endif #ifndef GLEE_C_DEFINED_glMapNamedBufferRangeEXT #define GLEE_C_DEFINED_glMapNamedBufferRangeEXT GLvoid* __stdcall GLee_Lazy_glMapNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access) {if (GLeeInit()) return glMapNamedBufferRangeEXT(buffer, offset, length, access); return (GLvoid*)0;} GLEEPFNGLMAPNAMEDBUFFERRANGEEXTPROC GLeeFuncPtr_glMapNamedBufferRangeEXT=GLee_Lazy_glMapNamedBufferRangeEXT; #endif #ifndef GLEE_C_DEFINED_glFlushMappedNamedBufferRangeEXT #define GLEE_C_DEFINED_glFlushMappedNamedBufferRangeEXT void __stdcall GLee_Lazy_glFlushMappedNamedBufferRangeEXT(GLuint buffer, GLintptr offset, GLsizeiptr length) {if (GLeeInit()) glFlushMappedNamedBufferRangeEXT(buffer, offset, length);} GLEEPFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC GLeeFuncPtr_glFlushMappedNamedBufferRangeEXT=GLee_Lazy_glFlushMappedNamedBufferRangeEXT; #endif #ifndef GLEE_C_DEFINED_glNamedCopyBufferSubDataEXT #define GLEE_C_DEFINED_glNamedCopyBufferSubDataEXT void __stdcall GLee_Lazy_glNamedCopyBufferSubDataEXT(GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) {if (GLeeInit()) glNamedCopyBufferSubDataEXT(readBuffer, writeBuffer, readOffset, writeOffset, size);} GLEEPFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC GLeeFuncPtr_glNamedCopyBufferSubDataEXT=GLee_Lazy_glNamedCopyBufferSubDataEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedBufferParameterivEXT #define GLEE_C_DEFINED_glGetNamedBufferParameterivEXT void __stdcall GLee_Lazy_glGetNamedBufferParameterivEXT(GLuint buffer, GLenum pname, GLint * params) {if (GLeeInit()) glGetNamedBufferParameterivEXT(buffer, pname, params);} GLEEPFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC GLeeFuncPtr_glGetNamedBufferParameterivEXT=GLee_Lazy_glGetNamedBufferParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedBufferPointervEXT #define GLEE_C_DEFINED_glGetNamedBufferPointervEXT void __stdcall GLee_Lazy_glGetNamedBufferPointervEXT(GLuint buffer, GLenum pname, GLvoid* * params) {if (GLeeInit()) glGetNamedBufferPointervEXT(buffer, pname, params);} GLEEPFNGLGETNAMEDBUFFERPOINTERVEXTPROC GLeeFuncPtr_glGetNamedBufferPointervEXT=GLee_Lazy_glGetNamedBufferPointervEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedBufferSubDataEXT #define GLEE_C_DEFINED_glGetNamedBufferSubDataEXT void __stdcall GLee_Lazy_glGetNamedBufferSubDataEXT(GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid * data) {if (GLeeInit()) glGetNamedBufferSubDataEXT(buffer, offset, size, data);} GLEEPFNGLGETNAMEDBUFFERSUBDATAEXTPROC GLeeFuncPtr_glGetNamedBufferSubDataEXT=GLee_Lazy_glGetNamedBufferSubDataEXT; #endif #ifndef GLEE_C_DEFINED_glTextureBufferEXT #define GLEE_C_DEFINED_glTextureBufferEXT void __stdcall GLee_Lazy_glTextureBufferEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer) {if (GLeeInit()) glTextureBufferEXT(texture, target, internalformat, buffer);} GLEEPFNGLTEXTUREBUFFEREXTPROC GLeeFuncPtr_glTextureBufferEXT=GLee_Lazy_glTextureBufferEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexBufferEXT #define GLEE_C_DEFINED_glMultiTexBufferEXT void __stdcall GLee_Lazy_glMultiTexBufferEXT(GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer) {if (GLeeInit()) glMultiTexBufferEXT(texunit, target, internalformat, buffer);} GLEEPFNGLMULTITEXBUFFEREXTPROC GLeeFuncPtr_glMultiTexBufferEXT=GLee_Lazy_glMultiTexBufferEXT; #endif #ifndef GLEE_C_DEFINED_glNamedRenderbufferStorageEXT #define GLEE_C_DEFINED_glNamedRenderbufferStorageEXT void __stdcall GLee_Lazy_glNamedRenderbufferStorageEXT(GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height) {if (GLeeInit()) glNamedRenderbufferStorageEXT(renderbuffer, internalformat, width, height);} GLEEPFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC GLeeFuncPtr_glNamedRenderbufferStorageEXT=GLee_Lazy_glNamedRenderbufferStorageEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedRenderbufferParameterivEXT #define GLEE_C_DEFINED_glGetNamedRenderbufferParameterivEXT void __stdcall GLee_Lazy_glGetNamedRenderbufferParameterivEXT(GLuint renderbuffer, GLenum pname, GLint * params) {if (GLeeInit()) glGetNamedRenderbufferParameterivEXT(renderbuffer, pname, params);} GLEEPFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC GLeeFuncPtr_glGetNamedRenderbufferParameterivEXT=GLee_Lazy_glGetNamedRenderbufferParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glCheckNamedFramebufferStatusEXT #define GLEE_C_DEFINED_glCheckNamedFramebufferStatusEXT GLenum __stdcall GLee_Lazy_glCheckNamedFramebufferStatusEXT(GLuint framebuffer, GLenum target) {if (GLeeInit()) return glCheckNamedFramebufferStatusEXT(framebuffer, target); return (GLenum)0;} GLEEPFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC GLeeFuncPtr_glCheckNamedFramebufferStatusEXT=GLee_Lazy_glCheckNamedFramebufferStatusEXT; #endif #ifndef GLEE_C_DEFINED_glNamedFramebufferTexture1DEXT #define GLEE_C_DEFINED_glNamedFramebufferTexture1DEXT void __stdcall GLee_Lazy_glNamedFramebufferTexture1DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {if (GLeeInit()) glNamedFramebufferTexture1DEXT(framebuffer, attachment, textarget, texture, level);} GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC GLeeFuncPtr_glNamedFramebufferTexture1DEXT=GLee_Lazy_glNamedFramebufferTexture1DEXT; #endif #ifndef GLEE_C_DEFINED_glNamedFramebufferTexture2DEXT #define GLEE_C_DEFINED_glNamedFramebufferTexture2DEXT void __stdcall GLee_Lazy_glNamedFramebufferTexture2DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {if (GLeeInit()) glNamedFramebufferTexture2DEXT(framebuffer, attachment, textarget, texture, level);} GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC GLeeFuncPtr_glNamedFramebufferTexture2DEXT=GLee_Lazy_glNamedFramebufferTexture2DEXT; #endif #ifndef GLEE_C_DEFINED_glNamedFramebufferTexture3DEXT #define GLEE_C_DEFINED_glNamedFramebufferTexture3DEXT void __stdcall GLee_Lazy_glNamedFramebufferTexture3DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) {if (GLeeInit()) glNamedFramebufferTexture3DEXT(framebuffer, attachment, textarget, texture, level, zoffset);} GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC GLeeFuncPtr_glNamedFramebufferTexture3DEXT=GLee_Lazy_glNamedFramebufferTexture3DEXT; #endif #ifndef GLEE_C_DEFINED_glNamedFramebufferRenderbufferEXT #define GLEE_C_DEFINED_glNamedFramebufferRenderbufferEXT void __stdcall GLee_Lazy_glNamedFramebufferRenderbufferEXT(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {if (GLeeInit()) glNamedFramebufferRenderbufferEXT(framebuffer, attachment, renderbuffertarget, renderbuffer);} GLEEPFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC GLeeFuncPtr_glNamedFramebufferRenderbufferEXT=GLee_Lazy_glNamedFramebufferRenderbufferEXT; #endif #ifndef GLEE_C_DEFINED_glGetNamedFramebufferAttachmentParameterivEXT #define GLEE_C_DEFINED_glGetNamedFramebufferAttachmentParameterivEXT void __stdcall GLee_Lazy_glGetNamedFramebufferAttachmentParameterivEXT(GLuint framebuffer, GLenum attachment, GLenum pname, GLint * params) {if (GLeeInit()) glGetNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, params);} GLEEPFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC GLeeFuncPtr_glGetNamedFramebufferAttachmentParameterivEXT=GLee_Lazy_glGetNamedFramebufferAttachmentParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glGenerateTextureMipmapEXT #define GLEE_C_DEFINED_glGenerateTextureMipmapEXT void __stdcall GLee_Lazy_glGenerateTextureMipmapEXT(GLuint texture, GLenum target) {if (GLeeInit()) glGenerateTextureMipmapEXT(texture, target);} GLEEPFNGLGENERATETEXTUREMIPMAPEXTPROC GLeeFuncPtr_glGenerateTextureMipmapEXT=GLee_Lazy_glGenerateTextureMipmapEXT; #endif #ifndef GLEE_C_DEFINED_glGenerateMultiTexMipmapEXT #define GLEE_C_DEFINED_glGenerateMultiTexMipmapEXT void __stdcall GLee_Lazy_glGenerateMultiTexMipmapEXT(GLenum texunit, GLenum target) {if (GLeeInit()) glGenerateMultiTexMipmapEXT(texunit, target);} GLEEPFNGLGENERATEMULTITEXMIPMAPEXTPROC GLeeFuncPtr_glGenerateMultiTexMipmapEXT=GLee_Lazy_glGenerateMultiTexMipmapEXT; #endif #ifndef GLEE_C_DEFINED_glFramebufferDrawBufferEXT #define GLEE_C_DEFINED_glFramebufferDrawBufferEXT void __stdcall GLee_Lazy_glFramebufferDrawBufferEXT(GLuint framebuffer, GLenum mode) {if (GLeeInit()) glFramebufferDrawBufferEXT(framebuffer, mode);} GLEEPFNGLFRAMEBUFFERDRAWBUFFEREXTPROC GLeeFuncPtr_glFramebufferDrawBufferEXT=GLee_Lazy_glFramebufferDrawBufferEXT; #endif #ifndef GLEE_C_DEFINED_glFramebufferDrawBuffersEXT #define GLEE_C_DEFINED_glFramebufferDrawBuffersEXT void __stdcall GLee_Lazy_glFramebufferDrawBuffersEXT(GLuint framebuffer, GLsizei n, const GLenum * bufs) {if (GLeeInit()) glFramebufferDrawBuffersEXT(framebuffer, n, bufs);} GLEEPFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC GLeeFuncPtr_glFramebufferDrawBuffersEXT=GLee_Lazy_glFramebufferDrawBuffersEXT; #endif #ifndef GLEE_C_DEFINED_glFramebufferReadBufferEXT #define GLEE_C_DEFINED_glFramebufferReadBufferEXT void __stdcall GLee_Lazy_glFramebufferReadBufferEXT(GLuint framebuffer, GLenum mode) {if (GLeeInit()) glFramebufferReadBufferEXT(framebuffer, mode);} GLEEPFNGLFRAMEBUFFERREADBUFFEREXTPROC GLeeFuncPtr_glFramebufferReadBufferEXT=GLee_Lazy_glFramebufferReadBufferEXT; #endif #ifndef GLEE_C_DEFINED_glGetFramebufferParameterivEXT #define GLEE_C_DEFINED_glGetFramebufferParameterivEXT void __stdcall GLee_Lazy_glGetFramebufferParameterivEXT(GLuint framebuffer, GLenum pname, GLint * params) {if (GLeeInit()) glGetFramebufferParameterivEXT(framebuffer, pname, params);} GLEEPFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC GLeeFuncPtr_glGetFramebufferParameterivEXT=GLee_Lazy_glGetFramebufferParameterivEXT; #endif #ifndef GLEE_C_DEFINED_glNamedRenderbufferStorageMultisampleEXT #define GLEE_C_DEFINED_glNamedRenderbufferStorageMultisampleEXT void __stdcall GLee_Lazy_glNamedRenderbufferStorageMultisampleEXT(GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) {if (GLeeInit()) glNamedRenderbufferStorageMultisampleEXT(renderbuffer, samples, internalformat, width, height);} GLEEPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC GLeeFuncPtr_glNamedRenderbufferStorageMultisampleEXT=GLee_Lazy_glNamedRenderbufferStorageMultisampleEXT; #endif #ifndef GLEE_C_DEFINED_glNamedRenderbufferStorageMultisampleCoverageEXT #define GLEE_C_DEFINED_glNamedRenderbufferStorageMultisampleCoverageEXT void __stdcall GLee_Lazy_glNamedRenderbufferStorageMultisampleCoverageEXT(GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height) {if (GLeeInit()) glNamedRenderbufferStorageMultisampleCoverageEXT(renderbuffer, coverageSamples, colorSamples, internalformat, width, height);} GLEEPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC GLeeFuncPtr_glNamedRenderbufferStorageMultisampleCoverageEXT=GLee_Lazy_glNamedRenderbufferStorageMultisampleCoverageEXT; #endif #ifndef GLEE_C_DEFINED_glNamedFramebufferTextureEXT #define GLEE_C_DEFINED_glNamedFramebufferTextureEXT void __stdcall GLee_Lazy_glNamedFramebufferTextureEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level) {if (GLeeInit()) glNamedFramebufferTextureEXT(framebuffer, attachment, texture, level);} GLEEPFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC GLeeFuncPtr_glNamedFramebufferTextureEXT=GLee_Lazy_glNamedFramebufferTextureEXT; #endif #ifndef GLEE_C_DEFINED_glNamedFramebufferTextureLayerEXT #define GLEE_C_DEFINED_glNamedFramebufferTextureLayerEXT void __stdcall GLee_Lazy_glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer) {if (GLeeInit()) glNamedFramebufferTextureLayerEXT(framebuffer, attachment, texture, level, layer);} GLEEPFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC GLeeFuncPtr_glNamedFramebufferTextureLayerEXT=GLee_Lazy_glNamedFramebufferTextureLayerEXT; #endif #ifndef GLEE_C_DEFINED_glNamedFramebufferTextureFaceEXT #define GLEE_C_DEFINED_glNamedFramebufferTextureFaceEXT void __stdcall GLee_Lazy_glNamedFramebufferTextureFaceEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face) {if (GLeeInit()) glNamedFramebufferTextureFaceEXT(framebuffer, attachment, texture, level, face);} GLEEPFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC GLeeFuncPtr_glNamedFramebufferTextureFaceEXT=GLee_Lazy_glNamedFramebufferTextureFaceEXT; #endif #ifndef GLEE_C_DEFINED_glTextureRenderbufferEXT #define GLEE_C_DEFINED_glTextureRenderbufferEXT void __stdcall GLee_Lazy_glTextureRenderbufferEXT(GLuint texture, GLenum target, GLuint renderbuffer) {if (GLeeInit()) glTextureRenderbufferEXT(texture, target, renderbuffer);} GLEEPFNGLTEXTURERENDERBUFFEREXTPROC GLeeFuncPtr_glTextureRenderbufferEXT=GLee_Lazy_glTextureRenderbufferEXT; #endif #ifndef GLEE_C_DEFINED_glMultiTexRenderbufferEXT #define GLEE_C_DEFINED_glMultiTexRenderbufferEXT void __stdcall GLee_Lazy_glMultiTexRenderbufferEXT(GLenum texunit, GLenum target, GLuint renderbuffer) {if (GLeeInit()) glMultiTexRenderbufferEXT(texunit, target, renderbuffer);} GLEEPFNGLMULTITEXRENDERBUFFEREXTPROC GLeeFuncPtr_glMultiTexRenderbufferEXT=GLee_Lazy_glMultiTexRenderbufferEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1dEXT #define GLEE_C_DEFINED_glProgramUniform1dEXT void __stdcall GLee_Lazy_glProgramUniform1dEXT(GLuint program, GLint location, GLdouble x) {if (GLeeInit()) glProgramUniform1dEXT(program, location, x);} GLEEPFNGLPROGRAMUNIFORM1DEXTPROC GLeeFuncPtr_glProgramUniform1dEXT=GLee_Lazy_glProgramUniform1dEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2dEXT #define GLEE_C_DEFINED_glProgramUniform2dEXT void __stdcall GLee_Lazy_glProgramUniform2dEXT(GLuint program, GLint location, GLdouble x, GLdouble y) {if (GLeeInit()) glProgramUniform2dEXT(program, location, x, y);} GLEEPFNGLPROGRAMUNIFORM2DEXTPROC GLeeFuncPtr_glProgramUniform2dEXT=GLee_Lazy_glProgramUniform2dEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3dEXT #define GLEE_C_DEFINED_glProgramUniform3dEXT void __stdcall GLee_Lazy_glProgramUniform3dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glProgramUniform3dEXT(program, location, x, y, z);} GLEEPFNGLPROGRAMUNIFORM3DEXTPROC GLeeFuncPtr_glProgramUniform3dEXT=GLee_Lazy_glProgramUniform3dEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4dEXT #define GLEE_C_DEFINED_glProgramUniform4dEXT void __stdcall GLee_Lazy_glProgramUniform4dEXT(GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glProgramUniform4dEXT(program, location, x, y, z, w);} GLEEPFNGLPROGRAMUNIFORM4DEXTPROC GLeeFuncPtr_glProgramUniform4dEXT=GLee_Lazy_glProgramUniform4dEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1dvEXT #define GLEE_C_DEFINED_glProgramUniform1dvEXT void __stdcall GLee_Lazy_glProgramUniform1dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glProgramUniform1dvEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM1DVEXTPROC GLeeFuncPtr_glProgramUniform1dvEXT=GLee_Lazy_glProgramUniform1dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2dvEXT #define GLEE_C_DEFINED_glProgramUniform2dvEXT void __stdcall GLee_Lazy_glProgramUniform2dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glProgramUniform2dvEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM2DVEXTPROC GLeeFuncPtr_glProgramUniform2dvEXT=GLee_Lazy_glProgramUniform2dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3dvEXT #define GLEE_C_DEFINED_glProgramUniform3dvEXT void __stdcall GLee_Lazy_glProgramUniform3dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glProgramUniform3dvEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM3DVEXTPROC GLeeFuncPtr_glProgramUniform3dvEXT=GLee_Lazy_glProgramUniform3dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4dvEXT #define GLEE_C_DEFINED_glProgramUniform4dvEXT void __stdcall GLee_Lazy_glProgramUniform4dvEXT(GLuint program, GLint location, GLsizei count, const GLdouble * value) {if (GLeeInit()) glProgramUniform4dvEXT(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM4DVEXTPROC GLeeFuncPtr_glProgramUniform4dvEXT=GLee_Lazy_glProgramUniform4dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2dvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix2dvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix2dvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2dvEXT=GLee_Lazy_glProgramUniformMatrix2dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3dvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix3dvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix3dvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3dvEXT=GLee_Lazy_glProgramUniformMatrix3dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4dvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix4dvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix4dvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4dvEXT=GLee_Lazy_glProgramUniformMatrix4dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2x3dvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix2x3dvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix2x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix2x3dvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2x3dvEXT=GLee_Lazy_glProgramUniformMatrix2x3dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix2x4dvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix2x4dvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix2x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix2x4dvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2x4dvEXT=GLee_Lazy_glProgramUniformMatrix2x4dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3x2dvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix3x2dvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix3x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix3x2dvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3x2dvEXT=GLee_Lazy_glProgramUniformMatrix3x2dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix3x4dvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix3x4dvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix3x4dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix3x4dvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3x4dvEXT=GLee_Lazy_glProgramUniformMatrix3x4dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4x2dvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix4x2dvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix4x2dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix4x2dvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4x2dvEXT=GLee_Lazy_glProgramUniformMatrix4x2dvEXT; #endif #ifndef GLEE_C_DEFINED_glProgramUniformMatrix4x3dvEXT #define GLEE_C_DEFINED_glProgramUniformMatrix4x3dvEXT void __stdcall GLee_Lazy_glProgramUniformMatrix4x3dvEXT(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value) {if (GLeeInit()) glProgramUniformMatrix4x3dvEXT(program, location, count, transpose, value);} GLEEPFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4x3dvEXT=GLee_Lazy_glProgramUniformMatrix4x3dvEXT; #endif #endif /* GL_EXT_vertex_array_bgra */ #ifdef __GLEE_GL_EXT_vertex_array_bgra #endif /* GL_EXT_texture_swizzle */ #ifdef __GLEE_GL_EXT_texture_swizzle #endif /* GL_NV_explicit_multisample */ #ifdef __GLEE_GL_NV_explicit_multisample #ifndef GLEE_C_DEFINED_glGetMultisamplefvNV #define GLEE_C_DEFINED_glGetMultisamplefvNV void __stdcall GLee_Lazy_glGetMultisamplefvNV(GLenum pname, GLuint index, GLfloat * val) {if (GLeeInit()) glGetMultisamplefvNV(pname, index, val);} GLEEPFNGLGETMULTISAMPLEFVNVPROC GLeeFuncPtr_glGetMultisamplefvNV=GLee_Lazy_glGetMultisamplefvNV; #endif #ifndef GLEE_C_DEFINED_glSampleMaskIndexedNV #define GLEE_C_DEFINED_glSampleMaskIndexedNV void __stdcall GLee_Lazy_glSampleMaskIndexedNV(GLuint index, GLbitfield mask) {if (GLeeInit()) glSampleMaskIndexedNV(index, mask);} GLEEPFNGLSAMPLEMASKINDEXEDNVPROC GLeeFuncPtr_glSampleMaskIndexedNV=GLee_Lazy_glSampleMaskIndexedNV; #endif #ifndef GLEE_C_DEFINED_glTexRenderbufferNV #define GLEE_C_DEFINED_glTexRenderbufferNV void __stdcall GLee_Lazy_glTexRenderbufferNV(GLenum target, GLuint renderbuffer) {if (GLeeInit()) glTexRenderbufferNV(target, renderbuffer);} GLEEPFNGLTEXRENDERBUFFERNVPROC GLeeFuncPtr_glTexRenderbufferNV=GLee_Lazy_glTexRenderbufferNV; #endif #endif /* GL_NV_transform_feedback2 */ #ifdef __GLEE_GL_NV_transform_feedback2 #ifndef GLEE_C_DEFINED_glBindTransformFeedbackNV #define GLEE_C_DEFINED_glBindTransformFeedbackNV void __stdcall GLee_Lazy_glBindTransformFeedbackNV(GLenum target, GLuint id) {if (GLeeInit()) glBindTransformFeedbackNV(target, id);} GLEEPFNGLBINDTRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glBindTransformFeedbackNV=GLee_Lazy_glBindTransformFeedbackNV; #endif #ifndef GLEE_C_DEFINED_glDeleteTransformFeedbacksNV #define GLEE_C_DEFINED_glDeleteTransformFeedbacksNV void __stdcall GLee_Lazy_glDeleteTransformFeedbacksNV(GLsizei n, const GLuint * ids) {if (GLeeInit()) glDeleteTransformFeedbacksNV(n, ids);} GLEEPFNGLDELETETRANSFORMFEEDBACKSNVPROC GLeeFuncPtr_glDeleteTransformFeedbacksNV=GLee_Lazy_glDeleteTransformFeedbacksNV; #endif #ifndef GLEE_C_DEFINED_glGenTransformFeedbacksNV #define GLEE_C_DEFINED_glGenTransformFeedbacksNV void __stdcall GLee_Lazy_glGenTransformFeedbacksNV(GLsizei n, GLuint * ids) {if (GLeeInit()) glGenTransformFeedbacksNV(n, ids);} GLEEPFNGLGENTRANSFORMFEEDBACKSNVPROC GLeeFuncPtr_glGenTransformFeedbacksNV=GLee_Lazy_glGenTransformFeedbacksNV; #endif #ifndef GLEE_C_DEFINED_glIsTransformFeedbackNV #define GLEE_C_DEFINED_glIsTransformFeedbackNV GLboolean __stdcall GLee_Lazy_glIsTransformFeedbackNV(GLuint id) {if (GLeeInit()) return glIsTransformFeedbackNV(id); return (GLboolean)0;} GLEEPFNGLISTRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glIsTransformFeedbackNV=GLee_Lazy_glIsTransformFeedbackNV; #endif #ifndef GLEE_C_DEFINED_glPauseTransformFeedbackNV #define GLEE_C_DEFINED_glPauseTransformFeedbackNV void __stdcall GLee_Lazy_glPauseTransformFeedbackNV(void) {if (GLeeInit()) glPauseTransformFeedbackNV();} GLEEPFNGLPAUSETRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glPauseTransformFeedbackNV=GLee_Lazy_glPauseTransformFeedbackNV; #endif #ifndef GLEE_C_DEFINED_glResumeTransformFeedbackNV #define GLEE_C_DEFINED_glResumeTransformFeedbackNV void __stdcall GLee_Lazy_glResumeTransformFeedbackNV(void) {if (GLeeInit()) glResumeTransformFeedbackNV();} GLEEPFNGLRESUMETRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glResumeTransformFeedbackNV=GLee_Lazy_glResumeTransformFeedbackNV; #endif #ifndef GLEE_C_DEFINED_glDrawTransformFeedbackNV #define GLEE_C_DEFINED_glDrawTransformFeedbackNV void __stdcall GLee_Lazy_glDrawTransformFeedbackNV(GLenum mode, GLuint id) {if (GLeeInit()) glDrawTransformFeedbackNV(mode, id);} GLEEPFNGLDRAWTRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glDrawTransformFeedbackNV=GLee_Lazy_glDrawTransformFeedbackNV; #endif #endif /* GL_ATI_meminfo */ #ifdef __GLEE_GL_ATI_meminfo #endif /* GL_AMD_performance_monitor */ #ifdef __GLEE_GL_AMD_performance_monitor #ifndef GLEE_C_DEFINED_glGetPerfMonitorGroupsAMD #define GLEE_C_DEFINED_glGetPerfMonitorGroupsAMD void __stdcall GLee_Lazy_glGetPerfMonitorGroupsAMD(GLint * numGroups, GLsizei groupsSize, GLuint * groups) {if (GLeeInit()) glGetPerfMonitorGroupsAMD(numGroups, groupsSize, groups);} GLEEPFNGLGETPERFMONITORGROUPSAMDPROC GLeeFuncPtr_glGetPerfMonitorGroupsAMD=GLee_Lazy_glGetPerfMonitorGroupsAMD; #endif #ifndef GLEE_C_DEFINED_glGetPerfMonitorCountersAMD #define GLEE_C_DEFINED_glGetPerfMonitorCountersAMD void __stdcall GLee_Lazy_glGetPerfMonitorCountersAMD(GLuint group, GLint * numCounters, GLint * maxActiveCounters, GLsizei counterSize, GLuint * counters) {if (GLeeInit()) glGetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters);} GLEEPFNGLGETPERFMONITORCOUNTERSAMDPROC GLeeFuncPtr_glGetPerfMonitorCountersAMD=GLee_Lazy_glGetPerfMonitorCountersAMD; #endif #ifndef GLEE_C_DEFINED_glGetPerfMonitorGroupStringAMD #define GLEE_C_DEFINED_glGetPerfMonitorGroupStringAMD void __stdcall GLee_Lazy_glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei * length, GLchar * groupString) {if (GLeeInit()) glGetPerfMonitorGroupStringAMD(group, bufSize, length, groupString);} GLEEPFNGLGETPERFMONITORGROUPSTRINGAMDPROC GLeeFuncPtr_glGetPerfMonitorGroupStringAMD=GLee_Lazy_glGetPerfMonitorGroupStringAMD; #endif #ifndef GLEE_C_DEFINED_glGetPerfMonitorCounterStringAMD #define GLEE_C_DEFINED_glGetPerfMonitorCounterStringAMD void __stdcall GLee_Lazy_glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei * length, GLchar * counterString) {if (GLeeInit()) glGetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString);} GLEEPFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC GLeeFuncPtr_glGetPerfMonitorCounterStringAMD=GLee_Lazy_glGetPerfMonitorCounterStringAMD; #endif #ifndef GLEE_C_DEFINED_glGetPerfMonitorCounterInfoAMD #define GLEE_C_DEFINED_glGetPerfMonitorCounterInfoAMD void __stdcall GLee_Lazy_glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid * data) {if (GLeeInit()) glGetPerfMonitorCounterInfoAMD(group, counter, pname, data);} GLEEPFNGLGETPERFMONITORCOUNTERINFOAMDPROC GLeeFuncPtr_glGetPerfMonitorCounterInfoAMD=GLee_Lazy_glGetPerfMonitorCounterInfoAMD; #endif #ifndef GLEE_C_DEFINED_glGenPerfMonitorsAMD #define GLEE_C_DEFINED_glGenPerfMonitorsAMD void __stdcall GLee_Lazy_glGenPerfMonitorsAMD(GLsizei n, GLuint * monitors) {if (GLeeInit()) glGenPerfMonitorsAMD(n, monitors);} GLEEPFNGLGENPERFMONITORSAMDPROC GLeeFuncPtr_glGenPerfMonitorsAMD=GLee_Lazy_glGenPerfMonitorsAMD; #endif #ifndef GLEE_C_DEFINED_glDeletePerfMonitorsAMD #define GLEE_C_DEFINED_glDeletePerfMonitorsAMD void __stdcall GLee_Lazy_glDeletePerfMonitorsAMD(GLsizei n, GLuint * monitors) {if (GLeeInit()) glDeletePerfMonitorsAMD(n, monitors);} GLEEPFNGLDELETEPERFMONITORSAMDPROC GLeeFuncPtr_glDeletePerfMonitorsAMD=GLee_Lazy_glDeletePerfMonitorsAMD; #endif #ifndef GLEE_C_DEFINED_glSelectPerfMonitorCountersAMD #define GLEE_C_DEFINED_glSelectPerfMonitorCountersAMD void __stdcall GLee_Lazy_glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint * counterList) {if (GLeeInit()) glSelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, counterList);} GLEEPFNGLSELECTPERFMONITORCOUNTERSAMDPROC GLeeFuncPtr_glSelectPerfMonitorCountersAMD=GLee_Lazy_glSelectPerfMonitorCountersAMD; #endif #ifndef GLEE_C_DEFINED_glBeginPerfMonitorAMD #define GLEE_C_DEFINED_glBeginPerfMonitorAMD void __stdcall GLee_Lazy_glBeginPerfMonitorAMD(GLuint monitor) {if (GLeeInit()) glBeginPerfMonitorAMD(monitor);} GLEEPFNGLBEGINPERFMONITORAMDPROC GLeeFuncPtr_glBeginPerfMonitorAMD=GLee_Lazy_glBeginPerfMonitorAMD; #endif #ifndef GLEE_C_DEFINED_glEndPerfMonitorAMD #define GLEE_C_DEFINED_glEndPerfMonitorAMD void __stdcall GLee_Lazy_glEndPerfMonitorAMD(GLuint monitor) {if (GLeeInit()) glEndPerfMonitorAMD(monitor);} GLEEPFNGLENDPERFMONITORAMDPROC GLeeFuncPtr_glEndPerfMonitorAMD=GLee_Lazy_glEndPerfMonitorAMD; #endif #ifndef GLEE_C_DEFINED_glGetPerfMonitorCounterDataAMD #define GLEE_C_DEFINED_glGetPerfMonitorCounterDataAMD void __stdcall GLee_Lazy_glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint * data, GLint * bytesWritten) {if (GLeeInit()) glGetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten);} GLEEPFNGLGETPERFMONITORCOUNTERDATAAMDPROC GLeeFuncPtr_glGetPerfMonitorCounterDataAMD=GLee_Lazy_glGetPerfMonitorCounterDataAMD; #endif #endif /* GL_AMD_texture_texture4 */ #ifdef __GLEE_GL_AMD_texture_texture4 #endif /* GL_AMD_vertex_shader_tesselator */ #ifdef __GLEE_GL_AMD_vertex_shader_tesselator #ifndef GLEE_C_DEFINED_glTessellationFactorAMD #define GLEE_C_DEFINED_glTessellationFactorAMD void __stdcall GLee_Lazy_glTessellationFactorAMD(GLfloat factor) {if (GLeeInit()) glTessellationFactorAMD(factor);} GLEEPFNGLTESSELLATIONFACTORAMDPROC GLeeFuncPtr_glTessellationFactorAMD=GLee_Lazy_glTessellationFactorAMD; #endif #ifndef GLEE_C_DEFINED_glTessellationModeAMD #define GLEE_C_DEFINED_glTessellationModeAMD void __stdcall GLee_Lazy_glTessellationModeAMD(GLenum mode) {if (GLeeInit()) glTessellationModeAMD(mode);} GLEEPFNGLTESSELLATIONMODEAMDPROC GLeeFuncPtr_glTessellationModeAMD=GLee_Lazy_glTessellationModeAMD; #endif #endif /* GL_EXT_provoking_vertex */ #ifdef __GLEE_GL_EXT_provoking_vertex #ifndef GLEE_C_DEFINED_glProvokingVertexEXT #define GLEE_C_DEFINED_glProvokingVertexEXT void __stdcall GLee_Lazy_glProvokingVertexEXT(GLenum mode) {if (GLeeInit()) glProvokingVertexEXT(mode);} GLEEPFNGLPROVOKINGVERTEXEXTPROC GLeeFuncPtr_glProvokingVertexEXT=GLee_Lazy_glProvokingVertexEXT; #endif #endif /* GL_EXT_texture_snorm */ #ifdef __GLEE_GL_EXT_texture_snorm #endif /* GL_AMD_draw_buffers_blend */ #ifdef __GLEE_GL_AMD_draw_buffers_blend #ifndef GLEE_C_DEFINED_glBlendFuncIndexedAMD #define GLEE_C_DEFINED_glBlendFuncIndexedAMD void __stdcall GLee_Lazy_glBlendFuncIndexedAMD(GLuint buf, GLenum src, GLenum dst) {if (GLeeInit()) glBlendFuncIndexedAMD(buf, src, dst);} GLEEPFNGLBLENDFUNCINDEXEDAMDPROC GLeeFuncPtr_glBlendFuncIndexedAMD=GLee_Lazy_glBlendFuncIndexedAMD; #endif #ifndef GLEE_C_DEFINED_glBlendFuncSeparateIndexedAMD #define GLEE_C_DEFINED_glBlendFuncSeparateIndexedAMD void __stdcall GLee_Lazy_glBlendFuncSeparateIndexedAMD(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {if (GLeeInit()) glBlendFuncSeparateIndexedAMD(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);} GLEEPFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC GLeeFuncPtr_glBlendFuncSeparateIndexedAMD=GLee_Lazy_glBlendFuncSeparateIndexedAMD; #endif #ifndef GLEE_C_DEFINED_glBlendEquationIndexedAMD #define GLEE_C_DEFINED_glBlendEquationIndexedAMD void __stdcall GLee_Lazy_glBlendEquationIndexedAMD(GLuint buf, GLenum mode) {if (GLeeInit()) glBlendEquationIndexedAMD(buf, mode);} GLEEPFNGLBLENDEQUATIONINDEXEDAMDPROC GLeeFuncPtr_glBlendEquationIndexedAMD=GLee_Lazy_glBlendEquationIndexedAMD; #endif #ifndef GLEE_C_DEFINED_glBlendEquationSeparateIndexedAMD #define GLEE_C_DEFINED_glBlendEquationSeparateIndexedAMD void __stdcall GLee_Lazy_glBlendEquationSeparateIndexedAMD(GLuint buf, GLenum modeRGB, GLenum modeAlpha) {if (GLeeInit()) glBlendEquationSeparateIndexedAMD(buf, modeRGB, modeAlpha);} GLEEPFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC GLeeFuncPtr_glBlendEquationSeparateIndexedAMD=GLee_Lazy_glBlendEquationSeparateIndexedAMD; #endif #endif /* GL_APPLE_texture_range */ #ifdef __GLEE_GL_APPLE_texture_range #ifndef GLEE_C_DEFINED_glTextureRangeAPPLE #define GLEE_C_DEFINED_glTextureRangeAPPLE void __stdcall GLee_Lazy_glTextureRangeAPPLE(GLenum target, GLsizei length, const GLvoid * pointer) {if (GLeeInit()) glTextureRangeAPPLE(target, length, pointer);} GLEEPFNGLTEXTURERANGEAPPLEPROC GLeeFuncPtr_glTextureRangeAPPLE=GLee_Lazy_glTextureRangeAPPLE; #endif #ifndef GLEE_C_DEFINED_glGetTexParameterPointervAPPLE #define GLEE_C_DEFINED_glGetTexParameterPointervAPPLE void __stdcall GLee_Lazy_glGetTexParameterPointervAPPLE(GLenum target, GLenum pname, GLvoid* * params) {if (GLeeInit()) glGetTexParameterPointervAPPLE(target, pname, params);} GLEEPFNGLGETTEXPARAMETERPOINTERVAPPLEPROC GLeeFuncPtr_glGetTexParameterPointervAPPLE=GLee_Lazy_glGetTexParameterPointervAPPLE; #endif #endif /* GL_APPLE_float_pixels */ #ifdef __GLEE_GL_APPLE_float_pixels #endif /* GL_APPLE_vertex_program_evaluators */ #ifdef __GLEE_GL_APPLE_vertex_program_evaluators #ifndef GLEE_C_DEFINED_glEnableVertexAttribAPPLE #define GLEE_C_DEFINED_glEnableVertexAttribAPPLE void __stdcall GLee_Lazy_glEnableVertexAttribAPPLE(GLuint index, GLenum pname) {if (GLeeInit()) glEnableVertexAttribAPPLE(index, pname);} GLEEPFNGLENABLEVERTEXATTRIBAPPLEPROC GLeeFuncPtr_glEnableVertexAttribAPPLE=GLee_Lazy_glEnableVertexAttribAPPLE; #endif #ifndef GLEE_C_DEFINED_glDisableVertexAttribAPPLE #define GLEE_C_DEFINED_glDisableVertexAttribAPPLE void __stdcall GLee_Lazy_glDisableVertexAttribAPPLE(GLuint index, GLenum pname) {if (GLeeInit()) glDisableVertexAttribAPPLE(index, pname);} GLEEPFNGLDISABLEVERTEXATTRIBAPPLEPROC GLeeFuncPtr_glDisableVertexAttribAPPLE=GLee_Lazy_glDisableVertexAttribAPPLE; #endif #ifndef GLEE_C_DEFINED_glIsVertexAttribEnabledAPPLE #define GLEE_C_DEFINED_glIsVertexAttribEnabledAPPLE GLboolean __stdcall GLee_Lazy_glIsVertexAttribEnabledAPPLE(GLuint index, GLenum pname) {if (GLeeInit()) return glIsVertexAttribEnabledAPPLE(index, pname); return (GLboolean)0;} GLEEPFNGLISVERTEXATTRIBENABLEDAPPLEPROC GLeeFuncPtr_glIsVertexAttribEnabledAPPLE=GLee_Lazy_glIsVertexAttribEnabledAPPLE; #endif #ifndef GLEE_C_DEFINED_glMapVertexAttrib1dAPPLE #define GLEE_C_DEFINED_glMapVertexAttrib1dAPPLE void __stdcall GLee_Lazy_glMapVertexAttrib1dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points) {if (GLeeInit()) glMapVertexAttrib1dAPPLE(index, size, u1, u2, stride, order, points);} GLEEPFNGLMAPVERTEXATTRIB1DAPPLEPROC GLeeFuncPtr_glMapVertexAttrib1dAPPLE=GLee_Lazy_glMapVertexAttrib1dAPPLE; #endif #ifndef GLEE_C_DEFINED_glMapVertexAttrib1fAPPLE #define GLEE_C_DEFINED_glMapVertexAttrib1fAPPLE void __stdcall GLee_Lazy_glMapVertexAttrib1fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points) {if (GLeeInit()) glMapVertexAttrib1fAPPLE(index, size, u1, u2, stride, order, points);} GLEEPFNGLMAPVERTEXATTRIB1FAPPLEPROC GLeeFuncPtr_glMapVertexAttrib1fAPPLE=GLee_Lazy_glMapVertexAttrib1fAPPLE; #endif #ifndef GLEE_C_DEFINED_glMapVertexAttrib2dAPPLE #define GLEE_C_DEFINED_glMapVertexAttrib2dAPPLE void __stdcall GLee_Lazy_glMapVertexAttrib2dAPPLE(GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points) {if (GLeeInit()) glMapVertexAttrib2dAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);} GLEEPFNGLMAPVERTEXATTRIB2DAPPLEPROC GLeeFuncPtr_glMapVertexAttrib2dAPPLE=GLee_Lazy_glMapVertexAttrib2dAPPLE; #endif #ifndef GLEE_C_DEFINED_glMapVertexAttrib2fAPPLE #define GLEE_C_DEFINED_glMapVertexAttrib2fAPPLE void __stdcall GLee_Lazy_glMapVertexAttrib2fAPPLE(GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points) {if (GLeeInit()) glMapVertexAttrib2fAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);} GLEEPFNGLMAPVERTEXATTRIB2FAPPLEPROC GLeeFuncPtr_glMapVertexAttrib2fAPPLE=GLee_Lazy_glMapVertexAttrib2fAPPLE; #endif #endif /* GL_APPLE_aux_depth_stencil */ #ifdef __GLEE_GL_APPLE_aux_depth_stencil #endif /* GL_APPLE_object_purgeable */ #ifdef __GLEE_GL_APPLE_object_purgeable #ifndef GLEE_C_DEFINED_glObjectPurgeableAPPLE #define GLEE_C_DEFINED_glObjectPurgeableAPPLE GLenum __stdcall GLee_Lazy_glObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) {if (GLeeInit()) return glObjectPurgeableAPPLE(objectType, name, option); return (GLenum)0;} GLEEPFNGLOBJECTPURGEABLEAPPLEPROC GLeeFuncPtr_glObjectPurgeableAPPLE=GLee_Lazy_glObjectPurgeableAPPLE; #endif #ifndef GLEE_C_DEFINED_glObjectUnpurgeableAPPLE #define GLEE_C_DEFINED_glObjectUnpurgeableAPPLE GLenum __stdcall GLee_Lazy_glObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) {if (GLeeInit()) return glObjectUnpurgeableAPPLE(objectType, name, option); return (GLenum)0;} GLEEPFNGLOBJECTUNPURGEABLEAPPLEPROC GLeeFuncPtr_glObjectUnpurgeableAPPLE=GLee_Lazy_glObjectUnpurgeableAPPLE; #endif #ifndef GLEE_C_DEFINED_glGetObjectParameterivAPPLE #define GLEE_C_DEFINED_glGetObjectParameterivAPPLE void __stdcall GLee_Lazy_glGetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, GLint * params) {if (GLeeInit()) glGetObjectParameterivAPPLE(objectType, name, pname, params);} GLEEPFNGLGETOBJECTPARAMETERIVAPPLEPROC GLeeFuncPtr_glGetObjectParameterivAPPLE=GLee_Lazy_glGetObjectParameterivAPPLE; #endif #endif /* GL_APPLE_row_bytes */ #ifdef __GLEE_GL_APPLE_row_bytes #endif /* GL_APPLE_rgb_422 */ #ifdef __GLEE_GL_APPLE_rgb_422 #endif /* GL_NV_video_capture */ #ifdef __GLEE_GL_NV_video_capture #ifndef GLEE_C_DEFINED_glBeginVideoCaptureNV #define GLEE_C_DEFINED_glBeginVideoCaptureNV void __stdcall GLee_Lazy_glBeginVideoCaptureNV(GLuint video_capture_slot) {if (GLeeInit()) glBeginVideoCaptureNV(video_capture_slot);} GLEEPFNGLBEGINVIDEOCAPTURENVPROC GLeeFuncPtr_glBeginVideoCaptureNV=GLee_Lazy_glBeginVideoCaptureNV; #endif #ifndef GLEE_C_DEFINED_glBindVideoCaptureStreamBufferNV #define GLEE_C_DEFINED_glBindVideoCaptureStreamBufferNV void __stdcall GLee_Lazy_glBindVideoCaptureStreamBufferNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset) {if (GLeeInit()) glBindVideoCaptureStreamBufferNV(video_capture_slot, stream, frame_region, offset);} GLEEPFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC GLeeFuncPtr_glBindVideoCaptureStreamBufferNV=GLee_Lazy_glBindVideoCaptureStreamBufferNV; #endif #ifndef GLEE_C_DEFINED_glBindVideoCaptureStreamTextureNV #define GLEE_C_DEFINED_glBindVideoCaptureStreamTextureNV void __stdcall GLee_Lazy_glBindVideoCaptureStreamTextureNV(GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture) {if (GLeeInit()) glBindVideoCaptureStreamTextureNV(video_capture_slot, stream, frame_region, target, texture);} GLEEPFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC GLeeFuncPtr_glBindVideoCaptureStreamTextureNV=GLee_Lazy_glBindVideoCaptureStreamTextureNV; #endif #ifndef GLEE_C_DEFINED_glEndVideoCaptureNV #define GLEE_C_DEFINED_glEndVideoCaptureNV void __stdcall GLee_Lazy_glEndVideoCaptureNV(GLuint video_capture_slot) {if (GLeeInit()) glEndVideoCaptureNV(video_capture_slot);} GLEEPFNGLENDVIDEOCAPTURENVPROC GLeeFuncPtr_glEndVideoCaptureNV=GLee_Lazy_glEndVideoCaptureNV; #endif #ifndef GLEE_C_DEFINED_glGetVideoCaptureivNV #define GLEE_C_DEFINED_glGetVideoCaptureivNV void __stdcall GLee_Lazy_glGetVideoCaptureivNV(GLuint video_capture_slot, GLenum pname, GLint * params) {if (GLeeInit()) glGetVideoCaptureivNV(video_capture_slot, pname, params);} GLEEPFNGLGETVIDEOCAPTUREIVNVPROC GLeeFuncPtr_glGetVideoCaptureivNV=GLee_Lazy_glGetVideoCaptureivNV; #endif #ifndef GLEE_C_DEFINED_glGetVideoCaptureStreamivNV #define GLEE_C_DEFINED_glGetVideoCaptureStreamivNV void __stdcall GLee_Lazy_glGetVideoCaptureStreamivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLint * params) {if (GLeeInit()) glGetVideoCaptureStreamivNV(video_capture_slot, stream, pname, params);} GLEEPFNGLGETVIDEOCAPTURESTREAMIVNVPROC GLeeFuncPtr_glGetVideoCaptureStreamivNV=GLee_Lazy_glGetVideoCaptureStreamivNV; #endif #ifndef GLEE_C_DEFINED_glGetVideoCaptureStreamfvNV #define GLEE_C_DEFINED_glGetVideoCaptureStreamfvNV void __stdcall GLee_Lazy_glGetVideoCaptureStreamfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat * params) {if (GLeeInit()) glGetVideoCaptureStreamfvNV(video_capture_slot, stream, pname, params);} GLEEPFNGLGETVIDEOCAPTURESTREAMFVNVPROC GLeeFuncPtr_glGetVideoCaptureStreamfvNV=GLee_Lazy_glGetVideoCaptureStreamfvNV; #endif #ifndef GLEE_C_DEFINED_glGetVideoCaptureStreamdvNV #define GLEE_C_DEFINED_glGetVideoCaptureStreamdvNV void __stdcall GLee_Lazy_glGetVideoCaptureStreamdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble * params) {if (GLeeInit()) glGetVideoCaptureStreamdvNV(video_capture_slot, stream, pname, params);} GLEEPFNGLGETVIDEOCAPTURESTREAMDVNVPROC GLeeFuncPtr_glGetVideoCaptureStreamdvNV=GLee_Lazy_glGetVideoCaptureStreamdvNV; #endif #ifndef GLEE_C_DEFINED_glVideoCaptureNV #define GLEE_C_DEFINED_glVideoCaptureNV GLenum __stdcall GLee_Lazy_glVideoCaptureNV(GLuint video_capture_slot, GLuint * sequence_num, GLuint64EXT * capture_time) {if (GLeeInit()) return glVideoCaptureNV(video_capture_slot, sequence_num, capture_time); return (GLenum)0;} GLEEPFNGLVIDEOCAPTURENVPROC GLeeFuncPtr_glVideoCaptureNV=GLee_Lazy_glVideoCaptureNV; #endif #ifndef GLEE_C_DEFINED_glVideoCaptureStreamParameterivNV #define GLEE_C_DEFINED_glVideoCaptureStreamParameterivNV void __stdcall GLee_Lazy_glVideoCaptureStreamParameterivNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint * params) {if (GLeeInit()) glVideoCaptureStreamParameterivNV(video_capture_slot, stream, pname, params);} GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC GLeeFuncPtr_glVideoCaptureStreamParameterivNV=GLee_Lazy_glVideoCaptureStreamParameterivNV; #endif #ifndef GLEE_C_DEFINED_glVideoCaptureStreamParameterfvNV #define GLEE_C_DEFINED_glVideoCaptureStreamParameterfvNV void __stdcall GLee_Lazy_glVideoCaptureStreamParameterfvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat * params) {if (GLeeInit()) glVideoCaptureStreamParameterfvNV(video_capture_slot, stream, pname, params);} GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC GLeeFuncPtr_glVideoCaptureStreamParameterfvNV=GLee_Lazy_glVideoCaptureStreamParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glVideoCaptureStreamParameterdvNV #define GLEE_C_DEFINED_glVideoCaptureStreamParameterdvNV void __stdcall GLee_Lazy_glVideoCaptureStreamParameterdvNV(GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble * params) {if (GLeeInit()) glVideoCaptureStreamParameterdvNV(video_capture_slot, stream, pname, params);} GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC GLeeFuncPtr_glVideoCaptureStreamParameterdvNV=GLee_Lazy_glVideoCaptureStreamParameterdvNV; #endif #endif /* GL_NV_copy_image */ #ifdef __GLEE_GL_NV_copy_image #ifndef GLEE_C_DEFINED_glCopyImageSubDataNV #define GLEE_C_DEFINED_glCopyImageSubDataNV void __stdcall GLee_Lazy_glCopyImageSubDataNV(GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth) {if (GLeeInit()) glCopyImageSubDataNV(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth);} GLEEPFNGLCOPYIMAGESUBDATANVPROC GLeeFuncPtr_glCopyImageSubDataNV=GLee_Lazy_glCopyImageSubDataNV; #endif #endif /* GL_EXT_separate_shader_objects */ #ifdef __GLEE_GL_EXT_separate_shader_objects #ifndef GLEE_C_DEFINED_glUseShaderProgramEXT #define GLEE_C_DEFINED_glUseShaderProgramEXT void __stdcall GLee_Lazy_glUseShaderProgramEXT(GLenum type, GLuint program) {if (GLeeInit()) glUseShaderProgramEXT(type, program);} GLEEPFNGLUSESHADERPROGRAMEXTPROC GLeeFuncPtr_glUseShaderProgramEXT=GLee_Lazy_glUseShaderProgramEXT; #endif #ifndef GLEE_C_DEFINED_glActiveProgramEXT #define GLEE_C_DEFINED_glActiveProgramEXT void __stdcall GLee_Lazy_glActiveProgramEXT(GLuint program) {if (GLeeInit()) glActiveProgramEXT(program);} GLEEPFNGLACTIVEPROGRAMEXTPROC GLeeFuncPtr_glActiveProgramEXT=GLee_Lazy_glActiveProgramEXT; #endif #ifndef GLEE_C_DEFINED_glCreateShaderProgramEXT #define GLEE_C_DEFINED_glCreateShaderProgramEXT GLuint __stdcall GLee_Lazy_glCreateShaderProgramEXT(GLenum type, const GLchar * string) {if (GLeeInit()) return glCreateShaderProgramEXT(type, string); return (GLuint)0;} GLEEPFNGLCREATESHADERPROGRAMEXTPROC GLeeFuncPtr_glCreateShaderProgramEXT=GLee_Lazy_glCreateShaderProgramEXT; #endif #endif /* GL_NV_parameter_buffer_object2 */ #ifdef __GLEE_GL_NV_parameter_buffer_object2 #endif /* GL_NV_shader_buffer_load */ #ifdef __GLEE_GL_NV_shader_buffer_load #ifndef GLEE_C_DEFINED_glMakeBufferResidentNV #define GLEE_C_DEFINED_glMakeBufferResidentNV void __stdcall GLee_Lazy_glMakeBufferResidentNV(GLenum target, GLenum access) {if (GLeeInit()) glMakeBufferResidentNV(target, access);} GLEEPFNGLMAKEBUFFERRESIDENTNVPROC GLeeFuncPtr_glMakeBufferResidentNV=GLee_Lazy_glMakeBufferResidentNV; #endif #ifndef GLEE_C_DEFINED_glMakeBufferNonResidentNV #define GLEE_C_DEFINED_glMakeBufferNonResidentNV void __stdcall GLee_Lazy_glMakeBufferNonResidentNV(GLenum target) {if (GLeeInit()) glMakeBufferNonResidentNV(target);} GLEEPFNGLMAKEBUFFERNONRESIDENTNVPROC GLeeFuncPtr_glMakeBufferNonResidentNV=GLee_Lazy_glMakeBufferNonResidentNV; #endif #ifndef GLEE_C_DEFINED_glIsBufferResidentNV #define GLEE_C_DEFINED_glIsBufferResidentNV GLboolean __stdcall GLee_Lazy_glIsBufferResidentNV(GLenum target) {if (GLeeInit()) return glIsBufferResidentNV(target); return (GLboolean)0;} GLEEPFNGLISBUFFERRESIDENTNVPROC GLeeFuncPtr_glIsBufferResidentNV=GLee_Lazy_glIsBufferResidentNV; #endif #ifndef GLEE_C_DEFINED_glMakeNamedBufferResidentNV #define GLEE_C_DEFINED_glMakeNamedBufferResidentNV void __stdcall GLee_Lazy_glMakeNamedBufferResidentNV(GLuint buffer, GLenum access) {if (GLeeInit()) glMakeNamedBufferResidentNV(buffer, access);} GLEEPFNGLMAKENAMEDBUFFERRESIDENTNVPROC GLeeFuncPtr_glMakeNamedBufferResidentNV=GLee_Lazy_glMakeNamedBufferResidentNV; #endif #ifndef GLEE_C_DEFINED_glMakeNamedBufferNonResidentNV #define GLEE_C_DEFINED_glMakeNamedBufferNonResidentNV void __stdcall GLee_Lazy_glMakeNamedBufferNonResidentNV(GLuint buffer) {if (GLeeInit()) glMakeNamedBufferNonResidentNV(buffer);} GLEEPFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC GLeeFuncPtr_glMakeNamedBufferNonResidentNV=GLee_Lazy_glMakeNamedBufferNonResidentNV; #endif #ifndef GLEE_C_DEFINED_glIsNamedBufferResidentNV #define GLEE_C_DEFINED_glIsNamedBufferResidentNV GLboolean __stdcall GLee_Lazy_glIsNamedBufferResidentNV(GLuint buffer) {if (GLeeInit()) return glIsNamedBufferResidentNV(buffer); return (GLboolean)0;} GLEEPFNGLISNAMEDBUFFERRESIDENTNVPROC GLeeFuncPtr_glIsNamedBufferResidentNV=GLee_Lazy_glIsNamedBufferResidentNV; #endif #ifndef GLEE_C_DEFINED_glGetBufferParameterui64vNV #define GLEE_C_DEFINED_glGetBufferParameterui64vNV void __stdcall GLee_Lazy_glGetBufferParameterui64vNV(GLenum target, GLenum pname, GLuint64EXT * params) {if (GLeeInit()) glGetBufferParameterui64vNV(target, pname, params);} GLEEPFNGLGETBUFFERPARAMETERUI64VNVPROC GLeeFuncPtr_glGetBufferParameterui64vNV=GLee_Lazy_glGetBufferParameterui64vNV; #endif #ifndef GLEE_C_DEFINED_glGetNamedBufferParameterui64vNV #define GLEE_C_DEFINED_glGetNamedBufferParameterui64vNV void __stdcall GLee_Lazy_glGetNamedBufferParameterui64vNV(GLuint buffer, GLenum pname, GLuint64EXT * params) {if (GLeeInit()) glGetNamedBufferParameterui64vNV(buffer, pname, params);} GLEEPFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC GLeeFuncPtr_glGetNamedBufferParameterui64vNV=GLee_Lazy_glGetNamedBufferParameterui64vNV; #endif #ifndef GLEE_C_DEFINED_glGetIntegerui64vNV #define GLEE_C_DEFINED_glGetIntegerui64vNV void __stdcall GLee_Lazy_glGetIntegerui64vNV(GLenum value, GLuint64EXT * result) {if (GLeeInit()) glGetIntegerui64vNV(value, result);} GLEEPFNGLGETINTEGERUI64VNVPROC GLeeFuncPtr_glGetIntegerui64vNV=GLee_Lazy_glGetIntegerui64vNV; #endif #ifndef GLEE_C_DEFINED_glUniformui64NV #define GLEE_C_DEFINED_glUniformui64NV void __stdcall GLee_Lazy_glUniformui64NV(GLint location, GLuint64EXT value) {if (GLeeInit()) glUniformui64NV(location, value);} GLEEPFNGLUNIFORMUI64NVPROC GLeeFuncPtr_glUniformui64NV=GLee_Lazy_glUniformui64NV; #endif #ifndef GLEE_C_DEFINED_glUniformui64vNV #define GLEE_C_DEFINED_glUniformui64vNV void __stdcall GLee_Lazy_glUniformui64vNV(GLint location, GLsizei count, const GLuint64EXT * value) {if (GLeeInit()) glUniformui64vNV(location, count, value);} GLEEPFNGLUNIFORMUI64VNVPROC GLeeFuncPtr_glUniformui64vNV=GLee_Lazy_glUniformui64vNV; #endif #ifndef GLEE_C_DEFINED_glGetUniformui64vNV #define GLEE_C_DEFINED_glGetUniformui64vNV void __stdcall GLee_Lazy_glGetUniformui64vNV(GLuint program, GLint location, GLuint64EXT * params) {if (GLeeInit()) glGetUniformui64vNV(program, location, params);} GLEEPFNGLGETUNIFORMUI64VNVPROC GLeeFuncPtr_glGetUniformui64vNV=GLee_Lazy_glGetUniformui64vNV; #endif #ifndef GLEE_C_DEFINED_glProgramUniformui64NV #define GLEE_C_DEFINED_glProgramUniformui64NV void __stdcall GLee_Lazy_glProgramUniformui64NV(GLuint program, GLint location, GLuint64EXT value) {if (GLeeInit()) glProgramUniformui64NV(program, location, value);} GLEEPFNGLPROGRAMUNIFORMUI64NVPROC GLeeFuncPtr_glProgramUniformui64NV=GLee_Lazy_glProgramUniformui64NV; #endif #ifndef GLEE_C_DEFINED_glProgramUniformui64vNV #define GLEE_C_DEFINED_glProgramUniformui64vNV void __stdcall GLee_Lazy_glProgramUniformui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value) {if (GLeeInit()) glProgramUniformui64vNV(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORMUI64VNVPROC GLeeFuncPtr_glProgramUniformui64vNV=GLee_Lazy_glProgramUniformui64vNV; #endif #endif /* GL_NV_vertex_buffer_unified_memory */ #ifdef __GLEE_GL_NV_vertex_buffer_unified_memory #ifndef GLEE_C_DEFINED_glBufferAddressRangeNV #define GLEE_C_DEFINED_glBufferAddressRangeNV void __stdcall GLee_Lazy_glBufferAddressRangeNV(GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length) {if (GLeeInit()) glBufferAddressRangeNV(pname, index, address, length);} GLEEPFNGLBUFFERADDRESSRANGENVPROC GLeeFuncPtr_glBufferAddressRangeNV=GLee_Lazy_glBufferAddressRangeNV; #endif #ifndef GLEE_C_DEFINED_glVertexFormatNV #define GLEE_C_DEFINED_glVertexFormatNV void __stdcall GLee_Lazy_glVertexFormatNV(GLint size, GLenum type, GLsizei stride) {if (GLeeInit()) glVertexFormatNV(size, type, stride);} GLEEPFNGLVERTEXFORMATNVPROC GLeeFuncPtr_glVertexFormatNV=GLee_Lazy_glVertexFormatNV; #endif #ifndef GLEE_C_DEFINED_glNormalFormatNV #define GLEE_C_DEFINED_glNormalFormatNV void __stdcall GLee_Lazy_glNormalFormatNV(GLenum type, GLsizei stride) {if (GLeeInit()) glNormalFormatNV(type, stride);} GLEEPFNGLNORMALFORMATNVPROC GLeeFuncPtr_glNormalFormatNV=GLee_Lazy_glNormalFormatNV; #endif #ifndef GLEE_C_DEFINED_glColorFormatNV #define GLEE_C_DEFINED_glColorFormatNV void __stdcall GLee_Lazy_glColorFormatNV(GLint size, GLenum type, GLsizei stride) {if (GLeeInit()) glColorFormatNV(size, type, stride);} GLEEPFNGLCOLORFORMATNVPROC GLeeFuncPtr_glColorFormatNV=GLee_Lazy_glColorFormatNV; #endif #ifndef GLEE_C_DEFINED_glIndexFormatNV #define GLEE_C_DEFINED_glIndexFormatNV void __stdcall GLee_Lazy_glIndexFormatNV(GLenum type, GLsizei stride) {if (GLeeInit()) glIndexFormatNV(type, stride);} GLEEPFNGLINDEXFORMATNVPROC GLeeFuncPtr_glIndexFormatNV=GLee_Lazy_glIndexFormatNV; #endif #ifndef GLEE_C_DEFINED_glTexCoordFormatNV #define GLEE_C_DEFINED_glTexCoordFormatNV void __stdcall GLee_Lazy_glTexCoordFormatNV(GLint size, GLenum type, GLsizei stride) {if (GLeeInit()) glTexCoordFormatNV(size, type, stride);} GLEEPFNGLTEXCOORDFORMATNVPROC GLeeFuncPtr_glTexCoordFormatNV=GLee_Lazy_glTexCoordFormatNV; #endif #ifndef GLEE_C_DEFINED_glEdgeFlagFormatNV #define GLEE_C_DEFINED_glEdgeFlagFormatNV void __stdcall GLee_Lazy_glEdgeFlagFormatNV(GLsizei stride) {if (GLeeInit()) glEdgeFlagFormatNV(stride);} GLEEPFNGLEDGEFLAGFORMATNVPROC GLeeFuncPtr_glEdgeFlagFormatNV=GLee_Lazy_glEdgeFlagFormatNV; #endif #ifndef GLEE_C_DEFINED_glSecondaryColorFormatNV #define GLEE_C_DEFINED_glSecondaryColorFormatNV void __stdcall GLee_Lazy_glSecondaryColorFormatNV(GLint size, GLenum type, GLsizei stride) {if (GLeeInit()) glSecondaryColorFormatNV(size, type, stride);} GLEEPFNGLSECONDARYCOLORFORMATNVPROC GLeeFuncPtr_glSecondaryColorFormatNV=GLee_Lazy_glSecondaryColorFormatNV; #endif #ifndef GLEE_C_DEFINED_glFogCoordFormatNV #define GLEE_C_DEFINED_glFogCoordFormatNV void __stdcall GLee_Lazy_glFogCoordFormatNV(GLenum type, GLsizei stride) {if (GLeeInit()) glFogCoordFormatNV(type, stride);} GLEEPFNGLFOGCOORDFORMATNVPROC GLeeFuncPtr_glFogCoordFormatNV=GLee_Lazy_glFogCoordFormatNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribFormatNV #define GLEE_C_DEFINED_glVertexAttribFormatNV void __stdcall GLee_Lazy_glVertexAttribFormatNV(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride) {if (GLeeInit()) glVertexAttribFormatNV(index, size, type, normalized, stride);} GLEEPFNGLVERTEXATTRIBFORMATNVPROC GLeeFuncPtr_glVertexAttribFormatNV=GLee_Lazy_glVertexAttribFormatNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribIFormatNV #define GLEE_C_DEFINED_glVertexAttribIFormatNV void __stdcall GLee_Lazy_glVertexAttribIFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride) {if (GLeeInit()) glVertexAttribIFormatNV(index, size, type, stride);} GLEEPFNGLVERTEXATTRIBIFORMATNVPROC GLeeFuncPtr_glVertexAttribIFormatNV=GLee_Lazy_glVertexAttribIFormatNV; #endif #ifndef GLEE_C_DEFINED_glGetIntegerui64i_vNV #define GLEE_C_DEFINED_glGetIntegerui64i_vNV void __stdcall GLee_Lazy_glGetIntegerui64i_vNV(GLenum value, GLuint index, GLuint64EXT * result) {if (GLeeInit()) glGetIntegerui64i_vNV(value, index, result);} GLEEPFNGLGETINTEGERUI64I_VNVPROC GLeeFuncPtr_glGetIntegerui64i_vNV=GLee_Lazy_glGetIntegerui64i_vNV; #endif #endif /* GL_NV_texture_barrier */ #ifdef __GLEE_GL_NV_texture_barrier #ifndef GLEE_C_DEFINED_glTextureBarrierNV #define GLEE_C_DEFINED_glTextureBarrierNV void __stdcall GLee_Lazy_glTextureBarrierNV(void) {if (GLeeInit()) glTextureBarrierNV();} GLEEPFNGLTEXTUREBARRIERNVPROC GLeeFuncPtr_glTextureBarrierNV=GLee_Lazy_glTextureBarrierNV; #endif #endif /* GL_AMD_shader_stencil_export */ #ifdef __GLEE_GL_AMD_shader_stencil_export #endif /* GL_AMD_seamless_cubemap_per_texture */ #ifdef __GLEE_GL_AMD_seamless_cubemap_per_texture #endif /* GL_AMD_conservative_depth */ #ifdef __GLEE_GL_AMD_conservative_depth #endif /* GL_EXT_shader_image_load_store */ #ifdef __GLEE_GL_EXT_shader_image_load_store #ifndef GLEE_C_DEFINED_glBindImageTextureEXT #define GLEE_C_DEFINED_glBindImageTextureEXT void __stdcall GLee_Lazy_glBindImageTextureEXT(GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format) {if (GLeeInit()) glBindImageTextureEXT(index, texture, level, layered, layer, access, format);} GLEEPFNGLBINDIMAGETEXTUREEXTPROC GLeeFuncPtr_glBindImageTextureEXT=GLee_Lazy_glBindImageTextureEXT; #endif #ifndef GLEE_C_DEFINED_glMemoryBarrierEXT #define GLEE_C_DEFINED_glMemoryBarrierEXT void __stdcall GLee_Lazy_glMemoryBarrierEXT(GLbitfield barriers) {if (GLeeInit()) glMemoryBarrierEXT(barriers);} GLEEPFNGLMEMORYBARRIEREXTPROC GLeeFuncPtr_glMemoryBarrierEXT=GLee_Lazy_glMemoryBarrierEXT; #endif #endif /* GL_EXT_vertex_attrib_64bit */ #ifdef __GLEE_GL_EXT_vertex_attrib_64bit #ifndef GLEE_C_DEFINED_glVertexAttribL1dEXT #define GLEE_C_DEFINED_glVertexAttribL1dEXT void __stdcall GLee_Lazy_glVertexAttribL1dEXT(GLuint index, GLdouble x) {if (GLeeInit()) glVertexAttribL1dEXT(index, x);} GLEEPFNGLVERTEXATTRIBL1DEXTPROC GLeeFuncPtr_glVertexAttribL1dEXT=GLee_Lazy_glVertexAttribL1dEXT; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL2dEXT #define GLEE_C_DEFINED_glVertexAttribL2dEXT void __stdcall GLee_Lazy_glVertexAttribL2dEXT(GLuint index, GLdouble x, GLdouble y) {if (GLeeInit()) glVertexAttribL2dEXT(index, x, y);} GLEEPFNGLVERTEXATTRIBL2DEXTPROC GLeeFuncPtr_glVertexAttribL2dEXT=GLee_Lazy_glVertexAttribL2dEXT; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL3dEXT #define GLEE_C_DEFINED_glVertexAttribL3dEXT void __stdcall GLee_Lazy_glVertexAttribL3dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z) {if (GLeeInit()) glVertexAttribL3dEXT(index, x, y, z);} GLEEPFNGLVERTEXATTRIBL3DEXTPROC GLeeFuncPtr_glVertexAttribL3dEXT=GLee_Lazy_glVertexAttribL3dEXT; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL4dEXT #define GLEE_C_DEFINED_glVertexAttribL4dEXT void __stdcall GLee_Lazy_glVertexAttribL4dEXT(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) {if (GLeeInit()) glVertexAttribL4dEXT(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIBL4DEXTPROC GLeeFuncPtr_glVertexAttribL4dEXT=GLee_Lazy_glVertexAttribL4dEXT; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL1dvEXT #define GLEE_C_DEFINED_glVertexAttribL1dvEXT void __stdcall GLee_Lazy_glVertexAttribL1dvEXT(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttribL1dvEXT(index, v);} GLEEPFNGLVERTEXATTRIBL1DVEXTPROC GLeeFuncPtr_glVertexAttribL1dvEXT=GLee_Lazy_glVertexAttribL1dvEXT; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL2dvEXT #define GLEE_C_DEFINED_glVertexAttribL2dvEXT void __stdcall GLee_Lazy_glVertexAttribL2dvEXT(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttribL2dvEXT(index, v);} GLEEPFNGLVERTEXATTRIBL2DVEXTPROC GLeeFuncPtr_glVertexAttribL2dvEXT=GLee_Lazy_glVertexAttribL2dvEXT; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL3dvEXT #define GLEE_C_DEFINED_glVertexAttribL3dvEXT void __stdcall GLee_Lazy_glVertexAttribL3dvEXT(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttribL3dvEXT(index, v);} GLEEPFNGLVERTEXATTRIBL3DVEXTPROC GLeeFuncPtr_glVertexAttribL3dvEXT=GLee_Lazy_glVertexAttribL3dvEXT; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL4dvEXT #define GLEE_C_DEFINED_glVertexAttribL4dvEXT void __stdcall GLee_Lazy_glVertexAttribL4dvEXT(GLuint index, const GLdouble * v) {if (GLeeInit()) glVertexAttribL4dvEXT(index, v);} GLEEPFNGLVERTEXATTRIBL4DVEXTPROC GLeeFuncPtr_glVertexAttribL4dvEXT=GLee_Lazy_glVertexAttribL4dvEXT; #endif #ifndef GLEE_C_DEFINED_glVertexAttribLPointerEXT #define GLEE_C_DEFINED_glVertexAttribLPointerEXT void __stdcall GLee_Lazy_glVertexAttribLPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer) {if (GLeeInit()) glVertexAttribLPointerEXT(index, size, type, stride, pointer);} GLEEPFNGLVERTEXATTRIBLPOINTEREXTPROC GLeeFuncPtr_glVertexAttribLPointerEXT=GLee_Lazy_glVertexAttribLPointerEXT; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribLdvEXT #define GLEE_C_DEFINED_glGetVertexAttribLdvEXT void __stdcall GLee_Lazy_glGetVertexAttribLdvEXT(GLuint index, GLenum pname, GLdouble * params) {if (GLeeInit()) glGetVertexAttribLdvEXT(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBLDVEXTPROC GLeeFuncPtr_glGetVertexAttribLdvEXT=GLee_Lazy_glGetVertexAttribLdvEXT; #endif #ifndef GLEE_C_DEFINED_glVertexArrayVertexAttribLOffsetEXT #define GLEE_C_DEFINED_glVertexArrayVertexAttribLOffsetEXT void __stdcall GLee_Lazy_glVertexArrayVertexAttribLOffsetEXT(GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset) {if (GLeeInit()) glVertexArrayVertexAttribLOffsetEXT(vaobj, buffer, index, size, type, stride, offset);} GLEEPFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC GLeeFuncPtr_glVertexArrayVertexAttribLOffsetEXT=GLee_Lazy_glVertexArrayVertexAttribLOffsetEXT; #endif #endif /* GL_NV_gpu_program5 */ #ifdef __GLEE_GL_NV_gpu_program5 #ifndef GLEE_C_DEFINED_glProgramSubroutineParametersuivNV #define GLEE_C_DEFINED_glProgramSubroutineParametersuivNV void __stdcall GLee_Lazy_glProgramSubroutineParametersuivNV(GLenum target, GLsizei count, const GLuint * params) {if (GLeeInit()) glProgramSubroutineParametersuivNV(target, count, params);} GLEEPFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC GLeeFuncPtr_glProgramSubroutineParametersuivNV=GLee_Lazy_glProgramSubroutineParametersuivNV; #endif #ifndef GLEE_C_DEFINED_glGetProgramSubroutineParameteruivNV #define GLEE_C_DEFINED_glGetProgramSubroutineParameteruivNV void __stdcall GLee_Lazy_glGetProgramSubroutineParameteruivNV(GLenum target, GLuint index, GLuint * param) {if (GLeeInit()) glGetProgramSubroutineParameteruivNV(target, index, param);} GLEEPFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC GLeeFuncPtr_glGetProgramSubroutineParameteruivNV=GLee_Lazy_glGetProgramSubroutineParameteruivNV; #endif #endif /* GL_NV_gpu_shader5 */ #ifdef __GLEE_GL_NV_gpu_shader5 #ifndef GLEE_C_DEFINED_glUniform1i64NV #define GLEE_C_DEFINED_glUniform1i64NV void __stdcall GLee_Lazy_glUniform1i64NV(GLint location, GLint64EXT x) {if (GLeeInit()) glUniform1i64NV(location, x);} GLEEPFNGLUNIFORM1I64NVPROC GLeeFuncPtr_glUniform1i64NV=GLee_Lazy_glUniform1i64NV; #endif #ifndef GLEE_C_DEFINED_glUniform2i64NV #define GLEE_C_DEFINED_glUniform2i64NV void __stdcall GLee_Lazy_glUniform2i64NV(GLint location, GLint64EXT x, GLint64EXT y) {if (GLeeInit()) glUniform2i64NV(location, x, y);} GLEEPFNGLUNIFORM2I64NVPROC GLeeFuncPtr_glUniform2i64NV=GLee_Lazy_glUniform2i64NV; #endif #ifndef GLEE_C_DEFINED_glUniform3i64NV #define GLEE_C_DEFINED_glUniform3i64NV void __stdcall GLee_Lazy_glUniform3i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) {if (GLeeInit()) glUniform3i64NV(location, x, y, z);} GLEEPFNGLUNIFORM3I64NVPROC GLeeFuncPtr_glUniform3i64NV=GLee_Lazy_glUniform3i64NV; #endif #ifndef GLEE_C_DEFINED_glUniform4i64NV #define GLEE_C_DEFINED_glUniform4i64NV void __stdcall GLee_Lazy_glUniform4i64NV(GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) {if (GLeeInit()) glUniform4i64NV(location, x, y, z, w);} GLEEPFNGLUNIFORM4I64NVPROC GLeeFuncPtr_glUniform4i64NV=GLee_Lazy_glUniform4i64NV; #endif #ifndef GLEE_C_DEFINED_glUniform1i64vNV #define GLEE_C_DEFINED_glUniform1i64vNV void __stdcall GLee_Lazy_glUniform1i64vNV(GLint location, GLsizei count, const GLint64EXT * value) {if (GLeeInit()) glUniform1i64vNV(location, count, value);} GLEEPFNGLUNIFORM1I64VNVPROC GLeeFuncPtr_glUniform1i64vNV=GLee_Lazy_glUniform1i64vNV; #endif #ifndef GLEE_C_DEFINED_glUniform2i64vNV #define GLEE_C_DEFINED_glUniform2i64vNV void __stdcall GLee_Lazy_glUniform2i64vNV(GLint location, GLsizei count, const GLint64EXT * value) {if (GLeeInit()) glUniform2i64vNV(location, count, value);} GLEEPFNGLUNIFORM2I64VNVPROC GLeeFuncPtr_glUniform2i64vNV=GLee_Lazy_glUniform2i64vNV; #endif #ifndef GLEE_C_DEFINED_glUniform3i64vNV #define GLEE_C_DEFINED_glUniform3i64vNV void __stdcall GLee_Lazy_glUniform3i64vNV(GLint location, GLsizei count, const GLint64EXT * value) {if (GLeeInit()) glUniform3i64vNV(location, count, value);} GLEEPFNGLUNIFORM3I64VNVPROC GLeeFuncPtr_glUniform3i64vNV=GLee_Lazy_glUniform3i64vNV; #endif #ifndef GLEE_C_DEFINED_glUniform4i64vNV #define GLEE_C_DEFINED_glUniform4i64vNV void __stdcall GLee_Lazy_glUniform4i64vNV(GLint location, GLsizei count, const GLint64EXT * value) {if (GLeeInit()) glUniform4i64vNV(location, count, value);} GLEEPFNGLUNIFORM4I64VNVPROC GLeeFuncPtr_glUniform4i64vNV=GLee_Lazy_glUniform4i64vNV; #endif #ifndef GLEE_C_DEFINED_glUniform1ui64NV #define GLEE_C_DEFINED_glUniform1ui64NV void __stdcall GLee_Lazy_glUniform1ui64NV(GLint location, GLuint64EXT x) {if (GLeeInit()) glUniform1ui64NV(location, x);} GLEEPFNGLUNIFORM1UI64NVPROC GLeeFuncPtr_glUniform1ui64NV=GLee_Lazy_glUniform1ui64NV; #endif #ifndef GLEE_C_DEFINED_glUniform2ui64NV #define GLEE_C_DEFINED_glUniform2ui64NV void __stdcall GLee_Lazy_glUniform2ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y) {if (GLeeInit()) glUniform2ui64NV(location, x, y);} GLEEPFNGLUNIFORM2UI64NVPROC GLeeFuncPtr_glUniform2ui64NV=GLee_Lazy_glUniform2ui64NV; #endif #ifndef GLEE_C_DEFINED_glUniform3ui64NV #define GLEE_C_DEFINED_glUniform3ui64NV void __stdcall GLee_Lazy_glUniform3ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) {if (GLeeInit()) glUniform3ui64NV(location, x, y, z);} GLEEPFNGLUNIFORM3UI64NVPROC GLeeFuncPtr_glUniform3ui64NV=GLee_Lazy_glUniform3ui64NV; #endif #ifndef GLEE_C_DEFINED_glUniform4ui64NV #define GLEE_C_DEFINED_glUniform4ui64NV void __stdcall GLee_Lazy_glUniform4ui64NV(GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) {if (GLeeInit()) glUniform4ui64NV(location, x, y, z, w);} GLEEPFNGLUNIFORM4UI64NVPROC GLeeFuncPtr_glUniform4ui64NV=GLee_Lazy_glUniform4ui64NV; #endif #ifndef GLEE_C_DEFINED_glUniform1ui64vNV #define GLEE_C_DEFINED_glUniform1ui64vNV void __stdcall GLee_Lazy_glUniform1ui64vNV(GLint location, GLsizei count, const GLuint64EXT * value) {if (GLeeInit()) glUniform1ui64vNV(location, count, value);} GLEEPFNGLUNIFORM1UI64VNVPROC GLeeFuncPtr_glUniform1ui64vNV=GLee_Lazy_glUniform1ui64vNV; #endif #ifndef GLEE_C_DEFINED_glUniform2ui64vNV #define GLEE_C_DEFINED_glUniform2ui64vNV void __stdcall GLee_Lazy_glUniform2ui64vNV(GLint location, GLsizei count, const GLuint64EXT * value) {if (GLeeInit()) glUniform2ui64vNV(location, count, value);} GLEEPFNGLUNIFORM2UI64VNVPROC GLeeFuncPtr_glUniform2ui64vNV=GLee_Lazy_glUniform2ui64vNV; #endif #ifndef GLEE_C_DEFINED_glUniform3ui64vNV #define GLEE_C_DEFINED_glUniform3ui64vNV void __stdcall GLee_Lazy_glUniform3ui64vNV(GLint location, GLsizei count, const GLuint64EXT * value) {if (GLeeInit()) glUniform3ui64vNV(location, count, value);} GLEEPFNGLUNIFORM3UI64VNVPROC GLeeFuncPtr_glUniform3ui64vNV=GLee_Lazy_glUniform3ui64vNV; #endif #ifndef GLEE_C_DEFINED_glUniform4ui64vNV #define GLEE_C_DEFINED_glUniform4ui64vNV void __stdcall GLee_Lazy_glUniform4ui64vNV(GLint location, GLsizei count, const GLuint64EXT * value) {if (GLeeInit()) glUniform4ui64vNV(location, count, value);} GLEEPFNGLUNIFORM4UI64VNVPROC GLeeFuncPtr_glUniform4ui64vNV=GLee_Lazy_glUniform4ui64vNV; #endif #ifndef GLEE_C_DEFINED_glGetUniformi64vNV #define GLEE_C_DEFINED_glGetUniformi64vNV void __stdcall GLee_Lazy_glGetUniformi64vNV(GLuint program, GLint location, GLint64EXT * params) {if (GLeeInit()) glGetUniformi64vNV(program, location, params);} GLEEPFNGLGETUNIFORMI64VNVPROC GLeeFuncPtr_glGetUniformi64vNV=GLee_Lazy_glGetUniformi64vNV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1i64NV #define GLEE_C_DEFINED_glProgramUniform1i64NV void __stdcall GLee_Lazy_glProgramUniform1i64NV(GLuint program, GLint location, GLint64EXT x) {if (GLeeInit()) glProgramUniform1i64NV(program, location, x);} GLEEPFNGLPROGRAMUNIFORM1I64NVPROC GLeeFuncPtr_glProgramUniform1i64NV=GLee_Lazy_glProgramUniform1i64NV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2i64NV #define GLEE_C_DEFINED_glProgramUniform2i64NV void __stdcall GLee_Lazy_glProgramUniform2i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y) {if (GLeeInit()) glProgramUniform2i64NV(program, location, x, y);} GLEEPFNGLPROGRAMUNIFORM2I64NVPROC GLeeFuncPtr_glProgramUniform2i64NV=GLee_Lazy_glProgramUniform2i64NV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3i64NV #define GLEE_C_DEFINED_glProgramUniform3i64NV void __stdcall GLee_Lazy_glProgramUniform3i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z) {if (GLeeInit()) glProgramUniform3i64NV(program, location, x, y, z);} GLEEPFNGLPROGRAMUNIFORM3I64NVPROC GLeeFuncPtr_glProgramUniform3i64NV=GLee_Lazy_glProgramUniform3i64NV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4i64NV #define GLEE_C_DEFINED_glProgramUniform4i64NV void __stdcall GLee_Lazy_glProgramUniform4i64NV(GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) {if (GLeeInit()) glProgramUniform4i64NV(program, location, x, y, z, w);} GLEEPFNGLPROGRAMUNIFORM4I64NVPROC GLeeFuncPtr_glProgramUniform4i64NV=GLee_Lazy_glProgramUniform4i64NV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1i64vNV #define GLEE_C_DEFINED_glProgramUniform1i64vNV void __stdcall GLee_Lazy_glProgramUniform1i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT * value) {if (GLeeInit()) glProgramUniform1i64vNV(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM1I64VNVPROC GLeeFuncPtr_glProgramUniform1i64vNV=GLee_Lazy_glProgramUniform1i64vNV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2i64vNV #define GLEE_C_DEFINED_glProgramUniform2i64vNV void __stdcall GLee_Lazy_glProgramUniform2i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT * value) {if (GLeeInit()) glProgramUniform2i64vNV(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM2I64VNVPROC GLeeFuncPtr_glProgramUniform2i64vNV=GLee_Lazy_glProgramUniform2i64vNV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3i64vNV #define GLEE_C_DEFINED_glProgramUniform3i64vNV void __stdcall GLee_Lazy_glProgramUniform3i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT * value) {if (GLeeInit()) glProgramUniform3i64vNV(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM3I64VNVPROC GLeeFuncPtr_glProgramUniform3i64vNV=GLee_Lazy_glProgramUniform3i64vNV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4i64vNV #define GLEE_C_DEFINED_glProgramUniform4i64vNV void __stdcall GLee_Lazy_glProgramUniform4i64vNV(GLuint program, GLint location, GLsizei count, const GLint64EXT * value) {if (GLeeInit()) glProgramUniform4i64vNV(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM4I64VNVPROC GLeeFuncPtr_glProgramUniform4i64vNV=GLee_Lazy_glProgramUniform4i64vNV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1ui64NV #define GLEE_C_DEFINED_glProgramUniform1ui64NV void __stdcall GLee_Lazy_glProgramUniform1ui64NV(GLuint program, GLint location, GLuint64EXT x) {if (GLeeInit()) glProgramUniform1ui64NV(program, location, x);} GLEEPFNGLPROGRAMUNIFORM1UI64NVPROC GLeeFuncPtr_glProgramUniform1ui64NV=GLee_Lazy_glProgramUniform1ui64NV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2ui64NV #define GLEE_C_DEFINED_glProgramUniform2ui64NV void __stdcall GLee_Lazy_glProgramUniform2ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y) {if (GLeeInit()) glProgramUniform2ui64NV(program, location, x, y);} GLEEPFNGLPROGRAMUNIFORM2UI64NVPROC GLeeFuncPtr_glProgramUniform2ui64NV=GLee_Lazy_glProgramUniform2ui64NV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3ui64NV #define GLEE_C_DEFINED_glProgramUniform3ui64NV void __stdcall GLee_Lazy_glProgramUniform3ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) {if (GLeeInit()) glProgramUniform3ui64NV(program, location, x, y, z);} GLEEPFNGLPROGRAMUNIFORM3UI64NVPROC GLeeFuncPtr_glProgramUniform3ui64NV=GLee_Lazy_glProgramUniform3ui64NV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4ui64NV #define GLEE_C_DEFINED_glProgramUniform4ui64NV void __stdcall GLee_Lazy_glProgramUniform4ui64NV(GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) {if (GLeeInit()) glProgramUniform4ui64NV(program, location, x, y, z, w);} GLEEPFNGLPROGRAMUNIFORM4UI64NVPROC GLeeFuncPtr_glProgramUniform4ui64NV=GLee_Lazy_glProgramUniform4ui64NV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform1ui64vNV #define GLEE_C_DEFINED_glProgramUniform1ui64vNV void __stdcall GLee_Lazy_glProgramUniform1ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value) {if (GLeeInit()) glProgramUniform1ui64vNV(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM1UI64VNVPROC GLeeFuncPtr_glProgramUniform1ui64vNV=GLee_Lazy_glProgramUniform1ui64vNV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform2ui64vNV #define GLEE_C_DEFINED_glProgramUniform2ui64vNV void __stdcall GLee_Lazy_glProgramUniform2ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value) {if (GLeeInit()) glProgramUniform2ui64vNV(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM2UI64VNVPROC GLeeFuncPtr_glProgramUniform2ui64vNV=GLee_Lazy_glProgramUniform2ui64vNV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform3ui64vNV #define GLEE_C_DEFINED_glProgramUniform3ui64vNV void __stdcall GLee_Lazy_glProgramUniform3ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value) {if (GLeeInit()) glProgramUniform3ui64vNV(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM3UI64VNVPROC GLeeFuncPtr_glProgramUniform3ui64vNV=GLee_Lazy_glProgramUniform3ui64vNV; #endif #ifndef GLEE_C_DEFINED_glProgramUniform4ui64vNV #define GLEE_C_DEFINED_glProgramUniform4ui64vNV void __stdcall GLee_Lazy_glProgramUniform4ui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64EXT * value) {if (GLeeInit()) glProgramUniform4ui64vNV(program, location, count, value);} GLEEPFNGLPROGRAMUNIFORM4UI64VNVPROC GLeeFuncPtr_glProgramUniform4ui64vNV=GLee_Lazy_glProgramUniform4ui64vNV; #endif #endif /* GL_NV_shader_buffer_store */ #ifdef __GLEE_GL_NV_shader_buffer_store #endif /* GL_NV_tessellation_program5 */ #ifdef __GLEE_GL_NV_tessellation_program5 #endif /* GL_NV_vertex_attrib_integer_64bit */ #ifdef __GLEE_GL_NV_vertex_attrib_integer_64bit #ifndef GLEE_C_DEFINED_glVertexAttribL1i64NV #define GLEE_C_DEFINED_glVertexAttribL1i64NV void __stdcall GLee_Lazy_glVertexAttribL1i64NV(GLuint index, GLint64EXT x) {if (GLeeInit()) glVertexAttribL1i64NV(index, x);} GLEEPFNGLVERTEXATTRIBL1I64NVPROC GLeeFuncPtr_glVertexAttribL1i64NV=GLee_Lazy_glVertexAttribL1i64NV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL2i64NV #define GLEE_C_DEFINED_glVertexAttribL2i64NV void __stdcall GLee_Lazy_glVertexAttribL2i64NV(GLuint index, GLint64EXT x, GLint64EXT y) {if (GLeeInit()) glVertexAttribL2i64NV(index, x, y);} GLEEPFNGLVERTEXATTRIBL2I64NVPROC GLeeFuncPtr_glVertexAttribL2i64NV=GLee_Lazy_glVertexAttribL2i64NV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL3i64NV #define GLEE_C_DEFINED_glVertexAttribL3i64NV void __stdcall GLee_Lazy_glVertexAttribL3i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z) {if (GLeeInit()) glVertexAttribL3i64NV(index, x, y, z);} GLEEPFNGLVERTEXATTRIBL3I64NVPROC GLeeFuncPtr_glVertexAttribL3i64NV=GLee_Lazy_glVertexAttribL3i64NV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL4i64NV #define GLEE_C_DEFINED_glVertexAttribL4i64NV void __stdcall GLee_Lazy_glVertexAttribL4i64NV(GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w) {if (GLeeInit()) glVertexAttribL4i64NV(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIBL4I64NVPROC GLeeFuncPtr_glVertexAttribL4i64NV=GLee_Lazy_glVertexAttribL4i64NV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL1i64vNV #define GLEE_C_DEFINED_glVertexAttribL1i64vNV void __stdcall GLee_Lazy_glVertexAttribL1i64vNV(GLuint index, const GLint64EXT * v) {if (GLeeInit()) glVertexAttribL1i64vNV(index, v);} GLEEPFNGLVERTEXATTRIBL1I64VNVPROC GLeeFuncPtr_glVertexAttribL1i64vNV=GLee_Lazy_glVertexAttribL1i64vNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL2i64vNV #define GLEE_C_DEFINED_glVertexAttribL2i64vNV void __stdcall GLee_Lazy_glVertexAttribL2i64vNV(GLuint index, const GLint64EXT * v) {if (GLeeInit()) glVertexAttribL2i64vNV(index, v);} GLEEPFNGLVERTEXATTRIBL2I64VNVPROC GLeeFuncPtr_glVertexAttribL2i64vNV=GLee_Lazy_glVertexAttribL2i64vNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL3i64vNV #define GLEE_C_DEFINED_glVertexAttribL3i64vNV void __stdcall GLee_Lazy_glVertexAttribL3i64vNV(GLuint index, const GLint64EXT * v) {if (GLeeInit()) glVertexAttribL3i64vNV(index, v);} GLEEPFNGLVERTEXATTRIBL3I64VNVPROC GLeeFuncPtr_glVertexAttribL3i64vNV=GLee_Lazy_glVertexAttribL3i64vNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL4i64vNV #define GLEE_C_DEFINED_glVertexAttribL4i64vNV void __stdcall GLee_Lazy_glVertexAttribL4i64vNV(GLuint index, const GLint64EXT * v) {if (GLeeInit()) glVertexAttribL4i64vNV(index, v);} GLEEPFNGLVERTEXATTRIBL4I64VNVPROC GLeeFuncPtr_glVertexAttribL4i64vNV=GLee_Lazy_glVertexAttribL4i64vNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL1ui64NV #define GLEE_C_DEFINED_glVertexAttribL1ui64NV void __stdcall GLee_Lazy_glVertexAttribL1ui64NV(GLuint index, GLuint64EXT x) {if (GLeeInit()) glVertexAttribL1ui64NV(index, x);} GLEEPFNGLVERTEXATTRIBL1UI64NVPROC GLeeFuncPtr_glVertexAttribL1ui64NV=GLee_Lazy_glVertexAttribL1ui64NV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL2ui64NV #define GLEE_C_DEFINED_glVertexAttribL2ui64NV void __stdcall GLee_Lazy_glVertexAttribL2ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y) {if (GLeeInit()) glVertexAttribL2ui64NV(index, x, y);} GLEEPFNGLVERTEXATTRIBL2UI64NVPROC GLeeFuncPtr_glVertexAttribL2ui64NV=GLee_Lazy_glVertexAttribL2ui64NV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL3ui64NV #define GLEE_C_DEFINED_glVertexAttribL3ui64NV void __stdcall GLee_Lazy_glVertexAttribL3ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z) {if (GLeeInit()) glVertexAttribL3ui64NV(index, x, y, z);} GLEEPFNGLVERTEXATTRIBL3UI64NVPROC GLeeFuncPtr_glVertexAttribL3ui64NV=GLee_Lazy_glVertexAttribL3ui64NV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL4ui64NV #define GLEE_C_DEFINED_glVertexAttribL4ui64NV void __stdcall GLee_Lazy_glVertexAttribL4ui64NV(GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w) {if (GLeeInit()) glVertexAttribL4ui64NV(index, x, y, z, w);} GLEEPFNGLVERTEXATTRIBL4UI64NVPROC GLeeFuncPtr_glVertexAttribL4ui64NV=GLee_Lazy_glVertexAttribL4ui64NV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL1ui64vNV #define GLEE_C_DEFINED_glVertexAttribL1ui64vNV void __stdcall GLee_Lazy_glVertexAttribL1ui64vNV(GLuint index, const GLuint64EXT * v) {if (GLeeInit()) glVertexAttribL1ui64vNV(index, v);} GLEEPFNGLVERTEXATTRIBL1UI64VNVPROC GLeeFuncPtr_glVertexAttribL1ui64vNV=GLee_Lazy_glVertexAttribL1ui64vNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL2ui64vNV #define GLEE_C_DEFINED_glVertexAttribL2ui64vNV void __stdcall GLee_Lazy_glVertexAttribL2ui64vNV(GLuint index, const GLuint64EXT * v) {if (GLeeInit()) glVertexAttribL2ui64vNV(index, v);} GLEEPFNGLVERTEXATTRIBL2UI64VNVPROC GLeeFuncPtr_glVertexAttribL2ui64vNV=GLee_Lazy_glVertexAttribL2ui64vNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL3ui64vNV #define GLEE_C_DEFINED_glVertexAttribL3ui64vNV void __stdcall GLee_Lazy_glVertexAttribL3ui64vNV(GLuint index, const GLuint64EXT * v) {if (GLeeInit()) glVertexAttribL3ui64vNV(index, v);} GLEEPFNGLVERTEXATTRIBL3UI64VNVPROC GLeeFuncPtr_glVertexAttribL3ui64vNV=GLee_Lazy_glVertexAttribL3ui64vNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribL4ui64vNV #define GLEE_C_DEFINED_glVertexAttribL4ui64vNV void __stdcall GLee_Lazy_glVertexAttribL4ui64vNV(GLuint index, const GLuint64EXT * v) {if (GLeeInit()) glVertexAttribL4ui64vNV(index, v);} GLEEPFNGLVERTEXATTRIBL4UI64VNVPROC GLeeFuncPtr_glVertexAttribL4ui64vNV=GLee_Lazy_glVertexAttribL4ui64vNV; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribLi64vNV #define GLEE_C_DEFINED_glGetVertexAttribLi64vNV void __stdcall GLee_Lazy_glGetVertexAttribLi64vNV(GLuint index, GLenum pname, GLint64EXT * params) {if (GLeeInit()) glGetVertexAttribLi64vNV(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBLI64VNVPROC GLeeFuncPtr_glGetVertexAttribLi64vNV=GLee_Lazy_glGetVertexAttribLi64vNV; #endif #ifndef GLEE_C_DEFINED_glGetVertexAttribLui64vNV #define GLEE_C_DEFINED_glGetVertexAttribLui64vNV void __stdcall GLee_Lazy_glGetVertexAttribLui64vNV(GLuint index, GLenum pname, GLuint64EXT * params) {if (GLeeInit()) glGetVertexAttribLui64vNV(index, pname, params);} GLEEPFNGLGETVERTEXATTRIBLUI64VNVPROC GLeeFuncPtr_glGetVertexAttribLui64vNV=GLee_Lazy_glGetVertexAttribLui64vNV; #endif #ifndef GLEE_C_DEFINED_glVertexAttribLFormatNV #define GLEE_C_DEFINED_glVertexAttribLFormatNV void __stdcall GLee_Lazy_glVertexAttribLFormatNV(GLuint index, GLint size, GLenum type, GLsizei stride) {if (GLeeInit()) glVertexAttribLFormatNV(index, size, type, stride);} GLEEPFNGLVERTEXATTRIBLFORMATNVPROC GLeeFuncPtr_glVertexAttribLFormatNV=GLee_Lazy_glVertexAttribLFormatNV; #endif #endif /* GL_NV_multisample_coverage */ #ifdef __GLEE_GL_NV_multisample_coverage #endif /* GL_AMD_name_gen_delete */ #ifdef __GLEE_GL_AMD_name_gen_delete #ifndef GLEE_C_DEFINED_glGenNamesAMD #define GLEE_C_DEFINED_glGenNamesAMD void __stdcall GLee_Lazy_glGenNamesAMD(GLenum identifier, GLuint num, GLuint * names) {if (GLeeInit()) glGenNamesAMD(identifier, num, names);} GLEEPFNGLGENNAMESAMDPROC GLeeFuncPtr_glGenNamesAMD=GLee_Lazy_glGenNamesAMD; #endif #ifndef GLEE_C_DEFINED_glDeleteNamesAMD #define GLEE_C_DEFINED_glDeleteNamesAMD void __stdcall GLee_Lazy_glDeleteNamesAMD(GLenum identifier, GLuint num, const GLuint * names) {if (GLeeInit()) glDeleteNamesAMD(identifier, num, names);} GLEEPFNGLDELETENAMESAMDPROC GLeeFuncPtr_glDeleteNamesAMD=GLee_Lazy_glDeleteNamesAMD; #endif #ifndef GLEE_C_DEFINED_glIsNameAMD #define GLEE_C_DEFINED_glIsNameAMD GLboolean __stdcall GLee_Lazy_glIsNameAMD(GLenum identifier, GLuint name) {if (GLeeInit()) return glIsNameAMD(identifier, name); return (GLboolean)0;} GLEEPFNGLISNAMEAMDPROC GLeeFuncPtr_glIsNameAMD=GLee_Lazy_glIsNameAMD; #endif #endif /* GL_AMD_debug_output */ #ifdef __GLEE_GL_AMD_debug_output #ifndef GLEE_C_DEFINED_glDebugMessageEnableAMD #define GLEE_C_DEFINED_glDebugMessageEnableAMD void __stdcall GLee_Lazy_glDebugMessageEnableAMD(GLenum category, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled) {if (GLeeInit()) glDebugMessageEnableAMD(category, severity, count, ids, enabled);} GLEEPFNGLDEBUGMESSAGEENABLEAMDPROC GLeeFuncPtr_glDebugMessageEnableAMD=GLee_Lazy_glDebugMessageEnableAMD; #endif #ifndef GLEE_C_DEFINED_glDebugMessageInsertAMD #define GLEE_C_DEFINED_glDebugMessageInsertAMD void __stdcall GLee_Lazy_glDebugMessageInsertAMD(GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar * buf) {if (GLeeInit()) glDebugMessageInsertAMD(category, severity, id, length, buf);} GLEEPFNGLDEBUGMESSAGEINSERTAMDPROC GLeeFuncPtr_glDebugMessageInsertAMD=GLee_Lazy_glDebugMessageInsertAMD; #endif #ifndef GLEE_C_DEFINED_glDebugMessageCallbackAMD #define GLEE_C_DEFINED_glDebugMessageCallbackAMD void __stdcall GLee_Lazy_glDebugMessageCallbackAMD(GLDEBUGPROCAMD callback, GLvoid * userParam) {if (GLeeInit()) glDebugMessageCallbackAMD(callback, userParam);} GLEEPFNGLDEBUGMESSAGECALLBACKAMDPROC GLeeFuncPtr_glDebugMessageCallbackAMD=GLee_Lazy_glDebugMessageCallbackAMD; #endif #ifndef GLEE_C_DEFINED_glGetDebugMessageLogAMD #define GLEE_C_DEFINED_glGetDebugMessageLogAMD GLuint __stdcall GLee_Lazy_glGetDebugMessageLogAMD(GLuint count, GLsizei bufsize, GLenum * categories, GLuint * severities, GLuint * ids, GLsizei * lengths, GLchar * message) {if (GLeeInit()) return glGetDebugMessageLogAMD(count, bufsize, categories, severities, ids, lengths, message); return (GLuint)0;} GLEEPFNGLGETDEBUGMESSAGELOGAMDPROC GLeeFuncPtr_glGetDebugMessageLogAMD=GLee_Lazy_glGetDebugMessageLogAMD; #endif #endif /* GL_AMD_transform_feedback3_lines_triangles */ #ifdef __GLEE_GL_AMD_transform_feedback3_lines_triangles #endif /* GL_AMD_depth_clamp_separate */ #ifdef __GLEE_GL_AMD_depth_clamp_separate #endif /* GL_EXT_texture_sRGB_decode */ #ifdef __GLEE_GL_EXT_texture_sRGB_decode #endif /* GL_NV_texture_multisample */ #ifdef __GLEE_GL_NV_texture_multisample #ifndef GLEE_C_DEFINED_glTexImage2DMultisampleCoverageNV #define GLEE_C_DEFINED_glTexImage2DMultisampleCoverageNV void __stdcall GLee_Lazy_glTexImage2DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations) {if (GLeeInit()) glTexImage2DMultisampleCoverageNV(target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations);} GLEEPFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC GLeeFuncPtr_glTexImage2DMultisampleCoverageNV=GLee_Lazy_glTexImage2DMultisampleCoverageNV; #endif #ifndef GLEE_C_DEFINED_glTexImage3DMultisampleCoverageNV #define GLEE_C_DEFINED_glTexImage3DMultisampleCoverageNV void __stdcall GLee_Lazy_glTexImage3DMultisampleCoverageNV(GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations) {if (GLeeInit()) glTexImage3DMultisampleCoverageNV(target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations);} GLEEPFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC GLeeFuncPtr_glTexImage3DMultisampleCoverageNV=GLee_Lazy_glTexImage3DMultisampleCoverageNV; #endif #ifndef GLEE_C_DEFINED_glTextureImage2DMultisampleNV #define GLEE_C_DEFINED_glTextureImage2DMultisampleNV void __stdcall GLee_Lazy_glTextureImage2DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations) {if (GLeeInit()) glTextureImage2DMultisampleNV(texture, target, samples, internalFormat, width, height, fixedSampleLocations);} GLEEPFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC GLeeFuncPtr_glTextureImage2DMultisampleNV=GLee_Lazy_glTextureImage2DMultisampleNV; #endif #ifndef GLEE_C_DEFINED_glTextureImage3DMultisampleNV #define GLEE_C_DEFINED_glTextureImage3DMultisampleNV void __stdcall GLee_Lazy_glTextureImage3DMultisampleNV(GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations) {if (GLeeInit()) glTextureImage3DMultisampleNV(texture, target, samples, internalFormat, width, height, depth, fixedSampleLocations);} GLEEPFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC GLeeFuncPtr_glTextureImage3DMultisampleNV=GLee_Lazy_glTextureImage3DMultisampleNV; #endif #ifndef GLEE_C_DEFINED_glTextureImage2DMultisampleCoverageNV #define GLEE_C_DEFINED_glTextureImage2DMultisampleCoverageNV void __stdcall GLee_Lazy_glTextureImage2DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations) {if (GLeeInit()) glTextureImage2DMultisampleCoverageNV(texture, target, coverageSamples, colorSamples, internalFormat, width, height, fixedSampleLocations);} GLEEPFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC GLeeFuncPtr_glTextureImage2DMultisampleCoverageNV=GLee_Lazy_glTextureImage2DMultisampleCoverageNV; #endif #ifndef GLEE_C_DEFINED_glTextureImage3DMultisampleCoverageNV #define GLEE_C_DEFINED_glTextureImage3DMultisampleCoverageNV void __stdcall GLee_Lazy_glTextureImage3DMultisampleCoverageNV(GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations) {if (GLeeInit()) glTextureImage3DMultisampleCoverageNV(texture, target, coverageSamples, colorSamples, internalFormat, width, height, depth, fixedSampleLocations);} GLEEPFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC GLeeFuncPtr_glTextureImage3DMultisampleCoverageNV=GLee_Lazy_glTextureImage3DMultisampleCoverageNV; #endif #endif /* GL_AMD_blend_minmax_factor */ #ifdef __GLEE_GL_AMD_blend_minmax_factor #endif /* GL_AMD_sample_positions */ #ifdef __GLEE_GL_AMD_sample_positions #ifndef GLEE_C_DEFINED_glSetMultisamplefvAMD #define GLEE_C_DEFINED_glSetMultisamplefvAMD void __stdcall GLee_Lazy_glSetMultisamplefvAMD(GLenum pname, GLuint index, const GLfloat * val) {if (GLeeInit()) glSetMultisamplefvAMD(pname, index, val);} GLEEPFNGLSETMULTISAMPLEFVAMDPROC GLeeFuncPtr_glSetMultisamplefvAMD=GLee_Lazy_glSetMultisamplefvAMD; #endif #endif /* GL_EXT_x11_sync_object */ #ifdef __GLEE_GL_EXT_x11_sync_object #ifndef GLEE_C_DEFINED_glImportSyncEXT #define GLEE_C_DEFINED_glImportSyncEXT GLsync __stdcall GLee_Lazy_glImportSyncEXT(GLenum external_sync_type, GLintptr external_sync, GLbitfield flags) {if (GLeeInit()) return glImportSyncEXT(external_sync_type, external_sync, flags); return (GLsync)0;} GLEEPFNGLIMPORTSYNCEXTPROC GLeeFuncPtr_glImportSyncEXT=GLee_Lazy_glImportSyncEXT; #endif #endif /* GL_AMD_multi_draw_indirect */ #ifdef __GLEE_GL_AMD_multi_draw_indirect #ifndef GLEE_C_DEFINED_glMultiDrawArraysIndirectAMD #define GLEE_C_DEFINED_glMultiDrawArraysIndirectAMD void __stdcall GLee_Lazy_glMultiDrawArraysIndirectAMD(GLenum mode, const GLvoid * indirect, GLsizei primcount, GLsizei stride) {if (GLeeInit()) glMultiDrawArraysIndirectAMD(mode, indirect, primcount, stride);} GLEEPFNGLMULTIDRAWARRAYSINDIRECTAMDPROC GLeeFuncPtr_glMultiDrawArraysIndirectAMD=GLee_Lazy_glMultiDrawArraysIndirectAMD; #endif #ifndef GLEE_C_DEFINED_glMultiDrawElementsIndirectAMD #define GLEE_C_DEFINED_glMultiDrawElementsIndirectAMD void __stdcall GLee_Lazy_glMultiDrawElementsIndirectAMD(GLenum mode, GLenum type, const GLvoid * indirect, GLsizei primcount, GLsizei stride) {if (GLeeInit()) glMultiDrawElementsIndirectAMD(mode, type, indirect, primcount, stride);} GLEEPFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC GLeeFuncPtr_glMultiDrawElementsIndirectAMD=GLee_Lazy_glMultiDrawElementsIndirectAMD; #endif #endif /* GL_EXT_framebuffer_multisample_blit_scaled */ #ifdef __GLEE_GL_EXT_framebuffer_multisample_blit_scaled #endif /* GL_NV_path_rendering */ #ifdef __GLEE_GL_NV_path_rendering #ifndef GLEE_C_DEFINED_glGenPathsNV #define GLEE_C_DEFINED_glGenPathsNV GLuint __stdcall GLee_Lazy_glGenPathsNV(GLsizei range) {if (GLeeInit()) return glGenPathsNV(range); return (GLuint)0;} GLEEPFNGLGENPATHSNVPROC GLeeFuncPtr_glGenPathsNV=GLee_Lazy_glGenPathsNV; #endif #ifndef GLEE_C_DEFINED_glDeletePathsNV #define GLEE_C_DEFINED_glDeletePathsNV void __stdcall GLee_Lazy_glDeletePathsNV(GLuint path, GLsizei range) {if (GLeeInit()) glDeletePathsNV(path, range);} GLEEPFNGLDELETEPATHSNVPROC GLeeFuncPtr_glDeletePathsNV=GLee_Lazy_glDeletePathsNV; #endif #ifndef GLEE_C_DEFINED_glIsPathNV #define GLEE_C_DEFINED_glIsPathNV GLboolean __stdcall GLee_Lazy_glIsPathNV(GLuint path) {if (GLeeInit()) return glIsPathNV(path); return (GLboolean)0;} GLEEPFNGLISPATHNVPROC GLeeFuncPtr_glIsPathNV=GLee_Lazy_glIsPathNV; #endif #ifndef GLEE_C_DEFINED_glPathCommandsNV #define GLEE_C_DEFINED_glPathCommandsNV void __stdcall GLee_Lazy_glPathCommandsNV(GLuint path, GLsizei numCommands, const GLubyte * commands, GLsizei numCoords, GLenum coordType, const GLvoid * coords) {if (GLeeInit()) glPathCommandsNV(path, numCommands, commands, numCoords, coordType, coords);} GLEEPFNGLPATHCOMMANDSNVPROC GLeeFuncPtr_glPathCommandsNV=GLee_Lazy_glPathCommandsNV; #endif #ifndef GLEE_C_DEFINED_glPathCoordsNV #define GLEE_C_DEFINED_glPathCoordsNV void __stdcall GLee_Lazy_glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const GLvoid * coords) {if (GLeeInit()) glPathCoordsNV(path, numCoords, coordType, coords);} GLEEPFNGLPATHCOORDSNVPROC GLeeFuncPtr_glPathCoordsNV=GLee_Lazy_glPathCoordsNV; #endif #ifndef GLEE_C_DEFINED_glPathSubCommandsNV #define GLEE_C_DEFINED_glPathSubCommandsNV void __stdcall GLee_Lazy_glPathSubCommandsNV(GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte * commands, GLsizei numCoords, GLenum coordType, const GLvoid * coords) {if (GLeeInit()) glPathSubCommandsNV(path, commandStart, commandsToDelete, numCommands, commands, numCoords, coordType, coords);} GLEEPFNGLPATHSUBCOMMANDSNVPROC GLeeFuncPtr_glPathSubCommandsNV=GLee_Lazy_glPathSubCommandsNV; #endif #ifndef GLEE_C_DEFINED_glPathSubCoordsNV #define GLEE_C_DEFINED_glPathSubCoordsNV void __stdcall GLee_Lazy_glPathSubCoordsNV(GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const GLvoid * coords) {if (GLeeInit()) glPathSubCoordsNV(path, coordStart, numCoords, coordType, coords);} GLEEPFNGLPATHSUBCOORDSNVPROC GLeeFuncPtr_glPathSubCoordsNV=GLee_Lazy_glPathSubCoordsNV; #endif #ifndef GLEE_C_DEFINED_glPathStringNV #define GLEE_C_DEFINED_glPathStringNV void __stdcall GLee_Lazy_glPathStringNV(GLuint path, GLenum format, GLsizei length, const GLvoid * pathString) {if (GLeeInit()) glPathStringNV(path, format, length, pathString);} GLEEPFNGLPATHSTRINGNVPROC GLeeFuncPtr_glPathStringNV=GLee_Lazy_glPathStringNV; #endif #ifndef GLEE_C_DEFINED_glPathGlyphsNV #define GLEE_C_DEFINED_glPathGlyphsNV void __stdcall GLee_Lazy_glPathGlyphsNV(GLuint firstPathName, GLenum fontTarget, const GLvoid * fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const GLvoid * charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale) {if (GLeeInit()) glPathGlyphsNV(firstPathName, fontTarget, fontName, fontStyle, numGlyphs, type, charcodes, handleMissingGlyphs, pathParameterTemplate, emScale);} GLEEPFNGLPATHGLYPHSNVPROC GLeeFuncPtr_glPathGlyphsNV=GLee_Lazy_glPathGlyphsNV; #endif #ifndef GLEE_C_DEFINED_glPathGlyphRangeNV #define GLEE_C_DEFINED_glPathGlyphRangeNV void __stdcall GLee_Lazy_glPathGlyphRangeNV(GLuint firstPathName, GLenum fontTarget, const GLvoid * fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale) {if (GLeeInit()) glPathGlyphRangeNV(firstPathName, fontTarget, fontName, fontStyle, firstGlyph, numGlyphs, handleMissingGlyphs, pathParameterTemplate, emScale);} GLEEPFNGLPATHGLYPHRANGENVPROC GLeeFuncPtr_glPathGlyphRangeNV=GLee_Lazy_glPathGlyphRangeNV; #endif #ifndef GLEE_C_DEFINED_glWeightPathsNV #define GLEE_C_DEFINED_glWeightPathsNV void __stdcall GLee_Lazy_glWeightPathsNV(GLuint resultPath, GLsizei numPaths, const GLuint * paths, const GLfloat * weights) {if (GLeeInit()) glWeightPathsNV(resultPath, numPaths, paths, weights);} GLEEPFNGLWEIGHTPATHSNVPROC GLeeFuncPtr_glWeightPathsNV=GLee_Lazy_glWeightPathsNV; #endif #ifndef GLEE_C_DEFINED_glCopyPathNV #define GLEE_C_DEFINED_glCopyPathNV void __stdcall GLee_Lazy_glCopyPathNV(GLuint resultPath, GLuint srcPath) {if (GLeeInit()) glCopyPathNV(resultPath, srcPath);} GLEEPFNGLCOPYPATHNVPROC GLeeFuncPtr_glCopyPathNV=GLee_Lazy_glCopyPathNV; #endif #ifndef GLEE_C_DEFINED_glInterpolatePathsNV #define GLEE_C_DEFINED_glInterpolatePathsNV void __stdcall GLee_Lazy_glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight) {if (GLeeInit()) glInterpolatePathsNV(resultPath, pathA, pathB, weight);} GLEEPFNGLINTERPOLATEPATHSNVPROC GLeeFuncPtr_glInterpolatePathsNV=GLee_Lazy_glInterpolatePathsNV; #endif #ifndef GLEE_C_DEFINED_glTransformPathNV #define GLEE_C_DEFINED_glTransformPathNV void __stdcall GLee_Lazy_glTransformPathNV(GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat * transformValues) {if (GLeeInit()) glTransformPathNV(resultPath, srcPath, transformType, transformValues);} GLEEPFNGLTRANSFORMPATHNVPROC GLeeFuncPtr_glTransformPathNV=GLee_Lazy_glTransformPathNV; #endif #ifndef GLEE_C_DEFINED_glPathParameterivNV #define GLEE_C_DEFINED_glPathParameterivNV void __stdcall GLee_Lazy_glPathParameterivNV(GLuint path, GLenum pname, const GLint * value) {if (GLeeInit()) glPathParameterivNV(path, pname, value);} GLEEPFNGLPATHPARAMETERIVNVPROC GLeeFuncPtr_glPathParameterivNV=GLee_Lazy_glPathParameterivNV; #endif #ifndef GLEE_C_DEFINED_glPathParameteriNV #define GLEE_C_DEFINED_glPathParameteriNV void __stdcall GLee_Lazy_glPathParameteriNV(GLuint path, GLenum pname, GLint value) {if (GLeeInit()) glPathParameteriNV(path, pname, value);} GLEEPFNGLPATHPARAMETERINVPROC GLeeFuncPtr_glPathParameteriNV=GLee_Lazy_glPathParameteriNV; #endif #ifndef GLEE_C_DEFINED_glPathParameterfvNV #define GLEE_C_DEFINED_glPathParameterfvNV void __stdcall GLee_Lazy_glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat * value) {if (GLeeInit()) glPathParameterfvNV(path, pname, value);} GLEEPFNGLPATHPARAMETERFVNVPROC GLeeFuncPtr_glPathParameterfvNV=GLee_Lazy_glPathParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glPathParameterfNV #define GLEE_C_DEFINED_glPathParameterfNV void __stdcall GLee_Lazy_glPathParameterfNV(GLuint path, GLenum pname, GLfloat value) {if (GLeeInit()) glPathParameterfNV(path, pname, value);} GLEEPFNGLPATHPARAMETERFNVPROC GLeeFuncPtr_glPathParameterfNV=GLee_Lazy_glPathParameterfNV; #endif #ifndef GLEE_C_DEFINED_glPathDashArrayNV #define GLEE_C_DEFINED_glPathDashArrayNV void __stdcall GLee_Lazy_glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat * dashArray) {if (GLeeInit()) glPathDashArrayNV(path, dashCount, dashArray);} GLEEPFNGLPATHDASHARRAYNVPROC GLeeFuncPtr_glPathDashArrayNV=GLee_Lazy_glPathDashArrayNV; #endif #ifndef GLEE_C_DEFINED_glPathStencilFuncNV #define GLEE_C_DEFINED_glPathStencilFuncNV void __stdcall GLee_Lazy_glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask) {if (GLeeInit()) glPathStencilFuncNV(func, ref, mask);} GLEEPFNGLPATHSTENCILFUNCNVPROC GLeeFuncPtr_glPathStencilFuncNV=GLee_Lazy_glPathStencilFuncNV; #endif #ifndef GLEE_C_DEFINED_glPathStencilDepthOffsetNV #define GLEE_C_DEFINED_glPathStencilDepthOffsetNV void __stdcall GLee_Lazy_glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units) {if (GLeeInit()) glPathStencilDepthOffsetNV(factor, units);} GLEEPFNGLPATHSTENCILDEPTHOFFSETNVPROC GLeeFuncPtr_glPathStencilDepthOffsetNV=GLee_Lazy_glPathStencilDepthOffsetNV; #endif #ifndef GLEE_C_DEFINED_glStencilFillPathNV #define GLEE_C_DEFINED_glStencilFillPathNV void __stdcall GLee_Lazy_glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask) {if (GLeeInit()) glStencilFillPathNV(path, fillMode, mask);} GLEEPFNGLSTENCILFILLPATHNVPROC GLeeFuncPtr_glStencilFillPathNV=GLee_Lazy_glStencilFillPathNV; #endif #ifndef GLEE_C_DEFINED_glStencilStrokePathNV #define GLEE_C_DEFINED_glStencilStrokePathNV void __stdcall GLee_Lazy_glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask) {if (GLeeInit()) glStencilStrokePathNV(path, reference, mask);} GLEEPFNGLSTENCILSTROKEPATHNVPROC GLeeFuncPtr_glStencilStrokePathNV=GLee_Lazy_glStencilStrokePathNV; #endif #ifndef GLEE_C_DEFINED_glStencilFillPathInstancedNV #define GLEE_C_DEFINED_glStencilFillPathInstancedNV void __stdcall GLee_Lazy_glStencilFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat * transformValues) {if (GLeeInit()) glStencilFillPathInstancedNV(numPaths, pathNameType, paths, pathBase, fillMode, mask, transformType, transformValues);} GLEEPFNGLSTENCILFILLPATHINSTANCEDNVPROC GLeeFuncPtr_glStencilFillPathInstancedNV=GLee_Lazy_glStencilFillPathInstancedNV; #endif #ifndef GLEE_C_DEFINED_glStencilStrokePathInstancedNV #define GLEE_C_DEFINED_glStencilStrokePathInstancedNV void __stdcall GLee_Lazy_glStencilStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat * transformValues) {if (GLeeInit()) glStencilStrokePathInstancedNV(numPaths, pathNameType, paths, pathBase, reference, mask, transformType, transformValues);} GLEEPFNGLSTENCILSTROKEPATHINSTANCEDNVPROC GLeeFuncPtr_glStencilStrokePathInstancedNV=GLee_Lazy_glStencilStrokePathInstancedNV; #endif #ifndef GLEE_C_DEFINED_glPathCoverDepthFuncNV #define GLEE_C_DEFINED_glPathCoverDepthFuncNV void __stdcall GLee_Lazy_glPathCoverDepthFuncNV(GLenum func) {if (GLeeInit()) glPathCoverDepthFuncNV(func);} GLEEPFNGLPATHCOVERDEPTHFUNCNVPROC GLeeFuncPtr_glPathCoverDepthFuncNV=GLee_Lazy_glPathCoverDepthFuncNV; #endif #ifndef GLEE_C_DEFINED_glPathColorGenNV #define GLEE_C_DEFINED_glPathColorGenNV void __stdcall GLee_Lazy_glPathColorGenNV(GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat * coeffs) {if (GLeeInit()) glPathColorGenNV(color, genMode, colorFormat, coeffs);} GLEEPFNGLPATHCOLORGENNVPROC GLeeFuncPtr_glPathColorGenNV=GLee_Lazy_glPathColorGenNV; #endif #ifndef GLEE_C_DEFINED_glPathTexGenNV #define GLEE_C_DEFINED_glPathTexGenNV void __stdcall GLee_Lazy_glPathTexGenNV(GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat * coeffs) {if (GLeeInit()) glPathTexGenNV(texCoordSet, genMode, components, coeffs);} GLEEPFNGLPATHTEXGENNVPROC GLeeFuncPtr_glPathTexGenNV=GLee_Lazy_glPathTexGenNV; #endif #ifndef GLEE_C_DEFINED_glPathFogGenNV #define GLEE_C_DEFINED_glPathFogGenNV void __stdcall GLee_Lazy_glPathFogGenNV(GLenum genMode) {if (GLeeInit()) glPathFogGenNV(genMode);} GLEEPFNGLPATHFOGGENNVPROC GLeeFuncPtr_glPathFogGenNV=GLee_Lazy_glPathFogGenNV; #endif #ifndef GLEE_C_DEFINED_glCoverFillPathNV #define GLEE_C_DEFINED_glCoverFillPathNV void __stdcall GLee_Lazy_glCoverFillPathNV(GLuint path, GLenum coverMode) {if (GLeeInit()) glCoverFillPathNV(path, coverMode);} GLEEPFNGLCOVERFILLPATHNVPROC GLeeFuncPtr_glCoverFillPathNV=GLee_Lazy_glCoverFillPathNV; #endif #ifndef GLEE_C_DEFINED_glCoverStrokePathNV #define GLEE_C_DEFINED_glCoverStrokePathNV void __stdcall GLee_Lazy_glCoverStrokePathNV(GLuint path, GLenum coverMode) {if (GLeeInit()) glCoverStrokePathNV(path, coverMode);} GLEEPFNGLCOVERSTROKEPATHNVPROC GLeeFuncPtr_glCoverStrokePathNV=GLee_Lazy_glCoverStrokePathNV; #endif #ifndef GLEE_C_DEFINED_glCoverFillPathInstancedNV #define GLEE_C_DEFINED_glCoverFillPathInstancedNV void __stdcall GLee_Lazy_glCoverFillPathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat * transformValues) {if (GLeeInit()) glCoverFillPathInstancedNV(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues);} GLEEPFNGLCOVERFILLPATHINSTANCEDNVPROC GLeeFuncPtr_glCoverFillPathInstancedNV=GLee_Lazy_glCoverFillPathInstancedNV; #endif #ifndef GLEE_C_DEFINED_glCoverStrokePathInstancedNV #define GLEE_C_DEFINED_glCoverStrokePathInstancedNV void __stdcall GLee_Lazy_glCoverStrokePathInstancedNV(GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat * transformValues) {if (GLeeInit()) glCoverStrokePathInstancedNV(numPaths, pathNameType, paths, pathBase, coverMode, transformType, transformValues);} GLEEPFNGLCOVERSTROKEPATHINSTANCEDNVPROC GLeeFuncPtr_glCoverStrokePathInstancedNV=GLee_Lazy_glCoverStrokePathInstancedNV; #endif #ifndef GLEE_C_DEFINED_glGetPathParameterivNV #define GLEE_C_DEFINED_glGetPathParameterivNV void __stdcall GLee_Lazy_glGetPathParameterivNV(GLuint path, GLenum pname, GLint * value) {if (GLeeInit()) glGetPathParameterivNV(path, pname, value);} GLEEPFNGLGETPATHPARAMETERIVNVPROC GLeeFuncPtr_glGetPathParameterivNV=GLee_Lazy_glGetPathParameterivNV; #endif #ifndef GLEE_C_DEFINED_glGetPathParameterfvNV #define GLEE_C_DEFINED_glGetPathParameterfvNV void __stdcall GLee_Lazy_glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat * value) {if (GLeeInit()) glGetPathParameterfvNV(path, pname, value);} GLEEPFNGLGETPATHPARAMETERFVNVPROC GLeeFuncPtr_glGetPathParameterfvNV=GLee_Lazy_glGetPathParameterfvNV; #endif #ifndef GLEE_C_DEFINED_glGetPathCommandsNV #define GLEE_C_DEFINED_glGetPathCommandsNV void __stdcall GLee_Lazy_glGetPathCommandsNV(GLuint path, GLubyte * commands) {if (GLeeInit()) glGetPathCommandsNV(path, commands);} GLEEPFNGLGETPATHCOMMANDSNVPROC GLeeFuncPtr_glGetPathCommandsNV=GLee_Lazy_glGetPathCommandsNV; #endif #ifndef GLEE_C_DEFINED_glGetPathCoordsNV #define GLEE_C_DEFINED_glGetPathCoordsNV void __stdcall GLee_Lazy_glGetPathCoordsNV(GLuint path, GLfloat * coords) {if (GLeeInit()) glGetPathCoordsNV(path, coords);} GLEEPFNGLGETPATHCOORDSNVPROC GLeeFuncPtr_glGetPathCoordsNV=GLee_Lazy_glGetPathCoordsNV; #endif #ifndef GLEE_C_DEFINED_glGetPathDashArrayNV #define GLEE_C_DEFINED_glGetPathDashArrayNV void __stdcall GLee_Lazy_glGetPathDashArrayNV(GLuint path, GLfloat * dashArray) {if (GLeeInit()) glGetPathDashArrayNV(path, dashArray);} GLEEPFNGLGETPATHDASHARRAYNVPROC GLeeFuncPtr_glGetPathDashArrayNV=GLee_Lazy_glGetPathDashArrayNV; #endif #ifndef GLEE_C_DEFINED_glGetPathMetricsNV #define GLEE_C_DEFINED_glGetPathMetricsNV void __stdcall GLee_Lazy_glGetPathMetricsNV(GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLsizei stride, GLfloat * metrics) {if (GLeeInit()) glGetPathMetricsNV(metricQueryMask, numPaths, pathNameType, paths, pathBase, stride, metrics);} GLEEPFNGLGETPATHMETRICSNVPROC GLeeFuncPtr_glGetPathMetricsNV=GLee_Lazy_glGetPathMetricsNV; #endif #ifndef GLEE_C_DEFINED_glGetPathMetricRangeNV #define GLEE_C_DEFINED_glGetPathMetricRangeNV void __stdcall GLee_Lazy_glGetPathMetricRangeNV(GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat * metrics) {if (GLeeInit()) glGetPathMetricRangeNV(metricQueryMask, firstPathName, numPaths, stride, metrics);} GLEEPFNGLGETPATHMETRICRANGENVPROC GLeeFuncPtr_glGetPathMetricRangeNV=GLee_Lazy_glGetPathMetricRangeNV; #endif #ifndef GLEE_C_DEFINED_glGetPathSpacingNV #define GLEE_C_DEFINED_glGetPathSpacingNV void __stdcall GLee_Lazy_glGetPathSpacingNV(GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat * returnedSpacing) {if (GLeeInit()) glGetPathSpacingNV(pathListMode, numPaths, pathNameType, paths, pathBase, advanceScale, kerningScale, transformType, returnedSpacing);} GLEEPFNGLGETPATHSPACINGNVPROC GLeeFuncPtr_glGetPathSpacingNV=GLee_Lazy_glGetPathSpacingNV; #endif #ifndef GLEE_C_DEFINED_glGetPathColorGenivNV #define GLEE_C_DEFINED_glGetPathColorGenivNV void __stdcall GLee_Lazy_glGetPathColorGenivNV(GLenum color, GLenum pname, GLint * value) {if (GLeeInit()) glGetPathColorGenivNV(color, pname, value);} GLEEPFNGLGETPATHCOLORGENIVNVPROC GLeeFuncPtr_glGetPathColorGenivNV=GLee_Lazy_glGetPathColorGenivNV; #endif #ifndef GLEE_C_DEFINED_glGetPathColorGenfvNV #define GLEE_C_DEFINED_glGetPathColorGenfvNV void __stdcall GLee_Lazy_glGetPathColorGenfvNV(GLenum color, GLenum pname, GLfloat * value) {if (GLeeInit()) glGetPathColorGenfvNV(color, pname, value);} GLEEPFNGLGETPATHCOLORGENFVNVPROC GLeeFuncPtr_glGetPathColorGenfvNV=GLee_Lazy_glGetPathColorGenfvNV; #endif #ifndef GLEE_C_DEFINED_glGetPathTexGenivNV #define GLEE_C_DEFINED_glGetPathTexGenivNV void __stdcall GLee_Lazy_glGetPathTexGenivNV(GLenum texCoordSet, GLenum pname, GLint * value) {if (GLeeInit()) glGetPathTexGenivNV(texCoordSet, pname, value);} GLEEPFNGLGETPATHTEXGENIVNVPROC GLeeFuncPtr_glGetPathTexGenivNV=GLee_Lazy_glGetPathTexGenivNV; #endif #ifndef GLEE_C_DEFINED_glGetPathTexGenfvNV #define GLEE_C_DEFINED_glGetPathTexGenfvNV void __stdcall GLee_Lazy_glGetPathTexGenfvNV(GLenum texCoordSet, GLenum pname, GLfloat * value) {if (GLeeInit()) glGetPathTexGenfvNV(texCoordSet, pname, value);} GLEEPFNGLGETPATHTEXGENFVNVPROC GLeeFuncPtr_glGetPathTexGenfvNV=GLee_Lazy_glGetPathTexGenfvNV; #endif #ifndef GLEE_C_DEFINED_glIsPointInFillPathNV #define GLEE_C_DEFINED_glIsPointInFillPathNV GLboolean __stdcall GLee_Lazy_glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y) {if (GLeeInit()) return glIsPointInFillPathNV(path, mask, x, y); return (GLboolean)0;} GLEEPFNGLISPOINTINFILLPATHNVPROC GLeeFuncPtr_glIsPointInFillPathNV=GLee_Lazy_glIsPointInFillPathNV; #endif #ifndef GLEE_C_DEFINED_glIsPointInStrokePathNV #define GLEE_C_DEFINED_glIsPointInStrokePathNV GLboolean __stdcall GLee_Lazy_glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y) {if (GLeeInit()) return glIsPointInStrokePathNV(path, x, y); return (GLboolean)0;} GLEEPFNGLISPOINTINSTROKEPATHNVPROC GLeeFuncPtr_glIsPointInStrokePathNV=GLee_Lazy_glIsPointInStrokePathNV; #endif #ifndef GLEE_C_DEFINED_glGetPathLengthNV #define GLEE_C_DEFINED_glGetPathLengthNV GLfloat __stdcall GLee_Lazy_glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments) {if (GLeeInit()) return glGetPathLengthNV(path, startSegment, numSegments); return (GLfloat)0;} GLEEPFNGLGETPATHLENGTHNVPROC GLeeFuncPtr_glGetPathLengthNV=GLee_Lazy_glGetPathLengthNV; #endif #ifndef GLEE_C_DEFINED_glPointAlongPathNV #define GLEE_C_DEFINED_glPointAlongPathNV GLboolean __stdcall GLee_Lazy_glPointAlongPathNV(GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat * x, GLfloat * y, GLfloat * tangentX, GLfloat * tangentY) {if (GLeeInit()) return glPointAlongPathNV(path, startSegment, numSegments, distance, x, y, tangentX, tangentY); return (GLboolean)0;} GLEEPFNGLPOINTALONGPATHNVPROC GLeeFuncPtr_glPointAlongPathNV=GLee_Lazy_glPointAlongPathNV; #endif #endif /* GL_AMD_pinned_memory */ #ifdef __GLEE_GL_AMD_pinned_memory #endif /* GL_AMD_stencil_operation_extended */ #ifdef __GLEE_GL_AMD_stencil_operation_extended #ifndef GLEE_C_DEFINED_glStencilOpValueAMD #define GLEE_C_DEFINED_glStencilOpValueAMD void __stdcall GLee_Lazy_glStencilOpValueAMD(GLenum face, GLuint value) {if (GLeeInit()) glStencilOpValueAMD(face, value);} GLEEPFNGLSTENCILOPVALUEAMDPROC GLeeFuncPtr_glStencilOpValueAMD=GLee_Lazy_glStencilOpValueAMD; #endif #endif /* GL_AMD_vertex_shader_viewport_index */ #ifdef __GLEE_GL_AMD_vertex_shader_viewport_index #endif /* GL_AMD_vertex_shader_layer */ #ifdef __GLEE_GL_AMD_vertex_shader_layer #endif /* GL_NV_bindless_texture */ #ifdef __GLEE_GL_NV_bindless_texture #ifndef GLEE_C_DEFINED_glGetTextureHandleNV #define GLEE_C_DEFINED_glGetTextureHandleNV GLuint64 __stdcall GLee_Lazy_glGetTextureHandleNV(GLuint texture) {if (GLeeInit()) return glGetTextureHandleNV(texture); return (GLuint64)0;} GLEEPFNGLGETTEXTUREHANDLENVPROC GLeeFuncPtr_glGetTextureHandleNV=GLee_Lazy_glGetTextureHandleNV; #endif #ifndef GLEE_C_DEFINED_glGetTextureSamplerHandleNV #define GLEE_C_DEFINED_glGetTextureSamplerHandleNV GLuint64 __stdcall GLee_Lazy_glGetTextureSamplerHandleNV(GLuint texture, GLuint sampler) {if (GLeeInit()) return glGetTextureSamplerHandleNV(texture, sampler); return (GLuint64)0;} GLEEPFNGLGETTEXTURESAMPLERHANDLENVPROC GLeeFuncPtr_glGetTextureSamplerHandleNV=GLee_Lazy_glGetTextureSamplerHandleNV; #endif #ifndef GLEE_C_DEFINED_glMakeTextureHandleResidentNV #define GLEE_C_DEFINED_glMakeTextureHandleResidentNV void __stdcall GLee_Lazy_glMakeTextureHandleResidentNV(GLuint64 handle) {if (GLeeInit()) glMakeTextureHandleResidentNV(handle);} GLEEPFNGLMAKETEXTUREHANDLERESIDENTNVPROC GLeeFuncPtr_glMakeTextureHandleResidentNV=GLee_Lazy_glMakeTextureHandleResidentNV; #endif #ifndef GLEE_C_DEFINED_glMakeTextureHandleNonResidentNV #define GLEE_C_DEFINED_glMakeTextureHandleNonResidentNV void __stdcall GLee_Lazy_glMakeTextureHandleNonResidentNV(GLuint64 handle) {if (GLeeInit()) glMakeTextureHandleNonResidentNV(handle);} GLEEPFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC GLeeFuncPtr_glMakeTextureHandleNonResidentNV=GLee_Lazy_glMakeTextureHandleNonResidentNV; #endif #ifndef GLEE_C_DEFINED_glGetImageHandleNV #define GLEE_C_DEFINED_glGetImageHandleNV GLuint64 __stdcall GLee_Lazy_glGetImageHandleNV(GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format) {if (GLeeInit()) return glGetImageHandleNV(texture, level, layered, layer, format); return (GLuint64)0;} GLEEPFNGLGETIMAGEHANDLENVPROC GLeeFuncPtr_glGetImageHandleNV=GLee_Lazy_glGetImageHandleNV; #endif #ifndef GLEE_C_DEFINED_glMakeImageHandleResidentNV #define GLEE_C_DEFINED_glMakeImageHandleResidentNV void __stdcall GLee_Lazy_glMakeImageHandleResidentNV(GLuint64 handle, GLenum access) {if (GLeeInit()) glMakeImageHandleResidentNV(handle, access);} GLEEPFNGLMAKEIMAGEHANDLERESIDENTNVPROC GLeeFuncPtr_glMakeImageHandleResidentNV=GLee_Lazy_glMakeImageHandleResidentNV; #endif #ifndef GLEE_C_DEFINED_glMakeImageHandleNonResidentNV #define GLEE_C_DEFINED_glMakeImageHandleNonResidentNV void __stdcall GLee_Lazy_glMakeImageHandleNonResidentNV(GLuint64 handle) {if (GLeeInit()) glMakeImageHandleNonResidentNV(handle);} GLEEPFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC GLeeFuncPtr_glMakeImageHandleNonResidentNV=GLee_Lazy_glMakeImageHandleNonResidentNV; #endif #ifndef GLEE_C_DEFINED_glUniformHandleui64NV #define GLEE_C_DEFINED_glUniformHandleui64NV void __stdcall GLee_Lazy_glUniformHandleui64NV(GLint location, GLuint64 value) {if (GLeeInit()) glUniformHandleui64NV(location, value);} GLEEPFNGLUNIFORMHANDLEUI64NVPROC GLeeFuncPtr_glUniformHandleui64NV=GLee_Lazy_glUniformHandleui64NV; #endif #ifndef GLEE_C_DEFINED_glUniformHandleui64vNV #define GLEE_C_DEFINED_glUniformHandleui64vNV void __stdcall GLee_Lazy_glUniformHandleui64vNV(GLint location, GLsizei count, const GLuint64 * value) {if (GLeeInit()) glUniformHandleui64vNV(location, count, value);} GLEEPFNGLUNIFORMHANDLEUI64VNVPROC GLeeFuncPtr_glUniformHandleui64vNV=GLee_Lazy_glUniformHandleui64vNV; #endif #ifndef GLEE_C_DEFINED_glProgramUniformHandleui64NV #define GLEE_C_DEFINED_glProgramUniformHandleui64NV void __stdcall GLee_Lazy_glProgramUniformHandleui64NV(GLuint program, GLint location, GLuint64 value) {if (GLeeInit()) glProgramUniformHandleui64NV(program, location, value);} GLEEPFNGLPROGRAMUNIFORMHANDLEUI64NVPROC GLeeFuncPtr_glProgramUniformHandleui64NV=GLee_Lazy_glProgramUniformHandleui64NV; #endif #ifndef GLEE_C_DEFINED_glProgramUniformHandleui64vNV #define GLEE_C_DEFINED_glProgramUniformHandleui64vNV void __stdcall GLee_Lazy_glProgramUniformHandleui64vNV(GLuint program, GLint location, GLsizei count, const GLuint64 * values) {if (GLeeInit()) glProgramUniformHandleui64vNV(program, location, count, values);} GLEEPFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC GLeeFuncPtr_glProgramUniformHandleui64vNV=GLee_Lazy_glProgramUniformHandleui64vNV; #endif #ifndef GLEE_C_DEFINED_glIsTextureHandleResidentNV #define GLEE_C_DEFINED_glIsTextureHandleResidentNV GLboolean __stdcall GLee_Lazy_glIsTextureHandleResidentNV(GLuint64 handle) {if (GLeeInit()) return glIsTextureHandleResidentNV(handle); return (GLboolean)0;} GLEEPFNGLISTEXTUREHANDLERESIDENTNVPROC GLeeFuncPtr_glIsTextureHandleResidentNV=GLee_Lazy_glIsTextureHandleResidentNV; #endif #ifndef GLEE_C_DEFINED_glIsImageHandleResidentNV #define GLEE_C_DEFINED_glIsImageHandleResidentNV GLboolean __stdcall GLee_Lazy_glIsImageHandleResidentNV(GLuint64 handle) {if (GLeeInit()) return glIsImageHandleResidentNV(handle); return (GLboolean)0;} GLEEPFNGLISIMAGEHANDLERESIDENTNVPROC GLeeFuncPtr_glIsImageHandleResidentNV=GLee_Lazy_glIsImageHandleResidentNV; #endif #endif /* GL_NV_shader_atomic_float */ #ifdef __GLEE_GL_NV_shader_atomic_float #endif /* GL_AMD_query_buffer_object */ #ifdef __GLEE_GL_AMD_query_buffer_object #endif /* GL_NV_compute_program5 */ #ifdef __GLEE_GL_NV_compute_program5 #endif /* GL_NV_shader_storage_buffer_object */ #ifdef __GLEE_GL_NV_shader_storage_buffer_object #endif /* GL_NV_shader_atomic_counters */ #ifdef __GLEE_GL_NV_shader_atomic_counters #endif /* GL_NV_deep_texture3D */ #ifdef __GLEE_GL_NV_deep_texture3D #endif /* GL_NVX_conditional_render */ #ifdef __GLEE_GL_NVX_conditional_render #ifndef GLEE_C_DEFINED_glBeginConditionalRenderNVX #define GLEE_C_DEFINED_glBeginConditionalRenderNVX void __stdcall GLee_Lazy_glBeginConditionalRenderNVX(GLuint id) {if (GLeeInit()) glBeginConditionalRenderNVX(id);} GLEEPFNGLBEGINCONDITIONALRENDERNVXPROC GLeeFuncPtr_glBeginConditionalRenderNVX=GLee_Lazy_glBeginConditionalRenderNVX; #endif #ifndef GLEE_C_DEFINED_glEndConditionalRenderNVX #define GLEE_C_DEFINED_glEndConditionalRenderNVX void __stdcall GLee_Lazy_glEndConditionalRenderNVX(void) {if (GLeeInit()) glEndConditionalRenderNVX();} GLEEPFNGLENDCONDITIONALRENDERNVXPROC GLeeFuncPtr_glEndConditionalRenderNVX=GLee_Lazy_glEndConditionalRenderNVX; #endif #endif /* GL_AMD_sparse_texture */ #ifdef __GLEE_GL_AMD_sparse_texture #ifndef GLEE_C_DEFINED_glTexStorageSparseAMD #define GLEE_C_DEFINED_glTexStorageSparseAMD void __stdcall GLee_Lazy_glTexStorageSparseAMD(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags) {if (GLeeInit()) glTexStorageSparseAMD(target, internalFormat, width, height, depth, layers, flags);} GLEEPFNGLTEXSTORAGESPARSEAMDPROC GLeeFuncPtr_glTexStorageSparseAMD=GLee_Lazy_glTexStorageSparseAMD; #endif #ifndef GLEE_C_DEFINED_glTextureStorageSparseAMD #define GLEE_C_DEFINED_glTextureStorageSparseAMD void __stdcall GLee_Lazy_glTextureStorageSparseAMD(GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags) {if (GLeeInit()) glTextureStorageSparseAMD(texture, target, internalFormat, width, height, depth, layers, flags);} GLEEPFNGLTEXTURESTORAGESPARSEAMDPROC GLeeFuncPtr_glTextureStorageSparseAMD=GLee_Lazy_glTextureStorageSparseAMD; #endif #endif /* GL_AMD_shader_trinary_minmax */ #ifdef __GLEE_GL_AMD_shader_trinary_minmax #endif /* GL_INTEL_map_texture */ #ifdef __GLEE_GL_INTEL_map_texture #ifndef GLEE_C_DEFINED_glSyncTextureINTEL #define GLEE_C_DEFINED_glSyncTextureINTEL void __stdcall GLee_Lazy_glSyncTextureINTEL(GLuint texture) {if (GLeeInit()) glSyncTextureINTEL(texture);} GLEEPFNGLSYNCTEXTUREINTELPROC GLeeFuncPtr_glSyncTextureINTEL=GLee_Lazy_glSyncTextureINTEL; #endif #ifndef GLEE_C_DEFINED_glUnmapTexture2DINTEL #define GLEE_C_DEFINED_glUnmapTexture2DINTEL void __stdcall GLee_Lazy_glUnmapTexture2DINTEL(GLuint texture, GLint level) {if (GLeeInit()) glUnmapTexture2DINTEL(texture, level);} GLEEPFNGLUNMAPTEXTURE2DINTELPROC GLeeFuncPtr_glUnmapTexture2DINTEL=GLee_Lazy_glUnmapTexture2DINTEL; #endif #ifndef GLEE_C_DEFINED_glMapTexture2DINTEL #define GLEE_C_DEFINED_glMapTexture2DINTEL GLvoid* __stdcall GLee_Lazy_glMapTexture2DINTEL(GLuint texture, GLint level, GLbitfield access, const GLint * stride, const GLenum * layout) {if (GLeeInit()) return glMapTexture2DINTEL(texture, level, access, stride, layout); return (GLvoid*)0;} GLEEPFNGLMAPTEXTURE2DINTELPROC GLeeFuncPtr_glMapTexture2DINTEL=GLee_Lazy_glMapTexture2DINTEL; #endif #endif /* GL_NV_draw_texture */ #ifdef __GLEE_GL_NV_draw_texture #ifndef GLEE_C_DEFINED_glDrawTextureNV #define GLEE_C_DEFINED_glDrawTextureNV void __stdcall GLee_Lazy_glDrawTextureNV(GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1) {if (GLeeInit()) glDrawTextureNV(texture, sampler, x0, y0, x1, y1, z, s0, t0, s1, t1);} GLEEPFNGLDRAWTEXTURENVPROC GLeeFuncPtr_glDrawTextureNV=GLee_Lazy_glDrawTextureNV; #endif #endif /* GL_SGIX_texture_select */ #ifdef __GLEE_GL_SGIX_texture_select #endif /* GL_INGR_blend_func_separate */ #ifdef __GLEE_GL_INGR_blend_func_separate #ifndef GLEE_C_DEFINED_glBlendFuncSeparateINGR #define GLEE_C_DEFINED_glBlendFuncSeparateINGR void __stdcall GLee_Lazy_glBlendFuncSeparateINGR(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) {if (GLeeInit()) glBlendFuncSeparateINGR(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);} GLEEPFNGLBLENDFUNCSEPARATEINGRPROC GLeeFuncPtr_glBlendFuncSeparateINGR=GLee_Lazy_glBlendFuncSeparateINGR; #endif #endif /* GL_SGIX_depth_pass_instrument */ #ifdef __GLEE_GL_SGIX_depth_pass_instrument #endif /* GL_SGIX_igloo_interface */ #ifdef __GLEE_GL_SGIX_igloo_interface #ifndef GLEE_C_DEFINED_glIglooInterfaceSGIX #define GLEE_C_DEFINED_glIglooInterfaceSGIX void __stdcall GLee_Lazy_glIglooInterfaceSGIX(GLenum pname, const GLvoid * params) {if (GLeeInit()) glIglooInterfaceSGIX(pname, params);} GLEEPFNGLIGLOOINTERFACESGIXPROC GLeeFuncPtr_glIglooInterfaceSGIX=GLee_Lazy_glIglooInterfaceSGIX; #endif #endif /* WGL */ #ifdef _WIN32 /* Extension querying variables */ GLboolean _GLEE_WGL_ARB_buffer_region = GL_FALSE; GLboolean _GLEE_WGL_ARB_multisample = GL_FALSE; GLboolean _GLEE_WGL_ARB_extensions_string = GL_FALSE; GLboolean _GLEE_WGL_ARB_pixel_format = GL_FALSE; GLboolean _GLEE_WGL_ARB_make_current_read = GL_FALSE; GLboolean _GLEE_WGL_ARB_pbuffer = GL_FALSE; GLboolean _GLEE_WGL_ARB_render_texture = GL_FALSE; GLboolean _GLEE_WGL_ARB_pixel_format_float = GL_FALSE; GLboolean _GLEE_WGL_ARB_framebuffer_sRGB = GL_FALSE; GLboolean _GLEE_WGL_ARB_create_context = GL_FALSE; GLboolean _GLEE_WGL_ARB_create_context_profile = GL_FALSE; GLboolean _GLEE_WGL_ARB_create_context_robustness = GL_FALSE; GLboolean _GLEE_WGL_EXT_make_current_read = GL_FALSE; GLboolean _GLEE_WGL_EXT_pixel_format = GL_FALSE; GLboolean _GLEE_WGL_EXT_pbuffer = GL_FALSE; GLboolean _GLEE_WGL_EXT_depth_float = GL_FALSE; GLboolean _GLEE_WGL_3DFX_multisample = GL_FALSE; GLboolean _GLEE_WGL_EXT_multisample = GL_FALSE; GLboolean _GLEE_WGL_I3D_digital_video_control = GL_FALSE; GLboolean _GLEE_WGL_I3D_gamma = GL_FALSE; GLboolean _GLEE_WGL_I3D_genlock = GL_FALSE; GLboolean _GLEE_WGL_I3D_image_buffer = GL_FALSE; GLboolean _GLEE_WGL_I3D_swap_frame_lock = GL_FALSE; GLboolean _GLEE_WGL_NV_render_depth_texture = GL_FALSE; GLboolean _GLEE_WGL_NV_render_texture_rectangle = GL_FALSE; GLboolean _GLEE_WGL_ATI_pixel_format_float = GL_FALSE; GLboolean _GLEE_WGL_NV_float_buffer = GL_FALSE; GLboolean _GLEE_WGL_3DL_stereo_control = GL_FALSE; GLboolean _GLEE_WGL_EXT_pixel_format_packed_float = GL_FALSE; GLboolean _GLEE_WGL_EXT_framebuffer_sRGB = GL_FALSE; GLboolean _GLEE_WGL_NV_present_video = GL_FALSE; GLboolean _GLEE_WGL_NV_swap_group = GL_FALSE; GLboolean _GLEE_WGL_NV_gpu_affinity = GL_FALSE; GLboolean _GLEE_WGL_AMD_gpu_association = GL_FALSE; GLboolean _GLEE_WGL_NV_copy_image = GL_FALSE; GLboolean _GLEE_WGL_NV_multisample_coverage = GL_FALSE; GLboolean _GLEE_WGL_EXT_create_context_es2_profile = GL_FALSE; GLboolean _GLEE_WGL_NV_DX_interop = GL_FALSE; GLboolean _GLEE_WGL_NV_DX_interop2 = GL_FALSE; GLboolean _GLEE_WGL_EXT_swap_control_tear = GL_FALSE; GLboolean _GLEE_WGL_EXT_display_color_table = GL_FALSE; GLboolean _GLEE_WGL_EXT_extensions_string = GL_FALSE; GLboolean _GLEE_WGL_EXT_swap_control = GL_FALSE; GLboolean _GLEE_WGL_NV_vertex_array_range = GL_FALSE; GLboolean _GLEE_WGL_OML_sync_control = GL_FALSE; GLboolean _GLEE_WGL_I3D_swap_frame_usage = GL_FALSE; GLboolean _GLEE_WGL_NV_video_output = GL_FALSE; /* WGL Extension names */ char __GLeeWGLExtensionNames[47][35]={ "WGL_ARB_buffer_region", "WGL_ARB_multisample", "WGL_ARB_extensions_string", "WGL_ARB_pixel_format", "WGL_ARB_make_current_read", "WGL_ARB_pbuffer", "WGL_ARB_render_texture", "WGL_ARB_pixel_format_float", "WGL_ARB_framebuffer_sRGB", "WGL_ARB_create_context", "WGL_ARB_create_context_profile", "WGL_ARB_create_context_robustness", "WGL_EXT_make_current_read", "WGL_EXT_pixel_format", "WGL_EXT_pbuffer", "WGL_EXT_depth_float", "WGL_3DFX_multisample", "WGL_EXT_multisample", "WGL_I3D_digital_video_control", "WGL_I3D_gamma", "WGL_I3D_genlock", "WGL_I3D_image_buffer", "WGL_I3D_swap_frame_lock", "WGL_NV_render_depth_texture", "WGL_NV_render_texture_rectangle", "WGL_ATI_pixel_format_float", "WGL_NV_float_buffer", "WGL_3DL_stereo_control", "WGL_EXT_pixel_format_packed_float", "WGL_EXT_framebuffer_sRGB", "WGL_NV_present_video", "WGL_NV_swap_group", "WGL_NV_gpu_affinity", "WGL_AMD_gpu_association", "WGL_NV_copy_image", "WGL_NV_multisample_coverage", "WGL_EXT_create_context_es2_profile", "WGL_NV_DX_interop", "WGL_NV_DX_interop2", "WGL_EXT_swap_control_tear", "WGL_EXT_display_color_table", "WGL_EXT_extensions_string", "WGL_EXT_swap_control", "WGL_NV_vertex_array_range", "WGL_OML_sync_control", "WGL_I3D_swap_frame_usage", "WGL_NV_video_output" }; int __GLeeWGLNumExtensions=47; /* WGL_ARB_buffer_region */ #ifdef __GLEE_WGL_ARB_buffer_region #ifndef GLEE_C_DEFINED_wglCreateBufferRegionARB #define GLEE_C_DEFINED_wglCreateBufferRegionARB HANDLE __stdcall GLee_Lazy_wglCreateBufferRegionARB(HDC hDC, int iLayerPlane, UINT uType) {if (GLeeInit()) return wglCreateBufferRegionARB(hDC, iLayerPlane, uType); return (HANDLE)0;} GLEEPFNWGLCREATEBUFFERREGIONARBPROC GLeeFuncPtr_wglCreateBufferRegionARB=GLee_Lazy_wglCreateBufferRegionARB; #endif #ifndef GLEE_C_DEFINED_wglDeleteBufferRegionARB #define GLEE_C_DEFINED_wglDeleteBufferRegionARB VOID __stdcall GLee_Lazy_wglDeleteBufferRegionARB(HANDLE hRegion) {if (GLeeInit()) wglDeleteBufferRegionARB(hRegion);} GLEEPFNWGLDELETEBUFFERREGIONARBPROC GLeeFuncPtr_wglDeleteBufferRegionARB=GLee_Lazy_wglDeleteBufferRegionARB; #endif #ifndef GLEE_C_DEFINED_wglSaveBufferRegionARB #define GLEE_C_DEFINED_wglSaveBufferRegionARB BOOL __stdcall GLee_Lazy_wglSaveBufferRegionARB(HANDLE hRegion, int x, int y, int width, int height) {if (GLeeInit()) return wglSaveBufferRegionARB(hRegion, x, y, width, height); return (BOOL)0;} GLEEPFNWGLSAVEBUFFERREGIONARBPROC GLeeFuncPtr_wglSaveBufferRegionARB=GLee_Lazy_wglSaveBufferRegionARB; #endif #ifndef GLEE_C_DEFINED_wglRestoreBufferRegionARB #define GLEE_C_DEFINED_wglRestoreBufferRegionARB BOOL __stdcall GLee_Lazy_wglRestoreBufferRegionARB(HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc) {if (GLeeInit()) return wglRestoreBufferRegionARB(hRegion, x, y, width, height, xSrc, ySrc); return (BOOL)0;} GLEEPFNWGLRESTOREBUFFERREGIONARBPROC GLeeFuncPtr_wglRestoreBufferRegionARB=GLee_Lazy_wglRestoreBufferRegionARB; #endif #endif /* WGL_ARB_multisample */ #ifdef __GLEE_WGL_ARB_multisample #endif /* WGL_ARB_extensions_string */ #ifdef __GLEE_WGL_ARB_extensions_string #ifndef GLEE_C_DEFINED_wglGetExtensionsStringARB #define GLEE_C_DEFINED_wglGetExtensionsStringARB const char * __stdcall GLee_Lazy_wglGetExtensionsStringARB(HDC hdc) {if (GLeeInit()) return wglGetExtensionsStringARB(hdc); return (const char *)0;} GLEEPFNWGLGETEXTENSIONSSTRINGARBPROC GLeeFuncPtr_wglGetExtensionsStringARB=GLee_Lazy_wglGetExtensionsStringARB; #endif #endif /* WGL_ARB_pixel_format */ #ifdef __GLEE_WGL_ARB_pixel_format #ifndef GLEE_C_DEFINED_wglGetPixelFormatAttribivARB #define GLEE_C_DEFINED_wglGetPixelFormatAttribivARB BOOL __stdcall GLee_Lazy_wglGetPixelFormatAttribivARB(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int * piAttributes, int * piValues) {if (GLeeInit()) return wglGetPixelFormatAttribivARB(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, piValues); return (BOOL)0;} GLEEPFNWGLGETPIXELFORMATATTRIBIVARBPROC GLeeFuncPtr_wglGetPixelFormatAttribivARB=GLee_Lazy_wglGetPixelFormatAttribivARB; #endif #ifndef GLEE_C_DEFINED_wglGetPixelFormatAttribfvARB #define GLEE_C_DEFINED_wglGetPixelFormatAttribfvARB BOOL __stdcall GLee_Lazy_wglGetPixelFormatAttribfvARB(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int * piAttributes, FLOAT * pfValues) {if (GLeeInit()) return wglGetPixelFormatAttribfvARB(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, pfValues); return (BOOL)0;} GLEEPFNWGLGETPIXELFORMATATTRIBFVARBPROC GLeeFuncPtr_wglGetPixelFormatAttribfvARB=GLee_Lazy_wglGetPixelFormatAttribfvARB; #endif #ifndef GLEE_C_DEFINED_wglChoosePixelFormatARB #define GLEE_C_DEFINED_wglChoosePixelFormatARB BOOL __stdcall GLee_Lazy_wglChoosePixelFormatARB(HDC hdc, const int * piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int * piFormats, UINT * nNumFormats) {if (GLeeInit()) return wglChoosePixelFormatARB(hdc, piAttribIList, pfAttribFList, nMaxFormats, piFormats, nNumFormats); return (BOOL)0;} GLEEPFNWGLCHOOSEPIXELFORMATARBPROC GLeeFuncPtr_wglChoosePixelFormatARB=GLee_Lazy_wglChoosePixelFormatARB; #endif #endif /* WGL_ARB_make_current_read */ #ifdef __GLEE_WGL_ARB_make_current_read #ifndef GLEE_C_DEFINED_wglMakeContextCurrentARB #define GLEE_C_DEFINED_wglMakeContextCurrentARB BOOL __stdcall GLee_Lazy_wglMakeContextCurrentARB(HDC hDrawDC, HDC hReadDC, HGLRC hglrc) {if (GLeeInit()) return wglMakeContextCurrentARB(hDrawDC, hReadDC, hglrc); return (BOOL)0;} GLEEPFNWGLMAKECONTEXTCURRENTARBPROC GLeeFuncPtr_wglMakeContextCurrentARB=GLee_Lazy_wglMakeContextCurrentARB; #endif #ifndef GLEE_C_DEFINED_wglGetCurrentReadDCARB #define GLEE_C_DEFINED_wglGetCurrentReadDCARB HDC __stdcall GLee_Lazy_wglGetCurrentReadDCARB(void) {if (GLeeInit()) return wglGetCurrentReadDCARB(); return (HDC)0;} GLEEPFNWGLGETCURRENTREADDCARBPROC GLeeFuncPtr_wglGetCurrentReadDCARB=GLee_Lazy_wglGetCurrentReadDCARB; #endif #endif /* WGL_ARB_pbuffer */ #ifdef __GLEE_WGL_ARB_pbuffer #ifndef GLEE_C_DEFINED_wglCreatePbufferARB #define GLEE_C_DEFINED_wglCreatePbufferARB HPBUFFERARB __stdcall GLee_Lazy_wglCreatePbufferARB(HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int * piAttribList) {if (GLeeInit()) return wglCreatePbufferARB(hDC, iPixelFormat, iWidth, iHeight, piAttribList); return (HPBUFFERARB)0;} GLEEPFNWGLCREATEPBUFFERARBPROC GLeeFuncPtr_wglCreatePbufferARB=GLee_Lazy_wglCreatePbufferARB; #endif #ifndef GLEE_C_DEFINED_wglGetPbufferDCARB #define GLEE_C_DEFINED_wglGetPbufferDCARB HDC __stdcall GLee_Lazy_wglGetPbufferDCARB(HPBUFFERARB hPbuffer) {if (GLeeInit()) return wglGetPbufferDCARB(hPbuffer); return (HDC)0;} GLEEPFNWGLGETPBUFFERDCARBPROC GLeeFuncPtr_wglGetPbufferDCARB=GLee_Lazy_wglGetPbufferDCARB; #endif #ifndef GLEE_C_DEFINED_wglReleasePbufferDCARB #define GLEE_C_DEFINED_wglReleasePbufferDCARB int __stdcall GLee_Lazy_wglReleasePbufferDCARB(HPBUFFERARB hPbuffer, HDC hDC) {if (GLeeInit()) return wglReleasePbufferDCARB(hPbuffer, hDC); return (int)0;} GLEEPFNWGLRELEASEPBUFFERDCARBPROC GLeeFuncPtr_wglReleasePbufferDCARB=GLee_Lazy_wglReleasePbufferDCARB; #endif #ifndef GLEE_C_DEFINED_wglDestroyPbufferARB #define GLEE_C_DEFINED_wglDestroyPbufferARB BOOL __stdcall GLee_Lazy_wglDestroyPbufferARB(HPBUFFERARB hPbuffer) {if (GLeeInit()) return wglDestroyPbufferARB(hPbuffer); return (BOOL)0;} GLEEPFNWGLDESTROYPBUFFERARBPROC GLeeFuncPtr_wglDestroyPbufferARB=GLee_Lazy_wglDestroyPbufferARB; #endif #ifndef GLEE_C_DEFINED_wglQueryPbufferARB #define GLEE_C_DEFINED_wglQueryPbufferARB BOOL __stdcall GLee_Lazy_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAttribute, int * piValue) {if (GLeeInit()) return wglQueryPbufferARB(hPbuffer, iAttribute, piValue); return (BOOL)0;} GLEEPFNWGLQUERYPBUFFERARBPROC GLeeFuncPtr_wglQueryPbufferARB=GLee_Lazy_wglQueryPbufferARB; #endif #endif /* WGL_ARB_render_texture */ #ifdef __GLEE_WGL_ARB_render_texture #ifndef GLEE_C_DEFINED_wglBindTexImageARB #define GLEE_C_DEFINED_wglBindTexImageARB BOOL __stdcall GLee_Lazy_wglBindTexImageARB(HPBUFFERARB hPbuffer, int iBuffer) {if (GLeeInit()) return wglBindTexImageARB(hPbuffer, iBuffer); return (BOOL)0;} GLEEPFNWGLBINDTEXIMAGEARBPROC GLeeFuncPtr_wglBindTexImageARB=GLee_Lazy_wglBindTexImageARB; #endif #ifndef GLEE_C_DEFINED_wglReleaseTexImageARB #define GLEE_C_DEFINED_wglReleaseTexImageARB BOOL __stdcall GLee_Lazy_wglReleaseTexImageARB(HPBUFFERARB hPbuffer, int iBuffer) {if (GLeeInit()) return wglReleaseTexImageARB(hPbuffer, iBuffer); return (BOOL)0;} GLEEPFNWGLRELEASETEXIMAGEARBPROC GLeeFuncPtr_wglReleaseTexImageARB=GLee_Lazy_wglReleaseTexImageARB; #endif #ifndef GLEE_C_DEFINED_wglSetPbufferAttribARB #define GLEE_C_DEFINED_wglSetPbufferAttribARB BOOL __stdcall GLee_Lazy_wglSetPbufferAttribARB(HPBUFFERARB hPbuffer, const int * piAttribList) {if (GLeeInit()) return wglSetPbufferAttribARB(hPbuffer, piAttribList); return (BOOL)0;} GLEEPFNWGLSETPBUFFERATTRIBARBPROC GLeeFuncPtr_wglSetPbufferAttribARB=GLee_Lazy_wglSetPbufferAttribARB; #endif #endif /* WGL_ARB_pixel_format_float */ #ifdef __GLEE_WGL_ARB_pixel_format_float #endif /* WGL_ARB_framebuffer_sRGB */ #ifdef __GLEE_WGL_ARB_framebuffer_sRGB #endif /* WGL_ARB_create_context */ #ifdef __GLEE_WGL_ARB_create_context #ifndef GLEE_C_DEFINED_wglCreateContextAttribsARB #define GLEE_C_DEFINED_wglCreateContextAttribsARB HGLRC __stdcall GLee_Lazy_wglCreateContextAttribsARB(HDC hDC, HGLRC hShareContext, const int * attribList) {if (GLeeInit()) return wglCreateContextAttribsARB(hDC, hShareContext, attribList); return (HGLRC)0;} GLEEPFNWGLCREATECONTEXTATTRIBSARBPROC GLeeFuncPtr_wglCreateContextAttribsARB=GLee_Lazy_wglCreateContextAttribsARB; #endif #endif /* WGL_ARB_create_context_profile */ #ifdef __GLEE_WGL_ARB_create_context_profile #endif /* WGL_ARB_create_context_robustness */ #ifdef __GLEE_WGL_ARB_create_context_robustness #endif /* WGL_EXT_make_current_read */ #ifdef __GLEE_WGL_EXT_make_current_read #ifndef GLEE_C_DEFINED_wglMakeContextCurrentEXT #define GLEE_C_DEFINED_wglMakeContextCurrentEXT BOOL __stdcall GLee_Lazy_wglMakeContextCurrentEXT(HDC hDrawDC, HDC hReadDC, HGLRC hglrc) {if (GLeeInit()) return wglMakeContextCurrentEXT(hDrawDC, hReadDC, hglrc); return (BOOL)0;} GLEEPFNWGLMAKECONTEXTCURRENTEXTPROC GLeeFuncPtr_wglMakeContextCurrentEXT=GLee_Lazy_wglMakeContextCurrentEXT; #endif #ifndef GLEE_C_DEFINED_wglGetCurrentReadDCEXT #define GLEE_C_DEFINED_wglGetCurrentReadDCEXT HDC __stdcall GLee_Lazy_wglGetCurrentReadDCEXT(void) {if (GLeeInit()) return wglGetCurrentReadDCEXT(); return (HDC)0;} GLEEPFNWGLGETCURRENTREADDCEXTPROC GLeeFuncPtr_wglGetCurrentReadDCEXT=GLee_Lazy_wglGetCurrentReadDCEXT; #endif #endif /* WGL_EXT_pixel_format */ #ifdef __GLEE_WGL_EXT_pixel_format #ifndef GLEE_C_DEFINED_wglGetPixelFormatAttribivEXT #define GLEE_C_DEFINED_wglGetPixelFormatAttribivEXT BOOL __stdcall GLee_Lazy_wglGetPixelFormatAttribivEXT(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int * piAttributes, int * piValues) {if (GLeeInit()) return wglGetPixelFormatAttribivEXT(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, piValues); return (BOOL)0;} GLEEPFNWGLGETPIXELFORMATATTRIBIVEXTPROC GLeeFuncPtr_wglGetPixelFormatAttribivEXT=GLee_Lazy_wglGetPixelFormatAttribivEXT; #endif #ifndef GLEE_C_DEFINED_wglGetPixelFormatAttribfvEXT #define GLEE_C_DEFINED_wglGetPixelFormatAttribfvEXT BOOL __stdcall GLee_Lazy_wglGetPixelFormatAttribfvEXT(HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int * piAttributes, FLOAT * pfValues) {if (GLeeInit()) return wglGetPixelFormatAttribfvEXT(hdc, iPixelFormat, iLayerPlane, nAttributes, piAttributes, pfValues); return (BOOL)0;} GLEEPFNWGLGETPIXELFORMATATTRIBFVEXTPROC GLeeFuncPtr_wglGetPixelFormatAttribfvEXT=GLee_Lazy_wglGetPixelFormatAttribfvEXT; #endif #ifndef GLEE_C_DEFINED_wglChoosePixelFormatEXT #define GLEE_C_DEFINED_wglChoosePixelFormatEXT BOOL __stdcall GLee_Lazy_wglChoosePixelFormatEXT(HDC hdc, const int * piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int * piFormats, UINT * nNumFormats) {if (GLeeInit()) return wglChoosePixelFormatEXT(hdc, piAttribIList, pfAttribFList, nMaxFormats, piFormats, nNumFormats); return (BOOL)0;} GLEEPFNWGLCHOOSEPIXELFORMATEXTPROC GLeeFuncPtr_wglChoosePixelFormatEXT=GLee_Lazy_wglChoosePixelFormatEXT; #endif #endif /* WGL_EXT_pbuffer */ #ifdef __GLEE_WGL_EXT_pbuffer #ifndef GLEE_C_DEFINED_wglCreatePbufferEXT #define GLEE_C_DEFINED_wglCreatePbufferEXT HPBUFFEREXT __stdcall GLee_Lazy_wglCreatePbufferEXT(HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int * piAttribList) {if (GLeeInit()) return wglCreatePbufferEXT(hDC, iPixelFormat, iWidth, iHeight, piAttribList); return (HPBUFFEREXT)0;} GLEEPFNWGLCREATEPBUFFEREXTPROC GLeeFuncPtr_wglCreatePbufferEXT=GLee_Lazy_wglCreatePbufferEXT; #endif #ifndef GLEE_C_DEFINED_wglGetPbufferDCEXT #define GLEE_C_DEFINED_wglGetPbufferDCEXT HDC __stdcall GLee_Lazy_wglGetPbufferDCEXT(HPBUFFEREXT hPbuffer) {if (GLeeInit()) return wglGetPbufferDCEXT(hPbuffer); return (HDC)0;} GLEEPFNWGLGETPBUFFERDCEXTPROC GLeeFuncPtr_wglGetPbufferDCEXT=GLee_Lazy_wglGetPbufferDCEXT; #endif #ifndef GLEE_C_DEFINED_wglReleasePbufferDCEXT #define GLEE_C_DEFINED_wglReleasePbufferDCEXT int __stdcall GLee_Lazy_wglReleasePbufferDCEXT(HPBUFFEREXT hPbuffer, HDC hDC) {if (GLeeInit()) return wglReleasePbufferDCEXT(hPbuffer, hDC); return (int)0;} GLEEPFNWGLRELEASEPBUFFERDCEXTPROC GLeeFuncPtr_wglReleasePbufferDCEXT=GLee_Lazy_wglReleasePbufferDCEXT; #endif #ifndef GLEE_C_DEFINED_wglDestroyPbufferEXT #define GLEE_C_DEFINED_wglDestroyPbufferEXT BOOL __stdcall GLee_Lazy_wglDestroyPbufferEXT(HPBUFFEREXT hPbuffer) {if (GLeeInit()) return wglDestroyPbufferEXT(hPbuffer); return (BOOL)0;} GLEEPFNWGLDESTROYPBUFFEREXTPROC GLeeFuncPtr_wglDestroyPbufferEXT=GLee_Lazy_wglDestroyPbufferEXT; #endif #ifndef GLEE_C_DEFINED_wglQueryPbufferEXT #define GLEE_C_DEFINED_wglQueryPbufferEXT BOOL __stdcall GLee_Lazy_wglQueryPbufferEXT(HPBUFFEREXT hPbuffer, int iAttribute, int * piValue) {if (GLeeInit()) return wglQueryPbufferEXT(hPbuffer, iAttribute, piValue); return (BOOL)0;} GLEEPFNWGLQUERYPBUFFEREXTPROC GLeeFuncPtr_wglQueryPbufferEXT=GLee_Lazy_wglQueryPbufferEXT; #endif #endif /* WGL_EXT_depth_float */ #ifdef __GLEE_WGL_EXT_depth_float #endif /* WGL_3DFX_multisample */ #ifdef __GLEE_WGL_3DFX_multisample #endif /* WGL_EXT_multisample */ #ifdef __GLEE_WGL_EXT_multisample #endif /* WGL_I3D_digital_video_control */ #ifdef __GLEE_WGL_I3D_digital_video_control #ifndef GLEE_C_DEFINED_wglGetDigitalVideoParametersI3D #define GLEE_C_DEFINED_wglGetDigitalVideoParametersI3D BOOL __stdcall GLee_Lazy_wglGetDigitalVideoParametersI3D(HDC hDC, int iAttribute, int * piValue) {if (GLeeInit()) return wglGetDigitalVideoParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;} GLEEPFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC GLeeFuncPtr_wglGetDigitalVideoParametersI3D=GLee_Lazy_wglGetDigitalVideoParametersI3D; #endif #ifndef GLEE_C_DEFINED_wglSetDigitalVideoParametersI3D #define GLEE_C_DEFINED_wglSetDigitalVideoParametersI3D BOOL __stdcall GLee_Lazy_wglSetDigitalVideoParametersI3D(HDC hDC, int iAttribute, const int * piValue) {if (GLeeInit()) return wglSetDigitalVideoParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;} GLEEPFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC GLeeFuncPtr_wglSetDigitalVideoParametersI3D=GLee_Lazy_wglSetDigitalVideoParametersI3D; #endif #endif /* WGL_I3D_gamma */ #ifdef __GLEE_WGL_I3D_gamma #ifndef GLEE_C_DEFINED_wglGetGammaTableParametersI3D #define GLEE_C_DEFINED_wglGetGammaTableParametersI3D BOOL __stdcall GLee_Lazy_wglGetGammaTableParametersI3D(HDC hDC, int iAttribute, int * piValue) {if (GLeeInit()) return wglGetGammaTableParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;} GLEEPFNWGLGETGAMMATABLEPARAMETERSI3DPROC GLeeFuncPtr_wglGetGammaTableParametersI3D=GLee_Lazy_wglGetGammaTableParametersI3D; #endif #ifndef GLEE_C_DEFINED_wglSetGammaTableParametersI3D #define GLEE_C_DEFINED_wglSetGammaTableParametersI3D BOOL __stdcall GLee_Lazy_wglSetGammaTableParametersI3D(HDC hDC, int iAttribute, const int * piValue) {if (GLeeInit()) return wglSetGammaTableParametersI3D(hDC, iAttribute, piValue); return (BOOL)0;} GLEEPFNWGLSETGAMMATABLEPARAMETERSI3DPROC GLeeFuncPtr_wglSetGammaTableParametersI3D=GLee_Lazy_wglSetGammaTableParametersI3D; #endif #ifndef GLEE_C_DEFINED_wglGetGammaTableI3D #define GLEE_C_DEFINED_wglGetGammaTableI3D BOOL __stdcall GLee_Lazy_wglGetGammaTableI3D(HDC hDC, int iEntries, USHORT * puRed, USHORT * puGreen, USHORT * puBlue) {if (GLeeInit()) return wglGetGammaTableI3D(hDC, iEntries, puRed, puGreen, puBlue); return (BOOL)0;} GLEEPFNWGLGETGAMMATABLEI3DPROC GLeeFuncPtr_wglGetGammaTableI3D=GLee_Lazy_wglGetGammaTableI3D; #endif #ifndef GLEE_C_DEFINED_wglSetGammaTableI3D #define GLEE_C_DEFINED_wglSetGammaTableI3D BOOL __stdcall GLee_Lazy_wglSetGammaTableI3D(HDC hDC, int iEntries, const USHORT * puRed, const USHORT * puGreen, const USHORT * puBlue) {if (GLeeInit()) return wglSetGammaTableI3D(hDC, iEntries, puRed, puGreen, puBlue); return (BOOL)0;} GLEEPFNWGLSETGAMMATABLEI3DPROC GLeeFuncPtr_wglSetGammaTableI3D=GLee_Lazy_wglSetGammaTableI3D; #endif #endif /* WGL_I3D_genlock */ #ifdef __GLEE_WGL_I3D_genlock #ifndef GLEE_C_DEFINED_wglEnableGenlockI3D #define GLEE_C_DEFINED_wglEnableGenlockI3D BOOL __stdcall GLee_Lazy_wglEnableGenlockI3D(HDC hDC) {if (GLeeInit()) return wglEnableGenlockI3D(hDC); return (BOOL)0;} GLEEPFNWGLENABLEGENLOCKI3DPROC GLeeFuncPtr_wglEnableGenlockI3D=GLee_Lazy_wglEnableGenlockI3D; #endif #ifndef GLEE_C_DEFINED_wglDisableGenlockI3D #define GLEE_C_DEFINED_wglDisableGenlockI3D BOOL __stdcall GLee_Lazy_wglDisableGenlockI3D(HDC hDC) {if (GLeeInit()) return wglDisableGenlockI3D(hDC); return (BOOL)0;} GLEEPFNWGLDISABLEGENLOCKI3DPROC GLeeFuncPtr_wglDisableGenlockI3D=GLee_Lazy_wglDisableGenlockI3D; #endif #ifndef GLEE_C_DEFINED_wglIsEnabledGenlockI3D #define GLEE_C_DEFINED_wglIsEnabledGenlockI3D BOOL __stdcall GLee_Lazy_wglIsEnabledGenlockI3D(HDC hDC, BOOL * pFlag) {if (GLeeInit()) return wglIsEnabledGenlockI3D(hDC, pFlag); return (BOOL)0;} GLEEPFNWGLISENABLEDGENLOCKI3DPROC GLeeFuncPtr_wglIsEnabledGenlockI3D=GLee_Lazy_wglIsEnabledGenlockI3D; #endif #ifndef GLEE_C_DEFINED_wglGenlockSourceI3D #define GLEE_C_DEFINED_wglGenlockSourceI3D BOOL __stdcall GLee_Lazy_wglGenlockSourceI3D(HDC hDC, UINT uSource) {if (GLeeInit()) return wglGenlockSourceI3D(hDC, uSource); return (BOOL)0;} GLEEPFNWGLGENLOCKSOURCEI3DPROC GLeeFuncPtr_wglGenlockSourceI3D=GLee_Lazy_wglGenlockSourceI3D; #endif #ifndef GLEE_C_DEFINED_wglGetGenlockSourceI3D #define GLEE_C_DEFINED_wglGetGenlockSourceI3D BOOL __stdcall GLee_Lazy_wglGetGenlockSourceI3D(HDC hDC, UINT * uSource) {if (GLeeInit()) return wglGetGenlockSourceI3D(hDC, uSource); return (BOOL)0;} GLEEPFNWGLGETGENLOCKSOURCEI3DPROC GLeeFuncPtr_wglGetGenlockSourceI3D=GLee_Lazy_wglGetGenlockSourceI3D; #endif #ifndef GLEE_C_DEFINED_wglGenlockSourceEdgeI3D #define GLEE_C_DEFINED_wglGenlockSourceEdgeI3D BOOL __stdcall GLee_Lazy_wglGenlockSourceEdgeI3D(HDC hDC, UINT uEdge) {if (GLeeInit()) return wglGenlockSourceEdgeI3D(hDC, uEdge); return (BOOL)0;} GLEEPFNWGLGENLOCKSOURCEEDGEI3DPROC GLeeFuncPtr_wglGenlockSourceEdgeI3D=GLee_Lazy_wglGenlockSourceEdgeI3D; #endif #ifndef GLEE_C_DEFINED_wglGetGenlockSourceEdgeI3D #define GLEE_C_DEFINED_wglGetGenlockSourceEdgeI3D BOOL __stdcall GLee_Lazy_wglGetGenlockSourceEdgeI3D(HDC hDC, UINT * uEdge) {if (GLeeInit()) return wglGetGenlockSourceEdgeI3D(hDC, uEdge); return (BOOL)0;} GLEEPFNWGLGETGENLOCKSOURCEEDGEI3DPROC GLeeFuncPtr_wglGetGenlockSourceEdgeI3D=GLee_Lazy_wglGetGenlockSourceEdgeI3D; #endif #ifndef GLEE_C_DEFINED_wglGenlockSampleRateI3D #define GLEE_C_DEFINED_wglGenlockSampleRateI3D BOOL __stdcall GLee_Lazy_wglGenlockSampleRateI3D(HDC hDC, UINT uRate) {if (GLeeInit()) return wglGenlockSampleRateI3D(hDC, uRate); return (BOOL)0;} GLEEPFNWGLGENLOCKSAMPLERATEI3DPROC GLeeFuncPtr_wglGenlockSampleRateI3D=GLee_Lazy_wglGenlockSampleRateI3D; #endif #ifndef GLEE_C_DEFINED_wglGetGenlockSampleRateI3D #define GLEE_C_DEFINED_wglGetGenlockSampleRateI3D BOOL __stdcall GLee_Lazy_wglGetGenlockSampleRateI3D(HDC hDC, UINT * uRate) {if (GLeeInit()) return wglGetGenlockSampleRateI3D(hDC, uRate); return (BOOL)0;} GLEEPFNWGLGETGENLOCKSAMPLERATEI3DPROC GLeeFuncPtr_wglGetGenlockSampleRateI3D=GLee_Lazy_wglGetGenlockSampleRateI3D; #endif #ifndef GLEE_C_DEFINED_wglGenlockSourceDelayI3D #define GLEE_C_DEFINED_wglGenlockSourceDelayI3D BOOL __stdcall GLee_Lazy_wglGenlockSourceDelayI3D(HDC hDC, UINT uDelay) {if (GLeeInit()) return wglGenlockSourceDelayI3D(hDC, uDelay); return (BOOL)0;} GLEEPFNWGLGENLOCKSOURCEDELAYI3DPROC GLeeFuncPtr_wglGenlockSourceDelayI3D=GLee_Lazy_wglGenlockSourceDelayI3D; #endif #ifndef GLEE_C_DEFINED_wglGetGenlockSourceDelayI3D #define GLEE_C_DEFINED_wglGetGenlockSourceDelayI3D BOOL __stdcall GLee_Lazy_wglGetGenlockSourceDelayI3D(HDC hDC, UINT * uDelay) {if (GLeeInit()) return wglGetGenlockSourceDelayI3D(hDC, uDelay); return (BOOL)0;} GLEEPFNWGLGETGENLOCKSOURCEDELAYI3DPROC GLeeFuncPtr_wglGetGenlockSourceDelayI3D=GLee_Lazy_wglGetGenlockSourceDelayI3D; #endif #ifndef GLEE_C_DEFINED_wglQueryGenlockMaxSourceDelayI3D #define GLEE_C_DEFINED_wglQueryGenlockMaxSourceDelayI3D BOOL __stdcall GLee_Lazy_wglQueryGenlockMaxSourceDelayI3D(HDC hDC, UINT * uMaxLineDelay, UINT * uMaxPixelDelay) {if (GLeeInit()) return wglQueryGenlockMaxSourceDelayI3D(hDC, uMaxLineDelay, uMaxPixelDelay); return (BOOL)0;} GLEEPFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC GLeeFuncPtr_wglQueryGenlockMaxSourceDelayI3D=GLee_Lazy_wglQueryGenlockMaxSourceDelayI3D; #endif #endif /* WGL_I3D_image_buffer */ #ifdef __GLEE_WGL_I3D_image_buffer #ifndef GLEE_C_DEFINED_wglCreateImageBufferI3D #define GLEE_C_DEFINED_wglCreateImageBufferI3D LPVOID __stdcall GLee_Lazy_wglCreateImageBufferI3D(HDC hDC, DWORD dwSize, UINT uFlags) {if (GLeeInit()) return wglCreateImageBufferI3D(hDC, dwSize, uFlags); return (LPVOID)0;} GLEEPFNWGLCREATEIMAGEBUFFERI3DPROC GLeeFuncPtr_wglCreateImageBufferI3D=GLee_Lazy_wglCreateImageBufferI3D; #endif #ifndef GLEE_C_DEFINED_wglDestroyImageBufferI3D #define GLEE_C_DEFINED_wglDestroyImageBufferI3D BOOL __stdcall GLee_Lazy_wglDestroyImageBufferI3D(HDC hDC, LPVOID pAddress) {if (GLeeInit()) return wglDestroyImageBufferI3D(hDC, pAddress); return (BOOL)0;} GLEEPFNWGLDESTROYIMAGEBUFFERI3DPROC GLeeFuncPtr_wglDestroyImageBufferI3D=GLee_Lazy_wglDestroyImageBufferI3D; #endif #ifndef GLEE_C_DEFINED_wglAssociateImageBufferEventsI3D #define GLEE_C_DEFINED_wglAssociateImageBufferEventsI3D BOOL __stdcall GLee_Lazy_wglAssociateImageBufferEventsI3D(HDC hDC, const HANDLE * pEvent, const LPVOID * pAddress, const DWORD * pSize, UINT count) {if (GLeeInit()) return wglAssociateImageBufferEventsI3D(hDC, pEvent, pAddress, pSize, count); return (BOOL)0;} GLEEPFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC GLeeFuncPtr_wglAssociateImageBufferEventsI3D=GLee_Lazy_wglAssociateImageBufferEventsI3D; #endif #ifndef GLEE_C_DEFINED_wglReleaseImageBufferEventsI3D #define GLEE_C_DEFINED_wglReleaseImageBufferEventsI3D BOOL __stdcall GLee_Lazy_wglReleaseImageBufferEventsI3D(HDC hDC, const LPVOID * pAddress, UINT count) {if (GLeeInit()) return wglReleaseImageBufferEventsI3D(hDC, pAddress, count); return (BOOL)0;} GLEEPFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC GLeeFuncPtr_wglReleaseImageBufferEventsI3D=GLee_Lazy_wglReleaseImageBufferEventsI3D; #endif #endif /* WGL_I3D_swap_frame_lock */ #ifdef __GLEE_WGL_I3D_swap_frame_lock #ifndef GLEE_C_DEFINED_wglEnableFrameLockI3D #define GLEE_C_DEFINED_wglEnableFrameLockI3D BOOL __stdcall GLee_Lazy_wglEnableFrameLockI3D(void) {if (GLeeInit()) return wglEnableFrameLockI3D(); return (BOOL)0;} GLEEPFNWGLENABLEFRAMELOCKI3DPROC GLeeFuncPtr_wglEnableFrameLockI3D=GLee_Lazy_wglEnableFrameLockI3D; #endif #ifndef GLEE_C_DEFINED_wglDisableFrameLockI3D #define GLEE_C_DEFINED_wglDisableFrameLockI3D BOOL __stdcall GLee_Lazy_wglDisableFrameLockI3D(void) {if (GLeeInit()) return wglDisableFrameLockI3D(); return (BOOL)0;} GLEEPFNWGLDISABLEFRAMELOCKI3DPROC GLeeFuncPtr_wglDisableFrameLockI3D=GLee_Lazy_wglDisableFrameLockI3D; #endif #ifndef GLEE_C_DEFINED_wglIsEnabledFrameLockI3D #define GLEE_C_DEFINED_wglIsEnabledFrameLockI3D BOOL __stdcall GLee_Lazy_wglIsEnabledFrameLockI3D(BOOL * pFlag) {if (GLeeInit()) return wglIsEnabledFrameLockI3D(pFlag); return (BOOL)0;} GLEEPFNWGLISENABLEDFRAMELOCKI3DPROC GLeeFuncPtr_wglIsEnabledFrameLockI3D=GLee_Lazy_wglIsEnabledFrameLockI3D; #endif #ifndef GLEE_C_DEFINED_wglQueryFrameLockMasterI3D #define GLEE_C_DEFINED_wglQueryFrameLockMasterI3D BOOL __stdcall GLee_Lazy_wglQueryFrameLockMasterI3D(BOOL * pFlag) {if (GLeeInit()) return wglQueryFrameLockMasterI3D(pFlag); return (BOOL)0;} GLEEPFNWGLQUERYFRAMELOCKMASTERI3DPROC GLeeFuncPtr_wglQueryFrameLockMasterI3D=GLee_Lazy_wglQueryFrameLockMasterI3D; #endif #endif /* WGL_NV_render_depth_texture */ #ifdef __GLEE_WGL_NV_render_depth_texture #endif /* WGL_NV_render_texture_rectangle */ #ifdef __GLEE_WGL_NV_render_texture_rectangle #endif /* WGL_ATI_pixel_format_float */ #ifdef __GLEE_WGL_ATI_pixel_format_float #endif /* WGL_NV_float_buffer */ #ifdef __GLEE_WGL_NV_float_buffer #endif /* WGL_3DL_stereo_control */ #ifdef __GLEE_WGL_3DL_stereo_control #ifndef GLEE_C_DEFINED_wglSetStereoEmitterState3DL #define GLEE_C_DEFINED_wglSetStereoEmitterState3DL BOOL __stdcall GLee_Lazy_wglSetStereoEmitterState3DL(HDC hDC, UINT uState) {if (GLeeInit()) return wglSetStereoEmitterState3DL(hDC, uState); return (BOOL)0;} GLEEPFNWGLSETSTEREOEMITTERSTATE3DLPROC GLeeFuncPtr_wglSetStereoEmitterState3DL=GLee_Lazy_wglSetStereoEmitterState3DL; #endif #endif /* WGL_EXT_pixel_format_packed_float */ #ifdef __GLEE_WGL_EXT_pixel_format_packed_float #endif /* WGL_EXT_framebuffer_sRGB */ #ifdef __GLEE_WGL_EXT_framebuffer_sRGB #endif /* WGL_NV_present_video */ #ifdef __GLEE_WGL_NV_present_video #ifndef GLEE_C_DEFINED_wglEnumerateVideoDevicesNV #define GLEE_C_DEFINED_wglEnumerateVideoDevicesNV int __stdcall GLee_Lazy_wglEnumerateVideoDevicesNV(HDC hDC, HVIDEOOUTPUTDEVICENV * phDeviceList) {if (GLeeInit()) return wglEnumerateVideoDevicesNV(hDC, phDeviceList); return (int)0;} GLEEPFNWGLENUMERATEVIDEODEVICESNVPROC GLeeFuncPtr_wglEnumerateVideoDevicesNV=GLee_Lazy_wglEnumerateVideoDevicesNV; #endif #ifndef GLEE_C_DEFINED_wglBindVideoDeviceNV #define GLEE_C_DEFINED_wglBindVideoDeviceNV BOOL __stdcall GLee_Lazy_wglBindVideoDeviceNV(HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int * piAttribList) {if (GLeeInit()) return wglBindVideoDeviceNV(hDC, uVideoSlot, hVideoDevice, piAttribList); return (BOOL)0;} GLEEPFNWGLBINDVIDEODEVICENVPROC GLeeFuncPtr_wglBindVideoDeviceNV=GLee_Lazy_wglBindVideoDeviceNV; #endif #ifndef GLEE_C_DEFINED_wglQueryCurrentContextNV #define GLEE_C_DEFINED_wglQueryCurrentContextNV BOOL __stdcall GLee_Lazy_wglQueryCurrentContextNV(int iAttribute, int * piValue) {if (GLeeInit()) return wglQueryCurrentContextNV(iAttribute, piValue); return (BOOL)0;} GLEEPFNWGLQUERYCURRENTCONTEXTNVPROC GLeeFuncPtr_wglQueryCurrentContextNV=GLee_Lazy_wglQueryCurrentContextNV; #endif #endif /* WGL_NV_swap_group */ #ifdef __GLEE_WGL_NV_swap_group #ifndef GLEE_C_DEFINED_wglJoinSwapGroupNV #define GLEE_C_DEFINED_wglJoinSwapGroupNV BOOL __stdcall GLee_Lazy_wglJoinSwapGroupNV(HDC hDC, GLuint group) {if (GLeeInit()) return wglJoinSwapGroupNV(hDC, group); return (BOOL)0;} GLEEPFNWGLJOINSWAPGROUPNVPROC GLeeFuncPtr_wglJoinSwapGroupNV=GLee_Lazy_wglJoinSwapGroupNV; #endif #ifndef GLEE_C_DEFINED_wglBindSwapBarrierNV #define GLEE_C_DEFINED_wglBindSwapBarrierNV BOOL __stdcall GLee_Lazy_wglBindSwapBarrierNV(GLuint group, GLuint barrier) {if (GLeeInit()) return wglBindSwapBarrierNV(group, barrier); return (BOOL)0;} GLEEPFNWGLBINDSWAPBARRIERNVPROC GLeeFuncPtr_wglBindSwapBarrierNV=GLee_Lazy_wglBindSwapBarrierNV; #endif #ifndef GLEE_C_DEFINED_wglQuerySwapGroupNV #define GLEE_C_DEFINED_wglQuerySwapGroupNV BOOL __stdcall GLee_Lazy_wglQuerySwapGroupNV(HDC hDC, GLuint * group, GLuint * barrier) {if (GLeeInit()) return wglQuerySwapGroupNV(hDC, group, barrier); return (BOOL)0;} GLEEPFNWGLQUERYSWAPGROUPNVPROC GLeeFuncPtr_wglQuerySwapGroupNV=GLee_Lazy_wglQuerySwapGroupNV; #endif #ifndef GLEE_C_DEFINED_wglQueryMaxSwapGroupsNV #define GLEE_C_DEFINED_wglQueryMaxSwapGroupsNV BOOL __stdcall GLee_Lazy_wglQueryMaxSwapGroupsNV(HDC hDC, GLuint * maxGroups, GLuint * maxBarriers) {if (GLeeInit()) return wglQueryMaxSwapGroupsNV(hDC, maxGroups, maxBarriers); return (BOOL)0;} GLEEPFNWGLQUERYMAXSWAPGROUPSNVPROC GLeeFuncPtr_wglQueryMaxSwapGroupsNV=GLee_Lazy_wglQueryMaxSwapGroupsNV; #endif #ifndef GLEE_C_DEFINED_wglQueryFrameCountNV #define GLEE_C_DEFINED_wglQueryFrameCountNV BOOL __stdcall GLee_Lazy_wglQueryFrameCountNV(HDC hDC, GLuint * count) {if (GLeeInit()) return wglQueryFrameCountNV(hDC, count); return (BOOL)0;} GLEEPFNWGLQUERYFRAMECOUNTNVPROC GLeeFuncPtr_wglQueryFrameCountNV=GLee_Lazy_wglQueryFrameCountNV; #endif #ifndef GLEE_C_DEFINED_wglResetFrameCountNV #define GLEE_C_DEFINED_wglResetFrameCountNV BOOL __stdcall GLee_Lazy_wglResetFrameCountNV(HDC hDC) {if (GLeeInit()) return wglResetFrameCountNV(hDC); return (BOOL)0;} GLEEPFNWGLRESETFRAMECOUNTNVPROC GLeeFuncPtr_wglResetFrameCountNV=GLee_Lazy_wglResetFrameCountNV; #endif #endif /* WGL_NV_gpu_affinity */ #ifdef __GLEE_WGL_NV_gpu_affinity #ifndef GLEE_C_DEFINED_wglEnumGpusNV #define GLEE_C_DEFINED_wglEnumGpusNV BOOL __stdcall GLee_Lazy_wglEnumGpusNV(UINT iGpuIndex, HGPUNV * phGpu) {if (GLeeInit()) return wglEnumGpusNV(iGpuIndex, phGpu); return (BOOL)0;} GLEEPFNWGLENUMGPUSNVPROC GLeeFuncPtr_wglEnumGpusNV=GLee_Lazy_wglEnumGpusNV; #endif #ifndef GLEE_C_DEFINED_wglEnumGpuDevicesNV #define GLEE_C_DEFINED_wglEnumGpuDevicesNV BOOL __stdcall GLee_Lazy_wglEnumGpuDevicesNV(HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice) {if (GLeeInit()) return wglEnumGpuDevicesNV(hGpu, iDeviceIndex, lpGpuDevice); return (BOOL)0;} GLEEPFNWGLENUMGPUDEVICESNVPROC GLeeFuncPtr_wglEnumGpuDevicesNV=GLee_Lazy_wglEnumGpuDevicesNV; #endif #ifndef GLEE_C_DEFINED_wglCreateAffinityDCNV #define GLEE_C_DEFINED_wglCreateAffinityDCNV HDC __stdcall GLee_Lazy_wglCreateAffinityDCNV(const HGPUNV * phGpuList) {if (GLeeInit()) return wglCreateAffinityDCNV(phGpuList); return (HDC)0;} GLEEPFNWGLCREATEAFFINITYDCNVPROC GLeeFuncPtr_wglCreateAffinityDCNV=GLee_Lazy_wglCreateAffinityDCNV; #endif #ifndef GLEE_C_DEFINED_wglEnumGpusFromAffinityDCNV #define GLEE_C_DEFINED_wglEnumGpusFromAffinityDCNV BOOL __stdcall GLee_Lazy_wglEnumGpusFromAffinityDCNV(HDC hAffinityDC, UINT iGpuIndex, HGPUNV * hGpu) {if (GLeeInit()) return wglEnumGpusFromAffinityDCNV(hAffinityDC, iGpuIndex, hGpu); return (BOOL)0;} GLEEPFNWGLENUMGPUSFROMAFFINITYDCNVPROC GLeeFuncPtr_wglEnumGpusFromAffinityDCNV=GLee_Lazy_wglEnumGpusFromAffinityDCNV; #endif #ifndef GLEE_C_DEFINED_wglDeleteDCNV #define GLEE_C_DEFINED_wglDeleteDCNV BOOL __stdcall GLee_Lazy_wglDeleteDCNV(HDC hdc) {if (GLeeInit()) return wglDeleteDCNV(hdc); return (BOOL)0;} GLEEPFNWGLDELETEDCNVPROC GLeeFuncPtr_wglDeleteDCNV=GLee_Lazy_wglDeleteDCNV; #endif #endif /* WGL_AMD_gpu_association */ #ifdef __GLEE_WGL_AMD_gpu_association #ifndef GLEE_C_DEFINED_wglGetGPUIDsAMD #define GLEE_C_DEFINED_wglGetGPUIDsAMD UINT __stdcall GLee_Lazy_wglGetGPUIDsAMD(UINT maxCount, UINT * ids) {if (GLeeInit()) return wglGetGPUIDsAMD(maxCount, ids); return (UINT)0;} GLEEPFNWGLGETGPUIDSAMDPROC GLeeFuncPtr_wglGetGPUIDsAMD=GLee_Lazy_wglGetGPUIDsAMD; #endif #ifndef GLEE_C_DEFINED_wglGetGPUInfoAMD #define GLEE_C_DEFINED_wglGetGPUInfoAMD INT __stdcall GLee_Lazy_wglGetGPUInfoAMD(UINT id, int property, GLenum dataType, UINT size, void * data) {if (GLeeInit()) return wglGetGPUInfoAMD(id, property, dataType, size, data); return (INT)0;} GLEEPFNWGLGETGPUINFOAMDPROC GLeeFuncPtr_wglGetGPUInfoAMD=GLee_Lazy_wglGetGPUInfoAMD; #endif #ifndef GLEE_C_DEFINED_wglGetContextGPUIDAMD #define GLEE_C_DEFINED_wglGetContextGPUIDAMD UINT __stdcall GLee_Lazy_wglGetContextGPUIDAMD(HGLRC hglrc) {if (GLeeInit()) return wglGetContextGPUIDAMD(hglrc); return (UINT)0;} GLEEPFNWGLGETCONTEXTGPUIDAMDPROC GLeeFuncPtr_wglGetContextGPUIDAMD=GLee_Lazy_wglGetContextGPUIDAMD; #endif #ifndef GLEE_C_DEFINED_wglCreateAssociatedContextAMD #define GLEE_C_DEFINED_wglCreateAssociatedContextAMD HGLRC __stdcall GLee_Lazy_wglCreateAssociatedContextAMD(UINT id) {if (GLeeInit()) return wglCreateAssociatedContextAMD(id); return (HGLRC)0;} GLEEPFNWGLCREATEASSOCIATEDCONTEXTAMDPROC GLeeFuncPtr_wglCreateAssociatedContextAMD=GLee_Lazy_wglCreateAssociatedContextAMD; #endif #ifndef GLEE_C_DEFINED_wglCreateAssociatedContextAttribsAMD #define GLEE_C_DEFINED_wglCreateAssociatedContextAttribsAMD HGLRC __stdcall GLee_Lazy_wglCreateAssociatedContextAttribsAMD(UINT id, HGLRC hShareContext, const int * attribList) {if (GLeeInit()) return wglCreateAssociatedContextAttribsAMD(id, hShareContext, attribList); return (HGLRC)0;} GLEEPFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC GLeeFuncPtr_wglCreateAssociatedContextAttribsAMD=GLee_Lazy_wglCreateAssociatedContextAttribsAMD; #endif #ifndef GLEE_C_DEFINED_wglDeleteAssociatedContextAMD #define GLEE_C_DEFINED_wglDeleteAssociatedContextAMD BOOL __stdcall GLee_Lazy_wglDeleteAssociatedContextAMD(HGLRC hglrc) {if (GLeeInit()) return wglDeleteAssociatedContextAMD(hglrc); return (BOOL)0;} GLEEPFNWGLDELETEASSOCIATEDCONTEXTAMDPROC GLeeFuncPtr_wglDeleteAssociatedContextAMD=GLee_Lazy_wglDeleteAssociatedContextAMD; #endif #ifndef GLEE_C_DEFINED_wglMakeAssociatedContextCurrentAMD #define GLEE_C_DEFINED_wglMakeAssociatedContextCurrentAMD BOOL __stdcall GLee_Lazy_wglMakeAssociatedContextCurrentAMD(HGLRC hglrc) {if (GLeeInit()) return wglMakeAssociatedContextCurrentAMD(hglrc); return (BOOL)0;} GLEEPFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC GLeeFuncPtr_wglMakeAssociatedContextCurrentAMD=GLee_Lazy_wglMakeAssociatedContextCurrentAMD; #endif #ifndef GLEE_C_DEFINED_wglGetCurrentAssociatedContextAMD #define GLEE_C_DEFINED_wglGetCurrentAssociatedContextAMD HGLRC __stdcall GLee_Lazy_wglGetCurrentAssociatedContextAMD(void) {if (GLeeInit()) return wglGetCurrentAssociatedContextAMD(); return (HGLRC)0;} GLEEPFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC GLeeFuncPtr_wglGetCurrentAssociatedContextAMD=GLee_Lazy_wglGetCurrentAssociatedContextAMD; #endif #ifndef GLEE_C_DEFINED_wglBlitContextFramebufferAMD #define GLEE_C_DEFINED_wglBlitContextFramebufferAMD VOID __stdcall GLee_Lazy_wglBlitContextFramebufferAMD(HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {if (GLeeInit()) wglBlitContextFramebufferAMD(dstCtx, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);} GLEEPFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC GLeeFuncPtr_wglBlitContextFramebufferAMD=GLee_Lazy_wglBlitContextFramebufferAMD; #endif #endif /* WGL_NV_copy_image */ #ifdef __GLEE_WGL_NV_copy_image #ifndef GLEE_C_DEFINED_wglCopyImageSubDataNV #define GLEE_C_DEFINED_wglCopyImageSubDataNV BOOL __stdcall GLee_Lazy_wglCopyImageSubDataNV(HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth) {if (GLeeInit()) return wglCopyImageSubDataNV(hSrcRC, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, hDstRC, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth); return (BOOL)0;} GLEEPFNWGLCOPYIMAGESUBDATANVPROC GLeeFuncPtr_wglCopyImageSubDataNV=GLee_Lazy_wglCopyImageSubDataNV; #endif #endif /* WGL_NV_multisample_coverage */ #ifdef __GLEE_WGL_NV_multisample_coverage #endif /* WGL_EXT_create_context_es2_profile */ #ifdef __GLEE_WGL_EXT_create_context_es2_profile #endif /* WGL_NV_DX_interop */ #ifdef __GLEE_WGL_NV_DX_interop #ifndef GLEE_C_DEFINED_wglDXSetResourceShareHandleNV #define GLEE_C_DEFINED_wglDXSetResourceShareHandleNV BOOL __stdcall GLee_Lazy_wglDXSetResourceShareHandleNV(void * dxObject, HANDLE shareHandle) {if (GLeeInit()) return wglDXSetResourceShareHandleNV(dxObject, shareHandle); return (BOOL)0;} GLEEPFNWGLDXSETRESOURCESHAREHANDLENVPROC GLeeFuncPtr_wglDXSetResourceShareHandleNV=GLee_Lazy_wglDXSetResourceShareHandleNV; #endif #ifndef GLEE_C_DEFINED_wglDXOpenDeviceNV #define GLEE_C_DEFINED_wglDXOpenDeviceNV HANDLE __stdcall GLee_Lazy_wglDXOpenDeviceNV(void * dxDevice) {if (GLeeInit()) return wglDXOpenDeviceNV(dxDevice); return (HANDLE)0;} GLEEPFNWGLDXOPENDEVICENVPROC GLeeFuncPtr_wglDXOpenDeviceNV=GLee_Lazy_wglDXOpenDeviceNV; #endif #ifndef GLEE_C_DEFINED_wglDXCloseDeviceNV #define GLEE_C_DEFINED_wglDXCloseDeviceNV BOOL __stdcall GLee_Lazy_wglDXCloseDeviceNV(HANDLE hDevice) {if (GLeeInit()) return wglDXCloseDeviceNV(hDevice); return (BOOL)0;} GLEEPFNWGLDXCLOSEDEVICENVPROC GLeeFuncPtr_wglDXCloseDeviceNV=GLee_Lazy_wglDXCloseDeviceNV; #endif #ifndef GLEE_C_DEFINED_wglDXRegisterObjectNV #define GLEE_C_DEFINED_wglDXRegisterObjectNV HANDLE __stdcall GLee_Lazy_wglDXRegisterObjectNV(HANDLE hDevice, void * dxObject, GLuint name, GLenum type, GLenum access) {if (GLeeInit()) return wglDXRegisterObjectNV(hDevice, dxObject, name, type, access); return (HANDLE)0;} GLEEPFNWGLDXREGISTEROBJECTNVPROC GLeeFuncPtr_wglDXRegisterObjectNV=GLee_Lazy_wglDXRegisterObjectNV; #endif #ifndef GLEE_C_DEFINED_wglDXUnregisterObjectNV #define GLEE_C_DEFINED_wglDXUnregisterObjectNV BOOL __stdcall GLee_Lazy_wglDXUnregisterObjectNV(HANDLE hDevice, HANDLE hObject) {if (GLeeInit()) return wglDXUnregisterObjectNV(hDevice, hObject); return (BOOL)0;} GLEEPFNWGLDXUNREGISTEROBJECTNVPROC GLeeFuncPtr_wglDXUnregisterObjectNV=GLee_Lazy_wglDXUnregisterObjectNV; #endif #ifndef GLEE_C_DEFINED_wglDXObjectAccessNV #define GLEE_C_DEFINED_wglDXObjectAccessNV BOOL __stdcall GLee_Lazy_wglDXObjectAccessNV(HANDLE hObject, GLenum access) {if (GLeeInit()) return wglDXObjectAccessNV(hObject, access); return (BOOL)0;} GLEEPFNWGLDXOBJECTACCESSNVPROC GLeeFuncPtr_wglDXObjectAccessNV=GLee_Lazy_wglDXObjectAccessNV; #endif #ifndef GLEE_C_DEFINED_wglDXLockObjectsNV #define GLEE_C_DEFINED_wglDXLockObjectsNV BOOL __stdcall GLee_Lazy_wglDXLockObjectsNV(HANDLE hDevice, GLint count, HANDLE * hObjects) {if (GLeeInit()) return wglDXLockObjectsNV(hDevice, count, hObjects); return (BOOL)0;} GLEEPFNWGLDXLOCKOBJECTSNVPROC GLeeFuncPtr_wglDXLockObjectsNV=GLee_Lazy_wglDXLockObjectsNV; #endif #ifndef GLEE_C_DEFINED_wglDXUnlockObjectsNV #define GLEE_C_DEFINED_wglDXUnlockObjectsNV BOOL __stdcall GLee_Lazy_wglDXUnlockObjectsNV(HANDLE hDevice, GLint count, HANDLE * hObjects) {if (GLeeInit()) return wglDXUnlockObjectsNV(hDevice, count, hObjects); return (BOOL)0;} GLEEPFNWGLDXUNLOCKOBJECTSNVPROC GLeeFuncPtr_wglDXUnlockObjectsNV=GLee_Lazy_wglDXUnlockObjectsNV; #endif #endif /* WGL_NV_DX_interop2 */ #ifdef __GLEE_WGL_NV_DX_interop2 #endif /* WGL_EXT_swap_control_tear */ #ifdef __GLEE_WGL_EXT_swap_control_tear #endif /* WGL_EXT_display_color_table */ #ifdef __GLEE_WGL_EXT_display_color_table #ifndef GLEE_C_DEFINED_wglCreateDisplayColorTableEXT #define GLEE_C_DEFINED_wglCreateDisplayColorTableEXT GLboolean __stdcall GLee_Lazy_wglCreateDisplayColorTableEXT(GLushort id) {if (GLeeInit()) return wglCreateDisplayColorTableEXT(id); return (GLboolean)0;} GLEEPFNWGLCREATEDISPLAYCOLORTABLEEXTPROC GLeeFuncPtr_wglCreateDisplayColorTableEXT=GLee_Lazy_wglCreateDisplayColorTableEXT; #endif #ifndef GLEE_C_DEFINED_wglLoadDisplayColorTableEXT #define GLEE_C_DEFINED_wglLoadDisplayColorTableEXT GLboolean __stdcall GLee_Lazy_wglLoadDisplayColorTableEXT(const GLushort * table, GLuint length) {if (GLeeInit()) return wglLoadDisplayColorTableEXT(table, length); return (GLboolean)0;} GLEEPFNWGLLOADDISPLAYCOLORTABLEEXTPROC GLeeFuncPtr_wglLoadDisplayColorTableEXT=GLee_Lazy_wglLoadDisplayColorTableEXT; #endif #ifndef GLEE_C_DEFINED_wglBindDisplayColorTableEXT #define GLEE_C_DEFINED_wglBindDisplayColorTableEXT GLboolean __stdcall GLee_Lazy_wglBindDisplayColorTableEXT(GLushort id) {if (GLeeInit()) return wglBindDisplayColorTableEXT(id); return (GLboolean)0;} GLEEPFNWGLBINDDISPLAYCOLORTABLEEXTPROC GLeeFuncPtr_wglBindDisplayColorTableEXT=GLee_Lazy_wglBindDisplayColorTableEXT; #endif #ifndef GLEE_C_DEFINED_wglDestroyDisplayColorTableEXT #define GLEE_C_DEFINED_wglDestroyDisplayColorTableEXT VOID __stdcall GLee_Lazy_wglDestroyDisplayColorTableEXT(GLushort id) {if (GLeeInit()) wglDestroyDisplayColorTableEXT(id);} GLEEPFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC GLeeFuncPtr_wglDestroyDisplayColorTableEXT=GLee_Lazy_wglDestroyDisplayColorTableEXT; #endif #endif /* WGL_EXT_extensions_string */ #ifdef __GLEE_WGL_EXT_extensions_string #ifndef GLEE_C_DEFINED_wglGetExtensionsStringEXT #define GLEE_C_DEFINED_wglGetExtensionsStringEXT const char * __stdcall GLee_Lazy_wglGetExtensionsStringEXT(void) {if (GLeeInit()) return wglGetExtensionsStringEXT(); return (const char *)0;} GLEEPFNWGLGETEXTENSIONSSTRINGEXTPROC GLeeFuncPtr_wglGetExtensionsStringEXT=GLee_Lazy_wglGetExtensionsStringEXT; #endif #endif /* WGL_EXT_swap_control */ #ifdef __GLEE_WGL_EXT_swap_control #ifndef GLEE_C_DEFINED_wglSwapIntervalEXT #define GLEE_C_DEFINED_wglSwapIntervalEXT BOOL __stdcall GLee_Lazy_wglSwapIntervalEXT(int interval) {if (GLeeInit()) return wglSwapIntervalEXT(interval); return (BOOL)0;} GLEEPFNWGLSWAPINTERVALEXTPROC GLeeFuncPtr_wglSwapIntervalEXT=GLee_Lazy_wglSwapIntervalEXT; #endif #ifndef GLEE_C_DEFINED_wglGetSwapIntervalEXT #define GLEE_C_DEFINED_wglGetSwapIntervalEXT int __stdcall GLee_Lazy_wglGetSwapIntervalEXT(void) {if (GLeeInit()) return wglGetSwapIntervalEXT(); return (int)0;} GLEEPFNWGLGETSWAPINTERVALEXTPROC GLeeFuncPtr_wglGetSwapIntervalEXT=GLee_Lazy_wglGetSwapIntervalEXT; #endif #endif /* WGL_NV_vertex_array_range */ #ifdef __GLEE_WGL_NV_vertex_array_range #ifndef GLEE_C_DEFINED_wglAllocateMemoryNV #define GLEE_C_DEFINED_wglAllocateMemoryNV void* __stdcall GLee_Lazy_wglAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority) {if (GLeeInit()) return wglAllocateMemoryNV(size, readfreq, writefreq, priority); return (void*)0;} GLEEPFNWGLALLOCATEMEMORYNVPROC GLeeFuncPtr_wglAllocateMemoryNV=GLee_Lazy_wglAllocateMemoryNV; #endif #ifndef GLEE_C_DEFINED_wglFreeMemoryNV #define GLEE_C_DEFINED_wglFreeMemoryNV void __stdcall GLee_Lazy_wglFreeMemoryNV(void * pointer) {if (GLeeInit()) wglFreeMemoryNV(pointer);} GLEEPFNWGLFREEMEMORYNVPROC GLeeFuncPtr_wglFreeMemoryNV=GLee_Lazy_wglFreeMemoryNV; #endif #endif /* WGL_OML_sync_control */ #ifdef __GLEE_WGL_OML_sync_control #ifndef GLEE_C_DEFINED_wglGetSyncValuesOML #define GLEE_C_DEFINED_wglGetSyncValuesOML BOOL __stdcall GLee_Lazy_wglGetSyncValuesOML(HDC hdc, INT64 * ust, INT64 * msc, INT64 * sbc) {if (GLeeInit()) return wglGetSyncValuesOML(hdc, ust, msc, sbc); return (BOOL)0;} GLEEPFNWGLGETSYNCVALUESOMLPROC GLeeFuncPtr_wglGetSyncValuesOML=GLee_Lazy_wglGetSyncValuesOML; #endif #ifndef GLEE_C_DEFINED_wglGetMscRateOML #define GLEE_C_DEFINED_wglGetMscRateOML BOOL __stdcall GLee_Lazy_wglGetMscRateOML(HDC hdc, INT32 * numerator, INT32 * denominator) {if (GLeeInit()) return wglGetMscRateOML(hdc, numerator, denominator); return (BOOL)0;} GLEEPFNWGLGETMSCRATEOMLPROC GLeeFuncPtr_wglGetMscRateOML=GLee_Lazy_wglGetMscRateOML; #endif #ifndef GLEE_C_DEFINED_wglSwapBuffersMscOML #define GLEE_C_DEFINED_wglSwapBuffersMscOML INT64 __stdcall GLee_Lazy_wglSwapBuffersMscOML(HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder) {if (GLeeInit()) return wglSwapBuffersMscOML(hdc, target_msc, divisor, remainder); return (INT64)0;} GLEEPFNWGLSWAPBUFFERSMSCOMLPROC GLeeFuncPtr_wglSwapBuffersMscOML=GLee_Lazy_wglSwapBuffersMscOML; #endif #ifndef GLEE_C_DEFINED_wglSwapLayerBuffersMscOML #define GLEE_C_DEFINED_wglSwapLayerBuffersMscOML INT64 __stdcall GLee_Lazy_wglSwapLayerBuffersMscOML(HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder) {if (GLeeInit()) return wglSwapLayerBuffersMscOML(hdc, fuPlanes, target_msc, divisor, remainder); return (INT64)0;} GLEEPFNWGLSWAPLAYERBUFFERSMSCOMLPROC GLeeFuncPtr_wglSwapLayerBuffersMscOML=GLee_Lazy_wglSwapLayerBuffersMscOML; #endif #ifndef GLEE_C_DEFINED_wglWaitForMscOML #define GLEE_C_DEFINED_wglWaitForMscOML BOOL __stdcall GLee_Lazy_wglWaitForMscOML(HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 * ust, INT64 * msc, INT64 * sbc) {if (GLeeInit()) return wglWaitForMscOML(hdc, target_msc, divisor, remainder, ust, msc, sbc); return (BOOL)0;} GLEEPFNWGLWAITFORMSCOMLPROC GLeeFuncPtr_wglWaitForMscOML=GLee_Lazy_wglWaitForMscOML; #endif #ifndef GLEE_C_DEFINED_wglWaitForSbcOML #define GLEE_C_DEFINED_wglWaitForSbcOML BOOL __stdcall GLee_Lazy_wglWaitForSbcOML(HDC hdc, INT64 target_sbc, INT64 * ust, INT64 * msc, INT64 * sbc) {if (GLeeInit()) return wglWaitForSbcOML(hdc, target_sbc, ust, msc, sbc); return (BOOL)0;} GLEEPFNWGLWAITFORSBCOMLPROC GLeeFuncPtr_wglWaitForSbcOML=GLee_Lazy_wglWaitForSbcOML; #endif #endif /* WGL_I3D_swap_frame_usage */ #ifdef __GLEE_WGL_I3D_swap_frame_usage #ifndef GLEE_C_DEFINED_wglGetFrameUsageI3D #define GLEE_C_DEFINED_wglGetFrameUsageI3D BOOL __stdcall GLee_Lazy_wglGetFrameUsageI3D(float * pUsage) {if (GLeeInit()) return wglGetFrameUsageI3D(pUsage); return (BOOL)0;} GLEEPFNWGLGETFRAMEUSAGEI3DPROC GLeeFuncPtr_wglGetFrameUsageI3D=GLee_Lazy_wglGetFrameUsageI3D; #endif #ifndef GLEE_C_DEFINED_wglBeginFrameTrackingI3D #define GLEE_C_DEFINED_wglBeginFrameTrackingI3D BOOL __stdcall GLee_Lazy_wglBeginFrameTrackingI3D(void) {if (GLeeInit()) return wglBeginFrameTrackingI3D(); return (BOOL)0;} GLEEPFNWGLBEGINFRAMETRACKINGI3DPROC GLeeFuncPtr_wglBeginFrameTrackingI3D=GLee_Lazy_wglBeginFrameTrackingI3D; #endif #ifndef GLEE_C_DEFINED_wglEndFrameTrackingI3D #define GLEE_C_DEFINED_wglEndFrameTrackingI3D BOOL __stdcall GLee_Lazy_wglEndFrameTrackingI3D(void) {if (GLeeInit()) return wglEndFrameTrackingI3D(); return (BOOL)0;} GLEEPFNWGLENDFRAMETRACKINGI3DPROC GLeeFuncPtr_wglEndFrameTrackingI3D=GLee_Lazy_wglEndFrameTrackingI3D; #endif #ifndef GLEE_C_DEFINED_wglQueryFrameTrackingI3D #define GLEE_C_DEFINED_wglQueryFrameTrackingI3D BOOL __stdcall GLee_Lazy_wglQueryFrameTrackingI3D(DWORD * pFrameCount, DWORD * pMissedFrames, float * pLastMissedUsage) {if (GLeeInit()) return wglQueryFrameTrackingI3D(pFrameCount, pMissedFrames, pLastMissedUsage); return (BOOL)0;} GLEEPFNWGLQUERYFRAMETRACKINGI3DPROC GLeeFuncPtr_wglQueryFrameTrackingI3D=GLee_Lazy_wglQueryFrameTrackingI3D; #endif #endif /* WGL_NV_video_output */ #ifdef __GLEE_WGL_NV_video_output #ifndef GLEE_C_DEFINED_wglGetVideoDeviceNV #define GLEE_C_DEFINED_wglGetVideoDeviceNV BOOL __stdcall GLee_Lazy_wglGetVideoDeviceNV(HDC hDC, int numDevices, HPVIDEODEV * hVideoDevice) {if (GLeeInit()) return wglGetVideoDeviceNV(hDC, numDevices, hVideoDevice); return (BOOL)0;} GLEEPFNWGLGETVIDEODEVICENVPROC GLeeFuncPtr_wglGetVideoDeviceNV=GLee_Lazy_wglGetVideoDeviceNV; #endif #ifndef GLEE_C_DEFINED_wglReleaseVideoDeviceNV #define GLEE_C_DEFINED_wglReleaseVideoDeviceNV BOOL __stdcall GLee_Lazy_wglReleaseVideoDeviceNV(HPVIDEODEV hVideoDevice) {if (GLeeInit()) return wglReleaseVideoDeviceNV(hVideoDevice); return (BOOL)0;} GLEEPFNWGLRELEASEVIDEODEVICENVPROC GLeeFuncPtr_wglReleaseVideoDeviceNV=GLee_Lazy_wglReleaseVideoDeviceNV; #endif #ifndef GLEE_C_DEFINED_wglBindVideoImageNV #define GLEE_C_DEFINED_wglBindVideoImageNV BOOL __stdcall GLee_Lazy_wglBindVideoImageNV(HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer) {if (GLeeInit()) return wglBindVideoImageNV(hVideoDevice, hPbuffer, iVideoBuffer); return (BOOL)0;} GLEEPFNWGLBINDVIDEOIMAGENVPROC GLeeFuncPtr_wglBindVideoImageNV=GLee_Lazy_wglBindVideoImageNV; #endif #ifndef GLEE_C_DEFINED_wglReleaseVideoImageNV #define GLEE_C_DEFINED_wglReleaseVideoImageNV BOOL __stdcall GLee_Lazy_wglReleaseVideoImageNV(HPBUFFERARB hPbuffer, int iVideoBuffer) {if (GLeeInit()) return wglReleaseVideoImageNV(hPbuffer, iVideoBuffer); return (BOOL)0;} GLEEPFNWGLRELEASEVIDEOIMAGENVPROC GLeeFuncPtr_wglReleaseVideoImageNV=GLee_Lazy_wglReleaseVideoImageNV; #endif #ifndef GLEE_C_DEFINED_wglSendPbufferToVideoNV #define GLEE_C_DEFINED_wglSendPbufferToVideoNV BOOL __stdcall GLee_Lazy_wglSendPbufferToVideoNV(HPBUFFERARB hPbuffer, int iBufferType, unsigned long * pulCounterPbuffer, BOOL bBlock) {if (GLeeInit()) return wglSendPbufferToVideoNV(hPbuffer, iBufferType, pulCounterPbuffer, bBlock); return (BOOL)0;} GLEEPFNWGLSENDPBUFFERTOVIDEONVPROC GLeeFuncPtr_wglSendPbufferToVideoNV=GLee_Lazy_wglSendPbufferToVideoNV; #endif #ifndef GLEE_C_DEFINED_wglGetVideoInfoNV #define GLEE_C_DEFINED_wglGetVideoInfoNV BOOL __stdcall GLee_Lazy_wglGetVideoInfoNV(HPVIDEODEV hpVideoDevice, unsigned long * pulCounterOutputPbuffer, unsigned long * pulCounterOutputVideo) {if (GLeeInit()) return wglGetVideoInfoNV(hpVideoDevice, pulCounterOutputPbuffer, pulCounterOutputVideo); return (BOOL)0;} GLEEPFNWGLGETVIDEOINFONVPROC GLeeFuncPtr_wglGetVideoInfoNV=GLee_Lazy_wglGetVideoInfoNV; #endif #endif #elif defined(__APPLE__) || defined(__APPLE_CC__) #else /* GLX */ /* Extension querying variables */ GLboolean _GLEE_GLX_VERSION_1_3 = GL_FALSE; GLboolean _GLEE_GLX_VERSION_1_4 = GL_FALSE; GLboolean _GLEE_GLX_ARB_multisample = GL_FALSE; GLboolean _GLEE_GLX_ARB_vertex_buffer_object = GL_FALSE; GLboolean _GLEE_GLX_ARB_fbconfig_float = GL_FALSE; GLboolean _GLEE_GLX_ARB_framebuffer_sRGB = GL_FALSE; GLboolean _GLEE_GLX_ARB_create_context = GL_FALSE; GLboolean _GLEE_GLX_ARB_create_context_profile = GL_FALSE; GLboolean _GLEE_GLX_ARB_create_context_robustness = GL_FALSE; GLboolean _GLEE_GLX_SGIS_multisample = GL_FALSE; GLboolean _GLEE_GLX_EXT_visual_info = GL_FALSE; GLboolean _GLEE_GLX_SGI_swap_control = GL_FALSE; GLboolean _GLEE_GLX_SGI_video_sync = GL_FALSE; GLboolean _GLEE_GLX_SGI_make_current_read = GL_FALSE; GLboolean _GLEE_GLX_EXT_visual_rating = GL_FALSE; GLboolean _GLEE_GLX_EXT_import_context = GL_FALSE; GLboolean _GLEE_GLX_SGIX_fbconfig = GL_FALSE; GLboolean _GLEE_GLX_SGIX_pbuffer = GL_FALSE; GLboolean _GLEE_GLX_SGI_cushion = GL_FALSE; GLboolean _GLEE_GLX_SGIX_video_resize = GL_FALSE; GLboolean _GLEE_GLX_SGIX_swap_group = GL_FALSE; GLboolean _GLEE_GLX_SGIX_swap_barrier = GL_FALSE; GLboolean _GLEE_GLX_SGIS_blended_overlay = GL_FALSE; GLboolean _GLEE_GLX_SGIS_shared_multisample = GL_FALSE; GLboolean _GLEE_GLX_SUN_get_transparent_index = GL_FALSE; GLboolean _GLEE_GLX_3DFX_multisample = GL_FALSE; GLboolean _GLEE_GLX_MESA_copy_sub_buffer = GL_FALSE; GLboolean _GLEE_GLX_MESA_pixmap_colormap = GL_FALSE; GLboolean _GLEE_GLX_MESA_release_buffers = GL_FALSE; GLboolean _GLEE_GLX_MESA_set_3dfx_mode = GL_FALSE; GLboolean _GLEE_GLX_SGIX_visual_select_group = GL_FALSE; GLboolean _GLEE_GLX_OML_swap_method = GL_FALSE; GLboolean _GLEE_GLX_OML_sync_control = GL_FALSE; GLboolean _GLEE_GLX_NV_float_buffer = GL_FALSE; GLboolean _GLEE_GLX_SGIX_hyperpipe = GL_FALSE; GLboolean _GLEE_GLX_MESA_agp_offset = GL_FALSE; GLboolean _GLEE_GLX_EXT_fbconfig_packed_float = GL_FALSE; GLboolean _GLEE_GLX_EXT_framebuffer_sRGB = GL_FALSE; GLboolean _GLEE_GLX_EXT_texture_from_pixmap = GL_FALSE; GLboolean _GLEE_GLX_NV_present_video = GL_FALSE; GLboolean _GLEE_GLX_NV_video_out = GL_FALSE; GLboolean _GLEE_GLX_NV_swap_group = GL_FALSE; GLboolean _GLEE_GLX_NV_video_capture = GL_FALSE; GLboolean _GLEE_GLX_EXT_swap_control = GL_FALSE; GLboolean _GLEE_GLX_NV_copy_image = GL_FALSE; GLboolean _GLEE_GLX_INTEL_swap_event = GL_FALSE; GLboolean _GLEE_GLX_NV_multisample_coverage = GL_FALSE; GLboolean _GLEE_GLX_AMD_gpu_association = GL_FALSE; GLboolean _GLEE_GLX_EXT_create_context_es2_profile = GL_FALSE; GLboolean _GLEE_GLX_EXT_create_context_es_profile = GL_FALSE; GLboolean _GLEE_GLX_EXT_swap_control_tear = GL_FALSE; GLboolean _GLEE_GLX_EXT_buffer_age = GL_FALSE; GLboolean _GLEE_GLX_NV_video_output = GL_FALSE; /* GLX Extension names */ char __GLeeGLXExtensionNames[53][35]={ "GLX_VERSION_1_3", "GLX_VERSION_1_4", "GLX_ARB_multisample", "GLX_ARB_vertex_buffer_object", "GLX_ARB_fbconfig_float", "GLX_ARB_framebuffer_sRGB", "GLX_ARB_create_context", "GLX_ARB_create_context_profile", "GLX_ARB_create_context_robustness", "GLX_SGIS_multisample", "GLX_EXT_visual_info", "GLX_SGI_swap_control", "GLX_SGI_video_sync", "GLX_SGI_make_current_read", "GLX_EXT_visual_rating", "GLX_EXT_import_context", "GLX_SGIX_fbconfig", "GLX_SGIX_pbuffer", "GLX_SGI_cushion", "GLX_SGIX_video_resize", "GLX_SGIX_swap_group", "GLX_SGIX_swap_barrier", "GLX_SGIS_blended_overlay", "GLX_SGIS_shared_multisample", "GLX_SUN_get_transparent_index", "GLX_3DFX_multisample", "GLX_MESA_copy_sub_buffer", "GLX_MESA_pixmap_colormap", "GLX_MESA_release_buffers", "GLX_MESA_set_3dfx_mode", "GLX_SGIX_visual_select_group", "GLX_OML_swap_method", "GLX_OML_sync_control", "GLX_NV_float_buffer", "GLX_SGIX_hyperpipe", "GLX_MESA_agp_offset", "GLX_EXT_fbconfig_packed_float", "GLX_EXT_framebuffer_sRGB", "GLX_EXT_texture_from_pixmap", "GLX_NV_present_video", "GLX_NV_video_out", "GLX_NV_swap_group", "GLX_NV_video_capture", "GLX_EXT_swap_control", "GLX_NV_copy_image", "GLX_INTEL_swap_event", "GLX_NV_multisample_coverage", "GLX_AMD_gpu_association", "GLX_EXT_create_context_es2_profile", "GLX_EXT_create_context_es_profile", "GLX_EXT_swap_control_tear", "GLX_EXT_buffer_age", "GLX_NV_video_output" }; int __GLeeGLXNumExtensions=53; /* GLX_VERSION_1_3 */ #ifdef __GLEE_GLX_VERSION_1_3 #ifndef GLEE_C_DEFINED_glXGetFBConfigs #define GLEE_C_DEFINED_glXGetFBConfigs GLXFBConfig * __stdcall GLee_Lazy_glXGetFBConfigs(Display * dpy, int screen, int * nelements) {if (GLeeInit()) return glXGetFBConfigs(dpy, screen, nelements); return (GLXFBConfig *)0;} GLEEPFNGLXGETFBCONFIGSPROC GLeeFuncPtr_glXGetFBConfigs=GLee_Lazy_glXGetFBConfigs; #endif #ifndef GLEE_C_DEFINED_glXChooseFBConfig #define GLEE_C_DEFINED_glXChooseFBConfig GLXFBConfig * __stdcall GLee_Lazy_glXChooseFBConfig(Display * dpy, int screen, const int * attrib_list, int * nelements) {if (GLeeInit()) return glXChooseFBConfig(dpy, screen, attrib_list, nelements); return (GLXFBConfig *)0;} GLEEPFNGLXCHOOSEFBCONFIGPROC GLeeFuncPtr_glXChooseFBConfig=GLee_Lazy_glXChooseFBConfig; #endif #ifndef GLEE_C_DEFINED_glXGetFBConfigAttrib #define GLEE_C_DEFINED_glXGetFBConfigAttrib int __stdcall GLee_Lazy_glXGetFBConfigAttrib(Display * dpy, GLXFBConfig config, int attribute, int * value) {if (GLeeInit()) return glXGetFBConfigAttrib(dpy, config, attribute, value); return (int)0;} GLEEPFNGLXGETFBCONFIGATTRIBPROC GLeeFuncPtr_glXGetFBConfigAttrib=GLee_Lazy_glXGetFBConfigAttrib; #endif #ifndef GLEE_C_DEFINED_glXGetVisualFromFBConfig #define GLEE_C_DEFINED_glXGetVisualFromFBConfig XVisualInfo * __stdcall GLee_Lazy_glXGetVisualFromFBConfig(Display * dpy, GLXFBConfig config) {if (GLeeInit()) return glXGetVisualFromFBConfig(dpy, config); return (XVisualInfo *)0;} GLEEPFNGLXGETVISUALFROMFBCONFIGPROC GLeeFuncPtr_glXGetVisualFromFBConfig=GLee_Lazy_glXGetVisualFromFBConfig; #endif #ifndef GLEE_C_DEFINED_glXCreateWindow #define GLEE_C_DEFINED_glXCreateWindow GLXWindow __stdcall GLee_Lazy_glXCreateWindow(Display * dpy, GLXFBConfig config, Window win, const int * attrib_list) {if (GLeeInit()) return glXCreateWindow(dpy, config, win, attrib_list); return (GLXWindow)0;} GLEEPFNGLXCREATEWINDOWPROC GLeeFuncPtr_glXCreateWindow=GLee_Lazy_glXCreateWindow; #endif #ifndef GLEE_C_DEFINED_glXDestroyWindow #define GLEE_C_DEFINED_glXDestroyWindow void __stdcall GLee_Lazy_glXDestroyWindow(Display * dpy, GLXWindow win) {if (GLeeInit()) glXDestroyWindow(dpy, win);} GLEEPFNGLXDESTROYWINDOWPROC GLeeFuncPtr_glXDestroyWindow=GLee_Lazy_glXDestroyWindow; #endif #ifndef GLEE_C_DEFINED_glXCreatePixmap #define GLEE_C_DEFINED_glXCreatePixmap GLXPixmap __stdcall GLee_Lazy_glXCreatePixmap(Display * dpy, GLXFBConfig config, Pixmap pixmap, const int * attrib_list) {if (GLeeInit()) return glXCreatePixmap(dpy, config, pixmap, attrib_list); return (GLXPixmap)0;} GLEEPFNGLXCREATEPIXMAPPROC GLeeFuncPtr_glXCreatePixmap=GLee_Lazy_glXCreatePixmap; #endif #ifndef GLEE_C_DEFINED_glXDestroyPixmap #define GLEE_C_DEFINED_glXDestroyPixmap void __stdcall GLee_Lazy_glXDestroyPixmap(Display * dpy, GLXPixmap pixmap) {if (GLeeInit()) glXDestroyPixmap(dpy, pixmap);} GLEEPFNGLXDESTROYPIXMAPPROC GLeeFuncPtr_glXDestroyPixmap=GLee_Lazy_glXDestroyPixmap; #endif #ifndef GLEE_C_DEFINED_glXCreatePbuffer #define GLEE_C_DEFINED_glXCreatePbuffer GLXPbuffer __stdcall GLee_Lazy_glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int * attrib_list) {if (GLeeInit()) return glXCreatePbuffer(dpy, config, attrib_list); return (GLXPbuffer)0;} GLEEPFNGLXCREATEPBUFFERPROC GLeeFuncPtr_glXCreatePbuffer=GLee_Lazy_glXCreatePbuffer; #endif #ifndef GLEE_C_DEFINED_glXDestroyPbuffer #define GLEE_C_DEFINED_glXDestroyPbuffer void __stdcall GLee_Lazy_glXDestroyPbuffer(Display * dpy, GLXPbuffer pbuf) {if (GLeeInit()) glXDestroyPbuffer(dpy, pbuf);} GLEEPFNGLXDESTROYPBUFFERPROC GLeeFuncPtr_glXDestroyPbuffer=GLee_Lazy_glXDestroyPbuffer; #endif #ifndef GLEE_C_DEFINED_glXQueryDrawable #define GLEE_C_DEFINED_glXQueryDrawable void __stdcall GLee_Lazy_glXQueryDrawable(Display * dpy, GLXDrawable draw, int attribute, unsigned int * value) {if (GLeeInit()) glXQueryDrawable(dpy, draw, attribute, value);} GLEEPFNGLXQUERYDRAWABLEPROC GLeeFuncPtr_glXQueryDrawable=GLee_Lazy_glXQueryDrawable; #endif #ifndef GLEE_C_DEFINED_glXCreateNewContext #define GLEE_C_DEFINED_glXCreateNewContext GLXContext __stdcall GLee_Lazy_glXCreateNewContext(Display * dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct) {if (GLeeInit()) return glXCreateNewContext(dpy, config, render_type, share_list, direct); return (GLXContext)0;} GLEEPFNGLXCREATENEWCONTEXTPROC GLeeFuncPtr_glXCreateNewContext=GLee_Lazy_glXCreateNewContext; #endif #ifndef GLEE_C_DEFINED_glXMakeContextCurrent #define GLEE_C_DEFINED_glXMakeContextCurrent Bool __stdcall GLee_Lazy_glXMakeContextCurrent(Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) {if (GLeeInit()) return glXMakeContextCurrent(dpy, draw, read, ctx); return (Bool)0;} GLEEPFNGLXMAKECONTEXTCURRENTPROC GLeeFuncPtr_glXMakeContextCurrent=GLee_Lazy_glXMakeContextCurrent; #endif #ifndef GLEE_C_DEFINED_glXGetCurrentReadDrawable #define GLEE_C_DEFINED_glXGetCurrentReadDrawable GLXDrawable __stdcall GLee_Lazy_glXGetCurrentReadDrawable(void) {if (GLeeInit()) return glXGetCurrentReadDrawable(); return (GLXDrawable)0;} GLEEPFNGLXGETCURRENTREADDRAWABLEPROC GLeeFuncPtr_glXGetCurrentReadDrawable=GLee_Lazy_glXGetCurrentReadDrawable; #endif #ifndef GLEE_C_DEFINED_glXGetCurrentDisplay #define GLEE_C_DEFINED_glXGetCurrentDisplay Display * __stdcall GLee_Lazy_glXGetCurrentDisplay(void) {if (GLeeInit()) return glXGetCurrentDisplay(); return (Display *)0;} GLEEPFNGLXGETCURRENTDISPLAYPROC GLeeFuncPtr_glXGetCurrentDisplay=GLee_Lazy_glXGetCurrentDisplay; #endif #ifndef GLEE_C_DEFINED_glXQueryContext #define GLEE_C_DEFINED_glXQueryContext int __stdcall GLee_Lazy_glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int * value) {if (GLeeInit()) return glXQueryContext(dpy, ctx, attribute, value); return (int)0;} GLEEPFNGLXQUERYCONTEXTPROC GLeeFuncPtr_glXQueryContext=GLee_Lazy_glXQueryContext; #endif #ifndef GLEE_C_DEFINED_glXSelectEvent #define GLEE_C_DEFINED_glXSelectEvent void __stdcall GLee_Lazy_glXSelectEvent(Display * dpy, GLXDrawable draw, unsigned long event_mask) {if (GLeeInit()) glXSelectEvent(dpy, draw, event_mask);} GLEEPFNGLXSELECTEVENTPROC GLeeFuncPtr_glXSelectEvent=GLee_Lazy_glXSelectEvent; #endif #ifndef GLEE_C_DEFINED_glXGetSelectedEvent #define GLEE_C_DEFINED_glXGetSelectedEvent void __stdcall GLee_Lazy_glXGetSelectedEvent(Display * dpy, GLXDrawable draw, unsigned long * event_mask) {if (GLeeInit()) glXGetSelectedEvent(dpy, draw, event_mask);} GLEEPFNGLXGETSELECTEDEVENTPROC GLeeFuncPtr_glXGetSelectedEvent=GLee_Lazy_glXGetSelectedEvent; #endif #endif /* GLX_VERSION_1_4 */ #ifdef __GLEE_GLX_VERSION_1_4 #ifndef GLEE_C_DEFINED_glXGetProcAddress #define GLEE_C_DEFINED_glXGetProcAddress __GLXextFuncPtr __stdcall GLee_Lazy_glXGetProcAddress(const GLubyte * procName) {if (GLeeInit()) return glXGetProcAddress(procName); return (__GLXextFuncPtr)0;} GLEEPFNGLXGETPROCADDRESSPROC GLeeFuncPtr_glXGetProcAddress=GLee_Lazy_glXGetProcAddress; #endif #endif /* GLX_ARB_multisample */ #ifdef __GLEE_GLX_ARB_multisample #endif /* GLX_ARB_vertex_buffer_object */ #ifdef __GLEE_GLX_ARB_vertex_buffer_object #endif /* GLX_ARB_fbconfig_float */ #ifdef __GLEE_GLX_ARB_fbconfig_float #endif /* GLX_ARB_framebuffer_sRGB */ #ifdef __GLEE_GLX_ARB_framebuffer_sRGB #endif /* GLX_ARB_create_context */ #ifdef __GLEE_GLX_ARB_create_context #ifndef GLEE_C_DEFINED_glXCreateContextAttribsARB #define GLEE_C_DEFINED_glXCreateContextAttribsARB GLXContext __stdcall GLee_Lazy_glXCreateContextAttribsARB(Display * dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int * attrib_list) {if (GLeeInit()) return glXCreateContextAttribsARB(dpy, config, share_context, direct, attrib_list); return (GLXContext)0;} GLEEPFNGLXCREATECONTEXTATTRIBSARBPROC GLeeFuncPtr_glXCreateContextAttribsARB=GLee_Lazy_glXCreateContextAttribsARB; #endif #endif /* GLX_ARB_create_context_profile */ #ifdef __GLEE_GLX_ARB_create_context_profile #endif /* GLX_ARB_create_context_robustness */ #ifdef __GLEE_GLX_ARB_create_context_robustness #endif /* GLX_SGIS_multisample */ #ifdef __GLEE_GLX_SGIS_multisample #endif /* GLX_EXT_visual_info */ #ifdef __GLEE_GLX_EXT_visual_info #endif /* GLX_SGI_swap_control */ #ifdef __GLEE_GLX_SGI_swap_control #ifndef GLEE_C_DEFINED_glXSwapIntervalSGI #define GLEE_C_DEFINED_glXSwapIntervalSGI int __stdcall GLee_Lazy_glXSwapIntervalSGI(int interval) {if (GLeeInit()) return glXSwapIntervalSGI(interval); return (int)0;} GLEEPFNGLXSWAPINTERVALSGIPROC GLeeFuncPtr_glXSwapIntervalSGI=GLee_Lazy_glXSwapIntervalSGI; #endif #endif /* GLX_SGI_video_sync */ #ifdef __GLEE_GLX_SGI_video_sync #ifndef GLEE_C_DEFINED_glXGetVideoSyncSGI #define GLEE_C_DEFINED_glXGetVideoSyncSGI int __stdcall GLee_Lazy_glXGetVideoSyncSGI(unsigned int * count) {if (GLeeInit()) return glXGetVideoSyncSGI(count); return (int)0;} GLEEPFNGLXGETVIDEOSYNCSGIPROC GLeeFuncPtr_glXGetVideoSyncSGI=GLee_Lazy_glXGetVideoSyncSGI; #endif #ifndef GLEE_C_DEFINED_glXWaitVideoSyncSGI #define GLEE_C_DEFINED_glXWaitVideoSyncSGI int __stdcall GLee_Lazy_glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int * count) {if (GLeeInit()) return glXWaitVideoSyncSGI(divisor, remainder, count); return (int)0;} GLEEPFNGLXWAITVIDEOSYNCSGIPROC GLeeFuncPtr_glXWaitVideoSyncSGI=GLee_Lazy_glXWaitVideoSyncSGI; #endif #endif /* GLX_SGI_make_current_read */ #ifdef __GLEE_GLX_SGI_make_current_read #ifndef GLEE_C_DEFINED_glXMakeCurrentReadSGI #define GLEE_C_DEFINED_glXMakeCurrentReadSGI Bool __stdcall GLee_Lazy_glXMakeCurrentReadSGI(Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx) {if (GLeeInit()) return glXMakeCurrentReadSGI(dpy, draw, read, ctx); return (Bool)0;} GLEEPFNGLXMAKECURRENTREADSGIPROC GLeeFuncPtr_glXMakeCurrentReadSGI=GLee_Lazy_glXMakeCurrentReadSGI; #endif #ifndef GLEE_C_DEFINED_glXGetCurrentReadDrawableSGI #define GLEE_C_DEFINED_glXGetCurrentReadDrawableSGI GLXDrawable __stdcall GLee_Lazy_glXGetCurrentReadDrawableSGI(void) {if (GLeeInit()) return glXGetCurrentReadDrawableSGI(); return (GLXDrawable)0;} GLEEPFNGLXGETCURRENTREADDRAWABLESGIPROC GLeeFuncPtr_glXGetCurrentReadDrawableSGI=GLee_Lazy_glXGetCurrentReadDrawableSGI; #endif #endif /* GLX_EXT_visual_rating */ #ifdef __GLEE_GLX_EXT_visual_rating #endif /* GLX_EXT_import_context */ #ifdef __GLEE_GLX_EXT_import_context #ifndef GLEE_C_DEFINED_glXGetCurrentDisplayEXT #define GLEE_C_DEFINED_glXGetCurrentDisplayEXT Display * __stdcall GLee_Lazy_glXGetCurrentDisplayEXT(void) {if (GLeeInit()) return glXGetCurrentDisplayEXT(); return (Display *)0;} GLEEPFNGLXGETCURRENTDISPLAYEXTPROC GLeeFuncPtr_glXGetCurrentDisplayEXT=GLee_Lazy_glXGetCurrentDisplayEXT; #endif #ifndef GLEE_C_DEFINED_glXQueryContextInfoEXT #define GLEE_C_DEFINED_glXQueryContextInfoEXT int __stdcall GLee_Lazy_glXQueryContextInfoEXT(Display * dpy, GLXContext context, int attribute, int * value) {if (GLeeInit()) return glXQueryContextInfoEXT(dpy, context, attribute, value); return (int)0;} GLEEPFNGLXQUERYCONTEXTINFOEXTPROC GLeeFuncPtr_glXQueryContextInfoEXT=GLee_Lazy_glXQueryContextInfoEXT; #endif #ifndef GLEE_C_DEFINED_glXGetContextIDEXT #define GLEE_C_DEFINED_glXGetContextIDEXT GLEE_GLXContextID __stdcall GLee_Lazy_glXGetContextIDEXT(const GLXContext context) {if (GLeeInit()) return glXGetContextIDEXT(context); return (GLEE_GLXContextID)0;} GLEEPFNGLXGETCONTEXTIDEXTPROC GLeeFuncPtr_glXGetContextIDEXT=GLee_Lazy_glXGetContextIDEXT; #endif #ifndef GLEE_C_DEFINED_glXImportContextEXT #define GLEE_C_DEFINED_glXImportContextEXT GLXContext __stdcall GLee_Lazy_glXImportContextEXT(Display * dpy, GLEE_GLXContextID contextID) {if (GLeeInit()) return glXImportContextEXT(dpy, contextID); return (GLXContext)0;} GLEEPFNGLXIMPORTCONTEXTEXTPROC GLeeFuncPtr_glXImportContextEXT=GLee_Lazy_glXImportContextEXT; #endif #ifndef GLEE_C_DEFINED_glXFreeContextEXT #define GLEE_C_DEFINED_glXFreeContextEXT void __stdcall GLee_Lazy_glXFreeContextEXT(Display * dpy, GLXContext context) {if (GLeeInit()) glXFreeContextEXT(dpy, context);} GLEEPFNGLXFREECONTEXTEXTPROC GLeeFuncPtr_glXFreeContextEXT=GLee_Lazy_glXFreeContextEXT; #endif #endif /* GLX_SGIX_fbconfig */ #ifdef __GLEE_GLX_SGIX_fbconfig #ifndef GLEE_C_DEFINED_glXGetFBConfigAttribSGIX #define GLEE_C_DEFINED_glXGetFBConfigAttribSGIX int __stdcall GLee_Lazy_glXGetFBConfigAttribSGIX(Display * dpy, GLXFBConfigSGIX config, int attribute, int * value) {if (GLeeInit()) return glXGetFBConfigAttribSGIX(dpy, config, attribute, value); return (int)0;} GLEEPFNGLXGETFBCONFIGATTRIBSGIXPROC GLeeFuncPtr_glXGetFBConfigAttribSGIX=GLee_Lazy_glXGetFBConfigAttribSGIX; #endif #ifndef GLEE_C_DEFINED_glXChooseFBConfigSGIX #define GLEE_C_DEFINED_glXChooseFBConfigSGIX GLXFBConfigSGIX * __stdcall GLee_Lazy_glXChooseFBConfigSGIX(Display * dpy, int screen, int * attrib_list, int * nelements) {if (GLeeInit()) return glXChooseFBConfigSGIX(dpy, screen, attrib_list, nelements); return (GLXFBConfigSGIX *)0;} GLEEPFNGLXCHOOSEFBCONFIGSGIXPROC GLeeFuncPtr_glXChooseFBConfigSGIX=GLee_Lazy_glXChooseFBConfigSGIX; #endif #ifndef GLEE_C_DEFINED_glXCreateGLXPixmapWithConfigSGIX #define GLEE_C_DEFINED_glXCreateGLXPixmapWithConfigSGIX GLXPixmap __stdcall GLee_Lazy_glXCreateGLXPixmapWithConfigSGIX(Display * dpy, GLXFBConfigSGIX config, Pixmap pixmap) {if (GLeeInit()) return glXCreateGLXPixmapWithConfigSGIX(dpy, config, pixmap); return (GLXPixmap)0;} GLEEPFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC GLeeFuncPtr_glXCreateGLXPixmapWithConfigSGIX=GLee_Lazy_glXCreateGLXPixmapWithConfigSGIX; #endif #ifndef GLEE_C_DEFINED_glXCreateContextWithConfigSGIX #define GLEE_C_DEFINED_glXCreateContextWithConfigSGIX GLXContext __stdcall GLee_Lazy_glXCreateContextWithConfigSGIX(Display * dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct) {if (GLeeInit()) return glXCreateContextWithConfigSGIX(dpy, config, render_type, share_list, direct); return (GLXContext)0;} GLEEPFNGLXCREATECONTEXTWITHCONFIGSGIXPROC GLeeFuncPtr_glXCreateContextWithConfigSGIX=GLee_Lazy_glXCreateContextWithConfigSGIX; #endif #ifndef GLEE_C_DEFINED_glXGetVisualFromFBConfigSGIX #define GLEE_C_DEFINED_glXGetVisualFromFBConfigSGIX XVisualInfo * __stdcall GLee_Lazy_glXGetVisualFromFBConfigSGIX(Display * dpy, GLXFBConfigSGIX config) {if (GLeeInit()) return glXGetVisualFromFBConfigSGIX(dpy, config); return (XVisualInfo *)0;} GLEEPFNGLXGETVISUALFROMFBCONFIGSGIXPROC GLeeFuncPtr_glXGetVisualFromFBConfigSGIX=GLee_Lazy_glXGetVisualFromFBConfigSGIX; #endif #ifndef GLEE_C_DEFINED_glXGetFBConfigFromVisualSGIX #define GLEE_C_DEFINED_glXGetFBConfigFromVisualSGIX GLXFBConfigSGIX __stdcall GLee_Lazy_glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * vis) {if (GLeeInit()) return glXGetFBConfigFromVisualSGIX(dpy, vis); return (GLXFBConfigSGIX)0;} GLEEPFNGLXGETFBCONFIGFROMVISUALSGIXPROC GLeeFuncPtr_glXGetFBConfigFromVisualSGIX=GLee_Lazy_glXGetFBConfigFromVisualSGIX; #endif #endif /* GLX_SGIX_pbuffer */ #ifdef __GLEE_GLX_SGIX_pbuffer #ifndef GLEE_C_DEFINED_glXCreateGLXPbufferSGIX #define GLEE_C_DEFINED_glXCreateGLXPbufferSGIX GLXPbufferSGIX __stdcall GLee_Lazy_glXCreateGLXPbufferSGIX(Display * dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int * attrib_list) {if (GLeeInit()) return glXCreateGLXPbufferSGIX(dpy, config, width, height, attrib_list); return (GLXPbufferSGIX)0;} GLEEPFNGLXCREATEGLXPBUFFERSGIXPROC GLeeFuncPtr_glXCreateGLXPbufferSGIX=GLee_Lazy_glXCreateGLXPbufferSGIX; #endif #ifndef GLEE_C_DEFINED_glXDestroyGLXPbufferSGIX #define GLEE_C_DEFINED_glXDestroyGLXPbufferSGIX void __stdcall GLee_Lazy_glXDestroyGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX pbuf) {if (GLeeInit()) glXDestroyGLXPbufferSGIX(dpy, pbuf);} GLEEPFNGLXDESTROYGLXPBUFFERSGIXPROC GLeeFuncPtr_glXDestroyGLXPbufferSGIX=GLee_Lazy_glXDestroyGLXPbufferSGIX; #endif #ifndef GLEE_C_DEFINED_glXQueryGLXPbufferSGIX #define GLEE_C_DEFINED_glXQueryGLXPbufferSGIX int __stdcall GLee_Lazy_glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int * value) {if (GLeeInit()) return glXQueryGLXPbufferSGIX(dpy, pbuf, attribute, value); return (int)0;} GLEEPFNGLXQUERYGLXPBUFFERSGIXPROC GLeeFuncPtr_glXQueryGLXPbufferSGIX=GLee_Lazy_glXQueryGLXPbufferSGIX; #endif #ifndef GLEE_C_DEFINED_glXSelectEventSGIX #define GLEE_C_DEFINED_glXSelectEventSGIX void __stdcall GLee_Lazy_glXSelectEventSGIX(Display * dpy, GLXDrawable drawable, unsigned long mask) {if (GLeeInit()) glXSelectEventSGIX(dpy, drawable, mask);} GLEEPFNGLXSELECTEVENTSGIXPROC GLeeFuncPtr_glXSelectEventSGIX=GLee_Lazy_glXSelectEventSGIX; #endif #ifndef GLEE_C_DEFINED_glXGetSelectedEventSGIX #define GLEE_C_DEFINED_glXGetSelectedEventSGIX void __stdcall GLee_Lazy_glXGetSelectedEventSGIX(Display * dpy, GLXDrawable drawable, unsigned long * mask) {if (GLeeInit()) glXGetSelectedEventSGIX(dpy, drawable, mask);} GLEEPFNGLXGETSELECTEDEVENTSGIXPROC GLeeFuncPtr_glXGetSelectedEventSGIX=GLee_Lazy_glXGetSelectedEventSGIX; #endif #endif /* GLX_SGI_cushion */ #ifdef __GLEE_GLX_SGI_cushion #ifndef GLEE_C_DEFINED_glXCushionSGI #define GLEE_C_DEFINED_glXCushionSGI void __stdcall GLee_Lazy_glXCushionSGI(Display * dpy, Window window, float cushion) {if (GLeeInit()) glXCushionSGI(dpy, window, cushion);} GLEEPFNGLXCUSHIONSGIPROC GLeeFuncPtr_glXCushionSGI=GLee_Lazy_glXCushionSGI; #endif #endif /* GLX_SGIX_video_resize */ #ifdef __GLEE_GLX_SGIX_video_resize #ifndef GLEE_C_DEFINED_glXBindChannelToWindowSGIX #define GLEE_C_DEFINED_glXBindChannelToWindowSGIX int __stdcall GLee_Lazy_glXBindChannelToWindowSGIX(Display * display, int screen, int channel, Window window) {if (GLeeInit()) return glXBindChannelToWindowSGIX(display, screen, channel, window); return (int)0;} GLEEPFNGLXBINDCHANNELTOWINDOWSGIXPROC GLeeFuncPtr_glXBindChannelToWindowSGIX=GLee_Lazy_glXBindChannelToWindowSGIX; #endif #ifndef GLEE_C_DEFINED_glXChannelRectSGIX #define GLEE_C_DEFINED_glXChannelRectSGIX int __stdcall GLee_Lazy_glXChannelRectSGIX(Display * display, int screen, int channel, int x, int y, int w, int h) {if (GLeeInit()) return glXChannelRectSGIX(display, screen, channel, x, y, w, h); return (int)0;} GLEEPFNGLXCHANNELRECTSGIXPROC GLeeFuncPtr_glXChannelRectSGIX=GLee_Lazy_glXChannelRectSGIX; #endif #ifndef GLEE_C_DEFINED_glXQueryChannelRectSGIX #define GLEE_C_DEFINED_glXQueryChannelRectSGIX int __stdcall GLee_Lazy_glXQueryChannelRectSGIX(Display * display, int screen, int channel, int * dx, int * dy, int * dw, int * dh) {if (GLeeInit()) return glXQueryChannelRectSGIX(display, screen, channel, dx, dy, dw, dh); return (int)0;} GLEEPFNGLXQUERYCHANNELRECTSGIXPROC GLeeFuncPtr_glXQueryChannelRectSGIX=GLee_Lazy_glXQueryChannelRectSGIX; #endif #ifndef GLEE_C_DEFINED_glXQueryChannelDeltasSGIX #define GLEE_C_DEFINED_glXQueryChannelDeltasSGIX int __stdcall GLee_Lazy_glXQueryChannelDeltasSGIX(Display * display, int screen, int channel, int * x, int * y, int * w, int * h) {if (GLeeInit()) return glXQueryChannelDeltasSGIX(display, screen, channel, x, y, w, h); return (int)0;} GLEEPFNGLXQUERYCHANNELDELTASSGIXPROC GLeeFuncPtr_glXQueryChannelDeltasSGIX=GLee_Lazy_glXQueryChannelDeltasSGIX; #endif #ifndef GLEE_C_DEFINED_glXChannelRectSyncSGIX #define GLEE_C_DEFINED_glXChannelRectSyncSGIX int __stdcall GLee_Lazy_glXChannelRectSyncSGIX(Display * display, int screen, int channel, GLenum synctype) {if (GLeeInit()) return glXChannelRectSyncSGIX(display, screen, channel, synctype); return (int)0;} GLEEPFNGLXCHANNELRECTSYNCSGIXPROC GLeeFuncPtr_glXChannelRectSyncSGIX=GLee_Lazy_glXChannelRectSyncSGIX; #endif #endif /* GLX_SGIX_swap_group */ #ifdef __GLEE_GLX_SGIX_swap_group #ifndef GLEE_C_DEFINED_glXJoinSwapGroupSGIX #define GLEE_C_DEFINED_glXJoinSwapGroupSGIX void __stdcall GLee_Lazy_glXJoinSwapGroupSGIX(Display * dpy, GLXDrawable drawable, GLXDrawable member) {if (GLeeInit()) glXJoinSwapGroupSGIX(dpy, drawable, member);} GLEEPFNGLXJOINSWAPGROUPSGIXPROC GLeeFuncPtr_glXJoinSwapGroupSGIX=GLee_Lazy_glXJoinSwapGroupSGIX; #endif #endif /* GLX_SGIX_swap_barrier */ #ifdef __GLEE_GLX_SGIX_swap_barrier #ifndef GLEE_C_DEFINED_glXBindSwapBarrierSGIX #define GLEE_C_DEFINED_glXBindSwapBarrierSGIX void __stdcall GLee_Lazy_glXBindSwapBarrierSGIX(Display * dpy, GLXDrawable drawable, int barrier) {if (GLeeInit()) glXBindSwapBarrierSGIX(dpy, drawable, barrier);} GLEEPFNGLXBINDSWAPBARRIERSGIXPROC GLeeFuncPtr_glXBindSwapBarrierSGIX=GLee_Lazy_glXBindSwapBarrierSGIX; #endif #ifndef GLEE_C_DEFINED_glXQueryMaxSwapBarriersSGIX #define GLEE_C_DEFINED_glXQueryMaxSwapBarriersSGIX Bool __stdcall GLee_Lazy_glXQueryMaxSwapBarriersSGIX(Display * dpy, int screen, int * max) {if (GLeeInit()) return glXQueryMaxSwapBarriersSGIX(dpy, screen, max); return (Bool)0;} GLEEPFNGLXQUERYMAXSWAPBARRIERSSGIXPROC GLeeFuncPtr_glXQueryMaxSwapBarriersSGIX=GLee_Lazy_glXQueryMaxSwapBarriersSGIX; #endif #endif /* GLX_SGIS_blended_overlay */ #ifdef __GLEE_GLX_SGIS_blended_overlay #endif /* GLX_SGIS_shared_multisample */ #ifdef __GLEE_GLX_SGIS_shared_multisample #endif /* GLX_SUN_get_transparent_index */ #ifdef __GLEE_GLX_SUN_get_transparent_index #ifndef GLEE_C_DEFINED_glXGetTransparentIndexSUN #define GLEE_C_DEFINED_glXGetTransparentIndexSUN Status __stdcall GLee_Lazy_glXGetTransparentIndexSUN(Display * dpy, Window overlay, Window underlay, long * pTransparentIndex) {if (GLeeInit()) return glXGetTransparentIndexSUN(dpy, overlay, underlay, pTransparentIndex); return (Status)0;} GLEEPFNGLXGETTRANSPARENTINDEXSUNPROC GLeeFuncPtr_glXGetTransparentIndexSUN=GLee_Lazy_glXGetTransparentIndexSUN; #endif #endif /* GLX_3DFX_multisample */ #ifdef __GLEE_GLX_3DFX_multisample #endif /* GLX_MESA_copy_sub_buffer */ #ifdef __GLEE_GLX_MESA_copy_sub_buffer #ifndef GLEE_C_DEFINED_glXCopySubBufferMESA #define GLEE_C_DEFINED_glXCopySubBufferMESA void __stdcall GLee_Lazy_glXCopySubBufferMESA(Display * dpy, GLXDrawable drawable, int x, int y, int width, int height) {if (GLeeInit()) glXCopySubBufferMESA(dpy, drawable, x, y, width, height);} GLEEPFNGLXCOPYSUBBUFFERMESAPROC GLeeFuncPtr_glXCopySubBufferMESA=GLee_Lazy_glXCopySubBufferMESA; #endif #endif /* GLX_MESA_pixmap_colormap */ #ifdef __GLEE_GLX_MESA_pixmap_colormap #ifndef GLEE_C_DEFINED_glXCreateGLXPixmapMESA #define GLEE_C_DEFINED_glXCreateGLXPixmapMESA GLXPixmap __stdcall GLee_Lazy_glXCreateGLXPixmapMESA(Display * dpy, XVisualInfo * visual, Pixmap pixmap, Colormap cmap) {if (GLeeInit()) return glXCreateGLXPixmapMESA(dpy, visual, pixmap, cmap); return (GLXPixmap)0;} GLEEPFNGLXCREATEGLXPIXMAPMESAPROC GLeeFuncPtr_glXCreateGLXPixmapMESA=GLee_Lazy_glXCreateGLXPixmapMESA; #endif #endif /* GLX_MESA_release_buffers */ #ifdef __GLEE_GLX_MESA_release_buffers #ifndef GLEE_C_DEFINED_glXReleaseBuffersMESA #define GLEE_C_DEFINED_glXReleaseBuffersMESA Bool __stdcall GLee_Lazy_glXReleaseBuffersMESA(Display * dpy, GLXDrawable drawable) {if (GLeeInit()) return glXReleaseBuffersMESA(dpy, drawable); return (Bool)0;} GLEEPFNGLXRELEASEBUFFERSMESAPROC GLeeFuncPtr_glXReleaseBuffersMESA=GLee_Lazy_glXReleaseBuffersMESA; #endif #endif /* GLX_MESA_set_3dfx_mode */ #ifdef __GLEE_GLX_MESA_set_3dfx_mode #ifndef GLEE_C_DEFINED_glXSet3DfxModeMESA #define GLEE_C_DEFINED_glXSet3DfxModeMESA Bool __stdcall GLee_Lazy_glXSet3DfxModeMESA(int mode) {if (GLeeInit()) return glXSet3DfxModeMESA(mode); return (Bool)0;} GLEEPFNGLXSET3DFXMODEMESAPROC GLeeFuncPtr_glXSet3DfxModeMESA=GLee_Lazy_glXSet3DfxModeMESA; #endif #endif /* GLX_SGIX_visual_select_group */ #ifdef __GLEE_GLX_SGIX_visual_select_group #endif /* GLX_OML_swap_method */ #ifdef __GLEE_GLX_OML_swap_method #endif /* GLX_OML_sync_control */ #ifdef __GLEE_GLX_OML_sync_control #ifndef GLEE_C_DEFINED_glXGetSyncValuesOML #define GLEE_C_DEFINED_glXGetSyncValuesOML Bool __stdcall GLee_Lazy_glXGetSyncValuesOML(Display * dpy, GLXDrawable drawable, int64_t * ust, int64_t * msc, int64_t * sbc) {if (GLeeInit()) return glXGetSyncValuesOML(dpy, drawable, ust, msc, sbc); return (Bool)0;} GLEEPFNGLXGETSYNCVALUESOMLPROC GLeeFuncPtr_glXGetSyncValuesOML=GLee_Lazy_glXGetSyncValuesOML; #endif #ifndef GLEE_C_DEFINED_glXGetMscRateOML #define GLEE_C_DEFINED_glXGetMscRateOML Bool __stdcall GLee_Lazy_glXGetMscRateOML(Display * dpy, GLXDrawable drawable, int32_t * numerator, int32_t * denominator) {if (GLeeInit()) return glXGetMscRateOML(dpy, drawable, numerator, denominator); return (Bool)0;} GLEEPFNGLXGETMSCRATEOMLPROC GLeeFuncPtr_glXGetMscRateOML=GLee_Lazy_glXGetMscRateOML; #endif #ifndef GLEE_C_DEFINED_glXSwapBuffersMscOML #define GLEE_C_DEFINED_glXSwapBuffersMscOML int64_t __stdcall GLee_Lazy_glXSwapBuffersMscOML(Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder) {if (GLeeInit()) return glXSwapBuffersMscOML(dpy, drawable, target_msc, divisor, remainder); return (int64_t)0;} GLEEPFNGLXSWAPBUFFERSMSCOMLPROC GLeeFuncPtr_glXSwapBuffersMscOML=GLee_Lazy_glXSwapBuffersMscOML; #endif #ifndef GLEE_C_DEFINED_glXWaitForMscOML #define GLEE_C_DEFINED_glXWaitForMscOML Bool __stdcall GLee_Lazy_glXWaitForMscOML(Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t * ust, int64_t * msc, int64_t * sbc) {if (GLeeInit()) return glXWaitForMscOML(dpy, drawable, target_msc, divisor, remainder, ust, msc, sbc); return (Bool)0;} GLEEPFNGLXWAITFORMSCOMLPROC GLeeFuncPtr_glXWaitForMscOML=GLee_Lazy_glXWaitForMscOML; #endif #ifndef GLEE_C_DEFINED_glXWaitForSbcOML #define GLEE_C_DEFINED_glXWaitForSbcOML Bool __stdcall GLee_Lazy_glXWaitForSbcOML(Display * dpy, GLXDrawable drawable, int64_t target_sbc, int64_t * ust, int64_t * msc, int64_t * sbc) {if (GLeeInit()) return glXWaitForSbcOML(dpy, drawable, target_sbc, ust, msc, sbc); return (Bool)0;} GLEEPFNGLXWAITFORSBCOMLPROC GLeeFuncPtr_glXWaitForSbcOML=GLee_Lazy_glXWaitForSbcOML; #endif #endif /* GLX_NV_float_buffer */ #ifdef __GLEE_GLX_NV_float_buffer #endif /* GLX_SGIX_hyperpipe */ #ifdef __GLEE_GLX_SGIX_hyperpipe #ifndef GLEE_C_DEFINED_glXQueryHyperpipeNetworkSGIX #define GLEE_C_DEFINED_glXQueryHyperpipeNetworkSGIX GLXHyperpipeNetworkSGIX * __stdcall GLee_Lazy_glXQueryHyperpipeNetworkSGIX(Display * dpy, int * npipes) {if (GLeeInit()) return glXQueryHyperpipeNetworkSGIX(dpy, npipes); return (GLXHyperpipeNetworkSGIX *)0;} GLEEPFNGLXQUERYHYPERPIPENETWORKSGIXPROC GLeeFuncPtr_glXQueryHyperpipeNetworkSGIX=GLee_Lazy_glXQueryHyperpipeNetworkSGIX; #endif #ifndef GLEE_C_DEFINED_glXHyperpipeConfigSGIX #define GLEE_C_DEFINED_glXHyperpipeConfigSGIX int __stdcall GLee_Lazy_glXHyperpipeConfigSGIX(Display * dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX * cfg, int * hpId) {if (GLeeInit()) return glXHyperpipeConfigSGIX(dpy, networkId, npipes, cfg, hpId); return (int)0;} GLEEPFNGLXHYPERPIPECONFIGSGIXPROC GLeeFuncPtr_glXHyperpipeConfigSGIX=GLee_Lazy_glXHyperpipeConfigSGIX; #endif #ifndef GLEE_C_DEFINED_glXQueryHyperpipeConfigSGIX #define GLEE_C_DEFINED_glXQueryHyperpipeConfigSGIX GLXHyperpipeConfigSGIX * __stdcall GLee_Lazy_glXQueryHyperpipeConfigSGIX(Display * dpy, int hpId, int * npipes) {if (GLeeInit()) return glXQueryHyperpipeConfigSGIX(dpy, hpId, npipes); return (GLXHyperpipeConfigSGIX *)0;} GLEEPFNGLXQUERYHYPERPIPECONFIGSGIXPROC GLeeFuncPtr_glXQueryHyperpipeConfigSGIX=GLee_Lazy_glXQueryHyperpipeConfigSGIX; #endif #ifndef GLEE_C_DEFINED_glXDestroyHyperpipeConfigSGIX #define GLEE_C_DEFINED_glXDestroyHyperpipeConfigSGIX int __stdcall GLee_Lazy_glXDestroyHyperpipeConfigSGIX(Display * dpy, int hpId) {if (GLeeInit()) return glXDestroyHyperpipeConfigSGIX(dpy, hpId); return (int)0;} GLEEPFNGLXDESTROYHYPERPIPECONFIGSGIXPROC GLeeFuncPtr_glXDestroyHyperpipeConfigSGIX=GLee_Lazy_glXDestroyHyperpipeConfigSGIX; #endif #ifndef GLEE_C_DEFINED_glXBindHyperpipeSGIX #define GLEE_C_DEFINED_glXBindHyperpipeSGIX int __stdcall GLee_Lazy_glXBindHyperpipeSGIX(Display * dpy, int hpId) {if (GLeeInit()) return glXBindHyperpipeSGIX(dpy, hpId); return (int)0;} GLEEPFNGLXBINDHYPERPIPESGIXPROC GLeeFuncPtr_glXBindHyperpipeSGIX=GLee_Lazy_glXBindHyperpipeSGIX; #endif #ifndef GLEE_C_DEFINED_glXQueryHyperpipeBestAttribSGIX #define GLEE_C_DEFINED_glXQueryHyperpipeBestAttribSGIX int __stdcall GLee_Lazy_glXQueryHyperpipeBestAttribSGIX(Display * dpy, int timeSlice, int attrib, int size, void * attribList, void * returnAttribList) {if (GLeeInit()) return glXQueryHyperpipeBestAttribSGIX(dpy, timeSlice, attrib, size, attribList, returnAttribList); return (int)0;} GLEEPFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC GLeeFuncPtr_glXQueryHyperpipeBestAttribSGIX=GLee_Lazy_glXQueryHyperpipeBestAttribSGIX; #endif #ifndef GLEE_C_DEFINED_glXHyperpipeAttribSGIX #define GLEE_C_DEFINED_glXHyperpipeAttribSGIX int __stdcall GLee_Lazy_glXHyperpipeAttribSGIX(Display * dpy, int timeSlice, int attrib, int size, void * attribList) {if (GLeeInit()) return glXHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, attribList); return (int)0;} GLEEPFNGLXHYPERPIPEATTRIBSGIXPROC GLeeFuncPtr_glXHyperpipeAttribSGIX=GLee_Lazy_glXHyperpipeAttribSGIX; #endif #ifndef GLEE_C_DEFINED_glXQueryHyperpipeAttribSGIX #define GLEE_C_DEFINED_glXQueryHyperpipeAttribSGIX int __stdcall GLee_Lazy_glXQueryHyperpipeAttribSGIX(Display * dpy, int timeSlice, int attrib, int size, void * returnAttribList) {if (GLeeInit()) return glXQueryHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, returnAttribList); return (int)0;} GLEEPFNGLXQUERYHYPERPIPEATTRIBSGIXPROC GLeeFuncPtr_glXQueryHyperpipeAttribSGIX=GLee_Lazy_glXQueryHyperpipeAttribSGIX; #endif #endif /* GLX_MESA_agp_offset */ #ifdef __GLEE_GLX_MESA_agp_offset #ifndef GLEE_C_DEFINED_glXGetAGPOffsetMESA #define GLEE_C_DEFINED_glXGetAGPOffsetMESA unsigned int __stdcall GLee_Lazy_glXGetAGPOffsetMESA(const void * pointer) {if (GLeeInit()) return glXGetAGPOffsetMESA(pointer); return (unsigned int)0;} GLEEPFNGLXGETAGPOFFSETMESAPROC GLeeFuncPtr_glXGetAGPOffsetMESA=GLee_Lazy_glXGetAGPOffsetMESA; #endif #endif /* GLX_EXT_fbconfig_packed_float */ #ifdef __GLEE_GLX_EXT_fbconfig_packed_float #endif /* GLX_EXT_framebuffer_sRGB */ #ifdef __GLEE_GLX_EXT_framebuffer_sRGB #endif /* GLX_EXT_texture_from_pixmap */ #ifdef __GLEE_GLX_EXT_texture_from_pixmap #ifndef GLEE_C_DEFINED_glXBindTexImageEXT #define GLEE_C_DEFINED_glXBindTexImageEXT void __stdcall GLee_Lazy_glXBindTexImageEXT(Display * dpy, GLXDrawable drawable, int buffer, const int * attrib_list) {if (GLeeInit()) glXBindTexImageEXT(dpy, drawable, buffer, attrib_list);} GLEEPFNGLXBINDTEXIMAGEEXTPROC GLeeFuncPtr_glXBindTexImageEXT=GLee_Lazy_glXBindTexImageEXT; #endif #ifndef GLEE_C_DEFINED_glXReleaseTexImageEXT #define GLEE_C_DEFINED_glXReleaseTexImageEXT void __stdcall GLee_Lazy_glXReleaseTexImageEXT(Display * dpy, GLXDrawable drawable, int buffer) {if (GLeeInit()) glXReleaseTexImageEXT(dpy, drawable, buffer);} GLEEPFNGLXRELEASETEXIMAGEEXTPROC GLeeFuncPtr_glXReleaseTexImageEXT=GLee_Lazy_glXReleaseTexImageEXT; #endif #endif /* GLX_NV_present_video */ #ifdef __GLEE_GLX_NV_present_video #ifndef GLEE_C_DEFINED_glXEnumerateVideoDevicesNV #define GLEE_C_DEFINED_glXEnumerateVideoDevicesNV unsigned int * __stdcall GLee_Lazy_glXEnumerateVideoDevicesNV(Display * dpy, int screen, int * nelements) {if (GLeeInit()) return glXEnumerateVideoDevicesNV(dpy, screen, nelements); return (unsigned int *)0;} GLEEPFNGLXENUMERATEVIDEODEVICESNVPROC GLeeFuncPtr_glXEnumerateVideoDevicesNV=GLee_Lazy_glXEnumerateVideoDevicesNV; #endif #ifndef GLEE_C_DEFINED_glXBindVideoDeviceNV #define GLEE_C_DEFINED_glXBindVideoDeviceNV int __stdcall GLee_Lazy_glXBindVideoDeviceNV(Display * dpy, unsigned int video_slot, unsigned int video_device, const int * attrib_list) {if (GLeeInit()) return glXBindVideoDeviceNV(dpy, video_slot, video_device, attrib_list); return (int)0;} GLEEPFNGLXBINDVIDEODEVICENVPROC GLeeFuncPtr_glXBindVideoDeviceNV=GLee_Lazy_glXBindVideoDeviceNV; #endif #endif /* GLX_NV_video_out */ #ifdef __GLEE_GLX_NV_video_out #endif /* GLX_NV_swap_group */ #ifdef __GLEE_GLX_NV_swap_group #ifndef GLEE_C_DEFINED_glXJoinSwapGroupNV #define GLEE_C_DEFINED_glXJoinSwapGroupNV Bool __stdcall GLee_Lazy_glXJoinSwapGroupNV(Display * dpy, GLXDrawable drawable, GLuint group) {if (GLeeInit()) return glXJoinSwapGroupNV(dpy, drawable, group); return (Bool)0;} GLEEPFNGLXJOINSWAPGROUPNVPROC GLeeFuncPtr_glXJoinSwapGroupNV=GLee_Lazy_glXJoinSwapGroupNV; #endif #ifndef GLEE_C_DEFINED_glXBindSwapBarrierNV #define GLEE_C_DEFINED_glXBindSwapBarrierNV Bool __stdcall GLee_Lazy_glXBindSwapBarrierNV(Display * dpy, GLuint group, GLuint barrier) {if (GLeeInit()) return glXBindSwapBarrierNV(dpy, group, barrier); return (Bool)0;} GLEEPFNGLXBINDSWAPBARRIERNVPROC GLeeFuncPtr_glXBindSwapBarrierNV=GLee_Lazy_glXBindSwapBarrierNV; #endif #ifndef GLEE_C_DEFINED_glXQuerySwapGroupNV #define GLEE_C_DEFINED_glXQuerySwapGroupNV Bool __stdcall GLee_Lazy_glXQuerySwapGroupNV(Display * dpy, GLXDrawable drawable, GLuint * group, GLuint * barrier) {if (GLeeInit()) return glXQuerySwapGroupNV(dpy, drawable, group, barrier); return (Bool)0;} GLEEPFNGLXQUERYSWAPGROUPNVPROC GLeeFuncPtr_glXQuerySwapGroupNV=GLee_Lazy_glXQuerySwapGroupNV; #endif #ifndef GLEE_C_DEFINED_glXQueryMaxSwapGroupsNV #define GLEE_C_DEFINED_glXQueryMaxSwapGroupsNV Bool __stdcall GLee_Lazy_glXQueryMaxSwapGroupsNV(Display * dpy, int screen, GLuint * maxGroups, GLuint * maxBarriers) {if (GLeeInit()) return glXQueryMaxSwapGroupsNV(dpy, screen, maxGroups, maxBarriers); return (Bool)0;} GLEEPFNGLXQUERYMAXSWAPGROUPSNVPROC GLeeFuncPtr_glXQueryMaxSwapGroupsNV=GLee_Lazy_glXQueryMaxSwapGroupsNV; #endif #ifndef GLEE_C_DEFINED_glXQueryFrameCountNV #define GLEE_C_DEFINED_glXQueryFrameCountNV Bool __stdcall GLee_Lazy_glXQueryFrameCountNV(Display * dpy, int screen, GLuint * count) {if (GLeeInit()) return glXQueryFrameCountNV(dpy, screen, count); return (Bool)0;} GLEEPFNGLXQUERYFRAMECOUNTNVPROC GLeeFuncPtr_glXQueryFrameCountNV=GLee_Lazy_glXQueryFrameCountNV; #endif #ifndef GLEE_C_DEFINED_glXResetFrameCountNV #define GLEE_C_DEFINED_glXResetFrameCountNV Bool __stdcall GLee_Lazy_glXResetFrameCountNV(Display * dpy, int screen) {if (GLeeInit()) return glXResetFrameCountNV(dpy, screen); return (Bool)0;} GLEEPFNGLXRESETFRAMECOUNTNVPROC GLeeFuncPtr_glXResetFrameCountNV=GLee_Lazy_glXResetFrameCountNV; #endif #endif /* GLX_NV_video_capture */ #ifdef __GLEE_GLX_NV_video_capture #ifndef GLEE_C_DEFINED_glXBindVideoCaptureDeviceNV #define GLEE_C_DEFINED_glXBindVideoCaptureDeviceNV int __stdcall GLee_Lazy_glXBindVideoCaptureDeviceNV(Display * dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device) {if (GLeeInit()) return glXBindVideoCaptureDeviceNV(dpy, video_capture_slot, device); return (int)0;} GLEEPFNGLXBINDVIDEOCAPTUREDEVICENVPROC GLeeFuncPtr_glXBindVideoCaptureDeviceNV=GLee_Lazy_glXBindVideoCaptureDeviceNV; #endif #ifndef GLEE_C_DEFINED_glXEnumerateVideoCaptureDevicesNV #define GLEE_C_DEFINED_glXEnumerateVideoCaptureDevicesNV GLXVideoCaptureDeviceNV * __stdcall GLee_Lazy_glXEnumerateVideoCaptureDevicesNV(Display * dpy, int screen, int * nelements) {if (GLeeInit()) return glXEnumerateVideoCaptureDevicesNV(dpy, screen, nelements); return (GLXVideoCaptureDeviceNV *)0;} GLEEPFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC GLeeFuncPtr_glXEnumerateVideoCaptureDevicesNV=GLee_Lazy_glXEnumerateVideoCaptureDevicesNV; #endif #ifndef GLEE_C_DEFINED_glXLockVideoCaptureDeviceNV #define GLEE_C_DEFINED_glXLockVideoCaptureDeviceNV void __stdcall GLee_Lazy_glXLockVideoCaptureDeviceNV(Display * dpy, GLXVideoCaptureDeviceNV device) {if (GLeeInit()) glXLockVideoCaptureDeviceNV(dpy, device);} GLEEPFNGLXLOCKVIDEOCAPTUREDEVICENVPROC GLeeFuncPtr_glXLockVideoCaptureDeviceNV=GLee_Lazy_glXLockVideoCaptureDeviceNV; #endif #ifndef GLEE_C_DEFINED_glXQueryVideoCaptureDeviceNV #define GLEE_C_DEFINED_glXQueryVideoCaptureDeviceNV int __stdcall GLee_Lazy_glXQueryVideoCaptureDeviceNV(Display * dpy, GLXVideoCaptureDeviceNV device, int attribute, int * value) {if (GLeeInit()) return glXQueryVideoCaptureDeviceNV(dpy, device, attribute, value); return (int)0;} GLEEPFNGLXQUERYVIDEOCAPTUREDEVICENVPROC GLeeFuncPtr_glXQueryVideoCaptureDeviceNV=GLee_Lazy_glXQueryVideoCaptureDeviceNV; #endif #ifndef GLEE_C_DEFINED_glXReleaseVideoCaptureDeviceNV #define GLEE_C_DEFINED_glXReleaseVideoCaptureDeviceNV void __stdcall GLee_Lazy_glXReleaseVideoCaptureDeviceNV(Display * dpy, GLXVideoCaptureDeviceNV device) {if (GLeeInit()) glXReleaseVideoCaptureDeviceNV(dpy, device);} GLEEPFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC GLeeFuncPtr_glXReleaseVideoCaptureDeviceNV=GLee_Lazy_glXReleaseVideoCaptureDeviceNV; #endif #endif /* GLX_EXT_swap_control */ #ifdef __GLEE_GLX_EXT_swap_control #ifndef GLEE_C_DEFINED_glXSwapIntervalEXT #define GLEE_C_DEFINED_glXSwapIntervalEXT void __stdcall GLee_Lazy_glXSwapIntervalEXT(Display * dpy, GLXDrawable drawable, int interval) {if (GLeeInit()) glXSwapIntervalEXT(dpy, drawable, interval);} GLEEPFNGLXSWAPINTERVALEXTPROC GLeeFuncPtr_glXSwapIntervalEXT=GLee_Lazy_glXSwapIntervalEXT; #endif #endif /* GLX_NV_copy_image */ #ifdef __GLEE_GLX_NV_copy_image #ifndef GLEE_C_DEFINED_glXCopyImageSubDataNV #define GLEE_C_DEFINED_glXCopyImageSubDataNV void __stdcall GLee_Lazy_glXCopyImageSubDataNV(Display * dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth) {if (GLeeInit()) glXCopyImageSubDataNV(dpy, srcCtx, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstCtx, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth);} GLEEPFNGLXCOPYIMAGESUBDATANVPROC GLeeFuncPtr_glXCopyImageSubDataNV=GLee_Lazy_glXCopyImageSubDataNV; #endif #endif /* GLX_INTEL_swap_event */ #ifdef __GLEE_GLX_INTEL_swap_event #endif /* GLX_NV_multisample_coverage */ #ifdef __GLEE_GLX_NV_multisample_coverage #endif /* GLX_AMD_gpu_association */ #ifdef __GLEE_GLX_AMD_gpu_association #endif /* GLX_EXT_create_context_es2_profile */ #ifdef __GLEE_GLX_EXT_create_context_es2_profile #endif /* GLX_EXT_create_context_es_profile */ #ifdef __GLEE_GLX_EXT_create_context_es_profile #endif /* GLX_EXT_swap_control_tear */ #ifdef __GLEE_GLX_EXT_swap_control_tear #endif /* GLX_EXT_buffer_age */ #ifdef __GLEE_GLX_EXT_buffer_age #endif /* GLX_NV_video_output */ #ifdef __GLEE_GLX_NV_video_output #ifndef GLEE_C_DEFINED_glXGetVideoDeviceNV #define GLEE_C_DEFINED_glXGetVideoDeviceNV int __stdcall GLee_Lazy_glXGetVideoDeviceNV(Display * dpy, int screen, int numVideoDevices, GLXVideoDeviceNV * pVideoDevice) {if (GLeeInit()) return glXGetVideoDeviceNV(dpy, screen, numVideoDevices, pVideoDevice); return (int)0;} GLEEPFNGLXGETVIDEODEVICENVPROC GLeeFuncPtr_glXGetVideoDeviceNV=GLee_Lazy_glXGetVideoDeviceNV; #endif #ifndef GLEE_C_DEFINED_glXReleaseVideoDeviceNV #define GLEE_C_DEFINED_glXReleaseVideoDeviceNV int __stdcall GLee_Lazy_glXReleaseVideoDeviceNV(Display * dpy, int screen, GLXVideoDeviceNV VideoDevice) {if (GLeeInit()) return glXReleaseVideoDeviceNV(dpy, screen, VideoDevice); return (int)0;} GLEEPFNGLXRELEASEVIDEODEVICENVPROC GLeeFuncPtr_glXReleaseVideoDeviceNV=GLee_Lazy_glXReleaseVideoDeviceNV; #endif #ifndef GLEE_C_DEFINED_glXBindVideoImageNV #define GLEE_C_DEFINED_glXBindVideoImageNV int __stdcall GLee_Lazy_glXBindVideoImageNV(Display * dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer) {if (GLeeInit()) return glXBindVideoImageNV(dpy, VideoDevice, pbuf, iVideoBuffer); return (int)0;} GLEEPFNGLXBINDVIDEOIMAGENVPROC GLeeFuncPtr_glXBindVideoImageNV=GLee_Lazy_glXBindVideoImageNV; #endif #ifndef GLEE_C_DEFINED_glXReleaseVideoImageNV #define GLEE_C_DEFINED_glXReleaseVideoImageNV int __stdcall GLee_Lazy_glXReleaseVideoImageNV(Display * dpy, GLXPbuffer pbuf) {if (GLeeInit()) return glXReleaseVideoImageNV(dpy, pbuf); return (int)0;} GLEEPFNGLXRELEASEVIDEOIMAGENVPROC GLeeFuncPtr_glXReleaseVideoImageNV=GLee_Lazy_glXReleaseVideoImageNV; #endif #ifndef GLEE_C_DEFINED_glXSendPbufferToVideoNV #define GLEE_C_DEFINED_glXSendPbufferToVideoNV int __stdcall GLee_Lazy_glXSendPbufferToVideoNV(Display * dpy, GLXPbuffer pbuf, int iBufferType, unsigned long * pulCounterPbuffer, GLboolean bBlock) {if (GLeeInit()) return glXSendPbufferToVideoNV(dpy, pbuf, iBufferType, pulCounterPbuffer, bBlock); return (int)0;} GLEEPFNGLXSENDPBUFFERTOVIDEONVPROC GLeeFuncPtr_glXSendPbufferToVideoNV=GLee_Lazy_glXSendPbufferToVideoNV; #endif #ifndef GLEE_C_DEFINED_glXGetVideoInfoNV #define GLEE_C_DEFINED_glXGetVideoInfoNV int __stdcall GLee_Lazy_glXGetVideoInfoNV(Display * dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long * pulCounterOutputPbuffer, unsigned long * pulCounterOutputVideo) {if (GLeeInit()) return glXGetVideoInfoNV(dpy, screen, VideoDevice, pulCounterOutputPbuffer, pulCounterOutputVideo); return (int)0;} GLEEPFNGLXGETVIDEOINFONVPROC GLeeFuncPtr_glXGetVideoInfoNV=GLee_Lazy_glXGetVideoInfoNV; #endif #endif #endif /* end GLX */ /***************************************************************** * Extension link functions *****************************************************************/ GLuint __GLeeLink_GL_VERSION_1_2(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_1_2 if ((GLeeFuncPtr_glBlendColor = (GLEEPFNGLBLENDCOLORPROC) __GLeeGetProcAddress("glBlendColor"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendEquation = (GLEEPFNGLBLENDEQUATIONPROC) __GLeeGetProcAddress("glBlendEquation"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawRangeElements = (GLEEPFNGLDRAWRANGEELEMENTSPROC) __GLeeGetProcAddress("glDrawRangeElements"))!=0) nLinked++; if ((GLeeFuncPtr_glTexImage3D = (GLEEPFNGLTEXIMAGE3DPROC) __GLeeGetProcAddress("glTexImage3D"))!=0) nLinked++; if ((GLeeFuncPtr_glTexSubImage3D = (GLEEPFNGLTEXSUBIMAGE3DPROC) __GLeeGetProcAddress("glTexSubImage3D"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyTexSubImage3D = (GLEEPFNGLCOPYTEXSUBIMAGE3DPROC) __GLeeGetProcAddress("glCopyTexSubImage3D"))!=0) nLinked++; if ((GLeeFuncPtr_glColorTable = (GLEEPFNGLCOLORTABLEPROC) __GLeeGetProcAddress("glColorTable"))!=0) nLinked++; if ((GLeeFuncPtr_glColorTableParameterfv = (GLEEPFNGLCOLORTABLEPARAMETERFVPROC) __GLeeGetProcAddress("glColorTableParameterfv"))!=0) nLinked++; if ((GLeeFuncPtr_glColorTableParameteriv = (GLEEPFNGLCOLORTABLEPARAMETERIVPROC) __GLeeGetProcAddress("glColorTableParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyColorTable = (GLEEPFNGLCOPYCOLORTABLEPROC) __GLeeGetProcAddress("glCopyColorTable"))!=0) nLinked++; if ((GLeeFuncPtr_glGetColorTable = (GLEEPFNGLGETCOLORTABLEPROC) __GLeeGetProcAddress("glGetColorTable"))!=0) nLinked++; if ((GLeeFuncPtr_glGetColorTableParameterfv = (GLEEPFNGLGETCOLORTABLEPARAMETERFVPROC) __GLeeGetProcAddress("glGetColorTableParameterfv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetColorTableParameteriv = (GLEEPFNGLGETCOLORTABLEPARAMETERIVPROC) __GLeeGetProcAddress("glGetColorTableParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glColorSubTable = (GLEEPFNGLCOLORSUBTABLEPROC) __GLeeGetProcAddress("glColorSubTable"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyColorSubTable = (GLEEPFNGLCOPYCOLORSUBTABLEPROC) __GLeeGetProcAddress("glCopyColorSubTable"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionFilter1D = (GLEEPFNGLCONVOLUTIONFILTER1DPROC) __GLeeGetProcAddress("glConvolutionFilter1D"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionFilter2D = (GLEEPFNGLCONVOLUTIONFILTER2DPROC) __GLeeGetProcAddress("glConvolutionFilter2D"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionParameterf = (GLEEPFNGLCONVOLUTIONPARAMETERFPROC) __GLeeGetProcAddress("glConvolutionParameterf"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionParameterfv = (GLEEPFNGLCONVOLUTIONPARAMETERFVPROC) __GLeeGetProcAddress("glConvolutionParameterfv"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionParameteri = (GLEEPFNGLCONVOLUTIONPARAMETERIPROC) __GLeeGetProcAddress("glConvolutionParameteri"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionParameteriv = (GLEEPFNGLCONVOLUTIONPARAMETERIVPROC) __GLeeGetProcAddress("glConvolutionParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyConvolutionFilter1D = (GLEEPFNGLCOPYCONVOLUTIONFILTER1DPROC) __GLeeGetProcAddress("glCopyConvolutionFilter1D"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyConvolutionFilter2D = (GLEEPFNGLCOPYCONVOLUTIONFILTER2DPROC) __GLeeGetProcAddress("glCopyConvolutionFilter2D"))!=0) nLinked++; if ((GLeeFuncPtr_glGetConvolutionFilter = (GLEEPFNGLGETCONVOLUTIONFILTERPROC) __GLeeGetProcAddress("glGetConvolutionFilter"))!=0) nLinked++; if ((GLeeFuncPtr_glGetConvolutionParameterfv = (GLEEPFNGLGETCONVOLUTIONPARAMETERFVPROC) __GLeeGetProcAddress("glGetConvolutionParameterfv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetConvolutionParameteriv = (GLEEPFNGLGETCONVOLUTIONPARAMETERIVPROC) __GLeeGetProcAddress("glGetConvolutionParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetSeparableFilter = (GLEEPFNGLGETSEPARABLEFILTERPROC) __GLeeGetProcAddress("glGetSeparableFilter"))!=0) nLinked++; if ((GLeeFuncPtr_glSeparableFilter2D = (GLEEPFNGLSEPARABLEFILTER2DPROC) __GLeeGetProcAddress("glSeparableFilter2D"))!=0) nLinked++; if ((GLeeFuncPtr_glGetHistogram = (GLEEPFNGLGETHISTOGRAMPROC) __GLeeGetProcAddress("glGetHistogram"))!=0) nLinked++; if ((GLeeFuncPtr_glGetHistogramParameterfv = (GLEEPFNGLGETHISTOGRAMPARAMETERFVPROC) __GLeeGetProcAddress("glGetHistogramParameterfv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetHistogramParameteriv = (GLEEPFNGLGETHISTOGRAMPARAMETERIVPROC) __GLeeGetProcAddress("glGetHistogramParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMinmax = (GLEEPFNGLGETMINMAXPROC) __GLeeGetProcAddress("glGetMinmax"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMinmaxParameterfv = (GLEEPFNGLGETMINMAXPARAMETERFVPROC) __GLeeGetProcAddress("glGetMinmaxParameterfv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMinmaxParameteriv = (GLEEPFNGLGETMINMAXPARAMETERIVPROC) __GLeeGetProcAddress("glGetMinmaxParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glHistogram = (GLEEPFNGLHISTOGRAMPROC) __GLeeGetProcAddress("glHistogram"))!=0) nLinked++; if ((GLeeFuncPtr_glMinmax = (GLEEPFNGLMINMAXPROC) __GLeeGetProcAddress("glMinmax"))!=0) nLinked++; if ((GLeeFuncPtr_glResetHistogram = (GLEEPFNGLRESETHISTOGRAMPROC) __GLeeGetProcAddress("glResetHistogram"))!=0) nLinked++; if ((GLeeFuncPtr_glResetMinmax = (GLEEPFNGLRESETMINMAXPROC) __GLeeGetProcAddress("glResetMinmax"))!=0) nLinked++; #endif if (nLinked==38) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_imaging(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_VERSION_1_3(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_1_3 if ((GLeeFuncPtr_glActiveTexture = (GLEEPFNGLACTIVETEXTUREPROC) __GLeeGetProcAddress("glActiveTexture"))!=0) nLinked++; if ((GLeeFuncPtr_glSampleCoverage = (GLEEPFNGLSAMPLECOVERAGEPROC) __GLeeGetProcAddress("glSampleCoverage"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexImage3D = (GLEEPFNGLCOMPRESSEDTEXIMAGE3DPROC) __GLeeGetProcAddress("glCompressedTexImage3D"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexImage2D = (GLEEPFNGLCOMPRESSEDTEXIMAGE2DPROC) __GLeeGetProcAddress("glCompressedTexImage2D"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexImage1D = (GLEEPFNGLCOMPRESSEDTEXIMAGE1DPROC) __GLeeGetProcAddress("glCompressedTexImage1D"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexSubImage3D = (GLEEPFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) __GLeeGetProcAddress("glCompressedTexSubImage3D"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexSubImage2D = (GLEEPFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) __GLeeGetProcAddress("glCompressedTexSubImage2D"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexSubImage1D = (GLEEPFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) __GLeeGetProcAddress("glCompressedTexSubImage1D"))!=0) nLinked++; if ((GLeeFuncPtr_glGetCompressedTexImage = (GLEEPFNGLGETCOMPRESSEDTEXIMAGEPROC) __GLeeGetProcAddress("glGetCompressedTexImage"))!=0) nLinked++; if ((GLeeFuncPtr_glClientActiveTexture = (GLEEPFNGLCLIENTACTIVETEXTUREPROC) __GLeeGetProcAddress("glClientActiveTexture"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1d = (GLEEPFNGLMULTITEXCOORD1DPROC) __GLeeGetProcAddress("glMultiTexCoord1d"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1dv = (GLEEPFNGLMULTITEXCOORD1DVPROC) __GLeeGetProcAddress("glMultiTexCoord1dv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1f = (GLEEPFNGLMULTITEXCOORD1FPROC) __GLeeGetProcAddress("glMultiTexCoord1f"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1fv = (GLEEPFNGLMULTITEXCOORD1FVPROC) __GLeeGetProcAddress("glMultiTexCoord1fv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1i = (GLEEPFNGLMULTITEXCOORD1IPROC) __GLeeGetProcAddress("glMultiTexCoord1i"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1iv = (GLEEPFNGLMULTITEXCOORD1IVPROC) __GLeeGetProcAddress("glMultiTexCoord1iv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1s = (GLEEPFNGLMULTITEXCOORD1SPROC) __GLeeGetProcAddress("glMultiTexCoord1s"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1sv = (GLEEPFNGLMULTITEXCOORD1SVPROC) __GLeeGetProcAddress("glMultiTexCoord1sv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2d = (GLEEPFNGLMULTITEXCOORD2DPROC) __GLeeGetProcAddress("glMultiTexCoord2d"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2dv = (GLEEPFNGLMULTITEXCOORD2DVPROC) __GLeeGetProcAddress("glMultiTexCoord2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2f = (GLEEPFNGLMULTITEXCOORD2FPROC) __GLeeGetProcAddress("glMultiTexCoord2f"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2fv = (GLEEPFNGLMULTITEXCOORD2FVPROC) __GLeeGetProcAddress("glMultiTexCoord2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2i = (GLEEPFNGLMULTITEXCOORD2IPROC) __GLeeGetProcAddress("glMultiTexCoord2i"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2iv = (GLEEPFNGLMULTITEXCOORD2IVPROC) __GLeeGetProcAddress("glMultiTexCoord2iv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2s = (GLEEPFNGLMULTITEXCOORD2SPROC) __GLeeGetProcAddress("glMultiTexCoord2s"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2sv = (GLEEPFNGLMULTITEXCOORD2SVPROC) __GLeeGetProcAddress("glMultiTexCoord2sv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3d = (GLEEPFNGLMULTITEXCOORD3DPROC) __GLeeGetProcAddress("glMultiTexCoord3d"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3dv = (GLEEPFNGLMULTITEXCOORD3DVPROC) __GLeeGetProcAddress("glMultiTexCoord3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3f = (GLEEPFNGLMULTITEXCOORD3FPROC) __GLeeGetProcAddress("glMultiTexCoord3f"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3fv = (GLEEPFNGLMULTITEXCOORD3FVPROC) __GLeeGetProcAddress("glMultiTexCoord3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3i = (GLEEPFNGLMULTITEXCOORD3IPROC) __GLeeGetProcAddress("glMultiTexCoord3i"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3iv = (GLEEPFNGLMULTITEXCOORD3IVPROC) __GLeeGetProcAddress("glMultiTexCoord3iv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3s = (GLEEPFNGLMULTITEXCOORD3SPROC) __GLeeGetProcAddress("glMultiTexCoord3s"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3sv = (GLEEPFNGLMULTITEXCOORD3SVPROC) __GLeeGetProcAddress("glMultiTexCoord3sv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4d = (GLEEPFNGLMULTITEXCOORD4DPROC) __GLeeGetProcAddress("glMultiTexCoord4d"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4dv = (GLEEPFNGLMULTITEXCOORD4DVPROC) __GLeeGetProcAddress("glMultiTexCoord4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4f = (GLEEPFNGLMULTITEXCOORD4FPROC) __GLeeGetProcAddress("glMultiTexCoord4f"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4fv = (GLEEPFNGLMULTITEXCOORD4FVPROC) __GLeeGetProcAddress("glMultiTexCoord4fv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4i = (GLEEPFNGLMULTITEXCOORD4IPROC) __GLeeGetProcAddress("glMultiTexCoord4i"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4iv = (GLEEPFNGLMULTITEXCOORD4IVPROC) __GLeeGetProcAddress("glMultiTexCoord4iv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4s = (GLEEPFNGLMULTITEXCOORD4SPROC) __GLeeGetProcAddress("glMultiTexCoord4s"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4sv = (GLEEPFNGLMULTITEXCOORD4SVPROC) __GLeeGetProcAddress("glMultiTexCoord4sv"))!=0) nLinked++; if ((GLeeFuncPtr_glLoadTransposeMatrixf = (GLEEPFNGLLOADTRANSPOSEMATRIXFPROC) __GLeeGetProcAddress("glLoadTransposeMatrixf"))!=0) nLinked++; if ((GLeeFuncPtr_glLoadTransposeMatrixd = (GLEEPFNGLLOADTRANSPOSEMATRIXDPROC) __GLeeGetProcAddress("glLoadTransposeMatrixd"))!=0) nLinked++; if ((GLeeFuncPtr_glMultTransposeMatrixf = (GLEEPFNGLMULTTRANSPOSEMATRIXFPROC) __GLeeGetProcAddress("glMultTransposeMatrixf"))!=0) nLinked++; if ((GLeeFuncPtr_glMultTransposeMatrixd = (GLEEPFNGLMULTTRANSPOSEMATRIXDPROC) __GLeeGetProcAddress("glMultTransposeMatrixd"))!=0) nLinked++; #endif if (nLinked==46) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_VERSION_1_4(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_1_4 if ((GLeeFuncPtr_glBlendFuncSeparate = (GLEEPFNGLBLENDFUNCSEPARATEPROC) __GLeeGetProcAddress("glBlendFuncSeparate"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiDrawArrays = (GLEEPFNGLMULTIDRAWARRAYSPROC) __GLeeGetProcAddress("glMultiDrawArrays"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiDrawElements = (GLEEPFNGLMULTIDRAWELEMENTSPROC) __GLeeGetProcAddress("glMultiDrawElements"))!=0) nLinked++; if ((GLeeFuncPtr_glPointParameterf = (GLEEPFNGLPOINTPARAMETERFPROC) __GLeeGetProcAddress("glPointParameterf"))!=0) nLinked++; if ((GLeeFuncPtr_glPointParameterfv = (GLEEPFNGLPOINTPARAMETERFVPROC) __GLeeGetProcAddress("glPointParameterfv"))!=0) nLinked++; if ((GLeeFuncPtr_glPointParameteri = (GLEEPFNGLPOINTPARAMETERIPROC) __GLeeGetProcAddress("glPointParameteri"))!=0) nLinked++; if ((GLeeFuncPtr_glPointParameteriv = (GLEEPFNGLPOINTPARAMETERIVPROC) __GLeeGetProcAddress("glPointParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoordf = (GLEEPFNGLFOGCOORDFPROC) __GLeeGetProcAddress("glFogCoordf"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoordfv = (GLEEPFNGLFOGCOORDFVPROC) __GLeeGetProcAddress("glFogCoordfv"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoordd = (GLEEPFNGLFOGCOORDDPROC) __GLeeGetProcAddress("glFogCoordd"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoorddv = (GLEEPFNGLFOGCOORDDVPROC) __GLeeGetProcAddress("glFogCoorddv"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoordPointer = (GLEEPFNGLFOGCOORDPOINTERPROC) __GLeeGetProcAddress("glFogCoordPointer"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3b = (GLEEPFNGLSECONDARYCOLOR3BPROC) __GLeeGetProcAddress("glSecondaryColor3b"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3bv = (GLEEPFNGLSECONDARYCOLOR3BVPROC) __GLeeGetProcAddress("glSecondaryColor3bv"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3d = (GLEEPFNGLSECONDARYCOLOR3DPROC) __GLeeGetProcAddress("glSecondaryColor3d"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3dv = (GLEEPFNGLSECONDARYCOLOR3DVPROC) __GLeeGetProcAddress("glSecondaryColor3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3f = (GLEEPFNGLSECONDARYCOLOR3FPROC) __GLeeGetProcAddress("glSecondaryColor3f"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3fv = (GLEEPFNGLSECONDARYCOLOR3FVPROC) __GLeeGetProcAddress("glSecondaryColor3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3i = (GLEEPFNGLSECONDARYCOLOR3IPROC) __GLeeGetProcAddress("glSecondaryColor3i"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3iv = (GLEEPFNGLSECONDARYCOLOR3IVPROC) __GLeeGetProcAddress("glSecondaryColor3iv"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3s = (GLEEPFNGLSECONDARYCOLOR3SPROC) __GLeeGetProcAddress("glSecondaryColor3s"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3sv = (GLEEPFNGLSECONDARYCOLOR3SVPROC) __GLeeGetProcAddress("glSecondaryColor3sv"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3ub = (GLEEPFNGLSECONDARYCOLOR3UBPROC) __GLeeGetProcAddress("glSecondaryColor3ub"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3ubv = (GLEEPFNGLSECONDARYCOLOR3UBVPROC) __GLeeGetProcAddress("glSecondaryColor3ubv"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3ui = (GLEEPFNGLSECONDARYCOLOR3UIPROC) __GLeeGetProcAddress("glSecondaryColor3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3uiv = (GLEEPFNGLSECONDARYCOLOR3UIVPROC) __GLeeGetProcAddress("glSecondaryColor3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3us = (GLEEPFNGLSECONDARYCOLOR3USPROC) __GLeeGetProcAddress("glSecondaryColor3us"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3usv = (GLEEPFNGLSECONDARYCOLOR3USVPROC) __GLeeGetProcAddress("glSecondaryColor3usv"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColorPointer = (GLEEPFNGLSECONDARYCOLORPOINTERPROC) __GLeeGetProcAddress("glSecondaryColorPointer"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2d = (GLEEPFNGLWINDOWPOS2DPROC) __GLeeGetProcAddress("glWindowPos2d"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2dv = (GLEEPFNGLWINDOWPOS2DVPROC) __GLeeGetProcAddress("glWindowPos2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2f = (GLEEPFNGLWINDOWPOS2FPROC) __GLeeGetProcAddress("glWindowPos2f"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2fv = (GLEEPFNGLWINDOWPOS2FVPROC) __GLeeGetProcAddress("glWindowPos2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2i = (GLEEPFNGLWINDOWPOS2IPROC) __GLeeGetProcAddress("glWindowPos2i"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2iv = (GLEEPFNGLWINDOWPOS2IVPROC) __GLeeGetProcAddress("glWindowPos2iv"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2s = (GLEEPFNGLWINDOWPOS2SPROC) __GLeeGetProcAddress("glWindowPos2s"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2sv = (GLEEPFNGLWINDOWPOS2SVPROC) __GLeeGetProcAddress("glWindowPos2sv"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3d = (GLEEPFNGLWINDOWPOS3DPROC) __GLeeGetProcAddress("glWindowPos3d"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3dv = (GLEEPFNGLWINDOWPOS3DVPROC) __GLeeGetProcAddress("glWindowPos3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3f = (GLEEPFNGLWINDOWPOS3FPROC) __GLeeGetProcAddress("glWindowPos3f"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3fv = (GLEEPFNGLWINDOWPOS3FVPROC) __GLeeGetProcAddress("glWindowPos3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3i = (GLEEPFNGLWINDOWPOS3IPROC) __GLeeGetProcAddress("glWindowPos3i"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3iv = (GLEEPFNGLWINDOWPOS3IVPROC) __GLeeGetProcAddress("glWindowPos3iv"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3s = (GLEEPFNGLWINDOWPOS3SPROC) __GLeeGetProcAddress("glWindowPos3s"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3sv = (GLEEPFNGLWINDOWPOS3SVPROC) __GLeeGetProcAddress("glWindowPos3sv"))!=0) nLinked++; #endif if (nLinked==45) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_VERSION_1_5(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_1_5 if ((GLeeFuncPtr_glGenQueries = (GLEEPFNGLGENQUERIESPROC) __GLeeGetProcAddress("glGenQueries"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteQueries = (GLEEPFNGLDELETEQUERIESPROC) __GLeeGetProcAddress("glDeleteQueries"))!=0) nLinked++; if ((GLeeFuncPtr_glIsQuery = (GLEEPFNGLISQUERYPROC) __GLeeGetProcAddress("glIsQuery"))!=0) nLinked++; if ((GLeeFuncPtr_glBeginQuery = (GLEEPFNGLBEGINQUERYPROC) __GLeeGetProcAddress("glBeginQuery"))!=0) nLinked++; if ((GLeeFuncPtr_glEndQuery = (GLEEPFNGLENDQUERYPROC) __GLeeGetProcAddress("glEndQuery"))!=0) nLinked++; if ((GLeeFuncPtr_glGetQueryiv = (GLEEPFNGLGETQUERYIVPROC) __GLeeGetProcAddress("glGetQueryiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetQueryObjectiv = (GLEEPFNGLGETQUERYOBJECTIVPROC) __GLeeGetProcAddress("glGetQueryObjectiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetQueryObjectuiv = (GLEEPFNGLGETQUERYOBJECTUIVPROC) __GLeeGetProcAddress("glGetQueryObjectuiv"))!=0) nLinked++; if ((GLeeFuncPtr_glBindBuffer = (GLEEPFNGLBINDBUFFERPROC) __GLeeGetProcAddress("glBindBuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteBuffers = (GLEEPFNGLDELETEBUFFERSPROC) __GLeeGetProcAddress("glDeleteBuffers"))!=0) nLinked++; if ((GLeeFuncPtr_glGenBuffers = (GLEEPFNGLGENBUFFERSPROC) __GLeeGetProcAddress("glGenBuffers"))!=0) nLinked++; if ((GLeeFuncPtr_glIsBuffer = (GLEEPFNGLISBUFFERPROC) __GLeeGetProcAddress("glIsBuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glBufferData = (GLEEPFNGLBUFFERDATAPROC) __GLeeGetProcAddress("glBufferData"))!=0) nLinked++; if ((GLeeFuncPtr_glBufferSubData = (GLEEPFNGLBUFFERSUBDATAPROC) __GLeeGetProcAddress("glBufferSubData"))!=0) nLinked++; if ((GLeeFuncPtr_glGetBufferSubData = (GLEEPFNGLGETBUFFERSUBDATAPROC) __GLeeGetProcAddress("glGetBufferSubData"))!=0) nLinked++; if ((GLeeFuncPtr_glMapBuffer = (GLEEPFNGLMAPBUFFERPROC) __GLeeGetProcAddress("glMapBuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glUnmapBuffer = (GLEEPFNGLUNMAPBUFFERPROC) __GLeeGetProcAddress("glUnmapBuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glGetBufferParameteriv = (GLEEPFNGLGETBUFFERPARAMETERIVPROC) __GLeeGetProcAddress("glGetBufferParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetBufferPointerv = (GLEEPFNGLGETBUFFERPOINTERVPROC) __GLeeGetProcAddress("glGetBufferPointerv"))!=0) nLinked++; #endif if (nLinked==19) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_VERSION_2_0(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_2_0 if ((GLeeFuncPtr_glBlendEquationSeparate = (GLEEPFNGLBLENDEQUATIONSEPARATEPROC) __GLeeGetProcAddress("glBlendEquationSeparate"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawBuffers = (GLEEPFNGLDRAWBUFFERSPROC) __GLeeGetProcAddress("glDrawBuffers"))!=0) nLinked++; if ((GLeeFuncPtr_glStencilOpSeparate = (GLEEPFNGLSTENCILOPSEPARATEPROC) __GLeeGetProcAddress("glStencilOpSeparate"))!=0) nLinked++; if ((GLeeFuncPtr_glStencilFuncSeparate = (GLEEPFNGLSTENCILFUNCSEPARATEPROC) __GLeeGetProcAddress("glStencilFuncSeparate"))!=0) nLinked++; if ((GLeeFuncPtr_glStencilMaskSeparate = (GLEEPFNGLSTENCILMASKSEPARATEPROC) __GLeeGetProcAddress("glStencilMaskSeparate"))!=0) nLinked++; if ((GLeeFuncPtr_glAttachShader = (GLEEPFNGLATTACHSHADERPROC) __GLeeGetProcAddress("glAttachShader"))!=0) nLinked++; if ((GLeeFuncPtr_glBindAttribLocation = (GLEEPFNGLBINDATTRIBLOCATIONPROC) __GLeeGetProcAddress("glBindAttribLocation"))!=0) nLinked++; if ((GLeeFuncPtr_glCompileShader = (GLEEPFNGLCOMPILESHADERPROC) __GLeeGetProcAddress("glCompileShader"))!=0) nLinked++; if ((GLeeFuncPtr_glCreateProgram = (GLEEPFNGLCREATEPROGRAMPROC) __GLeeGetProcAddress("glCreateProgram"))!=0) nLinked++; if ((GLeeFuncPtr_glCreateShader = (GLEEPFNGLCREATESHADERPROC) __GLeeGetProcAddress("glCreateShader"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteProgram = (GLEEPFNGLDELETEPROGRAMPROC) __GLeeGetProcAddress("glDeleteProgram"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteShader = (GLEEPFNGLDELETESHADERPROC) __GLeeGetProcAddress("glDeleteShader"))!=0) nLinked++; if ((GLeeFuncPtr_glDetachShader = (GLEEPFNGLDETACHSHADERPROC) __GLeeGetProcAddress("glDetachShader"))!=0) nLinked++; if ((GLeeFuncPtr_glDisableVertexAttribArray = (GLEEPFNGLDISABLEVERTEXATTRIBARRAYPROC) __GLeeGetProcAddress("glDisableVertexAttribArray"))!=0) nLinked++; if ((GLeeFuncPtr_glEnableVertexAttribArray = (GLEEPFNGLENABLEVERTEXATTRIBARRAYPROC) __GLeeGetProcAddress("glEnableVertexAttribArray"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveAttrib = (GLEEPFNGLGETACTIVEATTRIBPROC) __GLeeGetProcAddress("glGetActiveAttrib"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveUniform = (GLEEPFNGLGETACTIVEUNIFORMPROC) __GLeeGetProcAddress("glGetActiveUniform"))!=0) nLinked++; if ((GLeeFuncPtr_glGetAttachedShaders = (GLEEPFNGLGETATTACHEDSHADERSPROC) __GLeeGetProcAddress("glGetAttachedShaders"))!=0) nLinked++; if ((GLeeFuncPtr_glGetAttribLocation = (GLEEPFNGLGETATTRIBLOCATIONPROC) __GLeeGetProcAddress("glGetAttribLocation"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramiv = (GLEEPFNGLGETPROGRAMIVPROC) __GLeeGetProcAddress("glGetProgramiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramInfoLog = (GLEEPFNGLGETPROGRAMINFOLOGPROC) __GLeeGetProcAddress("glGetProgramInfoLog"))!=0) nLinked++; if ((GLeeFuncPtr_glGetShaderiv = (GLEEPFNGLGETSHADERIVPROC) __GLeeGetProcAddress("glGetShaderiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetShaderInfoLog = (GLEEPFNGLGETSHADERINFOLOGPROC) __GLeeGetProcAddress("glGetShaderInfoLog"))!=0) nLinked++; if ((GLeeFuncPtr_glGetShaderSource = (GLEEPFNGLGETSHADERSOURCEPROC) __GLeeGetProcAddress("glGetShaderSource"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformLocation = (GLEEPFNGLGETUNIFORMLOCATIONPROC) __GLeeGetProcAddress("glGetUniformLocation"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformfv = (GLEEPFNGLGETUNIFORMFVPROC) __GLeeGetProcAddress("glGetUniformfv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformiv = (GLEEPFNGLGETUNIFORMIVPROC) __GLeeGetProcAddress("glGetUniformiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribdv = (GLEEPFNGLGETVERTEXATTRIBDVPROC) __GLeeGetProcAddress("glGetVertexAttribdv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribfv = (GLEEPFNGLGETVERTEXATTRIBFVPROC) __GLeeGetProcAddress("glGetVertexAttribfv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribiv = (GLEEPFNGLGETVERTEXATTRIBIVPROC) __GLeeGetProcAddress("glGetVertexAttribiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribPointerv = (GLEEPFNGLGETVERTEXATTRIBPOINTERVPROC) __GLeeGetProcAddress("glGetVertexAttribPointerv"))!=0) nLinked++; if ((GLeeFuncPtr_glIsProgram = (GLEEPFNGLISPROGRAMPROC) __GLeeGetProcAddress("glIsProgram"))!=0) nLinked++; if ((GLeeFuncPtr_glIsShader = (GLEEPFNGLISSHADERPROC) __GLeeGetProcAddress("glIsShader"))!=0) nLinked++; if ((GLeeFuncPtr_glLinkProgram = (GLEEPFNGLLINKPROGRAMPROC) __GLeeGetProcAddress("glLinkProgram"))!=0) nLinked++; if ((GLeeFuncPtr_glShaderSource = (GLEEPFNGLSHADERSOURCEPROC) __GLeeGetProcAddress("glShaderSource"))!=0) nLinked++; if ((GLeeFuncPtr_glUseProgram = (GLEEPFNGLUSEPROGRAMPROC) __GLeeGetProcAddress("glUseProgram"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1f = (GLEEPFNGLUNIFORM1FPROC) __GLeeGetProcAddress("glUniform1f"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2f = (GLEEPFNGLUNIFORM2FPROC) __GLeeGetProcAddress("glUniform2f"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3f = (GLEEPFNGLUNIFORM3FPROC) __GLeeGetProcAddress("glUniform3f"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4f = (GLEEPFNGLUNIFORM4FPROC) __GLeeGetProcAddress("glUniform4f"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1i = (GLEEPFNGLUNIFORM1IPROC) __GLeeGetProcAddress("glUniform1i"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2i = (GLEEPFNGLUNIFORM2IPROC) __GLeeGetProcAddress("glUniform2i"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3i = (GLEEPFNGLUNIFORM3IPROC) __GLeeGetProcAddress("glUniform3i"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4i = (GLEEPFNGLUNIFORM4IPROC) __GLeeGetProcAddress("glUniform4i"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1fv = (GLEEPFNGLUNIFORM1FVPROC) __GLeeGetProcAddress("glUniform1fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2fv = (GLEEPFNGLUNIFORM2FVPROC) __GLeeGetProcAddress("glUniform2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3fv = (GLEEPFNGLUNIFORM3FVPROC) __GLeeGetProcAddress("glUniform3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4fv = (GLEEPFNGLUNIFORM4FVPROC) __GLeeGetProcAddress("glUniform4fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1iv = (GLEEPFNGLUNIFORM1IVPROC) __GLeeGetProcAddress("glUniform1iv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2iv = (GLEEPFNGLUNIFORM2IVPROC) __GLeeGetProcAddress("glUniform2iv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3iv = (GLEEPFNGLUNIFORM3IVPROC) __GLeeGetProcAddress("glUniform3iv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4iv = (GLEEPFNGLUNIFORM4IVPROC) __GLeeGetProcAddress("glUniform4iv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix2fv = (GLEEPFNGLUNIFORMMATRIX2FVPROC) __GLeeGetProcAddress("glUniformMatrix2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix3fv = (GLEEPFNGLUNIFORMMATRIX3FVPROC) __GLeeGetProcAddress("glUniformMatrix3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix4fv = (GLEEPFNGLUNIFORMMATRIX4FVPROC) __GLeeGetProcAddress("glUniformMatrix4fv"))!=0) nLinked++; if ((GLeeFuncPtr_glValidateProgram = (GLEEPFNGLVALIDATEPROGRAMPROC) __GLeeGetProcAddress("glValidateProgram"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1d = (GLEEPFNGLVERTEXATTRIB1DPROC) __GLeeGetProcAddress("glVertexAttrib1d"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1dv = (GLEEPFNGLVERTEXATTRIB1DVPROC) __GLeeGetProcAddress("glVertexAttrib1dv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1f = (GLEEPFNGLVERTEXATTRIB1FPROC) __GLeeGetProcAddress("glVertexAttrib1f"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1fv = (GLEEPFNGLVERTEXATTRIB1FVPROC) __GLeeGetProcAddress("glVertexAttrib1fv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1s = (GLEEPFNGLVERTEXATTRIB1SPROC) __GLeeGetProcAddress("glVertexAttrib1s"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1sv = (GLEEPFNGLVERTEXATTRIB1SVPROC) __GLeeGetProcAddress("glVertexAttrib1sv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2d = (GLEEPFNGLVERTEXATTRIB2DPROC) __GLeeGetProcAddress("glVertexAttrib2d"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2dv = (GLEEPFNGLVERTEXATTRIB2DVPROC) __GLeeGetProcAddress("glVertexAttrib2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2f = (GLEEPFNGLVERTEXATTRIB2FPROC) __GLeeGetProcAddress("glVertexAttrib2f"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2fv = (GLEEPFNGLVERTEXATTRIB2FVPROC) __GLeeGetProcAddress("glVertexAttrib2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2s = (GLEEPFNGLVERTEXATTRIB2SPROC) __GLeeGetProcAddress("glVertexAttrib2s"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2sv = (GLEEPFNGLVERTEXATTRIB2SVPROC) __GLeeGetProcAddress("glVertexAttrib2sv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3d = (GLEEPFNGLVERTEXATTRIB3DPROC) __GLeeGetProcAddress("glVertexAttrib3d"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3dv = (GLEEPFNGLVERTEXATTRIB3DVPROC) __GLeeGetProcAddress("glVertexAttrib3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3f = (GLEEPFNGLVERTEXATTRIB3FPROC) __GLeeGetProcAddress("glVertexAttrib3f"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3fv = (GLEEPFNGLVERTEXATTRIB3FVPROC) __GLeeGetProcAddress("glVertexAttrib3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3s = (GLEEPFNGLVERTEXATTRIB3SPROC) __GLeeGetProcAddress("glVertexAttrib3s"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3sv = (GLEEPFNGLVERTEXATTRIB3SVPROC) __GLeeGetProcAddress("glVertexAttrib3sv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4Nbv = (GLEEPFNGLVERTEXATTRIB4NBVPROC) __GLeeGetProcAddress("glVertexAttrib4Nbv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4Niv = (GLEEPFNGLVERTEXATTRIB4NIVPROC) __GLeeGetProcAddress("glVertexAttrib4Niv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4Nsv = (GLEEPFNGLVERTEXATTRIB4NSVPROC) __GLeeGetProcAddress("glVertexAttrib4Nsv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4Nub = (GLEEPFNGLVERTEXATTRIB4NUBPROC) __GLeeGetProcAddress("glVertexAttrib4Nub"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4Nubv = (GLEEPFNGLVERTEXATTRIB4NUBVPROC) __GLeeGetProcAddress("glVertexAttrib4Nubv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4Nuiv = (GLEEPFNGLVERTEXATTRIB4NUIVPROC) __GLeeGetProcAddress("glVertexAttrib4Nuiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4Nusv = (GLEEPFNGLVERTEXATTRIB4NUSVPROC) __GLeeGetProcAddress("glVertexAttrib4Nusv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4bv = (GLEEPFNGLVERTEXATTRIB4BVPROC) __GLeeGetProcAddress("glVertexAttrib4bv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4d = (GLEEPFNGLVERTEXATTRIB4DPROC) __GLeeGetProcAddress("glVertexAttrib4d"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4dv = (GLEEPFNGLVERTEXATTRIB4DVPROC) __GLeeGetProcAddress("glVertexAttrib4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4f = (GLEEPFNGLVERTEXATTRIB4FPROC) __GLeeGetProcAddress("glVertexAttrib4f"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4fv = (GLEEPFNGLVERTEXATTRIB4FVPROC) __GLeeGetProcAddress("glVertexAttrib4fv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4iv = (GLEEPFNGLVERTEXATTRIB4IVPROC) __GLeeGetProcAddress("glVertexAttrib4iv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4s = (GLEEPFNGLVERTEXATTRIB4SPROC) __GLeeGetProcAddress("glVertexAttrib4s"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4sv = (GLEEPFNGLVERTEXATTRIB4SVPROC) __GLeeGetProcAddress("glVertexAttrib4sv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4ubv = (GLEEPFNGLVERTEXATTRIB4UBVPROC) __GLeeGetProcAddress("glVertexAttrib4ubv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4uiv = (GLEEPFNGLVERTEXATTRIB4UIVPROC) __GLeeGetProcAddress("glVertexAttrib4uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4usv = (GLEEPFNGLVERTEXATTRIB4USVPROC) __GLeeGetProcAddress("glVertexAttrib4usv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribPointer = (GLEEPFNGLVERTEXATTRIBPOINTERPROC) __GLeeGetProcAddress("glVertexAttribPointer"))!=0) nLinked++; #endif if (nLinked==93) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_VERSION_2_1(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_2_1 if ((GLeeFuncPtr_glUniformMatrix2x3fv = (GLEEPFNGLUNIFORMMATRIX2X3FVPROC) __GLeeGetProcAddress("glUniformMatrix2x3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix3x2fv = (GLEEPFNGLUNIFORMMATRIX3X2FVPROC) __GLeeGetProcAddress("glUniformMatrix3x2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix2x4fv = (GLEEPFNGLUNIFORMMATRIX2X4FVPROC) __GLeeGetProcAddress("glUniformMatrix2x4fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix4x2fv = (GLEEPFNGLUNIFORMMATRIX4X2FVPROC) __GLeeGetProcAddress("glUniformMatrix4x2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix3x4fv = (GLEEPFNGLUNIFORMMATRIX3X4FVPROC) __GLeeGetProcAddress("glUniformMatrix3x4fv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix4x3fv = (GLEEPFNGLUNIFORMMATRIX4X3FVPROC) __GLeeGetProcAddress("glUniformMatrix4x3fv"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_VERSION_3_0(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_3_0 if ((GLeeFuncPtr_glColorMaski = (GLEEPFNGLCOLORMASKIPROC) __GLeeGetProcAddress("glColorMaski"))!=0) nLinked++; if ((GLeeFuncPtr_glGetBooleani_v = (GLEEPFNGLGETBOOLEANI_VPROC) __GLeeGetProcAddress("glGetBooleani_v"))!=0) nLinked++; if ((GLeeFuncPtr_glGetIntegeri_v = (GLEEPFNGLGETINTEGERI_VPROC) __GLeeGetProcAddress("glGetIntegeri_v"))!=0) nLinked++; if ((GLeeFuncPtr_glEnablei = (GLEEPFNGLENABLEIPROC) __GLeeGetProcAddress("glEnablei"))!=0) nLinked++; if ((GLeeFuncPtr_glDisablei = (GLEEPFNGLDISABLEIPROC) __GLeeGetProcAddress("glDisablei"))!=0) nLinked++; if ((GLeeFuncPtr_glIsEnabledi = (GLEEPFNGLISENABLEDIPROC) __GLeeGetProcAddress("glIsEnabledi"))!=0) nLinked++; if ((GLeeFuncPtr_glBeginTransformFeedback = (GLEEPFNGLBEGINTRANSFORMFEEDBACKPROC) __GLeeGetProcAddress("glBeginTransformFeedback"))!=0) nLinked++; if ((GLeeFuncPtr_glEndTransformFeedback = (GLEEPFNGLENDTRANSFORMFEEDBACKPROC) __GLeeGetProcAddress("glEndTransformFeedback"))!=0) nLinked++; if ((GLeeFuncPtr_glBindBufferRange = (GLEEPFNGLBINDBUFFERRANGEPROC) __GLeeGetProcAddress("glBindBufferRange"))!=0) nLinked++; if ((GLeeFuncPtr_glBindBufferBase = (GLEEPFNGLBINDBUFFERBASEPROC) __GLeeGetProcAddress("glBindBufferBase"))!=0) nLinked++; if ((GLeeFuncPtr_glTransformFeedbackVaryings = (GLEEPFNGLTRANSFORMFEEDBACKVARYINGSPROC) __GLeeGetProcAddress("glTransformFeedbackVaryings"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTransformFeedbackVarying = (GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGPROC) __GLeeGetProcAddress("glGetTransformFeedbackVarying"))!=0) nLinked++; if ((GLeeFuncPtr_glClampColor = (GLEEPFNGLCLAMPCOLORPROC) __GLeeGetProcAddress("glClampColor"))!=0) nLinked++; if ((GLeeFuncPtr_glBeginConditionalRender = (GLEEPFNGLBEGINCONDITIONALRENDERPROC) __GLeeGetProcAddress("glBeginConditionalRender"))!=0) nLinked++; if ((GLeeFuncPtr_glEndConditionalRender = (GLEEPFNGLENDCONDITIONALRENDERPROC) __GLeeGetProcAddress("glEndConditionalRender"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribIPointer = (GLEEPFNGLVERTEXATTRIBIPOINTERPROC) __GLeeGetProcAddress("glVertexAttribIPointer"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribIiv = (GLEEPFNGLGETVERTEXATTRIBIIVPROC) __GLeeGetProcAddress("glGetVertexAttribIiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribIuiv = (GLEEPFNGLGETVERTEXATTRIBIUIVPROC) __GLeeGetProcAddress("glGetVertexAttribIuiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI1i = (GLEEPFNGLVERTEXATTRIBI1IPROC) __GLeeGetProcAddress("glVertexAttribI1i"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI2i = (GLEEPFNGLVERTEXATTRIBI2IPROC) __GLeeGetProcAddress("glVertexAttribI2i"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI3i = (GLEEPFNGLVERTEXATTRIBI3IPROC) __GLeeGetProcAddress("glVertexAttribI3i"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI4i = (GLEEPFNGLVERTEXATTRIBI4IPROC) __GLeeGetProcAddress("glVertexAttribI4i"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI1ui = (GLEEPFNGLVERTEXATTRIBI1UIPROC) __GLeeGetProcAddress("glVertexAttribI1ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI2ui = (GLEEPFNGLVERTEXATTRIBI2UIPROC) __GLeeGetProcAddress("glVertexAttribI2ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI3ui = (GLEEPFNGLVERTEXATTRIBI3UIPROC) __GLeeGetProcAddress("glVertexAttribI3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI4ui = (GLEEPFNGLVERTEXATTRIBI4UIPROC) __GLeeGetProcAddress("glVertexAttribI4ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI1iv = (GLEEPFNGLVERTEXATTRIBI1IVPROC) __GLeeGetProcAddress("glVertexAttribI1iv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI2iv = (GLEEPFNGLVERTEXATTRIBI2IVPROC) __GLeeGetProcAddress("glVertexAttribI2iv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI3iv = (GLEEPFNGLVERTEXATTRIBI3IVPROC) __GLeeGetProcAddress("glVertexAttribI3iv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI4iv = (GLEEPFNGLVERTEXATTRIBI4IVPROC) __GLeeGetProcAddress("glVertexAttribI4iv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI1uiv = (GLEEPFNGLVERTEXATTRIBI1UIVPROC) __GLeeGetProcAddress("glVertexAttribI1uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI2uiv = (GLEEPFNGLVERTEXATTRIBI2UIVPROC) __GLeeGetProcAddress("glVertexAttribI2uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI3uiv = (GLEEPFNGLVERTEXATTRIBI3UIVPROC) __GLeeGetProcAddress("glVertexAttribI3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI4uiv = (GLEEPFNGLVERTEXATTRIBI4UIVPROC) __GLeeGetProcAddress("glVertexAttribI4uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI4bv = (GLEEPFNGLVERTEXATTRIBI4BVPROC) __GLeeGetProcAddress("glVertexAttribI4bv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI4sv = (GLEEPFNGLVERTEXATTRIBI4SVPROC) __GLeeGetProcAddress("glVertexAttribI4sv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI4ubv = (GLEEPFNGLVERTEXATTRIBI4UBVPROC) __GLeeGetProcAddress("glVertexAttribI4ubv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribI4usv = (GLEEPFNGLVERTEXATTRIBI4USVPROC) __GLeeGetProcAddress("glVertexAttribI4usv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformuiv = (GLEEPFNGLGETUNIFORMUIVPROC) __GLeeGetProcAddress("glGetUniformuiv"))!=0) nLinked++; if ((GLeeFuncPtr_glBindFragDataLocation = (GLEEPFNGLBINDFRAGDATALOCATIONPROC) __GLeeGetProcAddress("glBindFragDataLocation"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFragDataLocation = (GLEEPFNGLGETFRAGDATALOCATIONPROC) __GLeeGetProcAddress("glGetFragDataLocation"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1ui = (GLEEPFNGLUNIFORM1UIPROC) __GLeeGetProcAddress("glUniform1ui"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2ui = (GLEEPFNGLUNIFORM2UIPROC) __GLeeGetProcAddress("glUniform2ui"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3ui = (GLEEPFNGLUNIFORM3UIPROC) __GLeeGetProcAddress("glUniform3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4ui = (GLEEPFNGLUNIFORM4UIPROC) __GLeeGetProcAddress("glUniform4ui"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1uiv = (GLEEPFNGLUNIFORM1UIVPROC) __GLeeGetProcAddress("glUniform1uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2uiv = (GLEEPFNGLUNIFORM2UIVPROC) __GLeeGetProcAddress("glUniform2uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3uiv = (GLEEPFNGLUNIFORM3UIVPROC) __GLeeGetProcAddress("glUniform3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4uiv = (GLEEPFNGLUNIFORM4UIVPROC) __GLeeGetProcAddress("glUniform4uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glTexParameterIiv = (GLEEPFNGLTEXPARAMETERIIVPROC) __GLeeGetProcAddress("glTexParameterIiv"))!=0) nLinked++; if ((GLeeFuncPtr_glTexParameterIuiv = (GLEEPFNGLTEXPARAMETERIUIVPROC) __GLeeGetProcAddress("glTexParameterIuiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexParameterIiv = (GLEEPFNGLGETTEXPARAMETERIIVPROC) __GLeeGetProcAddress("glGetTexParameterIiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexParameterIuiv = (GLEEPFNGLGETTEXPARAMETERIUIVPROC) __GLeeGetProcAddress("glGetTexParameterIuiv"))!=0) nLinked++; if ((GLeeFuncPtr_glClearBufferiv = (GLEEPFNGLCLEARBUFFERIVPROC) __GLeeGetProcAddress("glClearBufferiv"))!=0) nLinked++; if ((GLeeFuncPtr_glClearBufferuiv = (GLEEPFNGLCLEARBUFFERUIVPROC) __GLeeGetProcAddress("glClearBufferuiv"))!=0) nLinked++; if ((GLeeFuncPtr_glClearBufferfv = (GLEEPFNGLCLEARBUFFERFVPROC) __GLeeGetProcAddress("glClearBufferfv"))!=0) nLinked++; if ((GLeeFuncPtr_glClearBufferfi = (GLEEPFNGLCLEARBUFFERFIPROC) __GLeeGetProcAddress("glClearBufferfi"))!=0) nLinked++; if ((GLeeFuncPtr_glGetStringi = (GLEEPFNGLGETSTRINGIPROC) __GLeeGetProcAddress("glGetStringi"))!=0) nLinked++; #endif if (nLinked==58) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_VERSION_3_1(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_3_1 if ((GLeeFuncPtr_glDrawArraysInstanced = (GLEEPFNGLDRAWARRAYSINSTANCEDPROC) __GLeeGetProcAddress("glDrawArraysInstanced"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawElementsInstanced = (GLEEPFNGLDRAWELEMENTSINSTANCEDPROC) __GLeeGetProcAddress("glDrawElementsInstanced"))!=0) nLinked++; if ((GLeeFuncPtr_glTexBuffer = (GLEEPFNGLTEXBUFFERPROC) __GLeeGetProcAddress("glTexBuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glPrimitiveRestartIndex = (GLEEPFNGLPRIMITIVERESTARTINDEXPROC) __GLeeGetProcAddress("glPrimitiveRestartIndex"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_VERSION_3_2(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_3_2 if ((GLeeFuncPtr_glGetInteger64i_v = (GLEEPFNGLGETINTEGER64I_VPROC) __GLeeGetProcAddress("glGetInteger64i_v"))!=0) nLinked++; if ((GLeeFuncPtr_glGetBufferParameteri64v = (GLEEPFNGLGETBUFFERPARAMETERI64VPROC) __GLeeGetProcAddress("glGetBufferParameteri64v"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTexture = (GLEEPFNGLFRAMEBUFFERTEXTUREPROC) __GLeeGetProcAddress("glFramebufferTexture"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_VERSION_3_3(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_3_3 if ((GLeeFuncPtr_glVertexAttribDivisor = (GLEEPFNGLVERTEXATTRIBDIVISORPROC) __GLeeGetProcAddress("glVertexAttribDivisor"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_VERSION_4_0(void) { GLint nLinked=0; #ifdef __GLEE_GL_VERSION_4_0 if ((GLeeFuncPtr_glMinSampleShading = (GLEEPFNGLMINSAMPLESHADINGPROC) __GLeeGetProcAddress("glMinSampleShading"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendEquationi = (GLEEPFNGLBLENDEQUATIONIPROC) __GLeeGetProcAddress("glBlendEquationi"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendEquationSeparatei = (GLEEPFNGLBLENDEQUATIONSEPARATEIPROC) __GLeeGetProcAddress("glBlendEquationSeparatei"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendFunci = (GLEEPFNGLBLENDFUNCIPROC) __GLeeGetProcAddress("glBlendFunci"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendFuncSeparatei = (GLEEPFNGLBLENDFUNCSEPARATEIPROC) __GLeeGetProcAddress("glBlendFuncSeparatei"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_VERSION_4_1(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_VERSION_4_2(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_VERSION_4_3(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_multitexture(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_multitexture if ((GLeeFuncPtr_glActiveTextureARB = (GLEEPFNGLACTIVETEXTUREARBPROC) __GLeeGetProcAddress("glActiveTextureARB"))!=0) nLinked++; if ((GLeeFuncPtr_glClientActiveTextureARB = (GLEEPFNGLCLIENTACTIVETEXTUREARBPROC) __GLeeGetProcAddress("glClientActiveTextureARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1dARB = (GLEEPFNGLMULTITEXCOORD1DARBPROC) __GLeeGetProcAddress("glMultiTexCoord1dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1dvARB = (GLEEPFNGLMULTITEXCOORD1DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1fARB = (GLEEPFNGLMULTITEXCOORD1FARBPROC) __GLeeGetProcAddress("glMultiTexCoord1fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1fvARB = (GLEEPFNGLMULTITEXCOORD1FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1iARB = (GLEEPFNGLMULTITEXCOORD1IARBPROC) __GLeeGetProcAddress("glMultiTexCoord1iARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1ivARB = (GLEEPFNGLMULTITEXCOORD1IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1sARB = (GLEEPFNGLMULTITEXCOORD1SARBPROC) __GLeeGetProcAddress("glMultiTexCoord1sARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1svARB = (GLEEPFNGLMULTITEXCOORD1SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord1svARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2dARB = (GLEEPFNGLMULTITEXCOORD2DARBPROC) __GLeeGetProcAddress("glMultiTexCoord2dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2dvARB = (GLEEPFNGLMULTITEXCOORD2DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2fARB = (GLEEPFNGLMULTITEXCOORD2FARBPROC) __GLeeGetProcAddress("glMultiTexCoord2fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2fvARB = (GLEEPFNGLMULTITEXCOORD2FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2iARB = (GLEEPFNGLMULTITEXCOORD2IARBPROC) __GLeeGetProcAddress("glMultiTexCoord2iARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2ivARB = (GLEEPFNGLMULTITEXCOORD2IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2sARB = (GLEEPFNGLMULTITEXCOORD2SARBPROC) __GLeeGetProcAddress("glMultiTexCoord2sARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2svARB = (GLEEPFNGLMULTITEXCOORD2SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord2svARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3dARB = (GLEEPFNGLMULTITEXCOORD3DARBPROC) __GLeeGetProcAddress("glMultiTexCoord3dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3dvARB = (GLEEPFNGLMULTITEXCOORD3DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3fARB = (GLEEPFNGLMULTITEXCOORD3FARBPROC) __GLeeGetProcAddress("glMultiTexCoord3fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3fvARB = (GLEEPFNGLMULTITEXCOORD3FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3iARB = (GLEEPFNGLMULTITEXCOORD3IARBPROC) __GLeeGetProcAddress("glMultiTexCoord3iARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3ivARB = (GLEEPFNGLMULTITEXCOORD3IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3sARB = (GLEEPFNGLMULTITEXCOORD3SARBPROC) __GLeeGetProcAddress("glMultiTexCoord3sARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3svARB = (GLEEPFNGLMULTITEXCOORD3SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord3svARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4dARB = (GLEEPFNGLMULTITEXCOORD4DARBPROC) __GLeeGetProcAddress("glMultiTexCoord4dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4dvARB = (GLEEPFNGLMULTITEXCOORD4DVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4fARB = (GLEEPFNGLMULTITEXCOORD4FARBPROC) __GLeeGetProcAddress("glMultiTexCoord4fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4fvARB = (GLEEPFNGLMULTITEXCOORD4FVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4iARB = (GLEEPFNGLMULTITEXCOORD4IARBPROC) __GLeeGetProcAddress("glMultiTexCoord4iARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4ivARB = (GLEEPFNGLMULTITEXCOORD4IVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4sARB = (GLEEPFNGLMULTITEXCOORD4SARBPROC) __GLeeGetProcAddress("glMultiTexCoord4sARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4svARB = (GLEEPFNGLMULTITEXCOORD4SVARBPROC) __GLeeGetProcAddress("glMultiTexCoord4svARB"))!=0) nLinked++; #endif if (nLinked==34) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_transpose_matrix(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_transpose_matrix if ((GLeeFuncPtr_glLoadTransposeMatrixfARB = (GLEEPFNGLLOADTRANSPOSEMATRIXFARBPROC) __GLeeGetProcAddress("glLoadTransposeMatrixfARB"))!=0) nLinked++; if ((GLeeFuncPtr_glLoadTransposeMatrixdARB = (GLEEPFNGLLOADTRANSPOSEMATRIXDARBPROC) __GLeeGetProcAddress("glLoadTransposeMatrixdARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultTransposeMatrixfARB = (GLEEPFNGLMULTTRANSPOSEMATRIXFARBPROC) __GLeeGetProcAddress("glMultTransposeMatrixfARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMultTransposeMatrixdARB = (GLEEPFNGLMULTTRANSPOSEMATRIXDARBPROC) __GLeeGetProcAddress("glMultTransposeMatrixdARB"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_multisample(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_multisample if ((GLeeFuncPtr_glSampleCoverageARB = (GLEEPFNGLSAMPLECOVERAGEARBPROC) __GLeeGetProcAddress("glSampleCoverageARB"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_env_add(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_cube_map(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_compression(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_texture_compression if ((GLeeFuncPtr_glCompressedTexImage3DARB = (GLEEPFNGLCOMPRESSEDTEXIMAGE3DARBPROC) __GLeeGetProcAddress("glCompressedTexImage3DARB"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexImage2DARB = (GLEEPFNGLCOMPRESSEDTEXIMAGE2DARBPROC) __GLeeGetProcAddress("glCompressedTexImage2DARB"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexImage1DARB = (GLEEPFNGLCOMPRESSEDTEXIMAGE1DARBPROC) __GLeeGetProcAddress("glCompressedTexImage1DARB"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexSubImage3DARB = (GLEEPFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) __GLeeGetProcAddress("glCompressedTexSubImage3DARB"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexSubImage2DARB = (GLEEPFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) __GLeeGetProcAddress("glCompressedTexSubImage2DARB"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTexSubImage1DARB = (GLEEPFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) __GLeeGetProcAddress("glCompressedTexSubImage1DARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetCompressedTexImageARB = (GLEEPFNGLGETCOMPRESSEDTEXIMAGEARBPROC) __GLeeGetProcAddress("glGetCompressedTexImageARB"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_border_clamp(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_point_parameters(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_point_parameters if ((GLeeFuncPtr_glPointParameterfARB = (GLEEPFNGLPOINTPARAMETERFARBPROC) __GLeeGetProcAddress("glPointParameterfARB"))!=0) nLinked++; if ((GLeeFuncPtr_glPointParameterfvARB = (GLEEPFNGLPOINTPARAMETERFVARBPROC) __GLeeGetProcAddress("glPointParameterfvARB"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_vertex_blend(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_vertex_blend if ((GLeeFuncPtr_glWeightbvARB = (GLEEPFNGLWEIGHTBVARBPROC) __GLeeGetProcAddress("glWeightbvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWeightsvARB = (GLEEPFNGLWEIGHTSVARBPROC) __GLeeGetProcAddress("glWeightsvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWeightivARB = (GLEEPFNGLWEIGHTIVARBPROC) __GLeeGetProcAddress("glWeightivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWeightfvARB = (GLEEPFNGLWEIGHTFVARBPROC) __GLeeGetProcAddress("glWeightfvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWeightdvARB = (GLEEPFNGLWEIGHTDVARBPROC) __GLeeGetProcAddress("glWeightdvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWeightubvARB = (GLEEPFNGLWEIGHTUBVARBPROC) __GLeeGetProcAddress("glWeightubvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWeightusvARB = (GLEEPFNGLWEIGHTUSVARBPROC) __GLeeGetProcAddress("glWeightusvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWeightuivARB = (GLEEPFNGLWEIGHTUIVARBPROC) __GLeeGetProcAddress("glWeightuivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWeightPointerARB = (GLEEPFNGLWEIGHTPOINTERARBPROC) __GLeeGetProcAddress("glWeightPointerARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexBlendARB = (GLEEPFNGLVERTEXBLENDARBPROC) __GLeeGetProcAddress("glVertexBlendARB"))!=0) nLinked++; #endif if (nLinked==10) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_matrix_palette(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_matrix_palette if ((GLeeFuncPtr_glCurrentPaletteMatrixARB = (GLEEPFNGLCURRENTPALETTEMATRIXARBPROC) __GLeeGetProcAddress("glCurrentPaletteMatrixARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixIndexubvARB = (GLEEPFNGLMATRIXINDEXUBVARBPROC) __GLeeGetProcAddress("glMatrixIndexubvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixIndexusvARB = (GLEEPFNGLMATRIXINDEXUSVARBPROC) __GLeeGetProcAddress("glMatrixIndexusvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixIndexuivARB = (GLEEPFNGLMATRIXINDEXUIVARBPROC) __GLeeGetProcAddress("glMatrixIndexuivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixIndexPointerARB = (GLEEPFNGLMATRIXINDEXPOINTERARBPROC) __GLeeGetProcAddress("glMatrixIndexPointerARB"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_env_combine(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_env_crossbar(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_env_dot3(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_mirrored_repeat(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_depth_texture(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_shadow(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_shadow_ambient(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_window_pos(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_window_pos if ((GLeeFuncPtr_glWindowPos2dARB = (GLEEPFNGLWINDOWPOS2DARBPROC) __GLeeGetProcAddress("glWindowPos2dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2dvARB = (GLEEPFNGLWINDOWPOS2DVARBPROC) __GLeeGetProcAddress("glWindowPos2dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2fARB = (GLEEPFNGLWINDOWPOS2FARBPROC) __GLeeGetProcAddress("glWindowPos2fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2fvARB = (GLEEPFNGLWINDOWPOS2FVARBPROC) __GLeeGetProcAddress("glWindowPos2fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2iARB = (GLEEPFNGLWINDOWPOS2IARBPROC) __GLeeGetProcAddress("glWindowPos2iARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2ivARB = (GLEEPFNGLWINDOWPOS2IVARBPROC) __GLeeGetProcAddress("glWindowPos2ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2sARB = (GLEEPFNGLWINDOWPOS2SARBPROC) __GLeeGetProcAddress("glWindowPos2sARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2svARB = (GLEEPFNGLWINDOWPOS2SVARBPROC) __GLeeGetProcAddress("glWindowPos2svARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3dARB = (GLEEPFNGLWINDOWPOS3DARBPROC) __GLeeGetProcAddress("glWindowPos3dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3dvARB = (GLEEPFNGLWINDOWPOS3DVARBPROC) __GLeeGetProcAddress("glWindowPos3dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3fARB = (GLEEPFNGLWINDOWPOS3FARBPROC) __GLeeGetProcAddress("glWindowPos3fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3fvARB = (GLEEPFNGLWINDOWPOS3FVARBPROC) __GLeeGetProcAddress("glWindowPos3fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3iARB = (GLEEPFNGLWINDOWPOS3IARBPROC) __GLeeGetProcAddress("glWindowPos3iARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3ivARB = (GLEEPFNGLWINDOWPOS3IVARBPROC) __GLeeGetProcAddress("glWindowPos3ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3sARB = (GLEEPFNGLWINDOWPOS3SARBPROC) __GLeeGetProcAddress("glWindowPos3sARB"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3svARB = (GLEEPFNGLWINDOWPOS3SVARBPROC) __GLeeGetProcAddress("glWindowPos3svARB"))!=0) nLinked++; #endif if (nLinked==16) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_vertex_program(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_vertex_program if ((GLeeFuncPtr_glVertexAttrib1dARB = (GLEEPFNGLVERTEXATTRIB1DARBPROC) __GLeeGetProcAddress("glVertexAttrib1dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1dvARB = (GLEEPFNGLVERTEXATTRIB1DVARBPROC) __GLeeGetProcAddress("glVertexAttrib1dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1fARB = (GLEEPFNGLVERTEXATTRIB1FARBPROC) __GLeeGetProcAddress("glVertexAttrib1fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1fvARB = (GLEEPFNGLVERTEXATTRIB1FVARBPROC) __GLeeGetProcAddress("glVertexAttrib1fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1sARB = (GLEEPFNGLVERTEXATTRIB1SARBPROC) __GLeeGetProcAddress("glVertexAttrib1sARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1svARB = (GLEEPFNGLVERTEXATTRIB1SVARBPROC) __GLeeGetProcAddress("glVertexAttrib1svARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2dARB = (GLEEPFNGLVERTEXATTRIB2DARBPROC) __GLeeGetProcAddress("glVertexAttrib2dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2dvARB = (GLEEPFNGLVERTEXATTRIB2DVARBPROC) __GLeeGetProcAddress("glVertexAttrib2dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2fARB = (GLEEPFNGLVERTEXATTRIB2FARBPROC) __GLeeGetProcAddress("glVertexAttrib2fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2fvARB = (GLEEPFNGLVERTEXATTRIB2FVARBPROC) __GLeeGetProcAddress("glVertexAttrib2fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2sARB = (GLEEPFNGLVERTEXATTRIB2SARBPROC) __GLeeGetProcAddress("glVertexAttrib2sARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2svARB = (GLEEPFNGLVERTEXATTRIB2SVARBPROC) __GLeeGetProcAddress("glVertexAttrib2svARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3dARB = (GLEEPFNGLVERTEXATTRIB3DARBPROC) __GLeeGetProcAddress("glVertexAttrib3dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3dvARB = (GLEEPFNGLVERTEXATTRIB3DVARBPROC) __GLeeGetProcAddress("glVertexAttrib3dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3fARB = (GLEEPFNGLVERTEXATTRIB3FARBPROC) __GLeeGetProcAddress("glVertexAttrib3fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3fvARB = (GLEEPFNGLVERTEXATTRIB3FVARBPROC) __GLeeGetProcAddress("glVertexAttrib3fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3sARB = (GLEEPFNGLVERTEXATTRIB3SARBPROC) __GLeeGetProcAddress("glVertexAttrib3sARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3svARB = (GLEEPFNGLVERTEXATTRIB3SVARBPROC) __GLeeGetProcAddress("glVertexAttrib3svARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4NbvARB = (GLEEPFNGLVERTEXATTRIB4NBVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NbvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4NivARB = (GLEEPFNGLVERTEXATTRIB4NIVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4NsvARB = (GLEEPFNGLVERTEXATTRIB4NSVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NsvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4NubARB = (GLEEPFNGLVERTEXATTRIB4NUBARBPROC) __GLeeGetProcAddress("glVertexAttrib4NubARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4NubvARB = (GLEEPFNGLVERTEXATTRIB4NUBVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NubvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4NuivARB = (GLEEPFNGLVERTEXATTRIB4NUIVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NuivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4NusvARB = (GLEEPFNGLVERTEXATTRIB4NUSVARBPROC) __GLeeGetProcAddress("glVertexAttrib4NusvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4bvARB = (GLEEPFNGLVERTEXATTRIB4BVARBPROC) __GLeeGetProcAddress("glVertexAttrib4bvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4dARB = (GLEEPFNGLVERTEXATTRIB4DARBPROC) __GLeeGetProcAddress("glVertexAttrib4dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4dvARB = (GLEEPFNGLVERTEXATTRIB4DVARBPROC) __GLeeGetProcAddress("glVertexAttrib4dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4fARB = (GLEEPFNGLVERTEXATTRIB4FARBPROC) __GLeeGetProcAddress("glVertexAttrib4fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4fvARB = (GLEEPFNGLVERTEXATTRIB4FVARBPROC) __GLeeGetProcAddress("glVertexAttrib4fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4ivARB = (GLEEPFNGLVERTEXATTRIB4IVARBPROC) __GLeeGetProcAddress("glVertexAttrib4ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4sARB = (GLEEPFNGLVERTEXATTRIB4SARBPROC) __GLeeGetProcAddress("glVertexAttrib4sARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4svARB = (GLEEPFNGLVERTEXATTRIB4SVARBPROC) __GLeeGetProcAddress("glVertexAttrib4svARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4ubvARB = (GLEEPFNGLVERTEXATTRIB4UBVARBPROC) __GLeeGetProcAddress("glVertexAttrib4ubvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4uivARB = (GLEEPFNGLVERTEXATTRIB4UIVARBPROC) __GLeeGetProcAddress("glVertexAttrib4uivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4usvARB = (GLEEPFNGLVERTEXATTRIB4USVARBPROC) __GLeeGetProcAddress("glVertexAttrib4usvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribPointerARB = (GLEEPFNGLVERTEXATTRIBPOINTERARBPROC) __GLeeGetProcAddress("glVertexAttribPointerARB"))!=0) nLinked++; if ((GLeeFuncPtr_glEnableVertexAttribArrayARB = (GLEEPFNGLENABLEVERTEXATTRIBARRAYARBPROC) __GLeeGetProcAddress("glEnableVertexAttribArrayARB"))!=0) nLinked++; if ((GLeeFuncPtr_glDisableVertexAttribArrayARB = (GLEEPFNGLDISABLEVERTEXATTRIBARRAYARBPROC) __GLeeGetProcAddress("glDisableVertexAttribArrayARB"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramStringARB = (GLEEPFNGLPROGRAMSTRINGARBPROC) __GLeeGetProcAddress("glProgramStringARB"))!=0) nLinked++; if ((GLeeFuncPtr_glBindProgramARB = (GLEEPFNGLBINDPROGRAMARBPROC) __GLeeGetProcAddress("glBindProgramARB"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteProgramsARB = (GLEEPFNGLDELETEPROGRAMSARBPROC) __GLeeGetProcAddress("glDeleteProgramsARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGenProgramsARB = (GLEEPFNGLGENPROGRAMSARBPROC) __GLeeGetProcAddress("glGenProgramsARB"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramEnvParameter4dARB = (GLEEPFNGLPROGRAMENVPARAMETER4DARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramEnvParameter4dvARB = (GLEEPFNGLPROGRAMENVPARAMETER4DVARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramEnvParameter4fARB = (GLEEPFNGLPROGRAMENVPARAMETER4FARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramEnvParameter4fvARB = (GLEEPFNGLPROGRAMENVPARAMETER4FVARBPROC) __GLeeGetProcAddress("glProgramEnvParameter4fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramLocalParameter4dARB = (GLEEPFNGLPROGRAMLOCALPARAMETER4DARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4dARB"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramLocalParameter4dvARB = (GLEEPFNGLPROGRAMLOCALPARAMETER4DVARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4dvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramLocalParameter4fARB = (GLEEPFNGLPROGRAMLOCALPARAMETER4FARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramLocalParameter4fvARB = (GLEEPFNGLPROGRAMLOCALPARAMETER4FVARBPROC) __GLeeGetProcAddress("glProgramLocalParameter4fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramEnvParameterdvARB = (GLEEPFNGLGETPROGRAMENVPARAMETERDVARBPROC) __GLeeGetProcAddress("glGetProgramEnvParameterdvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramEnvParameterfvARB = (GLEEPFNGLGETPROGRAMENVPARAMETERFVARBPROC) __GLeeGetProcAddress("glGetProgramEnvParameterfvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramLocalParameterdvARB = (GLEEPFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) __GLeeGetProcAddress("glGetProgramLocalParameterdvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramLocalParameterfvARB = (GLEEPFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) __GLeeGetProcAddress("glGetProgramLocalParameterfvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramivARB = (GLEEPFNGLGETPROGRAMIVARBPROC) __GLeeGetProcAddress("glGetProgramivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramStringARB = (GLEEPFNGLGETPROGRAMSTRINGARBPROC) __GLeeGetProcAddress("glGetProgramStringARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribdvARB = (GLEEPFNGLGETVERTEXATTRIBDVARBPROC) __GLeeGetProcAddress("glGetVertexAttribdvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribfvARB = (GLEEPFNGLGETVERTEXATTRIBFVARBPROC) __GLeeGetProcAddress("glGetVertexAttribfvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribivARB = (GLEEPFNGLGETVERTEXATTRIBIVARBPROC) __GLeeGetProcAddress("glGetVertexAttribivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribPointervARB = (GLEEPFNGLGETVERTEXATTRIBPOINTERVARBPROC) __GLeeGetProcAddress("glGetVertexAttribPointervARB"))!=0) nLinked++; if ((GLeeFuncPtr_glIsProgramARB = (GLEEPFNGLISPROGRAMARBPROC) __GLeeGetProcAddress("glIsProgramARB"))!=0) nLinked++; #endif if (nLinked==62) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_fragment_program(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_vertex_buffer_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_vertex_buffer_object if ((GLeeFuncPtr_glBindBufferARB = (GLEEPFNGLBINDBUFFERARBPROC) __GLeeGetProcAddress("glBindBufferARB"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteBuffersARB = (GLEEPFNGLDELETEBUFFERSARBPROC) __GLeeGetProcAddress("glDeleteBuffersARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGenBuffersARB = (GLEEPFNGLGENBUFFERSARBPROC) __GLeeGetProcAddress("glGenBuffersARB"))!=0) nLinked++; if ((GLeeFuncPtr_glIsBufferARB = (GLEEPFNGLISBUFFERARBPROC) __GLeeGetProcAddress("glIsBufferARB"))!=0) nLinked++; if ((GLeeFuncPtr_glBufferDataARB = (GLEEPFNGLBUFFERDATAARBPROC) __GLeeGetProcAddress("glBufferDataARB"))!=0) nLinked++; if ((GLeeFuncPtr_glBufferSubDataARB = (GLEEPFNGLBUFFERSUBDATAARBPROC) __GLeeGetProcAddress("glBufferSubDataARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetBufferSubDataARB = (GLEEPFNGLGETBUFFERSUBDATAARBPROC) __GLeeGetProcAddress("glGetBufferSubDataARB"))!=0) nLinked++; if ((GLeeFuncPtr_glMapBufferARB = (GLEEPFNGLMAPBUFFERARBPROC) __GLeeGetProcAddress("glMapBufferARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUnmapBufferARB = (GLEEPFNGLUNMAPBUFFERARBPROC) __GLeeGetProcAddress("glUnmapBufferARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetBufferParameterivARB = (GLEEPFNGLGETBUFFERPARAMETERIVARBPROC) __GLeeGetProcAddress("glGetBufferParameterivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetBufferPointervARB = (GLEEPFNGLGETBUFFERPOINTERVARBPROC) __GLeeGetProcAddress("glGetBufferPointervARB"))!=0) nLinked++; #endif if (nLinked==11) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_occlusion_query(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_occlusion_query if ((GLeeFuncPtr_glGenQueriesARB = (GLEEPFNGLGENQUERIESARBPROC) __GLeeGetProcAddress("glGenQueriesARB"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteQueriesARB = (GLEEPFNGLDELETEQUERIESARBPROC) __GLeeGetProcAddress("glDeleteQueriesARB"))!=0) nLinked++; if ((GLeeFuncPtr_glIsQueryARB = (GLEEPFNGLISQUERYARBPROC) __GLeeGetProcAddress("glIsQueryARB"))!=0) nLinked++; if ((GLeeFuncPtr_glBeginQueryARB = (GLEEPFNGLBEGINQUERYARBPROC) __GLeeGetProcAddress("glBeginQueryARB"))!=0) nLinked++; if ((GLeeFuncPtr_glEndQueryARB = (GLEEPFNGLENDQUERYARBPROC) __GLeeGetProcAddress("glEndQueryARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetQueryivARB = (GLEEPFNGLGETQUERYIVARBPROC) __GLeeGetProcAddress("glGetQueryivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetQueryObjectivARB = (GLEEPFNGLGETQUERYOBJECTIVARBPROC) __GLeeGetProcAddress("glGetQueryObjectivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetQueryObjectuivARB = (GLEEPFNGLGETQUERYOBJECTUIVARBPROC) __GLeeGetProcAddress("glGetQueryObjectuivARB"))!=0) nLinked++; #endif if (nLinked==8) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_shader_objects(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_shader_objects if ((GLeeFuncPtr_glDeleteObjectARB = (GLEEPFNGLDELETEOBJECTARBPROC) __GLeeGetProcAddress("glDeleteObjectARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetHandleARB = (GLEEPFNGLGETHANDLEARBPROC) __GLeeGetProcAddress("glGetHandleARB"))!=0) nLinked++; if ((GLeeFuncPtr_glDetachObjectARB = (GLEEPFNGLDETACHOBJECTARBPROC) __GLeeGetProcAddress("glDetachObjectARB"))!=0) nLinked++; if ((GLeeFuncPtr_glCreateShaderObjectARB = (GLEEPFNGLCREATESHADEROBJECTARBPROC) __GLeeGetProcAddress("glCreateShaderObjectARB"))!=0) nLinked++; if ((GLeeFuncPtr_glShaderSourceARB = (GLEEPFNGLSHADERSOURCEARBPROC) __GLeeGetProcAddress("glShaderSourceARB"))!=0) nLinked++; if ((GLeeFuncPtr_glCompileShaderARB = (GLEEPFNGLCOMPILESHADERARBPROC) __GLeeGetProcAddress("glCompileShaderARB"))!=0) nLinked++; if ((GLeeFuncPtr_glCreateProgramObjectARB = (GLEEPFNGLCREATEPROGRAMOBJECTARBPROC) __GLeeGetProcAddress("glCreateProgramObjectARB"))!=0) nLinked++; if ((GLeeFuncPtr_glAttachObjectARB = (GLEEPFNGLATTACHOBJECTARBPROC) __GLeeGetProcAddress("glAttachObjectARB"))!=0) nLinked++; if ((GLeeFuncPtr_glLinkProgramARB = (GLEEPFNGLLINKPROGRAMARBPROC) __GLeeGetProcAddress("glLinkProgramARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUseProgramObjectARB = (GLEEPFNGLUSEPROGRAMOBJECTARBPROC) __GLeeGetProcAddress("glUseProgramObjectARB"))!=0) nLinked++; if ((GLeeFuncPtr_glValidateProgramARB = (GLEEPFNGLVALIDATEPROGRAMARBPROC) __GLeeGetProcAddress("glValidateProgramARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1fARB = (GLEEPFNGLUNIFORM1FARBPROC) __GLeeGetProcAddress("glUniform1fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2fARB = (GLEEPFNGLUNIFORM2FARBPROC) __GLeeGetProcAddress("glUniform2fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3fARB = (GLEEPFNGLUNIFORM3FARBPROC) __GLeeGetProcAddress("glUniform3fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4fARB = (GLEEPFNGLUNIFORM4FARBPROC) __GLeeGetProcAddress("glUniform4fARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1iARB = (GLEEPFNGLUNIFORM1IARBPROC) __GLeeGetProcAddress("glUniform1iARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2iARB = (GLEEPFNGLUNIFORM2IARBPROC) __GLeeGetProcAddress("glUniform2iARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3iARB = (GLEEPFNGLUNIFORM3IARBPROC) __GLeeGetProcAddress("glUniform3iARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4iARB = (GLEEPFNGLUNIFORM4IARBPROC) __GLeeGetProcAddress("glUniform4iARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1fvARB = (GLEEPFNGLUNIFORM1FVARBPROC) __GLeeGetProcAddress("glUniform1fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2fvARB = (GLEEPFNGLUNIFORM2FVARBPROC) __GLeeGetProcAddress("glUniform2fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3fvARB = (GLEEPFNGLUNIFORM3FVARBPROC) __GLeeGetProcAddress("glUniform3fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4fvARB = (GLEEPFNGLUNIFORM4FVARBPROC) __GLeeGetProcAddress("glUniform4fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1ivARB = (GLEEPFNGLUNIFORM1IVARBPROC) __GLeeGetProcAddress("glUniform1ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2ivARB = (GLEEPFNGLUNIFORM2IVARBPROC) __GLeeGetProcAddress("glUniform2ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3ivARB = (GLEEPFNGLUNIFORM3IVARBPROC) __GLeeGetProcAddress("glUniform3ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4ivARB = (GLEEPFNGLUNIFORM4IVARBPROC) __GLeeGetProcAddress("glUniform4ivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix2fvARB = (GLEEPFNGLUNIFORMMATRIX2FVARBPROC) __GLeeGetProcAddress("glUniformMatrix2fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix3fvARB = (GLEEPFNGLUNIFORMMATRIX3FVARBPROC) __GLeeGetProcAddress("glUniformMatrix3fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix4fvARB = (GLEEPFNGLUNIFORMMATRIX4FVARBPROC) __GLeeGetProcAddress("glUniformMatrix4fvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetObjectParameterfvARB = (GLEEPFNGLGETOBJECTPARAMETERFVARBPROC) __GLeeGetProcAddress("glGetObjectParameterfvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetObjectParameterivARB = (GLEEPFNGLGETOBJECTPARAMETERIVARBPROC) __GLeeGetProcAddress("glGetObjectParameterivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetInfoLogARB = (GLEEPFNGLGETINFOLOGARBPROC) __GLeeGetProcAddress("glGetInfoLogARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetAttachedObjectsARB = (GLEEPFNGLGETATTACHEDOBJECTSARBPROC) __GLeeGetProcAddress("glGetAttachedObjectsARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformLocationARB = (GLEEPFNGLGETUNIFORMLOCATIONARBPROC) __GLeeGetProcAddress("glGetUniformLocationARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveUniformARB = (GLEEPFNGLGETACTIVEUNIFORMARBPROC) __GLeeGetProcAddress("glGetActiveUniformARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformfvARB = (GLEEPFNGLGETUNIFORMFVARBPROC) __GLeeGetProcAddress("glGetUniformfvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformivARB = (GLEEPFNGLGETUNIFORMIVARBPROC) __GLeeGetProcAddress("glGetUniformivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetShaderSourceARB = (GLEEPFNGLGETSHADERSOURCEARBPROC) __GLeeGetProcAddress("glGetShaderSourceARB"))!=0) nLinked++; #endif if (nLinked==39) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_vertex_shader(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_vertex_shader if ((GLeeFuncPtr_glBindAttribLocationARB = (GLEEPFNGLBINDATTRIBLOCATIONARBPROC) __GLeeGetProcAddress("glBindAttribLocationARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveAttribARB = (GLEEPFNGLGETACTIVEATTRIBARBPROC) __GLeeGetProcAddress("glGetActiveAttribARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetAttribLocationARB = (GLEEPFNGLGETATTRIBLOCATIONARBPROC) __GLeeGetProcAddress("glGetAttribLocationARB"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_fragment_shader(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_shading_language_100(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_non_power_of_two(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_point_sprite(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_fragment_program_shadow(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_draw_buffers(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_draw_buffers if ((GLeeFuncPtr_glDrawBuffersARB = (GLEEPFNGLDRAWBUFFERSARBPROC) __GLeeGetProcAddress("glDrawBuffersARB"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_rectangle(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_color_buffer_float(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_color_buffer_float if ((GLeeFuncPtr_glClampColorARB = (GLEEPFNGLCLAMPCOLORARBPROC) __GLeeGetProcAddress("glClampColorARB"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_half_float_pixel(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_pixel_buffer_object(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_depth_buffer_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_draw_instanced(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_draw_instanced if ((GLeeFuncPtr_glDrawArraysInstancedARB = (GLEEPFNGLDRAWARRAYSINSTANCEDARBPROC) __GLeeGetProcAddress("glDrawArraysInstancedARB"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawElementsInstancedARB = (GLEEPFNGLDRAWELEMENTSINSTANCEDARBPROC) __GLeeGetProcAddress("glDrawElementsInstancedARB"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_framebuffer_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_framebuffer_object if ((GLeeFuncPtr_glIsRenderbuffer = (GLEEPFNGLISRENDERBUFFERPROC) __GLeeGetProcAddress("glIsRenderbuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glBindRenderbuffer = (GLEEPFNGLBINDRENDERBUFFERPROC) __GLeeGetProcAddress("glBindRenderbuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteRenderbuffers = (GLEEPFNGLDELETERENDERBUFFERSPROC) __GLeeGetProcAddress("glDeleteRenderbuffers"))!=0) nLinked++; if ((GLeeFuncPtr_glGenRenderbuffers = (GLEEPFNGLGENRENDERBUFFERSPROC) __GLeeGetProcAddress("glGenRenderbuffers"))!=0) nLinked++; if ((GLeeFuncPtr_glRenderbufferStorage = (GLEEPFNGLRENDERBUFFERSTORAGEPROC) __GLeeGetProcAddress("glRenderbufferStorage"))!=0) nLinked++; if ((GLeeFuncPtr_glGetRenderbufferParameteriv = (GLEEPFNGLGETRENDERBUFFERPARAMETERIVPROC) __GLeeGetProcAddress("glGetRenderbufferParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glIsFramebuffer = (GLEEPFNGLISFRAMEBUFFERPROC) __GLeeGetProcAddress("glIsFramebuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glBindFramebuffer = (GLEEPFNGLBINDFRAMEBUFFERPROC) __GLeeGetProcAddress("glBindFramebuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteFramebuffers = (GLEEPFNGLDELETEFRAMEBUFFERSPROC) __GLeeGetProcAddress("glDeleteFramebuffers"))!=0) nLinked++; if ((GLeeFuncPtr_glGenFramebuffers = (GLEEPFNGLGENFRAMEBUFFERSPROC) __GLeeGetProcAddress("glGenFramebuffers"))!=0) nLinked++; if ((GLeeFuncPtr_glCheckFramebufferStatus = (GLEEPFNGLCHECKFRAMEBUFFERSTATUSPROC) __GLeeGetProcAddress("glCheckFramebufferStatus"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTexture1D = (GLEEPFNGLFRAMEBUFFERTEXTURE1DPROC) __GLeeGetProcAddress("glFramebufferTexture1D"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTexture2D = (GLEEPFNGLFRAMEBUFFERTEXTURE2DPROC) __GLeeGetProcAddress("glFramebufferTexture2D"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTexture3D = (GLEEPFNGLFRAMEBUFFERTEXTURE3DPROC) __GLeeGetProcAddress("glFramebufferTexture3D"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferRenderbuffer = (GLEEPFNGLFRAMEBUFFERRENDERBUFFERPROC) __GLeeGetProcAddress("glFramebufferRenderbuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFramebufferAttachmentParameteriv = (GLEEPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) __GLeeGetProcAddress("glGetFramebufferAttachmentParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glGenerateMipmap = (GLEEPFNGLGENERATEMIPMAPPROC) __GLeeGetProcAddress("glGenerateMipmap"))!=0) nLinked++; if ((GLeeFuncPtr_glBlitFramebuffer = (GLEEPFNGLBLITFRAMEBUFFERPROC) __GLeeGetProcAddress("glBlitFramebuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glRenderbufferStorageMultisample = (GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) __GLeeGetProcAddress("glRenderbufferStorageMultisample"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTextureLayer = (GLEEPFNGLFRAMEBUFFERTEXTURELAYERPROC) __GLeeGetProcAddress("glFramebufferTextureLayer"))!=0) nLinked++; #endif if (nLinked==20) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_framebuffer_sRGB(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_geometry_shader4(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_geometry_shader4 if ((GLeeFuncPtr_glProgramParameteriARB = (GLEEPFNGLPROGRAMPARAMETERIARBPROC) __GLeeGetProcAddress("glProgramParameteriARB"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTextureARB = (GLEEPFNGLFRAMEBUFFERTEXTUREARBPROC) __GLeeGetProcAddress("glFramebufferTextureARB"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTextureLayerARB = (GLEEPFNGLFRAMEBUFFERTEXTURELAYERARBPROC) __GLeeGetProcAddress("glFramebufferTextureLayerARB"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTextureFaceARB = (GLEEPFNGLFRAMEBUFFERTEXTUREFACEARBPROC) __GLeeGetProcAddress("glFramebufferTextureFaceARB"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_half_float_vertex(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_instanced_arrays(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_instanced_arrays if ((GLeeFuncPtr_glVertexAttribDivisorARB = (GLEEPFNGLVERTEXATTRIBDIVISORARBPROC) __GLeeGetProcAddress("glVertexAttribDivisorARB"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_map_buffer_range(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_map_buffer_range if ((GLeeFuncPtr_glMapBufferRange = (GLEEPFNGLMAPBUFFERRANGEPROC) __GLeeGetProcAddress("glMapBufferRange"))!=0) nLinked++; if ((GLeeFuncPtr_glFlushMappedBufferRange = (GLEEPFNGLFLUSHMAPPEDBUFFERRANGEPROC) __GLeeGetProcAddress("glFlushMappedBufferRange"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_buffer_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_texture_buffer_object if ((GLeeFuncPtr_glTexBufferARB = (GLEEPFNGLTEXBUFFERARBPROC) __GLeeGetProcAddress("glTexBufferARB"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_compression_rgtc(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_rg(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_vertex_array_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_vertex_array_object if ((GLeeFuncPtr_glBindVertexArray = (GLEEPFNGLBINDVERTEXARRAYPROC) __GLeeGetProcAddress("glBindVertexArray"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteVertexArrays = (GLEEPFNGLDELETEVERTEXARRAYSPROC) __GLeeGetProcAddress("glDeleteVertexArrays"))!=0) nLinked++; if ((GLeeFuncPtr_glGenVertexArrays = (GLEEPFNGLGENVERTEXARRAYSPROC) __GLeeGetProcAddress("glGenVertexArrays"))!=0) nLinked++; if ((GLeeFuncPtr_glIsVertexArray = (GLEEPFNGLISVERTEXARRAYPROC) __GLeeGetProcAddress("glIsVertexArray"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_uniform_buffer_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_uniform_buffer_object if ((GLeeFuncPtr_glGetUniformIndices = (GLEEPFNGLGETUNIFORMINDICESPROC) __GLeeGetProcAddress("glGetUniformIndices"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveUniformsiv = (GLEEPFNGLGETACTIVEUNIFORMSIVPROC) __GLeeGetProcAddress("glGetActiveUniformsiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveUniformName = (GLEEPFNGLGETACTIVEUNIFORMNAMEPROC) __GLeeGetProcAddress("glGetActiveUniformName"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformBlockIndex = (GLEEPFNGLGETUNIFORMBLOCKINDEXPROC) __GLeeGetProcAddress("glGetUniformBlockIndex"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveUniformBlockiv = (GLEEPFNGLGETACTIVEUNIFORMBLOCKIVPROC) __GLeeGetProcAddress("glGetActiveUniformBlockiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveUniformBlockName = (GLEEPFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) __GLeeGetProcAddress("glGetActiveUniformBlockName"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformBlockBinding = (GLEEPFNGLUNIFORMBLOCKBINDINGPROC) __GLeeGetProcAddress("glUniformBlockBinding"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_compatibility(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_copy_buffer(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_copy_buffer if ((GLeeFuncPtr_glCopyBufferSubData = (GLEEPFNGLCOPYBUFFERSUBDATAPROC) __GLeeGetProcAddress("glCopyBufferSubData"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_shader_texture_lod(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_depth_clamp(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_draw_elements_base_vertex(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_draw_elements_base_vertex if ((GLeeFuncPtr_glDrawElementsBaseVertex = (GLEEPFNGLDRAWELEMENTSBASEVERTEXPROC) __GLeeGetProcAddress("glDrawElementsBaseVertex"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawRangeElementsBaseVertex = (GLEEPFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) __GLeeGetProcAddress("glDrawRangeElementsBaseVertex"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawElementsInstancedBaseVertex = (GLEEPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) __GLeeGetProcAddress("glDrawElementsInstancedBaseVertex"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiDrawElementsBaseVertex = (GLEEPFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) __GLeeGetProcAddress("glMultiDrawElementsBaseVertex"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_fragment_coord_conventions(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_provoking_vertex(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_provoking_vertex if ((GLeeFuncPtr_glProvokingVertex = (GLEEPFNGLPROVOKINGVERTEXPROC) __GLeeGetProcAddress("glProvokingVertex"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_seamless_cube_map(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_sync(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_sync if ((GLeeFuncPtr_glFenceSync = (GLEEPFNGLFENCESYNCPROC) __GLeeGetProcAddress("glFenceSync"))!=0) nLinked++; if ((GLeeFuncPtr_glIsSync = (GLEEPFNGLISSYNCPROC) __GLeeGetProcAddress("glIsSync"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteSync = (GLEEPFNGLDELETESYNCPROC) __GLeeGetProcAddress("glDeleteSync"))!=0) nLinked++; if ((GLeeFuncPtr_glClientWaitSync = (GLEEPFNGLCLIENTWAITSYNCPROC) __GLeeGetProcAddress("glClientWaitSync"))!=0) nLinked++; if ((GLeeFuncPtr_glWaitSync = (GLEEPFNGLWAITSYNCPROC) __GLeeGetProcAddress("glWaitSync"))!=0) nLinked++; if ((GLeeFuncPtr_glGetInteger64v = (GLEEPFNGLGETINTEGER64VPROC) __GLeeGetProcAddress("glGetInteger64v"))!=0) nLinked++; if ((GLeeFuncPtr_glGetSynciv = (GLEEPFNGLGETSYNCIVPROC) __GLeeGetProcAddress("glGetSynciv"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_multisample(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_texture_multisample if ((GLeeFuncPtr_glTexImage2DMultisample = (GLEEPFNGLTEXIMAGE2DMULTISAMPLEPROC) __GLeeGetProcAddress("glTexImage2DMultisample"))!=0) nLinked++; if ((GLeeFuncPtr_glTexImage3DMultisample = (GLEEPFNGLTEXIMAGE3DMULTISAMPLEPROC) __GLeeGetProcAddress("glTexImage3DMultisample"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultisamplefv = (GLEEPFNGLGETMULTISAMPLEFVPROC) __GLeeGetProcAddress("glGetMultisamplefv"))!=0) nLinked++; if ((GLeeFuncPtr_glSampleMaski = (GLEEPFNGLSAMPLEMASKIPROC) __GLeeGetProcAddress("glSampleMaski"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_vertex_array_bgra(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_draw_buffers_blend(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_draw_buffers_blend if ((GLeeFuncPtr_glBlendEquationiARB = (GLEEPFNGLBLENDEQUATIONIARBPROC) __GLeeGetProcAddress("glBlendEquationiARB"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendEquationSeparateiARB = (GLEEPFNGLBLENDEQUATIONSEPARATEIARBPROC) __GLeeGetProcAddress("glBlendEquationSeparateiARB"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendFunciARB = (GLEEPFNGLBLENDFUNCIARBPROC) __GLeeGetProcAddress("glBlendFunciARB"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendFuncSeparateiARB = (GLEEPFNGLBLENDFUNCSEPARATEIARBPROC) __GLeeGetProcAddress("glBlendFuncSeparateiARB"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_sample_shading(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_sample_shading if ((GLeeFuncPtr_glMinSampleShadingARB = (GLEEPFNGLMINSAMPLESHADINGARBPROC) __GLeeGetProcAddress("glMinSampleShadingARB"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_cube_map_array(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_gather(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_query_lod(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_shading_language_include(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_shading_language_include if ((GLeeFuncPtr_glNamedStringARB = (GLEEPFNGLNAMEDSTRINGARBPROC) __GLeeGetProcAddress("glNamedStringARB"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteNamedStringARB = (GLEEPFNGLDELETENAMEDSTRINGARBPROC) __GLeeGetProcAddress("glDeleteNamedStringARB"))!=0) nLinked++; if ((GLeeFuncPtr_glCompileShaderIncludeARB = (GLEEPFNGLCOMPILESHADERINCLUDEARBPROC) __GLeeGetProcAddress("glCompileShaderIncludeARB"))!=0) nLinked++; if ((GLeeFuncPtr_glIsNamedStringARB = (GLEEPFNGLISNAMEDSTRINGARBPROC) __GLeeGetProcAddress("glIsNamedStringARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedStringARB = (GLEEPFNGLGETNAMEDSTRINGARBPROC) __GLeeGetProcAddress("glGetNamedStringARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedStringivARB = (GLEEPFNGLGETNAMEDSTRINGIVARBPROC) __GLeeGetProcAddress("glGetNamedStringivARB"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_compression_bptc(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_blend_func_extended(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_blend_func_extended if ((GLeeFuncPtr_glBindFragDataLocationIndexed = (GLEEPFNGLBINDFRAGDATALOCATIONINDEXEDPROC) __GLeeGetProcAddress("glBindFragDataLocationIndexed"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFragDataIndex = (GLEEPFNGLGETFRAGDATAINDEXPROC) __GLeeGetProcAddress("glGetFragDataIndex"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_explicit_attrib_location(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_occlusion_query2(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_sampler_objects(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_sampler_objects if ((GLeeFuncPtr_glGenSamplers = (GLEEPFNGLGENSAMPLERSPROC) __GLeeGetProcAddress("glGenSamplers"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteSamplers = (GLEEPFNGLDELETESAMPLERSPROC) __GLeeGetProcAddress("glDeleteSamplers"))!=0) nLinked++; if ((GLeeFuncPtr_glIsSampler = (GLEEPFNGLISSAMPLERPROC) __GLeeGetProcAddress("glIsSampler"))!=0) nLinked++; if ((GLeeFuncPtr_glBindSampler = (GLEEPFNGLBINDSAMPLERPROC) __GLeeGetProcAddress("glBindSampler"))!=0) nLinked++; if ((GLeeFuncPtr_glSamplerParameteri = (GLEEPFNGLSAMPLERPARAMETERIPROC) __GLeeGetProcAddress("glSamplerParameteri"))!=0) nLinked++; if ((GLeeFuncPtr_glSamplerParameteriv = (GLEEPFNGLSAMPLERPARAMETERIVPROC) __GLeeGetProcAddress("glSamplerParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glSamplerParameterf = (GLEEPFNGLSAMPLERPARAMETERFPROC) __GLeeGetProcAddress("glSamplerParameterf"))!=0) nLinked++; if ((GLeeFuncPtr_glSamplerParameterfv = (GLEEPFNGLSAMPLERPARAMETERFVPROC) __GLeeGetProcAddress("glSamplerParameterfv"))!=0) nLinked++; if ((GLeeFuncPtr_glSamplerParameterIiv = (GLEEPFNGLSAMPLERPARAMETERIIVPROC) __GLeeGetProcAddress("glSamplerParameterIiv"))!=0) nLinked++; if ((GLeeFuncPtr_glSamplerParameterIuiv = (GLEEPFNGLSAMPLERPARAMETERIUIVPROC) __GLeeGetProcAddress("glSamplerParameterIuiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetSamplerParameteriv = (GLEEPFNGLGETSAMPLERPARAMETERIVPROC) __GLeeGetProcAddress("glGetSamplerParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetSamplerParameterIiv = (GLEEPFNGLGETSAMPLERPARAMETERIIVPROC) __GLeeGetProcAddress("glGetSamplerParameterIiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetSamplerParameterfv = (GLEEPFNGLGETSAMPLERPARAMETERFVPROC) __GLeeGetProcAddress("glGetSamplerParameterfv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetSamplerParameterIuiv = (GLEEPFNGLGETSAMPLERPARAMETERIUIVPROC) __GLeeGetProcAddress("glGetSamplerParameterIuiv"))!=0) nLinked++; #endif if (nLinked==14) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_shader_bit_encoding(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_rgb10_a2ui(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_swizzle(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_timer_query(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_timer_query if ((GLeeFuncPtr_glQueryCounter = (GLEEPFNGLQUERYCOUNTERPROC) __GLeeGetProcAddress("glQueryCounter"))!=0) nLinked++; if ((GLeeFuncPtr_glGetQueryObjecti64v = (GLEEPFNGLGETQUERYOBJECTI64VPROC) __GLeeGetProcAddress("glGetQueryObjecti64v"))!=0) nLinked++; if ((GLeeFuncPtr_glGetQueryObjectui64v = (GLEEPFNGLGETQUERYOBJECTUI64VPROC) __GLeeGetProcAddress("glGetQueryObjectui64v"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_vertex_type_2_10_10_10_rev(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_vertex_type_2_10_10_10_rev if ((GLeeFuncPtr_glVertexP2ui = (GLEEPFNGLVERTEXP2UIPROC) __GLeeGetProcAddress("glVertexP2ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexP2uiv = (GLEEPFNGLVERTEXP2UIVPROC) __GLeeGetProcAddress("glVertexP2uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexP3ui = (GLEEPFNGLVERTEXP3UIPROC) __GLeeGetProcAddress("glVertexP3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexP3uiv = (GLEEPFNGLVERTEXP3UIVPROC) __GLeeGetProcAddress("glVertexP3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexP4ui = (GLEEPFNGLVERTEXP4UIPROC) __GLeeGetProcAddress("glVertexP4ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexP4uiv = (GLEEPFNGLVERTEXP4UIVPROC) __GLeeGetProcAddress("glVertexP4uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordP1ui = (GLEEPFNGLTEXCOORDP1UIPROC) __GLeeGetProcAddress("glTexCoordP1ui"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordP1uiv = (GLEEPFNGLTEXCOORDP1UIVPROC) __GLeeGetProcAddress("glTexCoordP1uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordP2ui = (GLEEPFNGLTEXCOORDP2UIPROC) __GLeeGetProcAddress("glTexCoordP2ui"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordP2uiv = (GLEEPFNGLTEXCOORDP2UIVPROC) __GLeeGetProcAddress("glTexCoordP2uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordP3ui = (GLEEPFNGLTEXCOORDP3UIPROC) __GLeeGetProcAddress("glTexCoordP3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordP3uiv = (GLEEPFNGLTEXCOORDP3UIVPROC) __GLeeGetProcAddress("glTexCoordP3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordP4ui = (GLEEPFNGLTEXCOORDP4UIPROC) __GLeeGetProcAddress("glTexCoordP4ui"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordP4uiv = (GLEEPFNGLTEXCOORDP4UIVPROC) __GLeeGetProcAddress("glTexCoordP4uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoordP1ui = (GLEEPFNGLMULTITEXCOORDP1UIPROC) __GLeeGetProcAddress("glMultiTexCoordP1ui"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoordP1uiv = (GLEEPFNGLMULTITEXCOORDP1UIVPROC) __GLeeGetProcAddress("glMultiTexCoordP1uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoordP2ui = (GLEEPFNGLMULTITEXCOORDP2UIPROC) __GLeeGetProcAddress("glMultiTexCoordP2ui"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoordP2uiv = (GLEEPFNGLMULTITEXCOORDP2UIVPROC) __GLeeGetProcAddress("glMultiTexCoordP2uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoordP3ui = (GLEEPFNGLMULTITEXCOORDP3UIPROC) __GLeeGetProcAddress("glMultiTexCoordP3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoordP3uiv = (GLEEPFNGLMULTITEXCOORDP3UIVPROC) __GLeeGetProcAddress("glMultiTexCoordP3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoordP4ui = (GLEEPFNGLMULTITEXCOORDP4UIPROC) __GLeeGetProcAddress("glMultiTexCoordP4ui"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoordP4uiv = (GLEEPFNGLMULTITEXCOORDP4UIVPROC) __GLeeGetProcAddress("glMultiTexCoordP4uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalP3ui = (GLEEPFNGLNORMALP3UIPROC) __GLeeGetProcAddress("glNormalP3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalP3uiv = (GLEEPFNGLNORMALP3UIVPROC) __GLeeGetProcAddress("glNormalP3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glColorP3ui = (GLEEPFNGLCOLORP3UIPROC) __GLeeGetProcAddress("glColorP3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glColorP3uiv = (GLEEPFNGLCOLORP3UIVPROC) __GLeeGetProcAddress("glColorP3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glColorP4ui = (GLEEPFNGLCOLORP4UIPROC) __GLeeGetProcAddress("glColorP4ui"))!=0) nLinked++; if ((GLeeFuncPtr_glColorP4uiv = (GLEEPFNGLCOLORP4UIVPROC) __GLeeGetProcAddress("glColorP4uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColorP3ui = (GLEEPFNGLSECONDARYCOLORP3UIPROC) __GLeeGetProcAddress("glSecondaryColorP3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColorP3uiv = (GLEEPFNGLSECONDARYCOLORP3UIVPROC) __GLeeGetProcAddress("glSecondaryColorP3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribP1ui = (GLEEPFNGLVERTEXATTRIBP1UIPROC) __GLeeGetProcAddress("glVertexAttribP1ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribP1uiv = (GLEEPFNGLVERTEXATTRIBP1UIVPROC) __GLeeGetProcAddress("glVertexAttribP1uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribP2ui = (GLEEPFNGLVERTEXATTRIBP2UIPROC) __GLeeGetProcAddress("glVertexAttribP2ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribP2uiv = (GLEEPFNGLVERTEXATTRIBP2UIVPROC) __GLeeGetProcAddress("glVertexAttribP2uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribP3ui = (GLEEPFNGLVERTEXATTRIBP3UIPROC) __GLeeGetProcAddress("glVertexAttribP3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribP3uiv = (GLEEPFNGLVERTEXATTRIBP3UIVPROC) __GLeeGetProcAddress("glVertexAttribP3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribP4ui = (GLEEPFNGLVERTEXATTRIBP4UIPROC) __GLeeGetProcAddress("glVertexAttribP4ui"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribP4uiv = (GLEEPFNGLVERTEXATTRIBP4UIVPROC) __GLeeGetProcAddress("glVertexAttribP4uiv"))!=0) nLinked++; #endif if (nLinked==38) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_draw_indirect(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_draw_indirect if ((GLeeFuncPtr_glDrawArraysIndirect = (GLEEPFNGLDRAWARRAYSINDIRECTPROC) __GLeeGetProcAddress("glDrawArraysIndirect"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawElementsIndirect = (GLEEPFNGLDRAWELEMENTSINDIRECTPROC) __GLeeGetProcAddress("glDrawElementsIndirect"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_gpu_shader5(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_gpu_shader_fp64(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_gpu_shader_fp64 if ((GLeeFuncPtr_glUniform1d = (GLEEPFNGLUNIFORM1DPROC) __GLeeGetProcAddress("glUniform1d"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2d = (GLEEPFNGLUNIFORM2DPROC) __GLeeGetProcAddress("glUniform2d"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3d = (GLEEPFNGLUNIFORM3DPROC) __GLeeGetProcAddress("glUniform3d"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4d = (GLEEPFNGLUNIFORM4DPROC) __GLeeGetProcAddress("glUniform4d"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1dv = (GLEEPFNGLUNIFORM1DVPROC) __GLeeGetProcAddress("glUniform1dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2dv = (GLEEPFNGLUNIFORM2DVPROC) __GLeeGetProcAddress("glUniform2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3dv = (GLEEPFNGLUNIFORM3DVPROC) __GLeeGetProcAddress("glUniform3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4dv = (GLEEPFNGLUNIFORM4DVPROC) __GLeeGetProcAddress("glUniform4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix2dv = (GLEEPFNGLUNIFORMMATRIX2DVPROC) __GLeeGetProcAddress("glUniformMatrix2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix3dv = (GLEEPFNGLUNIFORMMATRIX3DVPROC) __GLeeGetProcAddress("glUniformMatrix3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix4dv = (GLEEPFNGLUNIFORMMATRIX4DVPROC) __GLeeGetProcAddress("glUniformMatrix4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix2x3dv = (GLEEPFNGLUNIFORMMATRIX2X3DVPROC) __GLeeGetProcAddress("glUniformMatrix2x3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix2x4dv = (GLEEPFNGLUNIFORMMATRIX2X4DVPROC) __GLeeGetProcAddress("glUniformMatrix2x4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix3x2dv = (GLEEPFNGLUNIFORMMATRIX3X2DVPROC) __GLeeGetProcAddress("glUniformMatrix3x2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix3x4dv = (GLEEPFNGLUNIFORMMATRIX3X4DVPROC) __GLeeGetProcAddress("glUniformMatrix3x4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix4x2dv = (GLEEPFNGLUNIFORMMATRIX4X2DVPROC) __GLeeGetProcAddress("glUniformMatrix4x2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformMatrix4x3dv = (GLEEPFNGLUNIFORMMATRIX4X3DVPROC) __GLeeGetProcAddress("glUniformMatrix4x3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformdv = (GLEEPFNGLGETUNIFORMDVPROC) __GLeeGetProcAddress("glGetUniformdv"))!=0) nLinked++; #endif if (nLinked==18) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_shader_subroutine(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_shader_subroutine if ((GLeeFuncPtr_glGetSubroutineUniformLocation = (GLEEPFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) __GLeeGetProcAddress("glGetSubroutineUniformLocation"))!=0) nLinked++; if ((GLeeFuncPtr_glGetSubroutineIndex = (GLEEPFNGLGETSUBROUTINEINDEXPROC) __GLeeGetProcAddress("glGetSubroutineIndex"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveSubroutineUniformiv = (GLEEPFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) __GLeeGetProcAddress("glGetActiveSubroutineUniformiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveSubroutineUniformName = (GLEEPFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) __GLeeGetProcAddress("glGetActiveSubroutineUniformName"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveSubroutineName = (GLEEPFNGLGETACTIVESUBROUTINENAMEPROC) __GLeeGetProcAddress("glGetActiveSubroutineName"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformSubroutinesuiv = (GLEEPFNGLUNIFORMSUBROUTINESUIVPROC) __GLeeGetProcAddress("glUniformSubroutinesuiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformSubroutineuiv = (GLEEPFNGLGETUNIFORMSUBROUTINEUIVPROC) __GLeeGetProcAddress("glGetUniformSubroutineuiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramStageiv = (GLEEPFNGLGETPROGRAMSTAGEIVPROC) __GLeeGetProcAddress("glGetProgramStageiv"))!=0) nLinked++; #endif if (nLinked==8) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_tessellation_shader(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_tessellation_shader if ((GLeeFuncPtr_glPatchParameteri = (GLEEPFNGLPATCHPARAMETERIPROC) __GLeeGetProcAddress("glPatchParameteri"))!=0) nLinked++; if ((GLeeFuncPtr_glPatchParameterfv = (GLEEPFNGLPATCHPARAMETERFVPROC) __GLeeGetProcAddress("glPatchParameterfv"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_buffer_object_rgb32(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_transform_feedback2(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_transform_feedback2 if ((GLeeFuncPtr_glBindTransformFeedback = (GLEEPFNGLBINDTRANSFORMFEEDBACKPROC) __GLeeGetProcAddress("glBindTransformFeedback"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteTransformFeedbacks = (GLEEPFNGLDELETETRANSFORMFEEDBACKSPROC) __GLeeGetProcAddress("glDeleteTransformFeedbacks"))!=0) nLinked++; if ((GLeeFuncPtr_glGenTransformFeedbacks = (GLEEPFNGLGENTRANSFORMFEEDBACKSPROC) __GLeeGetProcAddress("glGenTransformFeedbacks"))!=0) nLinked++; if ((GLeeFuncPtr_glIsTransformFeedback = (GLEEPFNGLISTRANSFORMFEEDBACKPROC) __GLeeGetProcAddress("glIsTransformFeedback"))!=0) nLinked++; if ((GLeeFuncPtr_glPauseTransformFeedback = (GLEEPFNGLPAUSETRANSFORMFEEDBACKPROC) __GLeeGetProcAddress("glPauseTransformFeedback"))!=0) nLinked++; if ((GLeeFuncPtr_glResumeTransformFeedback = (GLEEPFNGLRESUMETRANSFORMFEEDBACKPROC) __GLeeGetProcAddress("glResumeTransformFeedback"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawTransformFeedback = (GLEEPFNGLDRAWTRANSFORMFEEDBACKPROC) __GLeeGetProcAddress("glDrawTransformFeedback"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_transform_feedback3(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_transform_feedback3 if ((GLeeFuncPtr_glDrawTransformFeedbackStream = (GLEEPFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) __GLeeGetProcAddress("glDrawTransformFeedbackStream"))!=0) nLinked++; if ((GLeeFuncPtr_glBeginQueryIndexed = (GLEEPFNGLBEGINQUERYINDEXEDPROC) __GLeeGetProcAddress("glBeginQueryIndexed"))!=0) nLinked++; if ((GLeeFuncPtr_glEndQueryIndexed = (GLEEPFNGLENDQUERYINDEXEDPROC) __GLeeGetProcAddress("glEndQueryIndexed"))!=0) nLinked++; if ((GLeeFuncPtr_glGetQueryIndexediv = (GLEEPFNGLGETQUERYINDEXEDIVPROC) __GLeeGetProcAddress("glGetQueryIndexediv"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_ES2_compatibility(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_ES2_compatibility if ((GLeeFuncPtr_glReleaseShaderCompiler = (GLEEPFNGLRELEASESHADERCOMPILERPROC) __GLeeGetProcAddress("glReleaseShaderCompiler"))!=0) nLinked++; if ((GLeeFuncPtr_glShaderBinary = (GLEEPFNGLSHADERBINARYPROC) __GLeeGetProcAddress("glShaderBinary"))!=0) nLinked++; if ((GLeeFuncPtr_glGetShaderPrecisionFormat = (GLEEPFNGLGETSHADERPRECISIONFORMATPROC) __GLeeGetProcAddress("glGetShaderPrecisionFormat"))!=0) nLinked++; if ((GLeeFuncPtr_glDepthRangef = (GLEEPFNGLDEPTHRANGEFPROC) __GLeeGetProcAddress("glDepthRangef"))!=0) nLinked++; if ((GLeeFuncPtr_glClearDepthf = (GLEEPFNGLCLEARDEPTHFPROC) __GLeeGetProcAddress("glClearDepthf"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_get_program_binary(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_get_program_binary if ((GLeeFuncPtr_glGetProgramBinary = (GLEEPFNGLGETPROGRAMBINARYPROC) __GLeeGetProcAddress("glGetProgramBinary"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramBinary = (GLEEPFNGLPROGRAMBINARYPROC) __GLeeGetProcAddress("glProgramBinary"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramParameteri = (GLEEPFNGLPROGRAMPARAMETERIPROC) __GLeeGetProcAddress("glProgramParameteri"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_separate_shader_objects(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_separate_shader_objects if ((GLeeFuncPtr_glUseProgramStages = (GLEEPFNGLUSEPROGRAMSTAGESPROC) __GLeeGetProcAddress("glUseProgramStages"))!=0) nLinked++; if ((GLeeFuncPtr_glActiveShaderProgram = (GLEEPFNGLACTIVESHADERPROGRAMPROC) __GLeeGetProcAddress("glActiveShaderProgram"))!=0) nLinked++; if ((GLeeFuncPtr_glCreateShaderProgramv = (GLEEPFNGLCREATESHADERPROGRAMVPROC) __GLeeGetProcAddress("glCreateShaderProgramv"))!=0) nLinked++; if ((GLeeFuncPtr_glBindProgramPipeline = (GLEEPFNGLBINDPROGRAMPIPELINEPROC) __GLeeGetProcAddress("glBindProgramPipeline"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteProgramPipelines = (GLEEPFNGLDELETEPROGRAMPIPELINESPROC) __GLeeGetProcAddress("glDeleteProgramPipelines"))!=0) nLinked++; if ((GLeeFuncPtr_glGenProgramPipelines = (GLEEPFNGLGENPROGRAMPIPELINESPROC) __GLeeGetProcAddress("glGenProgramPipelines"))!=0) nLinked++; if ((GLeeFuncPtr_glIsProgramPipeline = (GLEEPFNGLISPROGRAMPIPELINEPROC) __GLeeGetProcAddress("glIsProgramPipeline"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramPipelineiv = (GLEEPFNGLGETPROGRAMPIPELINEIVPROC) __GLeeGetProcAddress("glGetProgramPipelineiv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1i = (GLEEPFNGLPROGRAMUNIFORM1IPROC) __GLeeGetProcAddress("glProgramUniform1i"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1iv = (GLEEPFNGLPROGRAMUNIFORM1IVPROC) __GLeeGetProcAddress("glProgramUniform1iv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1f = (GLEEPFNGLPROGRAMUNIFORM1FPROC) __GLeeGetProcAddress("glProgramUniform1f"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1fv = (GLEEPFNGLPROGRAMUNIFORM1FVPROC) __GLeeGetProcAddress("glProgramUniform1fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1d = (GLEEPFNGLPROGRAMUNIFORM1DPROC) __GLeeGetProcAddress("glProgramUniform1d"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1dv = (GLEEPFNGLPROGRAMUNIFORM1DVPROC) __GLeeGetProcAddress("glProgramUniform1dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1ui = (GLEEPFNGLPROGRAMUNIFORM1UIPROC) __GLeeGetProcAddress("glProgramUniform1ui"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1uiv = (GLEEPFNGLPROGRAMUNIFORM1UIVPROC) __GLeeGetProcAddress("glProgramUniform1uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2i = (GLEEPFNGLPROGRAMUNIFORM2IPROC) __GLeeGetProcAddress("glProgramUniform2i"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2iv = (GLEEPFNGLPROGRAMUNIFORM2IVPROC) __GLeeGetProcAddress("glProgramUniform2iv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2f = (GLEEPFNGLPROGRAMUNIFORM2FPROC) __GLeeGetProcAddress("glProgramUniform2f"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2fv = (GLEEPFNGLPROGRAMUNIFORM2FVPROC) __GLeeGetProcAddress("glProgramUniform2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2d = (GLEEPFNGLPROGRAMUNIFORM2DPROC) __GLeeGetProcAddress("glProgramUniform2d"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2dv = (GLEEPFNGLPROGRAMUNIFORM2DVPROC) __GLeeGetProcAddress("glProgramUniform2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2ui = (GLEEPFNGLPROGRAMUNIFORM2UIPROC) __GLeeGetProcAddress("glProgramUniform2ui"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2uiv = (GLEEPFNGLPROGRAMUNIFORM2UIVPROC) __GLeeGetProcAddress("glProgramUniform2uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3i = (GLEEPFNGLPROGRAMUNIFORM3IPROC) __GLeeGetProcAddress("glProgramUniform3i"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3iv = (GLEEPFNGLPROGRAMUNIFORM3IVPROC) __GLeeGetProcAddress("glProgramUniform3iv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3f = (GLEEPFNGLPROGRAMUNIFORM3FPROC) __GLeeGetProcAddress("glProgramUniform3f"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3fv = (GLEEPFNGLPROGRAMUNIFORM3FVPROC) __GLeeGetProcAddress("glProgramUniform3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3d = (GLEEPFNGLPROGRAMUNIFORM3DPROC) __GLeeGetProcAddress("glProgramUniform3d"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3dv = (GLEEPFNGLPROGRAMUNIFORM3DVPROC) __GLeeGetProcAddress("glProgramUniform3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3ui = (GLEEPFNGLPROGRAMUNIFORM3UIPROC) __GLeeGetProcAddress("glProgramUniform3ui"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3uiv = (GLEEPFNGLPROGRAMUNIFORM3UIVPROC) __GLeeGetProcAddress("glProgramUniform3uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4i = (GLEEPFNGLPROGRAMUNIFORM4IPROC) __GLeeGetProcAddress("glProgramUniform4i"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4iv = (GLEEPFNGLPROGRAMUNIFORM4IVPROC) __GLeeGetProcAddress("glProgramUniform4iv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4f = (GLEEPFNGLPROGRAMUNIFORM4FPROC) __GLeeGetProcAddress("glProgramUniform4f"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4fv = (GLEEPFNGLPROGRAMUNIFORM4FVPROC) __GLeeGetProcAddress("glProgramUniform4fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4d = (GLEEPFNGLPROGRAMUNIFORM4DPROC) __GLeeGetProcAddress("glProgramUniform4d"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4dv = (GLEEPFNGLPROGRAMUNIFORM4DVPROC) __GLeeGetProcAddress("glProgramUniform4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4ui = (GLEEPFNGLPROGRAMUNIFORM4UIPROC) __GLeeGetProcAddress("glProgramUniform4ui"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4uiv = (GLEEPFNGLPROGRAMUNIFORM4UIVPROC) __GLeeGetProcAddress("glProgramUniform4uiv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2fv = (GLEEPFNGLPROGRAMUNIFORMMATRIX2FVPROC) __GLeeGetProcAddress("glProgramUniformMatrix2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3fv = (GLEEPFNGLPROGRAMUNIFORMMATRIX3FVPROC) __GLeeGetProcAddress("glProgramUniformMatrix3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4fv = (GLEEPFNGLPROGRAMUNIFORMMATRIX4FVPROC) __GLeeGetProcAddress("glProgramUniformMatrix4fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2dv = (GLEEPFNGLPROGRAMUNIFORMMATRIX2DVPROC) __GLeeGetProcAddress("glProgramUniformMatrix2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3dv = (GLEEPFNGLPROGRAMUNIFORMMATRIX3DVPROC) __GLeeGetProcAddress("glProgramUniformMatrix3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4dv = (GLEEPFNGLPROGRAMUNIFORMMATRIX4DVPROC) __GLeeGetProcAddress("glProgramUniformMatrix4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2x3fv = (GLEEPFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) __GLeeGetProcAddress("glProgramUniformMatrix2x3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3x2fv = (GLEEPFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) __GLeeGetProcAddress("glProgramUniformMatrix3x2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2x4fv = (GLEEPFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) __GLeeGetProcAddress("glProgramUniformMatrix2x4fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4x2fv = (GLEEPFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) __GLeeGetProcAddress("glProgramUniformMatrix4x2fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3x4fv = (GLEEPFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) __GLeeGetProcAddress("glProgramUniformMatrix3x4fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4x3fv = (GLEEPFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) __GLeeGetProcAddress("glProgramUniformMatrix4x3fv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2x3dv = (GLEEPFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) __GLeeGetProcAddress("glProgramUniformMatrix2x3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3x2dv = (GLEEPFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) __GLeeGetProcAddress("glProgramUniformMatrix3x2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2x4dv = (GLEEPFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) __GLeeGetProcAddress("glProgramUniformMatrix2x4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4x2dv = (GLEEPFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) __GLeeGetProcAddress("glProgramUniformMatrix4x2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3x4dv = (GLEEPFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) __GLeeGetProcAddress("glProgramUniformMatrix3x4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4x3dv = (GLEEPFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) __GLeeGetProcAddress("glProgramUniformMatrix4x3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glValidateProgramPipeline = (GLEEPFNGLVALIDATEPROGRAMPIPELINEPROC) __GLeeGetProcAddress("glValidateProgramPipeline"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramPipelineInfoLog = (GLEEPFNGLGETPROGRAMPIPELINEINFOLOGPROC) __GLeeGetProcAddress("glGetProgramPipelineInfoLog"))!=0) nLinked++; #endif if (nLinked==60) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_shader_precision(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_vertex_attrib_64bit(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_vertex_attrib_64bit if ((GLeeFuncPtr_glVertexAttribL1d = (GLEEPFNGLVERTEXATTRIBL1DPROC) __GLeeGetProcAddress("glVertexAttribL1d"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL2d = (GLEEPFNGLVERTEXATTRIBL2DPROC) __GLeeGetProcAddress("glVertexAttribL2d"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL3d = (GLEEPFNGLVERTEXATTRIBL3DPROC) __GLeeGetProcAddress("glVertexAttribL3d"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL4d = (GLEEPFNGLVERTEXATTRIBL4DPROC) __GLeeGetProcAddress("glVertexAttribL4d"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL1dv = (GLEEPFNGLVERTEXATTRIBL1DVPROC) __GLeeGetProcAddress("glVertexAttribL1dv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL2dv = (GLEEPFNGLVERTEXATTRIBL2DVPROC) __GLeeGetProcAddress("glVertexAttribL2dv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL3dv = (GLEEPFNGLVERTEXATTRIBL3DVPROC) __GLeeGetProcAddress("glVertexAttribL3dv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL4dv = (GLEEPFNGLVERTEXATTRIBL4DVPROC) __GLeeGetProcAddress("glVertexAttribL4dv"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribLPointer = (GLEEPFNGLVERTEXATTRIBLPOINTERPROC) __GLeeGetProcAddress("glVertexAttribLPointer"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribLdv = (GLEEPFNGLGETVERTEXATTRIBLDVPROC) __GLeeGetProcAddress("glGetVertexAttribLdv"))!=0) nLinked++; #endif if (nLinked==10) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_viewport_array(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_viewport_array if ((GLeeFuncPtr_glViewportArrayv = (GLEEPFNGLVIEWPORTARRAYVPROC) __GLeeGetProcAddress("glViewportArrayv"))!=0) nLinked++; if ((GLeeFuncPtr_glViewportIndexedf = (GLEEPFNGLVIEWPORTINDEXEDFPROC) __GLeeGetProcAddress("glViewportIndexedf"))!=0) nLinked++; if ((GLeeFuncPtr_glViewportIndexedfv = (GLEEPFNGLVIEWPORTINDEXEDFVPROC) __GLeeGetProcAddress("glViewportIndexedfv"))!=0) nLinked++; if ((GLeeFuncPtr_glScissorArrayv = (GLEEPFNGLSCISSORARRAYVPROC) __GLeeGetProcAddress("glScissorArrayv"))!=0) nLinked++; if ((GLeeFuncPtr_glScissorIndexed = (GLEEPFNGLSCISSORINDEXEDPROC) __GLeeGetProcAddress("glScissorIndexed"))!=0) nLinked++; if ((GLeeFuncPtr_glScissorIndexedv = (GLEEPFNGLSCISSORINDEXEDVPROC) __GLeeGetProcAddress("glScissorIndexedv"))!=0) nLinked++; if ((GLeeFuncPtr_glDepthRangeArrayv = (GLEEPFNGLDEPTHRANGEARRAYVPROC) __GLeeGetProcAddress("glDepthRangeArrayv"))!=0) nLinked++; if ((GLeeFuncPtr_glDepthRangeIndexed = (GLEEPFNGLDEPTHRANGEINDEXEDPROC) __GLeeGetProcAddress("glDepthRangeIndexed"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFloati_v = (GLEEPFNGLGETFLOATI_VPROC) __GLeeGetProcAddress("glGetFloati_v"))!=0) nLinked++; if ((GLeeFuncPtr_glGetDoublei_v = (GLEEPFNGLGETDOUBLEI_VPROC) __GLeeGetProcAddress("glGetDoublei_v"))!=0) nLinked++; #endif if (nLinked==10) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_cl_event(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_cl_event if ((GLeeFuncPtr_glCreateSyncFromCLeventARB = (GLEEPFNGLCREATESYNCFROMCLEVENTARBPROC) __GLeeGetProcAddress("glCreateSyncFromCLeventARB"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_debug_output(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_debug_output if ((GLeeFuncPtr_glDebugMessageControlARB = (GLEEPFNGLDEBUGMESSAGECONTROLARBPROC) __GLeeGetProcAddress("glDebugMessageControlARB"))!=0) nLinked++; if ((GLeeFuncPtr_glDebugMessageInsertARB = (GLEEPFNGLDEBUGMESSAGEINSERTARBPROC) __GLeeGetProcAddress("glDebugMessageInsertARB"))!=0) nLinked++; if ((GLeeFuncPtr_glDebugMessageCallbackARB = (GLEEPFNGLDEBUGMESSAGECALLBACKARBPROC) __GLeeGetProcAddress("glDebugMessageCallbackARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetDebugMessageLogARB = (GLEEPFNGLGETDEBUGMESSAGELOGARBPROC) __GLeeGetProcAddress("glGetDebugMessageLogARB"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_robustness(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_robustness if ((GLeeFuncPtr_glGetGraphicsResetStatusARB = (GLEEPFNGLGETGRAPHICSRESETSTATUSARBPROC) __GLeeGetProcAddress("glGetGraphicsResetStatusARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnMapdvARB = (GLEEPFNGLGETNMAPDVARBPROC) __GLeeGetProcAddress("glGetnMapdvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnMapfvARB = (GLEEPFNGLGETNMAPFVARBPROC) __GLeeGetProcAddress("glGetnMapfvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnMapivARB = (GLEEPFNGLGETNMAPIVARBPROC) __GLeeGetProcAddress("glGetnMapivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnPixelMapfvARB = (GLEEPFNGLGETNPIXELMAPFVARBPROC) __GLeeGetProcAddress("glGetnPixelMapfvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnPixelMapuivARB = (GLEEPFNGLGETNPIXELMAPUIVARBPROC) __GLeeGetProcAddress("glGetnPixelMapuivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnPixelMapusvARB = (GLEEPFNGLGETNPIXELMAPUSVARBPROC) __GLeeGetProcAddress("glGetnPixelMapusvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnPolygonStippleARB = (GLEEPFNGLGETNPOLYGONSTIPPLEARBPROC) __GLeeGetProcAddress("glGetnPolygonStippleARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnColorTableARB = (GLEEPFNGLGETNCOLORTABLEARBPROC) __GLeeGetProcAddress("glGetnColorTableARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnConvolutionFilterARB = (GLEEPFNGLGETNCONVOLUTIONFILTERARBPROC) __GLeeGetProcAddress("glGetnConvolutionFilterARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnSeparableFilterARB = (GLEEPFNGLGETNSEPARABLEFILTERARBPROC) __GLeeGetProcAddress("glGetnSeparableFilterARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnHistogramARB = (GLEEPFNGLGETNHISTOGRAMARBPROC) __GLeeGetProcAddress("glGetnHistogramARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnMinmaxARB = (GLEEPFNGLGETNMINMAXARBPROC) __GLeeGetProcAddress("glGetnMinmaxARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnTexImageARB = (GLEEPFNGLGETNTEXIMAGEARBPROC) __GLeeGetProcAddress("glGetnTexImageARB"))!=0) nLinked++; if ((GLeeFuncPtr_glReadnPixelsARB = (GLEEPFNGLREADNPIXELSARBPROC) __GLeeGetProcAddress("glReadnPixelsARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnCompressedTexImageARB = (GLEEPFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) __GLeeGetProcAddress("glGetnCompressedTexImageARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnUniformfvARB = (GLEEPFNGLGETNUNIFORMFVARBPROC) __GLeeGetProcAddress("glGetnUniformfvARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnUniformivARB = (GLEEPFNGLGETNUNIFORMIVARBPROC) __GLeeGetProcAddress("glGetnUniformivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnUniformuivARB = (GLEEPFNGLGETNUNIFORMUIVARBPROC) __GLeeGetProcAddress("glGetnUniformuivARB"))!=0) nLinked++; if ((GLeeFuncPtr_glGetnUniformdvARB = (GLEEPFNGLGETNUNIFORMDVARBPROC) __GLeeGetProcAddress("glGetnUniformdvARB"))!=0) nLinked++; #endif if (nLinked==20) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_shader_stencil_export(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_base_instance(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_base_instance if ((GLeeFuncPtr_glDrawArraysInstancedBaseInstance = (GLEEPFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) __GLeeGetProcAddress("glDrawArraysInstancedBaseInstance"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawElementsInstancedBaseInstance = (GLEEPFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) __GLeeGetProcAddress("glDrawElementsInstancedBaseInstance"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawElementsInstancedBaseVertexBaseInstance = (GLEEPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) __GLeeGetProcAddress("glDrawElementsInstancedBaseVertexBaseInstance"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_shading_language_420pack(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_transform_feedback_instanced(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_transform_feedback_instanced if ((GLeeFuncPtr_glDrawTransformFeedbackInstanced = (GLEEPFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) __GLeeGetProcAddress("glDrawTransformFeedbackInstanced"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawTransformFeedbackStreamInstanced = (GLEEPFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) __GLeeGetProcAddress("glDrawTransformFeedbackStreamInstanced"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_compressed_texture_pixel_storage(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_conservative_depth(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_internalformat_query(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_internalformat_query if ((GLeeFuncPtr_glGetInternalformativ = (GLEEPFNGLGETINTERNALFORMATIVPROC) __GLeeGetProcAddress("glGetInternalformativ"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_map_buffer_alignment(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_shader_atomic_counters(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_shader_atomic_counters if ((GLeeFuncPtr_glGetActiveAtomicCounterBufferiv = (GLEEPFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) __GLeeGetProcAddress("glGetActiveAtomicCounterBufferiv"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_shader_image_load_store(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_shader_image_load_store if ((GLeeFuncPtr_glBindImageTexture = (GLEEPFNGLBINDIMAGETEXTUREPROC) __GLeeGetProcAddress("glBindImageTexture"))!=0) nLinked++; if ((GLeeFuncPtr_glMemoryBarrier = (GLEEPFNGLMEMORYBARRIERPROC) __GLeeGetProcAddress("glMemoryBarrier"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_shading_language_packing(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_storage(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_texture_storage if ((GLeeFuncPtr_glTexStorage1D = (GLEEPFNGLTEXSTORAGE1DPROC) __GLeeGetProcAddress("glTexStorage1D"))!=0) nLinked++; if ((GLeeFuncPtr_glTexStorage2D = (GLEEPFNGLTEXSTORAGE2DPROC) __GLeeGetProcAddress("glTexStorage2D"))!=0) nLinked++; if ((GLeeFuncPtr_glTexStorage3D = (GLEEPFNGLTEXSTORAGE3DPROC) __GLeeGetProcAddress("glTexStorage3D"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureStorage1DEXT = (GLEEPFNGLTEXTURESTORAGE1DEXTPROC) __GLeeGetProcAddress("glTextureStorage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureStorage2DEXT = (GLEEPFNGLTEXTURESTORAGE2DEXTPROC) __GLeeGetProcAddress("glTextureStorage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureStorage3DEXT = (GLEEPFNGLTEXTURESTORAGE3DEXTPROC) __GLeeGetProcAddress("glTextureStorage3DEXT"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_KHR_texture_compression_astc_ldr(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_KHR_debug(void) { GLint nLinked=0; #ifdef __GLEE_GL_KHR_debug if ((GLeeFuncPtr_glDebugMessageControl = (GLEEPFNGLDEBUGMESSAGECONTROLPROC) __GLeeGetProcAddress("glDebugMessageControl"))!=0) nLinked++; if ((GLeeFuncPtr_glDebugMessageInsert = (GLEEPFNGLDEBUGMESSAGEINSERTPROC) __GLeeGetProcAddress("glDebugMessageInsert"))!=0) nLinked++; if ((GLeeFuncPtr_glDebugMessageCallback = (GLEEPFNGLDEBUGMESSAGECALLBACKPROC) __GLeeGetProcAddress("glDebugMessageCallback"))!=0) nLinked++; if ((GLeeFuncPtr_glGetDebugMessageLog = (GLEEPFNGLGETDEBUGMESSAGELOGPROC) __GLeeGetProcAddress("glGetDebugMessageLog"))!=0) nLinked++; if ((GLeeFuncPtr_glPushDebugGroup = (GLEEPFNGLPUSHDEBUGGROUPPROC) __GLeeGetProcAddress("glPushDebugGroup"))!=0) nLinked++; if ((GLeeFuncPtr_glPopDebugGroup = (GLEEPFNGLPOPDEBUGGROUPPROC) __GLeeGetProcAddress("glPopDebugGroup"))!=0) nLinked++; if ((GLeeFuncPtr_glObjectLabel = (GLEEPFNGLOBJECTLABELPROC) __GLeeGetProcAddress("glObjectLabel"))!=0) nLinked++; if ((GLeeFuncPtr_glGetObjectLabel = (GLEEPFNGLGETOBJECTLABELPROC) __GLeeGetProcAddress("glGetObjectLabel"))!=0) nLinked++; if ((GLeeFuncPtr_glObjectPtrLabel = (GLEEPFNGLOBJECTPTRLABELPROC) __GLeeGetProcAddress("glObjectPtrLabel"))!=0) nLinked++; if ((GLeeFuncPtr_glGetObjectPtrLabel = (GLEEPFNGLGETOBJECTPTRLABELPROC) __GLeeGetProcAddress("glGetObjectPtrLabel"))!=0) nLinked++; #endif if (nLinked==10) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_arrays_of_arrays(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_clear_buffer_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_clear_buffer_object if ((GLeeFuncPtr_glClearBufferData = (GLEEPFNGLCLEARBUFFERDATAPROC) __GLeeGetProcAddress("glClearBufferData"))!=0) nLinked++; if ((GLeeFuncPtr_glClearBufferSubData = (GLEEPFNGLCLEARBUFFERSUBDATAPROC) __GLeeGetProcAddress("glClearBufferSubData"))!=0) nLinked++; if ((GLeeFuncPtr_glClearNamedBufferDataEXT = (GLEEPFNGLCLEARNAMEDBUFFERDATAEXTPROC) __GLeeGetProcAddress("glClearNamedBufferDataEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glClearNamedBufferSubDataEXT = (GLEEPFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) __GLeeGetProcAddress("glClearNamedBufferSubDataEXT"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_compute_shader(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_compute_shader if ((GLeeFuncPtr_glDispatchCompute = (GLEEPFNGLDISPATCHCOMPUTEPROC) __GLeeGetProcAddress("glDispatchCompute"))!=0) nLinked++; if ((GLeeFuncPtr_glDispatchComputeIndirect = (GLEEPFNGLDISPATCHCOMPUTEINDIRECTPROC) __GLeeGetProcAddress("glDispatchComputeIndirect"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_copy_image(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_copy_image if ((GLeeFuncPtr_glCopyImageSubData = (GLEEPFNGLCOPYIMAGESUBDATAPROC) __GLeeGetProcAddress("glCopyImageSubData"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_view(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_texture_view if ((GLeeFuncPtr_glTextureView = (GLEEPFNGLTEXTUREVIEWPROC) __GLeeGetProcAddress("glTextureView"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_vertex_attrib_binding(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_vertex_attrib_binding if ((GLeeFuncPtr_glBindVertexBuffer = (GLEEPFNGLBINDVERTEXBUFFERPROC) __GLeeGetProcAddress("glBindVertexBuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribFormat = (GLEEPFNGLVERTEXATTRIBFORMATPROC) __GLeeGetProcAddress("glVertexAttribFormat"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribIFormat = (GLEEPFNGLVERTEXATTRIBIFORMATPROC) __GLeeGetProcAddress("glVertexAttribIFormat"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribLFormat = (GLEEPFNGLVERTEXATTRIBLFORMATPROC) __GLeeGetProcAddress("glVertexAttribLFormat"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribBinding = (GLEEPFNGLVERTEXATTRIBBINDINGPROC) __GLeeGetProcAddress("glVertexAttribBinding"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexBindingDivisor = (GLEEPFNGLVERTEXBINDINGDIVISORPROC) __GLeeGetProcAddress("glVertexBindingDivisor"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexArrayBindVertexBufferEXT = (GLEEPFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) __GLeeGetProcAddress("glVertexArrayBindVertexBufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexArrayVertexAttribFormatEXT = (GLEEPFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) __GLeeGetProcAddress("glVertexArrayVertexAttribFormatEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexArrayVertexAttribIFormatEXT = (GLEEPFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) __GLeeGetProcAddress("glVertexArrayVertexAttribIFormatEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexArrayVertexAttribLFormatEXT = (GLEEPFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) __GLeeGetProcAddress("glVertexArrayVertexAttribLFormatEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexArrayVertexAttribBindingEXT = (GLEEPFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) __GLeeGetProcAddress("glVertexArrayVertexAttribBindingEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexArrayVertexBindingDivisorEXT = (GLEEPFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) __GLeeGetProcAddress("glVertexArrayVertexBindingDivisorEXT"))!=0) nLinked++; #endif if (nLinked==12) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_robustness_isolation(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_ES3_compatibility(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_explicit_uniform_location(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_fragment_layer_viewport(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_framebuffer_no_attachments(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_framebuffer_no_attachments if ((GLeeFuncPtr_glFramebufferParameteri = (GLEEPFNGLFRAMEBUFFERPARAMETERIPROC) __GLeeGetProcAddress("glFramebufferParameteri"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFramebufferParameteriv = (GLEEPFNGLGETFRAMEBUFFERPARAMETERIVPROC) __GLeeGetProcAddress("glGetFramebufferParameteriv"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedFramebufferParameteriEXT = (GLEEPFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) __GLeeGetProcAddress("glNamedFramebufferParameteriEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedFramebufferParameterivEXT = (GLEEPFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetNamedFramebufferParameterivEXT"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_internalformat_query2(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_internalformat_query2 if ((GLeeFuncPtr_glGetInternalformati64v = (GLEEPFNGLGETINTERNALFORMATI64VPROC) __GLeeGetProcAddress("glGetInternalformati64v"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_invalidate_subdata(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_invalidate_subdata if ((GLeeFuncPtr_glInvalidateTexSubImage = (GLEEPFNGLINVALIDATETEXSUBIMAGEPROC) __GLeeGetProcAddress("glInvalidateTexSubImage"))!=0) nLinked++; if ((GLeeFuncPtr_glInvalidateTexImage = (GLEEPFNGLINVALIDATETEXIMAGEPROC) __GLeeGetProcAddress("glInvalidateTexImage"))!=0) nLinked++; if ((GLeeFuncPtr_glInvalidateBufferSubData = (GLEEPFNGLINVALIDATEBUFFERSUBDATAPROC) __GLeeGetProcAddress("glInvalidateBufferSubData"))!=0) nLinked++; if ((GLeeFuncPtr_glInvalidateBufferData = (GLEEPFNGLINVALIDATEBUFFERDATAPROC) __GLeeGetProcAddress("glInvalidateBufferData"))!=0) nLinked++; if ((GLeeFuncPtr_glInvalidateFramebuffer = (GLEEPFNGLINVALIDATEFRAMEBUFFERPROC) __GLeeGetProcAddress("glInvalidateFramebuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glInvalidateSubFramebuffer = (GLEEPFNGLINVALIDATESUBFRAMEBUFFERPROC) __GLeeGetProcAddress("glInvalidateSubFramebuffer"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_multi_draw_indirect(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_multi_draw_indirect if ((GLeeFuncPtr_glMultiDrawArraysIndirect = (GLEEPFNGLMULTIDRAWARRAYSINDIRECTPROC) __GLeeGetProcAddress("glMultiDrawArraysIndirect"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiDrawElementsIndirect = (GLEEPFNGLMULTIDRAWELEMENTSINDIRECTPROC) __GLeeGetProcAddress("glMultiDrawElementsIndirect"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_program_interface_query(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_program_interface_query if ((GLeeFuncPtr_glGetProgramInterfaceiv = (GLEEPFNGLGETPROGRAMINTERFACEIVPROC) __GLeeGetProcAddress("glGetProgramInterfaceiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramResourceIndex = (GLEEPFNGLGETPROGRAMRESOURCEINDEXPROC) __GLeeGetProcAddress("glGetProgramResourceIndex"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramResourceName = (GLEEPFNGLGETPROGRAMRESOURCENAMEPROC) __GLeeGetProcAddress("glGetProgramResourceName"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramResourceiv = (GLEEPFNGLGETPROGRAMRESOURCEIVPROC) __GLeeGetProcAddress("glGetProgramResourceiv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramResourceLocation = (GLEEPFNGLGETPROGRAMRESOURCELOCATIONPROC) __GLeeGetProcAddress("glGetProgramResourceLocation"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramResourceLocationIndex = (GLEEPFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) __GLeeGetProcAddress("glGetProgramResourceLocationIndex"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_robust_buffer_access_behavior(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_shader_image_size(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_shader_storage_buffer_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_shader_storage_buffer_object if ((GLeeFuncPtr_glShaderStorageBlockBinding = (GLEEPFNGLSHADERSTORAGEBLOCKBINDINGPROC) __GLeeGetProcAddress("glShaderStorageBlockBinding"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_stencil_texturing(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_buffer_range(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_texture_buffer_range if ((GLeeFuncPtr_glTexBufferRange = (GLEEPFNGLTEXBUFFERRANGEPROC) __GLeeGetProcAddress("glTexBufferRange"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureBufferRangeEXT = (GLEEPFNGLTEXTUREBUFFERRANGEEXTPROC) __GLeeGetProcAddress("glTextureBufferRangeEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ARB_texture_query_levels(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ARB_texture_storage_multisample(void) { GLint nLinked=0; #ifdef __GLEE_GL_ARB_texture_storage_multisample if ((GLeeFuncPtr_glTexStorage2DMultisample = (GLEEPFNGLTEXSTORAGE2DMULTISAMPLEPROC) __GLeeGetProcAddress("glTexStorage2DMultisample"))!=0) nLinked++; if ((GLeeFuncPtr_glTexStorage3DMultisample = (GLEEPFNGLTEXSTORAGE3DMULTISAMPLEPROC) __GLeeGetProcAddress("glTexStorage3DMultisample"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureStorage2DMultisampleEXT = (GLEEPFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) __GLeeGetProcAddress("glTextureStorage2DMultisampleEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureStorage3DMultisampleEXT = (GLEEPFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) __GLeeGetProcAddress("glTextureStorage3DMultisampleEXT"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_abgr(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_blend_color(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_blend_color if ((GLeeFuncPtr_glBlendColorEXT = (GLEEPFNGLBLENDCOLOREXTPROC) __GLeeGetProcAddress("glBlendColorEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_polygon_offset(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_polygon_offset if ((GLeeFuncPtr_glPolygonOffsetEXT = (GLEEPFNGLPOLYGONOFFSETEXTPROC) __GLeeGetProcAddress("glPolygonOffsetEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_texture(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture3D(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_texture3D if ((GLeeFuncPtr_glTexImage3DEXT = (GLEEPFNGLTEXIMAGE3DEXTPROC) __GLeeGetProcAddress("glTexImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTexSubImage3DEXT = (GLEEPFNGLTEXSUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glTexSubImage3DEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIS_texture_filter4(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIS_texture_filter4 if ((GLeeFuncPtr_glGetTexFilterFuncSGIS = (GLEEPFNGLGETTEXFILTERFUNCSGISPROC) __GLeeGetProcAddress("glGetTexFilterFuncSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glTexFilterFuncSGIS = (GLEEPFNGLTEXFILTERFUNCSGISPROC) __GLeeGetProcAddress("glTexFilterFuncSGIS"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_subtexture(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_subtexture if ((GLeeFuncPtr_glTexSubImage1DEXT = (GLEEPFNGLTEXSUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glTexSubImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTexSubImage2DEXT = (GLEEPFNGLTEXSUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glTexSubImage2DEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_copy_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_copy_texture if ((GLeeFuncPtr_glCopyTexImage1DEXT = (GLEEPFNGLCOPYTEXIMAGE1DEXTPROC) __GLeeGetProcAddress("glCopyTexImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyTexImage2DEXT = (GLEEPFNGLCOPYTEXIMAGE2DEXTPROC) __GLeeGetProcAddress("glCopyTexImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyTexSubImage1DEXT = (GLEEPFNGLCOPYTEXSUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glCopyTexSubImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyTexSubImage2DEXT = (GLEEPFNGLCOPYTEXSUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glCopyTexSubImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyTexSubImage3DEXT = (GLEEPFNGLCOPYTEXSUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glCopyTexSubImage3DEXT"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_histogram(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_histogram if ((GLeeFuncPtr_glGetHistogramEXT = (GLEEPFNGLGETHISTOGRAMEXTPROC) __GLeeGetProcAddress("glGetHistogramEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetHistogramParameterfvEXT = (GLEEPFNGLGETHISTOGRAMPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetHistogramParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetHistogramParameterivEXT = (GLEEPFNGLGETHISTOGRAMPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetHistogramParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMinmaxEXT = (GLEEPFNGLGETMINMAXEXTPROC) __GLeeGetProcAddress("glGetMinmaxEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMinmaxParameterfvEXT = (GLEEPFNGLGETMINMAXPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetMinmaxParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMinmaxParameterivEXT = (GLEEPFNGLGETMINMAXPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetMinmaxParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glHistogramEXT = (GLEEPFNGLHISTOGRAMEXTPROC) __GLeeGetProcAddress("glHistogramEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMinmaxEXT = (GLEEPFNGLMINMAXEXTPROC) __GLeeGetProcAddress("glMinmaxEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glResetHistogramEXT = (GLEEPFNGLRESETHISTOGRAMEXTPROC) __GLeeGetProcAddress("glResetHistogramEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glResetMinmaxEXT = (GLEEPFNGLRESETMINMAXEXTPROC) __GLeeGetProcAddress("glResetMinmaxEXT"))!=0) nLinked++; #endif if (nLinked==10) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_convolution(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_convolution if ((GLeeFuncPtr_glConvolutionFilter1DEXT = (GLEEPFNGLCONVOLUTIONFILTER1DEXTPROC) __GLeeGetProcAddress("glConvolutionFilter1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionFilter2DEXT = (GLEEPFNGLCONVOLUTIONFILTER2DEXTPROC) __GLeeGetProcAddress("glConvolutionFilter2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionParameterfEXT = (GLEEPFNGLCONVOLUTIONPARAMETERFEXTPROC) __GLeeGetProcAddress("glConvolutionParameterfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionParameterfvEXT = (GLEEPFNGLCONVOLUTIONPARAMETERFVEXTPROC) __GLeeGetProcAddress("glConvolutionParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionParameteriEXT = (GLEEPFNGLCONVOLUTIONPARAMETERIEXTPROC) __GLeeGetProcAddress("glConvolutionParameteriEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionParameterivEXT = (GLEEPFNGLCONVOLUTIONPARAMETERIVEXTPROC) __GLeeGetProcAddress("glConvolutionParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyConvolutionFilter1DEXT = (GLEEPFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) __GLeeGetProcAddress("glCopyConvolutionFilter1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyConvolutionFilter2DEXT = (GLEEPFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) __GLeeGetProcAddress("glCopyConvolutionFilter2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetConvolutionFilterEXT = (GLEEPFNGLGETCONVOLUTIONFILTEREXTPROC) __GLeeGetProcAddress("glGetConvolutionFilterEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetConvolutionParameterfvEXT = (GLEEPFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetConvolutionParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetConvolutionParameterivEXT = (GLEEPFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetConvolutionParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetSeparableFilterEXT = (GLEEPFNGLGETSEPARABLEFILTEREXTPROC) __GLeeGetProcAddress("glGetSeparableFilterEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSeparableFilter2DEXT = (GLEEPFNGLSEPARABLEFILTER2DEXTPROC) __GLeeGetProcAddress("glSeparableFilter2DEXT"))!=0) nLinked++; #endif if (nLinked==13) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGI_color_matrix(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGI_color_table(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGI_color_table if ((GLeeFuncPtr_glColorTableSGI = (GLEEPFNGLCOLORTABLESGIPROC) __GLeeGetProcAddress("glColorTableSGI"))!=0) nLinked++; if ((GLeeFuncPtr_glColorTableParameterfvSGI = (GLEEPFNGLCOLORTABLEPARAMETERFVSGIPROC) __GLeeGetProcAddress("glColorTableParameterfvSGI"))!=0) nLinked++; if ((GLeeFuncPtr_glColorTableParameterivSGI = (GLEEPFNGLCOLORTABLEPARAMETERIVSGIPROC) __GLeeGetProcAddress("glColorTableParameterivSGI"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyColorTableSGI = (GLEEPFNGLCOPYCOLORTABLESGIPROC) __GLeeGetProcAddress("glCopyColorTableSGI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetColorTableSGI = (GLEEPFNGLGETCOLORTABLESGIPROC) __GLeeGetProcAddress("glGetColorTableSGI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetColorTableParameterfvSGI = (GLEEPFNGLGETCOLORTABLEPARAMETERFVSGIPROC) __GLeeGetProcAddress("glGetColorTableParameterfvSGI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetColorTableParameterivSGI = (GLEEPFNGLGETCOLORTABLEPARAMETERIVSGIPROC) __GLeeGetProcAddress("glGetColorTableParameterivSGI"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIS_pixel_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIS_pixel_texture if ((GLeeFuncPtr_glPixelTexGenParameteriSGIS = (GLEEPFNGLPIXELTEXGENPARAMETERISGISPROC) __GLeeGetProcAddress("glPixelTexGenParameteriSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glPixelTexGenParameterivSGIS = (GLEEPFNGLPIXELTEXGENPARAMETERIVSGISPROC) __GLeeGetProcAddress("glPixelTexGenParameterivSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glPixelTexGenParameterfSGIS = (GLEEPFNGLPIXELTEXGENPARAMETERFSGISPROC) __GLeeGetProcAddress("glPixelTexGenParameterfSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glPixelTexGenParameterfvSGIS = (GLEEPFNGLPIXELTEXGENPARAMETERFVSGISPROC) __GLeeGetProcAddress("glPixelTexGenParameterfvSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPixelTexGenParameterivSGIS = (GLEEPFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) __GLeeGetProcAddress("glGetPixelTexGenParameterivSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPixelTexGenParameterfvSGIS = (GLEEPFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) __GLeeGetProcAddress("glGetPixelTexGenParameterfvSGIS"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_pixel_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_pixel_texture if ((GLeeFuncPtr_glPixelTexGenSGIX = (GLEEPFNGLPIXELTEXGENSGIXPROC) __GLeeGetProcAddress("glPixelTexGenSGIX"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIS_texture4D(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIS_texture4D if ((GLeeFuncPtr_glTexImage4DSGIS = (GLEEPFNGLTEXIMAGE4DSGISPROC) __GLeeGetProcAddress("glTexImage4DSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glTexSubImage4DSGIS = (GLEEPFNGLTEXSUBIMAGE4DSGISPROC) __GLeeGetProcAddress("glTexSubImage4DSGIS"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGI_texture_color_table(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_cmyka(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_texture_object if ((GLeeFuncPtr_glAreTexturesResidentEXT = (GLEEPFNGLARETEXTURESRESIDENTEXTPROC) __GLeeGetProcAddress("glAreTexturesResidentEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindTextureEXT = (GLEEPFNGLBINDTEXTUREEXTPROC) __GLeeGetProcAddress("glBindTextureEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteTexturesEXT = (GLEEPFNGLDELETETEXTURESEXTPROC) __GLeeGetProcAddress("glDeleteTexturesEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGenTexturesEXT = (GLEEPFNGLGENTEXTURESEXTPROC) __GLeeGetProcAddress("glGenTexturesEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glIsTextureEXT = (GLEEPFNGLISTEXTUREEXTPROC) __GLeeGetProcAddress("glIsTextureEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glPrioritizeTexturesEXT = (GLEEPFNGLPRIORITIZETEXTURESEXTPROC) __GLeeGetProcAddress("glPrioritizeTexturesEXT"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIS_detail_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIS_detail_texture if ((GLeeFuncPtr_glDetailTexFuncSGIS = (GLEEPFNGLDETAILTEXFUNCSGISPROC) __GLeeGetProcAddress("glDetailTexFuncSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glGetDetailTexFuncSGIS = (GLEEPFNGLGETDETAILTEXFUNCSGISPROC) __GLeeGetProcAddress("glGetDetailTexFuncSGIS"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIS_sharpen_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIS_sharpen_texture if ((GLeeFuncPtr_glSharpenTexFuncSGIS = (GLEEPFNGLSHARPENTEXFUNCSGISPROC) __GLeeGetProcAddress("glSharpenTexFuncSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glGetSharpenTexFuncSGIS = (GLEEPFNGLGETSHARPENTEXFUNCSGISPROC) __GLeeGetProcAddress("glGetSharpenTexFuncSGIS"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_packed_pixels(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIS_texture_lod(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIS_multisample(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIS_multisample if ((GLeeFuncPtr_glSampleMaskSGIS = (GLEEPFNGLSAMPLEMASKSGISPROC) __GLeeGetProcAddress("glSampleMaskSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glSamplePatternSGIS = (GLEEPFNGLSAMPLEPATTERNSGISPROC) __GLeeGetProcAddress("glSamplePatternSGIS"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_rescale_normal(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_vertex_array(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_vertex_array if ((GLeeFuncPtr_glArrayElementEXT = (GLEEPFNGLARRAYELEMENTEXTPROC) __GLeeGetProcAddress("glArrayElementEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glColorPointerEXT = (GLEEPFNGLCOLORPOINTEREXTPROC) __GLeeGetProcAddress("glColorPointerEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawArraysEXT = (GLEEPFNGLDRAWARRAYSEXTPROC) __GLeeGetProcAddress("glDrawArraysEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glEdgeFlagPointerEXT = (GLEEPFNGLEDGEFLAGPOINTEREXTPROC) __GLeeGetProcAddress("glEdgeFlagPointerEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPointervEXT = (GLEEPFNGLGETPOINTERVEXTPROC) __GLeeGetProcAddress("glGetPointervEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glIndexPointerEXT = (GLEEPFNGLINDEXPOINTEREXTPROC) __GLeeGetProcAddress("glIndexPointerEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalPointerEXT = (GLEEPFNGLNORMALPOINTEREXTPROC) __GLeeGetProcAddress("glNormalPointerEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordPointerEXT = (GLEEPFNGLTEXCOORDPOINTEREXTPROC) __GLeeGetProcAddress("glTexCoordPointerEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexPointerEXT = (GLEEPFNGLVERTEXPOINTEREXTPROC) __GLeeGetProcAddress("glVertexPointerEXT"))!=0) nLinked++; #endif if (nLinked==9) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_misc_attribute(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIS_generate_mipmap(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_clipmap(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_shadow(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIS_texture_edge_clamp(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIS_texture_border_clamp(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_blend_minmax(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_blend_minmax if ((GLeeFuncPtr_glBlendEquationEXT = (GLEEPFNGLBLENDEQUATIONEXTPROC) __GLeeGetProcAddress("glBlendEquationEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_blend_subtract(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_blend_logic_op(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_interlace(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_pixel_tiles(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIS_texture_select(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_sprite(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_sprite if ((GLeeFuncPtr_glSpriteParameterfSGIX = (GLEEPFNGLSPRITEPARAMETERFSGIXPROC) __GLeeGetProcAddress("glSpriteParameterfSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glSpriteParameterfvSGIX = (GLEEPFNGLSPRITEPARAMETERFVSGIXPROC) __GLeeGetProcAddress("glSpriteParameterfvSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glSpriteParameteriSGIX = (GLEEPFNGLSPRITEPARAMETERISGIXPROC) __GLeeGetProcAddress("glSpriteParameteriSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glSpriteParameterivSGIX = (GLEEPFNGLSPRITEPARAMETERIVSGIXPROC) __GLeeGetProcAddress("glSpriteParameterivSGIX"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_texture_multi_buffer(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_point_parameters(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_point_parameters if ((GLeeFuncPtr_glPointParameterfEXT = (GLEEPFNGLPOINTPARAMETERFEXTPROC) __GLeeGetProcAddress("glPointParameterfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glPointParameterfvEXT = (GLEEPFNGLPOINTPARAMETERFVEXTPROC) __GLeeGetProcAddress("glPointParameterfvEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIS_point_parameters(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIS_point_parameters if ((GLeeFuncPtr_glPointParameterfSGIS = (GLEEPFNGLPOINTPARAMETERFSGISPROC) __GLeeGetProcAddress("glPointParameterfSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glPointParameterfvSGIS = (GLEEPFNGLPOINTPARAMETERFVSGISPROC) __GLeeGetProcAddress("glPointParameterfvSGIS"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_instruments(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_instruments if ((GLeeFuncPtr_glGetInstrumentsSGIX = (GLEEPFNGLGETINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glGetInstrumentsSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glInstrumentsBufferSGIX = (GLEEPFNGLINSTRUMENTSBUFFERSGIXPROC) __GLeeGetProcAddress("glInstrumentsBufferSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glPollInstrumentsSGIX = (GLEEPFNGLPOLLINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glPollInstrumentsSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glReadInstrumentsSGIX = (GLEEPFNGLREADINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glReadInstrumentsSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glStartInstrumentsSGIX = (GLEEPFNGLSTARTINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glStartInstrumentsSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glStopInstrumentsSGIX = (GLEEPFNGLSTOPINSTRUMENTSSGIXPROC) __GLeeGetProcAddress("glStopInstrumentsSGIX"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_texture_scale_bias(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_framezoom(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_framezoom if ((GLeeFuncPtr_glFrameZoomSGIX = (GLEEPFNGLFRAMEZOOMSGIXPROC) __GLeeGetProcAddress("glFrameZoomSGIX"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_tag_sample_buffer(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_tag_sample_buffer if ((GLeeFuncPtr_glTagSampleBufferSGIX = (GLEEPFNGLTAGSAMPLEBUFFERSGIXPROC) __GLeeGetProcAddress("glTagSampleBufferSGIX"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_FfdMaskSGIX(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_polynomial_ffd(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_polynomial_ffd if ((GLeeFuncPtr_glDeformationMap3dSGIX = (GLEEPFNGLDEFORMATIONMAP3DSGIXPROC) __GLeeGetProcAddress("glDeformationMap3dSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glDeformationMap3fSGIX = (GLEEPFNGLDEFORMATIONMAP3FSGIXPROC) __GLeeGetProcAddress("glDeformationMap3fSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glDeformSGIX = (GLEEPFNGLDEFORMSGIXPROC) __GLeeGetProcAddress("glDeformSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glLoadIdentityDeformationMapSGIX = (GLEEPFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) __GLeeGetProcAddress("glLoadIdentityDeformationMapSGIX"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_reference_plane(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_reference_plane if ((GLeeFuncPtr_glReferencePlaneSGIX = (GLEEPFNGLREFERENCEPLANESGIXPROC) __GLeeGetProcAddress("glReferencePlaneSGIX"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_flush_raster(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_flush_raster if ((GLeeFuncPtr_glFlushRasterSGIX = (GLEEPFNGLFLUSHRASTERSGIXPROC) __GLeeGetProcAddress("glFlushRasterSGIX"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_depth_texture(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIS_fog_function(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIS_fog_function if ((GLeeFuncPtr_glFogFuncSGIS = (GLEEPFNGLFOGFUNCSGISPROC) __GLeeGetProcAddress("glFogFuncSGIS"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFogFuncSGIS = (GLEEPFNGLGETFOGFUNCSGISPROC) __GLeeGetProcAddress("glGetFogFuncSGIS"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_fog_offset(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_HP_image_transform(void) { GLint nLinked=0; #ifdef __GLEE_GL_HP_image_transform if ((GLeeFuncPtr_glImageTransformParameteriHP = (GLEEPFNGLIMAGETRANSFORMPARAMETERIHPPROC) __GLeeGetProcAddress("glImageTransformParameteriHP"))!=0) nLinked++; if ((GLeeFuncPtr_glImageTransformParameterfHP = (GLEEPFNGLIMAGETRANSFORMPARAMETERFHPPROC) __GLeeGetProcAddress("glImageTransformParameterfHP"))!=0) nLinked++; if ((GLeeFuncPtr_glImageTransformParameterivHP = (GLEEPFNGLIMAGETRANSFORMPARAMETERIVHPPROC) __GLeeGetProcAddress("glImageTransformParameterivHP"))!=0) nLinked++; if ((GLeeFuncPtr_glImageTransformParameterfvHP = (GLEEPFNGLIMAGETRANSFORMPARAMETERFVHPPROC) __GLeeGetProcAddress("glImageTransformParameterfvHP"))!=0) nLinked++; if ((GLeeFuncPtr_glGetImageTransformParameterivHP = (GLEEPFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) __GLeeGetProcAddress("glGetImageTransformParameterivHP"))!=0) nLinked++; if ((GLeeFuncPtr_glGetImageTransformParameterfvHP = (GLEEPFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) __GLeeGetProcAddress("glGetImageTransformParameterfvHP"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_HP_convolution_border_modes(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_INGR_palette_buffer(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_texture_add_env(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_color_subtable(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_color_subtable if ((GLeeFuncPtr_glColorSubTableEXT = (GLEEPFNGLCOLORSUBTABLEEXTPROC) __GLeeGetProcAddress("glColorSubTableEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyColorSubTableEXT = (GLEEPFNGLCOPYCOLORSUBTABLEEXTPROC) __GLeeGetProcAddress("glCopyColorSubTableEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_PGI_vertex_hints(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_PGI_misc_hints(void) { GLint nLinked=0; #ifdef __GLEE_GL_PGI_misc_hints if ((GLeeFuncPtr_glHintPGI = (GLEEPFNGLHINTPGIPROC) __GLeeGetProcAddress("glHintPGI"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_paletted_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_paletted_texture if ((GLeeFuncPtr_glColorTableEXT = (GLEEPFNGLCOLORTABLEEXTPROC) __GLeeGetProcAddress("glColorTableEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetColorTableEXT = (GLEEPFNGLGETCOLORTABLEEXTPROC) __GLeeGetProcAddress("glGetColorTableEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetColorTableParameterivEXT = (GLEEPFNGLGETCOLORTABLEPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetColorTableParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetColorTableParameterfvEXT = (GLEEPFNGLGETCOLORTABLEPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetColorTableParameterfvEXT"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_clip_volume_hint(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_list_priority(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_list_priority if ((GLeeFuncPtr_glGetListParameterfvSGIX = (GLEEPFNGLGETLISTPARAMETERFVSGIXPROC) __GLeeGetProcAddress("glGetListParameterfvSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glGetListParameterivSGIX = (GLEEPFNGLGETLISTPARAMETERIVSGIXPROC) __GLeeGetProcAddress("glGetListParameterivSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glListParameterfSGIX = (GLEEPFNGLLISTPARAMETERFSGIXPROC) __GLeeGetProcAddress("glListParameterfSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glListParameterfvSGIX = (GLEEPFNGLLISTPARAMETERFVSGIXPROC) __GLeeGetProcAddress("glListParameterfvSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glListParameteriSGIX = (GLEEPFNGLLISTPARAMETERISGIXPROC) __GLeeGetProcAddress("glListParameteriSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glListParameterivSGIX = (GLEEPFNGLLISTPARAMETERIVSGIXPROC) __GLeeGetProcAddress("glListParameterivSGIX"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_ir_instrument1(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_calligraphic_fragment(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_texture_lod_bias(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_shadow_ambient(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_index_texture(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_index_material(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_index_material if ((GLeeFuncPtr_glIndexMaterialEXT = (GLEEPFNGLINDEXMATERIALEXTPROC) __GLeeGetProcAddress("glIndexMaterialEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_index_func(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_index_func if ((GLeeFuncPtr_glIndexFuncEXT = (GLEEPFNGLINDEXFUNCEXTPROC) __GLeeGetProcAddress("glIndexFuncEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_index_array_formats(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_compiled_vertex_array(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_compiled_vertex_array if ((GLeeFuncPtr_glLockArraysEXT = (GLEEPFNGLLOCKARRAYSEXTPROC) __GLeeGetProcAddress("glLockArraysEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glUnlockArraysEXT = (GLEEPFNGLUNLOCKARRAYSEXTPROC) __GLeeGetProcAddress("glUnlockArraysEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_cull_vertex(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_cull_vertex if ((GLeeFuncPtr_glCullParameterdvEXT = (GLEEPFNGLCULLPARAMETERDVEXTPROC) __GLeeGetProcAddress("glCullParameterdvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCullParameterfvEXT = (GLEEPFNGLCULLPARAMETERFVEXTPROC) __GLeeGetProcAddress("glCullParameterfvEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_ycrcb(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_fragment_lighting(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_fragment_lighting if ((GLeeFuncPtr_glFragmentColorMaterialSGIX = (GLEEPFNGLFRAGMENTCOLORMATERIALSGIXPROC) __GLeeGetProcAddress("glFragmentColorMaterialSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentLightfSGIX = (GLEEPFNGLFRAGMENTLIGHTFSGIXPROC) __GLeeGetProcAddress("glFragmentLightfSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentLightfvSGIX = (GLEEPFNGLFRAGMENTLIGHTFVSGIXPROC) __GLeeGetProcAddress("glFragmentLightfvSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentLightiSGIX = (GLEEPFNGLFRAGMENTLIGHTISGIXPROC) __GLeeGetProcAddress("glFragmentLightiSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentLightivSGIX = (GLEEPFNGLFRAGMENTLIGHTIVSGIXPROC) __GLeeGetProcAddress("glFragmentLightivSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentLightModelfSGIX = (GLEEPFNGLFRAGMENTLIGHTMODELFSGIXPROC) __GLeeGetProcAddress("glFragmentLightModelfSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentLightModelfvSGIX = (GLEEPFNGLFRAGMENTLIGHTMODELFVSGIXPROC) __GLeeGetProcAddress("glFragmentLightModelfvSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentLightModeliSGIX = (GLEEPFNGLFRAGMENTLIGHTMODELISGIXPROC) __GLeeGetProcAddress("glFragmentLightModeliSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentLightModelivSGIX = (GLEEPFNGLFRAGMENTLIGHTMODELIVSGIXPROC) __GLeeGetProcAddress("glFragmentLightModelivSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentMaterialfSGIX = (GLEEPFNGLFRAGMENTMATERIALFSGIXPROC) __GLeeGetProcAddress("glFragmentMaterialfSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentMaterialfvSGIX = (GLEEPFNGLFRAGMENTMATERIALFVSGIXPROC) __GLeeGetProcAddress("glFragmentMaterialfvSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentMaterialiSGIX = (GLEEPFNGLFRAGMENTMATERIALISGIXPROC) __GLeeGetProcAddress("glFragmentMaterialiSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFragmentMaterialivSGIX = (GLEEPFNGLFRAGMENTMATERIALIVSGIXPROC) __GLeeGetProcAddress("glFragmentMaterialivSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFragmentLightfvSGIX = (GLEEPFNGLGETFRAGMENTLIGHTFVSGIXPROC) __GLeeGetProcAddress("glGetFragmentLightfvSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFragmentLightivSGIX = (GLEEPFNGLGETFRAGMENTLIGHTIVSGIXPROC) __GLeeGetProcAddress("glGetFragmentLightivSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFragmentMaterialfvSGIX = (GLEEPFNGLGETFRAGMENTMATERIALFVSGIXPROC) __GLeeGetProcAddress("glGetFragmentMaterialfvSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFragmentMaterialivSGIX = (GLEEPFNGLGETFRAGMENTMATERIALIVSGIXPROC) __GLeeGetProcAddress("glGetFragmentMaterialivSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glLightEnviSGIX = (GLEEPFNGLLIGHTENVISGIXPROC) __GLeeGetProcAddress("glLightEnviSGIX"))!=0) nLinked++; #endif if (nLinked==18) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_IBM_rasterpos_clip(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_HP_texture_lighting(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_draw_range_elements(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_draw_range_elements if ((GLeeFuncPtr_glDrawRangeElementsEXT = (GLEEPFNGLDRAWRANGEELEMENTSEXTPROC) __GLeeGetProcAddress("glDrawRangeElementsEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_WIN_phong_shading(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_WIN_specular_fog(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_light_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_light_texture if ((GLeeFuncPtr_glApplyTextureEXT = (GLEEPFNGLAPPLYTEXTUREEXTPROC) __GLeeGetProcAddress("glApplyTextureEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureLightEXT = (GLEEPFNGLTEXTURELIGHTEXTPROC) __GLeeGetProcAddress("glTextureLightEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureMaterialEXT = (GLEEPFNGLTEXTUREMATERIALEXTPROC) __GLeeGetProcAddress("glTextureMaterialEXT"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_blend_alpha_minmax(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_impact_pixel_texture(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_bgra(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_async(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_async if ((GLeeFuncPtr_glAsyncMarkerSGIX = (GLEEPFNGLASYNCMARKERSGIXPROC) __GLeeGetProcAddress("glAsyncMarkerSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glFinishAsyncSGIX = (GLEEPFNGLFINISHASYNCSGIXPROC) __GLeeGetProcAddress("glFinishAsyncSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glPollAsyncSGIX = (GLEEPFNGLPOLLASYNCSGIXPROC) __GLeeGetProcAddress("glPollAsyncSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glGenAsyncMarkersSGIX = (GLEEPFNGLGENASYNCMARKERSSGIXPROC) __GLeeGetProcAddress("glGenAsyncMarkersSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteAsyncMarkersSGIX = (GLEEPFNGLDELETEASYNCMARKERSSGIXPROC) __GLeeGetProcAddress("glDeleteAsyncMarkersSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glIsAsyncMarkerSGIX = (GLEEPFNGLISASYNCMARKERSGIXPROC) __GLeeGetProcAddress("glIsAsyncMarkerSGIX"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_async_pixel(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_async_histogram(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_INTEL_texture_scissor(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_INTEL_parallel_arrays(void) { GLint nLinked=0; #ifdef __GLEE_GL_INTEL_parallel_arrays if ((GLeeFuncPtr_glVertexPointervINTEL = (GLEEPFNGLVERTEXPOINTERVINTELPROC) __GLeeGetProcAddress("glVertexPointervINTEL"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalPointervINTEL = (GLEEPFNGLNORMALPOINTERVINTELPROC) __GLeeGetProcAddress("glNormalPointervINTEL"))!=0) nLinked++; if ((GLeeFuncPtr_glColorPointervINTEL = (GLEEPFNGLCOLORPOINTERVINTELPROC) __GLeeGetProcAddress("glColorPointervINTEL"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordPointervINTEL = (GLEEPFNGLTEXCOORDPOINTERVINTELPROC) __GLeeGetProcAddress("glTexCoordPointervINTEL"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_HP_occlusion_test(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_pixel_transform(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_pixel_transform if ((GLeeFuncPtr_glPixelTransformParameteriEXT = (GLEEPFNGLPIXELTRANSFORMPARAMETERIEXTPROC) __GLeeGetProcAddress("glPixelTransformParameteriEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glPixelTransformParameterfEXT = (GLEEPFNGLPIXELTRANSFORMPARAMETERFEXTPROC) __GLeeGetProcAddress("glPixelTransformParameterfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glPixelTransformParameterivEXT = (GLEEPFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) __GLeeGetProcAddress("glPixelTransformParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glPixelTransformParameterfvEXT = (GLEEPFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) __GLeeGetProcAddress("glPixelTransformParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPixelTransformParameterivEXT = (GLEEPFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetPixelTransformParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPixelTransformParameterfvEXT = (GLEEPFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetPixelTransformParameterfvEXT"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_pixel_transform_color_table(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_shared_texture_palette(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_separate_specular_color(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_secondary_color(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_secondary_color if ((GLeeFuncPtr_glSecondaryColor3bEXT = (GLEEPFNGLSECONDARYCOLOR3BEXTPROC) __GLeeGetProcAddress("glSecondaryColor3bEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3bvEXT = (GLEEPFNGLSECONDARYCOLOR3BVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3bvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3dEXT = (GLEEPFNGLSECONDARYCOLOR3DEXTPROC) __GLeeGetProcAddress("glSecondaryColor3dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3dvEXT = (GLEEPFNGLSECONDARYCOLOR3DVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3fEXT = (GLEEPFNGLSECONDARYCOLOR3FEXTPROC) __GLeeGetProcAddress("glSecondaryColor3fEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3fvEXT = (GLEEPFNGLSECONDARYCOLOR3FVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3iEXT = (GLEEPFNGLSECONDARYCOLOR3IEXTPROC) __GLeeGetProcAddress("glSecondaryColor3iEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3ivEXT = (GLEEPFNGLSECONDARYCOLOR3IVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3ivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3sEXT = (GLEEPFNGLSECONDARYCOLOR3SEXTPROC) __GLeeGetProcAddress("glSecondaryColor3sEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3svEXT = (GLEEPFNGLSECONDARYCOLOR3SVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3svEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3ubEXT = (GLEEPFNGLSECONDARYCOLOR3UBEXTPROC) __GLeeGetProcAddress("glSecondaryColor3ubEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3ubvEXT = (GLEEPFNGLSECONDARYCOLOR3UBVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3ubvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3uiEXT = (GLEEPFNGLSECONDARYCOLOR3UIEXTPROC) __GLeeGetProcAddress("glSecondaryColor3uiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3uivEXT = (GLEEPFNGLSECONDARYCOLOR3UIVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3uivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3usEXT = (GLEEPFNGLSECONDARYCOLOR3USEXTPROC) __GLeeGetProcAddress("glSecondaryColor3usEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3usvEXT = (GLEEPFNGLSECONDARYCOLOR3USVEXTPROC) __GLeeGetProcAddress("glSecondaryColor3usvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColorPointerEXT = (GLEEPFNGLSECONDARYCOLORPOINTEREXTPROC) __GLeeGetProcAddress("glSecondaryColorPointerEXT"))!=0) nLinked++; #endif if (nLinked==17) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_texture_perturb_normal(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_texture_perturb_normal if ((GLeeFuncPtr_glTextureNormalEXT = (GLEEPFNGLTEXTURENORMALEXTPROC) __GLeeGetProcAddress("glTextureNormalEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_multi_draw_arrays(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_multi_draw_arrays if ((GLeeFuncPtr_glMultiDrawArraysEXT = (GLEEPFNGLMULTIDRAWARRAYSEXTPROC) __GLeeGetProcAddress("glMultiDrawArraysEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiDrawElementsEXT = (GLEEPFNGLMULTIDRAWELEMENTSEXTPROC) __GLeeGetProcAddress("glMultiDrawElementsEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_fog_coord(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_fog_coord if ((GLeeFuncPtr_glFogCoordfEXT = (GLEEPFNGLFOGCOORDFEXTPROC) __GLeeGetProcAddress("glFogCoordfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoordfvEXT = (GLEEPFNGLFOGCOORDFVEXTPROC) __GLeeGetProcAddress("glFogCoordfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoorddEXT = (GLEEPFNGLFOGCOORDDEXTPROC) __GLeeGetProcAddress("glFogCoorddEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoorddvEXT = (GLEEPFNGLFOGCOORDDVEXTPROC) __GLeeGetProcAddress("glFogCoorddvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoordPointerEXT = (GLEEPFNGLFOGCOORDPOINTEREXTPROC) __GLeeGetProcAddress("glFogCoordPointerEXT"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_REND_screen_coordinates(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_coordinate_frame(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_coordinate_frame if ((GLeeFuncPtr_glTangent3bEXT = (GLEEPFNGLTANGENT3BEXTPROC) __GLeeGetProcAddress("glTangent3bEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTangent3bvEXT = (GLEEPFNGLTANGENT3BVEXTPROC) __GLeeGetProcAddress("glTangent3bvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTangent3dEXT = (GLEEPFNGLTANGENT3DEXTPROC) __GLeeGetProcAddress("glTangent3dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTangent3dvEXT = (GLEEPFNGLTANGENT3DVEXTPROC) __GLeeGetProcAddress("glTangent3dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTangent3fEXT = (GLEEPFNGLTANGENT3FEXTPROC) __GLeeGetProcAddress("glTangent3fEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTangent3fvEXT = (GLEEPFNGLTANGENT3FVEXTPROC) __GLeeGetProcAddress("glTangent3fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTangent3iEXT = (GLEEPFNGLTANGENT3IEXTPROC) __GLeeGetProcAddress("glTangent3iEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTangent3ivEXT = (GLEEPFNGLTANGENT3IVEXTPROC) __GLeeGetProcAddress("glTangent3ivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTangent3sEXT = (GLEEPFNGLTANGENT3SEXTPROC) __GLeeGetProcAddress("glTangent3sEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTangent3svEXT = (GLEEPFNGLTANGENT3SVEXTPROC) __GLeeGetProcAddress("glTangent3svEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormal3bEXT = (GLEEPFNGLBINORMAL3BEXTPROC) __GLeeGetProcAddress("glBinormal3bEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormal3bvEXT = (GLEEPFNGLBINORMAL3BVEXTPROC) __GLeeGetProcAddress("glBinormal3bvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormal3dEXT = (GLEEPFNGLBINORMAL3DEXTPROC) __GLeeGetProcAddress("glBinormal3dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormal3dvEXT = (GLEEPFNGLBINORMAL3DVEXTPROC) __GLeeGetProcAddress("glBinormal3dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormal3fEXT = (GLEEPFNGLBINORMAL3FEXTPROC) __GLeeGetProcAddress("glBinormal3fEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormal3fvEXT = (GLEEPFNGLBINORMAL3FVEXTPROC) __GLeeGetProcAddress("glBinormal3fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormal3iEXT = (GLEEPFNGLBINORMAL3IEXTPROC) __GLeeGetProcAddress("glBinormal3iEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormal3ivEXT = (GLEEPFNGLBINORMAL3IVEXTPROC) __GLeeGetProcAddress("glBinormal3ivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormal3sEXT = (GLEEPFNGLBINORMAL3SEXTPROC) __GLeeGetProcAddress("glBinormal3sEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormal3svEXT = (GLEEPFNGLBINORMAL3SVEXTPROC) __GLeeGetProcAddress("glBinormal3svEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTangentPointerEXT = (GLEEPFNGLTANGENTPOINTEREXTPROC) __GLeeGetProcAddress("glTangentPointerEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBinormalPointerEXT = (GLEEPFNGLBINORMALPOINTEREXTPROC) __GLeeGetProcAddress("glBinormalPointerEXT"))!=0) nLinked++; #endif if (nLinked==22) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_texture_env_combine(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_APPLE_specular_vector(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_APPLE_transform_hint(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_fog_scale(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SUNX_constant_data(void) { GLint nLinked=0; #ifdef __GLEE_GL_SUNX_constant_data if ((GLeeFuncPtr_glFinishTextureSUNX = (GLEEPFNGLFINISHTEXTURESUNXPROC) __GLeeGetProcAddress("glFinishTextureSUNX"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SUN_global_alpha(void) { GLint nLinked=0; #ifdef __GLEE_GL_SUN_global_alpha if ((GLeeFuncPtr_glGlobalAlphaFactorbSUN = (GLEEPFNGLGLOBALALPHAFACTORBSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorbSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glGlobalAlphaFactorsSUN = (GLEEPFNGLGLOBALALPHAFACTORSSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorsSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glGlobalAlphaFactoriSUN = (GLEEPFNGLGLOBALALPHAFACTORISUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactoriSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glGlobalAlphaFactorfSUN = (GLEEPFNGLGLOBALALPHAFACTORFSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorfSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glGlobalAlphaFactordSUN = (GLEEPFNGLGLOBALALPHAFACTORDSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactordSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glGlobalAlphaFactorubSUN = (GLEEPFNGLGLOBALALPHAFACTORUBSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorubSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glGlobalAlphaFactorusSUN = (GLEEPFNGLGLOBALALPHAFACTORUSSUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactorusSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glGlobalAlphaFactoruiSUN = (GLEEPFNGLGLOBALALPHAFACTORUISUNPROC) __GLeeGetProcAddress("glGlobalAlphaFactoruiSUN"))!=0) nLinked++; #endif if (nLinked==8) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SUN_triangle_list(void) { GLint nLinked=0; #ifdef __GLEE_GL_SUN_triangle_list if ((GLeeFuncPtr_glReplacementCodeuiSUN = (GLEEPFNGLREPLACEMENTCODEUISUNPROC) __GLeeGetProcAddress("glReplacementCodeuiSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeusSUN = (GLEEPFNGLREPLACEMENTCODEUSSUNPROC) __GLeeGetProcAddress("glReplacementCodeusSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeubSUN = (GLEEPFNGLREPLACEMENTCODEUBSUNPROC) __GLeeGetProcAddress("glReplacementCodeubSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuivSUN = (GLEEPFNGLREPLACEMENTCODEUIVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuivSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeusvSUN = (GLEEPFNGLREPLACEMENTCODEUSVSUNPROC) __GLeeGetProcAddress("glReplacementCodeusvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeubvSUN = (GLEEPFNGLREPLACEMENTCODEUBVSUNPROC) __GLeeGetProcAddress("glReplacementCodeubvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodePointerSUN = (GLEEPFNGLREPLACEMENTCODEPOINTERSUNPROC) __GLeeGetProcAddress("glReplacementCodePointerSUN"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SUN_vertex(void) { GLint nLinked=0; #ifdef __GLEE_GL_SUN_vertex if ((GLeeFuncPtr_glColor4ubVertex2fSUN = (GLEEPFNGLCOLOR4UBVERTEX2FSUNPROC) __GLeeGetProcAddress("glColor4ubVertex2fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glColor4ubVertex2fvSUN = (GLEEPFNGLCOLOR4UBVERTEX2FVSUNPROC) __GLeeGetProcAddress("glColor4ubVertex2fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glColor4ubVertex3fSUN = (GLEEPFNGLCOLOR4UBVERTEX3FSUNPROC) __GLeeGetProcAddress("glColor4ubVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glColor4ubVertex3fvSUN = (GLEEPFNGLCOLOR4UBVERTEX3FVSUNPROC) __GLeeGetProcAddress("glColor4ubVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glColor3fVertex3fSUN = (GLEEPFNGLCOLOR3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glColor3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glColor3fVertex3fvSUN = (GLEEPFNGLCOLOR3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glColor3fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glNormal3fVertex3fSUN = (GLEEPFNGLNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glNormal3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glNormal3fVertex3fvSUN = (GLEEPFNGLNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glNormal3fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glColor4fNormal3fVertex3fSUN = (GLEEPFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glColor4fNormal3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glColor4fNormal3fVertex3fvSUN = (GLEEPFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glColor4fNormal3fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2fVertex3fSUN = (GLEEPFNGLTEXCOORD2FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2fVertex3fvSUN = (GLEEPFNGLTEXCOORD2FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord4fVertex4fSUN = (GLEEPFNGLTEXCOORD4FVERTEX4FSUNPROC) __GLeeGetProcAddress("glTexCoord4fVertex4fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord4fVertex4fvSUN = (GLEEPFNGLTEXCOORD4FVERTEX4FVSUNPROC) __GLeeGetProcAddress("glTexCoord4fVertex4fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2fColor4ubVertex3fSUN = (GLEEPFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4ubVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2fColor4ubVertex3fvSUN = (GLEEPFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4ubVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2fColor3fVertex3fSUN = (GLEEPFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2fColor3fVertex3fvSUN = (GLEEPFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor3fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2fNormal3fVertex3fSUN = (GLEEPFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fNormal3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2fNormal3fVertex3fvSUN = (GLEEPFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fNormal3fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2fColor4fNormal3fVertex3fSUN = (GLEEPFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4fNormal3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2fColor4fNormal3fVertex3fvSUN = (GLEEPFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glTexCoord2fColor4fNormal3fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord4fColor4fNormal3fVertex4fSUN = (GLEEPFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) __GLeeGetProcAddress("glTexCoord4fColor4fNormal3fVertex4fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord4fColor4fNormal3fVertex4fvSUN = (GLEEPFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) __GLeeGetProcAddress("glTexCoord4fColor4fNormal3fVertex4fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiVertex3fSUN = (GLEEPFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiVertex3fvSUN = (GLEEPFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiColor4ubVertex3fSUN = (GLEEPFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4ubVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiColor4ubVertex3fvSUN = (GLEEPFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4ubVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiColor3fVertex3fSUN = (GLEEPFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiColor3fVertex3fvSUN = (GLEEPFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor3fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiNormal3fVertex3fSUN = (GLEEPFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiNormal3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiNormal3fVertex3fvSUN = (GLEEPFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiNormal3fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiColor4fNormal3fVertex3fSUN = (GLEEPFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiColor4fNormal3fVertex3fvSUN = (GLEEPFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiColor4fNormal3fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiTexCoord2fVertex3fSUN = (GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiTexCoord2fVertex3fvSUN = (GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN = (GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN = (GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN = (GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN"))!=0) nLinked++; if ((GLeeFuncPtr_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN = (GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) __GLeeGetProcAddress("glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN"))!=0) nLinked++; #endif if (nLinked==40) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_blend_func_separate(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_blend_func_separate if ((GLeeFuncPtr_glBlendFuncSeparateEXT = (GLEEPFNGLBLENDFUNCSEPARATEEXTPROC) __GLeeGetProcAddress("glBlendFuncSeparateEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_INGR_color_clamp(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_INGR_interlace_read(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_stencil_wrap(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_422_pixels(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_texgen_reflection(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_cube_map(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SUN_convolution_border_modes(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_env_add(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_lod_bias(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_filter_anisotropic(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_vertex_weighting(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_vertex_weighting if ((GLeeFuncPtr_glVertexWeightfEXT = (GLEEPFNGLVERTEXWEIGHTFEXTPROC) __GLeeGetProcAddress("glVertexWeightfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexWeightfvEXT = (GLEEPFNGLVERTEXWEIGHTFVEXTPROC) __GLeeGetProcAddress("glVertexWeightfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexWeightPointerEXT = (GLEEPFNGLVERTEXWEIGHTPOINTEREXTPROC) __GLeeGetProcAddress("glVertexWeightPointerEXT"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_light_max_exponent(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_vertex_array_range(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_vertex_array_range if ((GLeeFuncPtr_glFlushVertexArrayRangeNV = (GLEEPFNGLFLUSHVERTEXARRAYRANGENVPROC) __GLeeGetProcAddress("glFlushVertexArrayRangeNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexArrayRangeNV = (GLEEPFNGLVERTEXARRAYRANGENVPROC) __GLeeGetProcAddress("glVertexArrayRangeNV"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_register_combiners(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_register_combiners if ((GLeeFuncPtr_glCombinerParameterfvNV = (GLEEPFNGLCOMBINERPARAMETERFVNVPROC) __GLeeGetProcAddress("glCombinerParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glCombinerParameterfNV = (GLEEPFNGLCOMBINERPARAMETERFNVPROC) __GLeeGetProcAddress("glCombinerParameterfNV"))!=0) nLinked++; if ((GLeeFuncPtr_glCombinerParameterivNV = (GLEEPFNGLCOMBINERPARAMETERIVNVPROC) __GLeeGetProcAddress("glCombinerParameterivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glCombinerParameteriNV = (GLEEPFNGLCOMBINERPARAMETERINVPROC) __GLeeGetProcAddress("glCombinerParameteriNV"))!=0) nLinked++; if ((GLeeFuncPtr_glCombinerInputNV = (GLEEPFNGLCOMBINERINPUTNVPROC) __GLeeGetProcAddress("glCombinerInputNV"))!=0) nLinked++; if ((GLeeFuncPtr_glCombinerOutputNV = (GLEEPFNGLCOMBINEROUTPUTNVPROC) __GLeeGetProcAddress("glCombinerOutputNV"))!=0) nLinked++; if ((GLeeFuncPtr_glFinalCombinerInputNV = (GLEEPFNGLFINALCOMBINERINPUTNVPROC) __GLeeGetProcAddress("glFinalCombinerInputNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetCombinerInputParameterfvNV = (GLEEPFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetCombinerInputParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetCombinerInputParameterivNV = (GLEEPFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetCombinerInputParameterivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetCombinerOutputParameterfvNV = (GLEEPFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetCombinerOutputParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetCombinerOutputParameterivNV = (GLEEPFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetCombinerOutputParameterivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFinalCombinerInputParameterfvNV = (GLEEPFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetFinalCombinerInputParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFinalCombinerInputParameterivNV = (GLEEPFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetFinalCombinerInputParameterivNV"))!=0) nLinked++; #endif if (nLinked==13) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_fog_distance(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_texgen_emboss(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_blend_square(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_texture_env_combine4(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_MESA_resize_buffers(void) { GLint nLinked=0; #ifdef __GLEE_GL_MESA_resize_buffers if ((GLeeFuncPtr_glResizeBuffersMESA = (GLEEPFNGLRESIZEBUFFERSMESAPROC) __GLeeGetProcAddress("glResizeBuffersMESA"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_MESA_window_pos(void) { GLint nLinked=0; #ifdef __GLEE_GL_MESA_window_pos if ((GLeeFuncPtr_glWindowPos2dMESA = (GLEEPFNGLWINDOWPOS2DMESAPROC) __GLeeGetProcAddress("glWindowPos2dMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2dvMESA = (GLEEPFNGLWINDOWPOS2DVMESAPROC) __GLeeGetProcAddress("glWindowPos2dvMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2fMESA = (GLEEPFNGLWINDOWPOS2FMESAPROC) __GLeeGetProcAddress("glWindowPos2fMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2fvMESA = (GLEEPFNGLWINDOWPOS2FVMESAPROC) __GLeeGetProcAddress("glWindowPos2fvMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2iMESA = (GLEEPFNGLWINDOWPOS2IMESAPROC) __GLeeGetProcAddress("glWindowPos2iMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2ivMESA = (GLEEPFNGLWINDOWPOS2IVMESAPROC) __GLeeGetProcAddress("glWindowPos2ivMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2sMESA = (GLEEPFNGLWINDOWPOS2SMESAPROC) __GLeeGetProcAddress("glWindowPos2sMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos2svMESA = (GLEEPFNGLWINDOWPOS2SVMESAPROC) __GLeeGetProcAddress("glWindowPos2svMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3dMESA = (GLEEPFNGLWINDOWPOS3DMESAPROC) __GLeeGetProcAddress("glWindowPos3dMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3dvMESA = (GLEEPFNGLWINDOWPOS3DVMESAPROC) __GLeeGetProcAddress("glWindowPos3dvMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3fMESA = (GLEEPFNGLWINDOWPOS3FMESAPROC) __GLeeGetProcAddress("glWindowPos3fMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3fvMESA = (GLEEPFNGLWINDOWPOS3FVMESAPROC) __GLeeGetProcAddress("glWindowPos3fvMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3iMESA = (GLEEPFNGLWINDOWPOS3IMESAPROC) __GLeeGetProcAddress("glWindowPos3iMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3ivMESA = (GLEEPFNGLWINDOWPOS3IVMESAPROC) __GLeeGetProcAddress("glWindowPos3ivMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3sMESA = (GLEEPFNGLWINDOWPOS3SMESAPROC) __GLeeGetProcAddress("glWindowPos3sMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos3svMESA = (GLEEPFNGLWINDOWPOS3SVMESAPROC) __GLeeGetProcAddress("glWindowPos3svMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos4dMESA = (GLEEPFNGLWINDOWPOS4DMESAPROC) __GLeeGetProcAddress("glWindowPos4dMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos4dvMESA = (GLEEPFNGLWINDOWPOS4DVMESAPROC) __GLeeGetProcAddress("glWindowPos4dvMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos4fMESA = (GLEEPFNGLWINDOWPOS4FMESAPROC) __GLeeGetProcAddress("glWindowPos4fMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos4fvMESA = (GLEEPFNGLWINDOWPOS4FVMESAPROC) __GLeeGetProcAddress("glWindowPos4fvMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos4iMESA = (GLEEPFNGLWINDOWPOS4IMESAPROC) __GLeeGetProcAddress("glWindowPos4iMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos4ivMESA = (GLEEPFNGLWINDOWPOS4IVMESAPROC) __GLeeGetProcAddress("glWindowPos4ivMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos4sMESA = (GLEEPFNGLWINDOWPOS4SMESAPROC) __GLeeGetProcAddress("glWindowPos4sMESA"))!=0) nLinked++; if ((GLeeFuncPtr_glWindowPos4svMESA = (GLEEPFNGLWINDOWPOS4SVMESAPROC) __GLeeGetProcAddress("glWindowPos4svMESA"))!=0) nLinked++; #endif if (nLinked==24) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_texture_compression_s3tc(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_IBM_cull_vertex(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_IBM_multimode_draw_arrays(void) { GLint nLinked=0; #ifdef __GLEE_GL_IBM_multimode_draw_arrays if ((GLeeFuncPtr_glMultiModeDrawArraysIBM = (GLEEPFNGLMULTIMODEDRAWARRAYSIBMPROC) __GLeeGetProcAddress("glMultiModeDrawArraysIBM"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiModeDrawElementsIBM = (GLEEPFNGLMULTIMODEDRAWELEMENTSIBMPROC) __GLeeGetProcAddress("glMultiModeDrawElementsIBM"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_IBM_vertex_array_lists(void) { GLint nLinked=0; #ifdef __GLEE_GL_IBM_vertex_array_lists if ((GLeeFuncPtr_glColorPointerListIBM = (GLEEPFNGLCOLORPOINTERLISTIBMPROC) __GLeeGetProcAddress("glColorPointerListIBM"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColorPointerListIBM = (GLEEPFNGLSECONDARYCOLORPOINTERLISTIBMPROC) __GLeeGetProcAddress("glSecondaryColorPointerListIBM"))!=0) nLinked++; if ((GLeeFuncPtr_glEdgeFlagPointerListIBM = (GLEEPFNGLEDGEFLAGPOINTERLISTIBMPROC) __GLeeGetProcAddress("glEdgeFlagPointerListIBM"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoordPointerListIBM = (GLEEPFNGLFOGCOORDPOINTERLISTIBMPROC) __GLeeGetProcAddress("glFogCoordPointerListIBM"))!=0) nLinked++; if ((GLeeFuncPtr_glIndexPointerListIBM = (GLEEPFNGLINDEXPOINTERLISTIBMPROC) __GLeeGetProcAddress("glIndexPointerListIBM"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalPointerListIBM = (GLEEPFNGLNORMALPOINTERLISTIBMPROC) __GLeeGetProcAddress("glNormalPointerListIBM"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordPointerListIBM = (GLEEPFNGLTEXCOORDPOINTERLISTIBMPROC) __GLeeGetProcAddress("glTexCoordPointerListIBM"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexPointerListIBM = (GLEEPFNGLVERTEXPOINTERLISTIBMPROC) __GLeeGetProcAddress("glVertexPointerListIBM"))!=0) nLinked++; #endif if (nLinked==8) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_subsample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_ycrcb_subsample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_ycrcba(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGI_depth_pass_instrument(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_3DFX_texture_compression_FXT1(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_3DFX_multisample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_3DFX_tbuffer(void) { GLint nLinked=0; #ifdef __GLEE_GL_3DFX_tbuffer if ((GLeeFuncPtr_glTbufferMask3DFX = (GLEEPFNGLTBUFFERMASK3DFXPROC) __GLeeGetProcAddress("glTbufferMask3DFX"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_multisample(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_multisample if ((GLeeFuncPtr_glSampleMaskEXT = (GLEEPFNGLSAMPLEMASKEXTPROC) __GLeeGetProcAddress("glSampleMaskEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSamplePatternEXT = (GLEEPFNGLSAMPLEPATTERNEXTPROC) __GLeeGetProcAddress("glSamplePatternEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_vertex_preclip(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_convolution_accuracy(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_resample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIS_point_line_texgen(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIS_texture_color_mask(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIS_texture_color_mask if ((GLeeFuncPtr_glTextureColorMaskSGIS = (GLEEPFNGLTEXTURECOLORMASKSGISPROC) __GLeeGetProcAddress("glTextureColorMaskSGIS"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_texture_env_dot3(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ATI_texture_mirror_once(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_fence(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_fence if ((GLeeFuncPtr_glDeleteFencesNV = (GLEEPFNGLDELETEFENCESNVPROC) __GLeeGetProcAddress("glDeleteFencesNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGenFencesNV = (GLEEPFNGLGENFENCESNVPROC) __GLeeGetProcAddress("glGenFencesNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsFenceNV = (GLEEPFNGLISFENCENVPROC) __GLeeGetProcAddress("glIsFenceNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTestFenceNV = (GLEEPFNGLTESTFENCENVPROC) __GLeeGetProcAddress("glTestFenceNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFenceivNV = (GLEEPFNGLGETFENCEIVNVPROC) __GLeeGetProcAddress("glGetFenceivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glFinishFenceNV = (GLEEPFNGLFINISHFENCENVPROC) __GLeeGetProcAddress("glFinishFenceNV"))!=0) nLinked++; if ((GLeeFuncPtr_glSetFenceNV = (GLEEPFNGLSETFENCENVPROC) __GLeeGetProcAddress("glSetFenceNV"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_IBM_texture_mirrored_repeat(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_evaluators(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_evaluators if ((GLeeFuncPtr_glMapControlPointsNV = (GLEEPFNGLMAPCONTROLPOINTSNVPROC) __GLeeGetProcAddress("glMapControlPointsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMapParameterivNV = (GLEEPFNGLMAPPARAMETERIVNVPROC) __GLeeGetProcAddress("glMapParameterivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMapParameterfvNV = (GLEEPFNGLMAPPARAMETERFVNVPROC) __GLeeGetProcAddress("glMapParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMapControlPointsNV = (GLEEPFNGLGETMAPCONTROLPOINTSNVPROC) __GLeeGetProcAddress("glGetMapControlPointsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMapParameterivNV = (GLEEPFNGLGETMAPPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetMapParameterivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMapParameterfvNV = (GLEEPFNGLGETMAPPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetMapParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMapAttribParameterivNV = (GLEEPFNGLGETMAPATTRIBPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetMapAttribParameterivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMapAttribParameterfvNV = (GLEEPFNGLGETMAPATTRIBPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetMapAttribParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glEvalMapsNV = (GLEEPFNGLEVALMAPSNVPROC) __GLeeGetProcAddress("glEvalMapsNV"))!=0) nLinked++; #endif if (nLinked==9) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_packed_depth_stencil(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_register_combiners2(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_register_combiners2 if ((GLeeFuncPtr_glCombinerStageParameterfvNV = (GLEEPFNGLCOMBINERSTAGEPARAMETERFVNVPROC) __GLeeGetProcAddress("glCombinerStageParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetCombinerStageParameterfvNV = (GLEEPFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetCombinerStageParameterfvNV"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_texture_compression_vtc(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_texture_rectangle(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_texture_shader(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_texture_shader2(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_vertex_array_range2(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_vertex_program(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_vertex_program if ((GLeeFuncPtr_glAreProgramsResidentNV = (GLEEPFNGLAREPROGRAMSRESIDENTNVPROC) __GLeeGetProcAddress("glAreProgramsResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glBindProgramNV = (GLEEPFNGLBINDPROGRAMNVPROC) __GLeeGetProcAddress("glBindProgramNV"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteProgramsNV = (GLEEPFNGLDELETEPROGRAMSNVPROC) __GLeeGetProcAddress("glDeleteProgramsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glExecuteProgramNV = (GLEEPFNGLEXECUTEPROGRAMNVPROC) __GLeeGetProcAddress("glExecuteProgramNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGenProgramsNV = (GLEEPFNGLGENPROGRAMSNVPROC) __GLeeGetProcAddress("glGenProgramsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramParameterdvNV = (GLEEPFNGLGETPROGRAMPARAMETERDVNVPROC) __GLeeGetProcAddress("glGetProgramParameterdvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramParameterfvNV = (GLEEPFNGLGETPROGRAMPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetProgramParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramivNV = (GLEEPFNGLGETPROGRAMIVNVPROC) __GLeeGetProcAddress("glGetProgramivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramStringNV = (GLEEPFNGLGETPROGRAMSTRINGNVPROC) __GLeeGetProcAddress("glGetProgramStringNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTrackMatrixivNV = (GLEEPFNGLGETTRACKMATRIXIVNVPROC) __GLeeGetProcAddress("glGetTrackMatrixivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribdvNV = (GLEEPFNGLGETVERTEXATTRIBDVNVPROC) __GLeeGetProcAddress("glGetVertexAttribdvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribfvNV = (GLEEPFNGLGETVERTEXATTRIBFVNVPROC) __GLeeGetProcAddress("glGetVertexAttribfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribivNV = (GLEEPFNGLGETVERTEXATTRIBIVNVPROC) __GLeeGetProcAddress("glGetVertexAttribivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribPointervNV = (GLEEPFNGLGETVERTEXATTRIBPOINTERVNVPROC) __GLeeGetProcAddress("glGetVertexAttribPointervNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsProgramNV = (GLEEPFNGLISPROGRAMNVPROC) __GLeeGetProcAddress("glIsProgramNV"))!=0) nLinked++; if ((GLeeFuncPtr_glLoadProgramNV = (GLEEPFNGLLOADPROGRAMNVPROC) __GLeeGetProcAddress("glLoadProgramNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramParameter4dNV = (GLEEPFNGLPROGRAMPARAMETER4DNVPROC) __GLeeGetProcAddress("glProgramParameter4dNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramParameter4dvNV = (GLEEPFNGLPROGRAMPARAMETER4DVNVPROC) __GLeeGetProcAddress("glProgramParameter4dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramParameter4fNV = (GLEEPFNGLPROGRAMPARAMETER4FNVPROC) __GLeeGetProcAddress("glProgramParameter4fNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramParameter4fvNV = (GLEEPFNGLPROGRAMPARAMETER4FVNVPROC) __GLeeGetProcAddress("glProgramParameter4fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramParameters4dvNV = (GLEEPFNGLPROGRAMPARAMETERS4DVNVPROC) __GLeeGetProcAddress("glProgramParameters4dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramParameters4fvNV = (GLEEPFNGLPROGRAMPARAMETERS4FVNVPROC) __GLeeGetProcAddress("glProgramParameters4fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glRequestResidentProgramsNV = (GLEEPFNGLREQUESTRESIDENTPROGRAMSNVPROC) __GLeeGetProcAddress("glRequestResidentProgramsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTrackMatrixNV = (GLEEPFNGLTRACKMATRIXNVPROC) __GLeeGetProcAddress("glTrackMatrixNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribPointerNV = (GLEEPFNGLVERTEXATTRIBPOINTERNVPROC) __GLeeGetProcAddress("glVertexAttribPointerNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1dNV = (GLEEPFNGLVERTEXATTRIB1DNVPROC) __GLeeGetProcAddress("glVertexAttrib1dNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1dvNV = (GLEEPFNGLVERTEXATTRIB1DVNVPROC) __GLeeGetProcAddress("glVertexAttrib1dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1fNV = (GLEEPFNGLVERTEXATTRIB1FNVPROC) __GLeeGetProcAddress("glVertexAttrib1fNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1fvNV = (GLEEPFNGLVERTEXATTRIB1FVNVPROC) __GLeeGetProcAddress("glVertexAttrib1fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1sNV = (GLEEPFNGLVERTEXATTRIB1SNVPROC) __GLeeGetProcAddress("glVertexAttrib1sNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1svNV = (GLEEPFNGLVERTEXATTRIB1SVNVPROC) __GLeeGetProcAddress("glVertexAttrib1svNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2dNV = (GLEEPFNGLVERTEXATTRIB2DNVPROC) __GLeeGetProcAddress("glVertexAttrib2dNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2dvNV = (GLEEPFNGLVERTEXATTRIB2DVNVPROC) __GLeeGetProcAddress("glVertexAttrib2dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2fNV = (GLEEPFNGLVERTEXATTRIB2FNVPROC) __GLeeGetProcAddress("glVertexAttrib2fNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2fvNV = (GLEEPFNGLVERTEXATTRIB2FVNVPROC) __GLeeGetProcAddress("glVertexAttrib2fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2sNV = (GLEEPFNGLVERTEXATTRIB2SNVPROC) __GLeeGetProcAddress("glVertexAttrib2sNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2svNV = (GLEEPFNGLVERTEXATTRIB2SVNVPROC) __GLeeGetProcAddress("glVertexAttrib2svNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3dNV = (GLEEPFNGLVERTEXATTRIB3DNVPROC) __GLeeGetProcAddress("glVertexAttrib3dNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3dvNV = (GLEEPFNGLVERTEXATTRIB3DVNVPROC) __GLeeGetProcAddress("glVertexAttrib3dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3fNV = (GLEEPFNGLVERTEXATTRIB3FNVPROC) __GLeeGetProcAddress("glVertexAttrib3fNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3fvNV = (GLEEPFNGLVERTEXATTRIB3FVNVPROC) __GLeeGetProcAddress("glVertexAttrib3fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3sNV = (GLEEPFNGLVERTEXATTRIB3SNVPROC) __GLeeGetProcAddress("glVertexAttrib3sNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3svNV = (GLEEPFNGLVERTEXATTRIB3SVNVPROC) __GLeeGetProcAddress("glVertexAttrib3svNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4dNV = (GLEEPFNGLVERTEXATTRIB4DNVPROC) __GLeeGetProcAddress("glVertexAttrib4dNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4dvNV = (GLEEPFNGLVERTEXATTRIB4DVNVPROC) __GLeeGetProcAddress("glVertexAttrib4dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4fNV = (GLEEPFNGLVERTEXATTRIB4FNVPROC) __GLeeGetProcAddress("glVertexAttrib4fNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4fvNV = (GLEEPFNGLVERTEXATTRIB4FVNVPROC) __GLeeGetProcAddress("glVertexAttrib4fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4sNV = (GLEEPFNGLVERTEXATTRIB4SNVPROC) __GLeeGetProcAddress("glVertexAttrib4sNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4svNV = (GLEEPFNGLVERTEXATTRIB4SVNVPROC) __GLeeGetProcAddress("glVertexAttrib4svNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4ubNV = (GLEEPFNGLVERTEXATTRIB4UBNVPROC) __GLeeGetProcAddress("glVertexAttrib4ubNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4ubvNV = (GLEEPFNGLVERTEXATTRIB4UBVNVPROC) __GLeeGetProcAddress("glVertexAttrib4ubvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs1dvNV = (GLEEPFNGLVERTEXATTRIBS1DVNVPROC) __GLeeGetProcAddress("glVertexAttribs1dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs1fvNV = (GLEEPFNGLVERTEXATTRIBS1FVNVPROC) __GLeeGetProcAddress("glVertexAttribs1fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs1svNV = (GLEEPFNGLVERTEXATTRIBS1SVNVPROC) __GLeeGetProcAddress("glVertexAttribs1svNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs2dvNV = (GLEEPFNGLVERTEXATTRIBS2DVNVPROC) __GLeeGetProcAddress("glVertexAttribs2dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs2fvNV = (GLEEPFNGLVERTEXATTRIBS2FVNVPROC) __GLeeGetProcAddress("glVertexAttribs2fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs2svNV = (GLEEPFNGLVERTEXATTRIBS2SVNVPROC) __GLeeGetProcAddress("glVertexAttribs2svNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs3dvNV = (GLEEPFNGLVERTEXATTRIBS3DVNVPROC) __GLeeGetProcAddress("glVertexAttribs3dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs3fvNV = (GLEEPFNGLVERTEXATTRIBS3FVNVPROC) __GLeeGetProcAddress("glVertexAttribs3fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs3svNV = (GLEEPFNGLVERTEXATTRIBS3SVNVPROC) __GLeeGetProcAddress("glVertexAttribs3svNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs4dvNV = (GLEEPFNGLVERTEXATTRIBS4DVNVPROC) __GLeeGetProcAddress("glVertexAttribs4dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs4fvNV = (GLEEPFNGLVERTEXATTRIBS4FVNVPROC) __GLeeGetProcAddress("glVertexAttribs4fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs4svNV = (GLEEPFNGLVERTEXATTRIBS4SVNVPROC) __GLeeGetProcAddress("glVertexAttribs4svNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs4ubvNV = (GLEEPFNGLVERTEXATTRIBS4UBVNVPROC) __GLeeGetProcAddress("glVertexAttribs4ubvNV"))!=0) nLinked++; #endif if (nLinked==64) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_texture_coordinate_clamp(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_scalebias_hint(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_OML_interlace(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_OML_subsample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_OML_resample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_copy_depth_to_color(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ATI_envmap_bumpmap(void) { GLint nLinked=0; #ifdef __GLEE_GL_ATI_envmap_bumpmap if ((GLeeFuncPtr_glTexBumpParameterivATI = (GLEEPFNGLTEXBUMPPARAMETERIVATIPROC) __GLeeGetProcAddress("glTexBumpParameterivATI"))!=0) nLinked++; if ((GLeeFuncPtr_glTexBumpParameterfvATI = (GLEEPFNGLTEXBUMPPARAMETERFVATIPROC) __GLeeGetProcAddress("glTexBumpParameterfvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexBumpParameterivATI = (GLEEPFNGLGETTEXBUMPPARAMETERIVATIPROC) __GLeeGetProcAddress("glGetTexBumpParameterivATI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexBumpParameterfvATI = (GLEEPFNGLGETTEXBUMPPARAMETERFVATIPROC) __GLeeGetProcAddress("glGetTexBumpParameterfvATI"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ATI_fragment_shader(void) { GLint nLinked=0; #ifdef __GLEE_GL_ATI_fragment_shader if ((GLeeFuncPtr_glGenFragmentShadersATI = (GLEEPFNGLGENFRAGMENTSHADERSATIPROC) __GLeeGetProcAddress("glGenFragmentShadersATI"))!=0) nLinked++; if ((GLeeFuncPtr_glBindFragmentShaderATI = (GLEEPFNGLBINDFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glBindFragmentShaderATI"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteFragmentShaderATI = (GLEEPFNGLDELETEFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glDeleteFragmentShaderATI"))!=0) nLinked++; if ((GLeeFuncPtr_glBeginFragmentShaderATI = (GLEEPFNGLBEGINFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glBeginFragmentShaderATI"))!=0) nLinked++; if ((GLeeFuncPtr_glEndFragmentShaderATI = (GLEEPFNGLENDFRAGMENTSHADERATIPROC) __GLeeGetProcAddress("glEndFragmentShaderATI"))!=0) nLinked++; if ((GLeeFuncPtr_glPassTexCoordATI = (GLEEPFNGLPASSTEXCOORDATIPROC) __GLeeGetProcAddress("glPassTexCoordATI"))!=0) nLinked++; if ((GLeeFuncPtr_glSampleMapATI = (GLEEPFNGLSAMPLEMAPATIPROC) __GLeeGetProcAddress("glSampleMapATI"))!=0) nLinked++; if ((GLeeFuncPtr_glColorFragmentOp1ATI = (GLEEPFNGLCOLORFRAGMENTOP1ATIPROC) __GLeeGetProcAddress("glColorFragmentOp1ATI"))!=0) nLinked++; if ((GLeeFuncPtr_glColorFragmentOp2ATI = (GLEEPFNGLCOLORFRAGMENTOP2ATIPROC) __GLeeGetProcAddress("glColorFragmentOp2ATI"))!=0) nLinked++; if ((GLeeFuncPtr_glColorFragmentOp3ATI = (GLEEPFNGLCOLORFRAGMENTOP3ATIPROC) __GLeeGetProcAddress("glColorFragmentOp3ATI"))!=0) nLinked++; if ((GLeeFuncPtr_glAlphaFragmentOp1ATI = (GLEEPFNGLALPHAFRAGMENTOP1ATIPROC) __GLeeGetProcAddress("glAlphaFragmentOp1ATI"))!=0) nLinked++; if ((GLeeFuncPtr_glAlphaFragmentOp2ATI = (GLEEPFNGLALPHAFRAGMENTOP2ATIPROC) __GLeeGetProcAddress("glAlphaFragmentOp2ATI"))!=0) nLinked++; if ((GLeeFuncPtr_glAlphaFragmentOp3ATI = (GLEEPFNGLALPHAFRAGMENTOP3ATIPROC) __GLeeGetProcAddress("glAlphaFragmentOp3ATI"))!=0) nLinked++; if ((GLeeFuncPtr_glSetFragmentShaderConstantATI = (GLEEPFNGLSETFRAGMENTSHADERCONSTANTATIPROC) __GLeeGetProcAddress("glSetFragmentShaderConstantATI"))!=0) nLinked++; #endif if (nLinked==14) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ATI_pn_triangles(void) { GLint nLinked=0; #ifdef __GLEE_GL_ATI_pn_triangles if ((GLeeFuncPtr_glPNTrianglesiATI = (GLEEPFNGLPNTRIANGLESIATIPROC) __GLeeGetProcAddress("glPNTrianglesiATI"))!=0) nLinked++; if ((GLeeFuncPtr_glPNTrianglesfATI = (GLEEPFNGLPNTRIANGLESFATIPROC) __GLeeGetProcAddress("glPNTrianglesfATI"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ATI_vertex_array_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_ATI_vertex_array_object if ((GLeeFuncPtr_glNewObjectBufferATI = (GLEEPFNGLNEWOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glNewObjectBufferATI"))!=0) nLinked++; if ((GLeeFuncPtr_glIsObjectBufferATI = (GLEEPFNGLISOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glIsObjectBufferATI"))!=0) nLinked++; if ((GLeeFuncPtr_glUpdateObjectBufferATI = (GLEEPFNGLUPDATEOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glUpdateObjectBufferATI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetObjectBufferfvATI = (GLEEPFNGLGETOBJECTBUFFERFVATIPROC) __GLeeGetProcAddress("glGetObjectBufferfvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetObjectBufferivATI = (GLEEPFNGLGETOBJECTBUFFERIVATIPROC) __GLeeGetProcAddress("glGetObjectBufferivATI"))!=0) nLinked++; if ((GLeeFuncPtr_glFreeObjectBufferATI = (GLEEPFNGLFREEOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glFreeObjectBufferATI"))!=0) nLinked++; if ((GLeeFuncPtr_glArrayObjectATI = (GLEEPFNGLARRAYOBJECTATIPROC) __GLeeGetProcAddress("glArrayObjectATI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetArrayObjectfvATI = (GLEEPFNGLGETARRAYOBJECTFVATIPROC) __GLeeGetProcAddress("glGetArrayObjectfvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetArrayObjectivATI = (GLEEPFNGLGETARRAYOBJECTIVATIPROC) __GLeeGetProcAddress("glGetArrayObjectivATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVariantArrayObjectATI = (GLEEPFNGLVARIANTARRAYOBJECTATIPROC) __GLeeGetProcAddress("glVariantArrayObjectATI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVariantArrayObjectfvATI = (GLEEPFNGLGETVARIANTARRAYOBJECTFVATIPROC) __GLeeGetProcAddress("glGetVariantArrayObjectfvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVariantArrayObjectivATI = (GLEEPFNGLGETVARIANTARRAYOBJECTIVATIPROC) __GLeeGetProcAddress("glGetVariantArrayObjectivATI"))!=0) nLinked++; #endif if (nLinked==12) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_vertex_shader(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_vertex_shader if ((GLeeFuncPtr_glBeginVertexShaderEXT = (GLEEPFNGLBEGINVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glBeginVertexShaderEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glEndVertexShaderEXT = (GLEEPFNGLENDVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glEndVertexShaderEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindVertexShaderEXT = (GLEEPFNGLBINDVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glBindVertexShaderEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGenVertexShadersEXT = (GLEEPFNGLGENVERTEXSHADERSEXTPROC) __GLeeGetProcAddress("glGenVertexShadersEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteVertexShaderEXT = (GLEEPFNGLDELETEVERTEXSHADEREXTPROC) __GLeeGetProcAddress("glDeleteVertexShaderEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glShaderOp1EXT = (GLEEPFNGLSHADEROP1EXTPROC) __GLeeGetProcAddress("glShaderOp1EXT"))!=0) nLinked++; if ((GLeeFuncPtr_glShaderOp2EXT = (GLEEPFNGLSHADEROP2EXTPROC) __GLeeGetProcAddress("glShaderOp2EXT"))!=0) nLinked++; if ((GLeeFuncPtr_glShaderOp3EXT = (GLEEPFNGLSHADEROP3EXTPROC) __GLeeGetProcAddress("glShaderOp3EXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSwizzleEXT = (GLEEPFNGLSWIZZLEEXTPROC) __GLeeGetProcAddress("glSwizzleEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glWriteMaskEXT = (GLEEPFNGLWRITEMASKEXTPROC) __GLeeGetProcAddress("glWriteMaskEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glInsertComponentEXT = (GLEEPFNGLINSERTCOMPONENTEXTPROC) __GLeeGetProcAddress("glInsertComponentEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glExtractComponentEXT = (GLEEPFNGLEXTRACTCOMPONENTEXTPROC) __GLeeGetProcAddress("glExtractComponentEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGenSymbolsEXT = (GLEEPFNGLGENSYMBOLSEXTPROC) __GLeeGetProcAddress("glGenSymbolsEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSetInvariantEXT = (GLEEPFNGLSETINVARIANTEXTPROC) __GLeeGetProcAddress("glSetInvariantEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glSetLocalConstantEXT = (GLEEPFNGLSETLOCALCONSTANTEXTPROC) __GLeeGetProcAddress("glSetLocalConstantEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVariantbvEXT = (GLEEPFNGLVARIANTBVEXTPROC) __GLeeGetProcAddress("glVariantbvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVariantsvEXT = (GLEEPFNGLVARIANTSVEXTPROC) __GLeeGetProcAddress("glVariantsvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVariantivEXT = (GLEEPFNGLVARIANTIVEXTPROC) __GLeeGetProcAddress("glVariantivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVariantfvEXT = (GLEEPFNGLVARIANTFVEXTPROC) __GLeeGetProcAddress("glVariantfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVariantdvEXT = (GLEEPFNGLVARIANTDVEXTPROC) __GLeeGetProcAddress("glVariantdvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVariantubvEXT = (GLEEPFNGLVARIANTUBVEXTPROC) __GLeeGetProcAddress("glVariantubvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVariantusvEXT = (GLEEPFNGLVARIANTUSVEXTPROC) __GLeeGetProcAddress("glVariantusvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVariantuivEXT = (GLEEPFNGLVARIANTUIVEXTPROC) __GLeeGetProcAddress("glVariantuivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVariantPointerEXT = (GLEEPFNGLVARIANTPOINTEREXTPROC) __GLeeGetProcAddress("glVariantPointerEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glEnableVariantClientStateEXT = (GLEEPFNGLENABLEVARIANTCLIENTSTATEEXTPROC) __GLeeGetProcAddress("glEnableVariantClientStateEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glDisableVariantClientStateEXT = (GLEEPFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) __GLeeGetProcAddress("glDisableVariantClientStateEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindLightParameterEXT = (GLEEPFNGLBINDLIGHTPARAMETEREXTPROC) __GLeeGetProcAddress("glBindLightParameterEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindMaterialParameterEXT = (GLEEPFNGLBINDMATERIALPARAMETEREXTPROC) __GLeeGetProcAddress("glBindMaterialParameterEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindTexGenParameterEXT = (GLEEPFNGLBINDTEXGENPARAMETEREXTPROC) __GLeeGetProcAddress("glBindTexGenParameterEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindTextureUnitParameterEXT = (GLEEPFNGLBINDTEXTUREUNITPARAMETEREXTPROC) __GLeeGetProcAddress("glBindTextureUnitParameterEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindParameterEXT = (GLEEPFNGLBINDPARAMETEREXTPROC) __GLeeGetProcAddress("glBindParameterEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glIsVariantEnabledEXT = (GLEEPFNGLISVARIANTENABLEDEXTPROC) __GLeeGetProcAddress("glIsVariantEnabledEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVariantBooleanvEXT = (GLEEPFNGLGETVARIANTBOOLEANVEXTPROC) __GLeeGetProcAddress("glGetVariantBooleanvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVariantIntegervEXT = (GLEEPFNGLGETVARIANTINTEGERVEXTPROC) __GLeeGetProcAddress("glGetVariantIntegervEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVariantFloatvEXT = (GLEEPFNGLGETVARIANTFLOATVEXTPROC) __GLeeGetProcAddress("glGetVariantFloatvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVariantPointervEXT = (GLEEPFNGLGETVARIANTPOINTERVEXTPROC) __GLeeGetProcAddress("glGetVariantPointervEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetInvariantBooleanvEXT = (GLEEPFNGLGETINVARIANTBOOLEANVEXTPROC) __GLeeGetProcAddress("glGetInvariantBooleanvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetInvariantIntegervEXT = (GLEEPFNGLGETINVARIANTINTEGERVEXTPROC) __GLeeGetProcAddress("glGetInvariantIntegervEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetInvariantFloatvEXT = (GLEEPFNGLGETINVARIANTFLOATVEXTPROC) __GLeeGetProcAddress("glGetInvariantFloatvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetLocalConstantBooleanvEXT = (GLEEPFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) __GLeeGetProcAddress("glGetLocalConstantBooleanvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetLocalConstantIntegervEXT = (GLEEPFNGLGETLOCALCONSTANTINTEGERVEXTPROC) __GLeeGetProcAddress("glGetLocalConstantIntegervEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetLocalConstantFloatvEXT = (GLEEPFNGLGETLOCALCONSTANTFLOATVEXTPROC) __GLeeGetProcAddress("glGetLocalConstantFloatvEXT"))!=0) nLinked++; #endif if (nLinked==42) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ATI_vertex_streams(void) { GLint nLinked=0; #ifdef __GLEE_GL_ATI_vertex_streams if ((GLeeFuncPtr_glVertexStream1sATI = (GLEEPFNGLVERTEXSTREAM1SATIPROC) __GLeeGetProcAddress("glVertexStream1sATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream1svATI = (GLEEPFNGLVERTEXSTREAM1SVATIPROC) __GLeeGetProcAddress("glVertexStream1svATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream1iATI = (GLEEPFNGLVERTEXSTREAM1IATIPROC) __GLeeGetProcAddress("glVertexStream1iATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream1ivATI = (GLEEPFNGLVERTEXSTREAM1IVATIPROC) __GLeeGetProcAddress("glVertexStream1ivATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream1fATI = (GLEEPFNGLVERTEXSTREAM1FATIPROC) __GLeeGetProcAddress("glVertexStream1fATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream1fvATI = (GLEEPFNGLVERTEXSTREAM1FVATIPROC) __GLeeGetProcAddress("glVertexStream1fvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream1dATI = (GLEEPFNGLVERTEXSTREAM1DATIPROC) __GLeeGetProcAddress("glVertexStream1dATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream1dvATI = (GLEEPFNGLVERTEXSTREAM1DVATIPROC) __GLeeGetProcAddress("glVertexStream1dvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream2sATI = (GLEEPFNGLVERTEXSTREAM2SATIPROC) __GLeeGetProcAddress("glVertexStream2sATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream2svATI = (GLEEPFNGLVERTEXSTREAM2SVATIPROC) __GLeeGetProcAddress("glVertexStream2svATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream2iATI = (GLEEPFNGLVERTEXSTREAM2IATIPROC) __GLeeGetProcAddress("glVertexStream2iATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream2ivATI = (GLEEPFNGLVERTEXSTREAM2IVATIPROC) __GLeeGetProcAddress("glVertexStream2ivATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream2fATI = (GLEEPFNGLVERTEXSTREAM2FATIPROC) __GLeeGetProcAddress("glVertexStream2fATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream2fvATI = (GLEEPFNGLVERTEXSTREAM2FVATIPROC) __GLeeGetProcAddress("glVertexStream2fvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream2dATI = (GLEEPFNGLVERTEXSTREAM2DATIPROC) __GLeeGetProcAddress("glVertexStream2dATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream2dvATI = (GLEEPFNGLVERTEXSTREAM2DVATIPROC) __GLeeGetProcAddress("glVertexStream2dvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream3sATI = (GLEEPFNGLVERTEXSTREAM3SATIPROC) __GLeeGetProcAddress("glVertexStream3sATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream3svATI = (GLEEPFNGLVERTEXSTREAM3SVATIPROC) __GLeeGetProcAddress("glVertexStream3svATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream3iATI = (GLEEPFNGLVERTEXSTREAM3IATIPROC) __GLeeGetProcAddress("glVertexStream3iATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream3ivATI = (GLEEPFNGLVERTEXSTREAM3IVATIPROC) __GLeeGetProcAddress("glVertexStream3ivATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream3fATI = (GLEEPFNGLVERTEXSTREAM3FATIPROC) __GLeeGetProcAddress("glVertexStream3fATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream3fvATI = (GLEEPFNGLVERTEXSTREAM3FVATIPROC) __GLeeGetProcAddress("glVertexStream3fvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream3dATI = (GLEEPFNGLVERTEXSTREAM3DATIPROC) __GLeeGetProcAddress("glVertexStream3dATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream3dvATI = (GLEEPFNGLVERTEXSTREAM3DVATIPROC) __GLeeGetProcAddress("glVertexStream3dvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream4sATI = (GLEEPFNGLVERTEXSTREAM4SATIPROC) __GLeeGetProcAddress("glVertexStream4sATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream4svATI = (GLEEPFNGLVERTEXSTREAM4SVATIPROC) __GLeeGetProcAddress("glVertexStream4svATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream4iATI = (GLEEPFNGLVERTEXSTREAM4IATIPROC) __GLeeGetProcAddress("glVertexStream4iATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream4ivATI = (GLEEPFNGLVERTEXSTREAM4IVATIPROC) __GLeeGetProcAddress("glVertexStream4ivATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream4fATI = (GLEEPFNGLVERTEXSTREAM4FATIPROC) __GLeeGetProcAddress("glVertexStream4fATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream4fvATI = (GLEEPFNGLVERTEXSTREAM4FVATIPROC) __GLeeGetProcAddress("glVertexStream4fvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream4dATI = (GLEEPFNGLVERTEXSTREAM4DATIPROC) __GLeeGetProcAddress("glVertexStream4dATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexStream4dvATI = (GLEEPFNGLVERTEXSTREAM4DVATIPROC) __GLeeGetProcAddress("glVertexStream4dvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalStream3bATI = (GLEEPFNGLNORMALSTREAM3BATIPROC) __GLeeGetProcAddress("glNormalStream3bATI"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalStream3bvATI = (GLEEPFNGLNORMALSTREAM3BVATIPROC) __GLeeGetProcAddress("glNormalStream3bvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalStream3sATI = (GLEEPFNGLNORMALSTREAM3SATIPROC) __GLeeGetProcAddress("glNormalStream3sATI"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalStream3svATI = (GLEEPFNGLNORMALSTREAM3SVATIPROC) __GLeeGetProcAddress("glNormalStream3svATI"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalStream3iATI = (GLEEPFNGLNORMALSTREAM3IATIPROC) __GLeeGetProcAddress("glNormalStream3iATI"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalStream3ivATI = (GLEEPFNGLNORMALSTREAM3IVATIPROC) __GLeeGetProcAddress("glNormalStream3ivATI"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalStream3fATI = (GLEEPFNGLNORMALSTREAM3FATIPROC) __GLeeGetProcAddress("glNormalStream3fATI"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalStream3fvATI = (GLEEPFNGLNORMALSTREAM3FVATIPROC) __GLeeGetProcAddress("glNormalStream3fvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalStream3dATI = (GLEEPFNGLNORMALSTREAM3DATIPROC) __GLeeGetProcAddress("glNormalStream3dATI"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalStream3dvATI = (GLEEPFNGLNORMALSTREAM3DVATIPROC) __GLeeGetProcAddress("glNormalStream3dvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glClientActiveVertexStreamATI = (GLEEPFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) __GLeeGetProcAddress("glClientActiveVertexStreamATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexBlendEnviATI = (GLEEPFNGLVERTEXBLENDENVIATIPROC) __GLeeGetProcAddress("glVertexBlendEnviATI"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexBlendEnvfATI = (GLEEPFNGLVERTEXBLENDENVFATIPROC) __GLeeGetProcAddress("glVertexBlendEnvfATI"))!=0) nLinked++; #endif if (nLinked==45) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ATI_element_array(void) { GLint nLinked=0; #ifdef __GLEE_GL_ATI_element_array if ((GLeeFuncPtr_glElementPointerATI = (GLEEPFNGLELEMENTPOINTERATIPROC) __GLeeGetProcAddress("glElementPointerATI"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawElementArrayATI = (GLEEPFNGLDRAWELEMENTARRAYATIPROC) __GLeeGetProcAddress("glDrawElementArrayATI"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawRangeElementArrayATI = (GLEEPFNGLDRAWRANGEELEMENTARRAYATIPROC) __GLeeGetProcAddress("glDrawRangeElementArrayATI"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SUN_mesh_array(void) { GLint nLinked=0; #ifdef __GLEE_GL_SUN_mesh_array if ((GLeeFuncPtr_glDrawMeshArraysSUN = (GLEEPFNGLDRAWMESHARRAYSSUNPROC) __GLeeGetProcAddress("glDrawMeshArraysSUN"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SUN_slice_accum(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_multisample_filter_hint(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_depth_clamp(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_occlusion_query(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_occlusion_query if ((GLeeFuncPtr_glGenOcclusionQueriesNV = (GLEEPFNGLGENOCCLUSIONQUERIESNVPROC) __GLeeGetProcAddress("glGenOcclusionQueriesNV"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteOcclusionQueriesNV = (GLEEPFNGLDELETEOCCLUSIONQUERIESNVPROC) __GLeeGetProcAddress("glDeleteOcclusionQueriesNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsOcclusionQueryNV = (GLEEPFNGLISOCCLUSIONQUERYNVPROC) __GLeeGetProcAddress("glIsOcclusionQueryNV"))!=0) nLinked++; if ((GLeeFuncPtr_glBeginOcclusionQueryNV = (GLEEPFNGLBEGINOCCLUSIONQUERYNVPROC) __GLeeGetProcAddress("glBeginOcclusionQueryNV"))!=0) nLinked++; if ((GLeeFuncPtr_glEndOcclusionQueryNV = (GLEEPFNGLENDOCCLUSIONQUERYNVPROC) __GLeeGetProcAddress("glEndOcclusionQueryNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetOcclusionQueryivNV = (GLEEPFNGLGETOCCLUSIONQUERYIVNVPROC) __GLeeGetProcAddress("glGetOcclusionQueryivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetOcclusionQueryuivNV = (GLEEPFNGLGETOCCLUSIONQUERYUIVNVPROC) __GLeeGetProcAddress("glGetOcclusionQueryuivNV"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_point_sprite(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_point_sprite if ((GLeeFuncPtr_glPointParameteriNV = (GLEEPFNGLPOINTPARAMETERINVPROC) __GLeeGetProcAddress("glPointParameteriNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPointParameterivNV = (GLEEPFNGLPOINTPARAMETERIVNVPROC) __GLeeGetProcAddress("glPointParameterivNV"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_texture_shader3(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_vertex_program1_1(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_shadow_funcs(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_stencil_two_side(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_stencil_two_side if ((GLeeFuncPtr_glActiveStencilFaceEXT = (GLEEPFNGLACTIVESTENCILFACEEXTPROC) __GLeeGetProcAddress("glActiveStencilFaceEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ATI_text_fragment_shader(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_APPLE_client_storage(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_APPLE_element_array(void) { GLint nLinked=0; #ifdef __GLEE_GL_APPLE_element_array if ((GLeeFuncPtr_glElementPointerAPPLE = (GLEEPFNGLELEMENTPOINTERAPPLEPROC) __GLeeGetProcAddress("glElementPointerAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawElementArrayAPPLE = (GLEEPFNGLDRAWELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glDrawElementArrayAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawRangeElementArrayAPPLE = (GLEEPFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glDrawRangeElementArrayAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiDrawElementArrayAPPLE = (GLEEPFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glMultiDrawElementArrayAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiDrawRangeElementArrayAPPLE = (GLEEPFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) __GLeeGetProcAddress("glMultiDrawRangeElementArrayAPPLE"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_APPLE_fence(void) { GLint nLinked=0; #ifdef __GLEE_GL_APPLE_fence if ((GLeeFuncPtr_glGenFencesAPPLE = (GLEEPFNGLGENFENCESAPPLEPROC) __GLeeGetProcAddress("glGenFencesAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteFencesAPPLE = (GLEEPFNGLDELETEFENCESAPPLEPROC) __GLeeGetProcAddress("glDeleteFencesAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glSetFenceAPPLE = (GLEEPFNGLSETFENCEAPPLEPROC) __GLeeGetProcAddress("glSetFenceAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glIsFenceAPPLE = (GLEEPFNGLISFENCEAPPLEPROC) __GLeeGetProcAddress("glIsFenceAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glTestFenceAPPLE = (GLEEPFNGLTESTFENCEAPPLEPROC) __GLeeGetProcAddress("glTestFenceAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glFinishFenceAPPLE = (GLEEPFNGLFINISHFENCEAPPLEPROC) __GLeeGetProcAddress("glFinishFenceAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glTestObjectAPPLE = (GLEEPFNGLTESTOBJECTAPPLEPROC) __GLeeGetProcAddress("glTestObjectAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glFinishObjectAPPLE = (GLEEPFNGLFINISHOBJECTAPPLEPROC) __GLeeGetProcAddress("glFinishObjectAPPLE"))!=0) nLinked++; #endif if (nLinked==8) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_APPLE_vertex_array_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_APPLE_vertex_array_object if ((GLeeFuncPtr_glBindVertexArrayAPPLE = (GLEEPFNGLBINDVERTEXARRAYAPPLEPROC) __GLeeGetProcAddress("glBindVertexArrayAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteVertexArraysAPPLE = (GLEEPFNGLDELETEVERTEXARRAYSAPPLEPROC) __GLeeGetProcAddress("glDeleteVertexArraysAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glGenVertexArraysAPPLE = (GLEEPFNGLGENVERTEXARRAYSAPPLEPROC) __GLeeGetProcAddress("glGenVertexArraysAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glIsVertexArrayAPPLE = (GLEEPFNGLISVERTEXARRAYAPPLEPROC) __GLeeGetProcAddress("glIsVertexArrayAPPLE"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_APPLE_vertex_array_range(void) { GLint nLinked=0; #ifdef __GLEE_GL_APPLE_vertex_array_range if ((GLeeFuncPtr_glVertexArrayRangeAPPLE = (GLEEPFNGLVERTEXARRAYRANGEAPPLEPROC) __GLeeGetProcAddress("glVertexArrayRangeAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glFlushVertexArrayRangeAPPLE = (GLEEPFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) __GLeeGetProcAddress("glFlushVertexArrayRangeAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexArrayParameteriAPPLE = (GLEEPFNGLVERTEXARRAYPARAMETERIAPPLEPROC) __GLeeGetProcAddress("glVertexArrayParameteriAPPLE"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_APPLE_ycbcr_422(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_S3_s3tc(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ATI_draw_buffers(void) { GLint nLinked=0; #ifdef __GLEE_GL_ATI_draw_buffers if ((GLeeFuncPtr_glDrawBuffersATI = (GLEEPFNGLDRAWBUFFERSATIPROC) __GLeeGetProcAddress("glDrawBuffersATI"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ATI_pixel_format_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ATI_texture_env_combine3(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ATI_texture_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_float_buffer(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_fragment_program(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_fragment_program if ((GLeeFuncPtr_glProgramNamedParameter4fNV = (GLEEPFNGLPROGRAMNAMEDPARAMETER4FNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4fNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramNamedParameter4fvNV = (GLEEPFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4fvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramNamedParameter4dNV = (GLEEPFNGLPROGRAMNAMEDPARAMETER4DNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4dNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramNamedParameter4dvNV = (GLEEPFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) __GLeeGetProcAddress("glProgramNamedParameter4dvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramNamedParameterfvNV = (GLEEPFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetProgramNamedParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramNamedParameterdvNV = (GLEEPFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) __GLeeGetProcAddress("glGetProgramNamedParameterdvNV"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_half_float(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_half_float if ((GLeeFuncPtr_glVertex2hNV = (GLEEPFNGLVERTEX2HNVPROC) __GLeeGetProcAddress("glVertex2hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex2hvNV = (GLEEPFNGLVERTEX2HVNVPROC) __GLeeGetProcAddress("glVertex2hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex3hNV = (GLEEPFNGLVERTEX3HNVPROC) __GLeeGetProcAddress("glVertex3hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex3hvNV = (GLEEPFNGLVERTEX3HVNVPROC) __GLeeGetProcAddress("glVertex3hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex4hNV = (GLEEPFNGLVERTEX4HNVPROC) __GLeeGetProcAddress("glVertex4hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex4hvNV = (GLEEPFNGLVERTEX4HVNVPROC) __GLeeGetProcAddress("glVertex4hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glNormal3hNV = (GLEEPFNGLNORMAL3HNVPROC) __GLeeGetProcAddress("glNormal3hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glNormal3hvNV = (GLEEPFNGLNORMAL3HVNVPROC) __GLeeGetProcAddress("glNormal3hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glColor3hNV = (GLEEPFNGLCOLOR3HNVPROC) __GLeeGetProcAddress("glColor3hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glColor3hvNV = (GLEEPFNGLCOLOR3HVNVPROC) __GLeeGetProcAddress("glColor3hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glColor4hNV = (GLEEPFNGLCOLOR4HNVPROC) __GLeeGetProcAddress("glColor4hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glColor4hvNV = (GLEEPFNGLCOLOR4HVNVPROC) __GLeeGetProcAddress("glColor4hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord1hNV = (GLEEPFNGLTEXCOORD1HNVPROC) __GLeeGetProcAddress("glTexCoord1hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord1hvNV = (GLEEPFNGLTEXCOORD1HVNVPROC) __GLeeGetProcAddress("glTexCoord1hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2hNV = (GLEEPFNGLTEXCOORD2HNVPROC) __GLeeGetProcAddress("glTexCoord2hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2hvNV = (GLEEPFNGLTEXCOORD2HVNVPROC) __GLeeGetProcAddress("glTexCoord2hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord3hNV = (GLEEPFNGLTEXCOORD3HNVPROC) __GLeeGetProcAddress("glTexCoord3hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord3hvNV = (GLEEPFNGLTEXCOORD3HVNVPROC) __GLeeGetProcAddress("glTexCoord3hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord4hNV = (GLEEPFNGLTEXCOORD4HNVPROC) __GLeeGetProcAddress("glTexCoord4hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord4hvNV = (GLEEPFNGLTEXCOORD4HVNVPROC) __GLeeGetProcAddress("glTexCoord4hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1hNV = (GLEEPFNGLMULTITEXCOORD1HNVPROC) __GLeeGetProcAddress("glMultiTexCoord1hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1hvNV = (GLEEPFNGLMULTITEXCOORD1HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord1hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2hNV = (GLEEPFNGLMULTITEXCOORD2HNVPROC) __GLeeGetProcAddress("glMultiTexCoord2hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2hvNV = (GLEEPFNGLMULTITEXCOORD2HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord2hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3hNV = (GLEEPFNGLMULTITEXCOORD3HNVPROC) __GLeeGetProcAddress("glMultiTexCoord3hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3hvNV = (GLEEPFNGLMULTITEXCOORD3HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord3hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4hNV = (GLEEPFNGLMULTITEXCOORD4HNVPROC) __GLeeGetProcAddress("glMultiTexCoord4hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4hvNV = (GLEEPFNGLMULTITEXCOORD4HVNVPROC) __GLeeGetProcAddress("glMultiTexCoord4hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoordhNV = (GLEEPFNGLFOGCOORDHNVPROC) __GLeeGetProcAddress("glFogCoordhNV"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoordhvNV = (GLEEPFNGLFOGCOORDHVNVPROC) __GLeeGetProcAddress("glFogCoordhvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3hNV = (GLEEPFNGLSECONDARYCOLOR3HNVPROC) __GLeeGetProcAddress("glSecondaryColor3hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColor3hvNV = (GLEEPFNGLSECONDARYCOLOR3HVNVPROC) __GLeeGetProcAddress("glSecondaryColor3hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexWeighthNV = (GLEEPFNGLVERTEXWEIGHTHNVPROC) __GLeeGetProcAddress("glVertexWeighthNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexWeighthvNV = (GLEEPFNGLVERTEXWEIGHTHVNVPROC) __GLeeGetProcAddress("glVertexWeighthvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1hNV = (GLEEPFNGLVERTEXATTRIB1HNVPROC) __GLeeGetProcAddress("glVertexAttrib1hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib1hvNV = (GLEEPFNGLVERTEXATTRIB1HVNVPROC) __GLeeGetProcAddress("glVertexAttrib1hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2hNV = (GLEEPFNGLVERTEXATTRIB2HNVPROC) __GLeeGetProcAddress("glVertexAttrib2hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib2hvNV = (GLEEPFNGLVERTEXATTRIB2HVNVPROC) __GLeeGetProcAddress("glVertexAttrib2hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3hNV = (GLEEPFNGLVERTEXATTRIB3HNVPROC) __GLeeGetProcAddress("glVertexAttrib3hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib3hvNV = (GLEEPFNGLVERTEXATTRIB3HVNVPROC) __GLeeGetProcAddress("glVertexAttrib3hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4hNV = (GLEEPFNGLVERTEXATTRIB4HNVPROC) __GLeeGetProcAddress("glVertexAttrib4hNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttrib4hvNV = (GLEEPFNGLVERTEXATTRIB4HVNVPROC) __GLeeGetProcAddress("glVertexAttrib4hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs1hvNV = (GLEEPFNGLVERTEXATTRIBS1HVNVPROC) __GLeeGetProcAddress("glVertexAttribs1hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs2hvNV = (GLEEPFNGLVERTEXATTRIBS2HVNVPROC) __GLeeGetProcAddress("glVertexAttribs2hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs3hvNV = (GLEEPFNGLVERTEXATTRIBS3HVNVPROC) __GLeeGetProcAddress("glVertexAttribs3hvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribs4hvNV = (GLEEPFNGLVERTEXATTRIBS4HVNVPROC) __GLeeGetProcAddress("glVertexAttribs4hvNV"))!=0) nLinked++; #endif if (nLinked==46) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_pixel_data_range(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_pixel_data_range if ((GLeeFuncPtr_glPixelDataRangeNV = (GLEEPFNGLPIXELDATARANGENVPROC) __GLeeGetProcAddress("glPixelDataRangeNV"))!=0) nLinked++; if ((GLeeFuncPtr_glFlushPixelDataRangeNV = (GLEEPFNGLFLUSHPIXELDATARANGENVPROC) __GLeeGetProcAddress("glFlushPixelDataRangeNV"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_primitive_restart(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_primitive_restart if ((GLeeFuncPtr_glPrimitiveRestartNV = (GLEEPFNGLPRIMITIVERESTARTNVPROC) __GLeeGetProcAddress("glPrimitiveRestartNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPrimitiveRestartIndexNV = (GLEEPFNGLPRIMITIVERESTARTINDEXNVPROC) __GLeeGetProcAddress("glPrimitiveRestartIndexNV"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_texture_expand_normal(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_vertex_program2(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_ATI_map_object_buffer(void) { GLint nLinked=0; #ifdef __GLEE_GL_ATI_map_object_buffer if ((GLeeFuncPtr_glMapObjectBufferATI = (GLEEPFNGLMAPOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glMapObjectBufferATI"))!=0) nLinked++; if ((GLeeFuncPtr_glUnmapObjectBufferATI = (GLEEPFNGLUNMAPOBJECTBUFFERATIPROC) __GLeeGetProcAddress("glUnmapObjectBufferATI"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ATI_separate_stencil(void) { GLint nLinked=0; #ifdef __GLEE_GL_ATI_separate_stencil if ((GLeeFuncPtr_glStencilOpSeparateATI = (GLEEPFNGLSTENCILOPSEPARATEATIPROC) __GLeeGetProcAddress("glStencilOpSeparateATI"))!=0) nLinked++; if ((GLeeFuncPtr_glStencilFuncSeparateATI = (GLEEPFNGLSTENCILFUNCSEPARATEATIPROC) __GLeeGetProcAddress("glStencilFuncSeparateATI"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ATI_vertex_attrib_array_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_ATI_vertex_attrib_array_object if ((GLeeFuncPtr_glVertexAttribArrayObjectATI = (GLEEPFNGLVERTEXATTRIBARRAYOBJECTATIPROC) __GLeeGetProcAddress("glVertexAttribArrayObjectATI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribArrayObjectfvATI = (GLEEPFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) __GLeeGetProcAddress("glGetVertexAttribArrayObjectfvATI"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribArrayObjectivATI = (GLEEPFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) __GLeeGetProcAddress("glGetVertexAttribArrayObjectivATI"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_OES_byte_coordinates(void) { GLint nLinked=0; #ifdef __GLEE_GL_OES_byte_coordinates if ((GLeeFuncPtr_glMultiTexCoord1bOES = (GLEEPFNGLMULTITEXCOORD1BOESPROC) __GLeeGetProcAddress("glMultiTexCoord1bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1bvOES = (GLEEPFNGLMULTITEXCOORD1BVOESPROC) __GLeeGetProcAddress("glMultiTexCoord1bvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2bOES = (GLEEPFNGLMULTITEXCOORD2BOESPROC) __GLeeGetProcAddress("glMultiTexCoord2bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2bvOES = (GLEEPFNGLMULTITEXCOORD2BVOESPROC) __GLeeGetProcAddress("glMultiTexCoord2bvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3bOES = (GLEEPFNGLMULTITEXCOORD3BOESPROC) __GLeeGetProcAddress("glMultiTexCoord3bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3bvOES = (GLEEPFNGLMULTITEXCOORD3BVOESPROC) __GLeeGetProcAddress("glMultiTexCoord3bvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4bOES = (GLEEPFNGLMULTITEXCOORD4BOESPROC) __GLeeGetProcAddress("glMultiTexCoord4bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4bvOES = (GLEEPFNGLMULTITEXCOORD4BVOESPROC) __GLeeGetProcAddress("glMultiTexCoord4bvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord1bOES = (GLEEPFNGLTEXCOORD1BOESPROC) __GLeeGetProcAddress("glTexCoord1bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord1bvOES = (GLEEPFNGLTEXCOORD1BVOESPROC) __GLeeGetProcAddress("glTexCoord1bvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2bOES = (GLEEPFNGLTEXCOORD2BOESPROC) __GLeeGetProcAddress("glTexCoord2bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2bvOES = (GLEEPFNGLTEXCOORD2BVOESPROC) __GLeeGetProcAddress("glTexCoord2bvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord3bOES = (GLEEPFNGLTEXCOORD3BOESPROC) __GLeeGetProcAddress("glTexCoord3bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord3bvOES = (GLEEPFNGLTEXCOORD3BVOESPROC) __GLeeGetProcAddress("glTexCoord3bvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord4bOES = (GLEEPFNGLTEXCOORD4BOESPROC) __GLeeGetProcAddress("glTexCoord4bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord4bvOES = (GLEEPFNGLTEXCOORD4BVOESPROC) __GLeeGetProcAddress("glTexCoord4bvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex2bOES = (GLEEPFNGLVERTEX2BOESPROC) __GLeeGetProcAddress("glVertex2bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex2bvOES = (GLEEPFNGLVERTEX2BVOESPROC) __GLeeGetProcAddress("glVertex2bvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex3bOES = (GLEEPFNGLVERTEX3BOESPROC) __GLeeGetProcAddress("glVertex3bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex3bvOES = (GLEEPFNGLVERTEX3BVOESPROC) __GLeeGetProcAddress("glVertex3bvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex4bOES = (GLEEPFNGLVERTEX4BOESPROC) __GLeeGetProcAddress("glVertex4bOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex4bvOES = (GLEEPFNGLVERTEX4BVOESPROC) __GLeeGetProcAddress("glVertex4bvOES"))!=0) nLinked++; #endif if (nLinked==22) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_OES_fixed_point(void) { GLint nLinked=0; #ifdef __GLEE_GL_OES_fixed_point if ((GLeeFuncPtr_glAccumxOES = (GLEEPFNGLACCUMXOESPROC) __GLeeGetProcAddress("glAccumxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glAlphaFuncxOES = (GLEEPFNGLALPHAFUNCXOESPROC) __GLeeGetProcAddress("glAlphaFuncxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glBitmapxOES = (GLEEPFNGLBITMAPXOESPROC) __GLeeGetProcAddress("glBitmapxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendColorxOES = (GLEEPFNGLBLENDCOLORXOESPROC) __GLeeGetProcAddress("glBlendColorxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glClearAccumxOES = (GLEEPFNGLCLEARACCUMXOESPROC) __GLeeGetProcAddress("glClearAccumxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glClearColorxOES = (GLEEPFNGLCLEARCOLORXOESPROC) __GLeeGetProcAddress("glClearColorxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glClearDepthxOES = (GLEEPFNGLCLEARDEPTHXOESPROC) __GLeeGetProcAddress("glClearDepthxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glClipPlanexOES = (GLEEPFNGLCLIPPLANEXOESPROC) __GLeeGetProcAddress("glClipPlanexOES"))!=0) nLinked++; if ((GLeeFuncPtr_glColor3xOES = (GLEEPFNGLCOLOR3XOESPROC) __GLeeGetProcAddress("glColor3xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glColor4xOES = (GLEEPFNGLCOLOR4XOESPROC) __GLeeGetProcAddress("glColor4xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glColor3xvOES = (GLEEPFNGLCOLOR3XVOESPROC) __GLeeGetProcAddress("glColor3xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glColor4xvOES = (GLEEPFNGLCOLOR4XVOESPROC) __GLeeGetProcAddress("glColor4xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionParameterxOES = (GLEEPFNGLCONVOLUTIONPARAMETERXOESPROC) __GLeeGetProcAddress("glConvolutionParameterxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glConvolutionParameterxvOES = (GLEEPFNGLCONVOLUTIONPARAMETERXVOESPROC) __GLeeGetProcAddress("glConvolutionParameterxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glDepthRangexOES = (GLEEPFNGLDEPTHRANGEXOESPROC) __GLeeGetProcAddress("glDepthRangexOES"))!=0) nLinked++; if ((GLeeFuncPtr_glEvalCoord1xOES = (GLEEPFNGLEVALCOORD1XOESPROC) __GLeeGetProcAddress("glEvalCoord1xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glEvalCoord2xOES = (GLEEPFNGLEVALCOORD2XOESPROC) __GLeeGetProcAddress("glEvalCoord2xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glEvalCoord1xvOES = (GLEEPFNGLEVALCOORD1XVOESPROC) __GLeeGetProcAddress("glEvalCoord1xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glEvalCoord2xvOES = (GLEEPFNGLEVALCOORD2XVOESPROC) __GLeeGetProcAddress("glEvalCoord2xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glFeedbackBufferxOES = (GLEEPFNGLFEEDBACKBUFFERXOESPROC) __GLeeGetProcAddress("glFeedbackBufferxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glFogxOES = (GLEEPFNGLFOGXOESPROC) __GLeeGetProcAddress("glFogxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glFogxvOES = (GLEEPFNGLFOGXVOESPROC) __GLeeGetProcAddress("glFogxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glFrustumxOES = (GLEEPFNGLFRUSTUMXOESPROC) __GLeeGetProcAddress("glFrustumxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetClipPlanexOES = (GLEEPFNGLGETCLIPPLANEXOESPROC) __GLeeGetProcAddress("glGetClipPlanexOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetConvolutionParameterxvOES = (GLEEPFNGLGETCONVOLUTIONPARAMETERXVOESPROC) __GLeeGetProcAddress("glGetConvolutionParameterxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFixedvOES = (GLEEPFNGLGETFIXEDVOESPROC) __GLeeGetProcAddress("glGetFixedvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetHistogramParameterxvOES = (GLEEPFNGLGETHISTOGRAMPARAMETERXVOESPROC) __GLeeGetProcAddress("glGetHistogramParameterxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetLightxOES = (GLEEPFNGLGETLIGHTXOESPROC) __GLeeGetProcAddress("glGetLightxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMapxvOES = (GLEEPFNGLGETMAPXVOESPROC) __GLeeGetProcAddress("glGetMapxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMaterialxOES = (GLEEPFNGLGETMATERIALXOESPROC) __GLeeGetProcAddress("glGetMaterialxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPixelMapxv = (GLEEPFNGLGETPIXELMAPXVPROC) __GLeeGetProcAddress("glGetPixelMapxv"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexEnvxvOES = (GLEEPFNGLGETTEXENVXVOESPROC) __GLeeGetProcAddress("glGetTexEnvxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexGenxvOES = (GLEEPFNGLGETTEXGENXVOESPROC) __GLeeGetProcAddress("glGetTexGenxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexLevelParameterxvOES = (GLEEPFNGLGETTEXLEVELPARAMETERXVOESPROC) __GLeeGetProcAddress("glGetTexLevelParameterxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexParameterxvOES = (GLEEPFNGLGETTEXPARAMETERXVOESPROC) __GLeeGetProcAddress("glGetTexParameterxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glIndexxOES = (GLEEPFNGLINDEXXOESPROC) __GLeeGetProcAddress("glIndexxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glIndexxvOES = (GLEEPFNGLINDEXXVOESPROC) __GLeeGetProcAddress("glIndexxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glLightModelxOES = (GLEEPFNGLLIGHTMODELXOESPROC) __GLeeGetProcAddress("glLightModelxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glLightModelxvOES = (GLEEPFNGLLIGHTMODELXVOESPROC) __GLeeGetProcAddress("glLightModelxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glLightxOES = (GLEEPFNGLLIGHTXOESPROC) __GLeeGetProcAddress("glLightxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glLightxvOES = (GLEEPFNGLLIGHTXVOESPROC) __GLeeGetProcAddress("glLightxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glLineWidthxOES = (GLEEPFNGLLINEWIDTHXOESPROC) __GLeeGetProcAddress("glLineWidthxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glLoadMatrixxOES = (GLEEPFNGLLOADMATRIXXOESPROC) __GLeeGetProcAddress("glLoadMatrixxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glLoadTransposeMatrixxOES = (GLEEPFNGLLOADTRANSPOSEMATRIXXOESPROC) __GLeeGetProcAddress("glLoadTransposeMatrixxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMap1xOES = (GLEEPFNGLMAP1XOESPROC) __GLeeGetProcAddress("glMap1xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMap2xOES = (GLEEPFNGLMAP2XOESPROC) __GLeeGetProcAddress("glMap2xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMapGrid1xOES = (GLEEPFNGLMAPGRID1XOESPROC) __GLeeGetProcAddress("glMapGrid1xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMapGrid2xOES = (GLEEPFNGLMAPGRID2XOESPROC) __GLeeGetProcAddress("glMapGrid2xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMaterialxOES = (GLEEPFNGLMATERIALXOESPROC) __GLeeGetProcAddress("glMaterialxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMaterialxvOES = (GLEEPFNGLMATERIALXVOESPROC) __GLeeGetProcAddress("glMaterialxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultMatrixxOES = (GLEEPFNGLMULTMATRIXXOESPROC) __GLeeGetProcAddress("glMultMatrixxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultTransposeMatrixxOES = (GLEEPFNGLMULTTRANSPOSEMATRIXXOESPROC) __GLeeGetProcAddress("glMultTransposeMatrixxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1xOES = (GLEEPFNGLMULTITEXCOORD1XOESPROC) __GLeeGetProcAddress("glMultiTexCoord1xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2xOES = (GLEEPFNGLMULTITEXCOORD2XOESPROC) __GLeeGetProcAddress("glMultiTexCoord2xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3xOES = (GLEEPFNGLMULTITEXCOORD3XOESPROC) __GLeeGetProcAddress("glMultiTexCoord3xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4xOES = (GLEEPFNGLMULTITEXCOORD4XOESPROC) __GLeeGetProcAddress("glMultiTexCoord4xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord1xvOES = (GLEEPFNGLMULTITEXCOORD1XVOESPROC) __GLeeGetProcAddress("glMultiTexCoord1xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord2xvOES = (GLEEPFNGLMULTITEXCOORD2XVOESPROC) __GLeeGetProcAddress("glMultiTexCoord2xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord3xvOES = (GLEEPFNGLMULTITEXCOORD3XVOESPROC) __GLeeGetProcAddress("glMultiTexCoord3xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoord4xvOES = (GLEEPFNGLMULTITEXCOORD4XVOESPROC) __GLeeGetProcAddress("glMultiTexCoord4xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glNormal3xOES = (GLEEPFNGLNORMAL3XOESPROC) __GLeeGetProcAddress("glNormal3xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glNormal3xvOES = (GLEEPFNGLNORMAL3XVOESPROC) __GLeeGetProcAddress("glNormal3xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glOrthoxOES = (GLEEPFNGLORTHOXOESPROC) __GLeeGetProcAddress("glOrthoxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glPassThroughxOES = (GLEEPFNGLPASSTHROUGHXOESPROC) __GLeeGetProcAddress("glPassThroughxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glPixelMapx = (GLEEPFNGLPIXELMAPXPROC) __GLeeGetProcAddress("glPixelMapx"))!=0) nLinked++; if ((GLeeFuncPtr_glPixelStorex = (GLEEPFNGLPIXELSTOREXPROC) __GLeeGetProcAddress("glPixelStorex"))!=0) nLinked++; if ((GLeeFuncPtr_glPixelTransferxOES = (GLEEPFNGLPIXELTRANSFERXOESPROC) __GLeeGetProcAddress("glPixelTransferxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glPixelZoomxOES = (GLEEPFNGLPIXELZOOMXOESPROC) __GLeeGetProcAddress("glPixelZoomxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glPointParameterxvOES = (GLEEPFNGLPOINTPARAMETERXVOESPROC) __GLeeGetProcAddress("glPointParameterxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glPointSizexOES = (GLEEPFNGLPOINTSIZEXOESPROC) __GLeeGetProcAddress("glPointSizexOES"))!=0) nLinked++; if ((GLeeFuncPtr_glPolygonOffsetxOES = (GLEEPFNGLPOLYGONOFFSETXOESPROC) __GLeeGetProcAddress("glPolygonOffsetxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glPrioritizeTexturesxOES = (GLEEPFNGLPRIORITIZETEXTURESXOESPROC) __GLeeGetProcAddress("glPrioritizeTexturesxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glRasterPos2xOES = (GLEEPFNGLRASTERPOS2XOESPROC) __GLeeGetProcAddress("glRasterPos2xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glRasterPos3xOES = (GLEEPFNGLRASTERPOS3XOESPROC) __GLeeGetProcAddress("glRasterPos3xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glRasterPos4xOES = (GLEEPFNGLRASTERPOS4XOESPROC) __GLeeGetProcAddress("glRasterPos4xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glRasterPos2xvOES = (GLEEPFNGLRASTERPOS2XVOESPROC) __GLeeGetProcAddress("glRasterPos2xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glRasterPos3xvOES = (GLEEPFNGLRASTERPOS3XVOESPROC) __GLeeGetProcAddress("glRasterPos3xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glRasterPos4xvOES = (GLEEPFNGLRASTERPOS4XVOESPROC) __GLeeGetProcAddress("glRasterPos4xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glRectxOES = (GLEEPFNGLRECTXOESPROC) __GLeeGetProcAddress("glRectxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glRectxvOES = (GLEEPFNGLRECTXVOESPROC) __GLeeGetProcAddress("glRectxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glRotatexOES = (GLEEPFNGLROTATEXOESPROC) __GLeeGetProcAddress("glRotatexOES"))!=0) nLinked++; if ((GLeeFuncPtr_glSampleCoverageOES = (GLEEPFNGLSAMPLECOVERAGEOESPROC) __GLeeGetProcAddress("glSampleCoverageOES"))!=0) nLinked++; if ((GLeeFuncPtr_glScalexOES = (GLEEPFNGLSCALEXOESPROC) __GLeeGetProcAddress("glScalexOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord1xOES = (GLEEPFNGLTEXCOORD1XOESPROC) __GLeeGetProcAddress("glTexCoord1xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2xOES = (GLEEPFNGLTEXCOORD2XOESPROC) __GLeeGetProcAddress("glTexCoord2xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord3xOES = (GLEEPFNGLTEXCOORD3XOESPROC) __GLeeGetProcAddress("glTexCoord3xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord4xOES = (GLEEPFNGLTEXCOORD4XOESPROC) __GLeeGetProcAddress("glTexCoord4xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord1xvOES = (GLEEPFNGLTEXCOORD1XVOESPROC) __GLeeGetProcAddress("glTexCoord1xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord2xvOES = (GLEEPFNGLTEXCOORD2XVOESPROC) __GLeeGetProcAddress("glTexCoord2xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord3xvOES = (GLEEPFNGLTEXCOORD3XVOESPROC) __GLeeGetProcAddress("glTexCoord3xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoord4xvOES = (GLEEPFNGLTEXCOORD4XVOESPROC) __GLeeGetProcAddress("glTexCoord4xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexEnvxOES = (GLEEPFNGLTEXENVXOESPROC) __GLeeGetProcAddress("glTexEnvxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexEnvxvOES = (GLEEPFNGLTEXENVXVOESPROC) __GLeeGetProcAddress("glTexEnvxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexGenxOES = (GLEEPFNGLTEXGENXOESPROC) __GLeeGetProcAddress("glTexGenxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexGenxvOES = (GLEEPFNGLTEXGENXVOESPROC) __GLeeGetProcAddress("glTexGenxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexParameterxOES = (GLEEPFNGLTEXPARAMETERXOESPROC) __GLeeGetProcAddress("glTexParameterxOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTexParameterxvOES = (GLEEPFNGLTEXPARAMETERXVOESPROC) __GLeeGetProcAddress("glTexParameterxvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glTranslatexOES = (GLEEPFNGLTRANSLATEXOESPROC) __GLeeGetProcAddress("glTranslatexOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex2xOES = (GLEEPFNGLVERTEX2XOESPROC) __GLeeGetProcAddress("glVertex2xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex3xOES = (GLEEPFNGLVERTEX3XOESPROC) __GLeeGetProcAddress("glVertex3xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex4xOES = (GLEEPFNGLVERTEX4XOESPROC) __GLeeGetProcAddress("glVertex4xOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex2xvOES = (GLEEPFNGLVERTEX2XVOESPROC) __GLeeGetProcAddress("glVertex2xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex3xvOES = (GLEEPFNGLVERTEX3XVOESPROC) __GLeeGetProcAddress("glVertex3xvOES"))!=0) nLinked++; if ((GLeeFuncPtr_glVertex4xvOES = (GLEEPFNGLVERTEX4XVOESPROC) __GLeeGetProcAddress("glVertex4xvOES"))!=0) nLinked++; #endif if (nLinked==104) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_OES_single_precision(void) { GLint nLinked=0; #ifdef __GLEE_GL_OES_single_precision if ((GLeeFuncPtr_glDepthRangefOES = (GLEEPFNGLDEPTHRANGEFOESPROC) __GLeeGetProcAddress("glDepthRangefOES"))!=0) nLinked++; if ((GLeeFuncPtr_glFrustumfOES = (GLEEPFNGLFRUSTUMFOESPROC) __GLeeGetProcAddress("glFrustumfOES"))!=0) nLinked++; if ((GLeeFuncPtr_glOrthofOES = (GLEEPFNGLORTHOFOESPROC) __GLeeGetProcAddress("glOrthofOES"))!=0) nLinked++; if ((GLeeFuncPtr_glClipPlanefOES = (GLEEPFNGLCLIPPLANEFOESPROC) __GLeeGetProcAddress("glClipPlanefOES"))!=0) nLinked++; if ((GLeeFuncPtr_glClearDepthfOES = (GLEEPFNGLCLEARDEPTHFOESPROC) __GLeeGetProcAddress("glClearDepthfOES"))!=0) nLinked++; if ((GLeeFuncPtr_glGetClipPlanefOES = (GLEEPFNGLGETCLIPPLANEFOESPROC) __GLeeGetProcAddress("glGetClipPlanefOES"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_OES_compressed_paletted_texture(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_OES_read_format(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_OES_query_matrix(void) { GLint nLinked=0; #ifdef __GLEE_GL_OES_query_matrix if ((GLeeFuncPtr_glQueryMatrixxOES = (GLEEPFNGLQUERYMATRIXXOESPROC) __GLeeGetProcAddress("glQueryMatrixxOES"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_depth_bounds_test(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_depth_bounds_test if ((GLeeFuncPtr_glDepthBoundsEXT = (GLEEPFNGLDEPTHBOUNDSEXTPROC) __GLeeGetProcAddress("glDepthBoundsEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_texture_mirror_clamp(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_blend_equation_separate(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_blend_equation_separate if ((GLeeFuncPtr_glBlendEquationSeparateEXT = (GLEEPFNGLBLENDEQUATIONSEPARATEEXTPROC) __GLeeGetProcAddress("glBlendEquationSeparateEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_MESA_pack_invert(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_MESA_ycbcr_texture(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_pixel_buffer_object(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_fragment_program_option(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_fragment_program2(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_vertex_program2_option(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_vertex_program3(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_framebuffer_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_framebuffer_object if ((GLeeFuncPtr_glIsRenderbufferEXT = (GLEEPFNGLISRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glIsRenderbufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindRenderbufferEXT = (GLEEPFNGLBINDRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glBindRenderbufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteRenderbuffersEXT = (GLEEPFNGLDELETERENDERBUFFERSEXTPROC) __GLeeGetProcAddress("glDeleteRenderbuffersEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGenRenderbuffersEXT = (GLEEPFNGLGENRENDERBUFFERSEXTPROC) __GLeeGetProcAddress("glGenRenderbuffersEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glRenderbufferStorageEXT = (GLEEPFNGLRENDERBUFFERSTORAGEEXTPROC) __GLeeGetProcAddress("glRenderbufferStorageEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetRenderbufferParameterivEXT = (GLEEPFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetRenderbufferParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glIsFramebufferEXT = (GLEEPFNGLISFRAMEBUFFEREXTPROC) __GLeeGetProcAddress("glIsFramebufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindFramebufferEXT = (GLEEPFNGLBINDFRAMEBUFFEREXTPROC) __GLeeGetProcAddress("glBindFramebufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteFramebuffersEXT = (GLEEPFNGLDELETEFRAMEBUFFERSEXTPROC) __GLeeGetProcAddress("glDeleteFramebuffersEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGenFramebuffersEXT = (GLEEPFNGLGENFRAMEBUFFERSEXTPROC) __GLeeGetProcAddress("glGenFramebuffersEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCheckFramebufferStatusEXT = (GLEEPFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) __GLeeGetProcAddress("glCheckFramebufferStatusEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTexture1DEXT = (GLEEPFNGLFRAMEBUFFERTEXTURE1DEXTPROC) __GLeeGetProcAddress("glFramebufferTexture1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTexture2DEXT = (GLEEPFNGLFRAMEBUFFERTEXTURE2DEXTPROC) __GLeeGetProcAddress("glFramebufferTexture2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferTexture3DEXT = (GLEEPFNGLFRAMEBUFFERTEXTURE3DEXTPROC) __GLeeGetProcAddress("glFramebufferTexture3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferRenderbufferEXT = (GLEEPFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glFramebufferRenderbufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFramebufferAttachmentParameterivEXT = (GLEEPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetFramebufferAttachmentParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGenerateMipmapEXT = (GLEEPFNGLGENERATEMIPMAPEXTPROC) __GLeeGetProcAddress("glGenerateMipmapEXT"))!=0) nLinked++; #endif if (nLinked==17) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_GREMEDY_string_marker(void) { GLint nLinked=0; #ifdef __GLEE_GL_GREMEDY_string_marker if ((GLeeFuncPtr_glStringMarkerGREMEDY = (GLEEPFNGLSTRINGMARKERGREMEDYPROC) __GLeeGetProcAddress("glStringMarkerGREMEDY"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_packed_depth_stencil(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_stencil_clear_tag(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_stencil_clear_tag if ((GLeeFuncPtr_glStencilClearTagEXT = (GLEEPFNGLSTENCILCLEARTAGEXTPROC) __GLeeGetProcAddress("glStencilClearTagEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_texture_sRGB(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_framebuffer_blit(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_framebuffer_blit if ((GLeeFuncPtr_glBlitFramebufferEXT = (GLEEPFNGLBLITFRAMEBUFFEREXTPROC) __GLeeGetProcAddress("glBlitFramebufferEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_framebuffer_multisample(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_framebuffer_multisample if ((GLeeFuncPtr_glRenderbufferStorageMultisampleEXT = (GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) __GLeeGetProcAddress("glRenderbufferStorageMultisampleEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_MESAX_texture_stack(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_timer_query(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_timer_query if ((GLeeFuncPtr_glGetQueryObjecti64vEXT = (GLEEPFNGLGETQUERYOBJECTI64VEXTPROC) __GLeeGetProcAddress("glGetQueryObjecti64vEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetQueryObjectui64vEXT = (GLEEPFNGLGETQUERYOBJECTUI64VEXTPROC) __GLeeGetProcAddress("glGetQueryObjectui64vEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_gpu_program_parameters(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_gpu_program_parameters if ((GLeeFuncPtr_glProgramEnvParameters4fvEXT = (GLEEPFNGLPROGRAMENVPARAMETERS4FVEXTPROC) __GLeeGetProcAddress("glProgramEnvParameters4fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramLocalParameters4fvEXT = (GLEEPFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) __GLeeGetProcAddress("glProgramLocalParameters4fvEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_APPLE_flush_buffer_range(void) { GLint nLinked=0; #ifdef __GLEE_GL_APPLE_flush_buffer_range if ((GLeeFuncPtr_glBufferParameteriAPPLE = (GLEEPFNGLBUFFERPARAMETERIAPPLEPROC) __GLeeGetProcAddress("glBufferParameteriAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glFlushMappedBufferRangeAPPLE = (GLEEPFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) __GLeeGetProcAddress("glFlushMappedBufferRangeAPPLE"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_gpu_shader4(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_gpu_shader4 if ((GLeeFuncPtr_glGetUniformuivEXT = (GLEEPFNGLGETUNIFORMUIVEXTPROC) __GLeeGetProcAddress("glGetUniformuivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindFragDataLocationEXT = (GLEEPFNGLBINDFRAGDATALOCATIONEXTPROC) __GLeeGetProcAddress("glBindFragDataLocationEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFragDataLocationEXT = (GLEEPFNGLGETFRAGDATALOCATIONEXTPROC) __GLeeGetProcAddress("glGetFragDataLocationEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1uiEXT = (GLEEPFNGLUNIFORM1UIEXTPROC) __GLeeGetProcAddress("glUniform1uiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2uiEXT = (GLEEPFNGLUNIFORM2UIEXTPROC) __GLeeGetProcAddress("glUniform2uiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3uiEXT = (GLEEPFNGLUNIFORM3UIEXTPROC) __GLeeGetProcAddress("glUniform3uiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4uiEXT = (GLEEPFNGLUNIFORM4UIEXTPROC) __GLeeGetProcAddress("glUniform4uiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1uivEXT = (GLEEPFNGLUNIFORM1UIVEXTPROC) __GLeeGetProcAddress("glUniform1uivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2uivEXT = (GLEEPFNGLUNIFORM2UIVEXTPROC) __GLeeGetProcAddress("glUniform2uivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3uivEXT = (GLEEPFNGLUNIFORM3UIVEXTPROC) __GLeeGetProcAddress("glUniform3uivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4uivEXT = (GLEEPFNGLUNIFORM4UIVEXTPROC) __GLeeGetProcAddress("glUniform4uivEXT"))!=0) nLinked++; #endif if (nLinked==11) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_draw_instanced(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_draw_instanced if ((GLeeFuncPtr_glDrawArraysInstancedEXT = (GLEEPFNGLDRAWARRAYSINSTANCEDEXTPROC) __GLeeGetProcAddress("glDrawArraysInstancedEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawElementsInstancedEXT = (GLEEPFNGLDRAWELEMENTSINSTANCEDEXTPROC) __GLeeGetProcAddress("glDrawElementsInstancedEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_packed_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_array(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_buffer_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_texture_buffer_object if ((GLeeFuncPtr_glTexBufferEXT = (GLEEPFNGLTEXBUFFEREXTPROC) __GLeeGetProcAddress("glTexBufferEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_texture_compression_latc(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_compression_rgtc(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_shared_exponent(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_depth_buffer_float(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_depth_buffer_float if ((GLeeFuncPtr_glDepthRangedNV = (GLEEPFNGLDEPTHRANGEDNVPROC) __GLeeGetProcAddress("glDepthRangedNV"))!=0) nLinked++; if ((GLeeFuncPtr_glClearDepthdNV = (GLEEPFNGLCLEARDEPTHDNVPROC) __GLeeGetProcAddress("glClearDepthdNV"))!=0) nLinked++; if ((GLeeFuncPtr_glDepthBoundsdNV = (GLEEPFNGLDEPTHBOUNDSDNVPROC) __GLeeGetProcAddress("glDepthBoundsdNV"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_framebuffer_multisample_coverage(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_framebuffer_multisample_coverage if ((GLeeFuncPtr_glRenderbufferStorageMultisampleCoverageNV = (GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) __GLeeGetProcAddress("glRenderbufferStorageMultisampleCoverageNV"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_framebuffer_sRGB(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_geometry_shader4(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_parameter_buffer_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_parameter_buffer_object if ((GLeeFuncPtr_glProgramBufferParametersfvNV = (GLEEPFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) __GLeeGetProcAddress("glProgramBufferParametersfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramBufferParametersIivNV = (GLEEPFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) __GLeeGetProcAddress("glProgramBufferParametersIivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramBufferParametersIuivNV = (GLEEPFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) __GLeeGetProcAddress("glProgramBufferParametersIuivNV"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_draw_buffers2(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_draw_buffers2 if ((GLeeFuncPtr_glColorMaskIndexedEXT = (GLEEPFNGLCOLORMASKINDEXEDEXTPROC) __GLeeGetProcAddress("glColorMaskIndexedEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetBooleanIndexedvEXT = (GLEEPFNGLGETBOOLEANINDEXEDVEXTPROC) __GLeeGetProcAddress("glGetBooleanIndexedvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetIntegerIndexedvEXT = (GLEEPFNGLGETINTEGERINDEXEDVEXTPROC) __GLeeGetProcAddress("glGetIntegerIndexedvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glEnableIndexedEXT = (GLEEPFNGLENABLEINDEXEDEXTPROC) __GLeeGetProcAddress("glEnableIndexedEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glDisableIndexedEXT = (GLEEPFNGLDISABLEINDEXEDEXTPROC) __GLeeGetProcAddress("glDisableIndexedEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glIsEnabledIndexedEXT = (GLEEPFNGLISENABLEDINDEXEDEXTPROC) __GLeeGetProcAddress("glIsEnabledIndexedEXT"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_transform_feedback(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_transform_feedback if ((GLeeFuncPtr_glBeginTransformFeedbackNV = (GLEEPFNGLBEGINTRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glBeginTransformFeedbackNV"))!=0) nLinked++; if ((GLeeFuncPtr_glEndTransformFeedbackNV = (GLEEPFNGLENDTRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glEndTransformFeedbackNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTransformFeedbackAttribsNV = (GLEEPFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) __GLeeGetProcAddress("glTransformFeedbackAttribsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glBindBufferRangeNV = (GLEEPFNGLBINDBUFFERRANGENVPROC) __GLeeGetProcAddress("glBindBufferRangeNV"))!=0) nLinked++; if ((GLeeFuncPtr_glBindBufferOffsetNV = (GLEEPFNGLBINDBUFFEROFFSETNVPROC) __GLeeGetProcAddress("glBindBufferOffsetNV"))!=0) nLinked++; if ((GLeeFuncPtr_glBindBufferBaseNV = (GLEEPFNGLBINDBUFFERBASENVPROC) __GLeeGetProcAddress("glBindBufferBaseNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTransformFeedbackVaryingsNV = (GLEEPFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) __GLeeGetProcAddress("glTransformFeedbackVaryingsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glActiveVaryingNV = (GLEEPFNGLACTIVEVARYINGNVPROC) __GLeeGetProcAddress("glActiveVaryingNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVaryingLocationNV = (GLEEPFNGLGETVARYINGLOCATIONNVPROC) __GLeeGetProcAddress("glGetVaryingLocationNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetActiveVaryingNV = (GLEEPFNGLGETACTIVEVARYINGNVPROC) __GLeeGetProcAddress("glGetActiveVaryingNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTransformFeedbackVaryingNV = (GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) __GLeeGetProcAddress("glGetTransformFeedbackVaryingNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTransformFeedbackStreamAttribsNV = (GLEEPFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) __GLeeGetProcAddress("glTransformFeedbackStreamAttribsNV"))!=0) nLinked++; #endif if (nLinked==12) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_bindable_uniform(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_bindable_uniform if ((GLeeFuncPtr_glUniformBufferEXT = (GLEEPFNGLUNIFORMBUFFEREXTPROC) __GLeeGetProcAddress("glUniformBufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformBufferSizeEXT = (GLEEPFNGLGETUNIFORMBUFFERSIZEEXTPROC) __GLeeGetProcAddress("glGetUniformBufferSizeEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformOffsetEXT = (GLEEPFNGLGETUNIFORMOFFSETEXTPROC) __GLeeGetProcAddress("glGetUniformOffsetEXT"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_texture_integer(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_texture_integer if ((GLeeFuncPtr_glTexParameterIivEXT = (GLEEPFNGLTEXPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glTexParameterIivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTexParameterIuivEXT = (GLEEPFNGLTEXPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glTexParameterIuivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexParameterIivEXT = (GLEEPFNGLGETTEXPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glGetTexParameterIivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexParameterIuivEXT = (GLEEPFNGLGETTEXPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glGetTexParameterIuivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glClearColorIiEXT = (GLEEPFNGLCLEARCOLORIIEXTPROC) __GLeeGetProcAddress("glClearColorIiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glClearColorIuiEXT = (GLEEPFNGLCLEARCOLORIUIEXTPROC) __GLeeGetProcAddress("glClearColorIuiEXT"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_GREMEDY_frame_terminator(void) { GLint nLinked=0; #ifdef __GLEE_GL_GREMEDY_frame_terminator if ((GLeeFuncPtr_glFrameTerminatorGREMEDY = (GLEEPFNGLFRAMETERMINATORGREMEDYPROC) __GLeeGetProcAddress("glFrameTerminatorGREMEDY"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_conditional_render(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_conditional_render if ((GLeeFuncPtr_glBeginConditionalRenderNV = (GLEEPFNGLBEGINCONDITIONALRENDERNVPROC) __GLeeGetProcAddress("glBeginConditionalRenderNV"))!=0) nLinked++; if ((GLeeFuncPtr_glEndConditionalRenderNV = (GLEEPFNGLENDCONDITIONALRENDERNVPROC) __GLeeGetProcAddress("glEndConditionalRenderNV"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_present_video(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_present_video if ((GLeeFuncPtr_glPresentFrameKeyedNV = (GLEEPFNGLPRESENTFRAMEKEYEDNVPROC) __GLeeGetProcAddress("glPresentFrameKeyedNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPresentFrameDualFillNV = (GLEEPFNGLPRESENTFRAMEDUALFILLNVPROC) __GLeeGetProcAddress("glPresentFrameDualFillNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVideoivNV = (GLEEPFNGLGETVIDEOIVNVPROC) __GLeeGetProcAddress("glGetVideoivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVideouivNV = (GLEEPFNGLGETVIDEOUIVNVPROC) __GLeeGetProcAddress("glGetVideouivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVideoi64vNV = (GLEEPFNGLGETVIDEOI64VNVPROC) __GLeeGetProcAddress("glGetVideoi64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVideoui64vNV = (GLEEPFNGLGETVIDEOUI64VNVPROC) __GLeeGetProcAddress("glGetVideoui64vNV"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_transform_feedback(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_transform_feedback if ((GLeeFuncPtr_glBeginTransformFeedbackEXT = (GLEEPFNGLBEGINTRANSFORMFEEDBACKEXTPROC) __GLeeGetProcAddress("glBeginTransformFeedbackEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glEndTransformFeedbackEXT = (GLEEPFNGLENDTRANSFORMFEEDBACKEXTPROC) __GLeeGetProcAddress("glEndTransformFeedbackEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindBufferRangeEXT = (GLEEPFNGLBINDBUFFERRANGEEXTPROC) __GLeeGetProcAddress("glBindBufferRangeEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindBufferOffsetEXT = (GLEEPFNGLBINDBUFFEROFFSETEXTPROC) __GLeeGetProcAddress("glBindBufferOffsetEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindBufferBaseEXT = (GLEEPFNGLBINDBUFFERBASEEXTPROC) __GLeeGetProcAddress("glBindBufferBaseEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTransformFeedbackVaryingsEXT = (GLEEPFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) __GLeeGetProcAddress("glTransformFeedbackVaryingsEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTransformFeedbackVaryingEXT = (GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) __GLeeGetProcAddress("glGetTransformFeedbackVaryingEXT"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_direct_state_access(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_direct_state_access if ((GLeeFuncPtr_glClientAttribDefaultEXT = (GLEEPFNGLCLIENTATTRIBDEFAULTEXTPROC) __GLeeGetProcAddress("glClientAttribDefaultEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glPushClientAttribDefaultEXT = (GLEEPFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) __GLeeGetProcAddress("glPushClientAttribDefaultEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixLoadfEXT = (GLEEPFNGLMATRIXLOADFEXTPROC) __GLeeGetProcAddress("glMatrixLoadfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixLoaddEXT = (GLEEPFNGLMATRIXLOADDEXTPROC) __GLeeGetProcAddress("glMatrixLoaddEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixMultfEXT = (GLEEPFNGLMATRIXMULTFEXTPROC) __GLeeGetProcAddress("glMatrixMultfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixMultdEXT = (GLEEPFNGLMATRIXMULTDEXTPROC) __GLeeGetProcAddress("glMatrixMultdEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixLoadIdentityEXT = (GLEEPFNGLMATRIXLOADIDENTITYEXTPROC) __GLeeGetProcAddress("glMatrixLoadIdentityEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixRotatefEXT = (GLEEPFNGLMATRIXROTATEFEXTPROC) __GLeeGetProcAddress("glMatrixRotatefEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixRotatedEXT = (GLEEPFNGLMATRIXROTATEDEXTPROC) __GLeeGetProcAddress("glMatrixRotatedEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixScalefEXT = (GLEEPFNGLMATRIXSCALEFEXTPROC) __GLeeGetProcAddress("glMatrixScalefEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixScaledEXT = (GLEEPFNGLMATRIXSCALEDEXTPROC) __GLeeGetProcAddress("glMatrixScaledEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixTranslatefEXT = (GLEEPFNGLMATRIXTRANSLATEFEXTPROC) __GLeeGetProcAddress("glMatrixTranslatefEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixTranslatedEXT = (GLEEPFNGLMATRIXTRANSLATEDEXTPROC) __GLeeGetProcAddress("glMatrixTranslatedEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixFrustumEXT = (GLEEPFNGLMATRIXFRUSTUMEXTPROC) __GLeeGetProcAddress("glMatrixFrustumEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixOrthoEXT = (GLEEPFNGLMATRIXORTHOEXTPROC) __GLeeGetProcAddress("glMatrixOrthoEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixPopEXT = (GLEEPFNGLMATRIXPOPEXTPROC) __GLeeGetProcAddress("glMatrixPopEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixPushEXT = (GLEEPFNGLMATRIXPUSHEXTPROC) __GLeeGetProcAddress("glMatrixPushEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixLoadTransposefEXT = (GLEEPFNGLMATRIXLOADTRANSPOSEFEXTPROC) __GLeeGetProcAddress("glMatrixLoadTransposefEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixLoadTransposedEXT = (GLEEPFNGLMATRIXLOADTRANSPOSEDEXTPROC) __GLeeGetProcAddress("glMatrixLoadTransposedEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixMultTransposefEXT = (GLEEPFNGLMATRIXMULTTRANSPOSEFEXTPROC) __GLeeGetProcAddress("glMatrixMultTransposefEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMatrixMultTransposedEXT = (GLEEPFNGLMATRIXMULTTRANSPOSEDEXTPROC) __GLeeGetProcAddress("glMatrixMultTransposedEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureParameterfEXT = (GLEEPFNGLTEXTUREPARAMETERFEXTPROC) __GLeeGetProcAddress("glTextureParameterfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureParameterfvEXT = (GLEEPFNGLTEXTUREPARAMETERFVEXTPROC) __GLeeGetProcAddress("glTextureParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureParameteriEXT = (GLEEPFNGLTEXTUREPARAMETERIEXTPROC) __GLeeGetProcAddress("glTextureParameteriEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureParameterivEXT = (GLEEPFNGLTEXTUREPARAMETERIVEXTPROC) __GLeeGetProcAddress("glTextureParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureImage1DEXT = (GLEEPFNGLTEXTUREIMAGE1DEXTPROC) __GLeeGetProcAddress("glTextureImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureImage2DEXT = (GLEEPFNGLTEXTUREIMAGE2DEXTPROC) __GLeeGetProcAddress("glTextureImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureSubImage1DEXT = (GLEEPFNGLTEXTURESUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glTextureSubImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureSubImage2DEXT = (GLEEPFNGLTEXTURESUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glTextureSubImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyTextureImage1DEXT = (GLEEPFNGLCOPYTEXTUREIMAGE1DEXTPROC) __GLeeGetProcAddress("glCopyTextureImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyTextureImage2DEXT = (GLEEPFNGLCOPYTEXTUREIMAGE2DEXTPROC) __GLeeGetProcAddress("glCopyTextureImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyTextureSubImage1DEXT = (GLEEPFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glCopyTextureSubImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyTextureSubImage2DEXT = (GLEEPFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glCopyTextureSubImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTextureImageEXT = (GLEEPFNGLGETTEXTUREIMAGEEXTPROC) __GLeeGetProcAddress("glGetTextureImageEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTextureParameterfvEXT = (GLEEPFNGLGETTEXTUREPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetTextureParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTextureParameterivEXT = (GLEEPFNGLGETTEXTUREPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetTextureParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTextureLevelParameterfvEXT = (GLEEPFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetTextureLevelParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTextureLevelParameterivEXT = (GLEEPFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetTextureLevelParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureImage3DEXT = (GLEEPFNGLTEXTUREIMAGE3DEXTPROC) __GLeeGetProcAddress("glTextureImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureSubImage3DEXT = (GLEEPFNGLTEXTURESUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glTextureSubImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyTextureSubImage3DEXT = (GLEEPFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glCopyTextureSubImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexParameterfEXT = (GLEEPFNGLMULTITEXPARAMETERFEXTPROC) __GLeeGetProcAddress("glMultiTexParameterfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexParameterfvEXT = (GLEEPFNGLMULTITEXPARAMETERFVEXTPROC) __GLeeGetProcAddress("glMultiTexParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexParameteriEXT = (GLEEPFNGLMULTITEXPARAMETERIEXTPROC) __GLeeGetProcAddress("glMultiTexParameteriEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexParameterivEXT = (GLEEPFNGLMULTITEXPARAMETERIVEXTPROC) __GLeeGetProcAddress("glMultiTexParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexImage1DEXT = (GLEEPFNGLMULTITEXIMAGE1DEXTPROC) __GLeeGetProcAddress("glMultiTexImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexImage2DEXT = (GLEEPFNGLMULTITEXIMAGE2DEXTPROC) __GLeeGetProcAddress("glMultiTexImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexSubImage1DEXT = (GLEEPFNGLMULTITEXSUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glMultiTexSubImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexSubImage2DEXT = (GLEEPFNGLMULTITEXSUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glMultiTexSubImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyMultiTexImage1DEXT = (GLEEPFNGLCOPYMULTITEXIMAGE1DEXTPROC) __GLeeGetProcAddress("glCopyMultiTexImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyMultiTexImage2DEXT = (GLEEPFNGLCOPYMULTITEXIMAGE2DEXTPROC) __GLeeGetProcAddress("glCopyMultiTexImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyMultiTexSubImage1DEXT = (GLEEPFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glCopyMultiTexSubImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyMultiTexSubImage2DEXT = (GLEEPFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glCopyMultiTexSubImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexImageEXT = (GLEEPFNGLGETMULTITEXIMAGEEXTPROC) __GLeeGetProcAddress("glGetMultiTexImageEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexParameterfvEXT = (GLEEPFNGLGETMULTITEXPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetMultiTexParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexParameterivEXT = (GLEEPFNGLGETMULTITEXPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetMultiTexParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexLevelParameterfvEXT = (GLEEPFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetMultiTexLevelParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexLevelParameterivEXT = (GLEEPFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetMultiTexLevelParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexImage3DEXT = (GLEEPFNGLMULTITEXIMAGE3DEXTPROC) __GLeeGetProcAddress("glMultiTexImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexSubImage3DEXT = (GLEEPFNGLMULTITEXSUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glMultiTexSubImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyMultiTexSubImage3DEXT = (GLEEPFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glCopyMultiTexSubImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glBindMultiTextureEXT = (GLEEPFNGLBINDMULTITEXTUREEXTPROC) __GLeeGetProcAddress("glBindMultiTextureEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glEnableClientStateIndexedEXT = (GLEEPFNGLENABLECLIENTSTATEINDEXEDEXTPROC) __GLeeGetProcAddress("glEnableClientStateIndexedEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glDisableClientStateIndexedEXT = (GLEEPFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) __GLeeGetProcAddress("glDisableClientStateIndexedEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexCoordPointerEXT = (GLEEPFNGLMULTITEXCOORDPOINTEREXTPROC) __GLeeGetProcAddress("glMultiTexCoordPointerEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexEnvfEXT = (GLEEPFNGLMULTITEXENVFEXTPROC) __GLeeGetProcAddress("glMultiTexEnvfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexEnvfvEXT = (GLEEPFNGLMULTITEXENVFVEXTPROC) __GLeeGetProcAddress("glMultiTexEnvfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexEnviEXT = (GLEEPFNGLMULTITEXENVIEXTPROC) __GLeeGetProcAddress("glMultiTexEnviEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexEnvivEXT = (GLEEPFNGLMULTITEXENVIVEXTPROC) __GLeeGetProcAddress("glMultiTexEnvivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexGendEXT = (GLEEPFNGLMULTITEXGENDEXTPROC) __GLeeGetProcAddress("glMultiTexGendEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexGendvEXT = (GLEEPFNGLMULTITEXGENDVEXTPROC) __GLeeGetProcAddress("glMultiTexGendvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexGenfEXT = (GLEEPFNGLMULTITEXGENFEXTPROC) __GLeeGetProcAddress("glMultiTexGenfEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexGenfvEXT = (GLEEPFNGLMULTITEXGENFVEXTPROC) __GLeeGetProcAddress("glMultiTexGenfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexGeniEXT = (GLEEPFNGLMULTITEXGENIEXTPROC) __GLeeGetProcAddress("glMultiTexGeniEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexGenivEXT = (GLEEPFNGLMULTITEXGENIVEXTPROC) __GLeeGetProcAddress("glMultiTexGenivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexEnvfvEXT = (GLEEPFNGLGETMULTITEXENVFVEXTPROC) __GLeeGetProcAddress("glGetMultiTexEnvfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexEnvivEXT = (GLEEPFNGLGETMULTITEXENVIVEXTPROC) __GLeeGetProcAddress("glGetMultiTexEnvivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexGendvEXT = (GLEEPFNGLGETMULTITEXGENDVEXTPROC) __GLeeGetProcAddress("glGetMultiTexGendvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexGenfvEXT = (GLEEPFNGLGETMULTITEXGENFVEXTPROC) __GLeeGetProcAddress("glGetMultiTexGenfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexGenivEXT = (GLEEPFNGLGETMULTITEXGENIVEXTPROC) __GLeeGetProcAddress("glGetMultiTexGenivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFloatIndexedvEXT = (GLEEPFNGLGETFLOATINDEXEDVEXTPROC) __GLeeGetProcAddress("glGetFloatIndexedvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetDoubleIndexedvEXT = (GLEEPFNGLGETDOUBLEINDEXEDVEXTPROC) __GLeeGetProcAddress("glGetDoubleIndexedvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPointerIndexedvEXT = (GLEEPFNGLGETPOINTERINDEXEDVEXTPROC) __GLeeGetProcAddress("glGetPointerIndexedvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTextureImage3DEXT = (GLEEPFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) __GLeeGetProcAddress("glCompressedTextureImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTextureImage2DEXT = (GLEEPFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) __GLeeGetProcAddress("glCompressedTextureImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTextureImage1DEXT = (GLEEPFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) __GLeeGetProcAddress("glCompressedTextureImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTextureSubImage3DEXT = (GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glCompressedTextureSubImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTextureSubImage2DEXT = (GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glCompressedTextureSubImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedTextureSubImage1DEXT = (GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glCompressedTextureSubImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetCompressedTextureImageEXT = (GLEEPFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) __GLeeGetProcAddress("glGetCompressedTextureImageEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedMultiTexImage3DEXT = (GLEEPFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) __GLeeGetProcAddress("glCompressedMultiTexImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedMultiTexImage2DEXT = (GLEEPFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) __GLeeGetProcAddress("glCompressedMultiTexImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedMultiTexImage1DEXT = (GLEEPFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) __GLeeGetProcAddress("glCompressedMultiTexImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedMultiTexSubImage3DEXT = (GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) __GLeeGetProcAddress("glCompressedMultiTexSubImage3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedMultiTexSubImage2DEXT = (GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) __GLeeGetProcAddress("glCompressedMultiTexSubImage2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCompressedMultiTexSubImage1DEXT = (GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) __GLeeGetProcAddress("glCompressedMultiTexSubImage1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetCompressedMultiTexImageEXT = (GLEEPFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) __GLeeGetProcAddress("glGetCompressedMultiTexImageEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramStringEXT = (GLEEPFNGLNAMEDPROGRAMSTRINGEXTPROC) __GLeeGetProcAddress("glNamedProgramStringEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParameter4dEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParameter4dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParameter4dvEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParameter4dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParameter4fEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParameter4fEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParameter4fvEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParameter4fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedProgramLocalParameterdvEXT = (GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) __GLeeGetProcAddress("glGetNamedProgramLocalParameterdvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedProgramLocalParameterfvEXT = (GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) __GLeeGetProcAddress("glGetNamedProgramLocalParameterfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedProgramivEXT = (GLEEPFNGLGETNAMEDPROGRAMIVEXTPROC) __GLeeGetProcAddress("glGetNamedProgramivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedProgramStringEXT = (GLEEPFNGLGETNAMEDPROGRAMSTRINGEXTPROC) __GLeeGetProcAddress("glGetNamedProgramStringEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParameters4fvEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParameters4fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParameterI4iEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParameterI4iEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParameterI4ivEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParameterI4ivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParametersI4ivEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParametersI4ivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParameterI4uiEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParameterI4uiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParameterI4uivEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParameterI4uivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedProgramLocalParametersI4uivEXT = (GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) __GLeeGetProcAddress("glNamedProgramLocalParametersI4uivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedProgramLocalParameterIivEXT = (GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glGetNamedProgramLocalParameterIivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedProgramLocalParameterIuivEXT = (GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glGetNamedProgramLocalParameterIuivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureParameterIivEXT = (GLEEPFNGLTEXTUREPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glTextureParameterIivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureParameterIuivEXT = (GLEEPFNGLTEXTUREPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glTextureParameterIuivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTextureParameterIivEXT = (GLEEPFNGLGETTEXTUREPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glGetTextureParameterIivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTextureParameterIuivEXT = (GLEEPFNGLGETTEXTUREPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glGetTextureParameterIuivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexParameterIivEXT = (GLEEPFNGLMULTITEXPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glMultiTexParameterIivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexParameterIuivEXT = (GLEEPFNGLMULTITEXPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glMultiTexParameterIuivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexParameterIivEXT = (GLEEPFNGLGETMULTITEXPARAMETERIIVEXTPROC) __GLeeGetProcAddress("glGetMultiTexParameterIivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetMultiTexParameterIuivEXT = (GLEEPFNGLGETMULTITEXPARAMETERIUIVEXTPROC) __GLeeGetProcAddress("glGetMultiTexParameterIuivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1fEXT = (GLEEPFNGLPROGRAMUNIFORM1FEXTPROC) __GLeeGetProcAddress("glProgramUniform1fEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2fEXT = (GLEEPFNGLPROGRAMUNIFORM2FEXTPROC) __GLeeGetProcAddress("glProgramUniform2fEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3fEXT = (GLEEPFNGLPROGRAMUNIFORM3FEXTPROC) __GLeeGetProcAddress("glProgramUniform3fEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4fEXT = (GLEEPFNGLPROGRAMUNIFORM4FEXTPROC) __GLeeGetProcAddress("glProgramUniform4fEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1iEXT = (GLEEPFNGLPROGRAMUNIFORM1IEXTPROC) __GLeeGetProcAddress("glProgramUniform1iEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2iEXT = (GLEEPFNGLPROGRAMUNIFORM2IEXTPROC) __GLeeGetProcAddress("glProgramUniform2iEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3iEXT = (GLEEPFNGLPROGRAMUNIFORM3IEXTPROC) __GLeeGetProcAddress("glProgramUniform3iEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4iEXT = (GLEEPFNGLPROGRAMUNIFORM4IEXTPROC) __GLeeGetProcAddress("glProgramUniform4iEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1fvEXT = (GLEEPFNGLPROGRAMUNIFORM1FVEXTPROC) __GLeeGetProcAddress("glProgramUniform1fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2fvEXT = (GLEEPFNGLPROGRAMUNIFORM2FVEXTPROC) __GLeeGetProcAddress("glProgramUniform2fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3fvEXT = (GLEEPFNGLPROGRAMUNIFORM3FVEXTPROC) __GLeeGetProcAddress("glProgramUniform3fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4fvEXT = (GLEEPFNGLPROGRAMUNIFORM4FVEXTPROC) __GLeeGetProcAddress("glProgramUniform4fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1ivEXT = (GLEEPFNGLPROGRAMUNIFORM1IVEXTPROC) __GLeeGetProcAddress("glProgramUniform1ivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2ivEXT = (GLEEPFNGLPROGRAMUNIFORM2IVEXTPROC) __GLeeGetProcAddress("glProgramUniform2ivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3ivEXT = (GLEEPFNGLPROGRAMUNIFORM3IVEXTPROC) __GLeeGetProcAddress("glProgramUniform3ivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4ivEXT = (GLEEPFNGLPROGRAMUNIFORM4IVEXTPROC) __GLeeGetProcAddress("glProgramUniform4ivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2fvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix2fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3fvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix3fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4fvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix4fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2x3fvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix2x3fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3x2fvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix3x2fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2x4fvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix2x4fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4x2fvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix4x2fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3x4fvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix3x4fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4x3fvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix4x3fvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1uiEXT = (GLEEPFNGLPROGRAMUNIFORM1UIEXTPROC) __GLeeGetProcAddress("glProgramUniform1uiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2uiEXT = (GLEEPFNGLPROGRAMUNIFORM2UIEXTPROC) __GLeeGetProcAddress("glProgramUniform2uiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3uiEXT = (GLEEPFNGLPROGRAMUNIFORM3UIEXTPROC) __GLeeGetProcAddress("glProgramUniform3uiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4uiEXT = (GLEEPFNGLPROGRAMUNIFORM4UIEXTPROC) __GLeeGetProcAddress("glProgramUniform4uiEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1uivEXT = (GLEEPFNGLPROGRAMUNIFORM1UIVEXTPROC) __GLeeGetProcAddress("glProgramUniform1uivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2uivEXT = (GLEEPFNGLPROGRAMUNIFORM2UIVEXTPROC) __GLeeGetProcAddress("glProgramUniform2uivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3uivEXT = (GLEEPFNGLPROGRAMUNIFORM3UIVEXTPROC) __GLeeGetProcAddress("glProgramUniform3uivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4uivEXT = (GLEEPFNGLPROGRAMUNIFORM4UIVEXTPROC) __GLeeGetProcAddress("glProgramUniform4uivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedBufferDataEXT = (GLEEPFNGLNAMEDBUFFERDATAEXTPROC) __GLeeGetProcAddress("glNamedBufferDataEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedBufferSubDataEXT = (GLEEPFNGLNAMEDBUFFERSUBDATAEXTPROC) __GLeeGetProcAddress("glNamedBufferSubDataEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMapNamedBufferEXT = (GLEEPFNGLMAPNAMEDBUFFEREXTPROC) __GLeeGetProcAddress("glMapNamedBufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glUnmapNamedBufferEXT = (GLEEPFNGLUNMAPNAMEDBUFFEREXTPROC) __GLeeGetProcAddress("glUnmapNamedBufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMapNamedBufferRangeEXT = (GLEEPFNGLMAPNAMEDBUFFERRANGEEXTPROC) __GLeeGetProcAddress("glMapNamedBufferRangeEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFlushMappedNamedBufferRangeEXT = (GLEEPFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) __GLeeGetProcAddress("glFlushMappedNamedBufferRangeEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedCopyBufferSubDataEXT = (GLEEPFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) __GLeeGetProcAddress("glNamedCopyBufferSubDataEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedBufferParameterivEXT = (GLEEPFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetNamedBufferParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedBufferPointervEXT = (GLEEPFNGLGETNAMEDBUFFERPOINTERVEXTPROC) __GLeeGetProcAddress("glGetNamedBufferPointervEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedBufferSubDataEXT = (GLEEPFNGLGETNAMEDBUFFERSUBDATAEXTPROC) __GLeeGetProcAddress("glGetNamedBufferSubDataEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureBufferEXT = (GLEEPFNGLTEXTUREBUFFEREXTPROC) __GLeeGetProcAddress("glTextureBufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexBufferEXT = (GLEEPFNGLMULTITEXBUFFEREXTPROC) __GLeeGetProcAddress("glMultiTexBufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedRenderbufferStorageEXT = (GLEEPFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) __GLeeGetProcAddress("glNamedRenderbufferStorageEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedRenderbufferParameterivEXT = (GLEEPFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetNamedRenderbufferParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCheckNamedFramebufferStatusEXT = (GLEEPFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) __GLeeGetProcAddress("glCheckNamedFramebufferStatusEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedFramebufferTexture1DEXT = (GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) __GLeeGetProcAddress("glNamedFramebufferTexture1DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedFramebufferTexture2DEXT = (GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) __GLeeGetProcAddress("glNamedFramebufferTexture2DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedFramebufferTexture3DEXT = (GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) __GLeeGetProcAddress("glNamedFramebufferTexture3DEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedFramebufferRenderbufferEXT = (GLEEPFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glNamedFramebufferRenderbufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedFramebufferAttachmentParameterivEXT = (GLEEPFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetNamedFramebufferAttachmentParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGenerateTextureMipmapEXT = (GLEEPFNGLGENERATETEXTUREMIPMAPEXTPROC) __GLeeGetProcAddress("glGenerateTextureMipmapEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGenerateMultiTexMipmapEXT = (GLEEPFNGLGENERATEMULTITEXMIPMAPEXTPROC) __GLeeGetProcAddress("glGenerateMultiTexMipmapEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferDrawBufferEXT = (GLEEPFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) __GLeeGetProcAddress("glFramebufferDrawBufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferDrawBuffersEXT = (GLEEPFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) __GLeeGetProcAddress("glFramebufferDrawBuffersEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glFramebufferReadBufferEXT = (GLEEPFNGLFRAMEBUFFERREADBUFFEREXTPROC) __GLeeGetProcAddress("glFramebufferReadBufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetFramebufferParameterivEXT = (GLEEPFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) __GLeeGetProcAddress("glGetFramebufferParameterivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedRenderbufferStorageMultisampleEXT = (GLEEPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) __GLeeGetProcAddress("glNamedRenderbufferStorageMultisampleEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedRenderbufferStorageMultisampleCoverageEXT = (GLEEPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) __GLeeGetProcAddress("glNamedRenderbufferStorageMultisampleCoverageEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedFramebufferTextureEXT = (GLEEPFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) __GLeeGetProcAddress("glNamedFramebufferTextureEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedFramebufferTextureLayerEXT = (GLEEPFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) __GLeeGetProcAddress("glNamedFramebufferTextureLayerEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glNamedFramebufferTextureFaceEXT = (GLEEPFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) __GLeeGetProcAddress("glNamedFramebufferTextureFaceEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureRenderbufferEXT = (GLEEPFNGLTEXTURERENDERBUFFEREXTPROC) __GLeeGetProcAddress("glTextureRenderbufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiTexRenderbufferEXT = (GLEEPFNGLMULTITEXRENDERBUFFEREXTPROC) __GLeeGetProcAddress("glMultiTexRenderbufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1dEXT = (GLEEPFNGLPROGRAMUNIFORM1DEXTPROC) __GLeeGetProcAddress("glProgramUniform1dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2dEXT = (GLEEPFNGLPROGRAMUNIFORM2DEXTPROC) __GLeeGetProcAddress("glProgramUniform2dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3dEXT = (GLEEPFNGLPROGRAMUNIFORM3DEXTPROC) __GLeeGetProcAddress("glProgramUniform3dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4dEXT = (GLEEPFNGLPROGRAMUNIFORM4DEXTPROC) __GLeeGetProcAddress("glProgramUniform4dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1dvEXT = (GLEEPFNGLPROGRAMUNIFORM1DVEXTPROC) __GLeeGetProcAddress("glProgramUniform1dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2dvEXT = (GLEEPFNGLPROGRAMUNIFORM2DVEXTPROC) __GLeeGetProcAddress("glProgramUniform2dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3dvEXT = (GLEEPFNGLPROGRAMUNIFORM3DVEXTPROC) __GLeeGetProcAddress("glProgramUniform3dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4dvEXT = (GLEEPFNGLPROGRAMUNIFORM4DVEXTPROC) __GLeeGetProcAddress("glProgramUniform4dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2dvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix2dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3dvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix3dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4dvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix4dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2x3dvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix2x3dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix2x4dvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix2x4dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3x2dvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix3x2dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix3x4dvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix3x4dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4x2dvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix4x2dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformMatrix4x3dvEXT = (GLEEPFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) __GLeeGetProcAddress("glProgramUniformMatrix4x3dvEXT"))!=0) nLinked++; #endif if (nLinked==206) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_vertex_array_bgra(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_swizzle(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_explicit_multisample(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_explicit_multisample if ((GLeeFuncPtr_glGetMultisamplefvNV = (GLEEPFNGLGETMULTISAMPLEFVNVPROC) __GLeeGetProcAddress("glGetMultisamplefvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glSampleMaskIndexedNV = (GLEEPFNGLSAMPLEMASKINDEXEDNVPROC) __GLeeGetProcAddress("glSampleMaskIndexedNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexRenderbufferNV = (GLEEPFNGLTEXRENDERBUFFERNVPROC) __GLeeGetProcAddress("glTexRenderbufferNV"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_transform_feedback2(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_transform_feedback2 if ((GLeeFuncPtr_glBindTransformFeedbackNV = (GLEEPFNGLBINDTRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glBindTransformFeedbackNV"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteTransformFeedbacksNV = (GLEEPFNGLDELETETRANSFORMFEEDBACKSNVPROC) __GLeeGetProcAddress("glDeleteTransformFeedbacksNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGenTransformFeedbacksNV = (GLEEPFNGLGENTRANSFORMFEEDBACKSNVPROC) __GLeeGetProcAddress("glGenTransformFeedbacksNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsTransformFeedbackNV = (GLEEPFNGLISTRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glIsTransformFeedbackNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPauseTransformFeedbackNV = (GLEEPFNGLPAUSETRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glPauseTransformFeedbackNV"))!=0) nLinked++; if ((GLeeFuncPtr_glResumeTransformFeedbackNV = (GLEEPFNGLRESUMETRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glResumeTransformFeedbackNV"))!=0) nLinked++; if ((GLeeFuncPtr_glDrawTransformFeedbackNV = (GLEEPFNGLDRAWTRANSFORMFEEDBACKNVPROC) __GLeeGetProcAddress("glDrawTransformFeedbackNV"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_ATI_meminfo(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_performance_monitor(void) { GLint nLinked=0; #ifdef __GLEE_GL_AMD_performance_monitor if ((GLeeFuncPtr_glGetPerfMonitorGroupsAMD = (GLEEPFNGLGETPERFMONITORGROUPSAMDPROC) __GLeeGetProcAddress("glGetPerfMonitorGroupsAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPerfMonitorCountersAMD = (GLEEPFNGLGETPERFMONITORCOUNTERSAMDPROC) __GLeeGetProcAddress("glGetPerfMonitorCountersAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPerfMonitorGroupStringAMD = (GLEEPFNGLGETPERFMONITORGROUPSTRINGAMDPROC) __GLeeGetProcAddress("glGetPerfMonitorGroupStringAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPerfMonitorCounterStringAMD = (GLEEPFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) __GLeeGetProcAddress("glGetPerfMonitorCounterStringAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPerfMonitorCounterInfoAMD = (GLEEPFNGLGETPERFMONITORCOUNTERINFOAMDPROC) __GLeeGetProcAddress("glGetPerfMonitorCounterInfoAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glGenPerfMonitorsAMD = (GLEEPFNGLGENPERFMONITORSAMDPROC) __GLeeGetProcAddress("glGenPerfMonitorsAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glDeletePerfMonitorsAMD = (GLEEPFNGLDELETEPERFMONITORSAMDPROC) __GLeeGetProcAddress("glDeletePerfMonitorsAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glSelectPerfMonitorCountersAMD = (GLEEPFNGLSELECTPERFMONITORCOUNTERSAMDPROC) __GLeeGetProcAddress("glSelectPerfMonitorCountersAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glBeginPerfMonitorAMD = (GLEEPFNGLBEGINPERFMONITORAMDPROC) __GLeeGetProcAddress("glBeginPerfMonitorAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glEndPerfMonitorAMD = (GLEEPFNGLENDPERFMONITORAMDPROC) __GLeeGetProcAddress("glEndPerfMonitorAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPerfMonitorCounterDataAMD = (GLEEPFNGLGETPERFMONITORCOUNTERDATAAMDPROC) __GLeeGetProcAddress("glGetPerfMonitorCounterDataAMD"))!=0) nLinked++; #endif if (nLinked==11) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_AMD_texture_texture4(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_vertex_shader_tesselator(void) { GLint nLinked=0; #ifdef __GLEE_GL_AMD_vertex_shader_tesselator if ((GLeeFuncPtr_glTessellationFactorAMD = (GLEEPFNGLTESSELLATIONFACTORAMDPROC) __GLeeGetProcAddress("glTessellationFactorAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glTessellationModeAMD = (GLEEPFNGLTESSELLATIONMODEAMDPROC) __GLeeGetProcAddress("glTessellationModeAMD"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_provoking_vertex(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_provoking_vertex if ((GLeeFuncPtr_glProvokingVertexEXT = (GLEEPFNGLPROVOKINGVERTEXEXTPROC) __GLeeGetProcAddress("glProvokingVertexEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_texture_snorm(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_draw_buffers_blend(void) { GLint nLinked=0; #ifdef __GLEE_GL_AMD_draw_buffers_blend if ((GLeeFuncPtr_glBlendFuncIndexedAMD = (GLEEPFNGLBLENDFUNCINDEXEDAMDPROC) __GLeeGetProcAddress("glBlendFuncIndexedAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendFuncSeparateIndexedAMD = (GLEEPFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) __GLeeGetProcAddress("glBlendFuncSeparateIndexedAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendEquationIndexedAMD = (GLEEPFNGLBLENDEQUATIONINDEXEDAMDPROC) __GLeeGetProcAddress("glBlendEquationIndexedAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glBlendEquationSeparateIndexedAMD = (GLEEPFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) __GLeeGetProcAddress("glBlendEquationSeparateIndexedAMD"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_APPLE_texture_range(void) { GLint nLinked=0; #ifdef __GLEE_GL_APPLE_texture_range if ((GLeeFuncPtr_glTextureRangeAPPLE = (GLEEPFNGLTEXTURERANGEAPPLEPROC) __GLeeGetProcAddress("glTextureRangeAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTexParameterPointervAPPLE = (GLEEPFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) __GLeeGetProcAddress("glGetTexParameterPointervAPPLE"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_APPLE_float_pixels(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_APPLE_vertex_program_evaluators(void) { GLint nLinked=0; #ifdef __GLEE_GL_APPLE_vertex_program_evaluators if ((GLeeFuncPtr_glEnableVertexAttribAPPLE = (GLEEPFNGLENABLEVERTEXATTRIBAPPLEPROC) __GLeeGetProcAddress("glEnableVertexAttribAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glDisableVertexAttribAPPLE = (GLEEPFNGLDISABLEVERTEXATTRIBAPPLEPROC) __GLeeGetProcAddress("glDisableVertexAttribAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glIsVertexAttribEnabledAPPLE = (GLEEPFNGLISVERTEXATTRIBENABLEDAPPLEPROC) __GLeeGetProcAddress("glIsVertexAttribEnabledAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glMapVertexAttrib1dAPPLE = (GLEEPFNGLMAPVERTEXATTRIB1DAPPLEPROC) __GLeeGetProcAddress("glMapVertexAttrib1dAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glMapVertexAttrib1fAPPLE = (GLEEPFNGLMAPVERTEXATTRIB1FAPPLEPROC) __GLeeGetProcAddress("glMapVertexAttrib1fAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glMapVertexAttrib2dAPPLE = (GLEEPFNGLMAPVERTEXATTRIB2DAPPLEPROC) __GLeeGetProcAddress("glMapVertexAttrib2dAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glMapVertexAttrib2fAPPLE = (GLEEPFNGLMAPVERTEXATTRIB2FAPPLEPROC) __GLeeGetProcAddress("glMapVertexAttrib2fAPPLE"))!=0) nLinked++; #endif if (nLinked==7) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_APPLE_aux_depth_stencil(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_APPLE_object_purgeable(void) { GLint nLinked=0; #ifdef __GLEE_GL_APPLE_object_purgeable if ((GLeeFuncPtr_glObjectPurgeableAPPLE = (GLEEPFNGLOBJECTPURGEABLEAPPLEPROC) __GLeeGetProcAddress("glObjectPurgeableAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glObjectUnpurgeableAPPLE = (GLEEPFNGLOBJECTUNPURGEABLEAPPLEPROC) __GLeeGetProcAddress("glObjectUnpurgeableAPPLE"))!=0) nLinked++; if ((GLeeFuncPtr_glGetObjectParameterivAPPLE = (GLEEPFNGLGETOBJECTPARAMETERIVAPPLEPROC) __GLeeGetProcAddress("glGetObjectParameterivAPPLE"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_APPLE_row_bytes(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_APPLE_rgb_422(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_video_capture(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_video_capture if ((GLeeFuncPtr_glBeginVideoCaptureNV = (GLEEPFNGLBEGINVIDEOCAPTURENVPROC) __GLeeGetProcAddress("glBeginVideoCaptureNV"))!=0) nLinked++; if ((GLeeFuncPtr_glBindVideoCaptureStreamBufferNV = (GLEEPFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) __GLeeGetProcAddress("glBindVideoCaptureStreamBufferNV"))!=0) nLinked++; if ((GLeeFuncPtr_glBindVideoCaptureStreamTextureNV = (GLEEPFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) __GLeeGetProcAddress("glBindVideoCaptureStreamTextureNV"))!=0) nLinked++; if ((GLeeFuncPtr_glEndVideoCaptureNV = (GLEEPFNGLENDVIDEOCAPTURENVPROC) __GLeeGetProcAddress("glEndVideoCaptureNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVideoCaptureivNV = (GLEEPFNGLGETVIDEOCAPTUREIVNVPROC) __GLeeGetProcAddress("glGetVideoCaptureivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVideoCaptureStreamivNV = (GLEEPFNGLGETVIDEOCAPTURESTREAMIVNVPROC) __GLeeGetProcAddress("glGetVideoCaptureStreamivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVideoCaptureStreamfvNV = (GLEEPFNGLGETVIDEOCAPTURESTREAMFVNVPROC) __GLeeGetProcAddress("glGetVideoCaptureStreamfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVideoCaptureStreamdvNV = (GLEEPFNGLGETVIDEOCAPTURESTREAMDVNVPROC) __GLeeGetProcAddress("glGetVideoCaptureStreamdvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVideoCaptureNV = (GLEEPFNGLVIDEOCAPTURENVPROC) __GLeeGetProcAddress("glVideoCaptureNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVideoCaptureStreamParameterivNV = (GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) __GLeeGetProcAddress("glVideoCaptureStreamParameterivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVideoCaptureStreamParameterfvNV = (GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) __GLeeGetProcAddress("glVideoCaptureStreamParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVideoCaptureStreamParameterdvNV = (GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) __GLeeGetProcAddress("glVideoCaptureStreamParameterdvNV"))!=0) nLinked++; #endif if (nLinked==12) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_copy_image(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_copy_image if ((GLeeFuncPtr_glCopyImageSubDataNV = (GLEEPFNGLCOPYIMAGESUBDATANVPROC) __GLeeGetProcAddress("glCopyImageSubDataNV"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_separate_shader_objects(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_separate_shader_objects if ((GLeeFuncPtr_glUseShaderProgramEXT = (GLEEPFNGLUSESHADERPROGRAMEXTPROC) __GLeeGetProcAddress("glUseShaderProgramEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glActiveProgramEXT = (GLEEPFNGLACTIVEPROGRAMEXTPROC) __GLeeGetProcAddress("glActiveProgramEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glCreateShaderProgramEXT = (GLEEPFNGLCREATESHADERPROGRAMEXTPROC) __GLeeGetProcAddress("glCreateShaderProgramEXT"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_parameter_buffer_object2(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_shader_buffer_load(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_shader_buffer_load if ((GLeeFuncPtr_glMakeBufferResidentNV = (GLEEPFNGLMAKEBUFFERRESIDENTNVPROC) __GLeeGetProcAddress("glMakeBufferResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMakeBufferNonResidentNV = (GLEEPFNGLMAKEBUFFERNONRESIDENTNVPROC) __GLeeGetProcAddress("glMakeBufferNonResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsBufferResidentNV = (GLEEPFNGLISBUFFERRESIDENTNVPROC) __GLeeGetProcAddress("glIsBufferResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMakeNamedBufferResidentNV = (GLEEPFNGLMAKENAMEDBUFFERRESIDENTNVPROC) __GLeeGetProcAddress("glMakeNamedBufferResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMakeNamedBufferNonResidentNV = (GLEEPFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) __GLeeGetProcAddress("glMakeNamedBufferNonResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsNamedBufferResidentNV = (GLEEPFNGLISNAMEDBUFFERRESIDENTNVPROC) __GLeeGetProcAddress("glIsNamedBufferResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetBufferParameterui64vNV = (GLEEPFNGLGETBUFFERPARAMETERUI64VNVPROC) __GLeeGetProcAddress("glGetBufferParameterui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetNamedBufferParameterui64vNV = (GLEEPFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) __GLeeGetProcAddress("glGetNamedBufferParameterui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetIntegerui64vNV = (GLEEPFNGLGETINTEGERUI64VNVPROC) __GLeeGetProcAddress("glGetIntegerui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformui64NV = (GLEEPFNGLUNIFORMUI64NVPROC) __GLeeGetProcAddress("glUniformui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformui64vNV = (GLEEPFNGLUNIFORMUI64VNVPROC) __GLeeGetProcAddress("glUniformui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformui64vNV = (GLEEPFNGLGETUNIFORMUI64VNVPROC) __GLeeGetProcAddress("glGetUniformui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformui64NV = (GLEEPFNGLPROGRAMUNIFORMUI64NVPROC) __GLeeGetProcAddress("glProgramUniformui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformui64vNV = (GLEEPFNGLPROGRAMUNIFORMUI64VNVPROC) __GLeeGetProcAddress("glProgramUniformui64vNV"))!=0) nLinked++; #endif if (nLinked==14) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_vertex_buffer_unified_memory(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_vertex_buffer_unified_memory if ((GLeeFuncPtr_glBufferAddressRangeNV = (GLEEPFNGLBUFFERADDRESSRANGENVPROC) __GLeeGetProcAddress("glBufferAddressRangeNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexFormatNV = (GLEEPFNGLVERTEXFORMATNVPROC) __GLeeGetProcAddress("glVertexFormatNV"))!=0) nLinked++; if ((GLeeFuncPtr_glNormalFormatNV = (GLEEPFNGLNORMALFORMATNVPROC) __GLeeGetProcAddress("glNormalFormatNV"))!=0) nLinked++; if ((GLeeFuncPtr_glColorFormatNV = (GLEEPFNGLCOLORFORMATNVPROC) __GLeeGetProcAddress("glColorFormatNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIndexFormatNV = (GLEEPFNGLINDEXFORMATNVPROC) __GLeeGetProcAddress("glIndexFormatNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexCoordFormatNV = (GLEEPFNGLTEXCOORDFORMATNVPROC) __GLeeGetProcAddress("glTexCoordFormatNV"))!=0) nLinked++; if ((GLeeFuncPtr_glEdgeFlagFormatNV = (GLEEPFNGLEDGEFLAGFORMATNVPROC) __GLeeGetProcAddress("glEdgeFlagFormatNV"))!=0) nLinked++; if ((GLeeFuncPtr_glSecondaryColorFormatNV = (GLEEPFNGLSECONDARYCOLORFORMATNVPROC) __GLeeGetProcAddress("glSecondaryColorFormatNV"))!=0) nLinked++; if ((GLeeFuncPtr_glFogCoordFormatNV = (GLEEPFNGLFOGCOORDFORMATNVPROC) __GLeeGetProcAddress("glFogCoordFormatNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribFormatNV = (GLEEPFNGLVERTEXATTRIBFORMATNVPROC) __GLeeGetProcAddress("glVertexAttribFormatNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribIFormatNV = (GLEEPFNGLVERTEXATTRIBIFORMATNVPROC) __GLeeGetProcAddress("glVertexAttribIFormatNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetIntegerui64i_vNV = (GLEEPFNGLGETINTEGERUI64I_VNVPROC) __GLeeGetProcAddress("glGetIntegerui64i_vNV"))!=0) nLinked++; #endif if (nLinked==12) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_texture_barrier(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_texture_barrier if ((GLeeFuncPtr_glTextureBarrierNV = (GLEEPFNGLTEXTUREBARRIERNVPROC) __GLeeGetProcAddress("glTextureBarrierNV"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_AMD_shader_stencil_export(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_seamless_cubemap_per_texture(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_conservative_depth(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_shader_image_load_store(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_shader_image_load_store if ((GLeeFuncPtr_glBindImageTextureEXT = (GLEEPFNGLBINDIMAGETEXTUREEXTPROC) __GLeeGetProcAddress("glBindImageTextureEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glMemoryBarrierEXT = (GLEEPFNGLMEMORYBARRIEREXTPROC) __GLeeGetProcAddress("glMemoryBarrierEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_vertex_attrib_64bit(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_vertex_attrib_64bit if ((GLeeFuncPtr_glVertexAttribL1dEXT = (GLEEPFNGLVERTEXATTRIBL1DEXTPROC) __GLeeGetProcAddress("glVertexAttribL1dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL2dEXT = (GLEEPFNGLVERTEXATTRIBL2DEXTPROC) __GLeeGetProcAddress("glVertexAttribL2dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL3dEXT = (GLEEPFNGLVERTEXATTRIBL3DEXTPROC) __GLeeGetProcAddress("glVertexAttribL3dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL4dEXT = (GLEEPFNGLVERTEXATTRIBL4DEXTPROC) __GLeeGetProcAddress("glVertexAttribL4dEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL1dvEXT = (GLEEPFNGLVERTEXATTRIBL1DVEXTPROC) __GLeeGetProcAddress("glVertexAttribL1dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL2dvEXT = (GLEEPFNGLVERTEXATTRIBL2DVEXTPROC) __GLeeGetProcAddress("glVertexAttribL2dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL3dvEXT = (GLEEPFNGLVERTEXATTRIBL3DVEXTPROC) __GLeeGetProcAddress("glVertexAttribL3dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL4dvEXT = (GLEEPFNGLVERTEXATTRIBL4DVEXTPROC) __GLeeGetProcAddress("glVertexAttribL4dvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribLPointerEXT = (GLEEPFNGLVERTEXATTRIBLPOINTEREXTPROC) __GLeeGetProcAddress("glVertexAttribLPointerEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribLdvEXT = (GLEEPFNGLGETVERTEXATTRIBLDVEXTPROC) __GLeeGetProcAddress("glGetVertexAttribLdvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexArrayVertexAttribLOffsetEXT = (GLEEPFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) __GLeeGetProcAddress("glVertexArrayVertexAttribLOffsetEXT"))!=0) nLinked++; #endif if (nLinked==11) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_gpu_program5(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_gpu_program5 if ((GLeeFuncPtr_glProgramSubroutineParametersuivNV = (GLEEPFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) __GLeeGetProcAddress("glProgramSubroutineParametersuivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetProgramSubroutineParameteruivNV = (GLEEPFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) __GLeeGetProcAddress("glGetProgramSubroutineParameteruivNV"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_gpu_shader5(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_gpu_shader5 if ((GLeeFuncPtr_glUniform1i64NV = (GLEEPFNGLUNIFORM1I64NVPROC) __GLeeGetProcAddress("glUniform1i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2i64NV = (GLEEPFNGLUNIFORM2I64NVPROC) __GLeeGetProcAddress("glUniform2i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3i64NV = (GLEEPFNGLUNIFORM3I64NVPROC) __GLeeGetProcAddress("glUniform3i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4i64NV = (GLEEPFNGLUNIFORM4I64NVPROC) __GLeeGetProcAddress("glUniform4i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1i64vNV = (GLEEPFNGLUNIFORM1I64VNVPROC) __GLeeGetProcAddress("glUniform1i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2i64vNV = (GLEEPFNGLUNIFORM2I64VNVPROC) __GLeeGetProcAddress("glUniform2i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3i64vNV = (GLEEPFNGLUNIFORM3I64VNVPROC) __GLeeGetProcAddress("glUniform3i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4i64vNV = (GLEEPFNGLUNIFORM4I64VNVPROC) __GLeeGetProcAddress("glUniform4i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1ui64NV = (GLEEPFNGLUNIFORM1UI64NVPROC) __GLeeGetProcAddress("glUniform1ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2ui64NV = (GLEEPFNGLUNIFORM2UI64NVPROC) __GLeeGetProcAddress("glUniform2ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3ui64NV = (GLEEPFNGLUNIFORM3UI64NVPROC) __GLeeGetProcAddress("glUniform3ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4ui64NV = (GLEEPFNGLUNIFORM4UI64NVPROC) __GLeeGetProcAddress("glUniform4ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform1ui64vNV = (GLEEPFNGLUNIFORM1UI64VNVPROC) __GLeeGetProcAddress("glUniform1ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform2ui64vNV = (GLEEPFNGLUNIFORM2UI64VNVPROC) __GLeeGetProcAddress("glUniform2ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform3ui64vNV = (GLEEPFNGLUNIFORM3UI64VNVPROC) __GLeeGetProcAddress("glUniform3ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniform4ui64vNV = (GLEEPFNGLUNIFORM4UI64VNVPROC) __GLeeGetProcAddress("glUniform4ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetUniformi64vNV = (GLEEPFNGLGETUNIFORMI64VNVPROC) __GLeeGetProcAddress("glGetUniformi64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1i64NV = (GLEEPFNGLPROGRAMUNIFORM1I64NVPROC) __GLeeGetProcAddress("glProgramUniform1i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2i64NV = (GLEEPFNGLPROGRAMUNIFORM2I64NVPROC) __GLeeGetProcAddress("glProgramUniform2i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3i64NV = (GLEEPFNGLPROGRAMUNIFORM3I64NVPROC) __GLeeGetProcAddress("glProgramUniform3i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4i64NV = (GLEEPFNGLPROGRAMUNIFORM4I64NVPROC) __GLeeGetProcAddress("glProgramUniform4i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1i64vNV = (GLEEPFNGLPROGRAMUNIFORM1I64VNVPROC) __GLeeGetProcAddress("glProgramUniform1i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2i64vNV = (GLEEPFNGLPROGRAMUNIFORM2I64VNVPROC) __GLeeGetProcAddress("glProgramUniform2i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3i64vNV = (GLEEPFNGLPROGRAMUNIFORM3I64VNVPROC) __GLeeGetProcAddress("glProgramUniform3i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4i64vNV = (GLEEPFNGLPROGRAMUNIFORM4I64VNVPROC) __GLeeGetProcAddress("glProgramUniform4i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1ui64NV = (GLEEPFNGLPROGRAMUNIFORM1UI64NVPROC) __GLeeGetProcAddress("glProgramUniform1ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2ui64NV = (GLEEPFNGLPROGRAMUNIFORM2UI64NVPROC) __GLeeGetProcAddress("glProgramUniform2ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3ui64NV = (GLEEPFNGLPROGRAMUNIFORM3UI64NVPROC) __GLeeGetProcAddress("glProgramUniform3ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4ui64NV = (GLEEPFNGLPROGRAMUNIFORM4UI64NVPROC) __GLeeGetProcAddress("glProgramUniform4ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform1ui64vNV = (GLEEPFNGLPROGRAMUNIFORM1UI64VNVPROC) __GLeeGetProcAddress("glProgramUniform1ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform2ui64vNV = (GLEEPFNGLPROGRAMUNIFORM2UI64VNVPROC) __GLeeGetProcAddress("glProgramUniform2ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform3ui64vNV = (GLEEPFNGLPROGRAMUNIFORM3UI64VNVPROC) __GLeeGetProcAddress("glProgramUniform3ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniform4ui64vNV = (GLEEPFNGLPROGRAMUNIFORM4UI64VNVPROC) __GLeeGetProcAddress("glProgramUniform4ui64vNV"))!=0) nLinked++; #endif if (nLinked==33) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_shader_buffer_store(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_tessellation_program5(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_vertex_attrib_integer_64bit(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_vertex_attrib_integer_64bit if ((GLeeFuncPtr_glVertexAttribL1i64NV = (GLEEPFNGLVERTEXATTRIBL1I64NVPROC) __GLeeGetProcAddress("glVertexAttribL1i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL2i64NV = (GLEEPFNGLVERTEXATTRIBL2I64NVPROC) __GLeeGetProcAddress("glVertexAttribL2i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL3i64NV = (GLEEPFNGLVERTEXATTRIBL3I64NVPROC) __GLeeGetProcAddress("glVertexAttribL3i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL4i64NV = (GLEEPFNGLVERTEXATTRIBL4I64NVPROC) __GLeeGetProcAddress("glVertexAttribL4i64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL1i64vNV = (GLEEPFNGLVERTEXATTRIBL1I64VNVPROC) __GLeeGetProcAddress("glVertexAttribL1i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL2i64vNV = (GLEEPFNGLVERTEXATTRIBL2I64VNVPROC) __GLeeGetProcAddress("glVertexAttribL2i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL3i64vNV = (GLEEPFNGLVERTEXATTRIBL3I64VNVPROC) __GLeeGetProcAddress("glVertexAttribL3i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL4i64vNV = (GLEEPFNGLVERTEXATTRIBL4I64VNVPROC) __GLeeGetProcAddress("glVertexAttribL4i64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL1ui64NV = (GLEEPFNGLVERTEXATTRIBL1UI64NVPROC) __GLeeGetProcAddress("glVertexAttribL1ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL2ui64NV = (GLEEPFNGLVERTEXATTRIBL2UI64NVPROC) __GLeeGetProcAddress("glVertexAttribL2ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL3ui64NV = (GLEEPFNGLVERTEXATTRIBL3UI64NVPROC) __GLeeGetProcAddress("glVertexAttribL3ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL4ui64NV = (GLEEPFNGLVERTEXATTRIBL4UI64NVPROC) __GLeeGetProcAddress("glVertexAttribL4ui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL1ui64vNV = (GLEEPFNGLVERTEXATTRIBL1UI64VNVPROC) __GLeeGetProcAddress("glVertexAttribL1ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL2ui64vNV = (GLEEPFNGLVERTEXATTRIBL2UI64VNVPROC) __GLeeGetProcAddress("glVertexAttribL2ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL3ui64vNV = (GLEEPFNGLVERTEXATTRIBL3UI64VNVPROC) __GLeeGetProcAddress("glVertexAttribL3ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribL4ui64vNV = (GLEEPFNGLVERTEXATTRIBL4UI64VNVPROC) __GLeeGetProcAddress("glVertexAttribL4ui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribLi64vNV = (GLEEPFNGLGETVERTEXATTRIBLI64VNVPROC) __GLeeGetProcAddress("glGetVertexAttribLi64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetVertexAttribLui64vNV = (GLEEPFNGLGETVERTEXATTRIBLUI64VNVPROC) __GLeeGetProcAddress("glGetVertexAttribLui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glVertexAttribLFormatNV = (GLEEPFNGLVERTEXATTRIBLFORMATNVPROC) __GLeeGetProcAddress("glVertexAttribLFormatNV"))!=0) nLinked++; #endif if (nLinked==19) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_multisample_coverage(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_name_gen_delete(void) { GLint nLinked=0; #ifdef __GLEE_GL_AMD_name_gen_delete if ((GLeeFuncPtr_glGenNamesAMD = (GLEEPFNGLGENNAMESAMDPROC) __GLeeGetProcAddress("glGenNamesAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glDeleteNamesAMD = (GLEEPFNGLDELETENAMESAMDPROC) __GLeeGetProcAddress("glDeleteNamesAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glIsNameAMD = (GLEEPFNGLISNAMEAMDPROC) __GLeeGetProcAddress("glIsNameAMD"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_AMD_debug_output(void) { GLint nLinked=0; #ifdef __GLEE_GL_AMD_debug_output if ((GLeeFuncPtr_glDebugMessageEnableAMD = (GLEEPFNGLDEBUGMESSAGEENABLEAMDPROC) __GLeeGetProcAddress("glDebugMessageEnableAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glDebugMessageInsertAMD = (GLEEPFNGLDEBUGMESSAGEINSERTAMDPROC) __GLeeGetProcAddress("glDebugMessageInsertAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glDebugMessageCallbackAMD = (GLEEPFNGLDEBUGMESSAGECALLBACKAMDPROC) __GLeeGetProcAddress("glDebugMessageCallbackAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glGetDebugMessageLogAMD = (GLEEPFNGLGETDEBUGMESSAGELOGAMDPROC) __GLeeGetProcAddress("glGetDebugMessageLogAMD"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_AMD_transform_feedback3_lines_triangles(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_depth_clamp_separate(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_EXT_texture_sRGB_decode(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_texture_multisample(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_texture_multisample if ((GLeeFuncPtr_glTexImage2DMultisampleCoverageNV = (GLEEPFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) __GLeeGetProcAddress("glTexImage2DMultisampleCoverageNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTexImage3DMultisampleCoverageNV = (GLEEPFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) __GLeeGetProcAddress("glTexImage3DMultisampleCoverageNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureImage2DMultisampleNV = (GLEEPFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) __GLeeGetProcAddress("glTextureImage2DMultisampleNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureImage3DMultisampleNV = (GLEEPFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) __GLeeGetProcAddress("glTextureImage3DMultisampleNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureImage2DMultisampleCoverageNV = (GLEEPFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) __GLeeGetProcAddress("glTextureImage2DMultisampleCoverageNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureImage3DMultisampleCoverageNV = (GLEEPFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) __GLeeGetProcAddress("glTextureImage3DMultisampleCoverageNV"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_AMD_blend_minmax_factor(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_sample_positions(void) { GLint nLinked=0; #ifdef __GLEE_GL_AMD_sample_positions if ((GLeeFuncPtr_glSetMultisamplefvAMD = (GLEEPFNGLSETMULTISAMPLEFVAMDPROC) __GLeeGetProcAddress("glSetMultisamplefvAMD"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_x11_sync_object(void) { GLint nLinked=0; #ifdef __GLEE_GL_EXT_x11_sync_object if ((GLeeFuncPtr_glImportSyncEXT = (GLEEPFNGLIMPORTSYNCEXTPROC) __GLeeGetProcAddress("glImportSyncEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_AMD_multi_draw_indirect(void) { GLint nLinked=0; #ifdef __GLEE_GL_AMD_multi_draw_indirect if ((GLeeFuncPtr_glMultiDrawArraysIndirectAMD = (GLEEPFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) __GLeeGetProcAddress("glMultiDrawArraysIndirectAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glMultiDrawElementsIndirectAMD = (GLEEPFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) __GLeeGetProcAddress("glMultiDrawElementsIndirectAMD"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_EXT_framebuffer_multisample_blit_scaled(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_path_rendering(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_path_rendering if ((GLeeFuncPtr_glGenPathsNV = (GLEEPFNGLGENPATHSNVPROC) __GLeeGetProcAddress("glGenPathsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glDeletePathsNV = (GLEEPFNGLDELETEPATHSNVPROC) __GLeeGetProcAddress("glDeletePathsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsPathNV = (GLEEPFNGLISPATHNVPROC) __GLeeGetProcAddress("glIsPathNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathCommandsNV = (GLEEPFNGLPATHCOMMANDSNVPROC) __GLeeGetProcAddress("glPathCommandsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathCoordsNV = (GLEEPFNGLPATHCOORDSNVPROC) __GLeeGetProcAddress("glPathCoordsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathSubCommandsNV = (GLEEPFNGLPATHSUBCOMMANDSNVPROC) __GLeeGetProcAddress("glPathSubCommandsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathSubCoordsNV = (GLEEPFNGLPATHSUBCOORDSNVPROC) __GLeeGetProcAddress("glPathSubCoordsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathStringNV = (GLEEPFNGLPATHSTRINGNVPROC) __GLeeGetProcAddress("glPathStringNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathGlyphsNV = (GLEEPFNGLPATHGLYPHSNVPROC) __GLeeGetProcAddress("glPathGlyphsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathGlyphRangeNV = (GLEEPFNGLPATHGLYPHRANGENVPROC) __GLeeGetProcAddress("glPathGlyphRangeNV"))!=0) nLinked++; if ((GLeeFuncPtr_glWeightPathsNV = (GLEEPFNGLWEIGHTPATHSNVPROC) __GLeeGetProcAddress("glWeightPathsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glCopyPathNV = (GLEEPFNGLCOPYPATHNVPROC) __GLeeGetProcAddress("glCopyPathNV"))!=0) nLinked++; if ((GLeeFuncPtr_glInterpolatePathsNV = (GLEEPFNGLINTERPOLATEPATHSNVPROC) __GLeeGetProcAddress("glInterpolatePathsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glTransformPathNV = (GLEEPFNGLTRANSFORMPATHNVPROC) __GLeeGetProcAddress("glTransformPathNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathParameterivNV = (GLEEPFNGLPATHPARAMETERIVNVPROC) __GLeeGetProcAddress("glPathParameterivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathParameteriNV = (GLEEPFNGLPATHPARAMETERINVPROC) __GLeeGetProcAddress("glPathParameteriNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathParameterfvNV = (GLEEPFNGLPATHPARAMETERFVNVPROC) __GLeeGetProcAddress("glPathParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathParameterfNV = (GLEEPFNGLPATHPARAMETERFNVPROC) __GLeeGetProcAddress("glPathParameterfNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathDashArrayNV = (GLEEPFNGLPATHDASHARRAYNVPROC) __GLeeGetProcAddress("glPathDashArrayNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathStencilFuncNV = (GLEEPFNGLPATHSTENCILFUNCNVPROC) __GLeeGetProcAddress("glPathStencilFuncNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathStencilDepthOffsetNV = (GLEEPFNGLPATHSTENCILDEPTHOFFSETNVPROC) __GLeeGetProcAddress("glPathStencilDepthOffsetNV"))!=0) nLinked++; if ((GLeeFuncPtr_glStencilFillPathNV = (GLEEPFNGLSTENCILFILLPATHNVPROC) __GLeeGetProcAddress("glStencilFillPathNV"))!=0) nLinked++; if ((GLeeFuncPtr_glStencilStrokePathNV = (GLEEPFNGLSTENCILSTROKEPATHNVPROC) __GLeeGetProcAddress("glStencilStrokePathNV"))!=0) nLinked++; if ((GLeeFuncPtr_glStencilFillPathInstancedNV = (GLEEPFNGLSTENCILFILLPATHINSTANCEDNVPROC) __GLeeGetProcAddress("glStencilFillPathInstancedNV"))!=0) nLinked++; if ((GLeeFuncPtr_glStencilStrokePathInstancedNV = (GLEEPFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) __GLeeGetProcAddress("glStencilStrokePathInstancedNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathCoverDepthFuncNV = (GLEEPFNGLPATHCOVERDEPTHFUNCNVPROC) __GLeeGetProcAddress("glPathCoverDepthFuncNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathColorGenNV = (GLEEPFNGLPATHCOLORGENNVPROC) __GLeeGetProcAddress("glPathColorGenNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathTexGenNV = (GLEEPFNGLPATHTEXGENNVPROC) __GLeeGetProcAddress("glPathTexGenNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPathFogGenNV = (GLEEPFNGLPATHFOGGENNVPROC) __GLeeGetProcAddress("glPathFogGenNV"))!=0) nLinked++; if ((GLeeFuncPtr_glCoverFillPathNV = (GLEEPFNGLCOVERFILLPATHNVPROC) __GLeeGetProcAddress("glCoverFillPathNV"))!=0) nLinked++; if ((GLeeFuncPtr_glCoverStrokePathNV = (GLEEPFNGLCOVERSTROKEPATHNVPROC) __GLeeGetProcAddress("glCoverStrokePathNV"))!=0) nLinked++; if ((GLeeFuncPtr_glCoverFillPathInstancedNV = (GLEEPFNGLCOVERFILLPATHINSTANCEDNVPROC) __GLeeGetProcAddress("glCoverFillPathInstancedNV"))!=0) nLinked++; if ((GLeeFuncPtr_glCoverStrokePathInstancedNV = (GLEEPFNGLCOVERSTROKEPATHINSTANCEDNVPROC) __GLeeGetProcAddress("glCoverStrokePathInstancedNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathParameterivNV = (GLEEPFNGLGETPATHPARAMETERIVNVPROC) __GLeeGetProcAddress("glGetPathParameterivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathParameterfvNV = (GLEEPFNGLGETPATHPARAMETERFVNVPROC) __GLeeGetProcAddress("glGetPathParameterfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathCommandsNV = (GLEEPFNGLGETPATHCOMMANDSNVPROC) __GLeeGetProcAddress("glGetPathCommandsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathCoordsNV = (GLEEPFNGLGETPATHCOORDSNVPROC) __GLeeGetProcAddress("glGetPathCoordsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathDashArrayNV = (GLEEPFNGLGETPATHDASHARRAYNVPROC) __GLeeGetProcAddress("glGetPathDashArrayNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathMetricsNV = (GLEEPFNGLGETPATHMETRICSNVPROC) __GLeeGetProcAddress("glGetPathMetricsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathMetricRangeNV = (GLEEPFNGLGETPATHMETRICRANGENVPROC) __GLeeGetProcAddress("glGetPathMetricRangeNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathSpacingNV = (GLEEPFNGLGETPATHSPACINGNVPROC) __GLeeGetProcAddress("glGetPathSpacingNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathColorGenivNV = (GLEEPFNGLGETPATHCOLORGENIVNVPROC) __GLeeGetProcAddress("glGetPathColorGenivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathColorGenfvNV = (GLEEPFNGLGETPATHCOLORGENFVNVPROC) __GLeeGetProcAddress("glGetPathColorGenfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathTexGenivNV = (GLEEPFNGLGETPATHTEXGENIVNVPROC) __GLeeGetProcAddress("glGetPathTexGenivNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathTexGenfvNV = (GLEEPFNGLGETPATHTEXGENFVNVPROC) __GLeeGetProcAddress("glGetPathTexGenfvNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsPointInFillPathNV = (GLEEPFNGLISPOINTINFILLPATHNVPROC) __GLeeGetProcAddress("glIsPointInFillPathNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsPointInStrokePathNV = (GLEEPFNGLISPOINTINSTROKEPATHNVPROC) __GLeeGetProcAddress("glIsPointInStrokePathNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetPathLengthNV = (GLEEPFNGLGETPATHLENGTHNVPROC) __GLeeGetProcAddress("glGetPathLengthNV"))!=0) nLinked++; if ((GLeeFuncPtr_glPointAlongPathNV = (GLEEPFNGLPOINTALONGPATHNVPROC) __GLeeGetProcAddress("glPointAlongPathNV"))!=0) nLinked++; #endif if (nLinked==49) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_AMD_pinned_memory(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_stencil_operation_extended(void) { GLint nLinked=0; #ifdef __GLEE_GL_AMD_stencil_operation_extended if ((GLeeFuncPtr_glStencilOpValueAMD = (GLEEPFNGLSTENCILOPVALUEAMDPROC) __GLeeGetProcAddress("glStencilOpValueAMD"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_AMD_vertex_shader_viewport_index(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_vertex_shader_layer(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_bindless_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_bindless_texture if ((GLeeFuncPtr_glGetTextureHandleNV = (GLEEPFNGLGETTEXTUREHANDLENVPROC) __GLeeGetProcAddress("glGetTextureHandleNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetTextureSamplerHandleNV = (GLEEPFNGLGETTEXTURESAMPLERHANDLENVPROC) __GLeeGetProcAddress("glGetTextureSamplerHandleNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMakeTextureHandleResidentNV = (GLEEPFNGLMAKETEXTUREHANDLERESIDENTNVPROC) __GLeeGetProcAddress("glMakeTextureHandleResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMakeTextureHandleNonResidentNV = (GLEEPFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) __GLeeGetProcAddress("glMakeTextureHandleNonResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glGetImageHandleNV = (GLEEPFNGLGETIMAGEHANDLENVPROC) __GLeeGetProcAddress("glGetImageHandleNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMakeImageHandleResidentNV = (GLEEPFNGLMAKEIMAGEHANDLERESIDENTNVPROC) __GLeeGetProcAddress("glMakeImageHandleResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glMakeImageHandleNonResidentNV = (GLEEPFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) __GLeeGetProcAddress("glMakeImageHandleNonResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformHandleui64NV = (GLEEPFNGLUNIFORMHANDLEUI64NVPROC) __GLeeGetProcAddress("glUniformHandleui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glUniformHandleui64vNV = (GLEEPFNGLUNIFORMHANDLEUI64VNVPROC) __GLeeGetProcAddress("glUniformHandleui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformHandleui64NV = (GLEEPFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) __GLeeGetProcAddress("glProgramUniformHandleui64NV"))!=0) nLinked++; if ((GLeeFuncPtr_glProgramUniformHandleui64vNV = (GLEEPFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) __GLeeGetProcAddress("glProgramUniformHandleui64vNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsTextureHandleResidentNV = (GLEEPFNGLISTEXTUREHANDLERESIDENTNVPROC) __GLeeGetProcAddress("glIsTextureHandleResidentNV"))!=0) nLinked++; if ((GLeeFuncPtr_glIsImageHandleResidentNV = (GLEEPFNGLISIMAGEHANDLERESIDENTNVPROC) __GLeeGetProcAddress("glIsImageHandleResidentNV"))!=0) nLinked++; #endif if (nLinked==13) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_shader_atomic_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_AMD_query_buffer_object(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_compute_program5(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_shader_storage_buffer_object(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_shader_atomic_counters(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NV_deep_texture3D(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_NVX_conditional_render(void) { GLint nLinked=0; #ifdef __GLEE_GL_NVX_conditional_render if ((GLeeFuncPtr_glBeginConditionalRenderNVX = (GLEEPFNGLBEGINCONDITIONALRENDERNVXPROC) __GLeeGetProcAddress("glBeginConditionalRenderNVX"))!=0) nLinked++; if ((GLeeFuncPtr_glEndConditionalRenderNVX = (GLEEPFNGLENDCONDITIONALRENDERNVXPROC) __GLeeGetProcAddress("glEndConditionalRenderNVX"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_AMD_sparse_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_AMD_sparse_texture if ((GLeeFuncPtr_glTexStorageSparseAMD = (GLEEPFNGLTEXSTORAGESPARSEAMDPROC) __GLeeGetProcAddress("glTexStorageSparseAMD"))!=0) nLinked++; if ((GLeeFuncPtr_glTextureStorageSparseAMD = (GLEEPFNGLTEXTURESTORAGESPARSEAMDPROC) __GLeeGetProcAddress("glTextureStorageSparseAMD"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_AMD_shader_trinary_minmax(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_INTEL_map_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_INTEL_map_texture if ((GLeeFuncPtr_glSyncTextureINTEL = (GLEEPFNGLSYNCTEXTUREINTELPROC) __GLeeGetProcAddress("glSyncTextureINTEL"))!=0) nLinked++; if ((GLeeFuncPtr_glUnmapTexture2DINTEL = (GLEEPFNGLUNMAPTEXTURE2DINTELPROC) __GLeeGetProcAddress("glUnmapTexture2DINTEL"))!=0) nLinked++; if ((GLeeFuncPtr_glMapTexture2DINTEL = (GLEEPFNGLMAPTEXTURE2DINTELPROC) __GLeeGetProcAddress("glMapTexture2DINTEL"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_NV_draw_texture(void) { GLint nLinked=0; #ifdef __GLEE_GL_NV_draw_texture if ((GLeeFuncPtr_glDrawTextureNV = (GLEEPFNGLDRAWTEXTURENVPROC) __GLeeGetProcAddress("glDrawTextureNV"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_texture_select(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_INGR_blend_func_separate(void) { GLint nLinked=0; #ifdef __GLEE_GL_INGR_blend_func_separate if ((GLeeFuncPtr_glBlendFuncSeparateINGR = (GLEEPFNGLBLENDFUNCSEPARATEINGRPROC) __GLeeGetProcAddress("glBlendFuncSeparateINGR"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GL_SGIX_depth_pass_instrument(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GL_SGIX_igloo_interface(void) { GLint nLinked=0; #ifdef __GLEE_GL_SGIX_igloo_interface if ((GLeeFuncPtr_glIglooInterfaceSGIX = (GLEEPFNGLIGLOOINTERFACESGIXPROC) __GLeeGetProcAddress("glIglooInterfaceSGIX"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLEE_LINK_FUNCTION __GLeeGLLoadFunction[463]; void initGLLoadFunctions(void) { __GLeeGLLoadFunction[0]=__GLeeLink_GL_VERSION_1_2; __GLeeGLLoadFunction[1]=__GLeeLink_GL_ARB_imaging; __GLeeGLLoadFunction[2]=__GLeeLink_GL_VERSION_1_3; __GLeeGLLoadFunction[3]=__GLeeLink_GL_VERSION_1_4; __GLeeGLLoadFunction[4]=__GLeeLink_GL_VERSION_1_5; __GLeeGLLoadFunction[5]=__GLeeLink_GL_VERSION_2_0; __GLeeGLLoadFunction[6]=__GLeeLink_GL_VERSION_2_1; __GLeeGLLoadFunction[7]=__GLeeLink_GL_VERSION_3_0; __GLeeGLLoadFunction[8]=__GLeeLink_GL_VERSION_3_1; __GLeeGLLoadFunction[9]=__GLeeLink_GL_VERSION_3_2; __GLeeGLLoadFunction[10]=__GLeeLink_GL_VERSION_3_3; __GLeeGLLoadFunction[11]=__GLeeLink_GL_VERSION_4_0; __GLeeGLLoadFunction[12]=__GLeeLink_GL_VERSION_4_1; __GLeeGLLoadFunction[13]=__GLeeLink_GL_VERSION_4_2; __GLeeGLLoadFunction[14]=__GLeeLink_GL_VERSION_4_3; __GLeeGLLoadFunction[15]=__GLeeLink_GL_ARB_multitexture; __GLeeGLLoadFunction[16]=__GLeeLink_GL_ARB_transpose_matrix; __GLeeGLLoadFunction[17]=__GLeeLink_GL_ARB_multisample; __GLeeGLLoadFunction[18]=__GLeeLink_GL_ARB_texture_env_add; __GLeeGLLoadFunction[19]=__GLeeLink_GL_ARB_texture_cube_map; __GLeeGLLoadFunction[20]=__GLeeLink_GL_ARB_texture_compression; __GLeeGLLoadFunction[21]=__GLeeLink_GL_ARB_texture_border_clamp; __GLeeGLLoadFunction[22]=__GLeeLink_GL_ARB_point_parameters; __GLeeGLLoadFunction[23]=__GLeeLink_GL_ARB_vertex_blend; __GLeeGLLoadFunction[24]=__GLeeLink_GL_ARB_matrix_palette; __GLeeGLLoadFunction[25]=__GLeeLink_GL_ARB_texture_env_combine; __GLeeGLLoadFunction[26]=__GLeeLink_GL_ARB_texture_env_crossbar; __GLeeGLLoadFunction[27]=__GLeeLink_GL_ARB_texture_env_dot3; __GLeeGLLoadFunction[28]=__GLeeLink_GL_ARB_texture_mirrored_repeat; __GLeeGLLoadFunction[29]=__GLeeLink_GL_ARB_depth_texture; __GLeeGLLoadFunction[30]=__GLeeLink_GL_ARB_shadow; __GLeeGLLoadFunction[31]=__GLeeLink_GL_ARB_shadow_ambient; __GLeeGLLoadFunction[32]=__GLeeLink_GL_ARB_window_pos; __GLeeGLLoadFunction[33]=__GLeeLink_GL_ARB_vertex_program; __GLeeGLLoadFunction[34]=__GLeeLink_GL_ARB_fragment_program; __GLeeGLLoadFunction[35]=__GLeeLink_GL_ARB_vertex_buffer_object; __GLeeGLLoadFunction[36]=__GLeeLink_GL_ARB_occlusion_query; __GLeeGLLoadFunction[37]=__GLeeLink_GL_ARB_shader_objects; __GLeeGLLoadFunction[38]=__GLeeLink_GL_ARB_vertex_shader; __GLeeGLLoadFunction[39]=__GLeeLink_GL_ARB_fragment_shader; __GLeeGLLoadFunction[40]=__GLeeLink_GL_ARB_shading_language_100; __GLeeGLLoadFunction[41]=__GLeeLink_GL_ARB_texture_non_power_of_two; __GLeeGLLoadFunction[42]=__GLeeLink_GL_ARB_point_sprite; __GLeeGLLoadFunction[43]=__GLeeLink_GL_ARB_fragment_program_shadow; __GLeeGLLoadFunction[44]=__GLeeLink_GL_ARB_draw_buffers; __GLeeGLLoadFunction[45]=__GLeeLink_GL_ARB_texture_rectangle; __GLeeGLLoadFunction[46]=__GLeeLink_GL_ARB_color_buffer_float; __GLeeGLLoadFunction[47]=__GLeeLink_GL_ARB_half_float_pixel; __GLeeGLLoadFunction[48]=__GLeeLink_GL_ARB_texture_float; __GLeeGLLoadFunction[49]=__GLeeLink_GL_ARB_pixel_buffer_object; __GLeeGLLoadFunction[50]=__GLeeLink_GL_ARB_depth_buffer_float; __GLeeGLLoadFunction[51]=__GLeeLink_GL_ARB_draw_instanced; __GLeeGLLoadFunction[52]=__GLeeLink_GL_ARB_framebuffer_object; __GLeeGLLoadFunction[53]=__GLeeLink_GL_ARB_framebuffer_sRGB; __GLeeGLLoadFunction[54]=__GLeeLink_GL_ARB_geometry_shader4; __GLeeGLLoadFunction[55]=__GLeeLink_GL_ARB_half_float_vertex; __GLeeGLLoadFunction[56]=__GLeeLink_GL_ARB_instanced_arrays; __GLeeGLLoadFunction[57]=__GLeeLink_GL_ARB_map_buffer_range; __GLeeGLLoadFunction[58]=__GLeeLink_GL_ARB_texture_buffer_object; __GLeeGLLoadFunction[59]=__GLeeLink_GL_ARB_texture_compression_rgtc; __GLeeGLLoadFunction[60]=__GLeeLink_GL_ARB_texture_rg; __GLeeGLLoadFunction[61]=__GLeeLink_GL_ARB_vertex_array_object; __GLeeGLLoadFunction[62]=__GLeeLink_GL_ARB_uniform_buffer_object; __GLeeGLLoadFunction[63]=__GLeeLink_GL_ARB_compatibility; __GLeeGLLoadFunction[64]=__GLeeLink_GL_ARB_copy_buffer; __GLeeGLLoadFunction[65]=__GLeeLink_GL_ARB_shader_texture_lod; __GLeeGLLoadFunction[66]=__GLeeLink_GL_ARB_depth_clamp; __GLeeGLLoadFunction[67]=__GLeeLink_GL_ARB_draw_elements_base_vertex; __GLeeGLLoadFunction[68]=__GLeeLink_GL_ARB_fragment_coord_conventions; __GLeeGLLoadFunction[69]=__GLeeLink_GL_ARB_provoking_vertex; __GLeeGLLoadFunction[70]=__GLeeLink_GL_ARB_seamless_cube_map; __GLeeGLLoadFunction[71]=__GLeeLink_GL_ARB_sync; __GLeeGLLoadFunction[72]=__GLeeLink_GL_ARB_texture_multisample; __GLeeGLLoadFunction[73]=__GLeeLink_GL_ARB_vertex_array_bgra; __GLeeGLLoadFunction[74]=__GLeeLink_GL_ARB_draw_buffers_blend; __GLeeGLLoadFunction[75]=__GLeeLink_GL_ARB_sample_shading; __GLeeGLLoadFunction[76]=__GLeeLink_GL_ARB_texture_cube_map_array; __GLeeGLLoadFunction[77]=__GLeeLink_GL_ARB_texture_gather; __GLeeGLLoadFunction[78]=__GLeeLink_GL_ARB_texture_query_lod; __GLeeGLLoadFunction[79]=__GLeeLink_GL_ARB_shading_language_include; __GLeeGLLoadFunction[80]=__GLeeLink_GL_ARB_texture_compression_bptc; __GLeeGLLoadFunction[81]=__GLeeLink_GL_ARB_blend_func_extended; __GLeeGLLoadFunction[82]=__GLeeLink_GL_ARB_explicit_attrib_location; __GLeeGLLoadFunction[83]=__GLeeLink_GL_ARB_occlusion_query2; __GLeeGLLoadFunction[84]=__GLeeLink_GL_ARB_sampler_objects; __GLeeGLLoadFunction[85]=__GLeeLink_GL_ARB_shader_bit_encoding; __GLeeGLLoadFunction[86]=__GLeeLink_GL_ARB_texture_rgb10_a2ui; __GLeeGLLoadFunction[87]=__GLeeLink_GL_ARB_texture_swizzle; __GLeeGLLoadFunction[88]=__GLeeLink_GL_ARB_timer_query; __GLeeGLLoadFunction[89]=__GLeeLink_GL_ARB_vertex_type_2_10_10_10_rev; __GLeeGLLoadFunction[90]=__GLeeLink_GL_ARB_draw_indirect; __GLeeGLLoadFunction[91]=__GLeeLink_GL_ARB_gpu_shader5; __GLeeGLLoadFunction[92]=__GLeeLink_GL_ARB_gpu_shader_fp64; __GLeeGLLoadFunction[93]=__GLeeLink_GL_ARB_shader_subroutine; __GLeeGLLoadFunction[94]=__GLeeLink_GL_ARB_tessellation_shader; __GLeeGLLoadFunction[95]=__GLeeLink_GL_ARB_texture_buffer_object_rgb32; __GLeeGLLoadFunction[96]=__GLeeLink_GL_ARB_transform_feedback2; __GLeeGLLoadFunction[97]=__GLeeLink_GL_ARB_transform_feedback3; __GLeeGLLoadFunction[98]=__GLeeLink_GL_ARB_ES2_compatibility; __GLeeGLLoadFunction[99]=__GLeeLink_GL_ARB_get_program_binary; __GLeeGLLoadFunction[100]=__GLeeLink_GL_ARB_separate_shader_objects; __GLeeGLLoadFunction[101]=__GLeeLink_GL_ARB_shader_precision; __GLeeGLLoadFunction[102]=__GLeeLink_GL_ARB_vertex_attrib_64bit; __GLeeGLLoadFunction[103]=__GLeeLink_GL_ARB_viewport_array; __GLeeGLLoadFunction[104]=__GLeeLink_GL_ARB_cl_event; __GLeeGLLoadFunction[105]=__GLeeLink_GL_ARB_debug_output; __GLeeGLLoadFunction[106]=__GLeeLink_GL_ARB_robustness; __GLeeGLLoadFunction[107]=__GLeeLink_GL_ARB_shader_stencil_export; __GLeeGLLoadFunction[108]=__GLeeLink_GL_ARB_base_instance; __GLeeGLLoadFunction[109]=__GLeeLink_GL_ARB_shading_language_420pack; __GLeeGLLoadFunction[110]=__GLeeLink_GL_ARB_transform_feedback_instanced; __GLeeGLLoadFunction[111]=__GLeeLink_GL_ARB_compressed_texture_pixel_storage; __GLeeGLLoadFunction[112]=__GLeeLink_GL_ARB_conservative_depth; __GLeeGLLoadFunction[113]=__GLeeLink_GL_ARB_internalformat_query; __GLeeGLLoadFunction[114]=__GLeeLink_GL_ARB_map_buffer_alignment; __GLeeGLLoadFunction[115]=__GLeeLink_GL_ARB_shader_atomic_counters; __GLeeGLLoadFunction[116]=__GLeeLink_GL_ARB_shader_image_load_store; __GLeeGLLoadFunction[117]=__GLeeLink_GL_ARB_shading_language_packing; __GLeeGLLoadFunction[118]=__GLeeLink_GL_ARB_texture_storage; __GLeeGLLoadFunction[119]=__GLeeLink_GL_KHR_texture_compression_astc_ldr; __GLeeGLLoadFunction[120]=__GLeeLink_GL_KHR_debug; __GLeeGLLoadFunction[121]=__GLeeLink_GL_ARB_arrays_of_arrays; __GLeeGLLoadFunction[122]=__GLeeLink_GL_ARB_clear_buffer_object; __GLeeGLLoadFunction[123]=__GLeeLink_GL_ARB_compute_shader; __GLeeGLLoadFunction[124]=__GLeeLink_GL_ARB_copy_image; __GLeeGLLoadFunction[125]=__GLeeLink_GL_ARB_texture_view; __GLeeGLLoadFunction[126]=__GLeeLink_GL_ARB_vertex_attrib_binding; __GLeeGLLoadFunction[127]=__GLeeLink_GL_ARB_robustness_isolation; __GLeeGLLoadFunction[128]=__GLeeLink_GL_ARB_ES3_compatibility; __GLeeGLLoadFunction[129]=__GLeeLink_GL_ARB_explicit_uniform_location; __GLeeGLLoadFunction[130]=__GLeeLink_GL_ARB_fragment_layer_viewport; __GLeeGLLoadFunction[131]=__GLeeLink_GL_ARB_framebuffer_no_attachments; __GLeeGLLoadFunction[132]=__GLeeLink_GL_ARB_internalformat_query2; __GLeeGLLoadFunction[133]=__GLeeLink_GL_ARB_invalidate_subdata; __GLeeGLLoadFunction[134]=__GLeeLink_GL_ARB_multi_draw_indirect; __GLeeGLLoadFunction[135]=__GLeeLink_GL_ARB_program_interface_query; __GLeeGLLoadFunction[136]=__GLeeLink_GL_ARB_robust_buffer_access_behavior; __GLeeGLLoadFunction[137]=__GLeeLink_GL_ARB_shader_image_size; __GLeeGLLoadFunction[138]=__GLeeLink_GL_ARB_shader_storage_buffer_object; __GLeeGLLoadFunction[139]=__GLeeLink_GL_ARB_stencil_texturing; __GLeeGLLoadFunction[140]=__GLeeLink_GL_ARB_texture_buffer_range; __GLeeGLLoadFunction[141]=__GLeeLink_GL_ARB_texture_query_levels; __GLeeGLLoadFunction[142]=__GLeeLink_GL_ARB_texture_storage_multisample; __GLeeGLLoadFunction[143]=__GLeeLink_GL_EXT_abgr; __GLeeGLLoadFunction[144]=__GLeeLink_GL_EXT_blend_color; __GLeeGLLoadFunction[145]=__GLeeLink_GL_EXT_polygon_offset; __GLeeGLLoadFunction[146]=__GLeeLink_GL_EXT_texture; __GLeeGLLoadFunction[147]=__GLeeLink_GL_EXT_texture3D; __GLeeGLLoadFunction[148]=__GLeeLink_GL_SGIS_texture_filter4; __GLeeGLLoadFunction[149]=__GLeeLink_GL_EXT_subtexture; __GLeeGLLoadFunction[150]=__GLeeLink_GL_EXT_copy_texture; __GLeeGLLoadFunction[151]=__GLeeLink_GL_EXT_histogram; __GLeeGLLoadFunction[152]=__GLeeLink_GL_EXT_convolution; __GLeeGLLoadFunction[153]=__GLeeLink_GL_SGI_color_matrix; __GLeeGLLoadFunction[154]=__GLeeLink_GL_SGI_color_table; __GLeeGLLoadFunction[155]=__GLeeLink_GL_SGIS_pixel_texture; __GLeeGLLoadFunction[156]=__GLeeLink_GL_SGIX_pixel_texture; __GLeeGLLoadFunction[157]=__GLeeLink_GL_SGIS_texture4D; __GLeeGLLoadFunction[158]=__GLeeLink_GL_SGI_texture_color_table; __GLeeGLLoadFunction[159]=__GLeeLink_GL_EXT_cmyka; __GLeeGLLoadFunction[160]=__GLeeLink_GL_EXT_texture_object; __GLeeGLLoadFunction[161]=__GLeeLink_GL_SGIS_detail_texture; __GLeeGLLoadFunction[162]=__GLeeLink_GL_SGIS_sharpen_texture; __GLeeGLLoadFunction[163]=__GLeeLink_GL_EXT_packed_pixels; __GLeeGLLoadFunction[164]=__GLeeLink_GL_SGIS_texture_lod; __GLeeGLLoadFunction[165]=__GLeeLink_GL_SGIS_multisample; __GLeeGLLoadFunction[166]=__GLeeLink_GL_EXT_rescale_normal; __GLeeGLLoadFunction[167]=__GLeeLink_GL_EXT_vertex_array; __GLeeGLLoadFunction[168]=__GLeeLink_GL_EXT_misc_attribute; __GLeeGLLoadFunction[169]=__GLeeLink_GL_SGIS_generate_mipmap; __GLeeGLLoadFunction[170]=__GLeeLink_GL_SGIX_clipmap; __GLeeGLLoadFunction[171]=__GLeeLink_GL_SGIX_shadow; __GLeeGLLoadFunction[172]=__GLeeLink_GL_SGIS_texture_edge_clamp; __GLeeGLLoadFunction[173]=__GLeeLink_GL_SGIS_texture_border_clamp; __GLeeGLLoadFunction[174]=__GLeeLink_GL_EXT_blend_minmax; __GLeeGLLoadFunction[175]=__GLeeLink_GL_EXT_blend_subtract; __GLeeGLLoadFunction[176]=__GLeeLink_GL_EXT_blend_logic_op; __GLeeGLLoadFunction[177]=__GLeeLink_GL_SGIX_interlace; __GLeeGLLoadFunction[178]=__GLeeLink_GL_SGIX_pixel_tiles; __GLeeGLLoadFunction[179]=__GLeeLink_GL_SGIS_texture_select; __GLeeGLLoadFunction[180]=__GLeeLink_GL_SGIX_sprite; __GLeeGLLoadFunction[181]=__GLeeLink_GL_SGIX_texture_multi_buffer; __GLeeGLLoadFunction[182]=__GLeeLink_GL_EXT_point_parameters; __GLeeGLLoadFunction[183]=__GLeeLink_GL_SGIS_point_parameters; __GLeeGLLoadFunction[184]=__GLeeLink_GL_SGIX_instruments; __GLeeGLLoadFunction[185]=__GLeeLink_GL_SGIX_texture_scale_bias; __GLeeGLLoadFunction[186]=__GLeeLink_GL_SGIX_framezoom; __GLeeGLLoadFunction[187]=__GLeeLink_GL_SGIX_tag_sample_buffer; __GLeeGLLoadFunction[188]=__GLeeLink_GL_FfdMaskSGIX; __GLeeGLLoadFunction[189]=__GLeeLink_GL_SGIX_polynomial_ffd; __GLeeGLLoadFunction[190]=__GLeeLink_GL_SGIX_reference_plane; __GLeeGLLoadFunction[191]=__GLeeLink_GL_SGIX_flush_raster; __GLeeGLLoadFunction[192]=__GLeeLink_GL_SGIX_depth_texture; __GLeeGLLoadFunction[193]=__GLeeLink_GL_SGIS_fog_function; __GLeeGLLoadFunction[194]=__GLeeLink_GL_SGIX_fog_offset; __GLeeGLLoadFunction[195]=__GLeeLink_GL_HP_image_transform; __GLeeGLLoadFunction[196]=__GLeeLink_GL_HP_convolution_border_modes; __GLeeGLLoadFunction[197]=__GLeeLink_GL_INGR_palette_buffer; __GLeeGLLoadFunction[198]=__GLeeLink_GL_SGIX_texture_add_env; __GLeeGLLoadFunction[199]=__GLeeLink_GL_EXT_color_subtable; __GLeeGLLoadFunction[200]=__GLeeLink_GL_PGI_vertex_hints; __GLeeGLLoadFunction[201]=__GLeeLink_GL_PGI_misc_hints; __GLeeGLLoadFunction[202]=__GLeeLink_GL_EXT_paletted_texture; __GLeeGLLoadFunction[203]=__GLeeLink_GL_EXT_clip_volume_hint; __GLeeGLLoadFunction[204]=__GLeeLink_GL_SGIX_list_priority; __GLeeGLLoadFunction[205]=__GLeeLink_GL_SGIX_ir_instrument1; __GLeeGLLoadFunction[206]=__GLeeLink_GL_SGIX_calligraphic_fragment; __GLeeGLLoadFunction[207]=__GLeeLink_GL_SGIX_texture_lod_bias; __GLeeGLLoadFunction[208]=__GLeeLink_GL_SGIX_shadow_ambient; __GLeeGLLoadFunction[209]=__GLeeLink_GL_EXT_index_texture; __GLeeGLLoadFunction[210]=__GLeeLink_GL_EXT_index_material; __GLeeGLLoadFunction[211]=__GLeeLink_GL_EXT_index_func; __GLeeGLLoadFunction[212]=__GLeeLink_GL_EXT_index_array_formats; __GLeeGLLoadFunction[213]=__GLeeLink_GL_EXT_compiled_vertex_array; __GLeeGLLoadFunction[214]=__GLeeLink_GL_EXT_cull_vertex; __GLeeGLLoadFunction[215]=__GLeeLink_GL_SGIX_ycrcb; __GLeeGLLoadFunction[216]=__GLeeLink_GL_SGIX_fragment_lighting; __GLeeGLLoadFunction[217]=__GLeeLink_GL_IBM_rasterpos_clip; __GLeeGLLoadFunction[218]=__GLeeLink_GL_HP_texture_lighting; __GLeeGLLoadFunction[219]=__GLeeLink_GL_EXT_draw_range_elements; __GLeeGLLoadFunction[220]=__GLeeLink_GL_WIN_phong_shading; __GLeeGLLoadFunction[221]=__GLeeLink_GL_WIN_specular_fog; __GLeeGLLoadFunction[222]=__GLeeLink_GL_EXT_light_texture; __GLeeGLLoadFunction[223]=__GLeeLink_GL_SGIX_blend_alpha_minmax; __GLeeGLLoadFunction[224]=__GLeeLink_GL_SGIX_impact_pixel_texture; __GLeeGLLoadFunction[225]=__GLeeLink_GL_EXT_bgra; __GLeeGLLoadFunction[226]=__GLeeLink_GL_SGIX_async; __GLeeGLLoadFunction[227]=__GLeeLink_GL_SGIX_async_pixel; __GLeeGLLoadFunction[228]=__GLeeLink_GL_SGIX_async_histogram; __GLeeGLLoadFunction[229]=__GLeeLink_GL_INTEL_texture_scissor; __GLeeGLLoadFunction[230]=__GLeeLink_GL_INTEL_parallel_arrays; __GLeeGLLoadFunction[231]=__GLeeLink_GL_HP_occlusion_test; __GLeeGLLoadFunction[232]=__GLeeLink_GL_EXT_pixel_transform; __GLeeGLLoadFunction[233]=__GLeeLink_GL_EXT_pixel_transform_color_table; __GLeeGLLoadFunction[234]=__GLeeLink_GL_EXT_shared_texture_palette; __GLeeGLLoadFunction[235]=__GLeeLink_GL_EXT_separate_specular_color; __GLeeGLLoadFunction[236]=__GLeeLink_GL_EXT_secondary_color; __GLeeGLLoadFunction[237]=__GLeeLink_GL_EXT_texture_perturb_normal; __GLeeGLLoadFunction[238]=__GLeeLink_GL_EXT_multi_draw_arrays; __GLeeGLLoadFunction[239]=__GLeeLink_GL_EXT_fog_coord; __GLeeGLLoadFunction[240]=__GLeeLink_GL_REND_screen_coordinates; __GLeeGLLoadFunction[241]=__GLeeLink_GL_EXT_coordinate_frame; __GLeeGLLoadFunction[242]=__GLeeLink_GL_EXT_texture_env_combine; __GLeeGLLoadFunction[243]=__GLeeLink_GL_APPLE_specular_vector; __GLeeGLLoadFunction[244]=__GLeeLink_GL_APPLE_transform_hint; __GLeeGLLoadFunction[245]=__GLeeLink_GL_SGIX_fog_scale; __GLeeGLLoadFunction[246]=__GLeeLink_GL_SUNX_constant_data; __GLeeGLLoadFunction[247]=__GLeeLink_GL_SUN_global_alpha; __GLeeGLLoadFunction[248]=__GLeeLink_GL_SUN_triangle_list; __GLeeGLLoadFunction[249]=__GLeeLink_GL_SUN_vertex; __GLeeGLLoadFunction[250]=__GLeeLink_GL_EXT_blend_func_separate; __GLeeGLLoadFunction[251]=__GLeeLink_GL_INGR_color_clamp; __GLeeGLLoadFunction[252]=__GLeeLink_GL_INGR_interlace_read; __GLeeGLLoadFunction[253]=__GLeeLink_GL_EXT_stencil_wrap; __GLeeGLLoadFunction[254]=__GLeeLink_GL_EXT_422_pixels; __GLeeGLLoadFunction[255]=__GLeeLink_GL_NV_texgen_reflection; __GLeeGLLoadFunction[256]=__GLeeLink_GL_EXT_texture_cube_map; __GLeeGLLoadFunction[257]=__GLeeLink_GL_SUN_convolution_border_modes; __GLeeGLLoadFunction[258]=__GLeeLink_GL_EXT_texture_env_add; __GLeeGLLoadFunction[259]=__GLeeLink_GL_EXT_texture_lod_bias; __GLeeGLLoadFunction[260]=__GLeeLink_GL_EXT_texture_filter_anisotropic; __GLeeGLLoadFunction[261]=__GLeeLink_GL_EXT_vertex_weighting; __GLeeGLLoadFunction[262]=__GLeeLink_GL_NV_light_max_exponent; __GLeeGLLoadFunction[263]=__GLeeLink_GL_NV_vertex_array_range; __GLeeGLLoadFunction[264]=__GLeeLink_GL_NV_register_combiners; __GLeeGLLoadFunction[265]=__GLeeLink_GL_NV_fog_distance; __GLeeGLLoadFunction[266]=__GLeeLink_GL_NV_texgen_emboss; __GLeeGLLoadFunction[267]=__GLeeLink_GL_NV_blend_square; __GLeeGLLoadFunction[268]=__GLeeLink_GL_NV_texture_env_combine4; __GLeeGLLoadFunction[269]=__GLeeLink_GL_MESA_resize_buffers; __GLeeGLLoadFunction[270]=__GLeeLink_GL_MESA_window_pos; __GLeeGLLoadFunction[271]=__GLeeLink_GL_EXT_texture_compression_s3tc; __GLeeGLLoadFunction[272]=__GLeeLink_GL_IBM_cull_vertex; __GLeeGLLoadFunction[273]=__GLeeLink_GL_IBM_multimode_draw_arrays; __GLeeGLLoadFunction[274]=__GLeeLink_GL_IBM_vertex_array_lists; __GLeeGLLoadFunction[275]=__GLeeLink_GL_SGIX_subsample; __GLeeGLLoadFunction[276]=__GLeeLink_GL_SGIX_ycrcb_subsample; __GLeeGLLoadFunction[277]=__GLeeLink_GL_SGIX_ycrcba; __GLeeGLLoadFunction[278]=__GLeeLink_GL_SGI_depth_pass_instrument; __GLeeGLLoadFunction[279]=__GLeeLink_GL_3DFX_texture_compression_FXT1; __GLeeGLLoadFunction[280]=__GLeeLink_GL_3DFX_multisample; __GLeeGLLoadFunction[281]=__GLeeLink_GL_3DFX_tbuffer; __GLeeGLLoadFunction[282]=__GLeeLink_GL_EXT_multisample; __GLeeGLLoadFunction[283]=__GLeeLink_GL_SGIX_vertex_preclip; __GLeeGLLoadFunction[284]=__GLeeLink_GL_SGIX_convolution_accuracy; __GLeeGLLoadFunction[285]=__GLeeLink_GL_SGIX_resample; __GLeeGLLoadFunction[286]=__GLeeLink_GL_SGIS_point_line_texgen; __GLeeGLLoadFunction[287]=__GLeeLink_GL_SGIS_texture_color_mask; __GLeeGLLoadFunction[288]=__GLeeLink_GL_EXT_texture_env_dot3; __GLeeGLLoadFunction[289]=__GLeeLink_GL_ATI_texture_mirror_once; __GLeeGLLoadFunction[290]=__GLeeLink_GL_NV_fence; __GLeeGLLoadFunction[291]=__GLeeLink_GL_IBM_texture_mirrored_repeat; __GLeeGLLoadFunction[292]=__GLeeLink_GL_NV_evaluators; __GLeeGLLoadFunction[293]=__GLeeLink_GL_NV_packed_depth_stencil; __GLeeGLLoadFunction[294]=__GLeeLink_GL_NV_register_combiners2; __GLeeGLLoadFunction[295]=__GLeeLink_GL_NV_texture_compression_vtc; __GLeeGLLoadFunction[296]=__GLeeLink_GL_NV_texture_rectangle; __GLeeGLLoadFunction[297]=__GLeeLink_GL_NV_texture_shader; __GLeeGLLoadFunction[298]=__GLeeLink_GL_NV_texture_shader2; __GLeeGLLoadFunction[299]=__GLeeLink_GL_NV_vertex_array_range2; __GLeeGLLoadFunction[300]=__GLeeLink_GL_NV_vertex_program; __GLeeGLLoadFunction[301]=__GLeeLink_GL_SGIX_texture_coordinate_clamp; __GLeeGLLoadFunction[302]=__GLeeLink_GL_SGIX_scalebias_hint; __GLeeGLLoadFunction[303]=__GLeeLink_GL_OML_interlace; __GLeeGLLoadFunction[304]=__GLeeLink_GL_OML_subsample; __GLeeGLLoadFunction[305]=__GLeeLink_GL_OML_resample; __GLeeGLLoadFunction[306]=__GLeeLink_GL_NV_copy_depth_to_color; __GLeeGLLoadFunction[307]=__GLeeLink_GL_ATI_envmap_bumpmap; __GLeeGLLoadFunction[308]=__GLeeLink_GL_ATI_fragment_shader; __GLeeGLLoadFunction[309]=__GLeeLink_GL_ATI_pn_triangles; __GLeeGLLoadFunction[310]=__GLeeLink_GL_ATI_vertex_array_object; __GLeeGLLoadFunction[311]=__GLeeLink_GL_EXT_vertex_shader; __GLeeGLLoadFunction[312]=__GLeeLink_GL_ATI_vertex_streams; __GLeeGLLoadFunction[313]=__GLeeLink_GL_ATI_element_array; __GLeeGLLoadFunction[314]=__GLeeLink_GL_SUN_mesh_array; __GLeeGLLoadFunction[315]=__GLeeLink_GL_SUN_slice_accum; __GLeeGLLoadFunction[316]=__GLeeLink_GL_NV_multisample_filter_hint; __GLeeGLLoadFunction[317]=__GLeeLink_GL_NV_depth_clamp; __GLeeGLLoadFunction[318]=__GLeeLink_GL_NV_occlusion_query; __GLeeGLLoadFunction[319]=__GLeeLink_GL_NV_point_sprite; __GLeeGLLoadFunction[320]=__GLeeLink_GL_NV_texture_shader3; __GLeeGLLoadFunction[321]=__GLeeLink_GL_NV_vertex_program1_1; __GLeeGLLoadFunction[322]=__GLeeLink_GL_EXT_shadow_funcs; __GLeeGLLoadFunction[323]=__GLeeLink_GL_EXT_stencil_two_side; __GLeeGLLoadFunction[324]=__GLeeLink_GL_ATI_text_fragment_shader; __GLeeGLLoadFunction[325]=__GLeeLink_GL_APPLE_client_storage; __GLeeGLLoadFunction[326]=__GLeeLink_GL_APPLE_element_array; __GLeeGLLoadFunction[327]=__GLeeLink_GL_APPLE_fence; __GLeeGLLoadFunction[328]=__GLeeLink_GL_APPLE_vertex_array_object; __GLeeGLLoadFunction[329]=__GLeeLink_GL_APPLE_vertex_array_range; __GLeeGLLoadFunction[330]=__GLeeLink_GL_APPLE_ycbcr_422; __GLeeGLLoadFunction[331]=__GLeeLink_GL_S3_s3tc; __GLeeGLLoadFunction[332]=__GLeeLink_GL_ATI_draw_buffers; __GLeeGLLoadFunction[333]=__GLeeLink_GL_ATI_pixel_format_float; __GLeeGLLoadFunction[334]=__GLeeLink_GL_ATI_texture_env_combine3; __GLeeGLLoadFunction[335]=__GLeeLink_GL_ATI_texture_float; __GLeeGLLoadFunction[336]=__GLeeLink_GL_NV_float_buffer; __GLeeGLLoadFunction[337]=__GLeeLink_GL_NV_fragment_program; __GLeeGLLoadFunction[338]=__GLeeLink_GL_NV_half_float; __GLeeGLLoadFunction[339]=__GLeeLink_GL_NV_pixel_data_range; __GLeeGLLoadFunction[340]=__GLeeLink_GL_NV_primitive_restart; __GLeeGLLoadFunction[341]=__GLeeLink_GL_NV_texture_expand_normal; __GLeeGLLoadFunction[342]=__GLeeLink_GL_NV_vertex_program2; __GLeeGLLoadFunction[343]=__GLeeLink_GL_ATI_map_object_buffer; __GLeeGLLoadFunction[344]=__GLeeLink_GL_ATI_separate_stencil; __GLeeGLLoadFunction[345]=__GLeeLink_GL_ATI_vertex_attrib_array_object; __GLeeGLLoadFunction[346]=__GLeeLink_GL_OES_byte_coordinates; __GLeeGLLoadFunction[347]=__GLeeLink_GL_OES_fixed_point; __GLeeGLLoadFunction[348]=__GLeeLink_GL_OES_single_precision; __GLeeGLLoadFunction[349]=__GLeeLink_GL_OES_compressed_paletted_texture; __GLeeGLLoadFunction[350]=__GLeeLink_GL_OES_read_format; __GLeeGLLoadFunction[351]=__GLeeLink_GL_OES_query_matrix; __GLeeGLLoadFunction[352]=__GLeeLink_GL_EXT_depth_bounds_test; __GLeeGLLoadFunction[353]=__GLeeLink_GL_EXT_texture_mirror_clamp; __GLeeGLLoadFunction[354]=__GLeeLink_GL_EXT_blend_equation_separate; __GLeeGLLoadFunction[355]=__GLeeLink_GL_MESA_pack_invert; __GLeeGLLoadFunction[356]=__GLeeLink_GL_MESA_ycbcr_texture; __GLeeGLLoadFunction[357]=__GLeeLink_GL_EXT_pixel_buffer_object; __GLeeGLLoadFunction[358]=__GLeeLink_GL_NV_fragment_program_option; __GLeeGLLoadFunction[359]=__GLeeLink_GL_NV_fragment_program2; __GLeeGLLoadFunction[360]=__GLeeLink_GL_NV_vertex_program2_option; __GLeeGLLoadFunction[361]=__GLeeLink_GL_NV_vertex_program3; __GLeeGLLoadFunction[362]=__GLeeLink_GL_EXT_framebuffer_object; __GLeeGLLoadFunction[363]=__GLeeLink_GL_GREMEDY_string_marker; __GLeeGLLoadFunction[364]=__GLeeLink_GL_EXT_packed_depth_stencil; __GLeeGLLoadFunction[365]=__GLeeLink_GL_EXT_stencil_clear_tag; __GLeeGLLoadFunction[366]=__GLeeLink_GL_EXT_texture_sRGB; __GLeeGLLoadFunction[367]=__GLeeLink_GL_EXT_framebuffer_blit; __GLeeGLLoadFunction[368]=__GLeeLink_GL_EXT_framebuffer_multisample; __GLeeGLLoadFunction[369]=__GLeeLink_GL_MESAX_texture_stack; __GLeeGLLoadFunction[370]=__GLeeLink_GL_EXT_timer_query; __GLeeGLLoadFunction[371]=__GLeeLink_GL_EXT_gpu_program_parameters; __GLeeGLLoadFunction[372]=__GLeeLink_GL_APPLE_flush_buffer_range; __GLeeGLLoadFunction[373]=__GLeeLink_GL_EXT_gpu_shader4; __GLeeGLLoadFunction[374]=__GLeeLink_GL_EXT_draw_instanced; __GLeeGLLoadFunction[375]=__GLeeLink_GL_EXT_packed_float; __GLeeGLLoadFunction[376]=__GLeeLink_GL_EXT_texture_array; __GLeeGLLoadFunction[377]=__GLeeLink_GL_EXT_texture_buffer_object; __GLeeGLLoadFunction[378]=__GLeeLink_GL_EXT_texture_compression_latc; __GLeeGLLoadFunction[379]=__GLeeLink_GL_EXT_texture_compression_rgtc; __GLeeGLLoadFunction[380]=__GLeeLink_GL_EXT_texture_shared_exponent; __GLeeGLLoadFunction[381]=__GLeeLink_GL_NV_depth_buffer_float; __GLeeGLLoadFunction[382]=__GLeeLink_GL_NV_framebuffer_multisample_coverage; __GLeeGLLoadFunction[383]=__GLeeLink_GL_EXT_framebuffer_sRGB; __GLeeGLLoadFunction[384]=__GLeeLink_GL_NV_geometry_shader4; __GLeeGLLoadFunction[385]=__GLeeLink_GL_NV_parameter_buffer_object; __GLeeGLLoadFunction[386]=__GLeeLink_GL_EXT_draw_buffers2; __GLeeGLLoadFunction[387]=__GLeeLink_GL_NV_transform_feedback; __GLeeGLLoadFunction[388]=__GLeeLink_GL_EXT_bindable_uniform; __GLeeGLLoadFunction[389]=__GLeeLink_GL_EXT_texture_integer; __GLeeGLLoadFunction[390]=__GLeeLink_GL_GREMEDY_frame_terminator; __GLeeGLLoadFunction[391]=__GLeeLink_GL_NV_conditional_render; __GLeeGLLoadFunction[392]=__GLeeLink_GL_NV_present_video; __GLeeGLLoadFunction[393]=__GLeeLink_GL_EXT_transform_feedback; __GLeeGLLoadFunction[394]=__GLeeLink_GL_EXT_direct_state_access; __GLeeGLLoadFunction[395]=__GLeeLink_GL_EXT_vertex_array_bgra; __GLeeGLLoadFunction[396]=__GLeeLink_GL_EXT_texture_swizzle; __GLeeGLLoadFunction[397]=__GLeeLink_GL_NV_explicit_multisample; __GLeeGLLoadFunction[398]=__GLeeLink_GL_NV_transform_feedback2; __GLeeGLLoadFunction[399]=__GLeeLink_GL_ATI_meminfo; __GLeeGLLoadFunction[400]=__GLeeLink_GL_AMD_performance_monitor; __GLeeGLLoadFunction[401]=__GLeeLink_GL_AMD_texture_texture4; __GLeeGLLoadFunction[402]=__GLeeLink_GL_AMD_vertex_shader_tesselator; __GLeeGLLoadFunction[403]=__GLeeLink_GL_EXT_provoking_vertex; __GLeeGLLoadFunction[404]=__GLeeLink_GL_EXT_texture_snorm; __GLeeGLLoadFunction[405]=__GLeeLink_GL_AMD_draw_buffers_blend; __GLeeGLLoadFunction[406]=__GLeeLink_GL_APPLE_texture_range; __GLeeGLLoadFunction[407]=__GLeeLink_GL_APPLE_float_pixels; __GLeeGLLoadFunction[408]=__GLeeLink_GL_APPLE_vertex_program_evaluators; __GLeeGLLoadFunction[409]=__GLeeLink_GL_APPLE_aux_depth_stencil; __GLeeGLLoadFunction[410]=__GLeeLink_GL_APPLE_object_purgeable; __GLeeGLLoadFunction[411]=__GLeeLink_GL_APPLE_row_bytes; __GLeeGLLoadFunction[412]=__GLeeLink_GL_APPLE_rgb_422; __GLeeGLLoadFunction[413]=__GLeeLink_GL_NV_video_capture; __GLeeGLLoadFunction[414]=__GLeeLink_GL_NV_copy_image; __GLeeGLLoadFunction[415]=__GLeeLink_GL_EXT_separate_shader_objects; __GLeeGLLoadFunction[416]=__GLeeLink_GL_NV_parameter_buffer_object2; __GLeeGLLoadFunction[417]=__GLeeLink_GL_NV_shader_buffer_load; __GLeeGLLoadFunction[418]=__GLeeLink_GL_NV_vertex_buffer_unified_memory; __GLeeGLLoadFunction[419]=__GLeeLink_GL_NV_texture_barrier; __GLeeGLLoadFunction[420]=__GLeeLink_GL_AMD_shader_stencil_export; __GLeeGLLoadFunction[421]=__GLeeLink_GL_AMD_seamless_cubemap_per_texture; __GLeeGLLoadFunction[422]=__GLeeLink_GL_AMD_conservative_depth; __GLeeGLLoadFunction[423]=__GLeeLink_GL_EXT_shader_image_load_store; __GLeeGLLoadFunction[424]=__GLeeLink_GL_EXT_vertex_attrib_64bit; __GLeeGLLoadFunction[425]=__GLeeLink_GL_NV_gpu_program5; __GLeeGLLoadFunction[426]=__GLeeLink_GL_NV_gpu_shader5; __GLeeGLLoadFunction[427]=__GLeeLink_GL_NV_shader_buffer_store; __GLeeGLLoadFunction[428]=__GLeeLink_GL_NV_tessellation_program5; __GLeeGLLoadFunction[429]=__GLeeLink_GL_NV_vertex_attrib_integer_64bit; __GLeeGLLoadFunction[430]=__GLeeLink_GL_NV_multisample_coverage; __GLeeGLLoadFunction[431]=__GLeeLink_GL_AMD_name_gen_delete; __GLeeGLLoadFunction[432]=__GLeeLink_GL_AMD_debug_output; __GLeeGLLoadFunction[433]=__GLeeLink_GL_AMD_transform_feedback3_lines_triangles; __GLeeGLLoadFunction[434]=__GLeeLink_GL_AMD_depth_clamp_separate; __GLeeGLLoadFunction[435]=__GLeeLink_GL_EXT_texture_sRGB_decode; __GLeeGLLoadFunction[436]=__GLeeLink_GL_NV_texture_multisample; __GLeeGLLoadFunction[437]=__GLeeLink_GL_AMD_blend_minmax_factor; __GLeeGLLoadFunction[438]=__GLeeLink_GL_AMD_sample_positions; __GLeeGLLoadFunction[439]=__GLeeLink_GL_EXT_x11_sync_object; __GLeeGLLoadFunction[440]=__GLeeLink_GL_AMD_multi_draw_indirect; __GLeeGLLoadFunction[441]=__GLeeLink_GL_EXT_framebuffer_multisample_blit_scaled; __GLeeGLLoadFunction[442]=__GLeeLink_GL_NV_path_rendering; __GLeeGLLoadFunction[443]=__GLeeLink_GL_AMD_pinned_memory; __GLeeGLLoadFunction[444]=__GLeeLink_GL_AMD_stencil_operation_extended; __GLeeGLLoadFunction[445]=__GLeeLink_GL_AMD_vertex_shader_viewport_index; __GLeeGLLoadFunction[446]=__GLeeLink_GL_AMD_vertex_shader_layer; __GLeeGLLoadFunction[447]=__GLeeLink_GL_NV_bindless_texture; __GLeeGLLoadFunction[448]=__GLeeLink_GL_NV_shader_atomic_float; __GLeeGLLoadFunction[449]=__GLeeLink_GL_AMD_query_buffer_object; __GLeeGLLoadFunction[450]=__GLeeLink_GL_NV_compute_program5; __GLeeGLLoadFunction[451]=__GLeeLink_GL_NV_shader_storage_buffer_object; __GLeeGLLoadFunction[452]=__GLeeLink_GL_NV_shader_atomic_counters; __GLeeGLLoadFunction[453]=__GLeeLink_GL_NV_deep_texture3D; __GLeeGLLoadFunction[454]=__GLeeLink_GL_NVX_conditional_render; __GLeeGLLoadFunction[455]=__GLeeLink_GL_AMD_sparse_texture; __GLeeGLLoadFunction[456]=__GLeeLink_GL_AMD_shader_trinary_minmax; __GLeeGLLoadFunction[457]=__GLeeLink_GL_INTEL_map_texture; __GLeeGLLoadFunction[458]=__GLeeLink_GL_NV_draw_texture; __GLeeGLLoadFunction[459]=__GLeeLink_GL_SGIX_texture_select; __GLeeGLLoadFunction[460]=__GLeeLink_GL_INGR_blend_func_separate; __GLeeGLLoadFunction[461]=__GLeeLink_GL_SGIX_depth_pass_instrument; __GLeeGLLoadFunction[462]=__GLeeLink_GL_SGIX_igloo_interface; } #ifdef _WIN32 GLuint __GLeeLink_WGL_ARB_buffer_region(void) { GLint nLinked=0; #ifdef __GLEE_WGL_ARB_buffer_region if ((GLeeFuncPtr_wglCreateBufferRegionARB = (GLEEPFNWGLCREATEBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglCreateBufferRegionARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglDeleteBufferRegionARB = (GLEEPFNWGLDELETEBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglDeleteBufferRegionARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglSaveBufferRegionARB = (GLEEPFNWGLSAVEBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglSaveBufferRegionARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglRestoreBufferRegionARB = (GLEEPFNWGLRESTOREBUFFERREGIONARBPROC) __GLeeGetProcAddress("wglRestoreBufferRegionARB"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_ARB_multisample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_ARB_extensions_string(void) { GLint nLinked=0; #ifdef __GLEE_WGL_ARB_extensions_string if ((GLeeFuncPtr_wglGetExtensionsStringARB = (GLEEPFNWGLGETEXTENSIONSSTRINGARBPROC) __GLeeGetProcAddress("wglGetExtensionsStringARB"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_ARB_pixel_format(void) { GLint nLinked=0; #ifdef __GLEE_WGL_ARB_pixel_format if ((GLeeFuncPtr_wglGetPixelFormatAttribivARB = (GLEEPFNWGLGETPIXELFORMATATTRIBIVARBPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribivARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetPixelFormatAttribfvARB = (GLEEPFNWGLGETPIXELFORMATATTRIBFVARBPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribfvARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglChoosePixelFormatARB = (GLEEPFNWGLCHOOSEPIXELFORMATARBPROC) __GLeeGetProcAddress("wglChoosePixelFormatARB"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_ARB_make_current_read(void) { GLint nLinked=0; #ifdef __GLEE_WGL_ARB_make_current_read if ((GLeeFuncPtr_wglMakeContextCurrentARB = (GLEEPFNWGLMAKECONTEXTCURRENTARBPROC) __GLeeGetProcAddress("wglMakeContextCurrentARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetCurrentReadDCARB = (GLEEPFNWGLGETCURRENTREADDCARBPROC) __GLeeGetProcAddress("wglGetCurrentReadDCARB"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_ARB_pbuffer(void) { GLint nLinked=0; #ifdef __GLEE_WGL_ARB_pbuffer if ((GLeeFuncPtr_wglCreatePbufferARB = (GLEEPFNWGLCREATEPBUFFERARBPROC) __GLeeGetProcAddress("wglCreatePbufferARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetPbufferDCARB = (GLEEPFNWGLGETPBUFFERDCARBPROC) __GLeeGetProcAddress("wglGetPbufferDCARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglReleasePbufferDCARB = (GLEEPFNWGLRELEASEPBUFFERDCARBPROC) __GLeeGetProcAddress("wglReleasePbufferDCARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglDestroyPbufferARB = (GLEEPFNWGLDESTROYPBUFFERARBPROC) __GLeeGetProcAddress("wglDestroyPbufferARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglQueryPbufferARB = (GLEEPFNWGLQUERYPBUFFERARBPROC) __GLeeGetProcAddress("wglQueryPbufferARB"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_ARB_render_texture(void) { GLint nLinked=0; #ifdef __GLEE_WGL_ARB_render_texture if ((GLeeFuncPtr_wglBindTexImageARB = (GLEEPFNWGLBINDTEXIMAGEARBPROC) __GLeeGetProcAddress("wglBindTexImageARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglReleaseTexImageARB = (GLEEPFNWGLRELEASETEXIMAGEARBPROC) __GLeeGetProcAddress("wglReleaseTexImageARB"))!=0) nLinked++; if ((GLeeFuncPtr_wglSetPbufferAttribARB = (GLEEPFNWGLSETPBUFFERATTRIBARBPROC) __GLeeGetProcAddress("wglSetPbufferAttribARB"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_ARB_pixel_format_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_ARB_framebuffer_sRGB(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_ARB_create_context(void) { GLint nLinked=0; #ifdef __GLEE_WGL_ARB_create_context if ((GLeeFuncPtr_wglCreateContextAttribsARB = (GLEEPFNWGLCREATECONTEXTATTRIBSARBPROC) __GLeeGetProcAddress("wglCreateContextAttribsARB"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_ARB_create_context_profile(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_ARB_create_context_robustness(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_EXT_make_current_read(void) { GLint nLinked=0; #ifdef __GLEE_WGL_EXT_make_current_read if ((GLeeFuncPtr_wglMakeContextCurrentEXT = (GLEEPFNWGLMAKECONTEXTCURRENTEXTPROC) __GLeeGetProcAddress("wglMakeContextCurrentEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetCurrentReadDCEXT = (GLEEPFNWGLGETCURRENTREADDCEXTPROC) __GLeeGetProcAddress("wglGetCurrentReadDCEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_EXT_pixel_format(void) { GLint nLinked=0; #ifdef __GLEE_WGL_EXT_pixel_format if ((GLeeFuncPtr_wglGetPixelFormatAttribivEXT = (GLEEPFNWGLGETPIXELFORMATATTRIBIVEXTPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribivEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetPixelFormatAttribfvEXT = (GLEEPFNWGLGETPIXELFORMATATTRIBFVEXTPROC) __GLeeGetProcAddress("wglGetPixelFormatAttribfvEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglChoosePixelFormatEXT = (GLEEPFNWGLCHOOSEPIXELFORMATEXTPROC) __GLeeGetProcAddress("wglChoosePixelFormatEXT"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_EXT_pbuffer(void) { GLint nLinked=0; #ifdef __GLEE_WGL_EXT_pbuffer if ((GLeeFuncPtr_wglCreatePbufferEXT = (GLEEPFNWGLCREATEPBUFFEREXTPROC) __GLeeGetProcAddress("wglCreatePbufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetPbufferDCEXT = (GLEEPFNWGLGETPBUFFERDCEXTPROC) __GLeeGetProcAddress("wglGetPbufferDCEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglReleasePbufferDCEXT = (GLEEPFNWGLRELEASEPBUFFERDCEXTPROC) __GLeeGetProcAddress("wglReleasePbufferDCEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglDestroyPbufferEXT = (GLEEPFNWGLDESTROYPBUFFEREXTPROC) __GLeeGetProcAddress("wglDestroyPbufferEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglQueryPbufferEXT = (GLEEPFNWGLQUERYPBUFFEREXTPROC) __GLeeGetProcAddress("wglQueryPbufferEXT"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_EXT_depth_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_3DFX_multisample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_EXT_multisample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_I3D_digital_video_control(void) { GLint nLinked=0; #ifdef __GLEE_WGL_I3D_digital_video_control if ((GLeeFuncPtr_wglGetDigitalVideoParametersI3D = (GLEEPFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) __GLeeGetProcAddress("wglGetDigitalVideoParametersI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglSetDigitalVideoParametersI3D = (GLEEPFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) __GLeeGetProcAddress("wglSetDigitalVideoParametersI3D"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_I3D_gamma(void) { GLint nLinked=0; #ifdef __GLEE_WGL_I3D_gamma if ((GLeeFuncPtr_wglGetGammaTableParametersI3D = (GLEEPFNWGLGETGAMMATABLEPARAMETERSI3DPROC) __GLeeGetProcAddress("wglGetGammaTableParametersI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglSetGammaTableParametersI3D = (GLEEPFNWGLSETGAMMATABLEPARAMETERSI3DPROC) __GLeeGetProcAddress("wglSetGammaTableParametersI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetGammaTableI3D = (GLEEPFNWGLGETGAMMATABLEI3DPROC) __GLeeGetProcAddress("wglGetGammaTableI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglSetGammaTableI3D = (GLEEPFNWGLSETGAMMATABLEI3DPROC) __GLeeGetProcAddress("wglSetGammaTableI3D"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_I3D_genlock(void) { GLint nLinked=0; #ifdef __GLEE_WGL_I3D_genlock if ((GLeeFuncPtr_wglEnableGenlockI3D = (GLEEPFNWGLENABLEGENLOCKI3DPROC) __GLeeGetProcAddress("wglEnableGenlockI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglDisableGenlockI3D = (GLEEPFNWGLDISABLEGENLOCKI3DPROC) __GLeeGetProcAddress("wglDisableGenlockI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglIsEnabledGenlockI3D = (GLEEPFNWGLISENABLEDGENLOCKI3DPROC) __GLeeGetProcAddress("wglIsEnabledGenlockI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglGenlockSourceI3D = (GLEEPFNWGLGENLOCKSOURCEI3DPROC) __GLeeGetProcAddress("wglGenlockSourceI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetGenlockSourceI3D = (GLEEPFNWGLGETGENLOCKSOURCEI3DPROC) __GLeeGetProcAddress("wglGetGenlockSourceI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglGenlockSourceEdgeI3D = (GLEEPFNWGLGENLOCKSOURCEEDGEI3DPROC) __GLeeGetProcAddress("wglGenlockSourceEdgeI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetGenlockSourceEdgeI3D = (GLEEPFNWGLGETGENLOCKSOURCEEDGEI3DPROC) __GLeeGetProcAddress("wglGetGenlockSourceEdgeI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglGenlockSampleRateI3D = (GLEEPFNWGLGENLOCKSAMPLERATEI3DPROC) __GLeeGetProcAddress("wglGenlockSampleRateI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetGenlockSampleRateI3D = (GLEEPFNWGLGETGENLOCKSAMPLERATEI3DPROC) __GLeeGetProcAddress("wglGetGenlockSampleRateI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglGenlockSourceDelayI3D = (GLEEPFNWGLGENLOCKSOURCEDELAYI3DPROC) __GLeeGetProcAddress("wglGenlockSourceDelayI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetGenlockSourceDelayI3D = (GLEEPFNWGLGETGENLOCKSOURCEDELAYI3DPROC) __GLeeGetProcAddress("wglGetGenlockSourceDelayI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglQueryGenlockMaxSourceDelayI3D = (GLEEPFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) __GLeeGetProcAddress("wglQueryGenlockMaxSourceDelayI3D"))!=0) nLinked++; #endif if (nLinked==12) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_I3D_image_buffer(void) { GLint nLinked=0; #ifdef __GLEE_WGL_I3D_image_buffer if ((GLeeFuncPtr_wglCreateImageBufferI3D = (GLEEPFNWGLCREATEIMAGEBUFFERI3DPROC) __GLeeGetProcAddress("wglCreateImageBufferI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglDestroyImageBufferI3D = (GLEEPFNWGLDESTROYIMAGEBUFFERI3DPROC) __GLeeGetProcAddress("wglDestroyImageBufferI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglAssociateImageBufferEventsI3D = (GLEEPFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) __GLeeGetProcAddress("wglAssociateImageBufferEventsI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglReleaseImageBufferEventsI3D = (GLEEPFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) __GLeeGetProcAddress("wglReleaseImageBufferEventsI3D"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_I3D_swap_frame_lock(void) { GLint nLinked=0; #ifdef __GLEE_WGL_I3D_swap_frame_lock if ((GLeeFuncPtr_wglEnableFrameLockI3D = (GLEEPFNWGLENABLEFRAMELOCKI3DPROC) __GLeeGetProcAddress("wglEnableFrameLockI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglDisableFrameLockI3D = (GLEEPFNWGLDISABLEFRAMELOCKI3DPROC) __GLeeGetProcAddress("wglDisableFrameLockI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglIsEnabledFrameLockI3D = (GLEEPFNWGLISENABLEDFRAMELOCKI3DPROC) __GLeeGetProcAddress("wglIsEnabledFrameLockI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglQueryFrameLockMasterI3D = (GLEEPFNWGLQUERYFRAMELOCKMASTERI3DPROC) __GLeeGetProcAddress("wglQueryFrameLockMasterI3D"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_NV_render_depth_texture(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_NV_render_texture_rectangle(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_ATI_pixel_format_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_NV_float_buffer(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_3DL_stereo_control(void) { GLint nLinked=0; #ifdef __GLEE_WGL_3DL_stereo_control if ((GLeeFuncPtr_wglSetStereoEmitterState3DL = (GLEEPFNWGLSETSTEREOEMITTERSTATE3DLPROC) __GLeeGetProcAddress("wglSetStereoEmitterState3DL"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_EXT_pixel_format_packed_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_EXT_framebuffer_sRGB(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_NV_present_video(void) { GLint nLinked=0; #ifdef __GLEE_WGL_NV_present_video if ((GLeeFuncPtr_wglEnumerateVideoDevicesNV = (GLEEPFNWGLENUMERATEVIDEODEVICESNVPROC) __GLeeGetProcAddress("wglEnumerateVideoDevicesNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglBindVideoDeviceNV = (GLEEPFNWGLBINDVIDEODEVICENVPROC) __GLeeGetProcAddress("wglBindVideoDeviceNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglQueryCurrentContextNV = (GLEEPFNWGLQUERYCURRENTCONTEXTNVPROC) __GLeeGetProcAddress("wglQueryCurrentContextNV"))!=0) nLinked++; #endif if (nLinked==3) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_NV_swap_group(void) { GLint nLinked=0; #ifdef __GLEE_WGL_NV_swap_group if ((GLeeFuncPtr_wglJoinSwapGroupNV = (GLEEPFNWGLJOINSWAPGROUPNVPROC) __GLeeGetProcAddress("wglJoinSwapGroupNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglBindSwapBarrierNV = (GLEEPFNWGLBINDSWAPBARRIERNVPROC) __GLeeGetProcAddress("wglBindSwapBarrierNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglQuerySwapGroupNV = (GLEEPFNWGLQUERYSWAPGROUPNVPROC) __GLeeGetProcAddress("wglQuerySwapGroupNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglQueryMaxSwapGroupsNV = (GLEEPFNWGLQUERYMAXSWAPGROUPSNVPROC) __GLeeGetProcAddress("wglQueryMaxSwapGroupsNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglQueryFrameCountNV = (GLEEPFNWGLQUERYFRAMECOUNTNVPROC) __GLeeGetProcAddress("wglQueryFrameCountNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglResetFrameCountNV = (GLEEPFNWGLRESETFRAMECOUNTNVPROC) __GLeeGetProcAddress("wglResetFrameCountNV"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_NV_gpu_affinity(void) { GLint nLinked=0; #ifdef __GLEE_WGL_NV_gpu_affinity if ((GLeeFuncPtr_wglEnumGpusNV = (GLEEPFNWGLENUMGPUSNVPROC) __GLeeGetProcAddress("wglEnumGpusNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglEnumGpuDevicesNV = (GLEEPFNWGLENUMGPUDEVICESNVPROC) __GLeeGetProcAddress("wglEnumGpuDevicesNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglCreateAffinityDCNV = (GLEEPFNWGLCREATEAFFINITYDCNVPROC) __GLeeGetProcAddress("wglCreateAffinityDCNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglEnumGpusFromAffinityDCNV = (GLEEPFNWGLENUMGPUSFROMAFFINITYDCNVPROC) __GLeeGetProcAddress("wglEnumGpusFromAffinityDCNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglDeleteDCNV = (GLEEPFNWGLDELETEDCNVPROC) __GLeeGetProcAddress("wglDeleteDCNV"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_AMD_gpu_association(void) { GLint nLinked=0; #ifdef __GLEE_WGL_AMD_gpu_association if ((GLeeFuncPtr_wglGetGPUIDsAMD = (GLEEPFNWGLGETGPUIDSAMDPROC) __GLeeGetProcAddress("wglGetGPUIDsAMD"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetGPUInfoAMD = (GLEEPFNWGLGETGPUINFOAMDPROC) __GLeeGetProcAddress("wglGetGPUInfoAMD"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetContextGPUIDAMD = (GLEEPFNWGLGETCONTEXTGPUIDAMDPROC) __GLeeGetProcAddress("wglGetContextGPUIDAMD"))!=0) nLinked++; if ((GLeeFuncPtr_wglCreateAssociatedContextAMD = (GLEEPFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) __GLeeGetProcAddress("wglCreateAssociatedContextAMD"))!=0) nLinked++; if ((GLeeFuncPtr_wglCreateAssociatedContextAttribsAMD = (GLEEPFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) __GLeeGetProcAddress("wglCreateAssociatedContextAttribsAMD"))!=0) nLinked++; if ((GLeeFuncPtr_wglDeleteAssociatedContextAMD = (GLEEPFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) __GLeeGetProcAddress("wglDeleteAssociatedContextAMD"))!=0) nLinked++; if ((GLeeFuncPtr_wglMakeAssociatedContextCurrentAMD = (GLEEPFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) __GLeeGetProcAddress("wglMakeAssociatedContextCurrentAMD"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetCurrentAssociatedContextAMD = (GLEEPFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) __GLeeGetProcAddress("wglGetCurrentAssociatedContextAMD"))!=0) nLinked++; if ((GLeeFuncPtr_wglBlitContextFramebufferAMD = (GLEEPFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) __GLeeGetProcAddress("wglBlitContextFramebufferAMD"))!=0) nLinked++; #endif if (nLinked==9) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_NV_copy_image(void) { GLint nLinked=0; #ifdef __GLEE_WGL_NV_copy_image if ((GLeeFuncPtr_wglCopyImageSubDataNV = (GLEEPFNWGLCOPYIMAGESUBDATANVPROC) __GLeeGetProcAddress("wglCopyImageSubDataNV"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_NV_multisample_coverage(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_EXT_create_context_es2_profile(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_NV_DX_interop(void) { GLint nLinked=0; #ifdef __GLEE_WGL_NV_DX_interop if ((GLeeFuncPtr_wglDXSetResourceShareHandleNV = (GLEEPFNWGLDXSETRESOURCESHAREHANDLENVPROC) __GLeeGetProcAddress("wglDXSetResourceShareHandleNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglDXOpenDeviceNV = (GLEEPFNWGLDXOPENDEVICENVPROC) __GLeeGetProcAddress("wglDXOpenDeviceNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglDXCloseDeviceNV = (GLEEPFNWGLDXCLOSEDEVICENVPROC) __GLeeGetProcAddress("wglDXCloseDeviceNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglDXRegisterObjectNV = (GLEEPFNWGLDXREGISTEROBJECTNVPROC) __GLeeGetProcAddress("wglDXRegisterObjectNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglDXUnregisterObjectNV = (GLEEPFNWGLDXUNREGISTEROBJECTNVPROC) __GLeeGetProcAddress("wglDXUnregisterObjectNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglDXObjectAccessNV = (GLEEPFNWGLDXOBJECTACCESSNVPROC) __GLeeGetProcAddress("wglDXObjectAccessNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglDXLockObjectsNV = (GLEEPFNWGLDXLOCKOBJECTSNVPROC) __GLeeGetProcAddress("wglDXLockObjectsNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglDXUnlockObjectsNV = (GLEEPFNWGLDXUNLOCKOBJECTSNVPROC) __GLeeGetProcAddress("wglDXUnlockObjectsNV"))!=0) nLinked++; #endif if (nLinked==8) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_NV_DX_interop2(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_EXT_swap_control_tear(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_WGL_EXT_display_color_table(void) { GLint nLinked=0; #ifdef __GLEE_WGL_EXT_display_color_table if ((GLeeFuncPtr_wglCreateDisplayColorTableEXT = (GLEEPFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglCreateDisplayColorTableEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglLoadDisplayColorTableEXT = (GLEEPFNWGLLOADDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglLoadDisplayColorTableEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglBindDisplayColorTableEXT = (GLEEPFNWGLBINDDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglBindDisplayColorTableEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglDestroyDisplayColorTableEXT = (GLEEPFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) __GLeeGetProcAddress("wglDestroyDisplayColorTableEXT"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_EXT_extensions_string(void) { GLint nLinked=0; #ifdef __GLEE_WGL_EXT_extensions_string if ((GLeeFuncPtr_wglGetExtensionsStringEXT = (GLEEPFNWGLGETEXTENSIONSSTRINGEXTPROC) __GLeeGetProcAddress("wglGetExtensionsStringEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_EXT_swap_control(void) { GLint nLinked=0; #ifdef __GLEE_WGL_EXT_swap_control if ((GLeeFuncPtr_wglSwapIntervalEXT = (GLEEPFNWGLSWAPINTERVALEXTPROC) __GLeeGetProcAddress("wglSwapIntervalEXT"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetSwapIntervalEXT = (GLEEPFNWGLGETSWAPINTERVALEXTPROC) __GLeeGetProcAddress("wglGetSwapIntervalEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_NV_vertex_array_range(void) { GLint nLinked=0; #ifdef __GLEE_WGL_NV_vertex_array_range if ((GLeeFuncPtr_wglAllocateMemoryNV = (GLEEPFNWGLALLOCATEMEMORYNVPROC) __GLeeGetProcAddress("wglAllocateMemoryNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglFreeMemoryNV = (GLEEPFNWGLFREEMEMORYNVPROC) __GLeeGetProcAddress("wglFreeMemoryNV"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_OML_sync_control(void) { GLint nLinked=0; #ifdef __GLEE_WGL_OML_sync_control if ((GLeeFuncPtr_wglGetSyncValuesOML = (GLEEPFNWGLGETSYNCVALUESOMLPROC) __GLeeGetProcAddress("wglGetSyncValuesOML"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetMscRateOML = (GLEEPFNWGLGETMSCRATEOMLPROC) __GLeeGetProcAddress("wglGetMscRateOML"))!=0) nLinked++; if ((GLeeFuncPtr_wglSwapBuffersMscOML = (GLEEPFNWGLSWAPBUFFERSMSCOMLPROC) __GLeeGetProcAddress("wglSwapBuffersMscOML"))!=0) nLinked++; if ((GLeeFuncPtr_wglSwapLayerBuffersMscOML = (GLEEPFNWGLSWAPLAYERBUFFERSMSCOMLPROC) __GLeeGetProcAddress("wglSwapLayerBuffersMscOML"))!=0) nLinked++; if ((GLeeFuncPtr_wglWaitForMscOML = (GLEEPFNWGLWAITFORMSCOMLPROC) __GLeeGetProcAddress("wglWaitForMscOML"))!=0) nLinked++; if ((GLeeFuncPtr_wglWaitForSbcOML = (GLEEPFNWGLWAITFORSBCOMLPROC) __GLeeGetProcAddress("wglWaitForSbcOML"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_I3D_swap_frame_usage(void) { GLint nLinked=0; #ifdef __GLEE_WGL_I3D_swap_frame_usage if ((GLeeFuncPtr_wglGetFrameUsageI3D = (GLEEPFNWGLGETFRAMEUSAGEI3DPROC) __GLeeGetProcAddress("wglGetFrameUsageI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglBeginFrameTrackingI3D = (GLEEPFNWGLBEGINFRAMETRACKINGI3DPROC) __GLeeGetProcAddress("wglBeginFrameTrackingI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglEndFrameTrackingI3D = (GLEEPFNWGLENDFRAMETRACKINGI3DPROC) __GLeeGetProcAddress("wglEndFrameTrackingI3D"))!=0) nLinked++; if ((GLeeFuncPtr_wglQueryFrameTrackingI3D = (GLEEPFNWGLQUERYFRAMETRACKINGI3DPROC) __GLeeGetProcAddress("wglQueryFrameTrackingI3D"))!=0) nLinked++; #endif if (nLinked==4) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_WGL_NV_video_output(void) { GLint nLinked=0; #ifdef __GLEE_WGL_NV_video_output if ((GLeeFuncPtr_wglGetVideoDeviceNV = (GLEEPFNWGLGETVIDEODEVICENVPROC) __GLeeGetProcAddress("wglGetVideoDeviceNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglReleaseVideoDeviceNV = (GLEEPFNWGLRELEASEVIDEODEVICENVPROC) __GLeeGetProcAddress("wglReleaseVideoDeviceNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglBindVideoImageNV = (GLEEPFNWGLBINDVIDEOIMAGENVPROC) __GLeeGetProcAddress("wglBindVideoImageNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglReleaseVideoImageNV = (GLEEPFNWGLRELEASEVIDEOIMAGENVPROC) __GLeeGetProcAddress("wglReleaseVideoImageNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglSendPbufferToVideoNV = (GLEEPFNWGLSENDPBUFFERTOVIDEONVPROC) __GLeeGetProcAddress("wglSendPbufferToVideoNV"))!=0) nLinked++; if ((GLeeFuncPtr_wglGetVideoInfoNV = (GLEEPFNWGLGETVIDEOINFONVPROC) __GLeeGetProcAddress("wglGetVideoInfoNV"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLEE_LINK_FUNCTION __GLeeWGLLoadFunction[47]; void initWGLLoadFunctions(void) { __GLeeWGLLoadFunction[0]=__GLeeLink_WGL_ARB_buffer_region; __GLeeWGLLoadFunction[1]=__GLeeLink_WGL_ARB_multisample; __GLeeWGLLoadFunction[2]=__GLeeLink_WGL_ARB_extensions_string; __GLeeWGLLoadFunction[3]=__GLeeLink_WGL_ARB_pixel_format; __GLeeWGLLoadFunction[4]=__GLeeLink_WGL_ARB_make_current_read; __GLeeWGLLoadFunction[5]=__GLeeLink_WGL_ARB_pbuffer; __GLeeWGLLoadFunction[6]=__GLeeLink_WGL_ARB_render_texture; __GLeeWGLLoadFunction[7]=__GLeeLink_WGL_ARB_pixel_format_float; __GLeeWGLLoadFunction[8]=__GLeeLink_WGL_ARB_framebuffer_sRGB; __GLeeWGLLoadFunction[9]=__GLeeLink_WGL_ARB_create_context; __GLeeWGLLoadFunction[10]=__GLeeLink_WGL_ARB_create_context_profile; __GLeeWGLLoadFunction[11]=__GLeeLink_WGL_ARB_create_context_robustness; __GLeeWGLLoadFunction[12]=__GLeeLink_WGL_EXT_make_current_read; __GLeeWGLLoadFunction[13]=__GLeeLink_WGL_EXT_pixel_format; __GLeeWGLLoadFunction[14]=__GLeeLink_WGL_EXT_pbuffer; __GLeeWGLLoadFunction[15]=__GLeeLink_WGL_EXT_depth_float; __GLeeWGLLoadFunction[16]=__GLeeLink_WGL_3DFX_multisample; __GLeeWGLLoadFunction[17]=__GLeeLink_WGL_EXT_multisample; __GLeeWGLLoadFunction[18]=__GLeeLink_WGL_I3D_digital_video_control; __GLeeWGLLoadFunction[19]=__GLeeLink_WGL_I3D_gamma; __GLeeWGLLoadFunction[20]=__GLeeLink_WGL_I3D_genlock; __GLeeWGLLoadFunction[21]=__GLeeLink_WGL_I3D_image_buffer; __GLeeWGLLoadFunction[22]=__GLeeLink_WGL_I3D_swap_frame_lock; __GLeeWGLLoadFunction[23]=__GLeeLink_WGL_NV_render_depth_texture; __GLeeWGLLoadFunction[24]=__GLeeLink_WGL_NV_render_texture_rectangle; __GLeeWGLLoadFunction[25]=__GLeeLink_WGL_ATI_pixel_format_float; __GLeeWGLLoadFunction[26]=__GLeeLink_WGL_NV_float_buffer; __GLeeWGLLoadFunction[27]=__GLeeLink_WGL_3DL_stereo_control; __GLeeWGLLoadFunction[28]=__GLeeLink_WGL_EXT_pixel_format_packed_float; __GLeeWGLLoadFunction[29]=__GLeeLink_WGL_EXT_framebuffer_sRGB; __GLeeWGLLoadFunction[30]=__GLeeLink_WGL_NV_present_video; __GLeeWGLLoadFunction[31]=__GLeeLink_WGL_NV_swap_group; __GLeeWGLLoadFunction[32]=__GLeeLink_WGL_NV_gpu_affinity; __GLeeWGLLoadFunction[33]=__GLeeLink_WGL_AMD_gpu_association; __GLeeWGLLoadFunction[34]=__GLeeLink_WGL_NV_copy_image; __GLeeWGLLoadFunction[35]=__GLeeLink_WGL_NV_multisample_coverage; __GLeeWGLLoadFunction[36]=__GLeeLink_WGL_EXT_create_context_es2_profile; __GLeeWGLLoadFunction[37]=__GLeeLink_WGL_NV_DX_interop; __GLeeWGLLoadFunction[38]=__GLeeLink_WGL_NV_DX_interop2; __GLeeWGLLoadFunction[39]=__GLeeLink_WGL_EXT_swap_control_tear; __GLeeWGLLoadFunction[40]=__GLeeLink_WGL_EXT_display_color_table; __GLeeWGLLoadFunction[41]=__GLeeLink_WGL_EXT_extensions_string; __GLeeWGLLoadFunction[42]=__GLeeLink_WGL_EXT_swap_control; __GLeeWGLLoadFunction[43]=__GLeeLink_WGL_NV_vertex_array_range; __GLeeWGLLoadFunction[44]=__GLeeLink_WGL_OML_sync_control; __GLeeWGLLoadFunction[45]=__GLeeLink_WGL_I3D_swap_frame_usage; __GLeeWGLLoadFunction[46]=__GLeeLink_WGL_NV_video_output; } #elif defined(__APPLE__) || defined(__APPLE_CC__) #else /* Linux */ GLuint __GLeeLink_GLX_VERSION_1_3(void) { GLint nLinked=0; #ifdef __GLEE_GLX_VERSION_1_3 if ((GLeeFuncPtr_glXGetFBConfigs = (GLEEPFNGLXGETFBCONFIGSPROC) __GLeeGetProcAddress("glXGetFBConfigs"))!=0) nLinked++; if ((GLeeFuncPtr_glXChooseFBConfig = (GLEEPFNGLXCHOOSEFBCONFIGPROC) __GLeeGetProcAddress("glXChooseFBConfig"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetFBConfigAttrib = (GLEEPFNGLXGETFBCONFIGATTRIBPROC) __GLeeGetProcAddress("glXGetFBConfigAttrib"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetVisualFromFBConfig = (GLEEPFNGLXGETVISUALFROMFBCONFIGPROC) __GLeeGetProcAddress("glXGetVisualFromFBConfig"))!=0) nLinked++; if ((GLeeFuncPtr_glXCreateWindow = (GLEEPFNGLXCREATEWINDOWPROC) __GLeeGetProcAddress("glXCreateWindow"))!=0) nLinked++; if ((GLeeFuncPtr_glXDestroyWindow = (GLEEPFNGLXDESTROYWINDOWPROC) __GLeeGetProcAddress("glXDestroyWindow"))!=0) nLinked++; if ((GLeeFuncPtr_glXCreatePixmap = (GLEEPFNGLXCREATEPIXMAPPROC) __GLeeGetProcAddress("glXCreatePixmap"))!=0) nLinked++; if ((GLeeFuncPtr_glXDestroyPixmap = (GLEEPFNGLXDESTROYPIXMAPPROC) __GLeeGetProcAddress("glXDestroyPixmap"))!=0) nLinked++; if ((GLeeFuncPtr_glXCreatePbuffer = (GLEEPFNGLXCREATEPBUFFERPROC) __GLeeGetProcAddress("glXCreatePbuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glXDestroyPbuffer = (GLEEPFNGLXDESTROYPBUFFERPROC) __GLeeGetProcAddress("glXDestroyPbuffer"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryDrawable = (GLEEPFNGLXQUERYDRAWABLEPROC) __GLeeGetProcAddress("glXQueryDrawable"))!=0) nLinked++; if ((GLeeFuncPtr_glXCreateNewContext = (GLEEPFNGLXCREATENEWCONTEXTPROC) __GLeeGetProcAddress("glXCreateNewContext"))!=0) nLinked++; if ((GLeeFuncPtr_glXMakeContextCurrent = (GLEEPFNGLXMAKECONTEXTCURRENTPROC) __GLeeGetProcAddress("glXMakeContextCurrent"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetCurrentReadDrawable = (GLEEPFNGLXGETCURRENTREADDRAWABLEPROC) __GLeeGetProcAddress("glXGetCurrentReadDrawable"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetCurrentDisplay = (GLEEPFNGLXGETCURRENTDISPLAYPROC) __GLeeGetProcAddress("glXGetCurrentDisplay"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryContext = (GLEEPFNGLXQUERYCONTEXTPROC) __GLeeGetProcAddress("glXQueryContext"))!=0) nLinked++; if ((GLeeFuncPtr_glXSelectEvent = (GLEEPFNGLXSELECTEVENTPROC) __GLeeGetProcAddress("glXSelectEvent"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetSelectedEvent = (GLEEPFNGLXGETSELECTEDEVENTPROC) __GLeeGetProcAddress("glXGetSelectedEvent"))!=0) nLinked++; #endif if (nLinked==18) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_VERSION_1_4(void) { GLint nLinked=0; #ifdef __GLEE_GLX_VERSION_1_4 if ((GLeeFuncPtr_glXGetProcAddress = (GLEEPFNGLXGETPROCADDRESSPROC) __GLeeGetProcAddress("glXGetProcAddress"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_ARB_multisample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_ARB_vertex_buffer_object(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_ARB_fbconfig_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_ARB_framebuffer_sRGB(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_ARB_create_context(void) { GLint nLinked=0; #ifdef __GLEE_GLX_ARB_create_context if ((GLeeFuncPtr_glXCreateContextAttribsARB = (GLEEPFNGLXCREATECONTEXTATTRIBSARBPROC) __GLeeGetProcAddress("glXCreateContextAttribsARB"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_ARB_create_context_profile(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_ARB_create_context_robustness(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_SGIS_multisample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_EXT_visual_info(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_SGI_swap_control(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SGI_swap_control if ((GLeeFuncPtr_glXSwapIntervalSGI = (GLEEPFNGLXSWAPINTERVALSGIPROC) __GLeeGetProcAddress("glXSwapIntervalSGI"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_SGI_video_sync(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SGI_video_sync if ((GLeeFuncPtr_glXGetVideoSyncSGI = (GLEEPFNGLXGETVIDEOSYNCSGIPROC) __GLeeGetProcAddress("glXGetVideoSyncSGI"))!=0) nLinked++; if ((GLeeFuncPtr_glXWaitVideoSyncSGI = (GLEEPFNGLXWAITVIDEOSYNCSGIPROC) __GLeeGetProcAddress("glXWaitVideoSyncSGI"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_SGI_make_current_read(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SGI_make_current_read if ((GLeeFuncPtr_glXMakeCurrentReadSGI = (GLEEPFNGLXMAKECURRENTREADSGIPROC) __GLeeGetProcAddress("glXMakeCurrentReadSGI"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetCurrentReadDrawableSGI = (GLEEPFNGLXGETCURRENTREADDRAWABLESGIPROC) __GLeeGetProcAddress("glXGetCurrentReadDrawableSGI"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_EXT_visual_rating(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_EXT_import_context(void) { GLint nLinked=0; #ifdef __GLEE_GLX_EXT_import_context if ((GLeeFuncPtr_glXGetCurrentDisplayEXT = (GLEEPFNGLXGETCURRENTDISPLAYEXTPROC) __GLeeGetProcAddress("glXGetCurrentDisplayEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryContextInfoEXT = (GLEEPFNGLXQUERYCONTEXTINFOEXTPROC) __GLeeGetProcAddress("glXQueryContextInfoEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetContextIDEXT = (GLEEPFNGLXGETCONTEXTIDEXTPROC) __GLeeGetProcAddress("glXGetContextIDEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glXImportContextEXT = (GLEEPFNGLXIMPORTCONTEXTEXTPROC) __GLeeGetProcAddress("glXImportContextEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glXFreeContextEXT = (GLEEPFNGLXFREECONTEXTEXTPROC) __GLeeGetProcAddress("glXFreeContextEXT"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_SGIX_fbconfig(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SGIX_fbconfig if ((GLeeFuncPtr_glXGetFBConfigAttribSGIX = (GLEEPFNGLXGETFBCONFIGATTRIBSGIXPROC) __GLeeGetProcAddress("glXGetFBConfigAttribSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXChooseFBConfigSGIX = (GLEEPFNGLXCHOOSEFBCONFIGSGIXPROC) __GLeeGetProcAddress("glXChooseFBConfigSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXCreateGLXPixmapWithConfigSGIX = (GLEEPFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) __GLeeGetProcAddress("glXCreateGLXPixmapWithConfigSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXCreateContextWithConfigSGIX = (GLEEPFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) __GLeeGetProcAddress("glXCreateContextWithConfigSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetVisualFromFBConfigSGIX = (GLEEPFNGLXGETVISUALFROMFBCONFIGSGIXPROC) __GLeeGetProcAddress("glXGetVisualFromFBConfigSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetFBConfigFromVisualSGIX = (GLEEPFNGLXGETFBCONFIGFROMVISUALSGIXPROC) __GLeeGetProcAddress("glXGetFBConfigFromVisualSGIX"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_SGIX_pbuffer(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SGIX_pbuffer if ((GLeeFuncPtr_glXCreateGLXPbufferSGIX = (GLEEPFNGLXCREATEGLXPBUFFERSGIXPROC) __GLeeGetProcAddress("glXCreateGLXPbufferSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXDestroyGLXPbufferSGIX = (GLEEPFNGLXDESTROYGLXPBUFFERSGIXPROC) __GLeeGetProcAddress("glXDestroyGLXPbufferSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryGLXPbufferSGIX = (GLEEPFNGLXQUERYGLXPBUFFERSGIXPROC) __GLeeGetProcAddress("glXQueryGLXPbufferSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXSelectEventSGIX = (GLEEPFNGLXSELECTEVENTSGIXPROC) __GLeeGetProcAddress("glXSelectEventSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetSelectedEventSGIX = (GLEEPFNGLXGETSELECTEDEVENTSGIXPROC) __GLeeGetProcAddress("glXGetSelectedEventSGIX"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_SGI_cushion(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SGI_cushion if ((GLeeFuncPtr_glXCushionSGI = (GLEEPFNGLXCUSHIONSGIPROC) __GLeeGetProcAddress("glXCushionSGI"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_SGIX_video_resize(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SGIX_video_resize if ((GLeeFuncPtr_glXBindChannelToWindowSGIX = (GLEEPFNGLXBINDCHANNELTOWINDOWSGIXPROC) __GLeeGetProcAddress("glXBindChannelToWindowSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXChannelRectSGIX = (GLEEPFNGLXCHANNELRECTSGIXPROC) __GLeeGetProcAddress("glXChannelRectSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryChannelRectSGIX = (GLEEPFNGLXQUERYCHANNELRECTSGIXPROC) __GLeeGetProcAddress("glXQueryChannelRectSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryChannelDeltasSGIX = (GLEEPFNGLXQUERYCHANNELDELTASSGIXPROC) __GLeeGetProcAddress("glXQueryChannelDeltasSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXChannelRectSyncSGIX = (GLEEPFNGLXCHANNELRECTSYNCSGIXPROC) __GLeeGetProcAddress("glXChannelRectSyncSGIX"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_SGIX_swap_group(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SGIX_swap_group if ((GLeeFuncPtr_glXJoinSwapGroupSGIX = (GLEEPFNGLXJOINSWAPGROUPSGIXPROC) __GLeeGetProcAddress("glXJoinSwapGroupSGIX"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_SGIX_swap_barrier(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SGIX_swap_barrier if ((GLeeFuncPtr_glXBindSwapBarrierSGIX = (GLEEPFNGLXBINDSWAPBARRIERSGIXPROC) __GLeeGetProcAddress("glXBindSwapBarrierSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryMaxSwapBarriersSGIX = (GLEEPFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) __GLeeGetProcAddress("glXQueryMaxSwapBarriersSGIX"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_SGIS_blended_overlay(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_SGIS_shared_multisample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_SUN_get_transparent_index(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SUN_get_transparent_index if ((GLeeFuncPtr_glXGetTransparentIndexSUN = (GLEEPFNGLXGETTRANSPARENTINDEXSUNPROC) __GLeeGetProcAddress("glXGetTransparentIndexSUN"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_3DFX_multisample(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_MESA_copy_sub_buffer(void) { GLint nLinked=0; #ifdef __GLEE_GLX_MESA_copy_sub_buffer if ((GLeeFuncPtr_glXCopySubBufferMESA = (GLEEPFNGLXCOPYSUBBUFFERMESAPROC) __GLeeGetProcAddress("glXCopySubBufferMESA"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_MESA_pixmap_colormap(void) { GLint nLinked=0; #ifdef __GLEE_GLX_MESA_pixmap_colormap if ((GLeeFuncPtr_glXCreateGLXPixmapMESA = (GLEEPFNGLXCREATEGLXPIXMAPMESAPROC) __GLeeGetProcAddress("glXCreateGLXPixmapMESA"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_MESA_release_buffers(void) { GLint nLinked=0; #ifdef __GLEE_GLX_MESA_release_buffers if ((GLeeFuncPtr_glXReleaseBuffersMESA = (GLEEPFNGLXRELEASEBUFFERSMESAPROC) __GLeeGetProcAddress("glXReleaseBuffersMESA"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_MESA_set_3dfx_mode(void) { GLint nLinked=0; #ifdef __GLEE_GLX_MESA_set_3dfx_mode if ((GLeeFuncPtr_glXSet3DfxModeMESA = (GLEEPFNGLXSET3DFXMODEMESAPROC) __GLeeGetProcAddress("glXSet3DfxModeMESA"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_SGIX_visual_select_group(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_OML_swap_method(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_OML_sync_control(void) { GLint nLinked=0; #ifdef __GLEE_GLX_OML_sync_control if ((GLeeFuncPtr_glXGetSyncValuesOML = (GLEEPFNGLXGETSYNCVALUESOMLPROC) __GLeeGetProcAddress("glXGetSyncValuesOML"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetMscRateOML = (GLEEPFNGLXGETMSCRATEOMLPROC) __GLeeGetProcAddress("glXGetMscRateOML"))!=0) nLinked++; if ((GLeeFuncPtr_glXSwapBuffersMscOML = (GLEEPFNGLXSWAPBUFFERSMSCOMLPROC) __GLeeGetProcAddress("glXSwapBuffersMscOML"))!=0) nLinked++; if ((GLeeFuncPtr_glXWaitForMscOML = (GLEEPFNGLXWAITFORMSCOMLPROC) __GLeeGetProcAddress("glXWaitForMscOML"))!=0) nLinked++; if ((GLeeFuncPtr_glXWaitForSbcOML = (GLEEPFNGLXWAITFORSBCOMLPROC) __GLeeGetProcAddress("glXWaitForSbcOML"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_NV_float_buffer(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_SGIX_hyperpipe(void) { GLint nLinked=0; #ifdef __GLEE_GLX_SGIX_hyperpipe if ((GLeeFuncPtr_glXQueryHyperpipeNetworkSGIX = (GLEEPFNGLXQUERYHYPERPIPENETWORKSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeNetworkSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXHyperpipeConfigSGIX = (GLEEPFNGLXHYPERPIPECONFIGSGIXPROC) __GLeeGetProcAddress("glXHyperpipeConfigSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryHyperpipeConfigSGIX = (GLEEPFNGLXQUERYHYPERPIPECONFIGSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeConfigSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXDestroyHyperpipeConfigSGIX = (GLEEPFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) __GLeeGetProcAddress("glXDestroyHyperpipeConfigSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXBindHyperpipeSGIX = (GLEEPFNGLXBINDHYPERPIPESGIXPROC) __GLeeGetProcAddress("glXBindHyperpipeSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryHyperpipeBestAttribSGIX = (GLEEPFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeBestAttribSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXHyperpipeAttribSGIX = (GLEEPFNGLXHYPERPIPEATTRIBSGIXPROC) __GLeeGetProcAddress("glXHyperpipeAttribSGIX"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryHyperpipeAttribSGIX = (GLEEPFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) __GLeeGetProcAddress("glXQueryHyperpipeAttribSGIX"))!=0) nLinked++; #endif if (nLinked==8) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_MESA_agp_offset(void) { GLint nLinked=0; #ifdef __GLEE_GLX_MESA_agp_offset if ((GLeeFuncPtr_glXGetAGPOffsetMESA = (GLEEPFNGLXGETAGPOFFSETMESAPROC) __GLeeGetProcAddress("glXGetAGPOffsetMESA"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_EXT_fbconfig_packed_float(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_EXT_framebuffer_sRGB(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_EXT_texture_from_pixmap(void) { GLint nLinked=0; #ifdef __GLEE_GLX_EXT_texture_from_pixmap if ((GLeeFuncPtr_glXBindTexImageEXT = (GLEEPFNGLXBINDTEXIMAGEEXTPROC) __GLeeGetProcAddress("glXBindTexImageEXT"))!=0) nLinked++; if ((GLeeFuncPtr_glXReleaseTexImageEXT = (GLEEPFNGLXRELEASETEXIMAGEEXTPROC) __GLeeGetProcAddress("glXReleaseTexImageEXT"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_NV_present_video(void) { GLint nLinked=0; #ifdef __GLEE_GLX_NV_present_video if ((GLeeFuncPtr_glXEnumerateVideoDevicesNV = (GLEEPFNGLXENUMERATEVIDEODEVICESNVPROC) __GLeeGetProcAddress("glXEnumerateVideoDevicesNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXBindVideoDeviceNV = (GLEEPFNGLXBINDVIDEODEVICENVPROC) __GLeeGetProcAddress("glXBindVideoDeviceNV"))!=0) nLinked++; #endif if (nLinked==2) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_NV_video_out(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_NV_swap_group(void) { GLint nLinked=0; #ifdef __GLEE_GLX_NV_swap_group if ((GLeeFuncPtr_glXJoinSwapGroupNV = (GLEEPFNGLXJOINSWAPGROUPNVPROC) __GLeeGetProcAddress("glXJoinSwapGroupNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXBindSwapBarrierNV = (GLEEPFNGLXBINDSWAPBARRIERNVPROC) __GLeeGetProcAddress("glXBindSwapBarrierNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXQuerySwapGroupNV = (GLEEPFNGLXQUERYSWAPGROUPNVPROC) __GLeeGetProcAddress("glXQuerySwapGroupNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryMaxSwapGroupsNV = (GLEEPFNGLXQUERYMAXSWAPGROUPSNVPROC) __GLeeGetProcAddress("glXQueryMaxSwapGroupsNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryFrameCountNV = (GLEEPFNGLXQUERYFRAMECOUNTNVPROC) __GLeeGetProcAddress("glXQueryFrameCountNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXResetFrameCountNV = (GLEEPFNGLXRESETFRAMECOUNTNVPROC) __GLeeGetProcAddress("glXResetFrameCountNV"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_NV_video_capture(void) { GLint nLinked=0; #ifdef __GLEE_GLX_NV_video_capture if ((GLeeFuncPtr_glXBindVideoCaptureDeviceNV = (GLEEPFNGLXBINDVIDEOCAPTUREDEVICENVPROC) __GLeeGetProcAddress("glXBindVideoCaptureDeviceNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXEnumerateVideoCaptureDevicesNV = (GLEEPFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC) __GLeeGetProcAddress("glXEnumerateVideoCaptureDevicesNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXLockVideoCaptureDeviceNV = (GLEEPFNGLXLOCKVIDEOCAPTUREDEVICENVPROC) __GLeeGetProcAddress("glXLockVideoCaptureDeviceNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXQueryVideoCaptureDeviceNV = (GLEEPFNGLXQUERYVIDEOCAPTUREDEVICENVPROC) __GLeeGetProcAddress("glXQueryVideoCaptureDeviceNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXReleaseVideoCaptureDeviceNV = (GLEEPFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) __GLeeGetProcAddress("glXReleaseVideoCaptureDeviceNV"))!=0) nLinked++; #endif if (nLinked==5) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_EXT_swap_control(void) { GLint nLinked=0; #ifdef __GLEE_GLX_EXT_swap_control if ((GLeeFuncPtr_glXSwapIntervalEXT = (GLEEPFNGLXSWAPINTERVALEXTPROC) __GLeeGetProcAddress("glXSwapIntervalEXT"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_NV_copy_image(void) { GLint nLinked=0; #ifdef __GLEE_GLX_NV_copy_image if ((GLeeFuncPtr_glXCopyImageSubDataNV = (GLEEPFNGLXCOPYIMAGESUBDATANVPROC) __GLeeGetProcAddress("glXCopyImageSubDataNV"))!=0) nLinked++; #endif if (nLinked==1) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLuint __GLeeLink_GLX_INTEL_swap_event(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_NV_multisample_coverage(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_AMD_gpu_association(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_EXT_create_context_es2_profile(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_EXT_create_context_es_profile(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_EXT_swap_control_tear(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_EXT_buffer_age(void) {return GLEE_LINK_COMPLETE;} GLuint __GLeeLink_GLX_NV_video_output(void) { GLint nLinked=0; #ifdef __GLEE_GLX_NV_video_output if ((GLeeFuncPtr_glXGetVideoDeviceNV = (GLEEPFNGLXGETVIDEODEVICENVPROC) __GLeeGetProcAddress("glXGetVideoDeviceNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXReleaseVideoDeviceNV = (GLEEPFNGLXRELEASEVIDEODEVICENVPROC) __GLeeGetProcAddress("glXReleaseVideoDeviceNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXBindVideoImageNV = (GLEEPFNGLXBINDVIDEOIMAGENVPROC) __GLeeGetProcAddress("glXBindVideoImageNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXReleaseVideoImageNV = (GLEEPFNGLXRELEASEVIDEOIMAGENVPROC) __GLeeGetProcAddress("glXReleaseVideoImageNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXSendPbufferToVideoNV = (GLEEPFNGLXSENDPBUFFERTOVIDEONVPROC) __GLeeGetProcAddress("glXSendPbufferToVideoNV"))!=0) nLinked++; if ((GLeeFuncPtr_glXGetVideoInfoNV = (GLEEPFNGLXGETVIDEOINFONVPROC) __GLeeGetProcAddress("glXGetVideoInfoNV"))!=0) nLinked++; #endif if (nLinked==6) return GLEE_LINK_COMPLETE; if (nLinked==0) return GLEE_LINK_FAIL; return GLEE_LINK_PARTIAL; } GLEE_LINK_FUNCTION __GLeeGLXLoadFunction[53]; void initGLXLoadFunctions(void) { __GLeeGLXLoadFunction[0]=__GLeeLink_GLX_VERSION_1_3; __GLeeGLXLoadFunction[1]=__GLeeLink_GLX_VERSION_1_4; __GLeeGLXLoadFunction[2]=__GLeeLink_GLX_ARB_multisample; __GLeeGLXLoadFunction[3]=__GLeeLink_GLX_ARB_vertex_buffer_object; __GLeeGLXLoadFunction[4]=__GLeeLink_GLX_ARB_fbconfig_float; __GLeeGLXLoadFunction[5]=__GLeeLink_GLX_ARB_framebuffer_sRGB; __GLeeGLXLoadFunction[6]=__GLeeLink_GLX_ARB_create_context; __GLeeGLXLoadFunction[7]=__GLeeLink_GLX_ARB_create_context_profile; __GLeeGLXLoadFunction[8]=__GLeeLink_GLX_ARB_create_context_robustness; __GLeeGLXLoadFunction[9]=__GLeeLink_GLX_SGIS_multisample; __GLeeGLXLoadFunction[10]=__GLeeLink_GLX_EXT_visual_info; __GLeeGLXLoadFunction[11]=__GLeeLink_GLX_SGI_swap_control; __GLeeGLXLoadFunction[12]=__GLeeLink_GLX_SGI_video_sync; __GLeeGLXLoadFunction[13]=__GLeeLink_GLX_SGI_make_current_read; __GLeeGLXLoadFunction[14]=__GLeeLink_GLX_EXT_visual_rating; __GLeeGLXLoadFunction[15]=__GLeeLink_GLX_EXT_import_context; __GLeeGLXLoadFunction[16]=__GLeeLink_GLX_SGIX_fbconfig; __GLeeGLXLoadFunction[17]=__GLeeLink_GLX_SGIX_pbuffer; __GLeeGLXLoadFunction[18]=__GLeeLink_GLX_SGI_cushion; __GLeeGLXLoadFunction[19]=__GLeeLink_GLX_SGIX_video_resize; __GLeeGLXLoadFunction[20]=__GLeeLink_GLX_SGIX_swap_group; __GLeeGLXLoadFunction[21]=__GLeeLink_GLX_SGIX_swap_barrier; __GLeeGLXLoadFunction[22]=__GLeeLink_GLX_SGIS_blended_overlay; __GLeeGLXLoadFunction[23]=__GLeeLink_GLX_SGIS_shared_multisample; __GLeeGLXLoadFunction[24]=__GLeeLink_GLX_SUN_get_transparent_index; __GLeeGLXLoadFunction[25]=__GLeeLink_GLX_3DFX_multisample; __GLeeGLXLoadFunction[26]=__GLeeLink_GLX_MESA_copy_sub_buffer; __GLeeGLXLoadFunction[27]=__GLeeLink_GLX_MESA_pixmap_colormap; __GLeeGLXLoadFunction[28]=__GLeeLink_GLX_MESA_release_buffers; __GLeeGLXLoadFunction[29]=__GLeeLink_GLX_MESA_set_3dfx_mode; __GLeeGLXLoadFunction[30]=__GLeeLink_GLX_SGIX_visual_select_group; __GLeeGLXLoadFunction[31]=__GLeeLink_GLX_OML_swap_method; __GLeeGLXLoadFunction[32]=__GLeeLink_GLX_OML_sync_control; __GLeeGLXLoadFunction[33]=__GLeeLink_GLX_NV_float_buffer; __GLeeGLXLoadFunction[34]=__GLeeLink_GLX_SGIX_hyperpipe; __GLeeGLXLoadFunction[35]=__GLeeLink_GLX_MESA_agp_offset; __GLeeGLXLoadFunction[36]=__GLeeLink_GLX_EXT_fbconfig_packed_float; __GLeeGLXLoadFunction[37]=__GLeeLink_GLX_EXT_framebuffer_sRGB; __GLeeGLXLoadFunction[38]=__GLeeLink_GLX_EXT_texture_from_pixmap; __GLeeGLXLoadFunction[39]=__GLeeLink_GLX_NV_present_video; __GLeeGLXLoadFunction[40]=__GLeeLink_GLX_NV_video_out; __GLeeGLXLoadFunction[41]=__GLeeLink_GLX_NV_swap_group; __GLeeGLXLoadFunction[42]=__GLeeLink_GLX_NV_video_capture; __GLeeGLXLoadFunction[43]=__GLeeLink_GLX_EXT_swap_control; __GLeeGLXLoadFunction[44]=__GLeeLink_GLX_NV_copy_image; __GLeeGLXLoadFunction[45]=__GLeeLink_GLX_INTEL_swap_event; __GLeeGLXLoadFunction[46]=__GLeeLink_GLX_NV_multisample_coverage; __GLeeGLXLoadFunction[47]=__GLeeLink_GLX_AMD_gpu_association; __GLeeGLXLoadFunction[48]=__GLeeLink_GLX_EXT_create_context_es2_profile; __GLeeGLXLoadFunction[49]=__GLeeLink_GLX_EXT_create_context_es_profile; __GLeeGLXLoadFunction[50]=__GLeeLink_GLX_EXT_swap_control_tear; __GLeeGLXLoadFunction[51]=__GLeeLink_GLX_EXT_buffer_age; __GLeeGLXLoadFunction[52]=__GLeeLink_GLX_NV_video_output; } #endif /* end Linux */ /***************************************************************** * GLee internal types *****************************************************************/ typedef struct { char ** names; int * lengths; int numNames; }ExtensionList; /***************************************************************** * GLee internal variables *****************************************************************/ char GLeeErrorString[256]=""; /***************************************************************** * GLee internal functions *****************************************************************/ void __GLeeExtList_init(ExtensionList *extList) { extList->names=0; extList->lengths=0; extList->numNames=0; } void __GLeeExtList_clean(ExtensionList *extList) { int a; for (a=0;anumNames;a++) { if (extList->names[a]!=0) free((void *)extList->names[a]); } if (extList->names!=0) free((void *)extList->names); if (extList->lengths!=0) free((void *)extList->lengths); extList->names=0; extList->lengths=0; extList->numNames=0; } void __GLeeExtList_add(ExtensionList *extList, const char * extName) { int length=strlen(extName)+1; int i=extList->numNames; int n=i+1; if (i==0) { extList->lengths=(int *)malloc(sizeof(int)); extList->names=(char **)malloc(sizeof(char *)); }else { extList->lengths=(int *)realloc((void *)extList->lengths, n*sizeof(int)); extList->names=(char **)realloc((void *)extList->names, n*sizeof(char *)); } extList->names[i]=strdup(extName); extList->lengths[i]=length; extList->numNames++; } const char *__GLeeGetExtStrPlat( void ) { #ifdef _WIN32 if (!_GLEE_WGL_ARB_extensions_string) wglGetExtensionsStringARB = (GLEEPFNWGLGETEXTENSIONSSTRINGARBPROC) wglGetProcAddress("wglGetExtensionsStringARB"); if (wglGetExtensionsStringARB) return (const char *)wglGetExtensionsStringARB(wglGetCurrentDC()); #elif defined(__APPLE__) || defined(__APPLE_CC__) #else Display *dpy=glXGetCurrentDisplay(); if(dpy) { int dpynr=DefaultScreen(dpy); return (const char*)glXQueryExtensionsString(dpy,dpynr); } #endif return 0; } void __GLeeWriteError(const char * errorStr) { int a=0; for (a=0;a<256;a++) { GLeeErrorString[a]=errorStr[a]; } GLeeErrorString[255]='\0'; } int __GLeeGetVersionNumber(char *versionStr) { int major=(int)versionStr[0]-(int)'0'; int minor=(int)versionStr[2]-(int)'0'; return major<<8 | minor; } GLboolean __GLeeGetExtensions(ExtensionList* extList) { const char * platExtStr; const char * glExtStr; char * extStr; char * p; int totalExtStrLen = 0; int addASpace; /* read the platform specific extension string */ platExtStr=__GLeeGetExtStrPlat(); if (!platExtStr) platExtStr=""; else totalExtStrLen = strlen(platExtStr); glExtStr=(const char *)glGetString(GL_EXTENSIONS); if (glExtStr==0) { __GLeeWriteError("glGetString(GL_EXTENSIONS) failed."); return GL_FALSE; } /* If the last character of platExtStr is not a space, we need to add one when we concatenate the extension strings*/ addASpace = 0; if ( totalExtStrLen ) { if ( platExtStr[ totalExtStrLen-1 ] != ' ') { addASpace = 1; totalExtStrLen++; } } /* allocate the extension string */ totalExtStrLen += strlen(glExtStr); extStr=(char *)malloc( totalExtStrLen+1 ); /* allow for a null terminator */ /* concatenate the two extension strings */ snprintf(extStr,totalExtStrLen+1,addASpace?"%s %s":"%s%s",platExtStr,glExtStr); /* extract the extensions */ for (p = extStr + totalExtStrLen; p > extStr; --p) { if (*p == ' ') { __GLeeExtList_add(extList,p+1); *p = 0; } } __GLeeExtList_add(extList,extStr); free((void *)extStr); return GL_TRUE; } GLboolean __GLeeCheckExtension(const char * name, ExtensionList *extensionNames) { int n=extensionNames->numNames; int a; for (a=0;anames[a],name)==0) return GL_TRUE; } return GL_FALSE; } GLEE_EXTERN GLint __GLeeGetExtensionNumber(const char *extensionName, int type) { int a; switch (type) { case 0: for (a=0;a<__GLeeGLNumExtensions;a++) if (strcmp(extensionName,__GLeeGLExtensionNames[a])==0) return a; return -1; #ifdef _WIN32 case 1: for (a=0;a<__GLeeWGLNumExtensions;a++) if (strcmp(extensionName,__GLeeWGLExtensionNames[a])==0) return a; return -1; #elif defined(__APPLE__) || defined(__APPLE_CC__) #else case 2: for (a=0;a<__GLeeGLXNumExtensions;a++) if (strcmp(extensionName,__GLeeGLXExtensionNames[a])==0) return a; return -1; #endif } return -1; } /***************************************************************** * GLee external functions *****************************************************************/ #ifdef _WIN32 GLEE_EXTERN const char * GLeeGetExtStrWGL( void ) { return __GLeeGetExtStrPlat(); } #elif defined(__APPLE__) || defined(__APPLE_CC__) #else GLEE_EXTERN const char * GLeeGetExtStrGLX( void ) { return __GLeeGetExtStrPlat(); } #endif GLEE_EXTERN const char * GLeeGetExtStrGL( void ) { return (const char *)glGetString(GL_EXTENSIONS); } GLEE_EXTERN const char * GLeeGetErrorString( void ) { return GLeeErrorString; } GLboolean __GLeeInitedLoadFunctions=GL_FALSE; GLEE_EXTERN GLint GLeeForceLink(const char * extensionName) { int type=0; int extNum; int len=strlen(extensionName); if (len<5) return GLEE_LINK_FAIL; if (!__GLeeInitedLoadFunctions) { if (!__GLeeInited) GLeeInit(); initGLLoadFunctions(); #ifdef _WIN32 initWGLLoadFunctions(); #elif defined(__APPLE__) || defined(__APPLE_CC__) #else initGLXLoadFunctions(); #endif __GLeeInitedLoadFunctions=GL_TRUE; } if (extensionName[0]=='W') type=1; else if (extensionName[2]=='X') type=2; extNum=__GLeeGetExtensionNumber(extensionName,type); if (extNum==-1) return GLEE_LINK_FAIL; if (type==0) return __GLeeGLLoadFunction[extNum](); #ifdef _WIN32 if (type==1) return __GLeeWGLLoadFunction[extNum](); #elif defined(__APPLE__) || defined(__APPLE_CC__) #else if (type==2) return __GLeeGLXLoadFunction[extNum](); #endif return GLEE_LINK_FAIL; } GLEE_EXTERN GLboolean GLeeEnabled(GLboolean * extensionQueryingVariable) { if (!__GLeeInited) GLeeInit(); return *extensionQueryingVariable; } GLEE_EXTERN GLboolean GLeeInit( void ) { int version; ExtensionList extensionNames; if (__GLeeInited) { return GL_FALSE; } __GLeeExtList_init(&extensionNames); if (!__GLeeGetExtensions(&extensionNames)) { __GLeeWriteError("GL extension querying failed."); __GLeeExtList_clean(&extensionNames); return GL_FALSE; } version=__GLeeGetVersionNumber((char *)glGetString(GL_VERSION)); __GLeeInited = GL_TRUE; /***************************************************************** * Autogenerated linking functions *****************************************************************/ if (version>=258) { _GLEE_VERSION_1_2 = GL_TRUE; __GLeeLink_GL_VERSION_1_2(); } if (__GLeeCheckExtension("GL_ARB_imaging", &extensionNames) ) { _GLEE_ARB_imaging = GL_TRUE; __GLeeLink_GL_ARB_imaging(); } if (version>=259) { _GLEE_VERSION_1_3 = GL_TRUE; __GLeeLink_GL_VERSION_1_3(); } if (version>=260) { _GLEE_VERSION_1_4 = GL_TRUE; __GLeeLink_GL_VERSION_1_4(); } if (version>=261) { _GLEE_VERSION_1_5 = GL_TRUE; __GLeeLink_GL_VERSION_1_5(); } if (version>=512) { _GLEE_VERSION_2_0 = GL_TRUE; __GLeeLink_GL_VERSION_2_0(); } if (version>=513) { _GLEE_VERSION_2_1 = GL_TRUE; __GLeeLink_GL_VERSION_2_1(); } if (version>=768) { _GLEE_VERSION_3_0 = GL_TRUE; __GLeeLink_GL_VERSION_3_0(); } if (version>=769) { _GLEE_VERSION_3_1 = GL_TRUE; __GLeeLink_GL_VERSION_3_1(); } if (version>=770) { _GLEE_VERSION_3_2 = GL_TRUE; __GLeeLink_GL_VERSION_3_2(); } if (version>=771) { _GLEE_VERSION_3_3 = GL_TRUE; __GLeeLink_GL_VERSION_3_3(); } if (version>=1024) { _GLEE_VERSION_4_0 = GL_TRUE; __GLeeLink_GL_VERSION_4_0(); } if (version>=1025) { _GLEE_VERSION_4_1 = GL_TRUE; __GLeeLink_GL_VERSION_4_1(); } if (version>=1026) { _GLEE_VERSION_4_2 = GL_TRUE; __GLeeLink_GL_VERSION_4_2(); } if (version>=1027) { _GLEE_VERSION_4_3 = GL_TRUE; __GLeeLink_GL_VERSION_4_3(); } if (__GLeeCheckExtension("GL_ARB_multitexture", &extensionNames) ) { _GLEE_ARB_multitexture = GL_TRUE; __GLeeLink_GL_ARB_multitexture(); } if (__GLeeCheckExtension("GL_ARB_transpose_matrix", &extensionNames) ) { _GLEE_ARB_transpose_matrix = GL_TRUE; __GLeeLink_GL_ARB_transpose_matrix(); } if (__GLeeCheckExtension("GL_ARB_multisample", &extensionNames) ) { _GLEE_ARB_multisample = GL_TRUE; __GLeeLink_GL_ARB_multisample(); } if (__GLeeCheckExtension("GL_ARB_texture_env_add", &extensionNames) ) { _GLEE_ARB_texture_env_add = GL_TRUE; __GLeeLink_GL_ARB_texture_env_add(); } if (__GLeeCheckExtension("GL_ARB_texture_cube_map", &extensionNames) ) { _GLEE_ARB_texture_cube_map = GL_TRUE; __GLeeLink_GL_ARB_texture_cube_map(); } if (__GLeeCheckExtension("GL_ARB_texture_compression", &extensionNames) ) { _GLEE_ARB_texture_compression = GL_TRUE; __GLeeLink_GL_ARB_texture_compression(); } if (__GLeeCheckExtension("GL_ARB_texture_border_clamp", &extensionNames) ) { _GLEE_ARB_texture_border_clamp = GL_TRUE; __GLeeLink_GL_ARB_texture_border_clamp(); } if (__GLeeCheckExtension("GL_ARB_point_parameters", &extensionNames) ) { _GLEE_ARB_point_parameters = GL_TRUE; __GLeeLink_GL_ARB_point_parameters(); } if (__GLeeCheckExtension("GL_ARB_vertex_blend", &extensionNames) ) { _GLEE_ARB_vertex_blend = GL_TRUE; __GLeeLink_GL_ARB_vertex_blend(); } if (__GLeeCheckExtension("GL_ARB_matrix_palette", &extensionNames) ) { _GLEE_ARB_matrix_palette = GL_TRUE; __GLeeLink_GL_ARB_matrix_palette(); } if (__GLeeCheckExtension("GL_ARB_texture_env_combine", &extensionNames) ) { _GLEE_ARB_texture_env_combine = GL_TRUE; __GLeeLink_GL_ARB_texture_env_combine(); } if (__GLeeCheckExtension("GL_ARB_texture_env_crossbar", &extensionNames) ) { _GLEE_ARB_texture_env_crossbar = GL_TRUE; __GLeeLink_GL_ARB_texture_env_crossbar(); } if (__GLeeCheckExtension("GL_ARB_texture_env_dot3", &extensionNames) ) { _GLEE_ARB_texture_env_dot3 = GL_TRUE; __GLeeLink_GL_ARB_texture_env_dot3(); } if (__GLeeCheckExtension("GL_ARB_texture_mirrored_repeat", &extensionNames) ) { _GLEE_ARB_texture_mirrored_repeat = GL_TRUE; __GLeeLink_GL_ARB_texture_mirrored_repeat(); } if (__GLeeCheckExtension("GL_ARB_depth_texture", &extensionNames) ) { _GLEE_ARB_depth_texture = GL_TRUE; __GLeeLink_GL_ARB_depth_texture(); } if (__GLeeCheckExtension("GL_ARB_shadow", &extensionNames) ) { _GLEE_ARB_shadow = GL_TRUE; __GLeeLink_GL_ARB_shadow(); } if (__GLeeCheckExtension("GL_ARB_shadow_ambient", &extensionNames) ) { _GLEE_ARB_shadow_ambient = GL_TRUE; __GLeeLink_GL_ARB_shadow_ambient(); } if (__GLeeCheckExtension("GL_ARB_window_pos", &extensionNames) ) { _GLEE_ARB_window_pos = GL_TRUE; __GLeeLink_GL_ARB_window_pos(); } if (__GLeeCheckExtension("GL_ARB_vertex_program", &extensionNames) ) { _GLEE_ARB_vertex_program = GL_TRUE; __GLeeLink_GL_ARB_vertex_program(); } if (__GLeeCheckExtension("GL_ARB_fragment_program", &extensionNames) ) { _GLEE_ARB_fragment_program = GL_TRUE; __GLeeLink_GL_ARB_fragment_program(); } if (__GLeeCheckExtension("GL_ARB_vertex_buffer_object", &extensionNames) ) { _GLEE_ARB_vertex_buffer_object = GL_TRUE; __GLeeLink_GL_ARB_vertex_buffer_object(); } if (__GLeeCheckExtension("GL_ARB_occlusion_query", &extensionNames) ) { _GLEE_ARB_occlusion_query = GL_TRUE; __GLeeLink_GL_ARB_occlusion_query(); } if (__GLeeCheckExtension("GL_ARB_shader_objects", &extensionNames) ) { _GLEE_ARB_shader_objects = GL_TRUE; __GLeeLink_GL_ARB_shader_objects(); } if (__GLeeCheckExtension("GL_ARB_vertex_shader", &extensionNames) ) { _GLEE_ARB_vertex_shader = GL_TRUE; __GLeeLink_GL_ARB_vertex_shader(); } if (__GLeeCheckExtension("GL_ARB_fragment_shader", &extensionNames) ) { _GLEE_ARB_fragment_shader = GL_TRUE; __GLeeLink_GL_ARB_fragment_shader(); } if (__GLeeCheckExtension("GL_ARB_shading_language_100", &extensionNames) ) { _GLEE_ARB_shading_language_100 = GL_TRUE; __GLeeLink_GL_ARB_shading_language_100(); } if (__GLeeCheckExtension("GL_ARB_texture_non_power_of_two", &extensionNames) ) { _GLEE_ARB_texture_non_power_of_two = GL_TRUE; __GLeeLink_GL_ARB_texture_non_power_of_two(); } if (__GLeeCheckExtension("GL_ARB_point_sprite", &extensionNames) ) { _GLEE_ARB_point_sprite = GL_TRUE; __GLeeLink_GL_ARB_point_sprite(); } if (__GLeeCheckExtension("GL_ARB_fragment_program_shadow", &extensionNames) ) { _GLEE_ARB_fragment_program_shadow = GL_TRUE; __GLeeLink_GL_ARB_fragment_program_shadow(); } if (__GLeeCheckExtension("GL_ARB_draw_buffers", &extensionNames) ) { _GLEE_ARB_draw_buffers = GL_TRUE; __GLeeLink_GL_ARB_draw_buffers(); } if (__GLeeCheckExtension("GL_ARB_texture_rectangle", &extensionNames) ) { _GLEE_ARB_texture_rectangle = GL_TRUE; __GLeeLink_GL_ARB_texture_rectangle(); } if (__GLeeCheckExtension("GL_ARB_color_buffer_float", &extensionNames) ) { _GLEE_ARB_color_buffer_float = GL_TRUE; __GLeeLink_GL_ARB_color_buffer_float(); } if (__GLeeCheckExtension("GL_ARB_half_float_pixel", &extensionNames) ) { _GLEE_ARB_half_float_pixel = GL_TRUE; __GLeeLink_GL_ARB_half_float_pixel(); } if (__GLeeCheckExtension("GL_ARB_texture_float", &extensionNames) ) { _GLEE_ARB_texture_float = GL_TRUE; __GLeeLink_GL_ARB_texture_float(); } if (__GLeeCheckExtension("GL_ARB_pixel_buffer_object", &extensionNames) ) { _GLEE_ARB_pixel_buffer_object = GL_TRUE; __GLeeLink_GL_ARB_pixel_buffer_object(); } if (__GLeeCheckExtension("GL_ARB_depth_buffer_float", &extensionNames) ) { _GLEE_ARB_depth_buffer_float = GL_TRUE; __GLeeLink_GL_ARB_depth_buffer_float(); } if (__GLeeCheckExtension("GL_ARB_draw_instanced", &extensionNames) ) { _GLEE_ARB_draw_instanced = GL_TRUE; __GLeeLink_GL_ARB_draw_instanced(); } if (__GLeeCheckExtension("GL_ARB_framebuffer_object", &extensionNames) ) { _GLEE_ARB_framebuffer_object = GL_TRUE; __GLeeLink_GL_ARB_framebuffer_object(); } if (__GLeeCheckExtension("GL_ARB_framebuffer_sRGB", &extensionNames) ) { _GLEE_ARB_framebuffer_sRGB = GL_TRUE; __GLeeLink_GL_ARB_framebuffer_sRGB(); } if (__GLeeCheckExtension("GL_ARB_geometry_shader4", &extensionNames) ) { _GLEE_ARB_geometry_shader4 = GL_TRUE; __GLeeLink_GL_ARB_geometry_shader4(); } if (__GLeeCheckExtension("GL_ARB_half_float_vertex", &extensionNames) ) { _GLEE_ARB_half_float_vertex = GL_TRUE; __GLeeLink_GL_ARB_half_float_vertex(); } if (__GLeeCheckExtension("GL_ARB_instanced_arrays", &extensionNames) ) { _GLEE_ARB_instanced_arrays = GL_TRUE; __GLeeLink_GL_ARB_instanced_arrays(); } if (__GLeeCheckExtension("GL_ARB_map_buffer_range", &extensionNames) ) { _GLEE_ARB_map_buffer_range = GL_TRUE; __GLeeLink_GL_ARB_map_buffer_range(); } if (__GLeeCheckExtension("GL_ARB_texture_buffer_object", &extensionNames) ) { _GLEE_ARB_texture_buffer_object = GL_TRUE; __GLeeLink_GL_ARB_texture_buffer_object(); } if (__GLeeCheckExtension("GL_ARB_texture_compression_rgtc", &extensionNames) ) { _GLEE_ARB_texture_compression_rgtc = GL_TRUE; __GLeeLink_GL_ARB_texture_compression_rgtc(); } if (__GLeeCheckExtension("GL_ARB_texture_rg", &extensionNames) ) { _GLEE_ARB_texture_rg = GL_TRUE; __GLeeLink_GL_ARB_texture_rg(); } if (__GLeeCheckExtension("GL_ARB_vertex_array_object", &extensionNames) ) { _GLEE_ARB_vertex_array_object = GL_TRUE; __GLeeLink_GL_ARB_vertex_array_object(); } if (__GLeeCheckExtension("GL_ARB_uniform_buffer_object", &extensionNames) ) { _GLEE_ARB_uniform_buffer_object = GL_TRUE; __GLeeLink_GL_ARB_uniform_buffer_object(); } if (__GLeeCheckExtension("GL_ARB_compatibility", &extensionNames) ) { _GLEE_ARB_compatibility = GL_TRUE; __GLeeLink_GL_ARB_compatibility(); } if (__GLeeCheckExtension("GL_ARB_copy_buffer", &extensionNames) ) { _GLEE_ARB_copy_buffer = GL_TRUE; __GLeeLink_GL_ARB_copy_buffer(); } if (__GLeeCheckExtension("GL_ARB_shader_texture_lod", &extensionNames) ) { _GLEE_ARB_shader_texture_lod = GL_TRUE; __GLeeLink_GL_ARB_shader_texture_lod(); } if (__GLeeCheckExtension("GL_ARB_depth_clamp", &extensionNames) ) { _GLEE_ARB_depth_clamp = GL_TRUE; __GLeeLink_GL_ARB_depth_clamp(); } if (__GLeeCheckExtension("GL_ARB_draw_elements_base_vertex", &extensionNames) ) { _GLEE_ARB_draw_elements_base_vertex = GL_TRUE; __GLeeLink_GL_ARB_draw_elements_base_vertex(); } if (__GLeeCheckExtension("GL_ARB_fragment_coord_conventions", &extensionNames) ) { _GLEE_ARB_fragment_coord_conventions = GL_TRUE; __GLeeLink_GL_ARB_fragment_coord_conventions(); } if (__GLeeCheckExtension("GL_ARB_provoking_vertex", &extensionNames) ) { _GLEE_ARB_provoking_vertex = GL_TRUE; __GLeeLink_GL_ARB_provoking_vertex(); } if (__GLeeCheckExtension("GL_ARB_seamless_cube_map", &extensionNames) ) { _GLEE_ARB_seamless_cube_map = GL_TRUE; __GLeeLink_GL_ARB_seamless_cube_map(); } if (__GLeeCheckExtension("GL_ARB_sync", &extensionNames) ) { _GLEE_ARB_sync = GL_TRUE; __GLeeLink_GL_ARB_sync(); } if (__GLeeCheckExtension("GL_ARB_texture_multisample", &extensionNames) ) { _GLEE_ARB_texture_multisample = GL_TRUE; __GLeeLink_GL_ARB_texture_multisample(); } if (__GLeeCheckExtension("GL_ARB_vertex_array_bgra", &extensionNames) ) { _GLEE_ARB_vertex_array_bgra = GL_TRUE; __GLeeLink_GL_ARB_vertex_array_bgra(); } if (__GLeeCheckExtension("GL_ARB_draw_buffers_blend", &extensionNames) ) { _GLEE_ARB_draw_buffers_blend = GL_TRUE; __GLeeLink_GL_ARB_draw_buffers_blend(); } if (__GLeeCheckExtension("GL_ARB_sample_shading", &extensionNames) ) { _GLEE_ARB_sample_shading = GL_TRUE; __GLeeLink_GL_ARB_sample_shading(); } if (__GLeeCheckExtension("GL_ARB_texture_cube_map_array", &extensionNames) ) { _GLEE_ARB_texture_cube_map_array = GL_TRUE; __GLeeLink_GL_ARB_texture_cube_map_array(); } if (__GLeeCheckExtension("GL_ARB_texture_gather", &extensionNames) ) { _GLEE_ARB_texture_gather = GL_TRUE; __GLeeLink_GL_ARB_texture_gather(); } if (__GLeeCheckExtension("GL_ARB_texture_query_lod", &extensionNames) ) { _GLEE_ARB_texture_query_lod = GL_TRUE; __GLeeLink_GL_ARB_texture_query_lod(); } if (__GLeeCheckExtension("GL_ARB_shading_language_include", &extensionNames) ) { _GLEE_ARB_shading_language_include = GL_TRUE; __GLeeLink_GL_ARB_shading_language_include(); } if (__GLeeCheckExtension("GL_ARB_texture_compression_bptc", &extensionNames) ) { _GLEE_ARB_texture_compression_bptc = GL_TRUE; __GLeeLink_GL_ARB_texture_compression_bptc(); } if (__GLeeCheckExtension("GL_ARB_blend_func_extended", &extensionNames) ) { _GLEE_ARB_blend_func_extended = GL_TRUE; __GLeeLink_GL_ARB_blend_func_extended(); } if (__GLeeCheckExtension("GL_ARB_explicit_attrib_location", &extensionNames) ) { _GLEE_ARB_explicit_attrib_location = GL_TRUE; __GLeeLink_GL_ARB_explicit_attrib_location(); } if (__GLeeCheckExtension("GL_ARB_occlusion_query2", &extensionNames) ) { _GLEE_ARB_occlusion_query2 = GL_TRUE; __GLeeLink_GL_ARB_occlusion_query2(); } if (__GLeeCheckExtension("GL_ARB_sampler_objects", &extensionNames) ) { _GLEE_ARB_sampler_objects = GL_TRUE; __GLeeLink_GL_ARB_sampler_objects(); } if (__GLeeCheckExtension("GL_ARB_shader_bit_encoding", &extensionNames) ) { _GLEE_ARB_shader_bit_encoding = GL_TRUE; __GLeeLink_GL_ARB_shader_bit_encoding(); } if (__GLeeCheckExtension("GL_ARB_texture_rgb10_a2ui", &extensionNames) ) { _GLEE_ARB_texture_rgb10_a2ui = GL_TRUE; __GLeeLink_GL_ARB_texture_rgb10_a2ui(); } if (__GLeeCheckExtension("GL_ARB_texture_swizzle", &extensionNames) ) { _GLEE_ARB_texture_swizzle = GL_TRUE; __GLeeLink_GL_ARB_texture_swizzle(); } if (__GLeeCheckExtension("GL_ARB_timer_query", &extensionNames) ) { _GLEE_ARB_timer_query = GL_TRUE; __GLeeLink_GL_ARB_timer_query(); } if (__GLeeCheckExtension("GL_ARB_vertex_type_2_10_10_10_rev", &extensionNames) ) { _GLEE_ARB_vertex_type_2_10_10_10_rev = GL_TRUE; __GLeeLink_GL_ARB_vertex_type_2_10_10_10_rev(); } if (__GLeeCheckExtension("GL_ARB_draw_indirect", &extensionNames) ) { _GLEE_ARB_draw_indirect = GL_TRUE; __GLeeLink_GL_ARB_draw_indirect(); } if (__GLeeCheckExtension("GL_ARB_gpu_shader5", &extensionNames) ) { _GLEE_ARB_gpu_shader5 = GL_TRUE; __GLeeLink_GL_ARB_gpu_shader5(); } if (__GLeeCheckExtension("GL_ARB_gpu_shader_fp64", &extensionNames) ) { _GLEE_ARB_gpu_shader_fp64 = GL_TRUE; __GLeeLink_GL_ARB_gpu_shader_fp64(); } if (__GLeeCheckExtension("GL_ARB_shader_subroutine", &extensionNames) ) { _GLEE_ARB_shader_subroutine = GL_TRUE; __GLeeLink_GL_ARB_shader_subroutine(); } if (__GLeeCheckExtension("GL_ARB_tessellation_shader", &extensionNames) ) { _GLEE_ARB_tessellation_shader = GL_TRUE; __GLeeLink_GL_ARB_tessellation_shader(); } if (__GLeeCheckExtension("GL_ARB_texture_buffer_object_rgb32", &extensionNames) ) { _GLEE_ARB_texture_buffer_object_rgb32 = GL_TRUE; __GLeeLink_GL_ARB_texture_buffer_object_rgb32(); } if (__GLeeCheckExtension("GL_ARB_transform_feedback2", &extensionNames) ) { _GLEE_ARB_transform_feedback2 = GL_TRUE; __GLeeLink_GL_ARB_transform_feedback2(); } if (__GLeeCheckExtension("GL_ARB_transform_feedback3", &extensionNames) ) { _GLEE_ARB_transform_feedback3 = GL_TRUE; __GLeeLink_GL_ARB_transform_feedback3(); } if (__GLeeCheckExtension("GL_ARB_ES2_compatibility", &extensionNames) ) { _GLEE_ARB_ES2_compatibility = GL_TRUE; __GLeeLink_GL_ARB_ES2_compatibility(); } if (__GLeeCheckExtension("GL_ARB_get_program_binary", &extensionNames) ) { _GLEE_ARB_get_program_binary = GL_TRUE; __GLeeLink_GL_ARB_get_program_binary(); } if (__GLeeCheckExtension("GL_ARB_separate_shader_objects", &extensionNames) ) { _GLEE_ARB_separate_shader_objects = GL_TRUE; __GLeeLink_GL_ARB_separate_shader_objects(); } if (__GLeeCheckExtension("GL_ARB_shader_precision", &extensionNames) ) { _GLEE_ARB_shader_precision = GL_TRUE; __GLeeLink_GL_ARB_shader_precision(); } if (__GLeeCheckExtension("GL_ARB_vertex_attrib_64bit", &extensionNames) ) { _GLEE_ARB_vertex_attrib_64bit = GL_TRUE; __GLeeLink_GL_ARB_vertex_attrib_64bit(); } if (__GLeeCheckExtension("GL_ARB_viewport_array", &extensionNames) ) { _GLEE_ARB_viewport_array = GL_TRUE; __GLeeLink_GL_ARB_viewport_array(); } if (__GLeeCheckExtension("GL_ARB_cl_event", &extensionNames) ) { _GLEE_ARB_cl_event = GL_TRUE; __GLeeLink_GL_ARB_cl_event(); } if (__GLeeCheckExtension("GL_ARB_debug_output", &extensionNames) ) { _GLEE_ARB_debug_output = GL_TRUE; __GLeeLink_GL_ARB_debug_output(); } if (__GLeeCheckExtension("GL_ARB_robustness", &extensionNames) ) { _GLEE_ARB_robustness = GL_TRUE; __GLeeLink_GL_ARB_robustness(); } if (__GLeeCheckExtension("GL_ARB_shader_stencil_export", &extensionNames) ) { _GLEE_ARB_shader_stencil_export = GL_TRUE; __GLeeLink_GL_ARB_shader_stencil_export(); } if (__GLeeCheckExtension("GL_ARB_base_instance", &extensionNames) ) { _GLEE_ARB_base_instance = GL_TRUE; __GLeeLink_GL_ARB_base_instance(); } if (__GLeeCheckExtension("GL_ARB_shading_language_420pack", &extensionNames) ) { _GLEE_ARB_shading_language_420pack = GL_TRUE; __GLeeLink_GL_ARB_shading_language_420pack(); } if (__GLeeCheckExtension("GL_ARB_transform_feedback_instanced", &extensionNames) ) { _GLEE_ARB_transform_feedback_instanced = GL_TRUE; __GLeeLink_GL_ARB_transform_feedback_instanced(); } if (__GLeeCheckExtension("GL_ARB_compressed_texture_pixel_storage", &extensionNames) ) { _GLEE_ARB_compressed_texture_pixel_storage = GL_TRUE; __GLeeLink_GL_ARB_compressed_texture_pixel_storage(); } if (__GLeeCheckExtension("GL_ARB_conservative_depth", &extensionNames) ) { _GLEE_ARB_conservative_depth = GL_TRUE; __GLeeLink_GL_ARB_conservative_depth(); } if (__GLeeCheckExtension("GL_ARB_internalformat_query", &extensionNames) ) { _GLEE_ARB_internalformat_query = GL_TRUE; __GLeeLink_GL_ARB_internalformat_query(); } if (__GLeeCheckExtension("GL_ARB_map_buffer_alignment", &extensionNames) ) { _GLEE_ARB_map_buffer_alignment = GL_TRUE; __GLeeLink_GL_ARB_map_buffer_alignment(); } if (__GLeeCheckExtension("GL_ARB_shader_atomic_counters", &extensionNames) ) { _GLEE_ARB_shader_atomic_counters = GL_TRUE; __GLeeLink_GL_ARB_shader_atomic_counters(); } if (__GLeeCheckExtension("GL_ARB_shader_image_load_store", &extensionNames) ) { _GLEE_ARB_shader_image_load_store = GL_TRUE; __GLeeLink_GL_ARB_shader_image_load_store(); } if (__GLeeCheckExtension("GL_ARB_shading_language_packing", &extensionNames) ) { _GLEE_ARB_shading_language_packing = GL_TRUE; __GLeeLink_GL_ARB_shading_language_packing(); } if (__GLeeCheckExtension("GL_ARB_texture_storage", &extensionNames) ) { _GLEE_ARB_texture_storage = GL_TRUE; __GLeeLink_GL_ARB_texture_storage(); } if (__GLeeCheckExtension("GL_KHR_texture_compression_astc_ldr", &extensionNames) ) { _GLEE_KHR_texture_compression_astc_ldr = GL_TRUE; __GLeeLink_GL_KHR_texture_compression_astc_ldr(); } if (__GLeeCheckExtension("GL_KHR_debug", &extensionNames) ) { _GLEE_KHR_debug = GL_TRUE; __GLeeLink_GL_KHR_debug(); } if (__GLeeCheckExtension("GL_ARB_arrays_of_arrays", &extensionNames) ) { _GLEE_ARB_arrays_of_arrays = GL_TRUE; __GLeeLink_GL_ARB_arrays_of_arrays(); } if (__GLeeCheckExtension("GL_ARB_clear_buffer_object", &extensionNames) ) { _GLEE_ARB_clear_buffer_object = GL_TRUE; __GLeeLink_GL_ARB_clear_buffer_object(); } if (__GLeeCheckExtension("GL_ARB_compute_shader", &extensionNames) ) { _GLEE_ARB_compute_shader = GL_TRUE; __GLeeLink_GL_ARB_compute_shader(); } if (__GLeeCheckExtension("GL_ARB_copy_image", &extensionNames) ) { _GLEE_ARB_copy_image = GL_TRUE; __GLeeLink_GL_ARB_copy_image(); } if (__GLeeCheckExtension("GL_ARB_texture_view", &extensionNames) ) { _GLEE_ARB_texture_view = GL_TRUE; __GLeeLink_GL_ARB_texture_view(); } if (__GLeeCheckExtension("GL_ARB_vertex_attrib_binding", &extensionNames) ) { _GLEE_ARB_vertex_attrib_binding = GL_TRUE; __GLeeLink_GL_ARB_vertex_attrib_binding(); } if (__GLeeCheckExtension("GL_ARB_robustness_isolation", &extensionNames) ) { _GLEE_ARB_robustness_isolation = GL_TRUE; __GLeeLink_GL_ARB_robustness_isolation(); } if (__GLeeCheckExtension("GL_ARB_ES3_compatibility", &extensionNames) ) { _GLEE_ARB_ES3_compatibility = GL_TRUE; __GLeeLink_GL_ARB_ES3_compatibility(); } if (__GLeeCheckExtension("GL_ARB_explicit_uniform_location", &extensionNames) ) { _GLEE_ARB_explicit_uniform_location = GL_TRUE; __GLeeLink_GL_ARB_explicit_uniform_location(); } if (__GLeeCheckExtension("GL_ARB_fragment_layer_viewport", &extensionNames) ) { _GLEE_ARB_fragment_layer_viewport = GL_TRUE; __GLeeLink_GL_ARB_fragment_layer_viewport(); } if (__GLeeCheckExtension("GL_ARB_framebuffer_no_attachments", &extensionNames) ) { _GLEE_ARB_framebuffer_no_attachments = GL_TRUE; __GLeeLink_GL_ARB_framebuffer_no_attachments(); } if (__GLeeCheckExtension("GL_ARB_internalformat_query2", &extensionNames) ) { _GLEE_ARB_internalformat_query2 = GL_TRUE; __GLeeLink_GL_ARB_internalformat_query2(); } if (__GLeeCheckExtension("GL_ARB_invalidate_subdata", &extensionNames) ) { _GLEE_ARB_invalidate_subdata = GL_TRUE; __GLeeLink_GL_ARB_invalidate_subdata(); } if (__GLeeCheckExtension("GL_ARB_multi_draw_indirect", &extensionNames) ) { _GLEE_ARB_multi_draw_indirect = GL_TRUE; __GLeeLink_GL_ARB_multi_draw_indirect(); } if (__GLeeCheckExtension("GL_ARB_program_interface_query", &extensionNames) ) { _GLEE_ARB_program_interface_query = GL_TRUE; __GLeeLink_GL_ARB_program_interface_query(); } if (__GLeeCheckExtension("GL_ARB_robust_buffer_access_behavior", &extensionNames) ) { _GLEE_ARB_robust_buffer_access_behavior = GL_TRUE; __GLeeLink_GL_ARB_robust_buffer_access_behavior(); } if (__GLeeCheckExtension("GL_ARB_shader_image_size", &extensionNames) ) { _GLEE_ARB_shader_image_size = GL_TRUE; __GLeeLink_GL_ARB_shader_image_size(); } if (__GLeeCheckExtension("GL_ARB_shader_storage_buffer_object", &extensionNames) ) { _GLEE_ARB_shader_storage_buffer_object = GL_TRUE; __GLeeLink_GL_ARB_shader_storage_buffer_object(); } if (__GLeeCheckExtension("GL_ARB_stencil_texturing", &extensionNames) ) { _GLEE_ARB_stencil_texturing = GL_TRUE; __GLeeLink_GL_ARB_stencil_texturing(); } if (__GLeeCheckExtension("GL_ARB_texture_buffer_range", &extensionNames) ) { _GLEE_ARB_texture_buffer_range = GL_TRUE; __GLeeLink_GL_ARB_texture_buffer_range(); } if (__GLeeCheckExtension("GL_ARB_texture_query_levels", &extensionNames) ) { _GLEE_ARB_texture_query_levels = GL_TRUE; __GLeeLink_GL_ARB_texture_query_levels(); } if (__GLeeCheckExtension("GL_ARB_texture_storage_multisample", &extensionNames) ) { _GLEE_ARB_texture_storage_multisample = GL_TRUE; __GLeeLink_GL_ARB_texture_storage_multisample(); } if (__GLeeCheckExtension("GL_EXT_abgr", &extensionNames) ) { _GLEE_EXT_abgr = GL_TRUE; __GLeeLink_GL_EXT_abgr(); } if (__GLeeCheckExtension("GL_EXT_blend_color", &extensionNames) ) { _GLEE_EXT_blend_color = GL_TRUE; __GLeeLink_GL_EXT_blend_color(); } if (__GLeeCheckExtension("GL_EXT_polygon_offset", &extensionNames) ) { _GLEE_EXT_polygon_offset = GL_TRUE; __GLeeLink_GL_EXT_polygon_offset(); } if (__GLeeCheckExtension("GL_EXT_texture", &extensionNames) ) { _GLEE_EXT_texture = GL_TRUE; __GLeeLink_GL_EXT_texture(); } if (__GLeeCheckExtension("GL_EXT_texture3D", &extensionNames) ) { _GLEE_EXT_texture3D = GL_TRUE; __GLeeLink_GL_EXT_texture3D(); } if (__GLeeCheckExtension("GL_SGIS_texture_filter4", &extensionNames) ) { _GLEE_SGIS_texture_filter4 = GL_TRUE; __GLeeLink_GL_SGIS_texture_filter4(); } if (__GLeeCheckExtension("GL_EXT_subtexture", &extensionNames) ) { _GLEE_EXT_subtexture = GL_TRUE; __GLeeLink_GL_EXT_subtexture(); } if (__GLeeCheckExtension("GL_EXT_copy_texture", &extensionNames) ) { _GLEE_EXT_copy_texture = GL_TRUE; __GLeeLink_GL_EXT_copy_texture(); } if (__GLeeCheckExtension("GL_EXT_histogram", &extensionNames) ) { _GLEE_EXT_histogram = GL_TRUE; __GLeeLink_GL_EXT_histogram(); } if (__GLeeCheckExtension("GL_EXT_convolution", &extensionNames) ) { _GLEE_EXT_convolution = GL_TRUE; __GLeeLink_GL_EXT_convolution(); } if (__GLeeCheckExtension("GL_SGI_color_matrix", &extensionNames) ) { _GLEE_SGI_color_matrix = GL_TRUE; __GLeeLink_GL_SGI_color_matrix(); } if (__GLeeCheckExtension("GL_SGI_color_table", &extensionNames) ) { _GLEE_SGI_color_table = GL_TRUE; __GLeeLink_GL_SGI_color_table(); } if (__GLeeCheckExtension("GL_SGIS_pixel_texture", &extensionNames) ) { _GLEE_SGIS_pixel_texture = GL_TRUE; __GLeeLink_GL_SGIS_pixel_texture(); } if (__GLeeCheckExtension("GL_SGIX_pixel_texture", &extensionNames) ) { _GLEE_SGIX_pixel_texture = GL_TRUE; __GLeeLink_GL_SGIX_pixel_texture(); } if (__GLeeCheckExtension("GL_SGIS_texture4D", &extensionNames) ) { _GLEE_SGIS_texture4D = GL_TRUE; __GLeeLink_GL_SGIS_texture4D(); } if (__GLeeCheckExtension("GL_SGI_texture_color_table", &extensionNames) ) { _GLEE_SGI_texture_color_table = GL_TRUE; __GLeeLink_GL_SGI_texture_color_table(); } if (__GLeeCheckExtension("GL_EXT_cmyka", &extensionNames) ) { _GLEE_EXT_cmyka = GL_TRUE; __GLeeLink_GL_EXT_cmyka(); } if (__GLeeCheckExtension("GL_EXT_texture_object", &extensionNames) ) { _GLEE_EXT_texture_object = GL_TRUE; __GLeeLink_GL_EXT_texture_object(); } if (__GLeeCheckExtension("GL_SGIS_detail_texture", &extensionNames) ) { _GLEE_SGIS_detail_texture = GL_TRUE; __GLeeLink_GL_SGIS_detail_texture(); } if (__GLeeCheckExtension("GL_SGIS_sharpen_texture", &extensionNames) ) { _GLEE_SGIS_sharpen_texture = GL_TRUE; __GLeeLink_GL_SGIS_sharpen_texture(); } if (__GLeeCheckExtension("GL_EXT_packed_pixels", &extensionNames) ) { _GLEE_EXT_packed_pixels = GL_TRUE; __GLeeLink_GL_EXT_packed_pixels(); } if (__GLeeCheckExtension("GL_SGIS_texture_lod", &extensionNames) ) { _GLEE_SGIS_texture_lod = GL_TRUE; __GLeeLink_GL_SGIS_texture_lod(); } if (__GLeeCheckExtension("GL_SGIS_multisample", &extensionNames) ) { _GLEE_SGIS_multisample = GL_TRUE; __GLeeLink_GL_SGIS_multisample(); } if (__GLeeCheckExtension("GL_EXT_rescale_normal", &extensionNames) ) { _GLEE_EXT_rescale_normal = GL_TRUE; __GLeeLink_GL_EXT_rescale_normal(); } if (__GLeeCheckExtension("GL_EXT_vertex_array", &extensionNames) ) { _GLEE_EXT_vertex_array = GL_TRUE; __GLeeLink_GL_EXT_vertex_array(); } if (__GLeeCheckExtension("GL_EXT_misc_attribute", &extensionNames) ) { _GLEE_EXT_misc_attribute = GL_TRUE; __GLeeLink_GL_EXT_misc_attribute(); } if (__GLeeCheckExtension("GL_SGIS_generate_mipmap", &extensionNames) ) { _GLEE_SGIS_generate_mipmap = GL_TRUE; __GLeeLink_GL_SGIS_generate_mipmap(); } if (__GLeeCheckExtension("GL_SGIX_clipmap", &extensionNames) ) { _GLEE_SGIX_clipmap = GL_TRUE; __GLeeLink_GL_SGIX_clipmap(); } if (__GLeeCheckExtension("GL_SGIX_shadow", &extensionNames) ) { _GLEE_SGIX_shadow = GL_TRUE; __GLeeLink_GL_SGIX_shadow(); } if (__GLeeCheckExtension("GL_SGIS_texture_edge_clamp", &extensionNames) ) { _GLEE_SGIS_texture_edge_clamp = GL_TRUE; __GLeeLink_GL_SGIS_texture_edge_clamp(); } if (__GLeeCheckExtension("GL_SGIS_texture_border_clamp", &extensionNames) ) { _GLEE_SGIS_texture_border_clamp = GL_TRUE; __GLeeLink_GL_SGIS_texture_border_clamp(); } if (__GLeeCheckExtension("GL_EXT_blend_minmax", &extensionNames) ) { _GLEE_EXT_blend_minmax = GL_TRUE; __GLeeLink_GL_EXT_blend_minmax(); } if (__GLeeCheckExtension("GL_EXT_blend_subtract", &extensionNames) ) { _GLEE_EXT_blend_subtract = GL_TRUE; __GLeeLink_GL_EXT_blend_subtract(); } if (__GLeeCheckExtension("GL_EXT_blend_logic_op", &extensionNames) ) { _GLEE_EXT_blend_logic_op = GL_TRUE; __GLeeLink_GL_EXT_blend_logic_op(); } if (__GLeeCheckExtension("GL_SGIX_interlace", &extensionNames) ) { _GLEE_SGIX_interlace = GL_TRUE; __GLeeLink_GL_SGIX_interlace(); } if (__GLeeCheckExtension("GL_SGIX_pixel_tiles", &extensionNames) ) { _GLEE_SGIX_pixel_tiles = GL_TRUE; __GLeeLink_GL_SGIX_pixel_tiles(); } if (__GLeeCheckExtension("GL_SGIS_texture_select", &extensionNames) ) { _GLEE_SGIS_texture_select = GL_TRUE; __GLeeLink_GL_SGIS_texture_select(); } if (__GLeeCheckExtension("GL_SGIX_sprite", &extensionNames) ) { _GLEE_SGIX_sprite = GL_TRUE; __GLeeLink_GL_SGIX_sprite(); } if (__GLeeCheckExtension("GL_SGIX_texture_multi_buffer", &extensionNames) ) { _GLEE_SGIX_texture_multi_buffer = GL_TRUE; __GLeeLink_GL_SGIX_texture_multi_buffer(); } if (__GLeeCheckExtension("GL_EXT_point_parameters", &extensionNames) ) { _GLEE_EXT_point_parameters = GL_TRUE; __GLeeLink_GL_EXT_point_parameters(); } if (__GLeeCheckExtension("GL_SGIS_point_parameters", &extensionNames) ) { _GLEE_SGIS_point_parameters = GL_TRUE; __GLeeLink_GL_SGIS_point_parameters(); } if (__GLeeCheckExtension("GL_SGIX_instruments", &extensionNames) ) { _GLEE_SGIX_instruments = GL_TRUE; __GLeeLink_GL_SGIX_instruments(); } if (__GLeeCheckExtension("GL_SGIX_texture_scale_bias", &extensionNames) ) { _GLEE_SGIX_texture_scale_bias = GL_TRUE; __GLeeLink_GL_SGIX_texture_scale_bias(); } if (__GLeeCheckExtension("GL_SGIX_framezoom", &extensionNames) ) { _GLEE_SGIX_framezoom = GL_TRUE; __GLeeLink_GL_SGIX_framezoom(); } if (__GLeeCheckExtension("GL_SGIX_tag_sample_buffer", &extensionNames) ) { _GLEE_SGIX_tag_sample_buffer = GL_TRUE; __GLeeLink_GL_SGIX_tag_sample_buffer(); } if (__GLeeCheckExtension("GL_FfdMaskSGIX", &extensionNames) ) { _GLEE_FfdMaskSGIX = GL_TRUE; __GLeeLink_GL_FfdMaskSGIX(); } if (__GLeeCheckExtension("GL_SGIX_polynomial_ffd", &extensionNames) ) { _GLEE_SGIX_polynomial_ffd = GL_TRUE; __GLeeLink_GL_SGIX_polynomial_ffd(); } if (__GLeeCheckExtension("GL_SGIX_reference_plane", &extensionNames) ) { _GLEE_SGIX_reference_plane = GL_TRUE; __GLeeLink_GL_SGIX_reference_plane(); } if (__GLeeCheckExtension("GL_SGIX_flush_raster", &extensionNames) ) { _GLEE_SGIX_flush_raster = GL_TRUE; __GLeeLink_GL_SGIX_flush_raster(); } if (__GLeeCheckExtension("GL_SGIX_depth_texture", &extensionNames) ) { _GLEE_SGIX_depth_texture = GL_TRUE; __GLeeLink_GL_SGIX_depth_texture(); } if (__GLeeCheckExtension("GL_SGIS_fog_function", &extensionNames) ) { _GLEE_SGIS_fog_function = GL_TRUE; __GLeeLink_GL_SGIS_fog_function(); } if (__GLeeCheckExtension("GL_SGIX_fog_offset", &extensionNames) ) { _GLEE_SGIX_fog_offset = GL_TRUE; __GLeeLink_GL_SGIX_fog_offset(); } if (__GLeeCheckExtension("GL_HP_image_transform", &extensionNames) ) { _GLEE_HP_image_transform = GL_TRUE; __GLeeLink_GL_HP_image_transform(); } if (__GLeeCheckExtension("GL_HP_convolution_border_modes", &extensionNames) ) { _GLEE_HP_convolution_border_modes = GL_TRUE; __GLeeLink_GL_HP_convolution_border_modes(); } if (__GLeeCheckExtension("GL_INGR_palette_buffer", &extensionNames) ) { _GLEE_INGR_palette_buffer = GL_TRUE; __GLeeLink_GL_INGR_palette_buffer(); } if (__GLeeCheckExtension("GL_SGIX_texture_add_env", &extensionNames) ) { _GLEE_SGIX_texture_add_env = GL_TRUE; __GLeeLink_GL_SGIX_texture_add_env(); } if (__GLeeCheckExtension("GL_EXT_color_subtable", &extensionNames) ) { _GLEE_EXT_color_subtable = GL_TRUE; __GLeeLink_GL_EXT_color_subtable(); } if (__GLeeCheckExtension("GL_PGI_vertex_hints", &extensionNames) ) { _GLEE_PGI_vertex_hints = GL_TRUE; __GLeeLink_GL_PGI_vertex_hints(); } if (__GLeeCheckExtension("GL_PGI_misc_hints", &extensionNames) ) { _GLEE_PGI_misc_hints = GL_TRUE; __GLeeLink_GL_PGI_misc_hints(); } if (__GLeeCheckExtension("GL_EXT_paletted_texture", &extensionNames) ) { _GLEE_EXT_paletted_texture = GL_TRUE; __GLeeLink_GL_EXT_paletted_texture(); } if (__GLeeCheckExtension("GL_EXT_clip_volume_hint", &extensionNames) ) { _GLEE_EXT_clip_volume_hint = GL_TRUE; __GLeeLink_GL_EXT_clip_volume_hint(); } if (__GLeeCheckExtension("GL_SGIX_list_priority", &extensionNames) ) { _GLEE_SGIX_list_priority = GL_TRUE; __GLeeLink_GL_SGIX_list_priority(); } if (__GLeeCheckExtension("GL_SGIX_ir_instrument1", &extensionNames) ) { _GLEE_SGIX_ir_instrument1 = GL_TRUE; __GLeeLink_GL_SGIX_ir_instrument1(); } if (__GLeeCheckExtension("GL_SGIX_calligraphic_fragment", &extensionNames) ) { _GLEE_SGIX_calligraphic_fragment = GL_TRUE; __GLeeLink_GL_SGIX_calligraphic_fragment(); } if (__GLeeCheckExtension("GL_SGIX_texture_lod_bias", &extensionNames) ) { _GLEE_SGIX_texture_lod_bias = GL_TRUE; __GLeeLink_GL_SGIX_texture_lod_bias(); } if (__GLeeCheckExtension("GL_SGIX_shadow_ambient", &extensionNames) ) { _GLEE_SGIX_shadow_ambient = GL_TRUE; __GLeeLink_GL_SGIX_shadow_ambient(); } if (__GLeeCheckExtension("GL_EXT_index_texture", &extensionNames) ) { _GLEE_EXT_index_texture = GL_TRUE; __GLeeLink_GL_EXT_index_texture(); } if (__GLeeCheckExtension("GL_EXT_index_material", &extensionNames) ) { _GLEE_EXT_index_material = GL_TRUE; __GLeeLink_GL_EXT_index_material(); } if (__GLeeCheckExtension("GL_EXT_index_func", &extensionNames) ) { _GLEE_EXT_index_func = GL_TRUE; __GLeeLink_GL_EXT_index_func(); } if (__GLeeCheckExtension("GL_EXT_index_array_formats", &extensionNames) ) { _GLEE_EXT_index_array_formats = GL_TRUE; __GLeeLink_GL_EXT_index_array_formats(); } if (__GLeeCheckExtension("GL_EXT_compiled_vertex_array", &extensionNames) ) { _GLEE_EXT_compiled_vertex_array = GL_TRUE; __GLeeLink_GL_EXT_compiled_vertex_array(); } if (__GLeeCheckExtension("GL_EXT_cull_vertex", &extensionNames) ) { _GLEE_EXT_cull_vertex = GL_TRUE; __GLeeLink_GL_EXT_cull_vertex(); } if (__GLeeCheckExtension("GL_SGIX_ycrcb", &extensionNames) ) { _GLEE_SGIX_ycrcb = GL_TRUE; __GLeeLink_GL_SGIX_ycrcb(); } if (__GLeeCheckExtension("GL_SGIX_fragment_lighting", &extensionNames) ) { _GLEE_SGIX_fragment_lighting = GL_TRUE; __GLeeLink_GL_SGIX_fragment_lighting(); } if (__GLeeCheckExtension("GL_IBM_rasterpos_clip", &extensionNames) ) { _GLEE_IBM_rasterpos_clip = GL_TRUE; __GLeeLink_GL_IBM_rasterpos_clip(); } if (__GLeeCheckExtension("GL_HP_texture_lighting", &extensionNames) ) { _GLEE_HP_texture_lighting = GL_TRUE; __GLeeLink_GL_HP_texture_lighting(); } if (__GLeeCheckExtension("GL_EXT_draw_range_elements", &extensionNames) ) { _GLEE_EXT_draw_range_elements = GL_TRUE; __GLeeLink_GL_EXT_draw_range_elements(); } if (__GLeeCheckExtension("GL_WIN_phong_shading", &extensionNames) ) { _GLEE_WIN_phong_shading = GL_TRUE; __GLeeLink_GL_WIN_phong_shading(); } if (__GLeeCheckExtension("GL_WIN_specular_fog", &extensionNames) ) { _GLEE_WIN_specular_fog = GL_TRUE; __GLeeLink_GL_WIN_specular_fog(); } if (__GLeeCheckExtension("GL_EXT_light_texture", &extensionNames) ) { _GLEE_EXT_light_texture = GL_TRUE; __GLeeLink_GL_EXT_light_texture(); } if (__GLeeCheckExtension("GL_SGIX_blend_alpha_minmax", &extensionNames) ) { _GLEE_SGIX_blend_alpha_minmax = GL_TRUE; __GLeeLink_GL_SGIX_blend_alpha_minmax(); } if (__GLeeCheckExtension("GL_SGIX_impact_pixel_texture", &extensionNames) ) { _GLEE_SGIX_impact_pixel_texture = GL_TRUE; __GLeeLink_GL_SGIX_impact_pixel_texture(); } if (__GLeeCheckExtension("GL_EXT_bgra", &extensionNames) ) { _GLEE_EXT_bgra = GL_TRUE; __GLeeLink_GL_EXT_bgra(); } if (__GLeeCheckExtension("GL_SGIX_async", &extensionNames) ) { _GLEE_SGIX_async = GL_TRUE; __GLeeLink_GL_SGIX_async(); } if (__GLeeCheckExtension("GL_SGIX_async_pixel", &extensionNames) ) { _GLEE_SGIX_async_pixel = GL_TRUE; __GLeeLink_GL_SGIX_async_pixel(); } if (__GLeeCheckExtension("GL_SGIX_async_histogram", &extensionNames) ) { _GLEE_SGIX_async_histogram = GL_TRUE; __GLeeLink_GL_SGIX_async_histogram(); } if (__GLeeCheckExtension("GL_INTEL_texture_scissor", &extensionNames) ) { _GLEE_INTEL_texture_scissor = GL_TRUE; __GLeeLink_GL_INTEL_texture_scissor(); } if (__GLeeCheckExtension("GL_INTEL_parallel_arrays", &extensionNames) ) { _GLEE_INTEL_parallel_arrays = GL_TRUE; __GLeeLink_GL_INTEL_parallel_arrays(); } if (__GLeeCheckExtension("GL_HP_occlusion_test", &extensionNames) ) { _GLEE_HP_occlusion_test = GL_TRUE; __GLeeLink_GL_HP_occlusion_test(); } if (__GLeeCheckExtension("GL_EXT_pixel_transform", &extensionNames) ) { _GLEE_EXT_pixel_transform = GL_TRUE; __GLeeLink_GL_EXT_pixel_transform(); } if (__GLeeCheckExtension("GL_EXT_pixel_transform_color_table", &extensionNames) ) { _GLEE_EXT_pixel_transform_color_table = GL_TRUE; __GLeeLink_GL_EXT_pixel_transform_color_table(); } if (__GLeeCheckExtension("GL_EXT_shared_texture_palette", &extensionNames) ) { _GLEE_EXT_shared_texture_palette = GL_TRUE; __GLeeLink_GL_EXT_shared_texture_palette(); } if (__GLeeCheckExtension("GL_EXT_separate_specular_color", &extensionNames) ) { _GLEE_EXT_separate_specular_color = GL_TRUE; __GLeeLink_GL_EXT_separate_specular_color(); } if (__GLeeCheckExtension("GL_EXT_secondary_color", &extensionNames) ) { _GLEE_EXT_secondary_color = GL_TRUE; __GLeeLink_GL_EXT_secondary_color(); } if (__GLeeCheckExtension("GL_EXT_texture_perturb_normal", &extensionNames) ) { _GLEE_EXT_texture_perturb_normal = GL_TRUE; __GLeeLink_GL_EXT_texture_perturb_normal(); } if (__GLeeCheckExtension("GL_EXT_multi_draw_arrays", &extensionNames) ) { _GLEE_EXT_multi_draw_arrays = GL_TRUE; __GLeeLink_GL_EXT_multi_draw_arrays(); } if (__GLeeCheckExtension("GL_EXT_fog_coord", &extensionNames) ) { _GLEE_EXT_fog_coord = GL_TRUE; __GLeeLink_GL_EXT_fog_coord(); } if (__GLeeCheckExtension("GL_REND_screen_coordinates", &extensionNames) ) { _GLEE_REND_screen_coordinates = GL_TRUE; __GLeeLink_GL_REND_screen_coordinates(); } if (__GLeeCheckExtension("GL_EXT_coordinate_frame", &extensionNames) ) { _GLEE_EXT_coordinate_frame = GL_TRUE; __GLeeLink_GL_EXT_coordinate_frame(); } if (__GLeeCheckExtension("GL_EXT_texture_env_combine", &extensionNames) ) { _GLEE_EXT_texture_env_combine = GL_TRUE; __GLeeLink_GL_EXT_texture_env_combine(); } if (__GLeeCheckExtension("GL_APPLE_specular_vector", &extensionNames) ) { _GLEE_APPLE_specular_vector = GL_TRUE; __GLeeLink_GL_APPLE_specular_vector(); } if (__GLeeCheckExtension("GL_APPLE_transform_hint", &extensionNames) ) { _GLEE_APPLE_transform_hint = GL_TRUE; __GLeeLink_GL_APPLE_transform_hint(); } if (__GLeeCheckExtension("GL_SGIX_fog_scale", &extensionNames) ) { _GLEE_SGIX_fog_scale = GL_TRUE; __GLeeLink_GL_SGIX_fog_scale(); } if (__GLeeCheckExtension("GL_SUNX_constant_data", &extensionNames) ) { _GLEE_SUNX_constant_data = GL_TRUE; __GLeeLink_GL_SUNX_constant_data(); } if (__GLeeCheckExtension("GL_SUN_global_alpha", &extensionNames) ) { _GLEE_SUN_global_alpha = GL_TRUE; __GLeeLink_GL_SUN_global_alpha(); } if (__GLeeCheckExtension("GL_SUN_triangle_list", &extensionNames) ) { _GLEE_SUN_triangle_list = GL_TRUE; __GLeeLink_GL_SUN_triangle_list(); } if (__GLeeCheckExtension("GL_SUN_vertex", &extensionNames) ) { _GLEE_SUN_vertex = GL_TRUE; __GLeeLink_GL_SUN_vertex(); } if (__GLeeCheckExtension("GL_EXT_blend_func_separate", &extensionNames) ) { _GLEE_EXT_blend_func_separate = GL_TRUE; __GLeeLink_GL_EXT_blend_func_separate(); } if (__GLeeCheckExtension("GL_INGR_color_clamp", &extensionNames) ) { _GLEE_INGR_color_clamp = GL_TRUE; __GLeeLink_GL_INGR_color_clamp(); } if (__GLeeCheckExtension("GL_INGR_interlace_read", &extensionNames) ) { _GLEE_INGR_interlace_read = GL_TRUE; __GLeeLink_GL_INGR_interlace_read(); } if (__GLeeCheckExtension("GL_EXT_stencil_wrap", &extensionNames) ) { _GLEE_EXT_stencil_wrap = GL_TRUE; __GLeeLink_GL_EXT_stencil_wrap(); } if (__GLeeCheckExtension("GL_EXT_422_pixels", &extensionNames) ) { _GLEE_EXT_422_pixels = GL_TRUE; __GLeeLink_GL_EXT_422_pixels(); } if (__GLeeCheckExtension("GL_NV_texgen_reflection", &extensionNames) ) { _GLEE_NV_texgen_reflection = GL_TRUE; __GLeeLink_GL_NV_texgen_reflection(); } if (__GLeeCheckExtension("GL_EXT_texture_cube_map", &extensionNames) ) { _GLEE_EXT_texture_cube_map = GL_TRUE; __GLeeLink_GL_EXT_texture_cube_map(); } if (__GLeeCheckExtension("GL_SUN_convolution_border_modes", &extensionNames) ) { _GLEE_SUN_convolution_border_modes = GL_TRUE; __GLeeLink_GL_SUN_convolution_border_modes(); } if (__GLeeCheckExtension("GL_EXT_texture_env_add", &extensionNames) ) { _GLEE_EXT_texture_env_add = GL_TRUE; __GLeeLink_GL_EXT_texture_env_add(); } if (__GLeeCheckExtension("GL_EXT_texture_lod_bias", &extensionNames) ) { _GLEE_EXT_texture_lod_bias = GL_TRUE; __GLeeLink_GL_EXT_texture_lod_bias(); } if (__GLeeCheckExtension("GL_EXT_texture_filter_anisotropic", &extensionNames) ) { _GLEE_EXT_texture_filter_anisotropic = GL_TRUE; __GLeeLink_GL_EXT_texture_filter_anisotropic(); } if (__GLeeCheckExtension("GL_EXT_vertex_weighting", &extensionNames) ) { _GLEE_EXT_vertex_weighting = GL_TRUE; __GLeeLink_GL_EXT_vertex_weighting(); } if (__GLeeCheckExtension("GL_NV_light_max_exponent", &extensionNames) ) { _GLEE_NV_light_max_exponent = GL_TRUE; __GLeeLink_GL_NV_light_max_exponent(); } if (__GLeeCheckExtension("GL_NV_vertex_array_range", &extensionNames) ) { _GLEE_NV_vertex_array_range = GL_TRUE; __GLeeLink_GL_NV_vertex_array_range(); } if (__GLeeCheckExtension("GL_NV_register_combiners", &extensionNames) ) { _GLEE_NV_register_combiners = GL_TRUE; __GLeeLink_GL_NV_register_combiners(); } if (__GLeeCheckExtension("GL_NV_fog_distance", &extensionNames) ) { _GLEE_NV_fog_distance = GL_TRUE; __GLeeLink_GL_NV_fog_distance(); } if (__GLeeCheckExtension("GL_NV_texgen_emboss", &extensionNames) ) { _GLEE_NV_texgen_emboss = GL_TRUE; __GLeeLink_GL_NV_texgen_emboss(); } if (__GLeeCheckExtension("GL_NV_blend_square", &extensionNames) ) { _GLEE_NV_blend_square = GL_TRUE; __GLeeLink_GL_NV_blend_square(); } if (__GLeeCheckExtension("GL_NV_texture_env_combine4", &extensionNames) ) { _GLEE_NV_texture_env_combine4 = GL_TRUE; __GLeeLink_GL_NV_texture_env_combine4(); } if (__GLeeCheckExtension("GL_MESA_resize_buffers", &extensionNames) ) { _GLEE_MESA_resize_buffers = GL_TRUE; __GLeeLink_GL_MESA_resize_buffers(); } if (__GLeeCheckExtension("GL_MESA_window_pos", &extensionNames) ) { _GLEE_MESA_window_pos = GL_TRUE; __GLeeLink_GL_MESA_window_pos(); } if (__GLeeCheckExtension("GL_EXT_texture_compression_s3tc", &extensionNames) ) { _GLEE_EXT_texture_compression_s3tc = GL_TRUE; __GLeeLink_GL_EXT_texture_compression_s3tc(); } if (__GLeeCheckExtension("GL_IBM_cull_vertex", &extensionNames) ) { _GLEE_IBM_cull_vertex = GL_TRUE; __GLeeLink_GL_IBM_cull_vertex(); } if (__GLeeCheckExtension("GL_IBM_multimode_draw_arrays", &extensionNames) ) { _GLEE_IBM_multimode_draw_arrays = GL_TRUE; __GLeeLink_GL_IBM_multimode_draw_arrays(); } if (__GLeeCheckExtension("GL_IBM_vertex_array_lists", &extensionNames) ) { _GLEE_IBM_vertex_array_lists = GL_TRUE; __GLeeLink_GL_IBM_vertex_array_lists(); } if (__GLeeCheckExtension("GL_SGIX_subsample", &extensionNames) ) { _GLEE_SGIX_subsample = GL_TRUE; __GLeeLink_GL_SGIX_subsample(); } if (__GLeeCheckExtension("GL_SGIX_ycrcb_subsample", &extensionNames) ) { _GLEE_SGIX_ycrcb_subsample = GL_TRUE; __GLeeLink_GL_SGIX_ycrcb_subsample(); } if (__GLeeCheckExtension("GL_SGIX_ycrcba", &extensionNames) ) { _GLEE_SGIX_ycrcba = GL_TRUE; __GLeeLink_GL_SGIX_ycrcba(); } if (__GLeeCheckExtension("GL_SGI_depth_pass_instrument", &extensionNames) ) { _GLEE_SGI_depth_pass_instrument = GL_TRUE; __GLeeLink_GL_SGI_depth_pass_instrument(); } if (__GLeeCheckExtension("GL_3DFX_texture_compression_FXT1", &extensionNames) ) { _GLEE_3DFX_texture_compression_FXT1 = GL_TRUE; __GLeeLink_GL_3DFX_texture_compression_FXT1(); } if (__GLeeCheckExtension("GL_3DFX_multisample", &extensionNames) ) { _GLEE_3DFX_multisample = GL_TRUE; __GLeeLink_GL_3DFX_multisample(); } if (__GLeeCheckExtension("GL_3DFX_tbuffer", &extensionNames) ) { _GLEE_3DFX_tbuffer = GL_TRUE; __GLeeLink_GL_3DFX_tbuffer(); } if (__GLeeCheckExtension("GL_EXT_multisample", &extensionNames) ) { _GLEE_EXT_multisample = GL_TRUE; __GLeeLink_GL_EXT_multisample(); } if (__GLeeCheckExtension("GL_SGIX_vertex_preclip", &extensionNames) ) { _GLEE_SGIX_vertex_preclip = GL_TRUE; __GLeeLink_GL_SGIX_vertex_preclip(); } if (__GLeeCheckExtension("GL_SGIX_convolution_accuracy", &extensionNames) ) { _GLEE_SGIX_convolution_accuracy = GL_TRUE; __GLeeLink_GL_SGIX_convolution_accuracy(); } if (__GLeeCheckExtension("GL_SGIX_resample", &extensionNames) ) { _GLEE_SGIX_resample = GL_TRUE; __GLeeLink_GL_SGIX_resample(); } if (__GLeeCheckExtension("GL_SGIS_point_line_texgen", &extensionNames) ) { _GLEE_SGIS_point_line_texgen = GL_TRUE; __GLeeLink_GL_SGIS_point_line_texgen(); } if (__GLeeCheckExtension("GL_SGIS_texture_color_mask", &extensionNames) ) { _GLEE_SGIS_texture_color_mask = GL_TRUE; __GLeeLink_GL_SGIS_texture_color_mask(); } if (__GLeeCheckExtension("GL_EXT_texture_env_dot3", &extensionNames) ) { _GLEE_EXT_texture_env_dot3 = GL_TRUE; __GLeeLink_GL_EXT_texture_env_dot3(); } if (__GLeeCheckExtension("GL_ATI_texture_mirror_once", &extensionNames) ) { _GLEE_ATI_texture_mirror_once = GL_TRUE; __GLeeLink_GL_ATI_texture_mirror_once(); } if (__GLeeCheckExtension("GL_NV_fence", &extensionNames) ) { _GLEE_NV_fence = GL_TRUE; __GLeeLink_GL_NV_fence(); } if (__GLeeCheckExtension("GL_IBM_texture_mirrored_repeat", &extensionNames) ) { _GLEE_IBM_texture_mirrored_repeat = GL_TRUE; __GLeeLink_GL_IBM_texture_mirrored_repeat(); } if (__GLeeCheckExtension("GL_NV_evaluators", &extensionNames) ) { _GLEE_NV_evaluators = GL_TRUE; __GLeeLink_GL_NV_evaluators(); } if (__GLeeCheckExtension("GL_NV_packed_depth_stencil", &extensionNames) ) { _GLEE_NV_packed_depth_stencil = GL_TRUE; __GLeeLink_GL_NV_packed_depth_stencil(); } if (__GLeeCheckExtension("GL_NV_register_combiners2", &extensionNames) ) { _GLEE_NV_register_combiners2 = GL_TRUE; __GLeeLink_GL_NV_register_combiners2(); } if (__GLeeCheckExtension("GL_NV_texture_compression_vtc", &extensionNames) ) { _GLEE_NV_texture_compression_vtc = GL_TRUE; __GLeeLink_GL_NV_texture_compression_vtc(); } if (__GLeeCheckExtension("GL_NV_texture_rectangle", &extensionNames) ) { _GLEE_NV_texture_rectangle = GL_TRUE; __GLeeLink_GL_NV_texture_rectangle(); } if (__GLeeCheckExtension("GL_NV_texture_shader", &extensionNames) ) { _GLEE_NV_texture_shader = GL_TRUE; __GLeeLink_GL_NV_texture_shader(); } if (__GLeeCheckExtension("GL_NV_texture_shader2", &extensionNames) ) { _GLEE_NV_texture_shader2 = GL_TRUE; __GLeeLink_GL_NV_texture_shader2(); } if (__GLeeCheckExtension("GL_NV_vertex_array_range2", &extensionNames) ) { _GLEE_NV_vertex_array_range2 = GL_TRUE; __GLeeLink_GL_NV_vertex_array_range2(); } if (__GLeeCheckExtension("GL_NV_vertex_program", &extensionNames) ) { _GLEE_NV_vertex_program = GL_TRUE; __GLeeLink_GL_NV_vertex_program(); } if (__GLeeCheckExtension("GL_SGIX_texture_coordinate_clamp", &extensionNames) ) { _GLEE_SGIX_texture_coordinate_clamp = GL_TRUE; __GLeeLink_GL_SGIX_texture_coordinate_clamp(); } if (__GLeeCheckExtension("GL_SGIX_scalebias_hint", &extensionNames) ) { _GLEE_SGIX_scalebias_hint = GL_TRUE; __GLeeLink_GL_SGIX_scalebias_hint(); } if (__GLeeCheckExtension("GL_OML_interlace", &extensionNames) ) { _GLEE_OML_interlace = GL_TRUE; __GLeeLink_GL_OML_interlace(); } if (__GLeeCheckExtension("GL_OML_subsample", &extensionNames) ) { _GLEE_OML_subsample = GL_TRUE; __GLeeLink_GL_OML_subsample(); } if (__GLeeCheckExtension("GL_OML_resample", &extensionNames) ) { _GLEE_OML_resample = GL_TRUE; __GLeeLink_GL_OML_resample(); } if (__GLeeCheckExtension("GL_NV_copy_depth_to_color", &extensionNames) ) { _GLEE_NV_copy_depth_to_color = GL_TRUE; __GLeeLink_GL_NV_copy_depth_to_color(); } if (__GLeeCheckExtension("GL_ATI_envmap_bumpmap", &extensionNames) ) { _GLEE_ATI_envmap_bumpmap = GL_TRUE; __GLeeLink_GL_ATI_envmap_bumpmap(); } if (__GLeeCheckExtension("GL_ATI_fragment_shader", &extensionNames) ) { _GLEE_ATI_fragment_shader = GL_TRUE; __GLeeLink_GL_ATI_fragment_shader(); } if (__GLeeCheckExtension("GL_ATI_pn_triangles", &extensionNames) ) { _GLEE_ATI_pn_triangles = GL_TRUE; __GLeeLink_GL_ATI_pn_triangles(); } if (__GLeeCheckExtension("GL_ATI_vertex_array_object", &extensionNames) ) { _GLEE_ATI_vertex_array_object = GL_TRUE; __GLeeLink_GL_ATI_vertex_array_object(); } if (__GLeeCheckExtension("GL_EXT_vertex_shader", &extensionNames) ) { _GLEE_EXT_vertex_shader = GL_TRUE; __GLeeLink_GL_EXT_vertex_shader(); } if (__GLeeCheckExtension("GL_ATI_vertex_streams", &extensionNames) ) { _GLEE_ATI_vertex_streams = GL_TRUE; __GLeeLink_GL_ATI_vertex_streams(); } if (__GLeeCheckExtension("GL_ATI_element_array", &extensionNames) ) { _GLEE_ATI_element_array = GL_TRUE; __GLeeLink_GL_ATI_element_array(); } if (__GLeeCheckExtension("GL_SUN_mesh_array", &extensionNames) ) { _GLEE_SUN_mesh_array = GL_TRUE; __GLeeLink_GL_SUN_mesh_array(); } if (__GLeeCheckExtension("GL_SUN_slice_accum", &extensionNames) ) { _GLEE_SUN_slice_accum = GL_TRUE; __GLeeLink_GL_SUN_slice_accum(); } if (__GLeeCheckExtension("GL_NV_multisample_filter_hint", &extensionNames) ) { _GLEE_NV_multisample_filter_hint = GL_TRUE; __GLeeLink_GL_NV_multisample_filter_hint(); } if (__GLeeCheckExtension("GL_NV_depth_clamp", &extensionNames) ) { _GLEE_NV_depth_clamp = GL_TRUE; __GLeeLink_GL_NV_depth_clamp(); } if (__GLeeCheckExtension("GL_NV_occlusion_query", &extensionNames) ) { _GLEE_NV_occlusion_query = GL_TRUE; __GLeeLink_GL_NV_occlusion_query(); } if (__GLeeCheckExtension("GL_NV_point_sprite", &extensionNames) ) { _GLEE_NV_point_sprite = GL_TRUE; __GLeeLink_GL_NV_point_sprite(); } if (__GLeeCheckExtension("GL_NV_texture_shader3", &extensionNames) ) { _GLEE_NV_texture_shader3 = GL_TRUE; __GLeeLink_GL_NV_texture_shader3(); } if (__GLeeCheckExtension("GL_NV_vertex_program1_1", &extensionNames) ) { _GLEE_NV_vertex_program1_1 = GL_TRUE; __GLeeLink_GL_NV_vertex_program1_1(); } if (__GLeeCheckExtension("GL_EXT_shadow_funcs", &extensionNames) ) { _GLEE_EXT_shadow_funcs = GL_TRUE; __GLeeLink_GL_EXT_shadow_funcs(); } if (__GLeeCheckExtension("GL_EXT_stencil_two_side", &extensionNames) ) { _GLEE_EXT_stencil_two_side = GL_TRUE; __GLeeLink_GL_EXT_stencil_two_side(); } if (__GLeeCheckExtension("GL_ATI_text_fragment_shader", &extensionNames) ) { _GLEE_ATI_text_fragment_shader = GL_TRUE; __GLeeLink_GL_ATI_text_fragment_shader(); } if (__GLeeCheckExtension("GL_APPLE_client_storage", &extensionNames) ) { _GLEE_APPLE_client_storage = GL_TRUE; __GLeeLink_GL_APPLE_client_storage(); } if (__GLeeCheckExtension("GL_APPLE_element_array", &extensionNames) ) { _GLEE_APPLE_element_array = GL_TRUE; __GLeeLink_GL_APPLE_element_array(); } if (__GLeeCheckExtension("GL_APPLE_fence", &extensionNames) ) { _GLEE_APPLE_fence = GL_TRUE; __GLeeLink_GL_APPLE_fence(); } if (__GLeeCheckExtension("GL_APPLE_vertex_array_object", &extensionNames) ) { _GLEE_APPLE_vertex_array_object = GL_TRUE; __GLeeLink_GL_APPLE_vertex_array_object(); } if (__GLeeCheckExtension("GL_APPLE_vertex_array_range", &extensionNames) ) { _GLEE_APPLE_vertex_array_range = GL_TRUE; __GLeeLink_GL_APPLE_vertex_array_range(); } if (__GLeeCheckExtension("GL_APPLE_ycbcr_422", &extensionNames) ) { _GLEE_APPLE_ycbcr_422 = GL_TRUE; __GLeeLink_GL_APPLE_ycbcr_422(); } if (__GLeeCheckExtension("GL_S3_s3tc", &extensionNames) ) { _GLEE_S3_s3tc = GL_TRUE; __GLeeLink_GL_S3_s3tc(); } if (__GLeeCheckExtension("GL_ATI_draw_buffers", &extensionNames) ) { _GLEE_ATI_draw_buffers = GL_TRUE; __GLeeLink_GL_ATI_draw_buffers(); } if (__GLeeCheckExtension("GL_ATI_pixel_format_float", &extensionNames) ) { _GLEE_ATI_pixel_format_float = GL_TRUE; __GLeeLink_GL_ATI_pixel_format_float(); } if (__GLeeCheckExtension("GL_ATI_texture_env_combine3", &extensionNames) ) { _GLEE_ATI_texture_env_combine3 = GL_TRUE; __GLeeLink_GL_ATI_texture_env_combine3(); } if (__GLeeCheckExtension("GL_ATI_texture_float", &extensionNames) ) { _GLEE_ATI_texture_float = GL_TRUE; __GLeeLink_GL_ATI_texture_float(); } if (__GLeeCheckExtension("GL_NV_float_buffer", &extensionNames) ) { _GLEE_NV_float_buffer = GL_TRUE; __GLeeLink_GL_NV_float_buffer(); } if (__GLeeCheckExtension("GL_NV_fragment_program", &extensionNames) ) { _GLEE_NV_fragment_program = GL_TRUE; __GLeeLink_GL_NV_fragment_program(); } if (__GLeeCheckExtension("GL_NV_half_float", &extensionNames) ) { _GLEE_NV_half_float = GL_TRUE; __GLeeLink_GL_NV_half_float(); } if (__GLeeCheckExtension("GL_NV_pixel_data_range", &extensionNames) ) { _GLEE_NV_pixel_data_range = GL_TRUE; __GLeeLink_GL_NV_pixel_data_range(); } if (__GLeeCheckExtension("GL_NV_primitive_restart", &extensionNames) ) { _GLEE_NV_primitive_restart = GL_TRUE; __GLeeLink_GL_NV_primitive_restart(); } if (__GLeeCheckExtension("GL_NV_texture_expand_normal", &extensionNames) ) { _GLEE_NV_texture_expand_normal = GL_TRUE; __GLeeLink_GL_NV_texture_expand_normal(); } if (__GLeeCheckExtension("GL_NV_vertex_program2", &extensionNames) ) { _GLEE_NV_vertex_program2 = GL_TRUE; __GLeeLink_GL_NV_vertex_program2(); } if (__GLeeCheckExtension("GL_ATI_map_object_buffer", &extensionNames) ) { _GLEE_ATI_map_object_buffer = GL_TRUE; __GLeeLink_GL_ATI_map_object_buffer(); } if (__GLeeCheckExtension("GL_ATI_separate_stencil", &extensionNames) ) { _GLEE_ATI_separate_stencil = GL_TRUE; __GLeeLink_GL_ATI_separate_stencil(); } if (__GLeeCheckExtension("GL_ATI_vertex_attrib_array_object", &extensionNames) ) { _GLEE_ATI_vertex_attrib_array_object = GL_TRUE; __GLeeLink_GL_ATI_vertex_attrib_array_object(); } if (__GLeeCheckExtension("GL_OES_byte_coordinates", &extensionNames) ) { _GLEE_OES_byte_coordinates = GL_TRUE; __GLeeLink_GL_OES_byte_coordinates(); } if (__GLeeCheckExtension("GL_OES_fixed_point", &extensionNames) ) { _GLEE_OES_fixed_point = GL_TRUE; __GLeeLink_GL_OES_fixed_point(); } if (__GLeeCheckExtension("GL_OES_single_precision", &extensionNames) ) { _GLEE_OES_single_precision = GL_TRUE; __GLeeLink_GL_OES_single_precision(); } if (__GLeeCheckExtension("GL_OES_compressed_paletted_texture", &extensionNames) ) { _GLEE_OES_compressed_paletted_texture = GL_TRUE; __GLeeLink_GL_OES_compressed_paletted_texture(); } if (__GLeeCheckExtension("GL_OES_read_format", &extensionNames) ) { _GLEE_OES_read_format = GL_TRUE; __GLeeLink_GL_OES_read_format(); } if (__GLeeCheckExtension("GL_OES_query_matrix", &extensionNames) ) { _GLEE_OES_query_matrix = GL_TRUE; __GLeeLink_GL_OES_query_matrix(); } if (__GLeeCheckExtension("GL_EXT_depth_bounds_test", &extensionNames) ) { _GLEE_EXT_depth_bounds_test = GL_TRUE; __GLeeLink_GL_EXT_depth_bounds_test(); } if (__GLeeCheckExtension("GL_EXT_texture_mirror_clamp", &extensionNames) ) { _GLEE_EXT_texture_mirror_clamp = GL_TRUE; __GLeeLink_GL_EXT_texture_mirror_clamp(); } if (__GLeeCheckExtension("GL_EXT_blend_equation_separate", &extensionNames) ) { _GLEE_EXT_blend_equation_separate = GL_TRUE; __GLeeLink_GL_EXT_blend_equation_separate(); } if (__GLeeCheckExtension("GL_MESA_pack_invert", &extensionNames) ) { _GLEE_MESA_pack_invert = GL_TRUE; __GLeeLink_GL_MESA_pack_invert(); } if (__GLeeCheckExtension("GL_MESA_ycbcr_texture", &extensionNames) ) { _GLEE_MESA_ycbcr_texture = GL_TRUE; __GLeeLink_GL_MESA_ycbcr_texture(); } if (__GLeeCheckExtension("GL_EXT_pixel_buffer_object", &extensionNames) ) { _GLEE_EXT_pixel_buffer_object = GL_TRUE; __GLeeLink_GL_EXT_pixel_buffer_object(); } if (__GLeeCheckExtension("GL_NV_fragment_program_option", &extensionNames) ) { _GLEE_NV_fragment_program_option = GL_TRUE; __GLeeLink_GL_NV_fragment_program_option(); } if (__GLeeCheckExtension("GL_NV_fragment_program2", &extensionNames) ) { _GLEE_NV_fragment_program2 = GL_TRUE; __GLeeLink_GL_NV_fragment_program2(); } if (__GLeeCheckExtension("GL_NV_vertex_program2_option", &extensionNames) ) { _GLEE_NV_vertex_program2_option = GL_TRUE; __GLeeLink_GL_NV_vertex_program2_option(); } if (__GLeeCheckExtension("GL_NV_vertex_program3", &extensionNames) ) { _GLEE_NV_vertex_program3 = GL_TRUE; __GLeeLink_GL_NV_vertex_program3(); } if (__GLeeCheckExtension("GL_EXT_framebuffer_object", &extensionNames) ) { _GLEE_EXT_framebuffer_object = GL_TRUE; __GLeeLink_GL_EXT_framebuffer_object(); } if (__GLeeCheckExtension("GL_GREMEDY_string_marker", &extensionNames) ) { _GLEE_GREMEDY_string_marker = GL_TRUE; __GLeeLink_GL_GREMEDY_string_marker(); } if (__GLeeCheckExtension("GL_EXT_packed_depth_stencil", &extensionNames) ) { _GLEE_EXT_packed_depth_stencil = GL_TRUE; __GLeeLink_GL_EXT_packed_depth_stencil(); } if (__GLeeCheckExtension("GL_EXT_stencil_clear_tag", &extensionNames) ) { _GLEE_EXT_stencil_clear_tag = GL_TRUE; __GLeeLink_GL_EXT_stencil_clear_tag(); } if (__GLeeCheckExtension("GL_EXT_texture_sRGB", &extensionNames) ) { _GLEE_EXT_texture_sRGB = GL_TRUE; __GLeeLink_GL_EXT_texture_sRGB(); } if (__GLeeCheckExtension("GL_EXT_framebuffer_blit", &extensionNames) ) { _GLEE_EXT_framebuffer_blit = GL_TRUE; __GLeeLink_GL_EXT_framebuffer_blit(); } if (__GLeeCheckExtension("GL_EXT_framebuffer_multisample", &extensionNames) ) { _GLEE_EXT_framebuffer_multisample = GL_TRUE; __GLeeLink_GL_EXT_framebuffer_multisample(); } if (__GLeeCheckExtension("GL_MESAX_texture_stack", &extensionNames) ) { _GLEE_MESAX_texture_stack = GL_TRUE; __GLeeLink_GL_MESAX_texture_stack(); } if (__GLeeCheckExtension("GL_EXT_timer_query", &extensionNames) ) { _GLEE_EXT_timer_query = GL_TRUE; __GLeeLink_GL_EXT_timer_query(); } if (__GLeeCheckExtension("GL_EXT_gpu_program_parameters", &extensionNames) ) { _GLEE_EXT_gpu_program_parameters = GL_TRUE; __GLeeLink_GL_EXT_gpu_program_parameters(); } if (__GLeeCheckExtension("GL_APPLE_flush_buffer_range", &extensionNames) ) { _GLEE_APPLE_flush_buffer_range = GL_TRUE; __GLeeLink_GL_APPLE_flush_buffer_range(); } if (__GLeeCheckExtension("GL_EXT_gpu_shader4", &extensionNames) ) { _GLEE_EXT_gpu_shader4 = GL_TRUE; __GLeeLink_GL_EXT_gpu_shader4(); } if (__GLeeCheckExtension("GL_EXT_draw_instanced", &extensionNames) ) { _GLEE_EXT_draw_instanced = GL_TRUE; __GLeeLink_GL_EXT_draw_instanced(); } if (__GLeeCheckExtension("GL_EXT_packed_float", &extensionNames) ) { _GLEE_EXT_packed_float = GL_TRUE; __GLeeLink_GL_EXT_packed_float(); } if (__GLeeCheckExtension("GL_EXT_texture_array", &extensionNames) ) { _GLEE_EXT_texture_array = GL_TRUE; __GLeeLink_GL_EXT_texture_array(); } if (__GLeeCheckExtension("GL_EXT_texture_buffer_object", &extensionNames) ) { _GLEE_EXT_texture_buffer_object = GL_TRUE; __GLeeLink_GL_EXT_texture_buffer_object(); } if (__GLeeCheckExtension("GL_EXT_texture_compression_latc", &extensionNames) ) { _GLEE_EXT_texture_compression_latc = GL_TRUE; __GLeeLink_GL_EXT_texture_compression_latc(); } if (__GLeeCheckExtension("GL_EXT_texture_compression_rgtc", &extensionNames) ) { _GLEE_EXT_texture_compression_rgtc = GL_TRUE; __GLeeLink_GL_EXT_texture_compression_rgtc(); } if (__GLeeCheckExtension("GL_EXT_texture_shared_exponent", &extensionNames) ) { _GLEE_EXT_texture_shared_exponent = GL_TRUE; __GLeeLink_GL_EXT_texture_shared_exponent(); } if (__GLeeCheckExtension("GL_NV_depth_buffer_float", &extensionNames) ) { _GLEE_NV_depth_buffer_float = GL_TRUE; __GLeeLink_GL_NV_depth_buffer_float(); } if (__GLeeCheckExtension("GL_NV_framebuffer_multisample_coverage", &extensionNames) ) { _GLEE_NV_framebuffer_multisample_coverage = GL_TRUE; __GLeeLink_GL_NV_framebuffer_multisample_coverage(); } if (__GLeeCheckExtension("GL_EXT_framebuffer_sRGB", &extensionNames) ) { _GLEE_EXT_framebuffer_sRGB = GL_TRUE; __GLeeLink_GL_EXT_framebuffer_sRGB(); } if (__GLeeCheckExtension("GL_NV_geometry_shader4", &extensionNames) ) { _GLEE_NV_geometry_shader4 = GL_TRUE; __GLeeLink_GL_NV_geometry_shader4(); } if (__GLeeCheckExtension("GL_NV_parameter_buffer_object", &extensionNames) ) { _GLEE_NV_parameter_buffer_object = GL_TRUE; __GLeeLink_GL_NV_parameter_buffer_object(); } if (__GLeeCheckExtension("GL_EXT_draw_buffers2", &extensionNames) ) { _GLEE_EXT_draw_buffers2 = GL_TRUE; __GLeeLink_GL_EXT_draw_buffers2(); } if (__GLeeCheckExtension("GL_NV_transform_feedback", &extensionNames) ) { _GLEE_NV_transform_feedback = GL_TRUE; __GLeeLink_GL_NV_transform_feedback(); } if (__GLeeCheckExtension("GL_EXT_bindable_uniform", &extensionNames) ) { _GLEE_EXT_bindable_uniform = GL_TRUE; __GLeeLink_GL_EXT_bindable_uniform(); } if (__GLeeCheckExtension("GL_EXT_texture_integer", &extensionNames) ) { _GLEE_EXT_texture_integer = GL_TRUE; __GLeeLink_GL_EXT_texture_integer(); } if (__GLeeCheckExtension("GL_GREMEDY_frame_terminator", &extensionNames) ) { _GLEE_GREMEDY_frame_terminator = GL_TRUE; __GLeeLink_GL_GREMEDY_frame_terminator(); } if (__GLeeCheckExtension("GL_NV_conditional_render", &extensionNames) ) { _GLEE_NV_conditional_render = GL_TRUE; __GLeeLink_GL_NV_conditional_render(); } if (__GLeeCheckExtension("GL_NV_present_video", &extensionNames) ) { _GLEE_NV_present_video = GL_TRUE; __GLeeLink_GL_NV_present_video(); } if (__GLeeCheckExtension("GL_EXT_transform_feedback", &extensionNames) ) { _GLEE_EXT_transform_feedback = GL_TRUE; __GLeeLink_GL_EXT_transform_feedback(); } if (__GLeeCheckExtension("GL_EXT_direct_state_access", &extensionNames) ) { _GLEE_EXT_direct_state_access = GL_TRUE; __GLeeLink_GL_EXT_direct_state_access(); } if (__GLeeCheckExtension("GL_EXT_vertex_array_bgra", &extensionNames) ) { _GLEE_EXT_vertex_array_bgra = GL_TRUE; __GLeeLink_GL_EXT_vertex_array_bgra(); } if (__GLeeCheckExtension("GL_EXT_texture_swizzle", &extensionNames) ) { _GLEE_EXT_texture_swizzle = GL_TRUE; __GLeeLink_GL_EXT_texture_swizzle(); } if (__GLeeCheckExtension("GL_NV_explicit_multisample", &extensionNames) ) { _GLEE_NV_explicit_multisample = GL_TRUE; __GLeeLink_GL_NV_explicit_multisample(); } if (__GLeeCheckExtension("GL_NV_transform_feedback2", &extensionNames) ) { _GLEE_NV_transform_feedback2 = GL_TRUE; __GLeeLink_GL_NV_transform_feedback2(); } if (__GLeeCheckExtension("GL_ATI_meminfo", &extensionNames) ) { _GLEE_ATI_meminfo = GL_TRUE; __GLeeLink_GL_ATI_meminfo(); } if (__GLeeCheckExtension("GL_AMD_performance_monitor", &extensionNames) ) { _GLEE_AMD_performance_monitor = GL_TRUE; __GLeeLink_GL_AMD_performance_monitor(); } if (__GLeeCheckExtension("GL_AMD_texture_texture4", &extensionNames) ) { _GLEE_AMD_texture_texture4 = GL_TRUE; __GLeeLink_GL_AMD_texture_texture4(); } if (__GLeeCheckExtension("GL_AMD_vertex_shader_tesselator", &extensionNames) ) { _GLEE_AMD_vertex_shader_tesselator = GL_TRUE; __GLeeLink_GL_AMD_vertex_shader_tesselator(); } if (__GLeeCheckExtension("GL_EXT_provoking_vertex", &extensionNames) ) { _GLEE_EXT_provoking_vertex = GL_TRUE; __GLeeLink_GL_EXT_provoking_vertex(); } if (__GLeeCheckExtension("GL_EXT_texture_snorm", &extensionNames) ) { _GLEE_EXT_texture_snorm = GL_TRUE; __GLeeLink_GL_EXT_texture_snorm(); } if (__GLeeCheckExtension("GL_AMD_draw_buffers_blend", &extensionNames) ) { _GLEE_AMD_draw_buffers_blend = GL_TRUE; __GLeeLink_GL_AMD_draw_buffers_blend(); } if (__GLeeCheckExtension("GL_APPLE_texture_range", &extensionNames) ) { _GLEE_APPLE_texture_range = GL_TRUE; __GLeeLink_GL_APPLE_texture_range(); } if (__GLeeCheckExtension("GL_APPLE_float_pixels", &extensionNames) ) { _GLEE_APPLE_float_pixels = GL_TRUE; __GLeeLink_GL_APPLE_float_pixels(); } if (__GLeeCheckExtension("GL_APPLE_vertex_program_evaluators", &extensionNames) ) { _GLEE_APPLE_vertex_program_evaluators = GL_TRUE; __GLeeLink_GL_APPLE_vertex_program_evaluators(); } if (__GLeeCheckExtension("GL_APPLE_aux_depth_stencil", &extensionNames) ) { _GLEE_APPLE_aux_depth_stencil = GL_TRUE; __GLeeLink_GL_APPLE_aux_depth_stencil(); } if (__GLeeCheckExtension("GL_APPLE_object_purgeable", &extensionNames) ) { _GLEE_APPLE_object_purgeable = GL_TRUE; __GLeeLink_GL_APPLE_object_purgeable(); } if (__GLeeCheckExtension("GL_APPLE_row_bytes", &extensionNames) ) { _GLEE_APPLE_row_bytes = GL_TRUE; __GLeeLink_GL_APPLE_row_bytes(); } if (__GLeeCheckExtension("GL_APPLE_rgb_422", &extensionNames) ) { _GLEE_APPLE_rgb_422 = GL_TRUE; __GLeeLink_GL_APPLE_rgb_422(); } if (__GLeeCheckExtension("GL_NV_video_capture", &extensionNames) ) { _GLEE_NV_video_capture = GL_TRUE; __GLeeLink_GL_NV_video_capture(); } if (__GLeeCheckExtension("GL_NV_copy_image", &extensionNames) ) { _GLEE_NV_copy_image = GL_TRUE; __GLeeLink_GL_NV_copy_image(); } if (__GLeeCheckExtension("GL_EXT_separate_shader_objects", &extensionNames) ) { _GLEE_EXT_separate_shader_objects = GL_TRUE; __GLeeLink_GL_EXT_separate_shader_objects(); } if (__GLeeCheckExtension("GL_NV_parameter_buffer_object2", &extensionNames) ) { _GLEE_NV_parameter_buffer_object2 = GL_TRUE; __GLeeLink_GL_NV_parameter_buffer_object2(); } if (__GLeeCheckExtension("GL_NV_shader_buffer_load", &extensionNames) ) { _GLEE_NV_shader_buffer_load = GL_TRUE; __GLeeLink_GL_NV_shader_buffer_load(); } if (__GLeeCheckExtension("GL_NV_vertex_buffer_unified_memory", &extensionNames) ) { _GLEE_NV_vertex_buffer_unified_memory = GL_TRUE; __GLeeLink_GL_NV_vertex_buffer_unified_memory(); } if (__GLeeCheckExtension("GL_NV_texture_barrier", &extensionNames) ) { _GLEE_NV_texture_barrier = GL_TRUE; __GLeeLink_GL_NV_texture_barrier(); } if (__GLeeCheckExtension("GL_AMD_shader_stencil_export", &extensionNames) ) { _GLEE_AMD_shader_stencil_export = GL_TRUE; __GLeeLink_GL_AMD_shader_stencil_export(); } if (__GLeeCheckExtension("GL_AMD_seamless_cubemap_per_texture", &extensionNames) ) { _GLEE_AMD_seamless_cubemap_per_texture = GL_TRUE; __GLeeLink_GL_AMD_seamless_cubemap_per_texture(); } if (__GLeeCheckExtension("GL_AMD_conservative_depth", &extensionNames) ) { _GLEE_AMD_conservative_depth = GL_TRUE; __GLeeLink_GL_AMD_conservative_depth(); } if (__GLeeCheckExtension("GL_EXT_shader_image_load_store", &extensionNames) ) { _GLEE_EXT_shader_image_load_store = GL_TRUE; __GLeeLink_GL_EXT_shader_image_load_store(); } if (__GLeeCheckExtension("GL_EXT_vertex_attrib_64bit", &extensionNames) ) { _GLEE_EXT_vertex_attrib_64bit = GL_TRUE; __GLeeLink_GL_EXT_vertex_attrib_64bit(); } if (__GLeeCheckExtension("GL_NV_gpu_program5", &extensionNames) ) { _GLEE_NV_gpu_program5 = GL_TRUE; __GLeeLink_GL_NV_gpu_program5(); } if (__GLeeCheckExtension("GL_NV_gpu_shader5", &extensionNames) ) { _GLEE_NV_gpu_shader5 = GL_TRUE; __GLeeLink_GL_NV_gpu_shader5(); } if (__GLeeCheckExtension("GL_NV_shader_buffer_store", &extensionNames) ) { _GLEE_NV_shader_buffer_store = GL_TRUE; __GLeeLink_GL_NV_shader_buffer_store(); } if (__GLeeCheckExtension("GL_NV_tessellation_program5", &extensionNames) ) { _GLEE_NV_tessellation_program5 = GL_TRUE; __GLeeLink_GL_NV_tessellation_program5(); } if (__GLeeCheckExtension("GL_NV_vertex_attrib_integer_64bit", &extensionNames) ) { _GLEE_NV_vertex_attrib_integer_64bit = GL_TRUE; __GLeeLink_GL_NV_vertex_attrib_integer_64bit(); } if (__GLeeCheckExtension("GL_NV_multisample_coverage", &extensionNames) ) { _GLEE_NV_multisample_coverage = GL_TRUE; __GLeeLink_GL_NV_multisample_coverage(); } if (__GLeeCheckExtension("GL_AMD_name_gen_delete", &extensionNames) ) { _GLEE_AMD_name_gen_delete = GL_TRUE; __GLeeLink_GL_AMD_name_gen_delete(); } if (__GLeeCheckExtension("GL_AMD_debug_output", &extensionNames) ) { _GLEE_AMD_debug_output = GL_TRUE; __GLeeLink_GL_AMD_debug_output(); } if (__GLeeCheckExtension("GL_AMD_transform_feedback3_lines_triangles", &extensionNames) ) { _GLEE_AMD_transform_feedback3_lines_triangles = GL_TRUE; __GLeeLink_GL_AMD_transform_feedback3_lines_triangles(); } if (__GLeeCheckExtension("GL_AMD_depth_clamp_separate", &extensionNames) ) { _GLEE_AMD_depth_clamp_separate = GL_TRUE; __GLeeLink_GL_AMD_depth_clamp_separate(); } if (__GLeeCheckExtension("GL_EXT_texture_sRGB_decode", &extensionNames) ) { _GLEE_EXT_texture_sRGB_decode = GL_TRUE; __GLeeLink_GL_EXT_texture_sRGB_decode(); } if (__GLeeCheckExtension("GL_NV_texture_multisample", &extensionNames) ) { _GLEE_NV_texture_multisample = GL_TRUE; __GLeeLink_GL_NV_texture_multisample(); } if (__GLeeCheckExtension("GL_AMD_blend_minmax_factor", &extensionNames) ) { _GLEE_AMD_blend_minmax_factor = GL_TRUE; __GLeeLink_GL_AMD_blend_minmax_factor(); } if (__GLeeCheckExtension("GL_AMD_sample_positions", &extensionNames) ) { _GLEE_AMD_sample_positions = GL_TRUE; __GLeeLink_GL_AMD_sample_positions(); } if (__GLeeCheckExtension("GL_EXT_x11_sync_object", &extensionNames) ) { _GLEE_EXT_x11_sync_object = GL_TRUE; __GLeeLink_GL_EXT_x11_sync_object(); } if (__GLeeCheckExtension("GL_AMD_multi_draw_indirect", &extensionNames) ) { _GLEE_AMD_multi_draw_indirect = GL_TRUE; __GLeeLink_GL_AMD_multi_draw_indirect(); } if (__GLeeCheckExtension("GL_EXT_framebuffer_multisample_blit_scaled", &extensionNames) ) { _GLEE_EXT_framebuffer_multisample_blit_scaled = GL_TRUE; __GLeeLink_GL_EXT_framebuffer_multisample_blit_scaled(); } if (__GLeeCheckExtension("GL_NV_path_rendering", &extensionNames) ) { _GLEE_NV_path_rendering = GL_TRUE; __GLeeLink_GL_NV_path_rendering(); } if (__GLeeCheckExtension("GL_AMD_pinned_memory", &extensionNames) ) { _GLEE_AMD_pinned_memory = GL_TRUE; __GLeeLink_GL_AMD_pinned_memory(); } if (__GLeeCheckExtension("GL_AMD_stencil_operation_extended", &extensionNames) ) { _GLEE_AMD_stencil_operation_extended = GL_TRUE; __GLeeLink_GL_AMD_stencil_operation_extended(); } if (__GLeeCheckExtension("GL_AMD_vertex_shader_viewport_index", &extensionNames) ) { _GLEE_AMD_vertex_shader_viewport_index = GL_TRUE; __GLeeLink_GL_AMD_vertex_shader_viewport_index(); } if (__GLeeCheckExtension("GL_AMD_vertex_shader_layer", &extensionNames) ) { _GLEE_AMD_vertex_shader_layer = GL_TRUE; __GLeeLink_GL_AMD_vertex_shader_layer(); } if (__GLeeCheckExtension("GL_NV_bindless_texture", &extensionNames) ) { _GLEE_NV_bindless_texture = GL_TRUE; __GLeeLink_GL_NV_bindless_texture(); } if (__GLeeCheckExtension("GL_NV_shader_atomic_float", &extensionNames) ) { _GLEE_NV_shader_atomic_float = GL_TRUE; __GLeeLink_GL_NV_shader_atomic_float(); } if (__GLeeCheckExtension("GL_AMD_query_buffer_object", &extensionNames) ) { _GLEE_AMD_query_buffer_object = GL_TRUE; __GLeeLink_GL_AMD_query_buffer_object(); } if (__GLeeCheckExtension("GL_NV_compute_program5", &extensionNames) ) { _GLEE_NV_compute_program5 = GL_TRUE; __GLeeLink_GL_NV_compute_program5(); } if (__GLeeCheckExtension("GL_NV_shader_storage_buffer_object", &extensionNames) ) { _GLEE_NV_shader_storage_buffer_object = GL_TRUE; __GLeeLink_GL_NV_shader_storage_buffer_object(); } if (__GLeeCheckExtension("GL_NV_shader_atomic_counters", &extensionNames) ) { _GLEE_NV_shader_atomic_counters = GL_TRUE; __GLeeLink_GL_NV_shader_atomic_counters(); } if (__GLeeCheckExtension("GL_NV_deep_texture3D", &extensionNames) ) { _GLEE_NV_deep_texture3D = GL_TRUE; __GLeeLink_GL_NV_deep_texture3D(); } if (__GLeeCheckExtension("GL_NVX_conditional_render", &extensionNames) ) { _GLEE_NVX_conditional_render = GL_TRUE; __GLeeLink_GL_NVX_conditional_render(); } if (__GLeeCheckExtension("GL_AMD_sparse_texture", &extensionNames) ) { _GLEE_AMD_sparse_texture = GL_TRUE; __GLeeLink_GL_AMD_sparse_texture(); } if (__GLeeCheckExtension("GL_AMD_shader_trinary_minmax", &extensionNames) ) { _GLEE_AMD_shader_trinary_minmax = GL_TRUE; __GLeeLink_GL_AMD_shader_trinary_minmax(); } if (__GLeeCheckExtension("GL_INTEL_map_texture", &extensionNames) ) { _GLEE_INTEL_map_texture = GL_TRUE; __GLeeLink_GL_INTEL_map_texture(); } if (__GLeeCheckExtension("GL_NV_draw_texture", &extensionNames) ) { _GLEE_NV_draw_texture = GL_TRUE; __GLeeLink_GL_NV_draw_texture(); } if (__GLeeCheckExtension("GL_SGIX_texture_select", &extensionNames) ) { _GLEE_SGIX_texture_select = GL_TRUE; __GLeeLink_GL_SGIX_texture_select(); } if (__GLeeCheckExtension("GL_INGR_blend_func_separate", &extensionNames) ) { _GLEE_INGR_blend_func_separate = GL_TRUE; __GLeeLink_GL_INGR_blend_func_separate(); } if (__GLeeCheckExtension("GL_SGIX_depth_pass_instrument", &extensionNames) ) { _GLEE_SGIX_depth_pass_instrument = GL_TRUE; __GLeeLink_GL_SGIX_depth_pass_instrument(); } if (__GLeeCheckExtension("GL_SGIX_igloo_interface", &extensionNames) ) { _GLEE_SGIX_igloo_interface = GL_TRUE; __GLeeLink_GL_SGIX_igloo_interface(); } #ifdef _WIN32 if (__GLeeCheckExtension("WGL_ARB_buffer_region", &extensionNames) ) { _GLEE_WGL_ARB_buffer_region = GL_TRUE; __GLeeLink_WGL_ARB_buffer_region(); } if (__GLeeCheckExtension("WGL_ARB_multisample", &extensionNames) ) { _GLEE_WGL_ARB_multisample = GL_TRUE; __GLeeLink_WGL_ARB_multisample(); } if (__GLeeCheckExtension("WGL_ARB_extensions_string", &extensionNames) ) { _GLEE_WGL_ARB_extensions_string = GL_TRUE; __GLeeLink_WGL_ARB_extensions_string(); } if (__GLeeCheckExtension("WGL_ARB_pixel_format", &extensionNames) ) { _GLEE_WGL_ARB_pixel_format = GL_TRUE; __GLeeLink_WGL_ARB_pixel_format(); } if (__GLeeCheckExtension("WGL_ARB_make_current_read", &extensionNames) ) { _GLEE_WGL_ARB_make_current_read = GL_TRUE; __GLeeLink_WGL_ARB_make_current_read(); } if (__GLeeCheckExtension("WGL_ARB_pbuffer", &extensionNames) ) { _GLEE_WGL_ARB_pbuffer = GL_TRUE; __GLeeLink_WGL_ARB_pbuffer(); } if (__GLeeCheckExtension("WGL_ARB_render_texture", &extensionNames) ) { _GLEE_WGL_ARB_render_texture = GL_TRUE; __GLeeLink_WGL_ARB_render_texture(); } if (__GLeeCheckExtension("WGL_ARB_pixel_format_float", &extensionNames) ) { _GLEE_WGL_ARB_pixel_format_float = GL_TRUE; __GLeeLink_WGL_ARB_pixel_format_float(); } if (__GLeeCheckExtension("WGL_ARB_framebuffer_sRGB", &extensionNames) ) { _GLEE_WGL_ARB_framebuffer_sRGB = GL_TRUE; __GLeeLink_WGL_ARB_framebuffer_sRGB(); } if (__GLeeCheckExtension("WGL_ARB_create_context", &extensionNames) ) { _GLEE_WGL_ARB_create_context = GL_TRUE; __GLeeLink_WGL_ARB_create_context(); } if (__GLeeCheckExtension("WGL_ARB_create_context_profile", &extensionNames) ) { _GLEE_WGL_ARB_create_context_profile = GL_TRUE; __GLeeLink_WGL_ARB_create_context_profile(); } if (__GLeeCheckExtension("WGL_ARB_create_context_robustness", &extensionNames) ) { _GLEE_WGL_ARB_create_context_robustness = GL_TRUE; __GLeeLink_WGL_ARB_create_context_robustness(); } if (__GLeeCheckExtension("WGL_EXT_make_current_read", &extensionNames) ) { _GLEE_WGL_EXT_make_current_read = GL_TRUE; __GLeeLink_WGL_EXT_make_current_read(); } if (__GLeeCheckExtension("WGL_EXT_pixel_format", &extensionNames) ) { _GLEE_WGL_EXT_pixel_format = GL_TRUE; __GLeeLink_WGL_EXT_pixel_format(); } if (__GLeeCheckExtension("WGL_EXT_pbuffer", &extensionNames) ) { _GLEE_WGL_EXT_pbuffer = GL_TRUE; __GLeeLink_WGL_EXT_pbuffer(); } if (__GLeeCheckExtension("WGL_EXT_depth_float", &extensionNames) ) { _GLEE_WGL_EXT_depth_float = GL_TRUE; __GLeeLink_WGL_EXT_depth_float(); } if (__GLeeCheckExtension("WGL_3DFX_multisample", &extensionNames) ) { _GLEE_WGL_3DFX_multisample = GL_TRUE; __GLeeLink_WGL_3DFX_multisample(); } if (__GLeeCheckExtension("WGL_EXT_multisample", &extensionNames) ) { _GLEE_WGL_EXT_multisample = GL_TRUE; __GLeeLink_WGL_EXT_multisample(); } if (__GLeeCheckExtension("WGL_I3D_digital_video_control", &extensionNames) ) { _GLEE_WGL_I3D_digital_video_control = GL_TRUE; __GLeeLink_WGL_I3D_digital_video_control(); } if (__GLeeCheckExtension("WGL_I3D_gamma", &extensionNames) ) { _GLEE_WGL_I3D_gamma = GL_TRUE; __GLeeLink_WGL_I3D_gamma(); } if (__GLeeCheckExtension("WGL_I3D_genlock", &extensionNames) ) { _GLEE_WGL_I3D_genlock = GL_TRUE; __GLeeLink_WGL_I3D_genlock(); } if (__GLeeCheckExtension("WGL_I3D_image_buffer", &extensionNames) ) { _GLEE_WGL_I3D_image_buffer = GL_TRUE; __GLeeLink_WGL_I3D_image_buffer(); } if (__GLeeCheckExtension("WGL_I3D_swap_frame_lock", &extensionNames) ) { _GLEE_WGL_I3D_swap_frame_lock = GL_TRUE; __GLeeLink_WGL_I3D_swap_frame_lock(); } if (__GLeeCheckExtension("WGL_NV_render_depth_texture", &extensionNames) ) { _GLEE_WGL_NV_render_depth_texture = GL_TRUE; __GLeeLink_WGL_NV_render_depth_texture(); } if (__GLeeCheckExtension("WGL_NV_render_texture_rectangle", &extensionNames) ) { _GLEE_WGL_NV_render_texture_rectangle = GL_TRUE; __GLeeLink_WGL_NV_render_texture_rectangle(); } if (__GLeeCheckExtension("WGL_ATI_pixel_format_float", &extensionNames) ) { _GLEE_WGL_ATI_pixel_format_float = GL_TRUE; __GLeeLink_WGL_ATI_pixel_format_float(); } if (__GLeeCheckExtension("WGL_NV_float_buffer", &extensionNames) ) { _GLEE_WGL_NV_float_buffer = GL_TRUE; __GLeeLink_WGL_NV_float_buffer(); } if (__GLeeCheckExtension("WGL_3DL_stereo_control", &extensionNames) ) { _GLEE_WGL_3DL_stereo_control = GL_TRUE; __GLeeLink_WGL_3DL_stereo_control(); } if (__GLeeCheckExtension("WGL_EXT_pixel_format_packed_float", &extensionNames) ) { _GLEE_WGL_EXT_pixel_format_packed_float = GL_TRUE; __GLeeLink_WGL_EXT_pixel_format_packed_float(); } if (__GLeeCheckExtension("WGL_EXT_framebuffer_sRGB", &extensionNames) ) { _GLEE_WGL_EXT_framebuffer_sRGB = GL_TRUE; __GLeeLink_WGL_EXT_framebuffer_sRGB(); } if (__GLeeCheckExtension("WGL_NV_present_video", &extensionNames) ) { _GLEE_WGL_NV_present_video = GL_TRUE; __GLeeLink_WGL_NV_present_video(); } if (__GLeeCheckExtension("WGL_NV_swap_group", &extensionNames) ) { _GLEE_WGL_NV_swap_group = GL_TRUE; __GLeeLink_WGL_NV_swap_group(); } if (__GLeeCheckExtension("WGL_NV_gpu_affinity", &extensionNames) ) { _GLEE_WGL_NV_gpu_affinity = GL_TRUE; __GLeeLink_WGL_NV_gpu_affinity(); } if (__GLeeCheckExtension("WGL_AMD_gpu_association", &extensionNames) ) { _GLEE_WGL_AMD_gpu_association = GL_TRUE; __GLeeLink_WGL_AMD_gpu_association(); } if (__GLeeCheckExtension("WGL_NV_copy_image", &extensionNames) ) { _GLEE_WGL_NV_copy_image = GL_TRUE; __GLeeLink_WGL_NV_copy_image(); } if (__GLeeCheckExtension("WGL_NV_multisample_coverage", &extensionNames) ) { _GLEE_WGL_NV_multisample_coverage = GL_TRUE; __GLeeLink_WGL_NV_multisample_coverage(); } if (__GLeeCheckExtension("WGL_EXT_create_context_es2_profile", &extensionNames) ) { _GLEE_WGL_EXT_create_context_es2_profile = GL_TRUE; __GLeeLink_WGL_EXT_create_context_es2_profile(); } if (__GLeeCheckExtension("WGL_NV_DX_interop", &extensionNames) ) { _GLEE_WGL_NV_DX_interop = GL_TRUE; __GLeeLink_WGL_NV_DX_interop(); } if (__GLeeCheckExtension("WGL_NV_DX_interop2", &extensionNames) ) { _GLEE_WGL_NV_DX_interop2 = GL_TRUE; __GLeeLink_WGL_NV_DX_interop2(); } if (__GLeeCheckExtension("WGL_EXT_swap_control_tear", &extensionNames) ) { _GLEE_WGL_EXT_swap_control_tear = GL_TRUE; __GLeeLink_WGL_EXT_swap_control_tear(); } if (__GLeeCheckExtension("WGL_EXT_display_color_table", &extensionNames) ) { _GLEE_WGL_EXT_display_color_table = GL_TRUE; __GLeeLink_WGL_EXT_display_color_table(); } if (__GLeeCheckExtension("WGL_EXT_extensions_string", &extensionNames) ) { _GLEE_WGL_EXT_extensions_string = GL_TRUE; __GLeeLink_WGL_EXT_extensions_string(); } if (__GLeeCheckExtension("WGL_EXT_swap_control", &extensionNames) ) { _GLEE_WGL_EXT_swap_control = GL_TRUE; __GLeeLink_WGL_EXT_swap_control(); } if (__GLeeCheckExtension("WGL_NV_vertex_array_range", &extensionNames) ) { _GLEE_WGL_NV_vertex_array_range = GL_TRUE; __GLeeLink_WGL_NV_vertex_array_range(); } if (__GLeeCheckExtension("WGL_OML_sync_control", &extensionNames) ) { _GLEE_WGL_OML_sync_control = GL_TRUE; __GLeeLink_WGL_OML_sync_control(); } if (__GLeeCheckExtension("WGL_I3D_swap_frame_usage", &extensionNames) ) { _GLEE_WGL_I3D_swap_frame_usage = GL_TRUE; __GLeeLink_WGL_I3D_swap_frame_usage(); } if (__GLeeCheckExtension("WGL_NV_video_output", &extensionNames) ) { _GLEE_WGL_NV_video_output = GL_TRUE; __GLeeLink_WGL_NV_video_output(); } #elif defined(__APPLE__) || defined(__APPLE_CC__) #else /* GLX */ if (__GLeeCheckExtension("GLX_VERSION_1_3", &extensionNames) ) { _GLEE_GLX_VERSION_1_3 = GL_TRUE; __GLeeLink_GLX_VERSION_1_3(); } if (__GLeeCheckExtension("GLX_VERSION_1_4", &extensionNames) ) { _GLEE_GLX_VERSION_1_4 = GL_TRUE; __GLeeLink_GLX_VERSION_1_4(); } if (__GLeeCheckExtension("GLX_ARB_multisample", &extensionNames) ) { _GLEE_GLX_ARB_multisample = GL_TRUE; __GLeeLink_GLX_ARB_multisample(); } if (__GLeeCheckExtension("GLX_ARB_vertex_buffer_object", &extensionNames) ) { _GLEE_GLX_ARB_vertex_buffer_object = GL_TRUE; __GLeeLink_GLX_ARB_vertex_buffer_object(); } if (__GLeeCheckExtension("GLX_ARB_fbconfig_float", &extensionNames) ) { _GLEE_GLX_ARB_fbconfig_float = GL_TRUE; __GLeeLink_GLX_ARB_fbconfig_float(); } if (__GLeeCheckExtension("GLX_ARB_framebuffer_sRGB", &extensionNames) ) { _GLEE_GLX_ARB_framebuffer_sRGB = GL_TRUE; __GLeeLink_GLX_ARB_framebuffer_sRGB(); } if (__GLeeCheckExtension("GLX_ARB_create_context", &extensionNames) ) { _GLEE_GLX_ARB_create_context = GL_TRUE; __GLeeLink_GLX_ARB_create_context(); } if (__GLeeCheckExtension("GLX_ARB_create_context_profile", &extensionNames) ) { _GLEE_GLX_ARB_create_context_profile = GL_TRUE; __GLeeLink_GLX_ARB_create_context_profile(); } if (__GLeeCheckExtension("GLX_ARB_create_context_robustness", &extensionNames) ) { _GLEE_GLX_ARB_create_context_robustness = GL_TRUE; __GLeeLink_GLX_ARB_create_context_robustness(); } if (__GLeeCheckExtension("GLX_SGIS_multisample", &extensionNames) ) { _GLEE_GLX_SGIS_multisample = GL_TRUE; __GLeeLink_GLX_SGIS_multisample(); } if (__GLeeCheckExtension("GLX_EXT_visual_info", &extensionNames) ) { _GLEE_GLX_EXT_visual_info = GL_TRUE; __GLeeLink_GLX_EXT_visual_info(); } if (__GLeeCheckExtension("GLX_SGI_swap_control", &extensionNames) ) { _GLEE_GLX_SGI_swap_control = GL_TRUE; __GLeeLink_GLX_SGI_swap_control(); } if (__GLeeCheckExtension("GLX_SGI_video_sync", &extensionNames) ) { _GLEE_GLX_SGI_video_sync = GL_TRUE; __GLeeLink_GLX_SGI_video_sync(); } if (__GLeeCheckExtension("GLX_SGI_make_current_read", &extensionNames) ) { _GLEE_GLX_SGI_make_current_read = GL_TRUE; __GLeeLink_GLX_SGI_make_current_read(); } if (__GLeeCheckExtension("GLX_EXT_visual_rating", &extensionNames) ) { _GLEE_GLX_EXT_visual_rating = GL_TRUE; __GLeeLink_GLX_EXT_visual_rating(); } if (__GLeeCheckExtension("GLX_EXT_import_context", &extensionNames) ) { _GLEE_GLX_EXT_import_context = GL_TRUE; __GLeeLink_GLX_EXT_import_context(); } if (__GLeeCheckExtension("GLX_SGIX_fbconfig", &extensionNames) ) { _GLEE_GLX_SGIX_fbconfig = GL_TRUE; __GLeeLink_GLX_SGIX_fbconfig(); } if (__GLeeCheckExtension("GLX_SGIX_pbuffer", &extensionNames) ) { _GLEE_GLX_SGIX_pbuffer = GL_TRUE; __GLeeLink_GLX_SGIX_pbuffer(); } if (__GLeeCheckExtension("GLX_SGI_cushion", &extensionNames) ) { _GLEE_GLX_SGI_cushion = GL_TRUE; __GLeeLink_GLX_SGI_cushion(); } if (__GLeeCheckExtension("GLX_SGIX_video_resize", &extensionNames) ) { _GLEE_GLX_SGIX_video_resize = GL_TRUE; __GLeeLink_GLX_SGIX_video_resize(); } if (__GLeeCheckExtension("GLX_SGIX_swap_group", &extensionNames) ) { _GLEE_GLX_SGIX_swap_group = GL_TRUE; __GLeeLink_GLX_SGIX_swap_group(); } if (__GLeeCheckExtension("GLX_SGIX_swap_barrier", &extensionNames) ) { _GLEE_GLX_SGIX_swap_barrier = GL_TRUE; __GLeeLink_GLX_SGIX_swap_barrier(); } if (__GLeeCheckExtension("GLX_SGIS_blended_overlay", &extensionNames) ) { _GLEE_GLX_SGIS_blended_overlay = GL_TRUE; __GLeeLink_GLX_SGIS_blended_overlay(); } if (__GLeeCheckExtension("GLX_SGIS_shared_multisample", &extensionNames) ) { _GLEE_GLX_SGIS_shared_multisample = GL_TRUE; __GLeeLink_GLX_SGIS_shared_multisample(); } if (__GLeeCheckExtension("GLX_SUN_get_transparent_index", &extensionNames) ) { _GLEE_GLX_SUN_get_transparent_index = GL_TRUE; __GLeeLink_GLX_SUN_get_transparent_index(); } if (__GLeeCheckExtension("GLX_3DFX_multisample", &extensionNames) ) { _GLEE_GLX_3DFX_multisample = GL_TRUE; __GLeeLink_GLX_3DFX_multisample(); } if (__GLeeCheckExtension("GLX_MESA_copy_sub_buffer", &extensionNames) ) { _GLEE_GLX_MESA_copy_sub_buffer = GL_TRUE; __GLeeLink_GLX_MESA_copy_sub_buffer(); } if (__GLeeCheckExtension("GLX_MESA_pixmap_colormap", &extensionNames) ) { _GLEE_GLX_MESA_pixmap_colormap = GL_TRUE; __GLeeLink_GLX_MESA_pixmap_colormap(); } if (__GLeeCheckExtension("GLX_MESA_release_buffers", &extensionNames) ) { _GLEE_GLX_MESA_release_buffers = GL_TRUE; __GLeeLink_GLX_MESA_release_buffers(); } if (__GLeeCheckExtension("GLX_MESA_set_3dfx_mode", &extensionNames) ) { _GLEE_GLX_MESA_set_3dfx_mode = GL_TRUE; __GLeeLink_GLX_MESA_set_3dfx_mode(); } if (__GLeeCheckExtension("GLX_SGIX_visual_select_group", &extensionNames) ) { _GLEE_GLX_SGIX_visual_select_group = GL_TRUE; __GLeeLink_GLX_SGIX_visual_select_group(); } if (__GLeeCheckExtension("GLX_OML_swap_method", &extensionNames) ) { _GLEE_GLX_OML_swap_method = GL_TRUE; __GLeeLink_GLX_OML_swap_method(); } if (__GLeeCheckExtension("GLX_OML_sync_control", &extensionNames) ) { _GLEE_GLX_OML_sync_control = GL_TRUE; __GLeeLink_GLX_OML_sync_control(); } if (__GLeeCheckExtension("GLX_NV_float_buffer", &extensionNames) ) { _GLEE_GLX_NV_float_buffer = GL_TRUE; __GLeeLink_GLX_NV_float_buffer(); } if (__GLeeCheckExtension("GLX_SGIX_hyperpipe", &extensionNames) ) { _GLEE_GLX_SGIX_hyperpipe = GL_TRUE; __GLeeLink_GLX_SGIX_hyperpipe(); } if (__GLeeCheckExtension("GLX_MESA_agp_offset", &extensionNames) ) { _GLEE_GLX_MESA_agp_offset = GL_TRUE; __GLeeLink_GLX_MESA_agp_offset(); } if (__GLeeCheckExtension("GLX_EXT_fbconfig_packed_float", &extensionNames) ) { _GLEE_GLX_EXT_fbconfig_packed_float = GL_TRUE; __GLeeLink_GLX_EXT_fbconfig_packed_float(); } if (__GLeeCheckExtension("GLX_EXT_framebuffer_sRGB", &extensionNames) ) { _GLEE_GLX_EXT_framebuffer_sRGB = GL_TRUE; __GLeeLink_GLX_EXT_framebuffer_sRGB(); } if (__GLeeCheckExtension("GLX_EXT_texture_from_pixmap", &extensionNames) ) { _GLEE_GLX_EXT_texture_from_pixmap = GL_TRUE; __GLeeLink_GLX_EXT_texture_from_pixmap(); } if (__GLeeCheckExtension("GLX_NV_present_video", &extensionNames) ) { _GLEE_GLX_NV_present_video = GL_TRUE; __GLeeLink_GLX_NV_present_video(); } if (__GLeeCheckExtension("GLX_NV_video_out", &extensionNames) ) { _GLEE_GLX_NV_video_out = GL_TRUE; __GLeeLink_GLX_NV_video_out(); } if (__GLeeCheckExtension("GLX_NV_swap_group", &extensionNames) ) { _GLEE_GLX_NV_swap_group = GL_TRUE; __GLeeLink_GLX_NV_swap_group(); } if (__GLeeCheckExtension("GLX_NV_video_capture", &extensionNames) ) { _GLEE_GLX_NV_video_capture = GL_TRUE; __GLeeLink_GLX_NV_video_capture(); } if (__GLeeCheckExtension("GLX_EXT_swap_control", &extensionNames) ) { _GLEE_GLX_EXT_swap_control = GL_TRUE; __GLeeLink_GLX_EXT_swap_control(); } if (__GLeeCheckExtension("GLX_NV_copy_image", &extensionNames) ) { _GLEE_GLX_NV_copy_image = GL_TRUE; __GLeeLink_GLX_NV_copy_image(); } if (__GLeeCheckExtension("GLX_INTEL_swap_event", &extensionNames) ) { _GLEE_GLX_INTEL_swap_event = GL_TRUE; __GLeeLink_GLX_INTEL_swap_event(); } if (__GLeeCheckExtension("GLX_NV_multisample_coverage", &extensionNames) ) { _GLEE_GLX_NV_multisample_coverage = GL_TRUE; __GLeeLink_GLX_NV_multisample_coverage(); } if (__GLeeCheckExtension("GLX_AMD_gpu_association", &extensionNames) ) { _GLEE_GLX_AMD_gpu_association = GL_TRUE; __GLeeLink_GLX_AMD_gpu_association(); } if (__GLeeCheckExtension("GLX_EXT_create_context_es2_profile", &extensionNames) ) { _GLEE_GLX_EXT_create_context_es2_profile = GL_TRUE; __GLeeLink_GLX_EXT_create_context_es2_profile(); } if (__GLeeCheckExtension("GLX_EXT_create_context_es_profile", &extensionNames) ) { _GLEE_GLX_EXT_create_context_es_profile = GL_TRUE; __GLeeLink_GLX_EXT_create_context_es_profile(); } if (__GLeeCheckExtension("GLX_EXT_swap_control_tear", &extensionNames) ) { _GLEE_GLX_EXT_swap_control_tear = GL_TRUE; __GLeeLink_GLX_EXT_swap_control_tear(); } if (__GLeeCheckExtension("GLX_EXT_buffer_age", &extensionNames) ) { _GLEE_GLX_EXT_buffer_age = GL_TRUE; __GLeeLink_GLX_EXT_buffer_age(); } if (__GLeeCheckExtension("GLX_NV_video_output", &extensionNames) ) { _GLEE_GLX_NV_video_output = GL_TRUE; __GLeeLink_GLX_NV_video_output(); } #endif /* end GLX */ __GLeeExtList_clean(&extensionNames); return GL_TRUE; } love-0.9.1/src/modules/graphics/opengl/wrap_SpriteBatch.cpp0000644000000000000000000001512412316602166023762 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_SpriteBatch.h" #include "Image.h" #include "Canvas.h" #include "wrap_Texture.h" // C++ #include namespace love { namespace graphics { namespace opengl { SpriteBatch *luax_checkspritebatch(lua_State *L, int idx) { return luax_checktype(L, idx, "SpriteBatch", GRAPHICS_SPRITE_BATCH_T); } int w_SpriteBatch_add(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); Quad *quad = nullptr; int startidx = 2; if (luax_istype(L, 2, GRAPHICS_QUAD_T)) { quad = luax_totype(L, 2, "Quad", GRAPHICS_QUAD_T); startidx = 3; } else if (lua_isnil(L, 2) && !lua_isnoneornil(L, 3)) return luax_typerror(L, 2, "Quad"); float x = (float) luaL_optnumber(L, startidx + 0, 0.0); float y = (float) luaL_optnumber(L, startidx + 1, 0.0); float a = (float) luaL_optnumber(L, startidx + 2, 0.0); float sx = (float) luaL_optnumber(L, startidx + 3, 1.0); float sy = (float) luaL_optnumber(L, startidx + 4, sx); float ox = (float) luaL_optnumber(L, startidx + 5, 0.0); float oy = (float) luaL_optnumber(L, startidx + 6, 0.0); float kx = (float) luaL_optnumber(L, startidx + 7, 0.0); float ky = (float) luaL_optnumber(L, startidx + 8, 0.0); int id = 0; EXCEPT_GUARD( if (quad) id = t->addq(quad, x, y, a, sx, sy, ox, oy, kx, ky); else id = t->add(x, y, a, sx, sy, ox, oy, kx, ky); ) lua_pushinteger(L, id); return 1; } int w_SpriteBatch_set(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); int id = luaL_checkinteger(L, 2); Quad *quad = nullptr; int startidx = 3; if (luax_istype(L, 3, GRAPHICS_QUAD_T)) { quad = luax_totype(L, 3, "Quad", GRAPHICS_QUAD_T); startidx = 4; } else if (lua_isnil(L, 3) && !lua_isnoneornil(L, 4)) return luax_typerror(L, 3, "Quad"); float x = (float) luaL_optnumber(L, startidx + 0, 0.0); float y = (float) luaL_optnumber(L, startidx + 1, 0.0); float a = (float) luaL_optnumber(L, startidx + 2, 0.0); float sx = (float) luaL_optnumber(L, startidx + 3, 1.0); float sy = (float) luaL_optnumber(L, startidx + 4, sx); float ox = (float) luaL_optnumber(L, startidx + 5, 0.0); float oy = (float) luaL_optnumber(L, startidx + 6, 0.0); float kx = (float) luaL_optnumber(L, startidx + 7, 0.0); float ky = (float) luaL_optnumber(L, startidx + 8, 0.0); EXCEPT_GUARD( if (quad) t->addq(quad, x, y, a, sx, sy, ox, oy, kx, ky, id); else t->add(x, y, a, sx, sy, ox, oy, kx, ky, id); ) return 0; } int w_SpriteBatch_clear(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); t->clear(); return 0; } int w_SpriteBatch_bind(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); EXCEPT_GUARD(t->lock();) return 0; } int w_SpriteBatch_unbind(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); t->unlock(); return 0; } int w_SpriteBatch_setTexture(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); Texture *tex = luax_checktexture(L, 2); t->setTexture(tex); return 0; } int w_SpriteBatch_getTexture(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); Texture *tex = t->getTexture(); tex->retain(); // FIXME: big hack right here. if (typeid(*tex) == typeid(Image)) luax_pushtype(L, "Image", GRAPHICS_IMAGE_T, tex); else if (typeid(*tex) == typeid(Canvas)) luax_pushtype(L, "Canvas", GRAPHICS_CANVAS_T, tex); else { tex->release(); return luaL_error(L, "Unable to determine texture type."); } return 1; } int w_SpriteBatch_setColor(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); Color c; if (lua_gettop(L) <= 1) { t->setColor(); return 0; } else if (lua_istable(L, 2)) { for (int i = 1; i <= 4; i++) lua_rawgeti(L, 2, i); c.r = (unsigned char) luaL_checkinteger(L, -4); c.g = (unsigned char) luaL_checkinteger(L, -3); c.b = (unsigned char) luaL_checkinteger(L, -2); c.a = (unsigned char) luaL_optinteger(L, -1, 255); lua_pop(L, 4); } else { c.r = (unsigned char)luaL_checkinteger(L, 2); c.g = (unsigned char)luaL_checkinteger(L, 3); c.b = (unsigned char)luaL_checkinteger(L, 4); c.a = (unsigned char)luaL_optinteger(L, 5, 255); } t->setColor(c); return 0; } int w_SpriteBatch_getColor(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); const Color *color = t->getColor(); // getColor returns NULL if no color is set. if (!color) return 0; lua_pushinteger(L, (lua_Integer) color->r); lua_pushinteger(L, (lua_Integer) color->g); lua_pushinteger(L, (lua_Integer) color->b); lua_pushinteger(L, (lua_Integer) color->a); return 4; } int w_SpriteBatch_getCount(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); lua_pushinteger(L, t->getCount()); return 1; } int w_SpriteBatch_setBufferSize(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); int size = luaL_checkint(L, 2); EXCEPT_GUARD(t->setBufferSize(size);) return 0; } int w_SpriteBatch_getBufferSize(lua_State *L) { SpriteBatch *t = luax_checkspritebatch(L, 1); lua_pushinteger(L, t->getBufferSize()); return 1; } static const luaL_Reg functions[] = { { "add", w_SpriteBatch_add }, { "set", w_SpriteBatch_set }, { "clear", w_SpriteBatch_clear }, { "bind", w_SpriteBatch_bind }, { "unbind", w_SpriteBatch_unbind }, { "setTexture", w_SpriteBatch_setTexture }, { "getTexture", w_SpriteBatch_getTexture }, { "setColor", w_SpriteBatch_setColor }, { "getColor", w_SpriteBatch_getColor }, { "getCount", w_SpriteBatch_getCount }, { "setBufferSize", w_SpriteBatch_setBufferSize }, { "getBufferSize", w_SpriteBatch_getBufferSize }, // Deprecated since 0.9.1. { "setImage", w_SpriteBatch_setTexture }, { "getImage", w_SpriteBatch_getTexture }, { 0, 0 } }; extern "C" int luaopen_spritebatch(lua_State *L) { return luax_register_type(L, "SpriteBatch", functions); } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/wrap_SpriteBatch.h0000644000000000000000000000356512316602166023435 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_WRAP_SPRITE_BATCH_H #define LOVE_GRAPHICS_OPENGL_WRAP_SPRITE_BATCH_H #include "common/runtime.h" #include "SpriteBatch.h" namespace love { namespace graphics { namespace opengl { SpriteBatch *luax_checkspritebatch(lua_State *L, int idx); int w_SpriteBatch_add(lua_State *L); int w_SpriteBatch_addg(lua_State *L); int w_SpriteBatch_set(lua_State *L); int w_SpriteBatch_setg(lua_State *L); int w_SpriteBatch_clear(lua_State *L); int w_SpriteBatch_bind(lua_State *L); int w_SpriteBatch_unbind(lua_State *L); int w_SpriteBatch_setTexture(lua_State *L); int w_SpriteBatch_getTexture(lua_State *L); int w_SpriteBatch_setColor(lua_State *L); int w_SpriteBatch_getColor(lua_State *L); int w_SpriteBatch_getCount(lua_State *L); int w_SpriteBatch_setBufferSize(lua_State *L); int w_SpriteBatch_getBufferSize(lua_State *L); extern "C" int luaopen_spritebatch(lua_State *L); } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_WRAP_SPRITE_BATCH_H love-0.9.1/src/modules/graphics/opengl/OpenGL.cpp0000644000000000000000000004252612316602166021653 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "common/config.h" #include "OpenGL.h" #include "Shader.h" #include "Canvas.h" #include "common/Exception.h" // C++ #include // C #include namespace love { namespace graphics { namespace opengl { OpenGL::OpenGL() : contextInitialized(false) , maxAnisotropy(1.0f) , maxTextureSize(0) , maxRenderTargets(0) , vendor(VENDOR_UNKNOWN) , state() { } void OpenGL::initContext() { if (contextInitialized) return; initOpenGLFunctions(); initVendor(); // Store the current color so we don't have to get it through GL later. GLfloat glcolor[4]; glGetFloatv(GL_CURRENT_COLOR, glcolor); state.color.r = glcolor[0] * 255; state.color.g = glcolor[1] * 255; state.color.b = glcolor[2] * 255; state.color.a = glcolor[3] * 255; // Same with the current clear color. glGetFloatv(GL_COLOR_CLEAR_VALUE, glcolor); state.clearColor.r = glcolor[0] * 255; state.clearColor.g = glcolor[1] * 255; state.clearColor.b = glcolor[2] * 255; state.clearColor.a = glcolor[3] * 255; // Get the current viewport. glGetIntegerv(GL_VIEWPORT, (GLint *) &state.viewport.x); // And the current scissor - but we need to compensate for GL scissors // starting at the bottom left instead of top left. glGetIntegerv(GL_SCISSOR_BOX, (GLint *) &state.scissor.x); state.scissor.y = state.viewport.h - (state.scissor.y + state.scissor.h); // Initialize multiple texture unit support for shaders, if available. state.textureUnits.clear(); if (Shader::isSupported()) { GLint maxtextureunits; glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &maxtextureunits); state.textureUnits.resize(maxtextureunits, 0); GLenum curgltextureunit; glGetIntegerv(GL_ACTIVE_TEXTURE, (GLint *) &curgltextureunit); state.curTextureUnit = (int) curgltextureunit - GL_TEXTURE0; // Retrieve currently bound textures for each texture unit. for (size_t i = 0; i < state.textureUnits.size(); i++) { glActiveTexture(GL_TEXTURE0 + i); glGetIntegerv(GL_TEXTURE_BINDING_2D, (GLint *) &state.textureUnits[i]); } glActiveTexture(curgltextureunit); } else { // Multitexturing not supported, so we only have 1 texture unit. state.textureUnits.resize(1, 0); state.curTextureUnit = 0; glGetIntegerv(GL_TEXTURE_BINDING_2D, (GLint *) &state.textureUnits[0]); } BlendState blend = {GL_ONE, GL_ONE, GL_ZERO, GL_ZERO, GL_FUNC_ADD}; setBlendState(blend); initMaxValues(); createDefaultTexture(); state.lastPseudoInstanceID = -1; contextInitialized = true; } void OpenGL::deInitContext() { if (!contextInitialized) return; contextInitialized = false; } void OpenGL::initVendor() { const char *vstr = (const char *) glGetString(GL_VENDOR); if (!vstr) { vendor = VENDOR_UNKNOWN; return; } // http://feedback.wildfiregames.com/report/opengl/feature/GL_VENDOR if (strstr(vstr, "ATI Technologies")) vendor = VENDOR_ATI_AMD; else if (strstr(vstr, "NVIDIA")) vendor = VENDOR_NVIDIA; else if (strstr(vstr, "Intel")) vendor = VENDOR_INTEL; else if (strstr(vstr, "Mesa")) vendor = VENDOR_MESA_SOFT; else if (strstr(vstr, "Apple Computer")) vendor = VENDOR_APPLE; else if (strstr(vstr, "Microsoft")) vendor = VENDOR_MICROSOFT; else vendor = VENDOR_UNKNOWN; } void OpenGL::initOpenGLFunctions() { // The functionality of the core and ARB VBOs are identical, so we can // assign the pointers of the core functions to the names of the ARB // functions, if the latter isn't supported but the former is. if (GLEE_VERSION_1_5 && !GLEE_ARB_vertex_buffer_object) { glBindBufferARB = (GLEEPFNGLBINDBUFFERARBPROC) glBindBuffer; glBufferDataARB = (GLEEPFNGLBUFFERDATAARBPROC) glBufferData; glBufferSubDataARB = (GLEEPFNGLBUFFERSUBDATAARBPROC) glBufferSubData; glDeleteBuffersARB = (GLEEPFNGLDELETEBUFFERSARBPROC) glDeleteBuffers; glGenBuffersARB = (GLEEPFNGLGENBUFFERSARBPROC) glGenBuffers; glGetBufferParameterivARB = (GLEEPFNGLGETBUFFERPARAMETERIVARBPROC) glGetBufferParameteriv; glGetBufferPointervARB = (GLEEPFNGLGETBUFFERPOINTERVARBPROC) glGetBufferPointerv; glGetBufferSubDataARB = (GLEEPFNGLGETBUFFERSUBDATAARBPROC) glGetBufferSubData; glIsBufferARB = (GLEEPFNGLISBUFFERARBPROC) glIsBuffer; glMapBufferARB = (GLEEPFNGLMAPBUFFERARBPROC) glMapBuffer; glUnmapBufferARB = (GLEEPFNGLUNMAPBUFFERARBPROC) glUnmapBuffer; } // Same deal for compressed textures. if (GLEE_VERSION_1_3 && !GLEE_ARB_texture_compression) { glCompressedTexImage2DARB = (GLEEPFNGLCOMPRESSEDTEXIMAGE2DARBPROC) glCompressedTexImage2D; glCompressedTexSubImage2DARB = (GLEEPFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) glCompressedTexSubImage2D; glGetCompressedTexImageARB = (GLEEPFNGLGETCOMPRESSEDTEXIMAGEARBPROC) glGetCompressedTexImage; } } void OpenGL::initMaxValues() { // We'll need this value to clamp anisotropy. if (GLEE_EXT_texture_filter_anisotropic) glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maxAnisotropy); else maxAnisotropy = 1.0f; glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); if (Canvas::isSupported() && (GLEE_VERSION_2_0 || GLEE_ARB_draw_buffers)) { int maxattachments = 0; glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &maxattachments); int maxdrawbuffers = 0; glGetIntegerv(GL_MAX_DRAW_BUFFERS, &maxdrawbuffers); maxRenderTargets = std::min(maxattachments, maxdrawbuffers); } else maxRenderTargets = 0; } void OpenGL::createDefaultTexture() { // Set the 'default' texture (id 0) as a repeating white pixel. Otherwise, // texture2D calls inside a shader would return black when drawing graphics // primitives, which would create the need to use different "passthrough" // shaders for untextured primitives vs images. GLuint curtexture = state.textureUnits[state.curTextureUnit]; bindTexture(0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); GLubyte pix = 255; glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE8, 1, 1, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, &pix); bindTexture(curtexture); } void OpenGL::prepareDraw() { Shader *shader = Shader::current; if (shader != nullptr) { // Make sure the active shader has the correct values for its // love-provided uniforms. shader->checkSetScreenParams(); // Make sure the Instance ID variable is up-to-date when // pseudo-instancing is used. if (state.lastPseudoInstanceID != 0 && shader->hasVertexAttrib(ATTRIB_PSEUDO_INSTANCE_ID)) { glVertexAttrib1f((GLuint) ATTRIB_PSEUDO_INSTANCE_ID, 0.0f); state.lastPseudoInstanceID = 0; } // We need to make sure antialiased Canvases are properly resolved // before sampling from their textures in a shader. // This is kind of a big hack. :( const std::map &r = shader->getBoundRetainables(); for (auto it = r.begin(); it != r.end(); ++it) { // Even bigger hack! D: Canvas *canvas = dynamic_cast(it->second); if (canvas != nullptr) canvas->resolveMSAA(); } } } void OpenGL::drawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei primcount) { Shader *shader = Shader::current; if (GLEE_ARB_draw_instanced) glDrawArraysInstancedARB(mode, first, count, primcount); else { bool shaderHasID = shader && shader->hasVertexAttrib(ATTRIB_PSEUDO_INSTANCE_ID); // Pseudo-instancing fallback. for (int i = 0; i < primcount; i++) { if (shaderHasID) glVertexAttrib1f((GLuint) ATTRIB_PSEUDO_INSTANCE_ID, (GLfloat) i); glDrawArrays(mode, first, count); } if (shaderHasID) state.lastPseudoInstanceID = primcount - 1; } } void OpenGL::drawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount) { Shader *shader = Shader::current; if (GLEE_ARB_draw_instanced) glDrawElementsInstancedARB(mode, count, type, indices, primcount); else { bool shaderHasID = shader && shader->hasVertexAttrib(ATTRIB_PSEUDO_INSTANCE_ID); // Pseudo-instancing fallback. for (int i = 0; i < primcount; i++) { if (shaderHasID) glVertexAttrib1f((GLuint) ATTRIB_PSEUDO_INSTANCE_ID, (GLfloat) i); glDrawElements(mode, count, type, indices); } if (shaderHasID) state.lastPseudoInstanceID = primcount - 1; } } void OpenGL::setColor(const Color &c) { glColor4ubv(&c.r); state.color = c; } Color OpenGL::getColor() const { return state.color; } void OpenGL::setClearColor(const Color &c) { glClearColor(c.r / 255.0f, c.g / 255.0f, c.b / 255.0f, c.a / 255.0f); state.clearColor = c; } Color OpenGL::getClearColor() const { return state.clearColor; } void OpenGL::setViewport(const OpenGL::Viewport &v) { glViewport(v.x, v.y, v.w, v.h); state.viewport = v; // glScissor starts from the lower left, so we compensate when setting the // scissor. When the viewport is changed, we need to manually update the // scissor again. setScissor(state.scissor); } OpenGL::Viewport OpenGL::getViewport() const { return state.viewport; } void OpenGL::setScissor(const OpenGL::Viewport &v) { if (Canvas::current) glScissor(v.x, v.y, v.w, v.h); else { // With no Canvas active, we need to compensate for glScissor starting // from the lower left of the viewport instead of the top left. glScissor(v.x, state.viewport.h - (v.y + v.h), v.w, v.h); } state.scissor = v; } OpenGL::Viewport OpenGL::getScissor() const { return state.scissor; } void OpenGL::setBlendState(const BlendState &blend) { if (GLEE_VERSION_1_4 || GLEE_ARB_imaging) glBlendEquation(blend.func); else if (GLEE_EXT_blend_minmax && GLEE_EXT_blend_subtract) glBlendEquationEXT(blend.func); else { if (blend.func == GL_FUNC_REVERSE_SUBTRACT) throw love::Exception("This graphics card does not support the subtractive blend mode!"); // GL_FUNC_ADD is the default even without access to glBlendEquation, so that'll still work. } if (blend.srcRGB == blend.srcA && blend.dstRGB == blend.dstA) glBlendFunc(blend.srcRGB, blend.dstRGB); else { if (GLEE_VERSION_1_4) glBlendFuncSeparate(blend.srcRGB, blend.dstRGB, blend.srcA, blend.dstA); else if (GLEE_EXT_blend_func_separate) glBlendFuncSeparateEXT(blend.srcRGB, blend.dstRGB, blend.srcA, blend.dstA); else throw love::Exception("This graphics card does not support separated rgb and alpha blend functions!"); } state.blend = blend; } OpenGL::BlendState OpenGL::getBlendState() const { return state.blend; } void OpenGL::setTextureUnit(int textureunit) { if (textureunit < 0 || (size_t) textureunit >= state.textureUnits.size()) throw love::Exception("Invalid texture unit index (%d).", textureunit); if (textureunit != state.curTextureUnit) { if (state.textureUnits.size() > 1) glActiveTexture(GL_TEXTURE0 + textureunit); else throw love::Exception("Multitexturing is not supported."); } state.curTextureUnit = textureunit; } void OpenGL::bindTexture(GLuint texture) { if (texture != state.textureUnits[state.curTextureUnit]) { state.textureUnits[state.curTextureUnit] = texture; glBindTexture(GL_TEXTURE_2D, texture); } } void OpenGL::bindTextureToUnit(GLuint texture, int textureunit, bool restoreprev) { if (textureunit < 0 || (size_t) textureunit >= state.textureUnits.size()) throw love::Exception("Invalid texture unit index."); if (texture != state.textureUnits[textureunit]) { int oldtextureunit = state.curTextureUnit; setTextureUnit(textureunit); state.textureUnits[textureunit] = texture; glBindTexture(GL_TEXTURE_2D, texture); if (restoreprev) setTextureUnit(oldtextureunit); } } void OpenGL::deleteTexture(GLuint texture) { // glDeleteTextures binds texture 0 to all texture units the deleted texture // was bound to before deletion. std::vector::iterator it; for (it = state.textureUnits.begin(); it != state.textureUnits.end(); ++it) { if (*it == texture) *it = 0; } glDeleteTextures(1, &texture); } float OpenGL::setTextureFilter(graphics::Texture::Filter &f) { GLint gmin, gmag; if (f.mipmap == Texture::FILTER_NONE) { if (f.min == Texture::FILTER_NEAREST) gmin = GL_NEAREST; else // f.min == Texture::FILTER_LINEAR gmin = GL_LINEAR; } else { if (f.min == Texture::FILTER_NEAREST && f.mipmap == Texture::FILTER_NEAREST) gmin = GL_NEAREST_MIPMAP_NEAREST; else if (f.min == Texture::FILTER_NEAREST && f.mipmap == Texture::FILTER_LINEAR) gmin = GL_NEAREST_MIPMAP_LINEAR; else if (f.min == Texture::FILTER_LINEAR && f.mipmap == Texture::FILTER_NEAREST) gmin = GL_LINEAR_MIPMAP_NEAREST; else if (f.min == Texture::FILTER_LINEAR && f.mipmap == Texture::FILTER_LINEAR) gmin = GL_LINEAR_MIPMAP_LINEAR; else gmin = GL_LINEAR; } switch (f.mag) { case Texture::FILTER_NEAREST: gmag = GL_NEAREST; break; case Texture::FILTER_LINEAR: default: gmag = GL_LINEAR; break; } glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gmin); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gmag); if (GLEE_EXT_texture_filter_anisotropic) { f.anisotropy = std::min(std::max(f.anisotropy, 1.0f), maxAnisotropy); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, f.anisotropy); } return f.anisotropy; } graphics::Texture::Filter OpenGL::getTextureFilter() { GLint gmin, gmag; glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, &gmin); glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, &gmag); Texture::Filter f; switch (gmin) { case GL_NEAREST: f.min = Texture::FILTER_NEAREST; f.mipmap = Texture::FILTER_NONE; break; case GL_NEAREST_MIPMAP_NEAREST: f.min = f.mipmap = Texture::FILTER_NEAREST; break; case GL_NEAREST_MIPMAP_LINEAR: f.min = Texture::FILTER_NEAREST; f.mipmap = Texture::FILTER_LINEAR; break; case GL_LINEAR_MIPMAP_NEAREST: f.min = Texture::FILTER_LINEAR; f.mipmap = Texture::FILTER_NEAREST; break; case GL_LINEAR_MIPMAP_LINEAR: f.min = f.mipmap = Texture::FILTER_LINEAR; break; case GL_LINEAR: default: f.min = Texture::FILTER_LINEAR; f.mipmap = Texture::FILTER_NONE; break; } switch (gmag) { case GL_NEAREST: f.mag = Texture::FILTER_NEAREST; break; case GL_LINEAR: default: f.mag = Texture::FILTER_LINEAR; break; } if (GLEE_EXT_texture_filter_anisotropic) glGetTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, &f.anisotropy); return f; } void OpenGL::setTextureWrap(const graphics::Texture::Wrap &w) { GLint gs, gt; switch (w.s) { case Texture::WRAP_CLAMP: gs = GL_CLAMP_TO_EDGE; break; case Texture::WRAP_REPEAT: default: gs = GL_REPEAT; break; } switch (w.t) { case Texture::WRAP_CLAMP: gt = GL_CLAMP_TO_EDGE; break; case Texture::WRAP_REPEAT: default: gt = GL_REPEAT; break; } glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gs); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gt); } graphics::Texture::Wrap OpenGL::getTextureWrap() { GLint gs, gt; glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, &gs); glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, >); Texture::Wrap w; switch (gs) { case GL_CLAMP_TO_EDGE: w.s = Texture::WRAP_CLAMP; break; case GL_REPEAT: default: w.s = Texture::WRAP_REPEAT; break; } switch (gt) { case GL_CLAMP_TO_EDGE: w.t = Texture::WRAP_CLAMP; break; case GL_REPEAT: default: w.t = Texture::WRAP_REPEAT; break; } return w; } int OpenGL::getMaxTextureSize() const { return maxTextureSize; } int OpenGL::getMaxRenderTargets() const { return maxRenderTargets; } OpenGL::Vendor OpenGL::getVendor() const { return vendor; } const char *OpenGL::debugSeverityString(GLenum severity) { switch (severity) { case GL_DEBUG_SEVERITY_HIGH: return "high"; case GL_DEBUG_SEVERITY_MEDIUM: return "medium"; case GL_DEBUG_SEVERITY_LOW: return "low"; default: break; } return "unknown"; } const char *OpenGL::debugSourceString(GLenum source) { switch (source) { case GL_DEBUG_SOURCE_API: return "API"; case GL_DEBUG_SOURCE_WINDOW_SYSTEM: return "window"; case GL_DEBUG_SOURCE_SHADER_COMPILER: return "shader"; case GL_DEBUG_SOURCE_THIRD_PARTY: return "external"; case GL_DEBUG_SOURCE_APPLICATION: return "LOVE"; case GL_DEBUG_SOURCE_OTHER: return "other"; default: break; } return "unknown"; } const char *OpenGL::debugTypeString(GLenum type) { switch (type) { case GL_DEBUG_TYPE_ERROR: return "error"; case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: return "deprecated behavior"; case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: return "undefined behavior"; case GL_DEBUG_TYPE_PERFORMANCE: return "performance"; case GL_DEBUG_TYPE_PORTABILITY: return "portability"; case GL_DEBUG_TYPE_OTHER: return "other"; default: break; } return "unknown"; } // OpenGL class instance singleton. OpenGL gl; } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/VertexBuffer.h0000644000000000000000000003072312316602166022577 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_VERTEX_BUFFER_H #define LOVE_GRAPHICS_OPENGL_VERTEX_BUFFER_H // LOVE #include "graphics/Volatile.h" // OpenGL #include "OpenGL.h" namespace love { namespace graphics { namespace opengl { /** * VertexBuffer is an abstraction over VBOs (Vertex Buffer Objects), which * falls back to regular vertex arrays if VBOs are not supported. * * This allows code to take advantage of VBOs where available, but still * work on older systems where it's *not* available. Everyone's happy. * * The class is (for now) meant for internal use. */ class VertexBuffer { public: // Different guarantees for VertexBuffer data storage. enum MemoryBacking { // The VertexBuffer is will have a valid copy of its data in main memory // at all times. BACKING_FULL, // The VertexBuffer will have a valid copy of its data in main memory // when it needs to be reloaded and when it's mapped. BACKING_PARTIAL }; /** * Create a new VertexBuffer (either a plain vertex array, or a VBO), * based on what's supported on the system. * * If VBOs are not supported, a plain vertex array will automatically * be created and returned instead. * * @param size The size of the VertexBuffer (in bytes). * @param target GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER. * @param usage GL_DYNAMIC_DRAW, etc. * @param backing Determines what guarantees are placed on the data. * @return A new VertexBuffer. */ static VertexBuffer *Create(size_t size, GLenum target, GLenum usage, MemoryBacking backing = BACKING_PARTIAL); /** * Constructor. * * @param size The size of the VertexBuffer in bytes. * @param target The target VertexBuffer object, e.g. GL_ARRAY_BUFFER. * @param usage Usage hint, e.g. GL_DYNAMIC_DRAW. * @param backing Determines what guarantees are placed on the data. */ VertexBuffer(size_t size, GLenum target, GLenum usage, MemoryBacking backing = BACKING_PARTIAL); /** * Destructor. Does nothing, but must be declared virtual. */ virtual ~VertexBuffer(); /** * Get the size of the VertexBuffer, in bytes. * * @return The size of the VertexBuffer. */ size_t getSize() const { return size; } /** * Get the target buffer object. * * @return The target buffer object, e.g. GL_ARRAY_BUFFER. */ GLenum getTarget() const { return target; } /** * Get the usage hint for this VertexBuffer. * * @return The usage hint, e.g. GL_DYNAMIC_DRAW. */ GLenum getUsage() const { return usage; } bool isBound() const { return is_bound; } bool isMapped() const { return is_mapped; } MemoryBacking getMemoryBacking() const { return backing; } /** * Map the VertexBuffer to client memory. * * This can be faster for large changes to the buffer. For smaller * changes, see fill(). * * The VertexBuffer must be bound to use this function. * * @return A pointer to memory which represents the buffer. */ virtual void *map() = 0; /** * Unmap a previously mapped VertexBuffer. The buffer must be unmapped * when used to draw elements. * * The VertexBuffer must be bound to use this function. */ virtual void unmap() = 0; /** * Bind the VertexBuffer to its specified target. * (GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, etc). */ virtual void bind() = 0; /** * Unbind a prevously bound VertexBuffer. */ virtual void unbind() = 0; /** * Fill a portion of the buffer with data. * * The VertexBuffer must be bound to use this function. * * @param offset The offset in the VertexBuffer to store the data. * @param size The size of the incoming data. * @param data Pointer to memory to copy data from. */ virtual void fill(size_t offset, size_t size, const void *data) = 0; /** * Get a pointer which represents the specified byte offset. * * @param offset The byte offset. (0 is first byte). * @return A pointer which represents the offset. */ virtual const void *getPointer(size_t offset) const = 0; /** * This helper class can bind a VertexArray temporarily, and * automatically un-bind when it's destroyed. */ class Bind { public: /** * Bind a VertexBuffer. */ Bind(VertexBuffer &buf) : buf(buf) { buf.bind(); } /** * Unbinds a VertexBuffer. */ ~Bind() { buf.unbind(); } private: // VertexBuffer to work on. VertexBuffer &buf; }; class Mapper { public: /** * Memory-maps a VertexBuffer. */ Mapper(VertexBuffer &buffer) : buf(buffer) { elems = buf.map(); } /** * unmaps the buffer */ ~Mapper() { buf.unmap(); } /** * Get pointer to memory mapped region */ void *get() { return elems; } private: VertexBuffer &buf; void *elems; }; protected: // Whether the buffer is currently bound. bool is_bound; // Whether the buffer is currently mapped to main memory. bool is_mapped; private: // The size of the buffer, in bytes. size_t size; // The target buffer object. (GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER). GLenum target; // Usage hint. GL_[DYNAMIC, STATIC, STREAM]_DRAW. GLenum usage; // MemoryBacking backing; }; /** * Implementation of VertexBuffer which uses plain arrays to store the data. * * This implementation should be supported everywhere, and acts as a fallback * on systems which do not support VBOs. */ class VertexArray : public VertexBuffer { public: /** * @copydoc VertexBuffer(int, GLenum, GLenum, Backing) */ VertexArray(size_t size, GLenum target, GLenum usage, MemoryBacking backing); /** * Frees the data we've allocated. */ virtual ~VertexArray(); // Implements VertexBuffer. virtual void *map(); virtual void unmap(); virtual void bind(); virtual void unbind(); virtual void fill(size_t offset, size_t size, const void *data); virtual const void *getPointer(size_t offset) const ; private: // Holds the data. char *buf; }; /** * Vertex Buffer Object (VBO) implementation of VertexBuffer. * * This will be used on all systems that support it. It's in general * faster than vertex arrays, but especially in use-cases where there * is no need to update the data every frame. **/ class VBO : public VertexBuffer, public Volatile { public: /** * @copydoc VertexBuffer(size_t, GLenum, GLenum, Backing) **/ VBO(size_t size, GLenum target, GLenum usage, MemoryBacking backing); /** * Deletes the VBOs from OpenGL. **/ virtual ~VBO(); // Implements VertexBuffer. virtual void *map(); virtual void unmap(); virtual void bind(); virtual void unbind(); virtual void fill(size_t offset, size_t size, const void *data); virtual const void *getPointer(size_t offset) const ; // Implements Volatile. bool loadVolatile(); void unloadVolatile(); private: /** * Creates the VBO, and optionally restores data we saved earlier. * * @param restore True to restore data previously saved with 'unload'. * @return True on success, false otherwise. */ bool load(bool restore); /** * Optionally save the data in the VBO, then delete it. * * @param save True to save the data before deleting. */ void unload(bool save); // The VBO identifier. Assigned by OpenGL. GLuint vbo; // A pointer to mapped memory. Will be inialized on the first // call to map(). void *memory_map; // Set if the buffer was modified while operating on gpu memory // and needs to be synchronized. bool is_dirty; }; /** * VertexIndex manages one shared VertexBuffer that stores the indices for an * element array. Vertex arrays using the vertex structure (or anything else * that can use the pattern below) can request a size and use it for the * drawElements call. * * indices[i*6 + 0] = i*4 + 0; * indices[i*6 + 1] = i*4 + 1; * indices[i*6 + 2] = i*4 + 2; * * indices[i*6 + 3] = i*4 + 0; * indices[i*6 + 4] = i*4 + 2; * indices[i*6 + 5] = i*4 + 3; * * There will always be a large enough VertexBuffer around until all * VertexIndex instances have been deleted. * * Q: Why have something like VertexIndex? * A: The indices for the SpriteBatch do not change, only the array size * varies. Using one VertexBuffer for all element arrays removes this * duplicated data and saves some memory. */ class VertexIndex { public: /** * Adds an entry to the list of sizes and resizes the VertexBuffer * if needed. A size of 1 allocates a group of 6 indices for 4 vertices * creating 1 face. * * @param size The requested size in groups of 6 indices. */ VertexIndex(size_t size); /** * Removes an entry from the list of sizes and resizes the VertexBuffer * if needed. */ ~VertexIndex(); /** * Returns the number of index groups. * This can be used for getIndexCount to get the full count of indices. * * @return The number of index groups. */ size_t getSize() const; /** * Returns the number of indices that the passed element count will have. * Use VertexIndex::getSize to get the full index count for that * VertexIndex instance. * * @param elements The number of elements to calculate the index count for. * @return The index count. */ size_t getIndexCount(size_t elements) const; /** * Returns the integer type of the element array. * If an optional nonzero size argument is passed, the function returns * the integer type of the element array of that size. * * @param s The size of the array to calculated the integer type of. * @return The element array integer type. */ GLenum getType(size_t s) const; inline GLenum getType() const { return getType(maxSize); } /** * Returns the size in bytes of an element in the element array. * Can be used with getPointer to calculate an offset into the array based * on a number of elements. * * @return The size of an element in bytes. **/ size_t getElementSize(); /** * Returns the pointer to the VertexBuffer. * The pointer will change if a new size request or removal causes * a VertexBuffer resize. It is recommended to retrieve the pointer * value directly before the drawing call. * * @return The pointer to the VertexBuffer. */ VertexBuffer *getVertexBuffer() const; /** * Returns a pointer which represents the specified byte offset. * * @param offset The offset in bytes. * @return A pointer which represents the offset. */ const void *getPointer(size_t offset) const; private: /** * Adds a new size to the size list, then sorts and resizes it if needed. * * @param newSize The new size to be added. */ void addSize(size_t newSize); /** * Removes a size from the size list, then sorts and resizes it if needed. * * @param oldSize The old size to be removed. */ void removeSize(size_t oldSize); /** * Resizes the VertexBuffer to the requested size. * This function takes care of choosing the correct integer type and * allocating and deleting the VertexBuffer instance. It also has some * fallback logic in case the memory ran out. * * @param size The requested VertexBuffer size. Passing 0 deletes the VertexBuffer without allocating a new one. */ void resize(size_t size); /** * Adds all indices to the array with the type T. * There are no checks for the correct types or overflows. The calling * function should check for that. */ template void fill(); // The size of the array requested by this instance. size_t size; // The size in bytes of an element in the element array. static size_t elementSize; // The current VertexBuffer size. 0 means no VertexBuffer. static size_t maxSize; // The list of sizes. Needs to be kept sorted in ascending order. static std::list sizeRefs; // The VertexBuffer for the element array. Can be NULL. static VertexBuffer *element_array; }; } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_SPRITE_BATCH_H love-0.9.1/src/modules/graphics/opengl/wrap_Texture.h0000644000000000000000000000277012316602166022662 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_WRAP_TEXTURE_H #define LOVE_GRAPHICS_OPENGL_WRAP_TEXTURE_H #include "Texture.h" #include "common/runtime.h" namespace love { namespace graphics { namespace opengl { Texture *luax_checktexture(lua_State *L, int idx); int w_Texture_getWidth(lua_State *L); int w_Texture_getHeight(lua_State *L); int w_Texture_getDimensions(lua_State *L); int w_Texture_setFilter(lua_State *L); int w_Texture_getFilter(lua_State *L); int w_Texture_setWrap(lua_State *L); int w_Texture_getWrap(lua_State *L); } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_WRAP_TEXTURE_H love-0.9.1/src/modules/graphics/opengl/wrap_Quad.h0000644000000000000000000000253612316602166022114 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_WRAP_QUAD_H #define LOVE_GRAPHICS_OPENGL_WRAP_QUAD_H // LOVE #include "common/runtime.h" #include "graphics/Quad.h" namespace love { namespace graphics { namespace opengl { Quad *luax_checkquad(lua_State *L, int idx); int w_Quad_setViewport(lua_State *L); int w_Quad_getViewport(lua_State *L); extern "C" int luaopen_quad(lua_State *L); } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_WRAP_QUAD_H love-0.9.1/src/modules/graphics/opengl/ParticleSystem.cpp0000644000000000000000000005445112316602166023477 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ //LOVE #include "common/config.h" #include "ParticleSystem.h" #include "common/math.h" #include "modules/math/RandomGenerator.h" #include "OpenGL.h" // STD #include #include #include namespace love { namespace graphics { namespace opengl { namespace { love::math::RandomGenerator rng; Colorf colorToFloat(const Color &c) { return Colorf((float)c.r/255.0f, (float)c.g/255.0f, (float)c.b/255.0f, (float)c.a/255.0f); } float calculate_variation(float inner, float outer, float var) { float low = inner - (outer/2.0f)*var; float high = inner + (outer/2.0f)*var; float r = (float) rng.random(); return low*(1-r)+high*r; } } // anonymous namespace ParticleSystem::ParticleSystem(Texture *texture, uint32 size) : pMem(nullptr) , pFree(nullptr) , pHead(nullptr) , pTail(nullptr) , particleVerts(nullptr) , texture(texture) , active(true) , insertMode(INSERT_MODE_TOP) , maxParticles(0) , activeParticles(0) , emissionRate(0) , emitCounter(0) , areaSpreadDistribution(DISTRIBUTION_NONE) , lifetime(-1) , life(0) , particleLifeMin(0) , particleLifeMax(0) , direction(0) , spread(0) , speedMin(0) , speedMax(0) , linearAccelerationMin(0, 0) , linearAccelerationMax(0, 0) , radialAccelerationMin(0) , radialAccelerationMax(0) , tangentialAccelerationMin(0) , tangentialAccelerationMax(0) , sizeVariation(0) , rotationMin(0) , rotationMax(0) , spinStart(0) , spinEnd(0) , spinVariation(0) , offsetX(float(texture->getWidth())*0.5f) , offsetY(float(texture->getHeight())*0.5f) , relativeRotation(false) { if (size == 0 || size > MAX_PARTICLES) throw love::Exception("Invalid ParticleSystem size."); sizes.push_back(1.0f); colors.push_back(Colorf(1.0f, 1.0f, 1.0f, 1.0f)); setBufferSize(size); texture->retain(); } ParticleSystem::ParticleSystem(const ParticleSystem &p) : pMem(nullptr) , pFree(nullptr) , pHead(nullptr) , pTail(nullptr) , particleVerts(nullptr) , texture(p.texture) , active(p.active) , insertMode(p.insertMode) , maxParticles(p.maxParticles) , activeParticles(0) , emissionRate(p.emissionRate) , emitCounter(0.0f) , position(p.position) , prevPosition(p.prevPosition) , areaSpreadDistribution(p.areaSpreadDistribution) , areaSpread(p.areaSpread) , lifetime(p.lifetime) , life(p.lifetime) // Initialize with the maximum life time. , particleLifeMin(p.particleLifeMin) , particleLifeMax(p.particleLifeMax) , direction(p.direction) , spread(p.spread) , speedMin(p.speedMin) , speedMax(p.speedMax) , linearAccelerationMin(p.linearAccelerationMin) , linearAccelerationMax(p.linearAccelerationMax) , radialAccelerationMin(p.radialAccelerationMin) , radialAccelerationMax(p.radialAccelerationMax) , tangentialAccelerationMin(p.tangentialAccelerationMin) , tangentialAccelerationMax(p.tangentialAccelerationMax) , sizes(p.sizes) , sizeVariation(p.sizeVariation) , rotationMin(p.rotationMin) , rotationMax(p.rotationMax) , spinStart(p.spinStart) , spinEnd(p.spinEnd) , spinVariation(p.spinVariation) , offsetX(p.offsetX) , offsetY(p.offsetY) , colors(p.colors) , relativeRotation(p.relativeRotation) { setBufferSize(maxParticles); if (texture != nullptr) texture->retain(); } ParticleSystem::~ParticleSystem() { if (texture != nullptr) texture->release(); deleteBuffers(); } ParticleSystem *ParticleSystem::clone() { return new ParticleSystem(*this); } void ParticleSystem::createBuffers(size_t size) { try { pFree = pMem = new Particle[size]; particleVerts = new love::Vertex[size * 4]; maxParticles = (uint32) size; } catch (std::bad_alloc &) { deleteBuffers(); throw love::Exception("Out of memory"); } } void ParticleSystem::deleteBuffers() { // Clean up for great gracefulness! delete[] pMem; delete[] particleVerts; pMem = nullptr; particleVerts = nullptr; maxParticles = 0; activeParticles = 0; } void ParticleSystem::setBufferSize(uint32 size) { if (size == 0 || size > MAX_PARTICLES) throw love::Exception("Invalid buffer size"); deleteBuffers(); createBuffers(size); reset(); } uint32 ParticleSystem::getBufferSize() const { return maxParticles; } void ParticleSystem::addParticle(float t) { if (isFull()) return; // Gets a free particle and updates the allocation pointer. Particle *p = pFree++; initParticle(p, t); switch (insertMode) { default: case INSERT_MODE_TOP: insertTop(p); break; case INSERT_MODE_BOTTOM: insertBottom(p); break; case INSERT_MODE_RANDOM: insertRandom(p); break; } activeParticles++; } void ParticleSystem::initParticle(Particle *p, float t) { float min,max; // Linearly interpolate between the previous and current emitter position. love::Vector pos = prevPosition + (position - prevPosition) * t; min = particleLifeMin; max = particleLifeMax; if (min == max) p->life = min; else p->life = (float) rng.random(min, max); p->lifetime = p->life; p->position[0] = pos.x; p->position[1] = pos.y; switch (areaSpreadDistribution) { case DISTRIBUTION_UNIFORM: p->position[0] += (float) rng.random(-areaSpread.getX(), areaSpread.getX()); p->position[1] += (float) rng.random(-areaSpread.getY(), areaSpread.getY()); break; case DISTRIBUTION_NORMAL: p->position[0] += (float) rng.randomNormal(areaSpread.getX()); p->position[1] += (float) rng.randomNormal(areaSpread.getY()); break; case DISTRIBUTION_NONE: default: break; } min = direction - spread/2.0f; max = direction + spread/2.0f; p->direction = (float) rng.random(min, max); p->origin = pos; min = speedMin; max = speedMax; float speed = (float) rng.random(min, max); p->speed = love::Vector(cosf(p->direction), sinf(p->direction)); p->speed *= speed; p->linearAcceleration.x = (float) rng.random(linearAccelerationMin.x, linearAccelerationMax.x); p->linearAcceleration.y = (float) rng.random(linearAccelerationMin.y, linearAccelerationMax.y); min = radialAccelerationMin; max = radialAccelerationMax; p->radialAcceleration = (float) rng.random(min, max); min = tangentialAccelerationMin; max = tangentialAccelerationMax; p->tangentialAcceleration = (float) rng.random(min, max); p->sizeOffset = (float) rng.random(sizeVariation); // time offset for size change p->sizeIntervalSize = (1.0f - (float) rng.random(sizeVariation)) - p->sizeOffset; p->size = sizes[(size_t)(p->sizeOffset - .5f) * (sizes.size() - 1)]; min = rotationMin; max = rotationMax; p->spinStart = calculate_variation(spinStart, spinEnd, spinVariation); p->spinEnd = calculate_variation(spinEnd, spinStart, spinVariation); p->rotation = (float) rng.random(min, max); p->angle = p->rotation; if (relativeRotation) p->angle += atan2f(p->speed.y, p->speed.x); p->color = colors[0]; } void ParticleSystem::insertTop(Particle *p) { if (pHead == nullptr) { pHead = p; p->prev = nullptr; } else { pTail->next = p; p->prev = pTail; } p->next = nullptr; pTail = p; } void ParticleSystem::insertBottom(Particle *p) { if (pTail == nullptr) { pTail = p; p->next = nullptr; } else { pHead->prev = p; p->next = pHead; } p->prev = nullptr; pHead = p; } void ParticleSystem::insertRandom(Particle *p) { // Nonuniform, but 64-bit is so large nobody will notice. Hopefully. uint64 pos = rng.rand() % ((int64) activeParticles + 1); // Special case where the particle gets inserted before the head. if (pos == activeParticles) { Particle *pA = pHead; if (pA) pA->prev = p; p->prev = nullptr; p->next = pA; pHead = p; return; } // Inserts the particle after the randomly selected particle. Particle *pA = pMem + pos; Particle *pB = pA->next; pA->next = p; if (pB) pB->prev = p; else pTail = p; p->prev = pA; p->next = pB; } ParticleSystem::Particle *ParticleSystem::removeParticle(Particle *p) { // The linked list is updated in this function and old pointers may be // invalidated. The returned pointer will inform the caller of the new // pointer to the next particle. Particle *pNext = nullptr; // Removes the particle from the linked list. if (p->prev) p->prev->next = p->next; else pHead = p->next; if (p->next) { p->next->prev = p->prev; pNext = p->next; } else pTail = p->prev; // The (in memory) last particle can now be moved into the free slot. // It will skip the moving if it happens to be the removed particle. pFree--; if (p != pFree) { *p = *pFree; if (pNext == pFree) pNext = p; if (p->prev) p->prev->next = p; else pHead = p; if (p->next) p->next->prev = p; else pTail = p; } activeParticles--; return pNext; } void ParticleSystem::setTexture(Texture *texture) { Object::AutoRelease imagerelease(this->texture); this->texture = texture; if (texture) texture->retain(); } Texture *ParticleSystem::getTexture() const { return texture; } void ParticleSystem::setInsertMode(InsertMode mode) { insertMode = mode; } ParticleSystem::InsertMode ParticleSystem::getInsertMode() const { return insertMode; } void ParticleSystem::setEmissionRate(float rate) { if (rate < 0.0f) throw love::Exception("Invalid emission rate"); emissionRate = rate; } float ParticleSystem::getEmissionRate() const { return emissionRate; } void ParticleSystem::setEmitterLifetime(float life) { this->life = lifetime = life; } float ParticleSystem::getEmitterLifetime() const { return lifetime; } void ParticleSystem::setParticleLifetime(float min, float max) { particleLifeMin = min; if (max == 0) particleLifeMax = min; else particleLifeMax = max; } void ParticleSystem::getParticleLifetime(float *min, float *max) const { if (min) *min = particleLifeMin; if (max) *max = particleLifeMax; } void ParticleSystem::setPosition(float x, float y) { position = love::Vector(x, y); prevPosition = position; } const love::Vector &ParticleSystem::getPosition() const { return position; } void ParticleSystem::moveTo(float x, float y) { position = love::Vector(x, y); } void ParticleSystem::setAreaSpread(AreaSpreadDistribution distribution, float x, float y) { areaSpread = love::Vector(x, y); areaSpreadDistribution = distribution; } ParticleSystem::AreaSpreadDistribution ParticleSystem::getAreaSpreadDistribution() const { return areaSpreadDistribution; } const love::Vector &ParticleSystem::getAreaSpreadParameters() const { return areaSpread; } void ParticleSystem::setDirection(float direction) { this->direction = direction; } float ParticleSystem::getDirection() const { return direction; } void ParticleSystem::setSpread(float spread) { this->spread = spread; } float ParticleSystem::getSpread() const { return spread; } void ParticleSystem::setSpeed(float speed) { speedMin = speedMax = speed; } void ParticleSystem::setSpeed(float min, float max) { speedMin = min; speedMax = max; } void ParticleSystem::getSpeed(float *min, float *max) const { if (min) *min = speedMin; if (max) *max = speedMax; } void ParticleSystem::setLinearAcceleration(float x, float y) { linearAccelerationMin.x = linearAccelerationMax.x = x; linearAccelerationMin.y = linearAccelerationMax.y = y; } void ParticleSystem::setLinearAcceleration(float xmin, float ymin, float xmax, float ymax) { linearAccelerationMin = love::Vector(xmin, ymin); linearAccelerationMax = love::Vector(xmax, ymax); } void ParticleSystem::getLinearAcceleration(love::Vector *min, love::Vector *max) const { if (min) *min = linearAccelerationMin; if (max) *max = linearAccelerationMax; } void ParticleSystem::setRadialAcceleration(float acceleration) { radialAccelerationMin = radialAccelerationMax = acceleration; } void ParticleSystem::setRadialAcceleration(float min, float max) { radialAccelerationMin = min; radialAccelerationMax = max; } void ParticleSystem::getRadialAcceleration(float *min, float *max) const { if (min) *min = radialAccelerationMin; if (max) *max = radialAccelerationMax; } void ParticleSystem::setTangentialAcceleration(float acceleration) { tangentialAccelerationMin = tangentialAccelerationMax = acceleration; } void ParticleSystem::setTangentialAcceleration(float min, float max) { tangentialAccelerationMin = min; tangentialAccelerationMax = max; } void ParticleSystem::getTangentialAcceleration(float *min, float *max) const { if (min) *min = tangentialAccelerationMin; if (max) *max = tangentialAccelerationMax; } void ParticleSystem::setSize(float size) { sizes.resize(1); sizes[0] = size; } void ParticleSystem::setSizes(const std::vector &newSizes) { sizes = newSizes; } const std::vector &ParticleSystem::getSizes() const { return sizes; } void ParticleSystem::setSizeVariation(float variation) { sizeVariation = variation; } float ParticleSystem::getSizeVariation() const { return sizeVariation; } void ParticleSystem::setRotation(float rotation) { rotationMin = rotationMax = rotation; } void ParticleSystem::setRotation(float min, float max) { rotationMin = min; rotationMax = max; } void ParticleSystem::getRotation(float *min, float *max) const { if (min) *min = rotationMin; if (max) *max = rotationMax; } void ParticleSystem::setSpin(float spin) { spinStart = spin; spinEnd = spin; } void ParticleSystem::setSpin(float start, float end) { spinStart = start; spinEnd = end; } void ParticleSystem::getSpin(float *start, float *end) const { if (start) *start = spinStart; if (end) *end = spinEnd; } void ParticleSystem::setSpinVariation(float variation) { spinVariation = variation; } float ParticleSystem::getSpinVariation() const { return spinVariation; } void ParticleSystem::setOffset(float x, float y) { offsetX = x; offsetY = y; } love::Vector ParticleSystem::getOffset() const { return love::Vector(offsetX, offsetY); } void ParticleSystem::setColor(const Color &color) { colors.resize(1); colors[0] = colorToFloat(color); } void ParticleSystem::setColor(const std::vector &newColors) { colors.resize(newColors.size()); for (size_t i = 0; i < newColors.size(); ++i) colors[i] = colorToFloat(newColors[i]); } std::vector ParticleSystem::getColor() const { // The particle system stores colors as floats... std::vector ncolors(colors.size()); for (size_t i = 0; i < colors.size(); ++i) { ncolors[i].r = (unsigned char) (colors[i].r * 255); ncolors[i].g = (unsigned char) (colors[i].g * 255); ncolors[i].b = (unsigned char) (colors[i].b * 255); ncolors[i].a = (unsigned char) (colors[i].a * 255); } return ncolors; } void ParticleSystem::setRelativeRotation(bool enable) { relativeRotation = enable; } bool ParticleSystem::hasRelativeRotation() const { return relativeRotation; } uint32 ParticleSystem::getCount() const { return activeParticles; } void ParticleSystem::start() { active = true; } void ParticleSystem::stop() { active = false; life = lifetime; emitCounter = 0; } void ParticleSystem::pause() { active = false; } void ParticleSystem::reset() { if (pMem == nullptr) return; pFree = pMem; pHead = nullptr; pTail = nullptr; activeParticles = 0; life = lifetime; emitCounter = 0; } void ParticleSystem::emit(uint32 num) { if (!active) return; num = std::min(num, maxParticles - activeParticles); while(num--) addParticle(1.0f); } bool ParticleSystem::isActive() const { return active; } bool ParticleSystem::isPaused() const { return !active && life < lifetime; } bool ParticleSystem::isStopped() const { return !active && life >= lifetime; } bool ParticleSystem::isEmpty() const { return activeParticles == 0; } bool ParticleSystem::isFull() const { return activeParticles == maxParticles; } void ParticleSystem::draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { uint32 pCount = getCount(); if (pCount == 0 || texture == nullptr || pMem == nullptr || particleVerts == nullptr) return; Color curcolor = gl.getColor(); glPushMatrix(); static Matrix t; t.setTransformation(x, y, angle, sx, sy, ox, oy, kx, ky); glMultMatrixf((const GLfloat *)t.getElements()); const Vertex *textureVerts = texture->getVertices(); Vertex *pVerts = particleVerts; Particle *p = pHead; // set the vertex data for each particle (transformation, texcoords, color) while (p) { // particle vertices are image vertices transformed by particle information t.setTransformation(p->position[0], p->position[1], p->angle, p->size, p->size, offsetX, offsetY, 0.0f, 0.0f); t.transform(pVerts, textureVerts, 4); // set the texture coordinate and color data for particle vertices for (int v = 0; v < 4; v++) { pVerts[v].s = textureVerts[v].s; pVerts[v].t = textureVerts[v].t; // particle colors are stored as floats (0-1) but vertex colors are stored as unsigned bytes (0-255) pVerts[v].r = (unsigned char) (p->color.r*255); pVerts[v].g = (unsigned char) (p->color.g*255); pVerts[v].b = (unsigned char) (p->color.b*255); pVerts[v].a = (unsigned char) (p->color.a*255); } pVerts += 4; p = p->next; } texture->predraw(); glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Vertex), (GLvoid *) &particleVerts[0].r); glVertexPointer(2, GL_FLOAT, sizeof(Vertex), (GLvoid *) &particleVerts[0].x); glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), (GLvoid *) &particleVerts[0].s); gl.prepareDraw(); glDrawArrays(GL_QUADS, 0, pCount * 4); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); texture->postdraw(); glPopMatrix(); gl.setColor(curcolor); } void ParticleSystem::update(float dt) { if (pMem == nullptr || dt == 0.0f) return; // Traverse all particles and update. Particle *p = pHead; while (p) { // Decrease lifespan. p->life -= dt; if (p->life <= 0) p = removeParticle(p); else { // Temp variables. love::Vector radial, tangential; love::Vector ppos(p->position[0], p->position[1]); // Get vector from particle center to particle. radial = ppos - p->origin; radial.normalize(); tangential = radial; // Resize radial acceleration. radial *= p->radialAcceleration; // Calculate tangential acceleration. { float a = tangential.getX(); tangential.setX(-tangential.getY()); tangential.setY(a); } // Resize tangential. tangential *= p->tangentialAcceleration; // Update position. p->speed += (radial+tangential+p->linearAcceleration)*dt; // Modify position. ppos += p->speed * dt; p->position[0] = ppos.getX(); p->position[1] = ppos.getY(); const float t = 1.0f - p->life / p->lifetime; // Rotate. p->rotation += (p->spinStart * (1.0f - t) + p->spinEnd * t) * dt; p->angle = p->rotation; if (relativeRotation) p->angle += atan2f(p->speed.y, p->speed.x); // Change size according to given intervals: // i = 0 1 2 3 n-1 // |-------|-------|------|--- ... ---| // t = 0 1/(n-1) 3/(n-1) 1 // // `s' is the interpolation variable scaled to the current // interval width, e.g. if n = 5 and t = 0.3, then the current // indices are 1,2 and s = 0.3 - 0.25 = 0.05 float s = p->sizeOffset + t * p->sizeIntervalSize; // size variation s *= (float)(sizes.size() - 1); // 0 <= s < sizes.size() size_t i = (size_t)s; size_t k = (i == sizes.size() - 1) ? i : i + 1; // boundary check (prevents failing on t = 1.0f) s -= (float)i; // transpose s to be in interval [0:1]: i <= s < i + 1 ~> 0 <= s < 1 p->size = sizes[i] * (1.0f - s) + sizes[k] * s; // Update color according to given intervals (as above) s = t * (float)(colors.size() - 1); i = (size_t)s; k = (i == colors.size() - 1) ? i : i + 1; s -= (float)i; // 0 <= s <= 1 p->color = colors[i] * (1.0f - s) + colors[k] * s; // Next particle. p = p->next; } } // Make some more particles. if (active) { float rate = 1.0f / emissionRate; // the amount of time between each particle emit emitCounter += dt; float total = emitCounter - rate; while (emitCounter > rate) { addParticle(1.0f - (emitCounter - rate) / total); emitCounter -= rate; } /*int particles = (int)(emissionRate * dt); for (int i = 0; i != particles; i++) add();*/ life -= dt; if (lifetime != -1 && life < 0) stop(); } prevPosition = position; } bool ParticleSystem::getConstant(const char *in, AreaSpreadDistribution &out) { return distributions.find(in, out); } bool ParticleSystem::getConstant(AreaSpreadDistribution in, const char *&out) { return distributions.find(in, out); } bool ParticleSystem::getConstant(const char *in, InsertMode &out) { return insertModes.find(in, out); } bool ParticleSystem::getConstant(InsertMode in, const char *&out) { return insertModes.find(in, out); } StringMap::Entry ParticleSystem::distributionsEntries[] = { { "none", ParticleSystem::DISTRIBUTION_NONE }, { "uniform", ParticleSystem::DISTRIBUTION_UNIFORM }, { "normal", ParticleSystem::DISTRIBUTION_NORMAL }, }; StringMap ParticleSystem::distributions(ParticleSystem::distributionsEntries, sizeof(ParticleSystem::distributionsEntries)); StringMap::Entry ParticleSystem::insertModesEntries[] = { { "top", ParticleSystem::INSERT_MODE_TOP }, { "bottom", ParticleSystem::INSERT_MODE_BOTTOM }, { "random", ParticleSystem::INSERT_MODE_RANDOM }, }; StringMap ParticleSystem::insertModes(ParticleSystem::insertModesEntries, sizeof(ParticleSystem::insertModesEntries)); } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/wrap_Mesh.cpp0000644000000000000000000002117512316602166022451 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Mesh.h" #include "Image.h" #include "Canvas.h" #include "wrap_Texture.h" // C++ #include namespace love { namespace graphics { namespace opengl { Mesh *luax_checkmesh(lua_State *L, int idx) { return luax_checktype(L, idx, "Mesh", GRAPHICS_MESH_T); } int w_Mesh_setVertex(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); size_t i = size_t(luaL_checkinteger(L, 2) - 1); Vertex v; if (lua_istable(L, 3)) { for (int i = 1; i <= 8; i++) lua_rawgeti(L, 3, i); v.x = luaL_checknumber(L, -8); v.y = luaL_checknumber(L, -7); v.s = luaL_optnumber(L, -6, 0.0); v.t = luaL_optnumber(L, -5, 0.0); v.r = luaL_optinteger(L, -4, 255); v.g = luaL_optinteger(L, -3, 255); v.b = luaL_optinteger(L, -2, 255); v.a = luaL_optinteger(L, -1, 255); lua_pop(L, 8); } else { v.x = luaL_checknumber(L, 3); v.y = luaL_checknumber(L, 4); v.s = luaL_optnumber(L, 5, 0.0); v.t = luaL_optnumber(L, 6, 0.0); v.r = luaL_optinteger(L, 7, 255); v.g = luaL_optinteger(L, 8, 255); v.b = luaL_optinteger(L, 9, 255); v.a = luaL_optinteger(L, 10, 255); } EXCEPT_GUARD(t->setVertex(i, v);) return 0; } int w_Mesh_getVertex(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); size_t i = (size_t) (luaL_checkinteger(L, 2) - 1); Vertex v; EXCEPT_GUARD(v = t->getVertex(i);) lua_pushnumber(L, v.x); lua_pushnumber(L, v.y); lua_pushnumber(L, v.s); lua_pushnumber(L, v.t); lua_pushnumber(L, v.r); lua_pushnumber(L, v.g); lua_pushnumber(L, v.b); lua_pushnumber(L, v.a); return 8; } int w_Mesh_setVertices(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); size_t vertex_count = lua_objlen(L, 2); std::vector vertices; vertices.reserve(vertex_count); // Get the vertices from the table. for (size_t i = 1; i <= vertex_count; i++) { lua_rawgeti(L, 2, i); if (lua_type(L, -1) != LUA_TTABLE) return luax_typerror(L, 2, "table of tables"); for (int j = 1; j <= 8; j++) lua_rawgeti(L, -j, j); Vertex v; v.x = (float) luaL_checknumber(L, -8); v.y = (float) luaL_checknumber(L, -7); v.s = (float) luaL_optnumber(L, -6, 0.0); v.t = (float) luaL_optnumber(L, -5, 0.0); v.r = (unsigned char) luaL_optinteger(L, -4, 255); v.g = (unsigned char) luaL_optinteger(L, -3, 255); v.b = (unsigned char) luaL_optinteger(L, -2, 255); v.a = (unsigned char) luaL_optinteger(L, -1, 255); lua_pop(L, 9); vertices.push_back(v); } EXCEPT_GUARD(t->setVertices(vertices);) return 0; } int w_Mesh_getVertices(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); const Vertex *vertices = t->getVertices(); size_t count = t->getVertexCount(); lua_createtable(L, count, 0); for (size_t i = 0; i < count; i++) { // Create vertex table. lua_createtable(L, 8, 0); lua_pushnumber(L, vertices[i].x); lua_rawseti(L, -2, 1); lua_pushnumber(L, vertices[i].y); lua_rawseti(L, -2, 2); lua_pushnumber(L, vertices[i].s); lua_rawseti(L, -2, 3); lua_pushnumber(L, vertices[i].t); lua_rawseti(L, -2, 4); lua_pushnumber(L, vertices[i].r); lua_rawseti(L, -2, 5); lua_pushnumber(L, vertices[i].g); lua_rawseti(L, -2, 6); lua_pushnumber(L, vertices[i].b); lua_rawseti(L, -2, 7); lua_pushnumber(L, vertices[i].a); lua_rawseti(L, -2, 8); // Insert vertex table into vertices table. lua_rawseti(L, -2, i + 1); } // Return vertices table. return 1; } int w_Mesh_getVertexCount(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); lua_pushinteger(L, t->getVertexCount()); return 1; } int w_Mesh_setVertexMap(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); bool is_table = lua_istable(L, 2); int nargs = is_table ? lua_objlen(L, 2) : lua_gettop(L) - 1; std::vector vertexmap; vertexmap.reserve(nargs); for (int i = 0; i < nargs; i++) { if (is_table) { lua_rawgeti(L, 2, i + 1); vertexmap.push_back(uint32(luaL_checkinteger(L, -1) - 1)); lua_pop(L, 1); } else vertexmap.push_back(uint32(luaL_checkinteger(L, i + 2) - 1)); } EXCEPT_GUARD(t->setVertexMap(vertexmap);) return 0; } int w_Mesh_getVertexMap(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); std::vector vertex_map; EXCEPT_GUARD(t->getVertexMap(vertex_map);) size_t element_count = vertex_map.size(); lua_createtable(L, element_count, 0); for (size_t i = 0; i < element_count; i++) { lua_pushinteger(L, lua_Integer(vertex_map[i]) + 1); lua_rawseti(L, -2, i + 1); } return 1; } int w_Mesh_setInstanceCount(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); t->setInstanceCount(luaL_checkint(L, 2)); return 0; } int w_Mesh_getInstanceCount(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); lua_pushinteger(L, t->getInstanceCount()); return 1; } int w_Mesh_setTexture(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); if (lua_isnoneornil(L, 2)) t->setTexture(); else { Texture *tex = luax_checktexture(L, 2); t->setTexture(tex); } return 0; } int w_Mesh_getTexture(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); Texture *tex = t->getTexture(); if (tex == nullptr) return 0; tex->retain(); // FIXME: big hack right here. if (typeid(*tex) == typeid(Image)) luax_pushtype(L, "Image", GRAPHICS_IMAGE_T, tex); else if (typeid(*tex) == typeid(Canvas)) luax_pushtype(L, "Canvas", GRAPHICS_CANVAS_T, tex); else { tex->release(); return luaL_error(L, "Unable to determine texture type."); } return 1; } int w_Mesh_setDrawMode(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); const char *str = luaL_checkstring(L, 2); Mesh::DrawMode mode; if (!Mesh::getConstant(str, mode)) return luaL_error(L, "Invalid mesh draw mode: %s", str); t->setDrawMode(mode); return 0; } int w_Mesh_getDrawMode(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); Mesh::DrawMode mode = t->getDrawMode(); const char *str; if (!Mesh::getConstant(mode, str)) return luaL_error(L, "Unknown mesh draw mode."); lua_pushstring(L, str); return 1; } int w_Mesh_setDrawRange(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); if (lua_isnoneornil(L, 2)) t->setDrawRange(); else { int rangemin = luaL_checkint(L, 2) - 1; int rangemax = luaL_checkint(L, 3) - 1; EXCEPT_GUARD(t->setDrawRange(rangemin, rangemax);) } return 0; } int w_Mesh_getDrawRange(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); int rangemin = -1; int rangemax = -1; t->getDrawRange(rangemin, rangemax); if (rangemin < 0 || rangemax < 0) return 0; lua_pushinteger(L, rangemin + 1); lua_pushinteger(L, rangemax + 1); return 2; } int w_Mesh_setVertexColors(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); t->setVertexColors(luax_toboolean(L, 2)); return 0; } int w_Mesh_hasVertexColors(lua_State *L) { Mesh *t = luax_checkmesh(L, 1); luax_pushboolean(L, t->hasVertexColors()); return 1; } static const luaL_Reg functions[] = { { "setVertex", w_Mesh_setVertex }, { "getVertex", w_Mesh_getVertex }, { "setVertices", w_Mesh_setVertices }, { "getVertices", w_Mesh_getVertices }, { "getVertexCount", w_Mesh_getVertexCount }, { "setVertexMap", w_Mesh_setVertexMap }, { "getVertexMap", w_Mesh_getVertexMap }, // Disabled for now, since implementation is incomplete and might change // if/when VertexBuffers / custom vertex attributes are added. // { "setInstanceCount", w_Mesh_setInstanceCount }, // { "getInstanceCount", w_Mesh_getInstanceCount }, { "setTexture", w_Mesh_setTexture }, { "getTexture", w_Mesh_getTexture }, { "setDrawMode", w_Mesh_setDrawMode }, { "getDrawMode", w_Mesh_getDrawMode }, { "setDrawRange", w_Mesh_setDrawRange }, { "getDrawRange", w_Mesh_getDrawRange }, { "setVertexColors", w_Mesh_setVertexColors }, { "hasVertexColors", w_Mesh_hasVertexColors }, // Deprecated since 0.9.1. { "setImage", w_Mesh_setTexture }, { "getImage", w_Mesh_getTexture }, { 0, 0 } }; extern "C" int luaopen_mesh(lua_State *L) { return luax_register_type(L, "Mesh", functions); } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/wrap_Shader.cpp0000644000000000000000000002121012316602166022751 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Shader.h" #include "wrap_Texture.h" #include #include namespace love { namespace graphics { namespace opengl { Shader *luax_checkshader(lua_State *L, int idx) { return luax_checktype(L, idx, "Shader", GRAPHICS_SHADER_T); } int w_Shader_getWarnings(lua_State *L) { Shader *shader = luax_checkshader(L, 1); lua_pushstring(L, shader->getWarnings().c_str()); return 1; } template static T *_getScalars(lua_State *L, int count, size_t &dimension) { dimension = 1; T *values = new T[count]; for (int i = 0; i < count; ++i) { if (lua_isnumber(L, 3 + i)) values[i] = static_cast(lua_tonumber(L, 3 + i)); else if (lua_isboolean(L, 3 + i)) values[i] = static_cast(lua_toboolean(L, 3 + i)); else { delete[] values; luax_typerror(L, 3 + i, "number or boolean"); return 0; } } return values; } template static T *_getVectors(lua_State *L, int count, size_t &dimension) { dimension = lua_objlen(L, 3); T *values = new T[count * dimension]; for (int i = 0; i < count; ++i) { if (!lua_istable(L, 3 + i)) { delete[] values; luax_typerror(L, 3 + i, "table"); return 0; } if (lua_objlen(L, 3 + i) != dimension) { delete[] values; luaL_error(L, "Error in argument %d: Expected table size %d, got %d.", 3+i, dimension, lua_objlen(L, 3+i)); return 0; } for (size_t k = 1; k <= dimension; ++k) { lua_rawgeti(L, 3 + i, k); if (lua_isnumber(L, -1)) values[i * dimension + k - 1] = static_cast(lua_tonumber(L, -1)); else if (lua_isboolean(L, -1)) values[i * dimension + k - 1] = static_cast(lua_toboolean(L, -1)); else { delete[] values; luax_typerror(L, -1, "number or boolean"); return 0; } } lua_pop(L, int(dimension)); } return values; } int w_Shader_sendInt(lua_State *L) { Shader *shader = luax_checkshader(L, 1); const char *name = luaL_checkstring(L, 2); int count = lua_gettop(L) - 2; if (count < 1) return luaL_error(L, "No variable to send."); int *values = 0; size_t dimension = 1; if (lua_isnumber(L, 3) || lua_isboolean(L, 3)) values = _getScalars(L, count, dimension); else if (lua_istable(L, 3)) values = _getVectors(L, count, dimension); else return luax_typerror(L, 3, "number, boolean, or table"); if (!values) return luaL_error(L, "Error in arguments."); bool should_error = false; try { shader->sendInt(name, dimension, values, count); } catch (love::Exception &e) { should_error = true; lua_pushstring(L, e.what()); } delete[] values; if (should_error) return luaL_error(L, "%s", lua_tostring(L, -1)); return 0; } int w_Shader_sendFloat(lua_State *L) { Shader *shader = luax_checkshader(L, 1); const char *name = luaL_checkstring(L, 2); int count = lua_gettop(L) - 2; if (count < 1) return luaL_error(L, "No variable to send."); float *values = 0; size_t dimension = 1; if (lua_isnumber(L, 3) || lua_isboolean(L, 3)) values = _getScalars(L, count, dimension); else if (lua_istable(L, 3)) values = _getVectors(L, count, dimension); else return luax_typerror(L, 3, "number, boolean, or table"); if (!values) return luaL_error(L, "Error in arguments."); bool should_error = false; try { shader->sendFloat(name, dimension, values, count); } catch (love::Exception &e) { should_error = true; lua_pushstring(L, e.what()); } delete[] values; if (should_error) return luaL_error(L, "%s", lua_tostring(L, -1)); return 0; } int w_Shader_sendMatrix(lua_State *L) { int count = lua_gettop(L) - 2; Shader *shader = luax_checkshader(L, 1); const char *name = luaL_checkstring(L, 2); if (!lua_istable(L, 3)) return luax_typerror(L, 3, "matrix table"); lua_getfield(L, 3, "dimension"); int dimension = lua_tointeger(L, -1); lua_pop(L, 1); if (dimension < 2 || dimension > 4) return luaL_error(L, "Invalid matrix size: %dx%d (only 2x2, 3x3 and 4x4 matrices are supported).", dimension, dimension); float *values = new float[dimension * dimension * count]; for (int i = 0; i < count; ++i) { lua_getfield(L, 3+i, "dimension"); if (lua_tointeger(L, -1) != dimension) { // You unlock this door with the key of imagination. Beyond it is // another dimension: a dimension of sound, a dimension of sight, // a dimension of mind. You're moving into a land of both shadow // and substance, of things and ideas. You've just crossed over // into... the Twilight Zone. int other_dimension = lua_tointeger(L, -1); delete[] values; return luaL_error(L, "Invalid matrix size at argument %d: Expected size %dx%d, got %dx%d.", 3+i, dimension, dimension, other_dimension, other_dimension); } for (int k = 1; k <= dimension*dimension; ++k) { lua_rawgeti(L, 3+i, k); values[i * dimension * dimension + k - 1] = (float)lua_tonumber(L, -1); } lua_pop(L, 1 + dimension); } bool should_error = false; try { shader->sendMatrix(name, dimension, values, count); } catch(love::Exception &e) { should_error = true; lua_pushstring(L, e.what()); } delete[] values; if (should_error) return luaL_error(L, "%s", lua_tostring(L, -1)); return 0; } int w_Shader_sendTexture(lua_State *L) { Shader *shader = luax_checkshader(L, 1); const char *name = luaL_checkstring(L, 2); Texture *texture = luax_checktexture(L, 3); EXCEPT_GUARD(shader->sendTexture(name, texture);) return 0; } // Convert matrices on the stack for use with sendMatrix. static void w_convertMatrices(lua_State *L, int idx) { int matrixcount = lua_gettop(L) - (idx - 1); for (int matrix = idx; matrix < idx + matrixcount; matrix++) { luaL_checktype(L, matrix, LUA_TTABLE); int dimension = lua_objlen(L, matrix); int newi = 1; lua_createtable(L, dimension * dimension, 0); // Collapse {{a,b,c}, {d,e,f}, ...} to {a,b,c, d,e,f, ...} for (size_t i = 1; i <= lua_objlen(L, matrix); i++) { // Push args[matrix][i] onto the stack. lua_rawgeti(L, matrix, i); luaL_checktype(L, -1, LUA_TTABLE); for (size_t j = 1; j <= lua_objlen(L, -1); j++) { // Push args[matrix[i][j] onto the stack. lua_rawgeti(L, -1, j); luaL_checktype(L, -1, LUA_TNUMBER); // newtable[newi] = args[matrix][i][j] lua_rawseti(L, -3, newi++); } lua_pop(L, 1); } // newtable.dimension = #args[matrix] lua_pushinteger(L, dimension); lua_setfield(L, -2, "dimension"); // Replace args[i] with the new table lua_replace(L, matrix); } } int w_Shader_send(lua_State *L) { int ttype = lua_type(L, 3); Proxy *p = nullptr; switch (ttype) { case LUA_TNUMBER: case LUA_TBOOLEAN: // Scalar float/boolean. return w_Shader_sendFloat(L); break; case LUA_TUSERDATA: // Texture (Image or Canvas). p = (Proxy *) lua_touserdata(L, 3); if (p->flags[GRAPHICS_TEXTURE_ID]) return w_Shader_sendTexture(L); break; case LUA_TTABLE: // Vector or Matrix. lua_rawgeti(L, 3, 1); ttype = lua_type(L, -1); lua_pop(L, 1); if (ttype == LUA_TNUMBER || ttype == LUA_TBOOLEAN) return w_Shader_sendFloat(L); else if (ttype == LUA_TTABLE) { w_convertMatrices(L, 3); return w_Shader_sendMatrix(L); } break; default: break; } return luaL_argerror(L, 3, "number, boolean, table, image, or canvas expected"); } static const luaL_Reg functions[] = { { "getWarnings", w_Shader_getWarnings }, { "sendInt", w_Shader_sendInt }, { "sendBoolean", w_Shader_sendInt }, { "sendFloat", w_Shader_sendFloat }, { "sendMatrix", w_Shader_sendMatrix }, { "sendTexture", w_Shader_sendTexture }, { "send", w_Shader_send }, // Deprecated since 0.9.1. { "sendImage", w_Shader_sendTexture }, { "sendCanvas", w_Shader_sendTexture }, { 0, 0 } }; extern "C" int luaopen_shader(lua_State *L) { return luax_register_type(L, "Shader", functions); } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/Canvas.h0000644000000000000000000000677312316602166021413 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_CANVAS_H #define LOVE_GRAPHICS_OPENGL_CANVAS_H #include "graphics/Color.h" #include "image/Image.h" #include "image/ImageData.h" #include "common/Matrix.h" #include "Texture.h" #include "OpenGL.h" namespace love { namespace graphics { namespace opengl { class Canvas : public Texture { public: Canvas(int width, int height, Texture::Format format = Texture::FORMAT_NORMAL, int fsaa = 0); virtual ~Canvas(); // Implements Volatile. virtual bool loadVolatile(); virtual void unloadVolatile(); // Implements Drawable. virtual void draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky); // Implements Texture. virtual void drawq(Quad *quad, float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky); virtual void setFilter(const Texture::Filter &f); virtual void setWrap(const Texture::Wrap &w); virtual GLuint getGLTexture() const; virtual void predraw(); /** * @param canvases A list of other canvases to temporarily attach to this one, * to allow drawing to multiple canvases at once. **/ void startGrab(const std::vector &canvases); void startGrab(); void stopGrab(bool switchingToOtherCanvas = false); void clear(Color c); /** * Create and attach a stencil buffer to this Canvas' framebuffer, if necessary. **/ bool checkCreateStencil(); love::image::ImageData *getImageData(love::image::Image *image); void getPixel(unsigned char* pixel_rgba, int x, int y); inline const std::vector &getAttachedCanvases() const { return attachedCanvases; } inline GLenum getStatus() const { return status; } inline Texture::Format getTextureFormat() const { return format; } inline int getFSAA() const { return fsaa_samples; } bool resolveMSAA(); static bool isSupported(); static bool isHDRSupported(); static bool isSRGBSupported(); static bool isMultiCanvasSupported(); static Canvas *current; static void bindDefaultCanvas(); // The viewport dimensions of the system (default) framebuffer. static OpenGL::Viewport systemViewport; // Whether the main screen should have linear -> sRGB conversions enabled. static bool screenHasSRGB; private: bool createFSAAFBO(GLenum internalformat); GLuint fbo; GLuint resolve_fbo; GLuint texture; GLuint fsaa_buffer; GLuint depth_stencil; Format format; GLenum status; std::vector attachedCanvases; int fsaa_samples; bool fsaa_dirty; void setupGrab(); void drawv(const Matrix &t, const Vertex *v); }; // Canvas } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_CANVAS_H love-0.9.1/src/modules/graphics/opengl/wrap_Image.h0000644000000000000000000000275612316602166022250 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_WRAP_IMAGE_H #define LOVE_GRAPHICS_OPENGL_WRAP_IMAGE_H // LOVE #include "common/runtime.h" #include "Image.h" #include "wrap_Texture.h" namespace love { namespace graphics { namespace opengl { Image *luax_checkimage(lua_State *L, int idx); int w_Image_setMipmapFilter(lua_State *L); int w_Image_getMipmapFilter(lua_State *L); int w_Image_isCompressed(lua_State *L); int w_Image_refresh(lua_State *L); int w_Image_getData(lua_State *L); extern "C" int luaopen_image(lua_State *L); } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_WRAP_IMAGE_H love-0.9.1/src/modules/graphics/opengl/Graphics.h0000644000000000000000000003050612316602166021727 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_GRAPHICS_H #define LOVE_GRAPHICS_OPENGL_GRAPHICS_H // STD #include #include #include // OpenGL #include "OpenGL.h" // LOVE #include "graphics/Graphics.h" #include "graphics/Color.h" #include "image/Image.h" #include "image/ImageData.h" #include "window/Window.h" #include "Font.h" #include "Image.h" #include "graphics/Quad.h" #include "SpriteBatch.h" #include "ParticleSystem.h" #include "Canvas.h" #include "Shader.h" #include "Mesh.h" namespace love { namespace graphics { namespace opengl { // During display mode changing, certain // variables about the OpenGL context are // lost. struct DisplayState { // Colors. Color color; Color backgroundColor; // Blend mode. Graphics::BlendMode blendMode; // Line. Graphics::LineStyle lineStyle; Graphics::LineJoin lineJoin; // Point. float pointSize; Graphics::PointStyle pointStyle; // Scissor. bool scissor; OpenGL::Viewport scissorBox; // Color mask. bool colorMask[4]; bool wireframe; // Default values. DisplayState() { color.set(255,255,255,255); backgroundColor.set(0, 0, 0, 255); blendMode = Graphics::BLEND_ALPHA; lineStyle = Graphics::LINE_SMOOTH; lineJoin = Graphics::LINE_JOIN_MITER; pointSize = 1.0f; pointStyle = Graphics::POINT_SMOOTH; scissor = false; colorMask[0] = colorMask[1] = colorMask[2] = colorMask[3] = true; wireframe = false; } }; class Graphics : public love::graphics::Graphics { public: Graphics(); virtual ~Graphics(); // Implements Module. const char *getName() const; DisplayState saveState(); void restoreState(const DisplayState &s); virtual void setViewportSize(int width, int height); virtual bool setMode(int width, int height, bool &sRGB); virtual void unSetMode(); void setDebug(bool enable); /** * Resets the current color, background color, * line style, and so forth. (This will be called * when the game reloads. **/ void reset(); /** * Clears the screen. **/ void clear(); /** * Flips buffers. (Rendered geometry is presented on screen). **/ void present(); /** * Gets the width of the current graphics viewport. **/ int getWidth() const; /** * Gets the height of the current graphics viewport. **/ int getHeight() const; /** * True if a graphics viewport is set. **/ bool isCreated() const; /** * Scissor defines a box such that everything outside that box is discarded and not drawn. * Scissoring is automatically enabled. * @param x The x-coordinate of the top-left corner. * @param y The y-coordinate of the top-left corner. * @param width The width of the box. * @param height The height of the box. **/ void setScissor(int x, int y, int width, int height); /** * Clears any scissor that has been created. **/ void setScissor(); /** * Gets the current scissor box. * @return Whether the scissor is enabled. */ bool getScissor(int &x, int &y, int &width, int &height) const; /** * Enables the stencil buffer and set stencil function to fill it */ void defineStencil(); /** * Set stencil function to mask the following drawing calls using * the current stencil buffer * @param invert Invert the mask, i.e. draw everywhere expect where * the mask is defined. */ void useStencil(bool invert = false); /** * Disables the stencil buffer */ void discardStencil(); /** * Creates an Image object with padding and/or optimization. **/ Image *newImage(love::image::ImageData *data, Texture::Format format = Texture::FORMAT_NORMAL); Image *newImage(love::image::CompressedData *cdata, Texture::Format format = Texture::FORMAT_NORMAL); Quad *newQuad(Quad::Viewport v, float sw, float sh); /** * Creates a Font object. **/ Font *newFont(love::font::Rasterizer *data, const Texture::Filter &filter = Texture::getDefaultFilter()); SpriteBatch *newSpriteBatch(Texture *texture, int size, int usage); ParticleSystem *newParticleSystem(Texture *texture, int size); Canvas *newCanvas(int width, int height, Texture::Format format = Texture::FORMAT_NORMAL, int fsaa = 0); Shader *newShader(const Shader::ShaderSources &sources); Mesh *newMesh(const std::vector &vertices, Mesh::DrawMode mode = Mesh::DRAW_MODE_FAN); Mesh *newMesh(int vertexcount, Mesh::DrawMode mode = Mesh::DRAW_MODE_FAN); /** * Sets the foreground color. * @param c The new foreground color. **/ void setColor(const Color &c); /** * Gets current color. **/ Color getColor() const; /** * Sets the background Color. **/ void setBackgroundColor(const Color &c); /** * Gets the current background color. **/ Color getBackgroundColor() const; /** * Sets the current font. * @param font A Font object. **/ void setFont(Font *font); /** * Gets the current Font, or nil if none. **/ Font *getFont() const; /** * Sets the enabled color components when rendering. **/ void setColorMask(bool r, bool g, bool b, bool a); /** * Gets the current color mask. * Returns an array of 4 booleans representing the mask. **/ const bool *getColorMask() const; /** * Sets the current blend mode. **/ void setBlendMode(BlendMode mode); /** * Gets the current blend mode. **/ BlendMode getBlendMode() const; /** * Sets the default filter for images, canvases, and fonts. **/ void setDefaultFilter(const Texture::Filter &f); /** * Gets the default filter for images, canvases, and fonts. **/ const Texture::Filter &getDefaultFilter() const; /** * Default Image mipmap filter mode and sharpness values. **/ void setDefaultMipmapFilter(Texture::FilterMode filter, float sharpness); void getDefaultMipmapFilter(Texture::FilterMode *filter, float *sharpness) const; /** * Sets the line width. * @param width The new width of the line. **/ void setLineWidth(float width); /** * Sets the line style. * @param style LINE_ROUGH or LINE_SMOOTH. **/ void setLineStyle(LineStyle style); /** * Sets the line style. * @param style LINE_ROUGH or LINE_SMOOTH. **/ void setLineJoin(LineJoin style); /** * Gets the line width. **/ float getLineWidth() const; /** * Gets the line style. **/ LineStyle getLineStyle() const; /** * Gets the line style. **/ LineJoin getLineJoin() const; /** * Sets the size of points. **/ void setPointSize(float size); /** * Sets the style of points. * @param style POINT_SMOOTH or POINT_ROUGH. **/ void setPointStyle(PointStyle style); /** * Gets the point size. **/ float getPointSize() const; /** * Gets the point style. **/ PointStyle getPointStyle() const; /** * Sets whether graphics will be drawn as wireframe lines instead of filled * triangles (has no effect for drawn points.) * This should only be used as a debugging tool. The wireframe lines do not * behave the same as regular love.graphics lines. **/ void setWireframe(bool enable); /** * Gets whether wireframe drawing mode is enabled. **/ bool isWireframe() const; /** * Draws text at the specified coordinates, with rotation and * scaling along both axes. * @param x The x-coordinate. * @param y The y-coordinate. * @param angle The amount of rotation. * @param sx The scale factor along the x-axis. (1 = normal). * @param sy The scale factor along the y-axis. (1 = normal). * @param ox The origin offset along the x-axis. * @param oy The origin offset along the y-axis. * @param kx Shear along the x-axis. * @param ky Shear along the y-axis. **/ void print(const std::string &str, float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky); /** * Draw formatted text on screen at the specified coordinates. * * @param str A string of text. * @param x The x-coordinate. * @param y The y-coordinate. * @param wrap The maximum width of the text area. * @param align Where to align the text. * @param angle The amount of rotation. * @param sx The scale factor along the x-axis. (1 = normal). * @param sy The scale factor along the y-axis. (1 = normal). * @param ox The origin offset along the x-axis. * @param oy The origin offset along the y-axis. * @param kx Shear along the x-axis. * @param ky Shear along the y-axis. **/ void printf(const std::string &str, float x, float y, float wrap, AlignMode align, float angle, float sx, float sy, float ox, float oy, float kx, float ky); /** * Draws a point at (x,y). * @param x Point along x-axis. * @param y Point along y-axis. **/ void point(float x, float y); /** * Draws a series of lines connecting the given vertices. * @param coords Vertex components (x1, y1, ..., xn, yn). If x1,y1 == xn,yn the line will be drawn closed. * @param count Number of items in the array, i.e. count = 2 * n **/ void polyline(const float *coords, size_t count); /** * Draws a rectangle. * @param x Position along x-axis for top-left corner. * @param y Position along y-axis for top-left corner. * @param w The width of the rectangle. * @param h The height of the rectangle. **/ void rectangle(DrawMode mode, float x, float y, float w, float h); /** * Draws a circle using the specified arguments. * @param mode The mode of drawing (line/filled). * @param x X-coordinate. * @param y Y-coordinate. * @param radius Radius of the circle. * @param points Number of points to use to draw the circle. **/ void circle(DrawMode mode, float x, float y, float radius, int points = 10); /** * Draws an arc using the specified arguments. * @param mode The mode of drawing (line/filled). * @param x X-coordinate. * @param y Y-coordinate. * @param radius Radius of the arc. * @param angle1 The angle at which the arc begins. * @param angle2 The angle at which the arc terminates. * @param points Number of points to use to draw the arc. **/ void arc(DrawMode mode, float x, float y, float radius, float angle1, float angle2, int points = 10); /** * Draws a polygon with an arbitrary number of vertices. * @param mode The type of drawing (line/filled). * @param coords Vertex components (x1, y1, x2, y2, etc.) * @param count Coord array size **/ void polygon(DrawMode mode, const float *coords, size_t count); /** * Creates a screenshot of the view and saves it to the default folder. * @param image The love.image module. * @param copyAlpha If the alpha channel should be copied or set to full opacity (255). **/ love::image::ImageData *newScreenshot(love::image::Image *image, bool copyAlpha = true); /** * Returns a string containing system-dependent renderer information. * Returned string can vary greatly between systems! Do not rely on it for * anything! * @param infotype The type of information to return. **/ std::string getRendererInfo(Graphics::RendererInfo infotype) const; /** * Gets the system-dependent numeric limit for the specified parameter. **/ double getSystemLimit(SystemLimit limittype) const; void push(); void pop(); void rotate(float r); void scale(float x, float y = 1.0f); void translate(float x, float y); void shear(float kx, float ky); void origin(); private: Font *currentFont; love::window::Window *currentWindow; std::vector pixel_size_stack; // stores current size of a pixel (needed for line drawing) LineStyle lineStyle; LineJoin lineJoin; float lineWidth; GLint matrixLimit; GLint userMatrices; bool colorMask[4]; bool wireframe; int width; int height; bool created; bool activeStencil; DisplayState savedState; }; // Graphics } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_GRAPHICS_H love-0.9.1/src/modules/graphics/opengl/GLee.h0000644000000000000000000506515012316602166021013 0ustar00rootroot00000000000000/*************************************************************************** * * GLee.h * GLee (OpenGL Easy Extension library) * Version : 5.5 * * Copyright (c)2011 Ben Woodhouse All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer as * the first lines of this file unmodified. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY BEN WOODHOUSE ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL BEN WOODHOUSE BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Web: http://elf-stone.com/glee.php * * [This file was automatically generated by GLeeGen 7.0 * ***************************************************************************/ #ifndef __glee_h_ #define __glee_h_ #ifdef __gl_h_ #error gl.h included before GLee.h #endif #ifdef __glext_h_ #error glext.h included before GLee.h #endif #ifdef __wglext_h_ #error wglext.h included before GLee.h #endif #ifdef __glxext_h_ #error glxext.h included before GLee.h #endif #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #include #include #elif defined(__APPLE__) || defined(__APPLE_CC__) #define GL_GLEXT_LEGACY #include #else // GLX #define __glext_h_ /* prevent glext.h from being included */ #define __glxext_h_ /* prevent glxext.h from being included */ #define GLX_GLXEXT_PROTOTYPES #include #include typedef XID GLEE_GLXContextID; #endif #ifndef APIENTRY #define APIENTRY #endif #ifndef APIENTRYP #define APIENTRYP APIENTRY * #endif #define GLEE_EXTERN extern #ifdef __cplusplus extern "C" { /* begin C linkage */ #endif #define GLEE_LINK_FAIL 0 #define GLEE_LINK_PARTIAL 1 #define GLEE_LINK_COMPLETE 2 typedef void (*GLEE_FUNC)(void); struct _cl_context; struct _cl_event; /* Extension querying variables */ GLEE_EXTERN GLboolean _GLEE_VERSION_1_2; GLEE_EXTERN GLboolean _GLEE_ARB_imaging; GLEE_EXTERN GLboolean _GLEE_VERSION_1_3; GLEE_EXTERN GLboolean _GLEE_VERSION_1_4; GLEE_EXTERN GLboolean _GLEE_VERSION_1_5; GLEE_EXTERN GLboolean _GLEE_VERSION_2_0; GLEE_EXTERN GLboolean _GLEE_VERSION_2_1; GLEE_EXTERN GLboolean _GLEE_VERSION_3_0; GLEE_EXTERN GLboolean _GLEE_VERSION_3_1; GLEE_EXTERN GLboolean _GLEE_VERSION_3_2; GLEE_EXTERN GLboolean _GLEE_VERSION_3_3; GLEE_EXTERN GLboolean _GLEE_VERSION_4_0; GLEE_EXTERN GLboolean _GLEE_VERSION_4_1; GLEE_EXTERN GLboolean _GLEE_VERSION_4_2; GLEE_EXTERN GLboolean _GLEE_VERSION_4_3; GLEE_EXTERN GLboolean _GLEE_ARB_multitexture; GLEE_EXTERN GLboolean _GLEE_ARB_transpose_matrix; GLEE_EXTERN GLboolean _GLEE_ARB_multisample; GLEE_EXTERN GLboolean _GLEE_ARB_texture_env_add; GLEE_EXTERN GLboolean _GLEE_ARB_texture_cube_map; GLEE_EXTERN GLboolean _GLEE_ARB_texture_compression; GLEE_EXTERN GLboolean _GLEE_ARB_texture_border_clamp; GLEE_EXTERN GLboolean _GLEE_ARB_point_parameters; GLEE_EXTERN GLboolean _GLEE_ARB_vertex_blend; GLEE_EXTERN GLboolean _GLEE_ARB_matrix_palette; GLEE_EXTERN GLboolean _GLEE_ARB_texture_env_combine; GLEE_EXTERN GLboolean _GLEE_ARB_texture_env_crossbar; GLEE_EXTERN GLboolean _GLEE_ARB_texture_env_dot3; GLEE_EXTERN GLboolean _GLEE_ARB_texture_mirrored_repeat; GLEE_EXTERN GLboolean _GLEE_ARB_depth_texture; GLEE_EXTERN GLboolean _GLEE_ARB_shadow; GLEE_EXTERN GLboolean _GLEE_ARB_shadow_ambient; GLEE_EXTERN GLboolean _GLEE_ARB_window_pos; GLEE_EXTERN GLboolean _GLEE_ARB_vertex_program; GLEE_EXTERN GLboolean _GLEE_ARB_fragment_program; GLEE_EXTERN GLboolean _GLEE_ARB_vertex_buffer_object; GLEE_EXTERN GLboolean _GLEE_ARB_occlusion_query; GLEE_EXTERN GLboolean _GLEE_ARB_shader_objects; GLEE_EXTERN GLboolean _GLEE_ARB_vertex_shader; GLEE_EXTERN GLboolean _GLEE_ARB_fragment_shader; GLEE_EXTERN GLboolean _GLEE_ARB_shading_language_100; GLEE_EXTERN GLboolean _GLEE_ARB_texture_non_power_of_two; GLEE_EXTERN GLboolean _GLEE_ARB_point_sprite; GLEE_EXTERN GLboolean _GLEE_ARB_fragment_program_shadow; GLEE_EXTERN GLboolean _GLEE_ARB_draw_buffers; GLEE_EXTERN GLboolean _GLEE_ARB_texture_rectangle; GLEE_EXTERN GLboolean _GLEE_ARB_color_buffer_float; GLEE_EXTERN GLboolean _GLEE_ARB_half_float_pixel; GLEE_EXTERN GLboolean _GLEE_ARB_texture_float; GLEE_EXTERN GLboolean _GLEE_ARB_pixel_buffer_object; GLEE_EXTERN GLboolean _GLEE_ARB_depth_buffer_float; GLEE_EXTERN GLboolean _GLEE_ARB_draw_instanced; GLEE_EXTERN GLboolean _GLEE_ARB_framebuffer_object; GLEE_EXTERN GLboolean _GLEE_ARB_framebuffer_sRGB; GLEE_EXTERN GLboolean _GLEE_ARB_geometry_shader4; GLEE_EXTERN GLboolean _GLEE_ARB_half_float_vertex; GLEE_EXTERN GLboolean _GLEE_ARB_instanced_arrays; GLEE_EXTERN GLboolean _GLEE_ARB_map_buffer_range; GLEE_EXTERN GLboolean _GLEE_ARB_texture_buffer_object; GLEE_EXTERN GLboolean _GLEE_ARB_texture_compression_rgtc; GLEE_EXTERN GLboolean _GLEE_ARB_texture_rg; GLEE_EXTERN GLboolean _GLEE_ARB_vertex_array_object; GLEE_EXTERN GLboolean _GLEE_ARB_uniform_buffer_object; GLEE_EXTERN GLboolean _GLEE_ARB_compatibility; GLEE_EXTERN GLboolean _GLEE_ARB_copy_buffer; GLEE_EXTERN GLboolean _GLEE_ARB_shader_texture_lod; GLEE_EXTERN GLboolean _GLEE_ARB_depth_clamp; GLEE_EXTERN GLboolean _GLEE_ARB_draw_elements_base_vertex; GLEE_EXTERN GLboolean _GLEE_ARB_fragment_coord_conventions; GLEE_EXTERN GLboolean _GLEE_ARB_provoking_vertex; GLEE_EXTERN GLboolean _GLEE_ARB_seamless_cube_map; GLEE_EXTERN GLboolean _GLEE_ARB_sync; GLEE_EXTERN GLboolean _GLEE_ARB_texture_multisample; GLEE_EXTERN GLboolean _GLEE_ARB_vertex_array_bgra; GLEE_EXTERN GLboolean _GLEE_ARB_draw_buffers_blend; GLEE_EXTERN GLboolean _GLEE_ARB_sample_shading; GLEE_EXTERN GLboolean _GLEE_ARB_texture_cube_map_array; GLEE_EXTERN GLboolean _GLEE_ARB_texture_gather; GLEE_EXTERN GLboolean _GLEE_ARB_texture_query_lod; GLEE_EXTERN GLboolean _GLEE_ARB_shading_language_include; GLEE_EXTERN GLboolean _GLEE_ARB_texture_compression_bptc; GLEE_EXTERN GLboolean _GLEE_ARB_blend_func_extended; GLEE_EXTERN GLboolean _GLEE_ARB_explicit_attrib_location; GLEE_EXTERN GLboolean _GLEE_ARB_occlusion_query2; GLEE_EXTERN GLboolean _GLEE_ARB_sampler_objects; GLEE_EXTERN GLboolean _GLEE_ARB_shader_bit_encoding; GLEE_EXTERN GLboolean _GLEE_ARB_texture_rgb10_a2ui; GLEE_EXTERN GLboolean _GLEE_ARB_texture_swizzle; GLEE_EXTERN GLboolean _GLEE_ARB_timer_query; GLEE_EXTERN GLboolean _GLEE_ARB_vertex_type_2_10_10_10_rev; GLEE_EXTERN GLboolean _GLEE_ARB_draw_indirect; GLEE_EXTERN GLboolean _GLEE_ARB_gpu_shader5; GLEE_EXTERN GLboolean _GLEE_ARB_gpu_shader_fp64; GLEE_EXTERN GLboolean _GLEE_ARB_shader_subroutine; GLEE_EXTERN GLboolean _GLEE_ARB_tessellation_shader; GLEE_EXTERN GLboolean _GLEE_ARB_texture_buffer_object_rgb32; GLEE_EXTERN GLboolean _GLEE_ARB_transform_feedback2; GLEE_EXTERN GLboolean _GLEE_ARB_transform_feedback3; GLEE_EXTERN GLboolean _GLEE_ARB_ES2_compatibility; GLEE_EXTERN GLboolean _GLEE_ARB_get_program_binary; GLEE_EXTERN GLboolean _GLEE_ARB_separate_shader_objects; GLEE_EXTERN GLboolean _GLEE_ARB_shader_precision; GLEE_EXTERN GLboolean _GLEE_ARB_vertex_attrib_64bit; GLEE_EXTERN GLboolean _GLEE_ARB_viewport_array; GLEE_EXTERN GLboolean _GLEE_ARB_cl_event; GLEE_EXTERN GLboolean _GLEE_ARB_debug_output; GLEE_EXTERN GLboolean _GLEE_ARB_robustness; GLEE_EXTERN GLboolean _GLEE_ARB_shader_stencil_export; GLEE_EXTERN GLboolean _GLEE_ARB_base_instance; GLEE_EXTERN GLboolean _GLEE_ARB_shading_language_420pack; GLEE_EXTERN GLboolean _GLEE_ARB_transform_feedback_instanced; GLEE_EXTERN GLboolean _GLEE_ARB_compressed_texture_pixel_storage; GLEE_EXTERN GLboolean _GLEE_ARB_conservative_depth; GLEE_EXTERN GLboolean _GLEE_ARB_internalformat_query; GLEE_EXTERN GLboolean _GLEE_ARB_map_buffer_alignment; GLEE_EXTERN GLboolean _GLEE_ARB_shader_atomic_counters; GLEE_EXTERN GLboolean _GLEE_ARB_shader_image_load_store; GLEE_EXTERN GLboolean _GLEE_ARB_shading_language_packing; GLEE_EXTERN GLboolean _GLEE_ARB_texture_storage; GLEE_EXTERN GLboolean _GLEE_KHR_texture_compression_astc_ldr; GLEE_EXTERN GLboolean _GLEE_KHR_debug; GLEE_EXTERN GLboolean _GLEE_ARB_arrays_of_arrays; GLEE_EXTERN GLboolean _GLEE_ARB_clear_buffer_object; GLEE_EXTERN GLboolean _GLEE_ARB_compute_shader; GLEE_EXTERN GLboolean _GLEE_ARB_copy_image; GLEE_EXTERN GLboolean _GLEE_ARB_texture_view; GLEE_EXTERN GLboolean _GLEE_ARB_vertex_attrib_binding; GLEE_EXTERN GLboolean _GLEE_ARB_robustness_isolation; GLEE_EXTERN GLboolean _GLEE_ARB_ES3_compatibility; GLEE_EXTERN GLboolean _GLEE_ARB_explicit_uniform_location; GLEE_EXTERN GLboolean _GLEE_ARB_fragment_layer_viewport; GLEE_EXTERN GLboolean _GLEE_ARB_framebuffer_no_attachments; GLEE_EXTERN GLboolean _GLEE_ARB_internalformat_query2; GLEE_EXTERN GLboolean _GLEE_ARB_invalidate_subdata; GLEE_EXTERN GLboolean _GLEE_ARB_multi_draw_indirect; GLEE_EXTERN GLboolean _GLEE_ARB_program_interface_query; GLEE_EXTERN GLboolean _GLEE_ARB_robust_buffer_access_behavior; GLEE_EXTERN GLboolean _GLEE_ARB_shader_image_size; GLEE_EXTERN GLboolean _GLEE_ARB_shader_storage_buffer_object; GLEE_EXTERN GLboolean _GLEE_ARB_stencil_texturing; GLEE_EXTERN GLboolean _GLEE_ARB_texture_buffer_range; GLEE_EXTERN GLboolean _GLEE_ARB_texture_query_levels; GLEE_EXTERN GLboolean _GLEE_ARB_texture_storage_multisample; GLEE_EXTERN GLboolean _GLEE_EXT_abgr; GLEE_EXTERN GLboolean _GLEE_EXT_blend_color; GLEE_EXTERN GLboolean _GLEE_EXT_polygon_offset; GLEE_EXTERN GLboolean _GLEE_EXT_texture; GLEE_EXTERN GLboolean _GLEE_EXT_texture3D; GLEE_EXTERN GLboolean _GLEE_SGIS_texture_filter4; GLEE_EXTERN GLboolean _GLEE_EXT_subtexture; GLEE_EXTERN GLboolean _GLEE_EXT_copy_texture; GLEE_EXTERN GLboolean _GLEE_EXT_histogram; GLEE_EXTERN GLboolean _GLEE_EXT_convolution; GLEE_EXTERN GLboolean _GLEE_SGI_color_matrix; GLEE_EXTERN GLboolean _GLEE_SGI_color_table; GLEE_EXTERN GLboolean _GLEE_SGIS_pixel_texture; GLEE_EXTERN GLboolean _GLEE_SGIX_pixel_texture; GLEE_EXTERN GLboolean _GLEE_SGIS_texture4D; GLEE_EXTERN GLboolean _GLEE_SGI_texture_color_table; GLEE_EXTERN GLboolean _GLEE_EXT_cmyka; GLEE_EXTERN GLboolean _GLEE_EXT_texture_object; GLEE_EXTERN GLboolean _GLEE_SGIS_detail_texture; GLEE_EXTERN GLboolean _GLEE_SGIS_sharpen_texture; GLEE_EXTERN GLboolean _GLEE_EXT_packed_pixels; GLEE_EXTERN GLboolean _GLEE_SGIS_texture_lod; GLEE_EXTERN GLboolean _GLEE_SGIS_multisample; GLEE_EXTERN GLboolean _GLEE_EXT_rescale_normal; GLEE_EXTERN GLboolean _GLEE_EXT_vertex_array; GLEE_EXTERN GLboolean _GLEE_EXT_misc_attribute; GLEE_EXTERN GLboolean _GLEE_SGIS_generate_mipmap; GLEE_EXTERN GLboolean _GLEE_SGIX_clipmap; GLEE_EXTERN GLboolean _GLEE_SGIX_shadow; GLEE_EXTERN GLboolean _GLEE_SGIS_texture_edge_clamp; GLEE_EXTERN GLboolean _GLEE_SGIS_texture_border_clamp; GLEE_EXTERN GLboolean _GLEE_EXT_blend_minmax; GLEE_EXTERN GLboolean _GLEE_EXT_blend_subtract; GLEE_EXTERN GLboolean _GLEE_EXT_blend_logic_op; GLEE_EXTERN GLboolean _GLEE_SGIX_interlace; GLEE_EXTERN GLboolean _GLEE_SGIX_pixel_tiles; GLEE_EXTERN GLboolean _GLEE_SGIS_texture_select; GLEE_EXTERN GLboolean _GLEE_SGIX_sprite; GLEE_EXTERN GLboolean _GLEE_SGIX_texture_multi_buffer; GLEE_EXTERN GLboolean _GLEE_EXT_point_parameters; GLEE_EXTERN GLboolean _GLEE_SGIS_point_parameters; GLEE_EXTERN GLboolean _GLEE_SGIX_instruments; GLEE_EXTERN GLboolean _GLEE_SGIX_texture_scale_bias; GLEE_EXTERN GLboolean _GLEE_SGIX_framezoom; GLEE_EXTERN GLboolean _GLEE_SGIX_tag_sample_buffer; GLEE_EXTERN GLboolean _GLEE_FfdMaskSGIX; GLEE_EXTERN GLboolean _GLEE_SGIX_polynomial_ffd; GLEE_EXTERN GLboolean _GLEE_SGIX_reference_plane; GLEE_EXTERN GLboolean _GLEE_SGIX_flush_raster; GLEE_EXTERN GLboolean _GLEE_SGIX_depth_texture; GLEE_EXTERN GLboolean _GLEE_SGIS_fog_function; GLEE_EXTERN GLboolean _GLEE_SGIX_fog_offset; GLEE_EXTERN GLboolean _GLEE_HP_image_transform; GLEE_EXTERN GLboolean _GLEE_HP_convolution_border_modes; GLEE_EXTERN GLboolean _GLEE_INGR_palette_buffer; GLEE_EXTERN GLboolean _GLEE_SGIX_texture_add_env; GLEE_EXTERN GLboolean _GLEE_EXT_color_subtable; GLEE_EXTERN GLboolean _GLEE_PGI_vertex_hints; GLEE_EXTERN GLboolean _GLEE_PGI_misc_hints; GLEE_EXTERN GLboolean _GLEE_EXT_paletted_texture; GLEE_EXTERN GLboolean _GLEE_EXT_clip_volume_hint; GLEE_EXTERN GLboolean _GLEE_SGIX_list_priority; GLEE_EXTERN GLboolean _GLEE_SGIX_ir_instrument1; GLEE_EXTERN GLboolean _GLEE_SGIX_calligraphic_fragment; GLEE_EXTERN GLboolean _GLEE_SGIX_texture_lod_bias; GLEE_EXTERN GLboolean _GLEE_SGIX_shadow_ambient; GLEE_EXTERN GLboolean _GLEE_EXT_index_texture; GLEE_EXTERN GLboolean _GLEE_EXT_index_material; GLEE_EXTERN GLboolean _GLEE_EXT_index_func; GLEE_EXTERN GLboolean _GLEE_EXT_index_array_formats; GLEE_EXTERN GLboolean _GLEE_EXT_compiled_vertex_array; GLEE_EXTERN GLboolean _GLEE_EXT_cull_vertex; GLEE_EXTERN GLboolean _GLEE_SGIX_ycrcb; GLEE_EXTERN GLboolean _GLEE_SGIX_fragment_lighting; GLEE_EXTERN GLboolean _GLEE_IBM_rasterpos_clip; GLEE_EXTERN GLboolean _GLEE_HP_texture_lighting; GLEE_EXTERN GLboolean _GLEE_EXT_draw_range_elements; GLEE_EXTERN GLboolean _GLEE_WIN_phong_shading; GLEE_EXTERN GLboolean _GLEE_WIN_specular_fog; GLEE_EXTERN GLboolean _GLEE_EXT_light_texture; GLEE_EXTERN GLboolean _GLEE_SGIX_blend_alpha_minmax; GLEE_EXTERN GLboolean _GLEE_SGIX_impact_pixel_texture; GLEE_EXTERN GLboolean _GLEE_EXT_bgra; GLEE_EXTERN GLboolean _GLEE_SGIX_async; GLEE_EXTERN GLboolean _GLEE_SGIX_async_pixel; GLEE_EXTERN GLboolean _GLEE_SGIX_async_histogram; GLEE_EXTERN GLboolean _GLEE_INTEL_texture_scissor; GLEE_EXTERN GLboolean _GLEE_INTEL_parallel_arrays; GLEE_EXTERN GLboolean _GLEE_HP_occlusion_test; GLEE_EXTERN GLboolean _GLEE_EXT_pixel_transform; GLEE_EXTERN GLboolean _GLEE_EXT_pixel_transform_color_table; GLEE_EXTERN GLboolean _GLEE_EXT_shared_texture_palette; GLEE_EXTERN GLboolean _GLEE_EXT_separate_specular_color; GLEE_EXTERN GLboolean _GLEE_EXT_secondary_color; GLEE_EXTERN GLboolean _GLEE_EXT_texture_perturb_normal; GLEE_EXTERN GLboolean _GLEE_EXT_multi_draw_arrays; GLEE_EXTERN GLboolean _GLEE_EXT_fog_coord; GLEE_EXTERN GLboolean _GLEE_REND_screen_coordinates; GLEE_EXTERN GLboolean _GLEE_EXT_coordinate_frame; GLEE_EXTERN GLboolean _GLEE_EXT_texture_env_combine; GLEE_EXTERN GLboolean _GLEE_APPLE_specular_vector; GLEE_EXTERN GLboolean _GLEE_APPLE_transform_hint; GLEE_EXTERN GLboolean _GLEE_SGIX_fog_scale; GLEE_EXTERN GLboolean _GLEE_SUNX_constant_data; GLEE_EXTERN GLboolean _GLEE_SUN_global_alpha; GLEE_EXTERN GLboolean _GLEE_SUN_triangle_list; GLEE_EXTERN GLboolean _GLEE_SUN_vertex; GLEE_EXTERN GLboolean _GLEE_EXT_blend_func_separate; GLEE_EXTERN GLboolean _GLEE_INGR_color_clamp; GLEE_EXTERN GLboolean _GLEE_INGR_interlace_read; GLEE_EXTERN GLboolean _GLEE_EXT_stencil_wrap; GLEE_EXTERN GLboolean _GLEE_EXT_422_pixels; GLEE_EXTERN GLboolean _GLEE_NV_texgen_reflection; GLEE_EXTERN GLboolean _GLEE_EXT_texture_cube_map; GLEE_EXTERN GLboolean _GLEE_SUN_convolution_border_modes; GLEE_EXTERN GLboolean _GLEE_EXT_texture_env_add; GLEE_EXTERN GLboolean _GLEE_EXT_texture_lod_bias; GLEE_EXTERN GLboolean _GLEE_EXT_texture_filter_anisotropic; GLEE_EXTERN GLboolean _GLEE_EXT_vertex_weighting; GLEE_EXTERN GLboolean _GLEE_NV_light_max_exponent; GLEE_EXTERN GLboolean _GLEE_NV_vertex_array_range; GLEE_EXTERN GLboolean _GLEE_NV_register_combiners; GLEE_EXTERN GLboolean _GLEE_NV_fog_distance; GLEE_EXTERN GLboolean _GLEE_NV_texgen_emboss; GLEE_EXTERN GLboolean _GLEE_NV_blend_square; GLEE_EXTERN GLboolean _GLEE_NV_texture_env_combine4; GLEE_EXTERN GLboolean _GLEE_MESA_resize_buffers; GLEE_EXTERN GLboolean _GLEE_MESA_window_pos; GLEE_EXTERN GLboolean _GLEE_EXT_texture_compression_s3tc; GLEE_EXTERN GLboolean _GLEE_IBM_cull_vertex; GLEE_EXTERN GLboolean _GLEE_IBM_multimode_draw_arrays; GLEE_EXTERN GLboolean _GLEE_IBM_vertex_array_lists; GLEE_EXTERN GLboolean _GLEE_SGIX_subsample; GLEE_EXTERN GLboolean _GLEE_SGIX_ycrcb_subsample; GLEE_EXTERN GLboolean _GLEE_SGIX_ycrcba; GLEE_EXTERN GLboolean _GLEE_SGI_depth_pass_instrument; GLEE_EXTERN GLboolean _GLEE_3DFX_texture_compression_FXT1; GLEE_EXTERN GLboolean _GLEE_3DFX_multisample; GLEE_EXTERN GLboolean _GLEE_3DFX_tbuffer; GLEE_EXTERN GLboolean _GLEE_EXT_multisample; GLEE_EXTERN GLboolean _GLEE_SGIX_vertex_preclip; GLEE_EXTERN GLboolean _GLEE_SGIX_convolution_accuracy; GLEE_EXTERN GLboolean _GLEE_SGIX_resample; GLEE_EXTERN GLboolean _GLEE_SGIS_point_line_texgen; GLEE_EXTERN GLboolean _GLEE_SGIS_texture_color_mask; GLEE_EXTERN GLboolean _GLEE_EXT_texture_env_dot3; GLEE_EXTERN GLboolean _GLEE_ATI_texture_mirror_once; GLEE_EXTERN GLboolean _GLEE_NV_fence; GLEE_EXTERN GLboolean _GLEE_IBM_texture_mirrored_repeat; GLEE_EXTERN GLboolean _GLEE_NV_evaluators; GLEE_EXTERN GLboolean _GLEE_NV_packed_depth_stencil; GLEE_EXTERN GLboolean _GLEE_NV_register_combiners2; GLEE_EXTERN GLboolean _GLEE_NV_texture_compression_vtc; GLEE_EXTERN GLboolean _GLEE_NV_texture_rectangle; GLEE_EXTERN GLboolean _GLEE_NV_texture_shader; GLEE_EXTERN GLboolean _GLEE_NV_texture_shader2; GLEE_EXTERN GLboolean _GLEE_NV_vertex_array_range2; GLEE_EXTERN GLboolean _GLEE_NV_vertex_program; GLEE_EXTERN GLboolean _GLEE_SGIX_texture_coordinate_clamp; GLEE_EXTERN GLboolean _GLEE_SGIX_scalebias_hint; GLEE_EXTERN GLboolean _GLEE_OML_interlace; GLEE_EXTERN GLboolean _GLEE_OML_subsample; GLEE_EXTERN GLboolean _GLEE_OML_resample; GLEE_EXTERN GLboolean _GLEE_NV_copy_depth_to_color; GLEE_EXTERN GLboolean _GLEE_ATI_envmap_bumpmap; GLEE_EXTERN GLboolean _GLEE_ATI_fragment_shader; GLEE_EXTERN GLboolean _GLEE_ATI_pn_triangles; GLEE_EXTERN GLboolean _GLEE_ATI_vertex_array_object; GLEE_EXTERN GLboolean _GLEE_EXT_vertex_shader; GLEE_EXTERN GLboolean _GLEE_ATI_vertex_streams; GLEE_EXTERN GLboolean _GLEE_ATI_element_array; GLEE_EXTERN GLboolean _GLEE_SUN_mesh_array; GLEE_EXTERN GLboolean _GLEE_SUN_slice_accum; GLEE_EXTERN GLboolean _GLEE_NV_multisample_filter_hint; GLEE_EXTERN GLboolean _GLEE_NV_depth_clamp; GLEE_EXTERN GLboolean _GLEE_NV_occlusion_query; GLEE_EXTERN GLboolean _GLEE_NV_point_sprite; GLEE_EXTERN GLboolean _GLEE_NV_texture_shader3; GLEE_EXTERN GLboolean _GLEE_NV_vertex_program1_1; GLEE_EXTERN GLboolean _GLEE_EXT_shadow_funcs; GLEE_EXTERN GLboolean _GLEE_EXT_stencil_two_side; GLEE_EXTERN GLboolean _GLEE_ATI_text_fragment_shader; GLEE_EXTERN GLboolean _GLEE_APPLE_client_storage; GLEE_EXTERN GLboolean _GLEE_APPLE_element_array; GLEE_EXTERN GLboolean _GLEE_APPLE_fence; GLEE_EXTERN GLboolean _GLEE_APPLE_vertex_array_object; GLEE_EXTERN GLboolean _GLEE_APPLE_vertex_array_range; GLEE_EXTERN GLboolean _GLEE_APPLE_ycbcr_422; GLEE_EXTERN GLboolean _GLEE_S3_s3tc; GLEE_EXTERN GLboolean _GLEE_ATI_draw_buffers; GLEE_EXTERN GLboolean _GLEE_ATI_pixel_format_float; GLEE_EXTERN GLboolean _GLEE_ATI_texture_env_combine3; GLEE_EXTERN GLboolean _GLEE_ATI_texture_float; GLEE_EXTERN GLboolean _GLEE_NV_float_buffer; GLEE_EXTERN GLboolean _GLEE_NV_fragment_program; GLEE_EXTERN GLboolean _GLEE_NV_half_float; GLEE_EXTERN GLboolean _GLEE_NV_pixel_data_range; GLEE_EXTERN GLboolean _GLEE_NV_primitive_restart; GLEE_EXTERN GLboolean _GLEE_NV_texture_expand_normal; GLEE_EXTERN GLboolean _GLEE_NV_vertex_program2; GLEE_EXTERN GLboolean _GLEE_ATI_map_object_buffer; GLEE_EXTERN GLboolean _GLEE_ATI_separate_stencil; GLEE_EXTERN GLboolean _GLEE_ATI_vertex_attrib_array_object; GLEE_EXTERN GLboolean _GLEE_OES_byte_coordinates; GLEE_EXTERN GLboolean _GLEE_OES_fixed_point; GLEE_EXTERN GLboolean _GLEE_OES_single_precision; GLEE_EXTERN GLboolean _GLEE_OES_compressed_paletted_texture; GLEE_EXTERN GLboolean _GLEE_OES_read_format; GLEE_EXTERN GLboolean _GLEE_OES_query_matrix; GLEE_EXTERN GLboolean _GLEE_EXT_depth_bounds_test; GLEE_EXTERN GLboolean _GLEE_EXT_texture_mirror_clamp; GLEE_EXTERN GLboolean _GLEE_EXT_blend_equation_separate; GLEE_EXTERN GLboolean _GLEE_MESA_pack_invert; GLEE_EXTERN GLboolean _GLEE_MESA_ycbcr_texture; GLEE_EXTERN GLboolean _GLEE_EXT_pixel_buffer_object; GLEE_EXTERN GLboolean _GLEE_NV_fragment_program_option; GLEE_EXTERN GLboolean _GLEE_NV_fragment_program2; GLEE_EXTERN GLboolean _GLEE_NV_vertex_program2_option; GLEE_EXTERN GLboolean _GLEE_NV_vertex_program3; GLEE_EXTERN GLboolean _GLEE_EXT_framebuffer_object; GLEE_EXTERN GLboolean _GLEE_GREMEDY_string_marker; GLEE_EXTERN GLboolean _GLEE_EXT_packed_depth_stencil; GLEE_EXTERN GLboolean _GLEE_EXT_stencil_clear_tag; GLEE_EXTERN GLboolean _GLEE_EXT_texture_sRGB; GLEE_EXTERN GLboolean _GLEE_EXT_framebuffer_blit; GLEE_EXTERN GLboolean _GLEE_EXT_framebuffer_multisample; GLEE_EXTERN GLboolean _GLEE_MESAX_texture_stack; GLEE_EXTERN GLboolean _GLEE_EXT_timer_query; GLEE_EXTERN GLboolean _GLEE_EXT_gpu_program_parameters; GLEE_EXTERN GLboolean _GLEE_APPLE_flush_buffer_range; GLEE_EXTERN GLboolean _GLEE_EXT_gpu_shader4; GLEE_EXTERN GLboolean _GLEE_EXT_draw_instanced; GLEE_EXTERN GLboolean _GLEE_EXT_packed_float; GLEE_EXTERN GLboolean _GLEE_EXT_texture_array; GLEE_EXTERN GLboolean _GLEE_EXT_texture_buffer_object; GLEE_EXTERN GLboolean _GLEE_EXT_texture_compression_latc; GLEE_EXTERN GLboolean _GLEE_EXT_texture_compression_rgtc; GLEE_EXTERN GLboolean _GLEE_EXT_texture_shared_exponent; GLEE_EXTERN GLboolean _GLEE_NV_depth_buffer_float; GLEE_EXTERN GLboolean _GLEE_NV_framebuffer_multisample_coverage; GLEE_EXTERN GLboolean _GLEE_EXT_framebuffer_sRGB; GLEE_EXTERN GLboolean _GLEE_NV_geometry_shader4; GLEE_EXTERN GLboolean _GLEE_NV_parameter_buffer_object; GLEE_EXTERN GLboolean _GLEE_EXT_draw_buffers2; GLEE_EXTERN GLboolean _GLEE_NV_transform_feedback; GLEE_EXTERN GLboolean _GLEE_EXT_bindable_uniform; GLEE_EXTERN GLboolean _GLEE_EXT_texture_integer; GLEE_EXTERN GLboolean _GLEE_GREMEDY_frame_terminator; GLEE_EXTERN GLboolean _GLEE_NV_conditional_render; GLEE_EXTERN GLboolean _GLEE_NV_present_video; GLEE_EXTERN GLboolean _GLEE_EXT_transform_feedback; GLEE_EXTERN GLboolean _GLEE_EXT_direct_state_access; GLEE_EXTERN GLboolean _GLEE_EXT_vertex_array_bgra; GLEE_EXTERN GLboolean _GLEE_EXT_texture_swizzle; GLEE_EXTERN GLboolean _GLEE_NV_explicit_multisample; GLEE_EXTERN GLboolean _GLEE_NV_transform_feedback2; GLEE_EXTERN GLboolean _GLEE_ATI_meminfo; GLEE_EXTERN GLboolean _GLEE_AMD_performance_monitor; GLEE_EXTERN GLboolean _GLEE_AMD_texture_texture4; GLEE_EXTERN GLboolean _GLEE_AMD_vertex_shader_tesselator; GLEE_EXTERN GLboolean _GLEE_EXT_provoking_vertex; GLEE_EXTERN GLboolean _GLEE_EXT_texture_snorm; GLEE_EXTERN GLboolean _GLEE_AMD_draw_buffers_blend; GLEE_EXTERN GLboolean _GLEE_APPLE_texture_range; GLEE_EXTERN GLboolean _GLEE_APPLE_float_pixels; GLEE_EXTERN GLboolean _GLEE_APPLE_vertex_program_evaluators; GLEE_EXTERN GLboolean _GLEE_APPLE_aux_depth_stencil; GLEE_EXTERN GLboolean _GLEE_APPLE_object_purgeable; GLEE_EXTERN GLboolean _GLEE_APPLE_row_bytes; GLEE_EXTERN GLboolean _GLEE_APPLE_rgb_422; GLEE_EXTERN GLboolean _GLEE_NV_video_capture; GLEE_EXTERN GLboolean _GLEE_NV_copy_image; GLEE_EXTERN GLboolean _GLEE_EXT_separate_shader_objects; GLEE_EXTERN GLboolean _GLEE_NV_parameter_buffer_object2; GLEE_EXTERN GLboolean _GLEE_NV_shader_buffer_load; GLEE_EXTERN GLboolean _GLEE_NV_vertex_buffer_unified_memory; GLEE_EXTERN GLboolean _GLEE_NV_texture_barrier; GLEE_EXTERN GLboolean _GLEE_AMD_shader_stencil_export; GLEE_EXTERN GLboolean _GLEE_AMD_seamless_cubemap_per_texture; GLEE_EXTERN GLboolean _GLEE_AMD_conservative_depth; GLEE_EXTERN GLboolean _GLEE_EXT_shader_image_load_store; GLEE_EXTERN GLboolean _GLEE_EXT_vertex_attrib_64bit; GLEE_EXTERN GLboolean _GLEE_NV_gpu_program5; GLEE_EXTERN GLboolean _GLEE_NV_gpu_shader5; GLEE_EXTERN GLboolean _GLEE_NV_shader_buffer_store; GLEE_EXTERN GLboolean _GLEE_NV_tessellation_program5; GLEE_EXTERN GLboolean _GLEE_NV_vertex_attrib_integer_64bit; GLEE_EXTERN GLboolean _GLEE_NV_multisample_coverage; GLEE_EXTERN GLboolean _GLEE_AMD_name_gen_delete; GLEE_EXTERN GLboolean _GLEE_AMD_debug_output; GLEE_EXTERN GLboolean _GLEE_AMD_transform_feedback3_lines_triangles; GLEE_EXTERN GLboolean _GLEE_AMD_depth_clamp_separate; GLEE_EXTERN GLboolean _GLEE_EXT_texture_sRGB_decode; GLEE_EXTERN GLboolean _GLEE_NV_texture_multisample; GLEE_EXTERN GLboolean _GLEE_AMD_blend_minmax_factor; GLEE_EXTERN GLboolean _GLEE_AMD_sample_positions; GLEE_EXTERN GLboolean _GLEE_EXT_x11_sync_object; GLEE_EXTERN GLboolean _GLEE_AMD_multi_draw_indirect; GLEE_EXTERN GLboolean _GLEE_EXT_framebuffer_multisample_blit_scaled; GLEE_EXTERN GLboolean _GLEE_NV_path_rendering; GLEE_EXTERN GLboolean _GLEE_AMD_pinned_memory; GLEE_EXTERN GLboolean _GLEE_AMD_stencil_operation_extended; GLEE_EXTERN GLboolean _GLEE_AMD_vertex_shader_viewport_index; GLEE_EXTERN GLboolean _GLEE_AMD_vertex_shader_layer; GLEE_EXTERN GLboolean _GLEE_NV_bindless_texture; GLEE_EXTERN GLboolean _GLEE_NV_shader_atomic_float; GLEE_EXTERN GLboolean _GLEE_AMD_query_buffer_object; GLEE_EXTERN GLboolean _GLEE_NV_compute_program5; GLEE_EXTERN GLboolean _GLEE_NV_shader_storage_buffer_object; GLEE_EXTERN GLboolean _GLEE_NV_shader_atomic_counters; GLEE_EXTERN GLboolean _GLEE_NV_deep_texture3D; GLEE_EXTERN GLboolean _GLEE_NVX_conditional_render; GLEE_EXTERN GLboolean _GLEE_AMD_sparse_texture; GLEE_EXTERN GLboolean _GLEE_AMD_shader_trinary_minmax; GLEE_EXTERN GLboolean _GLEE_INTEL_map_texture; GLEE_EXTERN GLboolean _GLEE_NV_draw_texture; GLEE_EXTERN GLboolean _GLEE_SGIX_texture_select; GLEE_EXTERN GLboolean _GLEE_INGR_blend_func_separate; GLEE_EXTERN GLboolean _GLEE_SGIX_depth_pass_instrument; GLEE_EXTERN GLboolean _GLEE_SGIX_igloo_interface; /* Aliases for extension querying variables */ #define GLEE_VERSION_1_2 GLeeEnabled(&_GLEE_VERSION_1_2) #define GLEE_ARB_imaging GLeeEnabled(&_GLEE_ARB_imaging) #define GLEE_VERSION_1_3 GLeeEnabled(&_GLEE_VERSION_1_3) #define GLEE_VERSION_1_4 GLeeEnabled(&_GLEE_VERSION_1_4) #define GLEE_VERSION_1_5 GLeeEnabled(&_GLEE_VERSION_1_5) #define GLEE_VERSION_2_0 GLeeEnabled(&_GLEE_VERSION_2_0) #define GLEE_VERSION_2_1 GLeeEnabled(&_GLEE_VERSION_2_1) #define GLEE_VERSION_3_0 GLeeEnabled(&_GLEE_VERSION_3_0) #define GLEE_VERSION_3_1 GLeeEnabled(&_GLEE_VERSION_3_1) #define GLEE_VERSION_3_2 GLeeEnabled(&_GLEE_VERSION_3_2) #define GLEE_VERSION_3_3 GLeeEnabled(&_GLEE_VERSION_3_3) #define GLEE_VERSION_4_0 GLeeEnabled(&_GLEE_VERSION_4_0) #define GLEE_VERSION_4_1 GLeeEnabled(&_GLEE_VERSION_4_1) #define GLEE_VERSION_4_2 GLeeEnabled(&_GLEE_VERSION_4_2) #define GLEE_VERSION_4_3 GLeeEnabled(&_GLEE_VERSION_4_3) #define GLEE_ARB_multitexture GLeeEnabled(&_GLEE_ARB_multitexture) #define GLEE_ARB_transpose_matrix GLeeEnabled(&_GLEE_ARB_transpose_matrix) #define GLEE_ARB_multisample GLeeEnabled(&_GLEE_ARB_multisample) #define GLEE_ARB_texture_env_add GLeeEnabled(&_GLEE_ARB_texture_env_add) #define GLEE_ARB_texture_cube_map GLeeEnabled(&_GLEE_ARB_texture_cube_map) #define GLEE_ARB_texture_compression GLeeEnabled(&_GLEE_ARB_texture_compression) #define GLEE_ARB_texture_border_clamp GLeeEnabled(&_GLEE_ARB_texture_border_clamp) #define GLEE_ARB_point_parameters GLeeEnabled(&_GLEE_ARB_point_parameters) #define GLEE_ARB_vertex_blend GLeeEnabled(&_GLEE_ARB_vertex_blend) #define GLEE_ARB_matrix_palette GLeeEnabled(&_GLEE_ARB_matrix_palette) #define GLEE_ARB_texture_env_combine GLeeEnabled(&_GLEE_ARB_texture_env_combine) #define GLEE_ARB_texture_env_crossbar GLeeEnabled(&_GLEE_ARB_texture_env_crossbar) #define GLEE_ARB_texture_env_dot3 GLeeEnabled(&_GLEE_ARB_texture_env_dot3) #define GLEE_ARB_texture_mirrored_repeat GLeeEnabled(&_GLEE_ARB_texture_mirrored_repeat) #define GLEE_ARB_depth_texture GLeeEnabled(&_GLEE_ARB_depth_texture) #define GLEE_ARB_shadow GLeeEnabled(&_GLEE_ARB_shadow) #define GLEE_ARB_shadow_ambient GLeeEnabled(&_GLEE_ARB_shadow_ambient) #define GLEE_ARB_window_pos GLeeEnabled(&_GLEE_ARB_window_pos) #define GLEE_ARB_vertex_program GLeeEnabled(&_GLEE_ARB_vertex_program) #define GLEE_ARB_fragment_program GLeeEnabled(&_GLEE_ARB_fragment_program) #define GLEE_ARB_vertex_buffer_object GLeeEnabled(&_GLEE_ARB_vertex_buffer_object) #define GLEE_ARB_occlusion_query GLeeEnabled(&_GLEE_ARB_occlusion_query) #define GLEE_ARB_shader_objects GLeeEnabled(&_GLEE_ARB_shader_objects) #define GLEE_ARB_vertex_shader GLeeEnabled(&_GLEE_ARB_vertex_shader) #define GLEE_ARB_fragment_shader GLeeEnabled(&_GLEE_ARB_fragment_shader) #define GLEE_ARB_shading_language_100 GLeeEnabled(&_GLEE_ARB_shading_language_100) #define GLEE_ARB_texture_non_power_of_two GLeeEnabled(&_GLEE_ARB_texture_non_power_of_two) #define GLEE_ARB_point_sprite GLeeEnabled(&_GLEE_ARB_point_sprite) #define GLEE_ARB_fragment_program_shadow GLeeEnabled(&_GLEE_ARB_fragment_program_shadow) #define GLEE_ARB_draw_buffers GLeeEnabled(&_GLEE_ARB_draw_buffers) #define GLEE_ARB_texture_rectangle GLeeEnabled(&_GLEE_ARB_texture_rectangle) #define GLEE_ARB_color_buffer_float GLeeEnabled(&_GLEE_ARB_color_buffer_float) #define GLEE_ARB_half_float_pixel GLeeEnabled(&_GLEE_ARB_half_float_pixel) #define GLEE_ARB_texture_float GLeeEnabled(&_GLEE_ARB_texture_float) #define GLEE_ARB_pixel_buffer_object GLeeEnabled(&_GLEE_ARB_pixel_buffer_object) #define GLEE_ARB_depth_buffer_float GLeeEnabled(&_GLEE_ARB_depth_buffer_float) #define GLEE_ARB_draw_instanced GLeeEnabled(&_GLEE_ARB_draw_instanced) #define GLEE_ARB_framebuffer_object GLeeEnabled(&_GLEE_ARB_framebuffer_object) #define GLEE_ARB_framebuffer_sRGB GLeeEnabled(&_GLEE_ARB_framebuffer_sRGB) #define GLEE_ARB_geometry_shader4 GLeeEnabled(&_GLEE_ARB_geometry_shader4) #define GLEE_ARB_half_float_vertex GLeeEnabled(&_GLEE_ARB_half_float_vertex) #define GLEE_ARB_instanced_arrays GLeeEnabled(&_GLEE_ARB_instanced_arrays) #define GLEE_ARB_map_buffer_range GLeeEnabled(&_GLEE_ARB_map_buffer_range) #define GLEE_ARB_texture_buffer_object GLeeEnabled(&_GLEE_ARB_texture_buffer_object) #define GLEE_ARB_texture_compression_rgtc GLeeEnabled(&_GLEE_ARB_texture_compression_rgtc) #define GLEE_ARB_texture_rg GLeeEnabled(&_GLEE_ARB_texture_rg) #define GLEE_ARB_vertex_array_object GLeeEnabled(&_GLEE_ARB_vertex_array_object) #define GLEE_ARB_uniform_buffer_object GLeeEnabled(&_GLEE_ARB_uniform_buffer_object) #define GLEE_ARB_compatibility GLeeEnabled(&_GLEE_ARB_compatibility) #define GLEE_ARB_copy_buffer GLeeEnabled(&_GLEE_ARB_copy_buffer) #define GLEE_ARB_shader_texture_lod GLeeEnabled(&_GLEE_ARB_shader_texture_lod) #define GLEE_ARB_depth_clamp GLeeEnabled(&_GLEE_ARB_depth_clamp) #define GLEE_ARB_draw_elements_base_vertex GLeeEnabled(&_GLEE_ARB_draw_elements_base_vertex) #define GLEE_ARB_fragment_coord_conventions GLeeEnabled(&_GLEE_ARB_fragment_coord_conventions) #define GLEE_ARB_provoking_vertex GLeeEnabled(&_GLEE_ARB_provoking_vertex) #define GLEE_ARB_seamless_cube_map GLeeEnabled(&_GLEE_ARB_seamless_cube_map) #define GLEE_ARB_sync GLeeEnabled(&_GLEE_ARB_sync) #define GLEE_ARB_texture_multisample GLeeEnabled(&_GLEE_ARB_texture_multisample) #define GLEE_ARB_vertex_array_bgra GLeeEnabled(&_GLEE_ARB_vertex_array_bgra) #define GLEE_ARB_draw_buffers_blend GLeeEnabled(&_GLEE_ARB_draw_buffers_blend) #define GLEE_ARB_sample_shading GLeeEnabled(&_GLEE_ARB_sample_shading) #define GLEE_ARB_texture_cube_map_array GLeeEnabled(&_GLEE_ARB_texture_cube_map_array) #define GLEE_ARB_texture_gather GLeeEnabled(&_GLEE_ARB_texture_gather) #define GLEE_ARB_texture_query_lod GLeeEnabled(&_GLEE_ARB_texture_query_lod) #define GLEE_ARB_shading_language_include GLeeEnabled(&_GLEE_ARB_shading_language_include) #define GLEE_ARB_texture_compression_bptc GLeeEnabled(&_GLEE_ARB_texture_compression_bptc) #define GLEE_ARB_blend_func_extended GLeeEnabled(&_GLEE_ARB_blend_func_extended) #define GLEE_ARB_explicit_attrib_location GLeeEnabled(&_GLEE_ARB_explicit_attrib_location) #define GLEE_ARB_occlusion_query2 GLeeEnabled(&_GLEE_ARB_occlusion_query2) #define GLEE_ARB_sampler_objects GLeeEnabled(&_GLEE_ARB_sampler_objects) #define GLEE_ARB_shader_bit_encoding GLeeEnabled(&_GLEE_ARB_shader_bit_encoding) #define GLEE_ARB_texture_rgb10_a2ui GLeeEnabled(&_GLEE_ARB_texture_rgb10_a2ui) #define GLEE_ARB_texture_swizzle GLeeEnabled(&_GLEE_ARB_texture_swizzle) #define GLEE_ARB_timer_query GLeeEnabled(&_GLEE_ARB_timer_query) #define GLEE_ARB_vertex_type_2_10_10_10_rev GLeeEnabled(&_GLEE_ARB_vertex_type_2_10_10_10_rev) #define GLEE_ARB_draw_indirect GLeeEnabled(&_GLEE_ARB_draw_indirect) #define GLEE_ARB_gpu_shader5 GLeeEnabled(&_GLEE_ARB_gpu_shader5) #define GLEE_ARB_gpu_shader_fp64 GLeeEnabled(&_GLEE_ARB_gpu_shader_fp64) #define GLEE_ARB_shader_subroutine GLeeEnabled(&_GLEE_ARB_shader_subroutine) #define GLEE_ARB_tessellation_shader GLeeEnabled(&_GLEE_ARB_tessellation_shader) #define GLEE_ARB_texture_buffer_object_rgb32 GLeeEnabled(&_GLEE_ARB_texture_buffer_object_rgb32) #define GLEE_ARB_transform_feedback2 GLeeEnabled(&_GLEE_ARB_transform_feedback2) #define GLEE_ARB_transform_feedback3 GLeeEnabled(&_GLEE_ARB_transform_feedback3) #define GLEE_ARB_ES2_compatibility GLeeEnabled(&_GLEE_ARB_ES2_compatibility) #define GLEE_ARB_get_program_binary GLeeEnabled(&_GLEE_ARB_get_program_binary) #define GLEE_ARB_separate_shader_objects GLeeEnabled(&_GLEE_ARB_separate_shader_objects) #define GLEE_ARB_shader_precision GLeeEnabled(&_GLEE_ARB_shader_precision) #define GLEE_ARB_vertex_attrib_64bit GLeeEnabled(&_GLEE_ARB_vertex_attrib_64bit) #define GLEE_ARB_viewport_array GLeeEnabled(&_GLEE_ARB_viewport_array) #define GLEE_ARB_cl_event GLeeEnabled(&_GLEE_ARB_cl_event) #define GLEE_ARB_debug_output GLeeEnabled(&_GLEE_ARB_debug_output) #define GLEE_ARB_robustness GLeeEnabled(&_GLEE_ARB_robustness) #define GLEE_ARB_shader_stencil_export GLeeEnabled(&_GLEE_ARB_shader_stencil_export) #define GLEE_ARB_base_instance GLeeEnabled(&_GLEE_ARB_base_instance) #define GLEE_ARB_shading_language_420pack GLeeEnabled(&_GLEE_ARB_shading_language_420pack) #define GLEE_ARB_transform_feedback_instanced GLeeEnabled(&_GLEE_ARB_transform_feedback_instanced) #define GLEE_ARB_compressed_texture_pixel_storage GLeeEnabled(&_GLEE_ARB_compressed_texture_pixel_storage) #define GLEE_ARB_conservative_depth GLeeEnabled(&_GLEE_ARB_conservative_depth) #define GLEE_ARB_internalformat_query GLeeEnabled(&_GLEE_ARB_internalformat_query) #define GLEE_ARB_map_buffer_alignment GLeeEnabled(&_GLEE_ARB_map_buffer_alignment) #define GLEE_ARB_shader_atomic_counters GLeeEnabled(&_GLEE_ARB_shader_atomic_counters) #define GLEE_ARB_shader_image_load_store GLeeEnabled(&_GLEE_ARB_shader_image_load_store) #define GLEE_ARB_shading_language_packing GLeeEnabled(&_GLEE_ARB_shading_language_packing) #define GLEE_ARB_texture_storage GLeeEnabled(&_GLEE_ARB_texture_storage) #define GLEE_KHR_texture_compression_astc_ldr GLeeEnabled(&_GLEE_KHR_texture_compression_astc_ldr) #define GLEE_KHR_debug GLeeEnabled(&_GLEE_KHR_debug) #define GLEE_ARB_arrays_of_arrays GLeeEnabled(&_GLEE_ARB_arrays_of_arrays) #define GLEE_ARB_clear_buffer_object GLeeEnabled(&_GLEE_ARB_clear_buffer_object) #define GLEE_ARB_compute_shader GLeeEnabled(&_GLEE_ARB_compute_shader) #define GLEE_ARB_copy_image GLeeEnabled(&_GLEE_ARB_copy_image) #define GLEE_ARB_texture_view GLeeEnabled(&_GLEE_ARB_texture_view) #define GLEE_ARB_vertex_attrib_binding GLeeEnabled(&_GLEE_ARB_vertex_attrib_binding) #define GLEE_ARB_robustness_isolation GLeeEnabled(&_GLEE_ARB_robustness_isolation) #define GLEE_ARB_ES3_compatibility GLeeEnabled(&_GLEE_ARB_ES3_compatibility) #define GLEE_ARB_explicit_uniform_location GLeeEnabled(&_GLEE_ARB_explicit_uniform_location) #define GLEE_ARB_fragment_layer_viewport GLeeEnabled(&_GLEE_ARB_fragment_layer_viewport) #define GLEE_ARB_framebuffer_no_attachments GLeeEnabled(&_GLEE_ARB_framebuffer_no_attachments) #define GLEE_ARB_internalformat_query2 GLeeEnabled(&_GLEE_ARB_internalformat_query2) #define GLEE_ARB_invalidate_subdata GLeeEnabled(&_GLEE_ARB_invalidate_subdata) #define GLEE_ARB_multi_draw_indirect GLeeEnabled(&_GLEE_ARB_multi_draw_indirect) #define GLEE_ARB_program_interface_query GLeeEnabled(&_GLEE_ARB_program_interface_query) #define GLEE_ARB_robust_buffer_access_behavior GLeeEnabled(&_GLEE_ARB_robust_buffer_access_behavior) #define GLEE_ARB_shader_image_size GLeeEnabled(&_GLEE_ARB_shader_image_size) #define GLEE_ARB_shader_storage_buffer_object GLeeEnabled(&_GLEE_ARB_shader_storage_buffer_object) #define GLEE_ARB_stencil_texturing GLeeEnabled(&_GLEE_ARB_stencil_texturing) #define GLEE_ARB_texture_buffer_range GLeeEnabled(&_GLEE_ARB_texture_buffer_range) #define GLEE_ARB_texture_query_levels GLeeEnabled(&_GLEE_ARB_texture_query_levels) #define GLEE_ARB_texture_storage_multisample GLeeEnabled(&_GLEE_ARB_texture_storage_multisample) #define GLEE_EXT_abgr GLeeEnabled(&_GLEE_EXT_abgr) #define GLEE_EXT_blend_color GLeeEnabled(&_GLEE_EXT_blend_color) #define GLEE_EXT_polygon_offset GLeeEnabled(&_GLEE_EXT_polygon_offset) #define GLEE_EXT_texture GLeeEnabled(&_GLEE_EXT_texture) #define GLEE_EXT_texture3D GLeeEnabled(&_GLEE_EXT_texture3D) #define GLEE_SGIS_texture_filter4 GLeeEnabled(&_GLEE_SGIS_texture_filter4) #define GLEE_EXT_subtexture GLeeEnabled(&_GLEE_EXT_subtexture) #define GLEE_EXT_copy_texture GLeeEnabled(&_GLEE_EXT_copy_texture) #define GLEE_EXT_histogram GLeeEnabled(&_GLEE_EXT_histogram) #define GLEE_EXT_convolution GLeeEnabled(&_GLEE_EXT_convolution) #define GLEE_SGI_color_matrix GLeeEnabled(&_GLEE_SGI_color_matrix) #define GLEE_SGI_color_table GLeeEnabled(&_GLEE_SGI_color_table) #define GLEE_SGIS_pixel_texture GLeeEnabled(&_GLEE_SGIS_pixel_texture) #define GLEE_SGIX_pixel_texture GLeeEnabled(&_GLEE_SGIX_pixel_texture) #define GLEE_SGIS_texture4D GLeeEnabled(&_GLEE_SGIS_texture4D) #define GLEE_SGI_texture_color_table GLeeEnabled(&_GLEE_SGI_texture_color_table) #define GLEE_EXT_cmyka GLeeEnabled(&_GLEE_EXT_cmyka) #define GLEE_EXT_texture_object GLeeEnabled(&_GLEE_EXT_texture_object) #define GLEE_SGIS_detail_texture GLeeEnabled(&_GLEE_SGIS_detail_texture) #define GLEE_SGIS_sharpen_texture GLeeEnabled(&_GLEE_SGIS_sharpen_texture) #define GLEE_EXT_packed_pixels GLeeEnabled(&_GLEE_EXT_packed_pixels) #define GLEE_SGIS_texture_lod GLeeEnabled(&_GLEE_SGIS_texture_lod) #define GLEE_SGIS_multisample GLeeEnabled(&_GLEE_SGIS_multisample) #define GLEE_EXT_rescale_normal GLeeEnabled(&_GLEE_EXT_rescale_normal) #define GLEE_EXT_vertex_array GLeeEnabled(&_GLEE_EXT_vertex_array) #define GLEE_EXT_misc_attribute GLeeEnabled(&_GLEE_EXT_misc_attribute) #define GLEE_SGIS_generate_mipmap GLeeEnabled(&_GLEE_SGIS_generate_mipmap) #define GLEE_SGIX_clipmap GLeeEnabled(&_GLEE_SGIX_clipmap) #define GLEE_SGIX_shadow GLeeEnabled(&_GLEE_SGIX_shadow) #define GLEE_SGIS_texture_edge_clamp GLeeEnabled(&_GLEE_SGIS_texture_edge_clamp) #define GLEE_SGIS_texture_border_clamp GLeeEnabled(&_GLEE_SGIS_texture_border_clamp) #define GLEE_EXT_blend_minmax GLeeEnabled(&_GLEE_EXT_blend_minmax) #define GLEE_EXT_blend_subtract GLeeEnabled(&_GLEE_EXT_blend_subtract) #define GLEE_EXT_blend_logic_op GLeeEnabled(&_GLEE_EXT_blend_logic_op) #define GLEE_SGIX_interlace GLeeEnabled(&_GLEE_SGIX_interlace) #define GLEE_SGIX_pixel_tiles GLeeEnabled(&_GLEE_SGIX_pixel_tiles) #define GLEE_SGIS_texture_select GLeeEnabled(&_GLEE_SGIS_texture_select) #define GLEE_SGIX_sprite GLeeEnabled(&_GLEE_SGIX_sprite) #define GLEE_SGIX_texture_multi_buffer GLeeEnabled(&_GLEE_SGIX_texture_multi_buffer) #define GLEE_EXT_point_parameters GLeeEnabled(&_GLEE_EXT_point_parameters) #define GLEE_SGIS_point_parameters GLeeEnabled(&_GLEE_SGIS_point_parameters) #define GLEE_SGIX_instruments GLeeEnabled(&_GLEE_SGIX_instruments) #define GLEE_SGIX_texture_scale_bias GLeeEnabled(&_GLEE_SGIX_texture_scale_bias) #define GLEE_SGIX_framezoom GLeeEnabled(&_GLEE_SGIX_framezoom) #define GLEE_SGIX_tag_sample_buffer GLeeEnabled(&_GLEE_SGIX_tag_sample_buffer) #define GLEE_FfdMaskSGIX GLeeEnabled(&_GLEE_FfdMaskSGIX) #define GLEE_SGIX_polynomial_ffd GLeeEnabled(&_GLEE_SGIX_polynomial_ffd) #define GLEE_SGIX_reference_plane GLeeEnabled(&_GLEE_SGIX_reference_plane) #define GLEE_SGIX_flush_raster GLeeEnabled(&_GLEE_SGIX_flush_raster) #define GLEE_SGIX_depth_texture GLeeEnabled(&_GLEE_SGIX_depth_texture) #define GLEE_SGIS_fog_function GLeeEnabled(&_GLEE_SGIS_fog_function) #define GLEE_SGIX_fog_offset GLeeEnabled(&_GLEE_SGIX_fog_offset) #define GLEE_HP_image_transform GLeeEnabled(&_GLEE_HP_image_transform) #define GLEE_HP_convolution_border_modes GLeeEnabled(&_GLEE_HP_convolution_border_modes) #define GLEE_INGR_palette_buffer GLeeEnabled(&_GLEE_INGR_palette_buffer) #define GLEE_SGIX_texture_add_env GLeeEnabled(&_GLEE_SGIX_texture_add_env) #define GLEE_EXT_color_subtable GLeeEnabled(&_GLEE_EXT_color_subtable) #define GLEE_PGI_vertex_hints GLeeEnabled(&_GLEE_PGI_vertex_hints) #define GLEE_PGI_misc_hints GLeeEnabled(&_GLEE_PGI_misc_hints) #define GLEE_EXT_paletted_texture GLeeEnabled(&_GLEE_EXT_paletted_texture) #define GLEE_EXT_clip_volume_hint GLeeEnabled(&_GLEE_EXT_clip_volume_hint) #define GLEE_SGIX_list_priority GLeeEnabled(&_GLEE_SGIX_list_priority) #define GLEE_SGIX_ir_instrument1 GLeeEnabled(&_GLEE_SGIX_ir_instrument1) #define GLEE_SGIX_calligraphic_fragment GLeeEnabled(&_GLEE_SGIX_calligraphic_fragment) #define GLEE_SGIX_texture_lod_bias GLeeEnabled(&_GLEE_SGIX_texture_lod_bias) #define GLEE_SGIX_shadow_ambient GLeeEnabled(&_GLEE_SGIX_shadow_ambient) #define GLEE_EXT_index_texture GLeeEnabled(&_GLEE_EXT_index_texture) #define GLEE_EXT_index_material GLeeEnabled(&_GLEE_EXT_index_material) #define GLEE_EXT_index_func GLeeEnabled(&_GLEE_EXT_index_func) #define GLEE_EXT_index_array_formats GLeeEnabled(&_GLEE_EXT_index_array_formats) #define GLEE_EXT_compiled_vertex_array GLeeEnabled(&_GLEE_EXT_compiled_vertex_array) #define GLEE_EXT_cull_vertex GLeeEnabled(&_GLEE_EXT_cull_vertex) #define GLEE_SGIX_ycrcb GLeeEnabled(&_GLEE_SGIX_ycrcb) #define GLEE_SGIX_fragment_lighting GLeeEnabled(&_GLEE_SGIX_fragment_lighting) #define GLEE_IBM_rasterpos_clip GLeeEnabled(&_GLEE_IBM_rasterpos_clip) #define GLEE_HP_texture_lighting GLeeEnabled(&_GLEE_HP_texture_lighting) #define GLEE_EXT_draw_range_elements GLeeEnabled(&_GLEE_EXT_draw_range_elements) #define GLEE_WIN_phong_shading GLeeEnabled(&_GLEE_WIN_phong_shading) #define GLEE_WIN_specular_fog GLeeEnabled(&_GLEE_WIN_specular_fog) #define GLEE_EXT_light_texture GLeeEnabled(&_GLEE_EXT_light_texture) #define GLEE_SGIX_blend_alpha_minmax GLeeEnabled(&_GLEE_SGIX_blend_alpha_minmax) #define GLEE_SGIX_impact_pixel_texture GLeeEnabled(&_GLEE_SGIX_impact_pixel_texture) #define GLEE_EXT_bgra GLeeEnabled(&_GLEE_EXT_bgra) #define GLEE_SGIX_async GLeeEnabled(&_GLEE_SGIX_async) #define GLEE_SGIX_async_pixel GLeeEnabled(&_GLEE_SGIX_async_pixel) #define GLEE_SGIX_async_histogram GLeeEnabled(&_GLEE_SGIX_async_histogram) #define GLEE_INTEL_texture_scissor GLeeEnabled(&_GLEE_INTEL_texture_scissor) #define GLEE_INTEL_parallel_arrays GLeeEnabled(&_GLEE_INTEL_parallel_arrays) #define GLEE_HP_occlusion_test GLeeEnabled(&_GLEE_HP_occlusion_test) #define GLEE_EXT_pixel_transform GLeeEnabled(&_GLEE_EXT_pixel_transform) #define GLEE_EXT_pixel_transform_color_table GLeeEnabled(&_GLEE_EXT_pixel_transform_color_table) #define GLEE_EXT_shared_texture_palette GLeeEnabled(&_GLEE_EXT_shared_texture_palette) #define GLEE_EXT_separate_specular_color GLeeEnabled(&_GLEE_EXT_separate_specular_color) #define GLEE_EXT_secondary_color GLeeEnabled(&_GLEE_EXT_secondary_color) #define GLEE_EXT_texture_perturb_normal GLeeEnabled(&_GLEE_EXT_texture_perturb_normal) #define GLEE_EXT_multi_draw_arrays GLeeEnabled(&_GLEE_EXT_multi_draw_arrays) #define GLEE_EXT_fog_coord GLeeEnabled(&_GLEE_EXT_fog_coord) #define GLEE_REND_screen_coordinates GLeeEnabled(&_GLEE_REND_screen_coordinates) #define GLEE_EXT_coordinate_frame GLeeEnabled(&_GLEE_EXT_coordinate_frame) #define GLEE_EXT_texture_env_combine GLeeEnabled(&_GLEE_EXT_texture_env_combine) #define GLEE_APPLE_specular_vector GLeeEnabled(&_GLEE_APPLE_specular_vector) #define GLEE_APPLE_transform_hint GLeeEnabled(&_GLEE_APPLE_transform_hint) #define GLEE_SGIX_fog_scale GLeeEnabled(&_GLEE_SGIX_fog_scale) #define GLEE_SUNX_constant_data GLeeEnabled(&_GLEE_SUNX_constant_data) #define GLEE_SUN_global_alpha GLeeEnabled(&_GLEE_SUN_global_alpha) #define GLEE_SUN_triangle_list GLeeEnabled(&_GLEE_SUN_triangle_list) #define GLEE_SUN_vertex GLeeEnabled(&_GLEE_SUN_vertex) #define GLEE_EXT_blend_func_separate GLeeEnabled(&_GLEE_EXT_blend_func_separate) #define GLEE_INGR_color_clamp GLeeEnabled(&_GLEE_INGR_color_clamp) #define GLEE_INGR_interlace_read GLeeEnabled(&_GLEE_INGR_interlace_read) #define GLEE_EXT_stencil_wrap GLeeEnabled(&_GLEE_EXT_stencil_wrap) #define GLEE_EXT_422_pixels GLeeEnabled(&_GLEE_EXT_422_pixels) #define GLEE_NV_texgen_reflection GLeeEnabled(&_GLEE_NV_texgen_reflection) #define GLEE_EXT_texture_cube_map GLeeEnabled(&_GLEE_EXT_texture_cube_map) #define GLEE_SUN_convolution_border_modes GLeeEnabled(&_GLEE_SUN_convolution_border_modes) #define GLEE_EXT_texture_env_add GLeeEnabled(&_GLEE_EXT_texture_env_add) #define GLEE_EXT_texture_lod_bias GLeeEnabled(&_GLEE_EXT_texture_lod_bias) #define GLEE_EXT_texture_filter_anisotropic GLeeEnabled(&_GLEE_EXT_texture_filter_anisotropic) #define GLEE_EXT_vertex_weighting GLeeEnabled(&_GLEE_EXT_vertex_weighting) #define GLEE_NV_light_max_exponent GLeeEnabled(&_GLEE_NV_light_max_exponent) #define GLEE_NV_vertex_array_range GLeeEnabled(&_GLEE_NV_vertex_array_range) #define GLEE_NV_register_combiners GLeeEnabled(&_GLEE_NV_register_combiners) #define GLEE_NV_fog_distance GLeeEnabled(&_GLEE_NV_fog_distance) #define GLEE_NV_texgen_emboss GLeeEnabled(&_GLEE_NV_texgen_emboss) #define GLEE_NV_blend_square GLeeEnabled(&_GLEE_NV_blend_square) #define GLEE_NV_texture_env_combine4 GLeeEnabled(&_GLEE_NV_texture_env_combine4) #define GLEE_MESA_resize_buffers GLeeEnabled(&_GLEE_MESA_resize_buffers) #define GLEE_MESA_window_pos GLeeEnabled(&_GLEE_MESA_window_pos) #define GLEE_EXT_texture_compression_s3tc GLeeEnabled(&_GLEE_EXT_texture_compression_s3tc) #define GLEE_IBM_cull_vertex GLeeEnabled(&_GLEE_IBM_cull_vertex) #define GLEE_IBM_multimode_draw_arrays GLeeEnabled(&_GLEE_IBM_multimode_draw_arrays) #define GLEE_IBM_vertex_array_lists GLeeEnabled(&_GLEE_IBM_vertex_array_lists) #define GLEE_SGIX_subsample GLeeEnabled(&_GLEE_SGIX_subsample) #define GLEE_SGIX_ycrcb_subsample GLeeEnabled(&_GLEE_SGIX_ycrcb_subsample) #define GLEE_SGIX_ycrcba GLeeEnabled(&_GLEE_SGIX_ycrcba) #define GLEE_SGI_depth_pass_instrument GLeeEnabled(&_GLEE_SGI_depth_pass_instrument) #define GLEE_3DFX_texture_compression_FXT1 GLeeEnabled(&_GLEE_3DFX_texture_compression_FXT1) #define GLEE_3DFX_multisample GLeeEnabled(&_GLEE_3DFX_multisample) #define GLEE_3DFX_tbuffer GLeeEnabled(&_GLEE_3DFX_tbuffer) #define GLEE_EXT_multisample GLeeEnabled(&_GLEE_EXT_multisample) #define GLEE_SGIX_vertex_preclip GLeeEnabled(&_GLEE_SGIX_vertex_preclip) #define GLEE_SGIX_convolution_accuracy GLeeEnabled(&_GLEE_SGIX_convolution_accuracy) #define GLEE_SGIX_resample GLeeEnabled(&_GLEE_SGIX_resample) #define GLEE_SGIS_point_line_texgen GLeeEnabled(&_GLEE_SGIS_point_line_texgen) #define GLEE_SGIS_texture_color_mask GLeeEnabled(&_GLEE_SGIS_texture_color_mask) #define GLEE_EXT_texture_env_dot3 GLeeEnabled(&_GLEE_EXT_texture_env_dot3) #define GLEE_ATI_texture_mirror_once GLeeEnabled(&_GLEE_ATI_texture_mirror_once) #define GLEE_NV_fence GLeeEnabled(&_GLEE_NV_fence) #define GLEE_IBM_texture_mirrored_repeat GLeeEnabled(&_GLEE_IBM_texture_mirrored_repeat) #define GLEE_NV_evaluators GLeeEnabled(&_GLEE_NV_evaluators) #define GLEE_NV_packed_depth_stencil GLeeEnabled(&_GLEE_NV_packed_depth_stencil) #define GLEE_NV_register_combiners2 GLeeEnabled(&_GLEE_NV_register_combiners2) #define GLEE_NV_texture_compression_vtc GLeeEnabled(&_GLEE_NV_texture_compression_vtc) #define GLEE_NV_texture_rectangle GLeeEnabled(&_GLEE_NV_texture_rectangle) #define GLEE_NV_texture_shader GLeeEnabled(&_GLEE_NV_texture_shader) #define GLEE_NV_texture_shader2 GLeeEnabled(&_GLEE_NV_texture_shader2) #define GLEE_NV_vertex_array_range2 GLeeEnabled(&_GLEE_NV_vertex_array_range2) #define GLEE_NV_vertex_program GLeeEnabled(&_GLEE_NV_vertex_program) #define GLEE_SGIX_texture_coordinate_clamp GLeeEnabled(&_GLEE_SGIX_texture_coordinate_clamp) #define GLEE_SGIX_scalebias_hint GLeeEnabled(&_GLEE_SGIX_scalebias_hint) #define GLEE_OML_interlace GLeeEnabled(&_GLEE_OML_interlace) #define GLEE_OML_subsample GLeeEnabled(&_GLEE_OML_subsample) #define GLEE_OML_resample GLeeEnabled(&_GLEE_OML_resample) #define GLEE_NV_copy_depth_to_color GLeeEnabled(&_GLEE_NV_copy_depth_to_color) #define GLEE_ATI_envmap_bumpmap GLeeEnabled(&_GLEE_ATI_envmap_bumpmap) #define GLEE_ATI_fragment_shader GLeeEnabled(&_GLEE_ATI_fragment_shader) #define GLEE_ATI_pn_triangles GLeeEnabled(&_GLEE_ATI_pn_triangles) #define GLEE_ATI_vertex_array_object GLeeEnabled(&_GLEE_ATI_vertex_array_object) #define GLEE_EXT_vertex_shader GLeeEnabled(&_GLEE_EXT_vertex_shader) #define GLEE_ATI_vertex_streams GLeeEnabled(&_GLEE_ATI_vertex_streams) #define GLEE_ATI_element_array GLeeEnabled(&_GLEE_ATI_element_array) #define GLEE_SUN_mesh_array GLeeEnabled(&_GLEE_SUN_mesh_array) #define GLEE_SUN_slice_accum GLeeEnabled(&_GLEE_SUN_slice_accum) #define GLEE_NV_multisample_filter_hint GLeeEnabled(&_GLEE_NV_multisample_filter_hint) #define GLEE_NV_depth_clamp GLeeEnabled(&_GLEE_NV_depth_clamp) #define GLEE_NV_occlusion_query GLeeEnabled(&_GLEE_NV_occlusion_query) #define GLEE_NV_point_sprite GLeeEnabled(&_GLEE_NV_point_sprite) #define GLEE_NV_texture_shader3 GLeeEnabled(&_GLEE_NV_texture_shader3) #define GLEE_NV_vertex_program1_1 GLeeEnabled(&_GLEE_NV_vertex_program1_1) #define GLEE_EXT_shadow_funcs GLeeEnabled(&_GLEE_EXT_shadow_funcs) #define GLEE_EXT_stencil_two_side GLeeEnabled(&_GLEE_EXT_stencil_two_side) #define GLEE_ATI_text_fragment_shader GLeeEnabled(&_GLEE_ATI_text_fragment_shader) #define GLEE_APPLE_client_storage GLeeEnabled(&_GLEE_APPLE_client_storage) #define GLEE_APPLE_element_array GLeeEnabled(&_GLEE_APPLE_element_array) #define GLEE_APPLE_fence GLeeEnabled(&_GLEE_APPLE_fence) #define GLEE_APPLE_vertex_array_object GLeeEnabled(&_GLEE_APPLE_vertex_array_object) #define GLEE_APPLE_vertex_array_range GLeeEnabled(&_GLEE_APPLE_vertex_array_range) #define GLEE_APPLE_ycbcr_422 GLeeEnabled(&_GLEE_APPLE_ycbcr_422) #define GLEE_S3_s3tc GLeeEnabled(&_GLEE_S3_s3tc) #define GLEE_ATI_draw_buffers GLeeEnabled(&_GLEE_ATI_draw_buffers) #define GLEE_ATI_pixel_format_float GLeeEnabled(&_GLEE_ATI_pixel_format_float) #define GLEE_ATI_texture_env_combine3 GLeeEnabled(&_GLEE_ATI_texture_env_combine3) #define GLEE_ATI_texture_float GLeeEnabled(&_GLEE_ATI_texture_float) #define GLEE_NV_float_buffer GLeeEnabled(&_GLEE_NV_float_buffer) #define GLEE_NV_fragment_program GLeeEnabled(&_GLEE_NV_fragment_program) #define GLEE_NV_half_float GLeeEnabled(&_GLEE_NV_half_float) #define GLEE_NV_pixel_data_range GLeeEnabled(&_GLEE_NV_pixel_data_range) #define GLEE_NV_primitive_restart GLeeEnabled(&_GLEE_NV_primitive_restart) #define GLEE_NV_texture_expand_normal GLeeEnabled(&_GLEE_NV_texture_expand_normal) #define GLEE_NV_vertex_program2 GLeeEnabled(&_GLEE_NV_vertex_program2) #define GLEE_ATI_map_object_buffer GLeeEnabled(&_GLEE_ATI_map_object_buffer) #define GLEE_ATI_separate_stencil GLeeEnabled(&_GLEE_ATI_separate_stencil) #define GLEE_ATI_vertex_attrib_array_object GLeeEnabled(&_GLEE_ATI_vertex_attrib_array_object) #define GLEE_OES_byte_coordinates GLeeEnabled(&_GLEE_OES_byte_coordinates) #define GLEE_OES_fixed_point GLeeEnabled(&_GLEE_OES_fixed_point) #define GLEE_OES_single_precision GLeeEnabled(&_GLEE_OES_single_precision) #define GLEE_OES_compressed_paletted_texture GLeeEnabled(&_GLEE_OES_compressed_paletted_texture) #define GLEE_OES_read_format GLeeEnabled(&_GLEE_OES_read_format) #define GLEE_OES_query_matrix GLeeEnabled(&_GLEE_OES_query_matrix) #define GLEE_EXT_depth_bounds_test GLeeEnabled(&_GLEE_EXT_depth_bounds_test) #define GLEE_EXT_texture_mirror_clamp GLeeEnabled(&_GLEE_EXT_texture_mirror_clamp) #define GLEE_EXT_blend_equation_separate GLeeEnabled(&_GLEE_EXT_blend_equation_separate) #define GLEE_MESA_pack_invert GLeeEnabled(&_GLEE_MESA_pack_invert) #define GLEE_MESA_ycbcr_texture GLeeEnabled(&_GLEE_MESA_ycbcr_texture) #define GLEE_EXT_pixel_buffer_object GLeeEnabled(&_GLEE_EXT_pixel_buffer_object) #define GLEE_NV_fragment_program_option GLeeEnabled(&_GLEE_NV_fragment_program_option) #define GLEE_NV_fragment_program2 GLeeEnabled(&_GLEE_NV_fragment_program2) #define GLEE_NV_vertex_program2_option GLeeEnabled(&_GLEE_NV_vertex_program2_option) #define GLEE_NV_vertex_program3 GLeeEnabled(&_GLEE_NV_vertex_program3) #define GLEE_EXT_framebuffer_object GLeeEnabled(&_GLEE_EXT_framebuffer_object) #define GLEE_GREMEDY_string_marker GLeeEnabled(&_GLEE_GREMEDY_string_marker) #define GLEE_EXT_packed_depth_stencil GLeeEnabled(&_GLEE_EXT_packed_depth_stencil) #define GLEE_EXT_stencil_clear_tag GLeeEnabled(&_GLEE_EXT_stencil_clear_tag) #define GLEE_EXT_texture_sRGB GLeeEnabled(&_GLEE_EXT_texture_sRGB) #define GLEE_EXT_framebuffer_blit GLeeEnabled(&_GLEE_EXT_framebuffer_blit) #define GLEE_EXT_framebuffer_multisample GLeeEnabled(&_GLEE_EXT_framebuffer_multisample) #define GLEE_MESAX_texture_stack GLeeEnabled(&_GLEE_MESAX_texture_stack) #define GLEE_EXT_timer_query GLeeEnabled(&_GLEE_EXT_timer_query) #define GLEE_EXT_gpu_program_parameters GLeeEnabled(&_GLEE_EXT_gpu_program_parameters) #define GLEE_APPLE_flush_buffer_range GLeeEnabled(&_GLEE_APPLE_flush_buffer_range) #define GLEE_EXT_gpu_shader4 GLeeEnabled(&_GLEE_EXT_gpu_shader4) #define GLEE_EXT_draw_instanced GLeeEnabled(&_GLEE_EXT_draw_instanced) #define GLEE_EXT_packed_float GLeeEnabled(&_GLEE_EXT_packed_float) #define GLEE_EXT_texture_array GLeeEnabled(&_GLEE_EXT_texture_array) #define GLEE_EXT_texture_buffer_object GLeeEnabled(&_GLEE_EXT_texture_buffer_object) #define GLEE_EXT_texture_compression_latc GLeeEnabled(&_GLEE_EXT_texture_compression_latc) #define GLEE_EXT_texture_compression_rgtc GLeeEnabled(&_GLEE_EXT_texture_compression_rgtc) #define GLEE_EXT_texture_shared_exponent GLeeEnabled(&_GLEE_EXT_texture_shared_exponent) #define GLEE_NV_depth_buffer_float GLeeEnabled(&_GLEE_NV_depth_buffer_float) #define GLEE_NV_framebuffer_multisample_coverage GLeeEnabled(&_GLEE_NV_framebuffer_multisample_coverage) #define GLEE_EXT_framebuffer_sRGB GLeeEnabled(&_GLEE_EXT_framebuffer_sRGB) #define GLEE_NV_geometry_shader4 GLeeEnabled(&_GLEE_NV_geometry_shader4) #define GLEE_NV_parameter_buffer_object GLeeEnabled(&_GLEE_NV_parameter_buffer_object) #define GLEE_EXT_draw_buffers2 GLeeEnabled(&_GLEE_EXT_draw_buffers2) #define GLEE_NV_transform_feedback GLeeEnabled(&_GLEE_NV_transform_feedback) #define GLEE_EXT_bindable_uniform GLeeEnabled(&_GLEE_EXT_bindable_uniform) #define GLEE_EXT_texture_integer GLeeEnabled(&_GLEE_EXT_texture_integer) #define GLEE_GREMEDY_frame_terminator GLeeEnabled(&_GLEE_GREMEDY_frame_terminator) #define GLEE_NV_conditional_render GLeeEnabled(&_GLEE_NV_conditional_render) #define GLEE_NV_present_video GLeeEnabled(&_GLEE_NV_present_video) #define GLEE_EXT_transform_feedback GLeeEnabled(&_GLEE_EXT_transform_feedback) #define GLEE_EXT_direct_state_access GLeeEnabled(&_GLEE_EXT_direct_state_access) #define GLEE_EXT_vertex_array_bgra GLeeEnabled(&_GLEE_EXT_vertex_array_bgra) #define GLEE_EXT_texture_swizzle GLeeEnabled(&_GLEE_EXT_texture_swizzle) #define GLEE_NV_explicit_multisample GLeeEnabled(&_GLEE_NV_explicit_multisample) #define GLEE_NV_transform_feedback2 GLeeEnabled(&_GLEE_NV_transform_feedback2) #define GLEE_ATI_meminfo GLeeEnabled(&_GLEE_ATI_meminfo) #define GLEE_AMD_performance_monitor GLeeEnabled(&_GLEE_AMD_performance_monitor) #define GLEE_AMD_texture_texture4 GLeeEnabled(&_GLEE_AMD_texture_texture4) #define GLEE_AMD_vertex_shader_tesselator GLeeEnabled(&_GLEE_AMD_vertex_shader_tesselator) #define GLEE_EXT_provoking_vertex GLeeEnabled(&_GLEE_EXT_provoking_vertex) #define GLEE_EXT_texture_snorm GLeeEnabled(&_GLEE_EXT_texture_snorm) #define GLEE_AMD_draw_buffers_blend GLeeEnabled(&_GLEE_AMD_draw_buffers_blend) #define GLEE_APPLE_texture_range GLeeEnabled(&_GLEE_APPLE_texture_range) #define GLEE_APPLE_float_pixels GLeeEnabled(&_GLEE_APPLE_float_pixels) #define GLEE_APPLE_vertex_program_evaluators GLeeEnabled(&_GLEE_APPLE_vertex_program_evaluators) #define GLEE_APPLE_aux_depth_stencil GLeeEnabled(&_GLEE_APPLE_aux_depth_stencil) #define GLEE_APPLE_object_purgeable GLeeEnabled(&_GLEE_APPLE_object_purgeable) #define GLEE_APPLE_row_bytes GLeeEnabled(&_GLEE_APPLE_row_bytes) #define GLEE_APPLE_rgb_422 GLeeEnabled(&_GLEE_APPLE_rgb_422) #define GLEE_NV_video_capture GLeeEnabled(&_GLEE_NV_video_capture) #define GLEE_NV_copy_image GLeeEnabled(&_GLEE_NV_copy_image) #define GLEE_EXT_separate_shader_objects GLeeEnabled(&_GLEE_EXT_separate_shader_objects) #define GLEE_NV_parameter_buffer_object2 GLeeEnabled(&_GLEE_NV_parameter_buffer_object2) #define GLEE_NV_shader_buffer_load GLeeEnabled(&_GLEE_NV_shader_buffer_load) #define GLEE_NV_vertex_buffer_unified_memory GLeeEnabled(&_GLEE_NV_vertex_buffer_unified_memory) #define GLEE_NV_texture_barrier GLeeEnabled(&_GLEE_NV_texture_barrier) #define GLEE_AMD_shader_stencil_export GLeeEnabled(&_GLEE_AMD_shader_stencil_export) #define GLEE_AMD_seamless_cubemap_per_texture GLeeEnabled(&_GLEE_AMD_seamless_cubemap_per_texture) #define GLEE_AMD_conservative_depth GLeeEnabled(&_GLEE_AMD_conservative_depth) #define GLEE_EXT_shader_image_load_store GLeeEnabled(&_GLEE_EXT_shader_image_load_store) #define GLEE_EXT_vertex_attrib_64bit GLeeEnabled(&_GLEE_EXT_vertex_attrib_64bit) #define GLEE_NV_gpu_program5 GLeeEnabled(&_GLEE_NV_gpu_program5) #define GLEE_NV_gpu_shader5 GLeeEnabled(&_GLEE_NV_gpu_shader5) #define GLEE_NV_shader_buffer_store GLeeEnabled(&_GLEE_NV_shader_buffer_store) #define GLEE_NV_tessellation_program5 GLeeEnabled(&_GLEE_NV_tessellation_program5) #define GLEE_NV_vertex_attrib_integer_64bit GLeeEnabled(&_GLEE_NV_vertex_attrib_integer_64bit) #define GLEE_NV_multisample_coverage GLeeEnabled(&_GLEE_NV_multisample_coverage) #define GLEE_AMD_name_gen_delete GLeeEnabled(&_GLEE_AMD_name_gen_delete) #define GLEE_AMD_debug_output GLeeEnabled(&_GLEE_AMD_debug_output) #define GLEE_AMD_transform_feedback3_lines_triangles GLeeEnabled(&_GLEE_AMD_transform_feedback3_lines_triangles) #define GLEE_AMD_depth_clamp_separate GLeeEnabled(&_GLEE_AMD_depth_clamp_separate) #define GLEE_EXT_texture_sRGB_decode GLeeEnabled(&_GLEE_EXT_texture_sRGB_decode) #define GLEE_NV_texture_multisample GLeeEnabled(&_GLEE_NV_texture_multisample) #define GLEE_AMD_blend_minmax_factor GLeeEnabled(&_GLEE_AMD_blend_minmax_factor) #define GLEE_AMD_sample_positions GLeeEnabled(&_GLEE_AMD_sample_positions) #define GLEE_EXT_x11_sync_object GLeeEnabled(&_GLEE_EXT_x11_sync_object) #define GLEE_AMD_multi_draw_indirect GLeeEnabled(&_GLEE_AMD_multi_draw_indirect) #define GLEE_EXT_framebuffer_multisample_blit_scaled GLeeEnabled(&_GLEE_EXT_framebuffer_multisample_blit_scaled) #define GLEE_NV_path_rendering GLeeEnabled(&_GLEE_NV_path_rendering) #define GLEE_AMD_pinned_memory GLeeEnabled(&_GLEE_AMD_pinned_memory) #define GLEE_AMD_stencil_operation_extended GLeeEnabled(&_GLEE_AMD_stencil_operation_extended) #define GLEE_AMD_vertex_shader_viewport_index GLeeEnabled(&_GLEE_AMD_vertex_shader_viewport_index) #define GLEE_AMD_vertex_shader_layer GLeeEnabled(&_GLEE_AMD_vertex_shader_layer) #define GLEE_NV_bindless_texture GLeeEnabled(&_GLEE_NV_bindless_texture) #define GLEE_NV_shader_atomic_float GLeeEnabled(&_GLEE_NV_shader_atomic_float) #define GLEE_AMD_query_buffer_object GLeeEnabled(&_GLEE_AMD_query_buffer_object) #define GLEE_NV_compute_program5 GLeeEnabled(&_GLEE_NV_compute_program5) #define GLEE_NV_shader_storage_buffer_object GLeeEnabled(&_GLEE_NV_shader_storage_buffer_object) #define GLEE_NV_shader_atomic_counters GLeeEnabled(&_GLEE_NV_shader_atomic_counters) #define GLEE_NV_deep_texture3D GLeeEnabled(&_GLEE_NV_deep_texture3D) #define GLEE_NVX_conditional_render GLeeEnabled(&_GLEE_NVX_conditional_render) #define GLEE_AMD_sparse_texture GLeeEnabled(&_GLEE_AMD_sparse_texture) #define GLEE_AMD_shader_trinary_minmax GLeeEnabled(&_GLEE_AMD_shader_trinary_minmax) #define GLEE_INTEL_map_texture GLeeEnabled(&_GLEE_INTEL_map_texture) #define GLEE_NV_draw_texture GLeeEnabled(&_GLEE_NV_draw_texture) #define GLEE_SGIX_texture_select GLeeEnabled(&_GLEE_SGIX_texture_select) #define GLEE_INGR_blend_func_separate GLeeEnabled(&_GLEE_INGR_blend_func_separate) #define GLEE_SGIX_depth_pass_instrument GLeeEnabled(&_GLEE_SGIX_depth_pass_instrument) #define GLEE_SGIX_igloo_interface GLeeEnabled(&_GLEE_SGIX_igloo_interface) /***************************************************************** * Additional types needed for extensions *****************************************************************/ /* Used for GLSL shader text */ #ifndef GL_VERSION_2_0 typedef char GLchar; #endif #ifdef _MSC_VER #if _MSC_VER >= 1600 #include #else typedef __int32 int32_t; typedef unsigned __int32 uint32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #endif #else #include #include #endif #ifndef GL_VERSION_1_5 typedef ptrdiff_t GLintptr; typedef ptrdiff_t GLsizeiptr; #endif #ifndef GL_NV_half_float typedef unsigned short GLhalfNV; #endif #ifndef GL_ARB_vertex_buffer_object /* awful hack to work around issue with GLee and Mac OS 10.9's gltypes.h */ #if defined(__APPLE__) typedef long GLintptrARB; typedef long GLsizeiptrARB; #else typedef ptrdiff_t GLintptrARB; typedef ptrdiff_t GLsizeiptrARB; #endif #endif #ifndef GL_ARB_shader_objects #if defined(__APPLE__) typedef void *GLhandleARB; #else typedef int GLhandleARB; #endif typedef char GLcharARB; #endif #ifndef GL_EXT_timer_query typedef signed long long GLint64EXT; typedef unsigned long long GLuint64EXT; #endif #ifndef GL_ARB_sync typedef int64_t GLint64; typedef uint64_t GLuint64; typedef struct __GLsync *GLsync; #endif #ifndef GL_ARB_cl_event /* These incomplete types let us declare types compatible with OpenCL's cl_context and cl_event */ struct _cl_context; struct _cl_event; #endif #ifndef GL_ARB_debug_output typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); #endif #ifndef GL_AMD_debug_output typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); #endif #ifndef GL_KHR_debug typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); #endif #ifndef GL_NV_vdpau_interop typedef GLintptr GLvdpauSurfaceNV; #endif #ifndef GL_OES_fixed_point /* GLint must be 32 bits, a relatively safe assumption on modern CPUs */ typedef GLint GLfixed; #endif /* Platform-specific */ #ifdef _WIN32 /* WGL */ #ifndef WGL_ARB_pbuffer DECLARE_HANDLE(HPBUFFERARB); #endif #ifndef WGL_EXT_pbuffer DECLARE_HANDLE(HPBUFFEREXT); #endif #ifndef WGL_NV_video_output DECLARE_HANDLE(HPVIDEODEV); #endif #ifndef WGL_NV_present_video DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV); #endif #ifndef WGL_NV_gpu_affinity DECLARE_HANDLE(HPGPUNV); DECLARE_HANDLE(HGPUNV); typedef struct _GPU_DEVICE { DWORD cb; CHAR DeviceName[32]; CHAR DeviceString[128]; DWORD Flags; RECT rcVirtualScreen; } GPU_DEVICE, *PGPU_DEVICE; #endif #ifndef WGL_NV_video_capture DECLARE_HANDLE(HVIDEOINPUTDEVICENV); #endif #elif defined(__APPLE__) || defined(__APPLE_CC__) /* Mac OS X */ #else /* GLX */ typedef void (*__GLXextFuncPtr)(void); #ifndef GLX_ARB_get_proc_address #define GLX_ARB_get_proc_address 1 extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); extern void ( * glXGetProcAddressARB (const GLubyte *procName))(void); typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName); #endif #ifndef GLX_SGIX_fbconfig typedef XID GLXFBConfigIDSGIX; typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; #endif #ifndef GLX_SGIX_pbuffer typedef XID GLXPbufferSGIX; typedef struct { int type; unsigned long serial; Bool send_event; Display *display; GLXDrawable drawable; int event_type; int draw_type; unsigned int mask; int x, y; int width, height; int count; } GLXBufferClobberEventSGIX; #endif #ifndef GLX_SGIX_hyperpipe #define _GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80 typedef struct { char pipeName[_GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int networkId; } GLXHyperpipeNetworkSGIX; typedef struct { char pipeName[_GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int channel; unsigned int participationType; int timeSlice; } GLXHyperpipeConfigSGIX; typedef struct { char pipeName[_GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int srcXOrigin; int srcYOrigin; int srcWidth; int srcHeight; int destXOrigin; int destYOrigin; int destWidth; int destHeight; } GLXPipeRect; typedef struct { char pipeName[_GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX]; int XOrigin; int YOrigin; int maxHeight; int maxWidth; } GLXPipeRectLimits; #endif #ifndef GLX_NV_video_output typedef unsigned int GLXVideoDeviceNV; #endif // GLX_NV_video_output #ifndef GLX_NV_video_capture typedef XID GLXVideoCaptureDeviceNV; #endif // GLX_NV_video_output #endif /* end platform specific */ /* GL_VERSION_1_2 */ #ifndef GL_VERSION_1_2 #define GL_VERSION_1_2 1 #define __GLEE_GL_VERSION_1_2 1 /* Constants */ #define GL_UNSIGNED_BYTE_3_3_2 0x8032 #define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 #define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 #define GL_UNSIGNED_INT_8_8_8_8 0x8035 #define GL_UNSIGNED_INT_10_10_10_2 0x8036 #define GL_TEXTURE_BINDING_3D 0x806A #define GL_PACK_SKIP_IMAGES 0x806B #define GL_PACK_IMAGE_HEIGHT 0x806C #define GL_UNPACK_SKIP_IMAGES 0x806D #define GL_UNPACK_IMAGE_HEIGHT 0x806E #define GL_TEXTURE_3D 0x806F #define GL_PROXY_TEXTURE_3D 0x8070 #define GL_TEXTURE_DEPTH 0x8071 #define GL_TEXTURE_WRAP_R 0x8072 #define GL_MAX_3D_TEXTURE_SIZE 0x8073 #define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 #define GL_UNSIGNED_SHORT_5_6_5 0x8363 #define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 #define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 #define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 #define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 #define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 #define GL_BGR 0x80E0 #define GL_BGRA 0x80E1 #define GL_MAX_ELEMENTS_VERTICES 0x80E8 #define GL_MAX_ELEMENTS_INDICES 0x80E9 #define GL_CLAMP_TO_EDGE 0x812F #define GL_TEXTURE_MIN_LOD 0x813A #define GL_TEXTURE_MAX_LOD 0x813B #define GL_TEXTURE_BASE_LEVEL 0x813C #define GL_TEXTURE_MAX_LEVEL 0x813D #define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 #define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 #define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 #define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 #define GL_ALIASED_LINE_WIDTH_RANGE 0x846E #define GL_RESCALE_NORMAL 0x803A #define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 #define GL_SINGLE_COLOR 0x81F9 #define GL_SEPARATE_SPECULAR_COLOR 0x81FA #define GL_ALIASED_POINT_SIZE_RANGE 0x846D #ifndef GLEE_H_DEFINED_glBlendColor #define GLEE_H_DEFINED_glBlendColor typedef void (APIENTRYP GLEEPFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLEE_EXTERN GLEEPFNGLBLENDCOLORPROC GLeeFuncPtr_glBlendColor; #define glBlendColor GLeeFuncPtr_glBlendColor #endif #ifndef GLEE_H_DEFINED_glBlendEquation #define GLEE_H_DEFINED_glBlendEquation typedef void (APIENTRYP GLEEPFNGLBLENDEQUATIONPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLBLENDEQUATIONPROC GLeeFuncPtr_glBlendEquation; #define glBlendEquation GLeeFuncPtr_glBlendEquation #endif #ifndef GLEE_H_DEFINED_glDrawRangeElements #define GLEE_H_DEFINED_glDrawRangeElements typedef void (APIENTRYP GLEEPFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices); GLEE_EXTERN GLEEPFNGLDRAWRANGEELEMENTSPROC GLeeFuncPtr_glDrawRangeElements; #define glDrawRangeElements GLeeFuncPtr_glDrawRangeElements #endif #ifndef GLEE_H_DEFINED_glTexImage3D #define GLEE_H_DEFINED_glTexImage3D typedef void (APIENTRYP GLEEPFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXIMAGE3DPROC GLeeFuncPtr_glTexImage3D; #define glTexImage3D GLeeFuncPtr_glTexImage3D #endif #ifndef GLEE_H_DEFINED_glTexSubImage3D #define GLEE_H_DEFINED_glTexSubImage3D typedef void (APIENTRYP GLEEPFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXSUBIMAGE3DPROC GLeeFuncPtr_glTexSubImage3D; #define glTexSubImage3D GLeeFuncPtr_glTexSubImage3D #endif #ifndef GLEE_H_DEFINED_glCopyTexSubImage3D #define GLEE_H_DEFINED_glCopyTexSubImage3D typedef void (APIENTRYP GLEEPFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLCOPYTEXSUBIMAGE3DPROC GLeeFuncPtr_glCopyTexSubImage3D; #define glCopyTexSubImage3D GLeeFuncPtr_glCopyTexSubImage3D #endif #ifndef GLEE_H_DEFINED_glColorTable #define GLEE_H_DEFINED_glColorTable typedef void (APIENTRYP GLEEPFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table); GLEE_EXTERN GLEEPFNGLCOLORTABLEPROC GLeeFuncPtr_glColorTable; #define glColorTable GLeeFuncPtr_glColorTable #endif #ifndef GLEE_H_DEFINED_glColorTableParameterfv #define GLEE_H_DEFINED_glColorTableParameterfv typedef void (APIENTRYP GLEEPFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLCOLORTABLEPARAMETERFVPROC GLeeFuncPtr_glColorTableParameterfv; #define glColorTableParameterfv GLeeFuncPtr_glColorTableParameterfv #endif #ifndef GLEE_H_DEFINED_glColorTableParameteriv #define GLEE_H_DEFINED_glColorTableParameteriv typedef void (APIENTRYP GLEEPFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLCOLORTABLEPARAMETERIVPROC GLeeFuncPtr_glColorTableParameteriv; #define glColorTableParameteriv GLeeFuncPtr_glColorTableParameteriv #endif #ifndef GLEE_H_DEFINED_glCopyColorTable #define GLEE_H_DEFINED_glCopyColorTable typedef void (APIENTRYP GLEEPFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); GLEE_EXTERN GLEEPFNGLCOPYCOLORTABLEPROC GLeeFuncPtr_glCopyColorTable; #define glCopyColorTable GLeeFuncPtr_glCopyColorTable #endif #ifndef GLEE_H_DEFINED_glGetColorTable #define GLEE_H_DEFINED_glGetColorTable typedef void (APIENTRYP GLEEPFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid * table); GLEE_EXTERN GLEEPFNGLGETCOLORTABLEPROC GLeeFuncPtr_glGetColorTable; #define glGetColorTable GLeeFuncPtr_glGetColorTable #endif #ifndef GLEE_H_DEFINED_glGetColorTableParameterfv #define GLEE_H_DEFINED_glGetColorTableParameterfv typedef void (APIENTRYP GLEEPFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETCOLORTABLEPARAMETERFVPROC GLeeFuncPtr_glGetColorTableParameterfv; #define glGetColorTableParameterfv GLeeFuncPtr_glGetColorTableParameterfv #endif #ifndef GLEE_H_DEFINED_glGetColorTableParameteriv #define GLEE_H_DEFINED_glGetColorTableParameteriv typedef void (APIENTRYP GLEEPFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETCOLORTABLEPARAMETERIVPROC GLeeFuncPtr_glGetColorTableParameteriv; #define glGetColorTableParameteriv GLeeFuncPtr_glGetColorTableParameteriv #endif #ifndef GLEE_H_DEFINED_glColorSubTable #define GLEE_H_DEFINED_glColorSubTable typedef void (APIENTRYP GLEEPFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOLORSUBTABLEPROC GLeeFuncPtr_glColorSubTable; #define glColorSubTable GLeeFuncPtr_glColorSubTable #endif #ifndef GLEE_H_DEFINED_glCopyColorSubTable #define GLEE_H_DEFINED_glCopyColorSubTable typedef void (APIENTRYP GLEEPFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); GLEE_EXTERN GLEEPFNGLCOPYCOLORSUBTABLEPROC GLeeFuncPtr_glCopyColorSubTable; #define glCopyColorSubTable GLeeFuncPtr_glCopyColorSubTable #endif #ifndef GLEE_H_DEFINED_glConvolutionFilter1D #define GLEE_H_DEFINED_glConvolutionFilter1D typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image); GLEE_EXTERN GLEEPFNGLCONVOLUTIONFILTER1DPROC GLeeFuncPtr_glConvolutionFilter1D; #define glConvolutionFilter1D GLeeFuncPtr_glConvolutionFilter1D #endif #ifndef GLEE_H_DEFINED_glConvolutionFilter2D #define GLEE_H_DEFINED_glConvolutionFilter2D typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image); GLEE_EXTERN GLEEPFNGLCONVOLUTIONFILTER2DPROC GLeeFuncPtr_glConvolutionFilter2D; #define glConvolutionFilter2D GLeeFuncPtr_glConvolutionFilter2D #endif #ifndef GLEE_H_DEFINED_glConvolutionParameterf #define GLEE_H_DEFINED_glConvolutionParameterf typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); GLEE_EXTERN GLEEPFNGLCONVOLUTIONPARAMETERFPROC GLeeFuncPtr_glConvolutionParameterf; #define glConvolutionParameterf GLeeFuncPtr_glConvolutionParameterf #endif #ifndef GLEE_H_DEFINED_glConvolutionParameterfv #define GLEE_H_DEFINED_glConvolutionParameterfv typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLCONVOLUTIONPARAMETERFVPROC GLeeFuncPtr_glConvolutionParameterfv; #define glConvolutionParameterfv GLeeFuncPtr_glConvolutionParameterfv #endif #ifndef GLEE_H_DEFINED_glConvolutionParameteri #define GLEE_H_DEFINED_glConvolutionParameteri typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); GLEE_EXTERN GLEEPFNGLCONVOLUTIONPARAMETERIPROC GLeeFuncPtr_glConvolutionParameteri; #define glConvolutionParameteri GLeeFuncPtr_glConvolutionParameteri #endif #ifndef GLEE_H_DEFINED_glConvolutionParameteriv #define GLEE_H_DEFINED_glConvolutionParameteriv typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLCONVOLUTIONPARAMETERIVPROC GLeeFuncPtr_glConvolutionParameteriv; #define glConvolutionParameteriv GLeeFuncPtr_glConvolutionParameteriv #endif #ifndef GLEE_H_DEFINED_glCopyConvolutionFilter1D #define GLEE_H_DEFINED_glCopyConvolutionFilter1D typedef void (APIENTRYP GLEEPFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); GLEE_EXTERN GLEEPFNGLCOPYCONVOLUTIONFILTER1DPROC GLeeFuncPtr_glCopyConvolutionFilter1D; #define glCopyConvolutionFilter1D GLeeFuncPtr_glCopyConvolutionFilter1D #endif #ifndef GLEE_H_DEFINED_glCopyConvolutionFilter2D #define GLEE_H_DEFINED_glCopyConvolutionFilter2D typedef void (APIENTRYP GLEEPFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLCOPYCONVOLUTIONFILTER2DPROC GLeeFuncPtr_glCopyConvolutionFilter2D; #define glCopyConvolutionFilter2D GLeeFuncPtr_glCopyConvolutionFilter2D #endif #ifndef GLEE_H_DEFINED_glGetConvolutionFilter #define GLEE_H_DEFINED_glGetConvolutionFilter typedef void (APIENTRYP GLEEPFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid * image); GLEE_EXTERN GLEEPFNGLGETCONVOLUTIONFILTERPROC GLeeFuncPtr_glGetConvolutionFilter; #define glGetConvolutionFilter GLeeFuncPtr_glGetConvolutionFilter #endif #ifndef GLEE_H_DEFINED_glGetConvolutionParameterfv #define GLEE_H_DEFINED_glGetConvolutionParameterfv typedef void (APIENTRYP GLEEPFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETCONVOLUTIONPARAMETERFVPROC GLeeFuncPtr_glGetConvolutionParameterfv; #define glGetConvolutionParameterfv GLeeFuncPtr_glGetConvolutionParameterfv #endif #ifndef GLEE_H_DEFINED_glGetConvolutionParameteriv #define GLEE_H_DEFINED_glGetConvolutionParameteriv typedef void (APIENTRYP GLEEPFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETCONVOLUTIONPARAMETERIVPROC GLeeFuncPtr_glGetConvolutionParameteriv; #define glGetConvolutionParameteriv GLeeFuncPtr_glGetConvolutionParameteriv #endif #ifndef GLEE_H_DEFINED_glGetSeparableFilter #define GLEE_H_DEFINED_glGetSeparableFilter typedef void (APIENTRYP GLEEPFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span); GLEE_EXTERN GLEEPFNGLGETSEPARABLEFILTERPROC GLeeFuncPtr_glGetSeparableFilter; #define glGetSeparableFilter GLeeFuncPtr_glGetSeparableFilter #endif #ifndef GLEE_H_DEFINED_glSeparableFilter2D #define GLEE_H_DEFINED_glSeparableFilter2D typedef void (APIENTRYP GLEEPFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column); GLEE_EXTERN GLEEPFNGLSEPARABLEFILTER2DPROC GLeeFuncPtr_glSeparableFilter2D; #define glSeparableFilter2D GLeeFuncPtr_glSeparableFilter2D #endif #ifndef GLEE_H_DEFINED_glGetHistogram #define GLEE_H_DEFINED_glGetHistogram typedef void (APIENTRYP GLEEPFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); GLEE_EXTERN GLEEPFNGLGETHISTOGRAMPROC GLeeFuncPtr_glGetHistogram; #define glGetHistogram GLeeFuncPtr_glGetHistogram #endif #ifndef GLEE_H_DEFINED_glGetHistogramParameterfv #define GLEE_H_DEFINED_glGetHistogramParameterfv typedef void (APIENTRYP GLEEPFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETHISTOGRAMPARAMETERFVPROC GLeeFuncPtr_glGetHistogramParameterfv; #define glGetHistogramParameterfv GLeeFuncPtr_glGetHistogramParameterfv #endif #ifndef GLEE_H_DEFINED_glGetHistogramParameteriv #define GLEE_H_DEFINED_glGetHistogramParameteriv typedef void (APIENTRYP GLEEPFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETHISTOGRAMPARAMETERIVPROC GLeeFuncPtr_glGetHistogramParameteriv; #define glGetHistogramParameteriv GLeeFuncPtr_glGetHistogramParameteriv #endif #ifndef GLEE_H_DEFINED_glGetMinmax #define GLEE_H_DEFINED_glGetMinmax typedef void (APIENTRYP GLEEPFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); GLEE_EXTERN GLEEPFNGLGETMINMAXPROC GLeeFuncPtr_glGetMinmax; #define glGetMinmax GLeeFuncPtr_glGetMinmax #endif #ifndef GLEE_H_DEFINED_glGetMinmaxParameterfv #define GLEE_H_DEFINED_glGetMinmaxParameterfv typedef void (APIENTRYP GLEEPFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETMINMAXPARAMETERFVPROC GLeeFuncPtr_glGetMinmaxParameterfv; #define glGetMinmaxParameterfv GLeeFuncPtr_glGetMinmaxParameterfv #endif #ifndef GLEE_H_DEFINED_glGetMinmaxParameteriv #define GLEE_H_DEFINED_glGetMinmaxParameteriv typedef void (APIENTRYP GLEEPFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETMINMAXPARAMETERIVPROC GLeeFuncPtr_glGetMinmaxParameteriv; #define glGetMinmaxParameteriv GLeeFuncPtr_glGetMinmaxParameteriv #endif #ifndef GLEE_H_DEFINED_glHistogram #define GLEE_H_DEFINED_glHistogram typedef void (APIENTRYP GLEEPFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); GLEE_EXTERN GLEEPFNGLHISTOGRAMPROC GLeeFuncPtr_glHistogram; #define glHistogram GLeeFuncPtr_glHistogram #endif #ifndef GLEE_H_DEFINED_glMinmax #define GLEE_H_DEFINED_glMinmax typedef void (APIENTRYP GLEEPFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); GLEE_EXTERN GLEEPFNGLMINMAXPROC GLeeFuncPtr_glMinmax; #define glMinmax GLeeFuncPtr_glMinmax #endif #ifndef GLEE_H_DEFINED_glResetHistogram #define GLEE_H_DEFINED_glResetHistogram typedef void (APIENTRYP GLEEPFNGLRESETHISTOGRAMPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLRESETHISTOGRAMPROC GLeeFuncPtr_glResetHistogram; #define glResetHistogram GLeeFuncPtr_glResetHistogram #endif #ifndef GLEE_H_DEFINED_glResetMinmax #define GLEE_H_DEFINED_glResetMinmax typedef void (APIENTRYP GLEEPFNGLRESETMINMAXPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLRESETMINMAXPROC GLeeFuncPtr_glResetMinmax; #define glResetMinmax GLeeFuncPtr_glResetMinmax #endif #endif /* GL_ARB_imaging */ #ifndef GL_ARB_imaging #define GL_ARB_imaging 1 #define __GLEE_GL_ARB_imaging 1 /* Constants */ #define GL_CONSTANT_COLOR 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 #define GL_CONSTANT_ALPHA 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 #define GL_BLEND_COLOR 0x8005 #define GL_FUNC_ADD 0x8006 #define GL_MIN 0x8007 #define GL_MAX 0x8008 #define GL_BLEND_EQUATION 0x8009 #define GL_FUNC_SUBTRACT 0x800A #define GL_FUNC_REVERSE_SUBTRACT 0x800B #define GL_CONVOLUTION_1D 0x8010 #define GL_CONVOLUTION_2D 0x8011 #define GL_SEPARABLE_2D 0x8012 #define GL_CONVOLUTION_BORDER_MODE 0x8013 #define GL_CONVOLUTION_FILTER_SCALE 0x8014 #define GL_CONVOLUTION_FILTER_BIAS 0x8015 #define GL_REDUCE 0x8016 #define GL_CONVOLUTION_FORMAT 0x8017 #define GL_CONVOLUTION_WIDTH 0x8018 #define GL_CONVOLUTION_HEIGHT 0x8019 #define GL_MAX_CONVOLUTION_WIDTH 0x801A #define GL_MAX_CONVOLUTION_HEIGHT 0x801B #define GL_POST_CONVOLUTION_RED_SCALE 0x801C #define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D #define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E #define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F #define GL_POST_CONVOLUTION_RED_BIAS 0x8020 #define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 #define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 #define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 #define GL_HISTOGRAM 0x8024 #define GL_PROXY_HISTOGRAM 0x8025 #define GL_HISTOGRAM_WIDTH 0x8026 #define GL_HISTOGRAM_FORMAT 0x8027 #define GL_HISTOGRAM_RED_SIZE 0x8028 #define GL_HISTOGRAM_GREEN_SIZE 0x8029 #define GL_HISTOGRAM_BLUE_SIZE 0x802A #define GL_HISTOGRAM_ALPHA_SIZE 0x802B #define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C #define GL_HISTOGRAM_SINK 0x802D #define GL_MINMAX 0x802E #define GL_MINMAX_FORMAT 0x802F #define GL_MINMAX_SINK 0x8030 #define GL_TABLE_TOO_LARGE 0x8031 #define GL_COLOR_MATRIX 0x80B1 #define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 #define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 #define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 #define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 #define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 #define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 #define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 #define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 #define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA #define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB #define GL_COLOR_TABLE 0x80D0 #define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 #define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 #define GL_PROXY_COLOR_TABLE 0x80D3 #define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 #define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 #define GL_COLOR_TABLE_SCALE 0x80D6 #define GL_COLOR_TABLE_BIAS 0x80D7 #define GL_COLOR_TABLE_FORMAT 0x80D8 #define GL_COLOR_TABLE_WIDTH 0x80D9 #define GL_COLOR_TABLE_RED_SIZE 0x80DA #define GL_COLOR_TABLE_GREEN_SIZE 0x80DB #define GL_COLOR_TABLE_BLUE_SIZE 0x80DC #define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF #define GL_CONSTANT_BORDER 0x8151 #define GL_REPLICATE_BORDER 0x8153 #define GL_CONVOLUTION_BORDER_COLOR 0x8154 #endif /* GL_VERSION_1_3 */ #ifndef GL_VERSION_1_3 #define GL_VERSION_1_3 1 #define __GLEE_GL_VERSION_1_3 1 /* Constants */ #define GL_TEXTURE0 0x84C0 #define GL_TEXTURE1 0x84C1 #define GL_TEXTURE2 0x84C2 #define GL_TEXTURE3 0x84C3 #define GL_TEXTURE4 0x84C4 #define GL_TEXTURE5 0x84C5 #define GL_TEXTURE6 0x84C6 #define GL_TEXTURE7 0x84C7 #define GL_TEXTURE8 0x84C8 #define GL_TEXTURE9 0x84C9 #define GL_TEXTURE10 0x84CA #define GL_TEXTURE11 0x84CB #define GL_TEXTURE12 0x84CC #define GL_TEXTURE13 0x84CD #define GL_TEXTURE14 0x84CE #define GL_TEXTURE15 0x84CF #define GL_TEXTURE16 0x84D0 #define GL_TEXTURE17 0x84D1 #define GL_TEXTURE18 0x84D2 #define GL_TEXTURE19 0x84D3 #define GL_TEXTURE20 0x84D4 #define GL_TEXTURE21 0x84D5 #define GL_TEXTURE22 0x84D6 #define GL_TEXTURE23 0x84D7 #define GL_TEXTURE24 0x84D8 #define GL_TEXTURE25 0x84D9 #define GL_TEXTURE26 0x84DA #define GL_TEXTURE27 0x84DB #define GL_TEXTURE28 0x84DC #define GL_TEXTURE29 0x84DD #define GL_TEXTURE30 0x84DE #define GL_TEXTURE31 0x84DF #define GL_ACTIVE_TEXTURE 0x84E0 #define GL_MULTISAMPLE 0x809D #define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E #define GL_SAMPLE_ALPHA_TO_ONE 0x809F #define GL_SAMPLE_COVERAGE 0x80A0 #define GL_SAMPLE_BUFFERS 0x80A8 #define GL_SAMPLES 0x80A9 #define GL_SAMPLE_COVERAGE_VALUE 0x80AA #define GL_SAMPLE_COVERAGE_INVERT 0x80AB #define GL_TEXTURE_CUBE_MAP 0x8513 #define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A #define GL_PROXY_TEXTURE_CUBE_MAP 0x851B #define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C #define GL_COMPRESSED_RGB 0x84ED #define GL_COMPRESSED_RGBA 0x84EE #define GL_TEXTURE_COMPRESSION_HINT 0x84EF #define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 #define GL_TEXTURE_COMPRESSED 0x86A1 #define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 #define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 #define GL_CLAMP_TO_BORDER 0x812D #define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 #define GL_MAX_TEXTURE_UNITS 0x84E2 #define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 #define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 #define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 #define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 #define GL_MULTISAMPLE_BIT 0x20000000 #define GL_NORMAL_MAP 0x8511 #define GL_REFLECTION_MAP 0x8512 #define GL_COMPRESSED_ALPHA 0x84E9 #define GL_COMPRESSED_LUMINANCE 0x84EA #define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB #define GL_COMPRESSED_INTENSITY 0x84EC #define GL_COMBINE 0x8570 #define GL_COMBINE_RGB 0x8571 #define GL_COMBINE_ALPHA 0x8572 #define GL_SOURCE0_RGB 0x8580 #define GL_SOURCE1_RGB 0x8581 #define GL_SOURCE2_RGB 0x8582 #define GL_SOURCE0_ALPHA 0x8588 #define GL_SOURCE1_ALPHA 0x8589 #define GL_SOURCE2_ALPHA 0x858A #define GL_OPERAND0_RGB 0x8590 #define GL_OPERAND1_RGB 0x8591 #define GL_OPERAND2_RGB 0x8592 #define GL_OPERAND0_ALPHA 0x8598 #define GL_OPERAND1_ALPHA 0x8599 #define GL_OPERAND2_ALPHA 0x859A #define GL_RGB_SCALE 0x8573 #define GL_ADD_SIGNED 0x8574 #define GL_INTERPOLATE 0x8575 #define GL_SUBTRACT 0x84E7 #define GL_CONSTANT 0x8576 #define GL_PRIMARY_COLOR 0x8577 #define GL_PREVIOUS 0x8578 #define GL_DOT3_RGB 0x86AE #define GL_DOT3_RGBA 0x86AF #ifndef GLEE_H_DEFINED_glActiveTexture #define GLEE_H_DEFINED_glActiveTexture typedef void (APIENTRYP GLEEPFNGLACTIVETEXTUREPROC) (GLenum texture); GLEE_EXTERN GLEEPFNGLACTIVETEXTUREPROC GLeeFuncPtr_glActiveTexture; #define glActiveTexture GLeeFuncPtr_glActiveTexture #endif #ifndef GLEE_H_DEFINED_glSampleCoverage #define GLEE_H_DEFINED_glSampleCoverage typedef void (APIENTRYP GLEEPFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); GLEE_EXTERN GLEEPFNGLSAMPLECOVERAGEPROC GLeeFuncPtr_glSampleCoverage; #define glSampleCoverage GLeeFuncPtr_glSampleCoverage #endif #ifndef GLEE_H_DEFINED_glCompressedTexImage3D #define GLEE_H_DEFINED_glCompressedTexImage3D typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXIMAGE3DPROC GLeeFuncPtr_glCompressedTexImage3D; #define glCompressedTexImage3D GLeeFuncPtr_glCompressedTexImage3D #endif #ifndef GLEE_H_DEFINED_glCompressedTexImage2D #define GLEE_H_DEFINED_glCompressedTexImage2D typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXIMAGE2DPROC GLeeFuncPtr_glCompressedTexImage2D; #define glCompressedTexImage2D GLeeFuncPtr_glCompressedTexImage2D #endif #ifndef GLEE_H_DEFINED_glCompressedTexImage1D #define GLEE_H_DEFINED_glCompressedTexImage1D typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXIMAGE1DPROC GLeeFuncPtr_glCompressedTexImage1D; #define glCompressedTexImage1D GLeeFuncPtr_glCompressedTexImage1D #endif #ifndef GLEE_H_DEFINED_glCompressedTexSubImage3D #define GLEE_H_DEFINED_glCompressedTexSubImage3D typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXSUBIMAGE3DPROC GLeeFuncPtr_glCompressedTexSubImage3D; #define glCompressedTexSubImage3D GLeeFuncPtr_glCompressedTexSubImage3D #endif #ifndef GLEE_H_DEFINED_glCompressedTexSubImage2D #define GLEE_H_DEFINED_glCompressedTexSubImage2D typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXSUBIMAGE2DPROC GLeeFuncPtr_glCompressedTexSubImage2D; #define glCompressedTexSubImage2D GLeeFuncPtr_glCompressedTexSubImage2D #endif #ifndef GLEE_H_DEFINED_glCompressedTexSubImage1D #define GLEE_H_DEFINED_glCompressedTexSubImage1D typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXSUBIMAGE1DPROC GLeeFuncPtr_glCompressedTexSubImage1D; #define glCompressedTexSubImage1D GLeeFuncPtr_glCompressedTexSubImage1D #endif #ifndef GLEE_H_DEFINED_glGetCompressedTexImage #define GLEE_H_DEFINED_glGetCompressedTexImage typedef void (APIENTRYP GLEEPFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid * img); GLEE_EXTERN GLEEPFNGLGETCOMPRESSEDTEXIMAGEPROC GLeeFuncPtr_glGetCompressedTexImage; #define glGetCompressedTexImage GLeeFuncPtr_glGetCompressedTexImage #endif #ifndef GLEE_H_DEFINED_glClientActiveTexture #define GLEE_H_DEFINED_glClientActiveTexture typedef void (APIENTRYP GLEEPFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); GLEE_EXTERN GLEEPFNGLCLIENTACTIVETEXTUREPROC GLeeFuncPtr_glClientActiveTexture; #define glClientActiveTexture GLeeFuncPtr_glClientActiveTexture #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1d #define GLEE_H_DEFINED_glMultiTexCoord1d typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1DPROC GLeeFuncPtr_glMultiTexCoord1d; #define glMultiTexCoord1d GLeeFuncPtr_glMultiTexCoord1d #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1dv #define GLEE_H_DEFINED_glMultiTexCoord1dv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1DVPROC GLeeFuncPtr_glMultiTexCoord1dv; #define glMultiTexCoord1dv GLeeFuncPtr_glMultiTexCoord1dv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1f #define GLEE_H_DEFINED_glMultiTexCoord1f typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1FPROC GLeeFuncPtr_glMultiTexCoord1f; #define glMultiTexCoord1f GLeeFuncPtr_glMultiTexCoord1f #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1fv #define GLEE_H_DEFINED_glMultiTexCoord1fv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1FVPROC GLeeFuncPtr_glMultiTexCoord1fv; #define glMultiTexCoord1fv GLeeFuncPtr_glMultiTexCoord1fv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1i #define GLEE_H_DEFINED_glMultiTexCoord1i typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1IPROC GLeeFuncPtr_glMultiTexCoord1i; #define glMultiTexCoord1i GLeeFuncPtr_glMultiTexCoord1i #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1iv #define GLEE_H_DEFINED_glMultiTexCoord1iv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1IVPROC GLeeFuncPtr_glMultiTexCoord1iv; #define glMultiTexCoord1iv GLeeFuncPtr_glMultiTexCoord1iv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1s #define GLEE_H_DEFINED_glMultiTexCoord1s typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1SPROC GLeeFuncPtr_glMultiTexCoord1s; #define glMultiTexCoord1s GLeeFuncPtr_glMultiTexCoord1s #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1sv #define GLEE_H_DEFINED_glMultiTexCoord1sv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1SVPROC GLeeFuncPtr_glMultiTexCoord1sv; #define glMultiTexCoord1sv GLeeFuncPtr_glMultiTexCoord1sv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2d #define GLEE_H_DEFINED_glMultiTexCoord2d typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2DPROC GLeeFuncPtr_glMultiTexCoord2d; #define glMultiTexCoord2d GLeeFuncPtr_glMultiTexCoord2d #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2dv #define GLEE_H_DEFINED_glMultiTexCoord2dv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2DVPROC GLeeFuncPtr_glMultiTexCoord2dv; #define glMultiTexCoord2dv GLeeFuncPtr_glMultiTexCoord2dv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2f #define GLEE_H_DEFINED_glMultiTexCoord2f typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2FPROC GLeeFuncPtr_glMultiTexCoord2f; #define glMultiTexCoord2f GLeeFuncPtr_glMultiTexCoord2f #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2fv #define GLEE_H_DEFINED_glMultiTexCoord2fv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2FVPROC GLeeFuncPtr_glMultiTexCoord2fv; #define glMultiTexCoord2fv GLeeFuncPtr_glMultiTexCoord2fv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2i #define GLEE_H_DEFINED_glMultiTexCoord2i typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2IPROC GLeeFuncPtr_glMultiTexCoord2i; #define glMultiTexCoord2i GLeeFuncPtr_glMultiTexCoord2i #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2iv #define GLEE_H_DEFINED_glMultiTexCoord2iv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2IVPROC GLeeFuncPtr_glMultiTexCoord2iv; #define glMultiTexCoord2iv GLeeFuncPtr_glMultiTexCoord2iv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2s #define GLEE_H_DEFINED_glMultiTexCoord2s typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2SPROC GLeeFuncPtr_glMultiTexCoord2s; #define glMultiTexCoord2s GLeeFuncPtr_glMultiTexCoord2s #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2sv #define GLEE_H_DEFINED_glMultiTexCoord2sv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2SVPROC GLeeFuncPtr_glMultiTexCoord2sv; #define glMultiTexCoord2sv GLeeFuncPtr_glMultiTexCoord2sv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3d #define GLEE_H_DEFINED_glMultiTexCoord3d typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3DPROC GLeeFuncPtr_glMultiTexCoord3d; #define glMultiTexCoord3d GLeeFuncPtr_glMultiTexCoord3d #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3dv #define GLEE_H_DEFINED_glMultiTexCoord3dv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3DVPROC GLeeFuncPtr_glMultiTexCoord3dv; #define glMultiTexCoord3dv GLeeFuncPtr_glMultiTexCoord3dv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3f #define GLEE_H_DEFINED_glMultiTexCoord3f typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3FPROC GLeeFuncPtr_glMultiTexCoord3f; #define glMultiTexCoord3f GLeeFuncPtr_glMultiTexCoord3f #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3fv #define GLEE_H_DEFINED_glMultiTexCoord3fv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3FVPROC GLeeFuncPtr_glMultiTexCoord3fv; #define glMultiTexCoord3fv GLeeFuncPtr_glMultiTexCoord3fv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3i #define GLEE_H_DEFINED_glMultiTexCoord3i typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3IPROC GLeeFuncPtr_glMultiTexCoord3i; #define glMultiTexCoord3i GLeeFuncPtr_glMultiTexCoord3i #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3iv #define GLEE_H_DEFINED_glMultiTexCoord3iv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3IVPROC GLeeFuncPtr_glMultiTexCoord3iv; #define glMultiTexCoord3iv GLeeFuncPtr_glMultiTexCoord3iv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3s #define GLEE_H_DEFINED_glMultiTexCoord3s typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3SPROC GLeeFuncPtr_glMultiTexCoord3s; #define glMultiTexCoord3s GLeeFuncPtr_glMultiTexCoord3s #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3sv #define GLEE_H_DEFINED_glMultiTexCoord3sv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3SVPROC GLeeFuncPtr_glMultiTexCoord3sv; #define glMultiTexCoord3sv GLeeFuncPtr_glMultiTexCoord3sv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4d #define GLEE_H_DEFINED_glMultiTexCoord4d typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4DPROC GLeeFuncPtr_glMultiTexCoord4d; #define glMultiTexCoord4d GLeeFuncPtr_glMultiTexCoord4d #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4dv #define GLEE_H_DEFINED_glMultiTexCoord4dv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4DVPROC GLeeFuncPtr_glMultiTexCoord4dv; #define glMultiTexCoord4dv GLeeFuncPtr_glMultiTexCoord4dv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4f #define GLEE_H_DEFINED_glMultiTexCoord4f typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4FPROC GLeeFuncPtr_glMultiTexCoord4f; #define glMultiTexCoord4f GLeeFuncPtr_glMultiTexCoord4f #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4fv #define GLEE_H_DEFINED_glMultiTexCoord4fv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4FVPROC GLeeFuncPtr_glMultiTexCoord4fv; #define glMultiTexCoord4fv GLeeFuncPtr_glMultiTexCoord4fv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4i #define GLEE_H_DEFINED_glMultiTexCoord4i typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4IPROC GLeeFuncPtr_glMultiTexCoord4i; #define glMultiTexCoord4i GLeeFuncPtr_glMultiTexCoord4i #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4iv #define GLEE_H_DEFINED_glMultiTexCoord4iv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4IVPROC GLeeFuncPtr_glMultiTexCoord4iv; #define glMultiTexCoord4iv GLeeFuncPtr_glMultiTexCoord4iv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4s #define GLEE_H_DEFINED_glMultiTexCoord4s typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4SPROC GLeeFuncPtr_glMultiTexCoord4s; #define glMultiTexCoord4s GLeeFuncPtr_glMultiTexCoord4s #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4sv #define GLEE_H_DEFINED_glMultiTexCoord4sv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4SVPROC GLeeFuncPtr_glMultiTexCoord4sv; #define glMultiTexCoord4sv GLeeFuncPtr_glMultiTexCoord4sv #endif #ifndef GLEE_H_DEFINED_glLoadTransposeMatrixf #define GLEE_H_DEFINED_glLoadTransposeMatrixf typedef void (APIENTRYP GLEEPFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat * m); GLEE_EXTERN GLEEPFNGLLOADTRANSPOSEMATRIXFPROC GLeeFuncPtr_glLoadTransposeMatrixf; #define glLoadTransposeMatrixf GLeeFuncPtr_glLoadTransposeMatrixf #endif #ifndef GLEE_H_DEFINED_glLoadTransposeMatrixd #define GLEE_H_DEFINED_glLoadTransposeMatrixd typedef void (APIENTRYP GLEEPFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble * m); GLEE_EXTERN GLEEPFNGLLOADTRANSPOSEMATRIXDPROC GLeeFuncPtr_glLoadTransposeMatrixd; #define glLoadTransposeMatrixd GLeeFuncPtr_glLoadTransposeMatrixd #endif #ifndef GLEE_H_DEFINED_glMultTransposeMatrixf #define GLEE_H_DEFINED_glMultTransposeMatrixf typedef void (APIENTRYP GLEEPFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat * m); GLEE_EXTERN GLEEPFNGLMULTTRANSPOSEMATRIXFPROC GLeeFuncPtr_glMultTransposeMatrixf; #define glMultTransposeMatrixf GLeeFuncPtr_glMultTransposeMatrixf #endif #ifndef GLEE_H_DEFINED_glMultTransposeMatrixd #define GLEE_H_DEFINED_glMultTransposeMatrixd typedef void (APIENTRYP GLEEPFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble * m); GLEE_EXTERN GLEEPFNGLMULTTRANSPOSEMATRIXDPROC GLeeFuncPtr_glMultTransposeMatrixd; #define glMultTransposeMatrixd GLeeFuncPtr_glMultTransposeMatrixd #endif #endif /* GL_VERSION_1_4 */ #ifndef GL_VERSION_1_4 #define GL_VERSION_1_4 1 #define __GLEE_GL_VERSION_1_4 1 /* Constants */ #define GL_BLEND_DST_RGB 0x80C8 #define GL_BLEND_SRC_RGB 0x80C9 #define GL_BLEND_DST_ALPHA 0x80CA #define GL_BLEND_SRC_ALPHA 0x80CB #define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 #define GL_DEPTH_COMPONENT16 0x81A5 #define GL_DEPTH_COMPONENT24 0x81A6 #define GL_DEPTH_COMPONENT32 0x81A7 #define GL_MIRRORED_REPEAT 0x8370 #define GL_MAX_TEXTURE_LOD_BIAS 0x84FD #define GL_TEXTURE_LOD_BIAS 0x8501 #define GL_INCR_WRAP 0x8507 #define GL_DECR_WRAP 0x8508 #define GL_TEXTURE_DEPTH_SIZE 0x884A #define GL_TEXTURE_COMPARE_MODE 0x884C #define GL_TEXTURE_COMPARE_FUNC 0x884D #define GL_POINT_SIZE_MIN 0x8126 #define GL_POINT_SIZE_MAX 0x8127 #define GL_POINT_DISTANCE_ATTENUATION 0x8129 #define GL_GENERATE_MIPMAP 0x8191 #define GL_GENERATE_MIPMAP_HINT 0x8192 #define GL_FOG_COORDINATE_SOURCE 0x8450 #define GL_FOG_COORDINATE 0x8451 #define GL_FRAGMENT_DEPTH 0x8452 #define GL_CURRENT_FOG_COORDINATE 0x8453 #define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 #define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 #define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 #define GL_FOG_COORDINATE_ARRAY 0x8457 #define GL_COLOR_SUM 0x8458 #define GL_CURRENT_SECONDARY_COLOR 0x8459 #define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A #define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B #define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C #define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D #define GL_SECONDARY_COLOR_ARRAY 0x845E #define GL_TEXTURE_FILTER_CONTROL 0x8500 #define GL_DEPTH_TEXTURE_MODE 0x884B #define GL_COMPARE_R_TO_TEXTURE 0x884E #ifndef GLEE_H_DEFINED_glBlendFuncSeparate #define GLEE_H_DEFINED_glBlendFuncSeparate typedef void (APIENTRYP GLEEPFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); GLEE_EXTERN GLEEPFNGLBLENDFUNCSEPARATEPROC GLeeFuncPtr_glBlendFuncSeparate; #define glBlendFuncSeparate GLeeFuncPtr_glBlendFuncSeparate #endif #ifndef GLEE_H_DEFINED_glMultiDrawArrays #define GLEE_H_DEFINED_glMultiDrawArrays typedef void (APIENTRYP GLEEPFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint * first, const GLsizei * count, GLsizei drawcount); GLEE_EXTERN GLEEPFNGLMULTIDRAWARRAYSPROC GLeeFuncPtr_glMultiDrawArrays; #define glMultiDrawArrays GLeeFuncPtr_glMultiDrawArrays #endif #ifndef GLEE_H_DEFINED_glMultiDrawElements #define GLEE_H_DEFINED_glMultiDrawElements typedef void (APIENTRYP GLEEPFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei * count, GLenum type, const GLvoid* const * indices, GLsizei drawcount); GLEE_EXTERN GLEEPFNGLMULTIDRAWELEMENTSPROC GLeeFuncPtr_glMultiDrawElements; #define glMultiDrawElements GLeeFuncPtr_glMultiDrawElements #endif #ifndef GLEE_H_DEFINED_glPointParameterf #define GLEE_H_DEFINED_glPointParameterf typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERFPROC GLeeFuncPtr_glPointParameterf; #define glPointParameterf GLeeFuncPtr_glPointParameterf #endif #ifndef GLEE_H_DEFINED_glPointParameterfv #define GLEE_H_DEFINED_glPointParameterfv typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERFVPROC GLeeFuncPtr_glPointParameterfv; #define glPointParameterfv GLeeFuncPtr_glPointParameterfv #endif #ifndef GLEE_H_DEFINED_glPointParameteri #define GLEE_H_DEFINED_glPointParameteri typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERIPROC GLeeFuncPtr_glPointParameteri; #define glPointParameteri GLeeFuncPtr_glPointParameteri #endif #ifndef GLEE_H_DEFINED_glPointParameteriv #define GLEE_H_DEFINED_glPointParameteriv typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERIVPROC GLeeFuncPtr_glPointParameteriv; #define glPointParameteriv GLeeFuncPtr_glPointParameteriv #endif #ifndef GLEE_H_DEFINED_glFogCoordf #define GLEE_H_DEFINED_glFogCoordf typedef void (APIENTRYP GLEEPFNGLFOGCOORDFPROC) (GLfloat coord); GLEE_EXTERN GLEEPFNGLFOGCOORDFPROC GLeeFuncPtr_glFogCoordf; #define glFogCoordf GLeeFuncPtr_glFogCoordf #endif #ifndef GLEE_H_DEFINED_glFogCoordfv #define GLEE_H_DEFINED_glFogCoordfv typedef void (APIENTRYP GLEEPFNGLFOGCOORDFVPROC) (const GLfloat * coord); GLEE_EXTERN GLEEPFNGLFOGCOORDFVPROC GLeeFuncPtr_glFogCoordfv; #define glFogCoordfv GLeeFuncPtr_glFogCoordfv #endif #ifndef GLEE_H_DEFINED_glFogCoordd #define GLEE_H_DEFINED_glFogCoordd typedef void (APIENTRYP GLEEPFNGLFOGCOORDDPROC) (GLdouble coord); GLEE_EXTERN GLEEPFNGLFOGCOORDDPROC GLeeFuncPtr_glFogCoordd; #define glFogCoordd GLeeFuncPtr_glFogCoordd #endif #ifndef GLEE_H_DEFINED_glFogCoorddv #define GLEE_H_DEFINED_glFogCoorddv typedef void (APIENTRYP GLEEPFNGLFOGCOORDDVPROC) (const GLdouble * coord); GLEE_EXTERN GLEEPFNGLFOGCOORDDVPROC GLeeFuncPtr_glFogCoorddv; #define glFogCoorddv GLeeFuncPtr_glFogCoorddv #endif #ifndef GLEE_H_DEFINED_glFogCoordPointer #define GLEE_H_DEFINED_glFogCoordPointer typedef void (APIENTRYP GLEEPFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLFOGCOORDPOINTERPROC GLeeFuncPtr_glFogCoordPointer; #define glFogCoordPointer GLeeFuncPtr_glFogCoordPointer #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3b #define GLEE_H_DEFINED_glSecondaryColor3b typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3BPROC GLeeFuncPtr_glSecondaryColor3b; #define glSecondaryColor3b GLeeFuncPtr_glSecondaryColor3b #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3bv #define GLEE_H_DEFINED_glSecondaryColor3bv typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3BVPROC) (const GLbyte * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3BVPROC GLeeFuncPtr_glSecondaryColor3bv; #define glSecondaryColor3bv GLeeFuncPtr_glSecondaryColor3bv #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3d #define GLEE_H_DEFINED_glSecondaryColor3d typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3DPROC GLeeFuncPtr_glSecondaryColor3d; #define glSecondaryColor3d GLeeFuncPtr_glSecondaryColor3d #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3dv #define GLEE_H_DEFINED_glSecondaryColor3dv typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3DVPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3DVPROC GLeeFuncPtr_glSecondaryColor3dv; #define glSecondaryColor3dv GLeeFuncPtr_glSecondaryColor3dv #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3f #define GLEE_H_DEFINED_glSecondaryColor3f typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3FPROC GLeeFuncPtr_glSecondaryColor3f; #define glSecondaryColor3f GLeeFuncPtr_glSecondaryColor3f #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3fv #define GLEE_H_DEFINED_glSecondaryColor3fv typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3FVPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3FVPROC GLeeFuncPtr_glSecondaryColor3fv; #define glSecondaryColor3fv GLeeFuncPtr_glSecondaryColor3fv #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3i #define GLEE_H_DEFINED_glSecondaryColor3i typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3IPROC GLeeFuncPtr_glSecondaryColor3i; #define glSecondaryColor3i GLeeFuncPtr_glSecondaryColor3i #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3iv #define GLEE_H_DEFINED_glSecondaryColor3iv typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3IVPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3IVPROC GLeeFuncPtr_glSecondaryColor3iv; #define glSecondaryColor3iv GLeeFuncPtr_glSecondaryColor3iv #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3s #define GLEE_H_DEFINED_glSecondaryColor3s typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3SPROC GLeeFuncPtr_glSecondaryColor3s; #define glSecondaryColor3s GLeeFuncPtr_glSecondaryColor3s #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3sv #define GLEE_H_DEFINED_glSecondaryColor3sv typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3SVPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3SVPROC GLeeFuncPtr_glSecondaryColor3sv; #define glSecondaryColor3sv GLeeFuncPtr_glSecondaryColor3sv #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3ub #define GLEE_H_DEFINED_glSecondaryColor3ub typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3UBPROC GLeeFuncPtr_glSecondaryColor3ub; #define glSecondaryColor3ub GLeeFuncPtr_glSecondaryColor3ub #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3ubv #define GLEE_H_DEFINED_glSecondaryColor3ubv typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3UBVPROC GLeeFuncPtr_glSecondaryColor3ubv; #define glSecondaryColor3ubv GLeeFuncPtr_glSecondaryColor3ubv #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3ui #define GLEE_H_DEFINED_glSecondaryColor3ui typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3UIPROC GLeeFuncPtr_glSecondaryColor3ui; #define glSecondaryColor3ui GLeeFuncPtr_glSecondaryColor3ui #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3uiv #define GLEE_H_DEFINED_glSecondaryColor3uiv typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3UIVPROC) (const GLuint * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3UIVPROC GLeeFuncPtr_glSecondaryColor3uiv; #define glSecondaryColor3uiv GLeeFuncPtr_glSecondaryColor3uiv #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3us #define GLEE_H_DEFINED_glSecondaryColor3us typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3USPROC GLeeFuncPtr_glSecondaryColor3us; #define glSecondaryColor3us GLeeFuncPtr_glSecondaryColor3us #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3usv #define GLEE_H_DEFINED_glSecondaryColor3usv typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3USVPROC) (const GLushort * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3USVPROC GLeeFuncPtr_glSecondaryColor3usv; #define glSecondaryColor3usv GLeeFuncPtr_glSecondaryColor3usv #endif #ifndef GLEE_H_DEFINED_glSecondaryColorPointer #define GLEE_H_DEFINED_glSecondaryColorPointer typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLSECONDARYCOLORPOINTERPROC GLeeFuncPtr_glSecondaryColorPointer; #define glSecondaryColorPointer GLeeFuncPtr_glSecondaryColorPointer #endif #ifndef GLEE_H_DEFINED_glWindowPos2d #define GLEE_H_DEFINED_glWindowPos2d typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2DPROC GLeeFuncPtr_glWindowPos2d; #define glWindowPos2d GLeeFuncPtr_glWindowPos2d #endif #ifndef GLEE_H_DEFINED_glWindowPos2dv #define GLEE_H_DEFINED_glWindowPos2dv typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2DVPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2DVPROC GLeeFuncPtr_glWindowPos2dv; #define glWindowPos2dv GLeeFuncPtr_glWindowPos2dv #endif #ifndef GLEE_H_DEFINED_glWindowPos2f #define GLEE_H_DEFINED_glWindowPos2f typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2FPROC GLeeFuncPtr_glWindowPos2f; #define glWindowPos2f GLeeFuncPtr_glWindowPos2f #endif #ifndef GLEE_H_DEFINED_glWindowPos2fv #define GLEE_H_DEFINED_glWindowPos2fv typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2FVPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2FVPROC GLeeFuncPtr_glWindowPos2fv; #define glWindowPos2fv GLeeFuncPtr_glWindowPos2fv #endif #ifndef GLEE_H_DEFINED_glWindowPos2i #define GLEE_H_DEFINED_glWindowPos2i typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2IPROC) (GLint x, GLint y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2IPROC GLeeFuncPtr_glWindowPos2i; #define glWindowPos2i GLeeFuncPtr_glWindowPos2i #endif #ifndef GLEE_H_DEFINED_glWindowPos2iv #define GLEE_H_DEFINED_glWindowPos2iv typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2IVPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2IVPROC GLeeFuncPtr_glWindowPos2iv; #define glWindowPos2iv GLeeFuncPtr_glWindowPos2iv #endif #ifndef GLEE_H_DEFINED_glWindowPos2s #define GLEE_H_DEFINED_glWindowPos2s typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2SPROC GLeeFuncPtr_glWindowPos2s; #define glWindowPos2s GLeeFuncPtr_glWindowPos2s #endif #ifndef GLEE_H_DEFINED_glWindowPos2sv #define GLEE_H_DEFINED_glWindowPos2sv typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2SVPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2SVPROC GLeeFuncPtr_glWindowPos2sv; #define glWindowPos2sv GLeeFuncPtr_glWindowPos2sv #endif #ifndef GLEE_H_DEFINED_glWindowPos3d #define GLEE_H_DEFINED_glWindowPos3d typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3DPROC GLeeFuncPtr_glWindowPos3d; #define glWindowPos3d GLeeFuncPtr_glWindowPos3d #endif #ifndef GLEE_H_DEFINED_glWindowPos3dv #define GLEE_H_DEFINED_glWindowPos3dv typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3DVPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3DVPROC GLeeFuncPtr_glWindowPos3dv; #define glWindowPos3dv GLeeFuncPtr_glWindowPos3dv #endif #ifndef GLEE_H_DEFINED_glWindowPos3f #define GLEE_H_DEFINED_glWindowPos3f typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3FPROC GLeeFuncPtr_glWindowPos3f; #define glWindowPos3f GLeeFuncPtr_glWindowPos3f #endif #ifndef GLEE_H_DEFINED_glWindowPos3fv #define GLEE_H_DEFINED_glWindowPos3fv typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3FVPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3FVPROC GLeeFuncPtr_glWindowPos3fv; #define glWindowPos3fv GLeeFuncPtr_glWindowPos3fv #endif #ifndef GLEE_H_DEFINED_glWindowPos3i #define GLEE_H_DEFINED_glWindowPos3i typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3IPROC GLeeFuncPtr_glWindowPos3i; #define glWindowPos3i GLeeFuncPtr_glWindowPos3i #endif #ifndef GLEE_H_DEFINED_glWindowPos3iv #define GLEE_H_DEFINED_glWindowPos3iv typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3IVPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3IVPROC GLeeFuncPtr_glWindowPos3iv; #define glWindowPos3iv GLeeFuncPtr_glWindowPos3iv #endif #ifndef GLEE_H_DEFINED_glWindowPos3s #define GLEE_H_DEFINED_glWindowPos3s typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3SPROC GLeeFuncPtr_glWindowPos3s; #define glWindowPos3s GLeeFuncPtr_glWindowPos3s #endif #ifndef GLEE_H_DEFINED_glWindowPos3sv #define GLEE_H_DEFINED_glWindowPos3sv typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3SVPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3SVPROC GLeeFuncPtr_glWindowPos3sv; #define glWindowPos3sv GLeeFuncPtr_glWindowPos3sv #endif #endif /* GL_VERSION_1_5 */ #ifndef GL_VERSION_1_5 #define GL_VERSION_1_5 1 #define __GLEE_GL_VERSION_1_5 1 /* Constants */ #define GL_BUFFER_SIZE 0x8764 #define GL_BUFFER_USAGE 0x8765 #define GL_QUERY_COUNTER_BITS 0x8864 #define GL_CURRENT_QUERY 0x8865 #define GL_QUERY_RESULT 0x8866 #define GL_QUERY_RESULT_AVAILABLE 0x8867 #define GL_ARRAY_BUFFER 0x8892 #define GL_ELEMENT_ARRAY_BUFFER 0x8893 #define GL_ARRAY_BUFFER_BINDING 0x8894 #define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F #define GL_READ_ONLY 0x88B8 #define GL_WRITE_ONLY 0x88B9 #define GL_READ_WRITE 0x88BA #define GL_BUFFER_ACCESS 0x88BB #define GL_BUFFER_MAPPED 0x88BC #define GL_BUFFER_MAP_POINTER 0x88BD #define GL_STREAM_DRAW 0x88E0 #define GL_STREAM_READ 0x88E1 #define GL_STREAM_COPY 0x88E2 #define GL_STATIC_DRAW 0x88E4 #define GL_STATIC_READ 0x88E5 #define GL_STATIC_COPY 0x88E6 #define GL_DYNAMIC_DRAW 0x88E8 #define GL_DYNAMIC_READ 0x88E9 #define GL_DYNAMIC_COPY 0x88EA #define GL_SAMPLES_PASSED 0x8914 #define GL_SRC1_ALPHA 0x8589 #define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 #define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 #define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 #define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 #define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A #define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B #define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C #define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D #define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E #define GL_FOG_COORD_SRC 0x8450 #define GL_FOG_COORD 0x8451 #define GL_CURRENT_FOG_COORD 0x8453 #define GL_FOG_COORD_ARRAY_TYPE 0x8454 #define GL_FOG_COORD_ARRAY_STRIDE 0x8455 #define GL_FOG_COORD_ARRAY_POINTER 0x8456 #define GL_FOG_COORD_ARRAY 0x8457 #define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D #define GL_SRC0_RGB 0x8580 #define GL_SRC1_RGB 0x8581 #define GL_SRC2_RGB 0x8582 #define GL_SRC0_ALPHA 0x8588 #define GL_SRC2_ALPHA 0x858A #ifndef GLEE_H_DEFINED_glGenQueries #define GLEE_H_DEFINED_glGenQueries typedef void (APIENTRYP GLEEPFNGLGENQUERIESPROC) (GLsizei n, GLuint * ids); GLEE_EXTERN GLEEPFNGLGENQUERIESPROC GLeeFuncPtr_glGenQueries; #define glGenQueries GLeeFuncPtr_glGenQueries #endif #ifndef GLEE_H_DEFINED_glDeleteQueries #define GLEE_H_DEFINED_glDeleteQueries typedef void (APIENTRYP GLEEPFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint * ids); GLEE_EXTERN GLEEPFNGLDELETEQUERIESPROC GLeeFuncPtr_glDeleteQueries; #define glDeleteQueries GLeeFuncPtr_glDeleteQueries #endif #ifndef GLEE_H_DEFINED_glIsQuery #define GLEE_H_DEFINED_glIsQuery typedef GLboolean (APIENTRYP GLEEPFNGLISQUERYPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLISQUERYPROC GLeeFuncPtr_glIsQuery; #define glIsQuery GLeeFuncPtr_glIsQuery #endif #ifndef GLEE_H_DEFINED_glBeginQuery #define GLEE_H_DEFINED_glBeginQuery typedef void (APIENTRYP GLEEPFNGLBEGINQUERYPROC) (GLenum target, GLuint id); GLEE_EXTERN GLEEPFNGLBEGINQUERYPROC GLeeFuncPtr_glBeginQuery; #define glBeginQuery GLeeFuncPtr_glBeginQuery #endif #ifndef GLEE_H_DEFINED_glEndQuery #define GLEE_H_DEFINED_glEndQuery typedef void (APIENTRYP GLEEPFNGLENDQUERYPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLENDQUERYPROC GLeeFuncPtr_glEndQuery; #define glEndQuery GLeeFuncPtr_glEndQuery #endif #ifndef GLEE_H_DEFINED_glGetQueryiv #define GLEE_H_DEFINED_glGetQueryiv typedef void (APIENTRYP GLEEPFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETQUERYIVPROC GLeeFuncPtr_glGetQueryiv; #define glGetQueryiv GLeeFuncPtr_glGetQueryiv #endif #ifndef GLEE_H_DEFINED_glGetQueryObjectiv #define GLEE_H_DEFINED_glGetQueryObjectiv typedef void (APIENTRYP GLEEPFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETQUERYOBJECTIVPROC GLeeFuncPtr_glGetQueryObjectiv; #define glGetQueryObjectiv GLeeFuncPtr_glGetQueryObjectiv #endif #ifndef GLEE_H_DEFINED_glGetQueryObjectuiv #define GLEE_H_DEFINED_glGetQueryObjectuiv typedef void (APIENTRYP GLEEPFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint * params); GLEE_EXTERN GLEEPFNGLGETQUERYOBJECTUIVPROC GLeeFuncPtr_glGetQueryObjectuiv; #define glGetQueryObjectuiv GLeeFuncPtr_glGetQueryObjectuiv #endif #ifndef GLEE_H_DEFINED_glBindBuffer #define GLEE_H_DEFINED_glBindBuffer typedef void (APIENTRYP GLEEPFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); GLEE_EXTERN GLEEPFNGLBINDBUFFERPROC GLeeFuncPtr_glBindBuffer; #define glBindBuffer GLeeFuncPtr_glBindBuffer #endif #ifndef GLEE_H_DEFINED_glDeleteBuffers #define GLEE_H_DEFINED_glDeleteBuffers typedef void (APIENTRYP GLEEPFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint * buffers); GLEE_EXTERN GLEEPFNGLDELETEBUFFERSPROC GLeeFuncPtr_glDeleteBuffers; #define glDeleteBuffers GLeeFuncPtr_glDeleteBuffers #endif #ifndef GLEE_H_DEFINED_glGenBuffers #define GLEE_H_DEFINED_glGenBuffers typedef void (APIENTRYP GLEEPFNGLGENBUFFERSPROC) (GLsizei n, GLuint * buffers); GLEE_EXTERN GLEEPFNGLGENBUFFERSPROC GLeeFuncPtr_glGenBuffers; #define glGenBuffers GLeeFuncPtr_glGenBuffers #endif #ifndef GLEE_H_DEFINED_glIsBuffer #define GLEE_H_DEFINED_glIsBuffer typedef GLboolean (APIENTRYP GLEEPFNGLISBUFFERPROC) (GLuint buffer); GLEE_EXTERN GLEEPFNGLISBUFFERPROC GLeeFuncPtr_glIsBuffer; #define glIsBuffer GLeeFuncPtr_glIsBuffer #endif #ifndef GLEE_H_DEFINED_glBufferData #define GLEE_H_DEFINED_glBufferData typedef void (APIENTRYP GLEEPFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage); GLEE_EXTERN GLEEPFNGLBUFFERDATAPROC GLeeFuncPtr_glBufferData; #define glBufferData GLeeFuncPtr_glBufferData #endif #ifndef GLEE_H_DEFINED_glBufferSubData #define GLEE_H_DEFINED_glBufferSubData typedef void (APIENTRYP GLEEPFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data); GLEE_EXTERN GLEEPFNGLBUFFERSUBDATAPROC GLeeFuncPtr_glBufferSubData; #define glBufferSubData GLeeFuncPtr_glBufferSubData #endif #ifndef GLEE_H_DEFINED_glGetBufferSubData #define GLEE_H_DEFINED_glGetBufferSubData typedef void (APIENTRYP GLEEPFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid * data); GLEE_EXTERN GLEEPFNGLGETBUFFERSUBDATAPROC GLeeFuncPtr_glGetBufferSubData; #define glGetBufferSubData GLeeFuncPtr_glGetBufferSubData #endif #ifndef GLEE_H_DEFINED_glMapBuffer #define GLEE_H_DEFINED_glMapBuffer typedef GLvoid* (APIENTRYP GLEEPFNGLMAPBUFFERPROC) (GLenum target, GLenum access); GLEE_EXTERN GLEEPFNGLMAPBUFFERPROC GLeeFuncPtr_glMapBuffer; #define glMapBuffer GLeeFuncPtr_glMapBuffer #endif #ifndef GLEE_H_DEFINED_glUnmapBuffer #define GLEE_H_DEFINED_glUnmapBuffer typedef GLboolean (APIENTRYP GLEEPFNGLUNMAPBUFFERPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLUNMAPBUFFERPROC GLeeFuncPtr_glUnmapBuffer; #define glUnmapBuffer GLeeFuncPtr_glUnmapBuffer #endif #ifndef GLEE_H_DEFINED_glGetBufferParameteriv #define GLEE_H_DEFINED_glGetBufferParameteriv typedef void (APIENTRYP GLEEPFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETBUFFERPARAMETERIVPROC GLeeFuncPtr_glGetBufferParameteriv; #define glGetBufferParameteriv GLeeFuncPtr_glGetBufferParameteriv #endif #ifndef GLEE_H_DEFINED_glGetBufferPointerv #define GLEE_H_DEFINED_glGetBufferPointerv typedef void (APIENTRYP GLEEPFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* * params); GLEE_EXTERN GLEEPFNGLGETBUFFERPOINTERVPROC GLeeFuncPtr_glGetBufferPointerv; #define glGetBufferPointerv GLeeFuncPtr_glGetBufferPointerv #endif #endif /* GL_VERSION_2_0 */ #ifndef GL_VERSION_2_0 #define GL_VERSION_2_0 1 #define __GLEE_GL_VERSION_2_0 1 /* Constants */ #define GL_BLEND_EQUATION_RGB 0x8009 #define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 #define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 #define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 #define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 #define GL_CURRENT_VERTEX_ATTRIB 0x8626 #define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 #define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 #define GL_STENCIL_BACK_FUNC 0x8800 #define GL_STENCIL_BACK_FAIL 0x8801 #define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 #define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 #define GL_MAX_DRAW_BUFFERS 0x8824 #define GL_DRAW_BUFFER0 0x8825 #define GL_DRAW_BUFFER1 0x8826 #define GL_DRAW_BUFFER2 0x8827 #define GL_DRAW_BUFFER3 0x8828 #define GL_DRAW_BUFFER4 0x8829 #define GL_DRAW_BUFFER5 0x882A #define GL_DRAW_BUFFER6 0x882B #define GL_DRAW_BUFFER7 0x882C #define GL_DRAW_BUFFER8 0x882D #define GL_DRAW_BUFFER9 0x882E #define GL_DRAW_BUFFER10 0x882F #define GL_DRAW_BUFFER11 0x8830 #define GL_DRAW_BUFFER12 0x8831 #define GL_DRAW_BUFFER13 0x8832 #define GL_DRAW_BUFFER14 0x8833 #define GL_DRAW_BUFFER15 0x8834 #define GL_BLEND_EQUATION_ALPHA 0x883D #define GL_MAX_VERTEX_ATTRIBS 0x8869 #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A #define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 #define GL_FRAGMENT_SHADER 0x8B30 #define GL_VERTEX_SHADER 0x8B31 #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 #define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A #define GL_MAX_VARYING_FLOATS 0x8B4B #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D #define GL_SHADER_TYPE 0x8B4F #define GL_FLOAT_VEC2 0x8B50 #define GL_FLOAT_VEC3 0x8B51 #define GL_FLOAT_VEC4 0x8B52 #define GL_INT_VEC2 0x8B53 #define GL_INT_VEC3 0x8B54 #define GL_INT_VEC4 0x8B55 #define GL_BOOL 0x8B56 #define GL_BOOL_VEC2 0x8B57 #define GL_BOOL_VEC3 0x8B58 #define GL_BOOL_VEC4 0x8B59 #define GL_FLOAT_MAT2 0x8B5A #define GL_FLOAT_MAT3 0x8B5B #define GL_FLOAT_MAT4 0x8B5C #define GL_SAMPLER_1D 0x8B5D #define GL_SAMPLER_2D 0x8B5E #define GL_SAMPLER_3D 0x8B5F #define GL_SAMPLER_CUBE 0x8B60 #define GL_SAMPLER_1D_SHADOW 0x8B61 #define GL_SAMPLER_2D_SHADOW 0x8B62 #define GL_DELETE_STATUS 0x8B80 #define GL_COMPILE_STATUS 0x8B81 #define GL_LINK_STATUS 0x8B82 #define GL_VALIDATE_STATUS 0x8B83 #define GL_INFO_LOG_LENGTH 0x8B84 #define GL_ATTACHED_SHADERS 0x8B85 #define GL_ACTIVE_UNIFORMS 0x8B86 #define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 #define GL_SHADER_SOURCE_LENGTH 0x8B88 #define GL_ACTIVE_ATTRIBUTES 0x8B89 #define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B #define GL_SHADING_LANGUAGE_VERSION 0x8B8C #define GL_CURRENT_PROGRAM 0x8B8D #define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 #define GL_LOWER_LEFT 0x8CA1 #define GL_UPPER_LEFT 0x8CA2 #define GL_STENCIL_BACK_REF 0x8CA3 #define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 #define GL_STENCIL_BACK_WRITEMASK 0x8CA5 #define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 #define GL_POINT_SPRITE 0x8861 #define GL_COORD_REPLACE 0x8862 #define GL_MAX_TEXTURE_COORDS 0x8871 #ifndef GLEE_H_DEFINED_glBlendEquationSeparate #define GLEE_H_DEFINED_glBlendEquationSeparate typedef void (APIENTRYP GLEEPFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); GLEE_EXTERN GLEEPFNGLBLENDEQUATIONSEPARATEPROC GLeeFuncPtr_glBlendEquationSeparate; #define glBlendEquationSeparate GLeeFuncPtr_glBlendEquationSeparate #endif #ifndef GLEE_H_DEFINED_glDrawBuffers #define GLEE_H_DEFINED_glDrawBuffers typedef void (APIENTRYP GLEEPFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum * bufs); GLEE_EXTERN GLEEPFNGLDRAWBUFFERSPROC GLeeFuncPtr_glDrawBuffers; #define glDrawBuffers GLeeFuncPtr_glDrawBuffers #endif #ifndef GLEE_H_DEFINED_glStencilOpSeparate #define GLEE_H_DEFINED_glStencilOpSeparate typedef void (APIENTRYP GLEEPFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); GLEE_EXTERN GLEEPFNGLSTENCILOPSEPARATEPROC GLeeFuncPtr_glStencilOpSeparate; #define glStencilOpSeparate GLeeFuncPtr_glStencilOpSeparate #endif #ifndef GLEE_H_DEFINED_glStencilFuncSeparate #define GLEE_H_DEFINED_glStencilFuncSeparate typedef void (APIENTRYP GLEEPFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); GLEE_EXTERN GLEEPFNGLSTENCILFUNCSEPARATEPROC GLeeFuncPtr_glStencilFuncSeparate; #define glStencilFuncSeparate GLeeFuncPtr_glStencilFuncSeparate #endif #ifndef GLEE_H_DEFINED_glStencilMaskSeparate #define GLEE_H_DEFINED_glStencilMaskSeparate typedef void (APIENTRYP GLEEPFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); GLEE_EXTERN GLEEPFNGLSTENCILMASKSEPARATEPROC GLeeFuncPtr_glStencilMaskSeparate; #define glStencilMaskSeparate GLeeFuncPtr_glStencilMaskSeparate #endif #ifndef GLEE_H_DEFINED_glAttachShader #define GLEE_H_DEFINED_glAttachShader typedef void (APIENTRYP GLEEPFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); GLEE_EXTERN GLEEPFNGLATTACHSHADERPROC GLeeFuncPtr_glAttachShader; #define glAttachShader GLeeFuncPtr_glAttachShader #endif #ifndef GLEE_H_DEFINED_glBindAttribLocation #define GLEE_H_DEFINED_glBindAttribLocation typedef void (APIENTRYP GLEEPFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar * name); GLEE_EXTERN GLEEPFNGLBINDATTRIBLOCATIONPROC GLeeFuncPtr_glBindAttribLocation; #define glBindAttribLocation GLeeFuncPtr_glBindAttribLocation #endif #ifndef GLEE_H_DEFINED_glCompileShader #define GLEE_H_DEFINED_glCompileShader typedef void (APIENTRYP GLEEPFNGLCOMPILESHADERPROC) (GLuint shader); GLEE_EXTERN GLEEPFNGLCOMPILESHADERPROC GLeeFuncPtr_glCompileShader; #define glCompileShader GLeeFuncPtr_glCompileShader #endif #ifndef GLEE_H_DEFINED_glCreateProgram #define GLEE_H_DEFINED_glCreateProgram typedef GLuint (APIENTRYP GLEEPFNGLCREATEPROGRAMPROC) (); GLEE_EXTERN GLEEPFNGLCREATEPROGRAMPROC GLeeFuncPtr_glCreateProgram; #define glCreateProgram GLeeFuncPtr_glCreateProgram #endif #ifndef GLEE_H_DEFINED_glCreateShader #define GLEE_H_DEFINED_glCreateShader typedef GLuint (APIENTRYP GLEEPFNGLCREATESHADERPROC) (GLenum type); GLEE_EXTERN GLEEPFNGLCREATESHADERPROC GLeeFuncPtr_glCreateShader; #define glCreateShader GLeeFuncPtr_glCreateShader #endif #ifndef GLEE_H_DEFINED_glDeleteProgram #define GLEE_H_DEFINED_glDeleteProgram typedef void (APIENTRYP GLEEPFNGLDELETEPROGRAMPROC) (GLuint program); GLEE_EXTERN GLEEPFNGLDELETEPROGRAMPROC GLeeFuncPtr_glDeleteProgram; #define glDeleteProgram GLeeFuncPtr_glDeleteProgram #endif #ifndef GLEE_H_DEFINED_glDeleteShader #define GLEE_H_DEFINED_glDeleteShader typedef void (APIENTRYP GLEEPFNGLDELETESHADERPROC) (GLuint shader); GLEE_EXTERN GLEEPFNGLDELETESHADERPROC GLeeFuncPtr_glDeleteShader; #define glDeleteShader GLeeFuncPtr_glDeleteShader #endif #ifndef GLEE_H_DEFINED_glDetachShader #define GLEE_H_DEFINED_glDetachShader typedef void (APIENTRYP GLEEPFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); GLEE_EXTERN GLEEPFNGLDETACHSHADERPROC GLeeFuncPtr_glDetachShader; #define glDetachShader GLeeFuncPtr_glDetachShader #endif #ifndef GLEE_H_DEFINED_glDisableVertexAttribArray #define GLEE_H_DEFINED_glDisableVertexAttribArray typedef void (APIENTRYP GLEEPFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); GLEE_EXTERN GLEEPFNGLDISABLEVERTEXATTRIBARRAYPROC GLeeFuncPtr_glDisableVertexAttribArray; #define glDisableVertexAttribArray GLeeFuncPtr_glDisableVertexAttribArray #endif #ifndef GLEE_H_DEFINED_glEnableVertexAttribArray #define GLEE_H_DEFINED_glEnableVertexAttribArray typedef void (APIENTRYP GLEEPFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); GLEE_EXTERN GLEEPFNGLENABLEVERTEXATTRIBARRAYPROC GLeeFuncPtr_glEnableVertexAttribArray; #define glEnableVertexAttribArray GLeeFuncPtr_glEnableVertexAttribArray #endif #ifndef GLEE_H_DEFINED_glGetActiveAttrib #define GLEE_H_DEFINED_glGetActiveAttrib typedef void (APIENTRYP GLEEPFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); GLEE_EXTERN GLEEPFNGLGETACTIVEATTRIBPROC GLeeFuncPtr_glGetActiveAttrib; #define glGetActiveAttrib GLeeFuncPtr_glGetActiveAttrib #endif #ifndef GLEE_H_DEFINED_glGetActiveUniform #define GLEE_H_DEFINED_glGetActiveUniform typedef void (APIENTRYP GLEEPFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name); GLEE_EXTERN GLEEPFNGLGETACTIVEUNIFORMPROC GLeeFuncPtr_glGetActiveUniform; #define glGetActiveUniform GLeeFuncPtr_glGetActiveUniform #endif #ifndef GLEE_H_DEFINED_glGetAttachedShaders #define GLEE_H_DEFINED_glGetAttachedShaders typedef void (APIENTRYP GLEEPFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj); GLEE_EXTERN GLEEPFNGLGETATTACHEDSHADERSPROC GLeeFuncPtr_glGetAttachedShaders; #define glGetAttachedShaders GLeeFuncPtr_glGetAttachedShaders #endif #ifndef GLEE_H_DEFINED_glGetAttribLocation #define GLEE_H_DEFINED_glGetAttribLocation typedef GLint (APIENTRYP GLEEPFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETATTRIBLOCATIONPROC GLeeFuncPtr_glGetAttribLocation; #define glGetAttribLocation GLeeFuncPtr_glGetAttribLocation #endif #ifndef GLEE_H_DEFINED_glGetProgramiv #define GLEE_H_DEFINED_glGetProgramiv typedef void (APIENTRYP GLEEPFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMIVPROC GLeeFuncPtr_glGetProgramiv; #define glGetProgramiv GLeeFuncPtr_glGetProgramiv #endif #ifndef GLEE_H_DEFINED_glGetProgramInfoLog #define GLEE_H_DEFINED_glGetProgramInfoLog typedef void (APIENTRYP GLEEPFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); GLEE_EXTERN GLEEPFNGLGETPROGRAMINFOLOGPROC GLeeFuncPtr_glGetProgramInfoLog; #define glGetProgramInfoLog GLeeFuncPtr_glGetProgramInfoLog #endif #ifndef GLEE_H_DEFINED_glGetShaderiv #define GLEE_H_DEFINED_glGetShaderiv typedef void (APIENTRYP GLEEPFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETSHADERIVPROC GLeeFuncPtr_glGetShaderiv; #define glGetShaderiv GLeeFuncPtr_glGetShaderiv #endif #ifndef GLEE_H_DEFINED_glGetShaderInfoLog #define GLEE_H_DEFINED_glGetShaderInfoLog typedef void (APIENTRYP GLEEPFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog); GLEE_EXTERN GLEEPFNGLGETSHADERINFOLOGPROC GLeeFuncPtr_glGetShaderInfoLog; #define glGetShaderInfoLog GLeeFuncPtr_glGetShaderInfoLog #endif #ifndef GLEE_H_DEFINED_glGetShaderSource #define GLEE_H_DEFINED_glGetShaderSource typedef void (APIENTRYP GLEEPFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source); GLEE_EXTERN GLEEPFNGLGETSHADERSOURCEPROC GLeeFuncPtr_glGetShaderSource; #define glGetShaderSource GLeeFuncPtr_glGetShaderSource #endif #ifndef GLEE_H_DEFINED_glGetUniformLocation #define GLEE_H_DEFINED_glGetUniformLocation typedef GLint (APIENTRYP GLEEPFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETUNIFORMLOCATIONPROC GLeeFuncPtr_glGetUniformLocation; #define glGetUniformLocation GLeeFuncPtr_glGetUniformLocation #endif #ifndef GLEE_H_DEFINED_glGetUniformfv #define GLEE_H_DEFINED_glGetUniformfv typedef void (APIENTRYP GLEEPFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETUNIFORMFVPROC GLeeFuncPtr_glGetUniformfv; #define glGetUniformfv GLeeFuncPtr_glGetUniformfv #endif #ifndef GLEE_H_DEFINED_glGetUniformiv #define GLEE_H_DEFINED_glGetUniformiv typedef void (APIENTRYP GLEEPFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint * params); GLEE_EXTERN GLEEPFNGLGETUNIFORMIVPROC GLeeFuncPtr_glGetUniformiv; #define glGetUniformiv GLeeFuncPtr_glGetUniformiv #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribdv #define GLEE_H_DEFINED_glGetVertexAttribdv typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBDVPROC GLeeFuncPtr_glGetVertexAttribdv; #define glGetVertexAttribdv GLeeFuncPtr_glGetVertexAttribdv #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribfv #define GLEE_H_DEFINED_glGetVertexAttribfv typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBFVPROC GLeeFuncPtr_glGetVertexAttribfv; #define glGetVertexAttribfv GLeeFuncPtr_glGetVertexAttribfv #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribiv #define GLEE_H_DEFINED_glGetVertexAttribiv typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBIVPROC GLeeFuncPtr_glGetVertexAttribiv; #define glGetVertexAttribiv GLeeFuncPtr_glGetVertexAttribiv #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribPointerv #define GLEE_H_DEFINED_glGetVertexAttribPointerv typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* * pointer); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBPOINTERVPROC GLeeFuncPtr_glGetVertexAttribPointerv; #define glGetVertexAttribPointerv GLeeFuncPtr_glGetVertexAttribPointerv #endif #ifndef GLEE_H_DEFINED_glIsProgram #define GLEE_H_DEFINED_glIsProgram typedef GLboolean (APIENTRYP GLEEPFNGLISPROGRAMPROC) (GLuint program); GLEE_EXTERN GLEEPFNGLISPROGRAMPROC GLeeFuncPtr_glIsProgram; #define glIsProgram GLeeFuncPtr_glIsProgram #endif #ifndef GLEE_H_DEFINED_glIsShader #define GLEE_H_DEFINED_glIsShader typedef GLboolean (APIENTRYP GLEEPFNGLISSHADERPROC) (GLuint shader); GLEE_EXTERN GLEEPFNGLISSHADERPROC GLeeFuncPtr_glIsShader; #define glIsShader GLeeFuncPtr_glIsShader #endif #ifndef GLEE_H_DEFINED_glLinkProgram #define GLEE_H_DEFINED_glLinkProgram typedef void (APIENTRYP GLEEPFNGLLINKPROGRAMPROC) (GLuint program); GLEE_EXTERN GLEEPFNGLLINKPROGRAMPROC GLeeFuncPtr_glLinkProgram; #define glLinkProgram GLeeFuncPtr_glLinkProgram #endif #ifndef GLEE_H_DEFINED_glShaderSource #define GLEE_H_DEFINED_glShaderSource typedef void (APIENTRYP GLEEPFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* const * string, const GLint * length); GLEE_EXTERN GLEEPFNGLSHADERSOURCEPROC GLeeFuncPtr_glShaderSource; #define glShaderSource GLeeFuncPtr_glShaderSource #endif #ifndef GLEE_H_DEFINED_glUseProgram #define GLEE_H_DEFINED_glUseProgram typedef void (APIENTRYP GLEEPFNGLUSEPROGRAMPROC) (GLuint program); GLEE_EXTERN GLEEPFNGLUSEPROGRAMPROC GLeeFuncPtr_glUseProgram; #define glUseProgram GLeeFuncPtr_glUseProgram #endif #ifndef GLEE_H_DEFINED_glUniform1f #define GLEE_H_DEFINED_glUniform1f typedef void (APIENTRYP GLEEPFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); GLEE_EXTERN GLEEPFNGLUNIFORM1FPROC GLeeFuncPtr_glUniform1f; #define glUniform1f GLeeFuncPtr_glUniform1f #endif #ifndef GLEE_H_DEFINED_glUniform2f #define GLEE_H_DEFINED_glUniform2f typedef void (APIENTRYP GLEEPFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); GLEE_EXTERN GLEEPFNGLUNIFORM2FPROC GLeeFuncPtr_glUniform2f; #define glUniform2f GLeeFuncPtr_glUniform2f #endif #ifndef GLEE_H_DEFINED_glUniform3f #define GLEE_H_DEFINED_glUniform3f typedef void (APIENTRYP GLEEPFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); GLEE_EXTERN GLEEPFNGLUNIFORM3FPROC GLeeFuncPtr_glUniform3f; #define glUniform3f GLeeFuncPtr_glUniform3f #endif #ifndef GLEE_H_DEFINED_glUniform4f #define GLEE_H_DEFINED_glUniform4f typedef void (APIENTRYP GLEEPFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); GLEE_EXTERN GLEEPFNGLUNIFORM4FPROC GLeeFuncPtr_glUniform4f; #define glUniform4f GLeeFuncPtr_glUniform4f #endif #ifndef GLEE_H_DEFINED_glUniform1i #define GLEE_H_DEFINED_glUniform1i typedef void (APIENTRYP GLEEPFNGLUNIFORM1IPROC) (GLint location, GLint v0); GLEE_EXTERN GLEEPFNGLUNIFORM1IPROC GLeeFuncPtr_glUniform1i; #define glUniform1i GLeeFuncPtr_glUniform1i #endif #ifndef GLEE_H_DEFINED_glUniform2i #define GLEE_H_DEFINED_glUniform2i typedef void (APIENTRYP GLEEPFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); GLEE_EXTERN GLEEPFNGLUNIFORM2IPROC GLeeFuncPtr_glUniform2i; #define glUniform2i GLeeFuncPtr_glUniform2i #endif #ifndef GLEE_H_DEFINED_glUniform3i #define GLEE_H_DEFINED_glUniform3i typedef void (APIENTRYP GLEEPFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); GLEE_EXTERN GLEEPFNGLUNIFORM3IPROC GLeeFuncPtr_glUniform3i; #define glUniform3i GLeeFuncPtr_glUniform3i #endif #ifndef GLEE_H_DEFINED_glUniform4i #define GLEE_H_DEFINED_glUniform4i typedef void (APIENTRYP GLEEPFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); GLEE_EXTERN GLEEPFNGLUNIFORM4IPROC GLeeFuncPtr_glUniform4i; #define glUniform4i GLeeFuncPtr_glUniform4i #endif #ifndef GLEE_H_DEFINED_glUniform1fv #define GLEE_H_DEFINED_glUniform1fv typedef void (APIENTRYP GLEEPFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORM1FVPROC GLeeFuncPtr_glUniform1fv; #define glUniform1fv GLeeFuncPtr_glUniform1fv #endif #ifndef GLEE_H_DEFINED_glUniform2fv #define GLEE_H_DEFINED_glUniform2fv typedef void (APIENTRYP GLEEPFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORM2FVPROC GLeeFuncPtr_glUniform2fv; #define glUniform2fv GLeeFuncPtr_glUniform2fv #endif #ifndef GLEE_H_DEFINED_glUniform3fv #define GLEE_H_DEFINED_glUniform3fv typedef void (APIENTRYP GLEEPFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORM3FVPROC GLeeFuncPtr_glUniform3fv; #define glUniform3fv GLeeFuncPtr_glUniform3fv #endif #ifndef GLEE_H_DEFINED_glUniform4fv #define GLEE_H_DEFINED_glUniform4fv typedef void (APIENTRYP GLEEPFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORM4FVPROC GLeeFuncPtr_glUniform4fv; #define glUniform4fv GLeeFuncPtr_glUniform4fv #endif #ifndef GLEE_H_DEFINED_glUniform1iv #define GLEE_H_DEFINED_glUniform1iv typedef void (APIENTRYP GLEEPFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLUNIFORM1IVPROC GLeeFuncPtr_glUniform1iv; #define glUniform1iv GLeeFuncPtr_glUniform1iv #endif #ifndef GLEE_H_DEFINED_glUniform2iv #define GLEE_H_DEFINED_glUniform2iv typedef void (APIENTRYP GLEEPFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLUNIFORM2IVPROC GLeeFuncPtr_glUniform2iv; #define glUniform2iv GLeeFuncPtr_glUniform2iv #endif #ifndef GLEE_H_DEFINED_glUniform3iv #define GLEE_H_DEFINED_glUniform3iv typedef void (APIENTRYP GLEEPFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLUNIFORM3IVPROC GLeeFuncPtr_glUniform3iv; #define glUniform3iv GLeeFuncPtr_glUniform3iv #endif #ifndef GLEE_H_DEFINED_glUniform4iv #define GLEE_H_DEFINED_glUniform4iv typedef void (APIENTRYP GLEEPFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLUNIFORM4IVPROC GLeeFuncPtr_glUniform4iv; #define glUniform4iv GLeeFuncPtr_glUniform4iv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix2fv #define GLEE_H_DEFINED_glUniformMatrix2fv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX2FVPROC GLeeFuncPtr_glUniformMatrix2fv; #define glUniformMatrix2fv GLeeFuncPtr_glUniformMatrix2fv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix3fv #define GLEE_H_DEFINED_glUniformMatrix3fv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX3FVPROC GLeeFuncPtr_glUniformMatrix3fv; #define glUniformMatrix3fv GLeeFuncPtr_glUniformMatrix3fv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix4fv #define GLEE_H_DEFINED_glUniformMatrix4fv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX4FVPROC GLeeFuncPtr_glUniformMatrix4fv; #define glUniformMatrix4fv GLeeFuncPtr_glUniformMatrix4fv #endif #ifndef GLEE_H_DEFINED_glValidateProgram #define GLEE_H_DEFINED_glValidateProgram typedef void (APIENTRYP GLEEPFNGLVALIDATEPROGRAMPROC) (GLuint program); GLEE_EXTERN GLEEPFNGLVALIDATEPROGRAMPROC GLeeFuncPtr_glValidateProgram; #define glValidateProgram GLeeFuncPtr_glValidateProgram #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1d #define GLEE_H_DEFINED_glVertexAttrib1d typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1DPROC GLeeFuncPtr_glVertexAttrib1d; #define glVertexAttrib1d GLeeFuncPtr_glVertexAttrib1d #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1dv #define GLEE_H_DEFINED_glVertexAttrib1dv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1DVPROC GLeeFuncPtr_glVertexAttrib1dv; #define glVertexAttrib1dv GLeeFuncPtr_glVertexAttrib1dv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1f #define GLEE_H_DEFINED_glVertexAttrib1f typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1FPROC GLeeFuncPtr_glVertexAttrib1f; #define glVertexAttrib1f GLeeFuncPtr_glVertexAttrib1f #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1fv #define GLEE_H_DEFINED_glVertexAttrib1fv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1FVPROC GLeeFuncPtr_glVertexAttrib1fv; #define glVertexAttrib1fv GLeeFuncPtr_glVertexAttrib1fv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1s #define GLEE_H_DEFINED_glVertexAttrib1s typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1SPROC GLeeFuncPtr_glVertexAttrib1s; #define glVertexAttrib1s GLeeFuncPtr_glVertexAttrib1s #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1sv #define GLEE_H_DEFINED_glVertexAttrib1sv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1SVPROC GLeeFuncPtr_glVertexAttrib1sv; #define glVertexAttrib1sv GLeeFuncPtr_glVertexAttrib1sv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2d #define GLEE_H_DEFINED_glVertexAttrib2d typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2DPROC GLeeFuncPtr_glVertexAttrib2d; #define glVertexAttrib2d GLeeFuncPtr_glVertexAttrib2d #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2dv #define GLEE_H_DEFINED_glVertexAttrib2dv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2DVPROC GLeeFuncPtr_glVertexAttrib2dv; #define glVertexAttrib2dv GLeeFuncPtr_glVertexAttrib2dv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2f #define GLEE_H_DEFINED_glVertexAttrib2f typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2FPROC GLeeFuncPtr_glVertexAttrib2f; #define glVertexAttrib2f GLeeFuncPtr_glVertexAttrib2f #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2fv #define GLEE_H_DEFINED_glVertexAttrib2fv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2FVPROC GLeeFuncPtr_glVertexAttrib2fv; #define glVertexAttrib2fv GLeeFuncPtr_glVertexAttrib2fv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2s #define GLEE_H_DEFINED_glVertexAttrib2s typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2SPROC GLeeFuncPtr_glVertexAttrib2s; #define glVertexAttrib2s GLeeFuncPtr_glVertexAttrib2s #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2sv #define GLEE_H_DEFINED_glVertexAttrib2sv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2SVPROC GLeeFuncPtr_glVertexAttrib2sv; #define glVertexAttrib2sv GLeeFuncPtr_glVertexAttrib2sv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3d #define GLEE_H_DEFINED_glVertexAttrib3d typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3DPROC GLeeFuncPtr_glVertexAttrib3d; #define glVertexAttrib3d GLeeFuncPtr_glVertexAttrib3d #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3dv #define GLEE_H_DEFINED_glVertexAttrib3dv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3DVPROC GLeeFuncPtr_glVertexAttrib3dv; #define glVertexAttrib3dv GLeeFuncPtr_glVertexAttrib3dv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3f #define GLEE_H_DEFINED_glVertexAttrib3f typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3FPROC GLeeFuncPtr_glVertexAttrib3f; #define glVertexAttrib3f GLeeFuncPtr_glVertexAttrib3f #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3fv #define GLEE_H_DEFINED_glVertexAttrib3fv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3FVPROC GLeeFuncPtr_glVertexAttrib3fv; #define glVertexAttrib3fv GLeeFuncPtr_glVertexAttrib3fv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3s #define GLEE_H_DEFINED_glVertexAttrib3s typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3SPROC GLeeFuncPtr_glVertexAttrib3s; #define glVertexAttrib3s GLeeFuncPtr_glVertexAttrib3s #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3sv #define GLEE_H_DEFINED_glVertexAttrib3sv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3SVPROC GLeeFuncPtr_glVertexAttrib3sv; #define glVertexAttrib3sv GLeeFuncPtr_glVertexAttrib3sv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4Nbv #define GLEE_H_DEFINED_glVertexAttrib4Nbv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NBVPROC GLeeFuncPtr_glVertexAttrib4Nbv; #define glVertexAttrib4Nbv GLeeFuncPtr_glVertexAttrib4Nbv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4Niv #define GLEE_H_DEFINED_glVertexAttrib4Niv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NIVPROC GLeeFuncPtr_glVertexAttrib4Niv; #define glVertexAttrib4Niv GLeeFuncPtr_glVertexAttrib4Niv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4Nsv #define GLEE_H_DEFINED_glVertexAttrib4Nsv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NSVPROC GLeeFuncPtr_glVertexAttrib4Nsv; #define glVertexAttrib4Nsv GLeeFuncPtr_glVertexAttrib4Nsv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4Nub #define GLEE_H_DEFINED_glVertexAttrib4Nub typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NUBPROC GLeeFuncPtr_glVertexAttrib4Nub; #define glVertexAttrib4Nub GLeeFuncPtr_glVertexAttrib4Nub #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4Nubv #define GLEE_H_DEFINED_glVertexAttrib4Nubv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NUBVPROC GLeeFuncPtr_glVertexAttrib4Nubv; #define glVertexAttrib4Nubv GLeeFuncPtr_glVertexAttrib4Nubv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4Nuiv #define GLEE_H_DEFINED_glVertexAttrib4Nuiv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NUIVPROC GLeeFuncPtr_glVertexAttrib4Nuiv; #define glVertexAttrib4Nuiv GLeeFuncPtr_glVertexAttrib4Nuiv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4Nusv #define GLEE_H_DEFINED_glVertexAttrib4Nusv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NUSVPROC GLeeFuncPtr_glVertexAttrib4Nusv; #define glVertexAttrib4Nusv GLeeFuncPtr_glVertexAttrib4Nusv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4bv #define GLEE_H_DEFINED_glVertexAttrib4bv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4BVPROC GLeeFuncPtr_glVertexAttrib4bv; #define glVertexAttrib4bv GLeeFuncPtr_glVertexAttrib4bv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4d #define GLEE_H_DEFINED_glVertexAttrib4d typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4DPROC GLeeFuncPtr_glVertexAttrib4d; #define glVertexAttrib4d GLeeFuncPtr_glVertexAttrib4d #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4dv #define GLEE_H_DEFINED_glVertexAttrib4dv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4DVPROC GLeeFuncPtr_glVertexAttrib4dv; #define glVertexAttrib4dv GLeeFuncPtr_glVertexAttrib4dv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4f #define GLEE_H_DEFINED_glVertexAttrib4f typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4FPROC GLeeFuncPtr_glVertexAttrib4f; #define glVertexAttrib4f GLeeFuncPtr_glVertexAttrib4f #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4fv #define GLEE_H_DEFINED_glVertexAttrib4fv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4FVPROC GLeeFuncPtr_glVertexAttrib4fv; #define glVertexAttrib4fv GLeeFuncPtr_glVertexAttrib4fv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4iv #define GLEE_H_DEFINED_glVertexAttrib4iv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4IVPROC GLeeFuncPtr_glVertexAttrib4iv; #define glVertexAttrib4iv GLeeFuncPtr_glVertexAttrib4iv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4s #define GLEE_H_DEFINED_glVertexAttrib4s typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4SPROC GLeeFuncPtr_glVertexAttrib4s; #define glVertexAttrib4s GLeeFuncPtr_glVertexAttrib4s #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4sv #define GLEE_H_DEFINED_glVertexAttrib4sv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4SVPROC GLeeFuncPtr_glVertexAttrib4sv; #define glVertexAttrib4sv GLeeFuncPtr_glVertexAttrib4sv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4ubv #define GLEE_H_DEFINED_glVertexAttrib4ubv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4UBVPROC GLeeFuncPtr_glVertexAttrib4ubv; #define glVertexAttrib4ubv GLeeFuncPtr_glVertexAttrib4ubv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4uiv #define GLEE_H_DEFINED_glVertexAttrib4uiv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4UIVPROC GLeeFuncPtr_glVertexAttrib4uiv; #define glVertexAttrib4uiv GLeeFuncPtr_glVertexAttrib4uiv #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4usv #define GLEE_H_DEFINED_glVertexAttrib4usv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4USVPROC GLeeFuncPtr_glVertexAttrib4usv; #define glVertexAttrib4usv GLeeFuncPtr_glVertexAttrib4usv #endif #ifndef GLEE_H_DEFINED_glVertexAttribPointer #define GLEE_H_DEFINED_glVertexAttribPointer typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBPOINTERPROC GLeeFuncPtr_glVertexAttribPointer; #define glVertexAttribPointer GLeeFuncPtr_glVertexAttribPointer #endif #endif /* GL_VERSION_2_1 */ #ifndef GL_VERSION_2_1 #define GL_VERSION_2_1 1 #define __GLEE_GL_VERSION_2_1 1 /* Constants */ #define GL_PIXEL_PACK_BUFFER 0x88EB #define GL_PIXEL_UNPACK_BUFFER 0x88EC #define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED #define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF #define GL_FLOAT_MAT2x3 0x8B65 #define GL_FLOAT_MAT2x4 0x8B66 #define GL_FLOAT_MAT3x2 0x8B67 #define GL_FLOAT_MAT3x4 0x8B68 #define GL_FLOAT_MAT4x2 0x8B69 #define GL_FLOAT_MAT4x3 0x8B6A #define GL_SRGB 0x8C40 #define GL_SRGB8 0x8C41 #define GL_SRGB_ALPHA 0x8C42 #define GL_SRGB8_ALPHA8 0x8C43 #define GL_COMPRESSED_SRGB 0x8C48 #define GL_COMPRESSED_SRGB_ALPHA 0x8C49 #define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F #define GL_SLUMINANCE_ALPHA 0x8C44 #define GL_SLUMINANCE8_ALPHA8 0x8C45 #define GL_SLUMINANCE 0x8C46 #define GL_SLUMINANCE8 0x8C47 #define GL_COMPRESSED_SLUMINANCE 0x8C4A #define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B #ifndef GLEE_H_DEFINED_glUniformMatrix2x3fv #define GLEE_H_DEFINED_glUniformMatrix2x3fv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX2X3FVPROC GLeeFuncPtr_glUniformMatrix2x3fv; #define glUniformMatrix2x3fv GLeeFuncPtr_glUniformMatrix2x3fv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix3x2fv #define GLEE_H_DEFINED_glUniformMatrix3x2fv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX3X2FVPROC GLeeFuncPtr_glUniformMatrix3x2fv; #define glUniformMatrix3x2fv GLeeFuncPtr_glUniformMatrix3x2fv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix2x4fv #define GLEE_H_DEFINED_glUniformMatrix2x4fv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX2X4FVPROC GLeeFuncPtr_glUniformMatrix2x4fv; #define glUniformMatrix2x4fv GLeeFuncPtr_glUniformMatrix2x4fv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix4x2fv #define GLEE_H_DEFINED_glUniformMatrix4x2fv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX4X2FVPROC GLeeFuncPtr_glUniformMatrix4x2fv; #define glUniformMatrix4x2fv GLeeFuncPtr_glUniformMatrix4x2fv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix3x4fv #define GLEE_H_DEFINED_glUniformMatrix3x4fv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX3X4FVPROC GLeeFuncPtr_glUniformMatrix3x4fv; #define glUniformMatrix3x4fv GLeeFuncPtr_glUniformMatrix3x4fv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix4x3fv #define GLEE_H_DEFINED_glUniformMatrix4x3fv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX4X3FVPROC GLeeFuncPtr_glUniformMatrix4x3fv; #define glUniformMatrix4x3fv GLeeFuncPtr_glUniformMatrix4x3fv #endif #endif /* GL_VERSION_3_0 */ #ifndef GL_VERSION_3_0 #define GL_VERSION_3_0 1 #define __GLEE_GL_VERSION_3_0 1 /* Constants */ #define GL_COMPARE_REF_TO_TEXTURE 0x884E #define GL_CLIP_DISTANCE0 0x3000 #define GL_CLIP_DISTANCE1 0x3001 #define GL_CLIP_DISTANCE2 0x3002 #define GL_CLIP_DISTANCE3 0x3003 #define GL_CLIP_DISTANCE4 0x3004 #define GL_CLIP_DISTANCE5 0x3005 #define GL_CLIP_DISTANCE6 0x3006 #define GL_CLIP_DISTANCE7 0x3007 #define GL_MAX_CLIP_DISTANCES 0x0D32 #define GL_MAJOR_VERSION 0x821B #define GL_MINOR_VERSION 0x821C #define GL_NUM_EXTENSIONS 0x821D #define GL_CONTEXT_FLAGS 0x821E #define GL_COMPRESSED_RED 0x8225 #define GL_COMPRESSED_RG 0x8226 #define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x0001 #define GL_RGBA32F 0x8814 #define GL_RGB32F 0x8815 #define GL_RGBA16F 0x881A #define GL_RGB16F 0x881B #define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD #define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF #define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 #define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 #define GL_CLAMP_READ_COLOR 0x891C #define GL_FIXED_ONLY 0x891D #define GL_MAX_VARYING_COMPONENTS 0x8B4B #define GL_TEXTURE_1D_ARRAY 0x8C18 #define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 #define GL_TEXTURE_2D_ARRAY 0x8C1A #define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B #define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C #define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D #define GL_R11F_G11F_B10F 0x8C3A #define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B #define GL_RGB9_E5 0x8C3D #define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E #define GL_TEXTURE_SHARED_SIZE 0x8C3F #define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 #define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 #define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 #define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 #define GL_PRIMITIVES_GENERATED 0x8C87 #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 #define GL_RASTERIZER_DISCARD 0x8C89 #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B #define GL_INTERLEAVED_ATTRIBS 0x8C8C #define GL_SEPARATE_ATTRIBS 0x8C8D #define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F #define GL_RGBA32UI 0x8D70 #define GL_RGB32UI 0x8D71 #define GL_RGBA16UI 0x8D76 #define GL_RGB16UI 0x8D77 #define GL_RGBA8UI 0x8D7C #define GL_RGB8UI 0x8D7D #define GL_RGBA32I 0x8D82 #define GL_RGB32I 0x8D83 #define GL_RGBA16I 0x8D88 #define GL_RGB16I 0x8D89 #define GL_RGBA8I 0x8D8E #define GL_RGB8I 0x8D8F #define GL_RED_INTEGER 0x8D94 #define GL_GREEN_INTEGER 0x8D95 #define GL_BLUE_INTEGER 0x8D96 #define GL_RGB_INTEGER 0x8D98 #define GL_RGBA_INTEGER 0x8D99 #define GL_BGR_INTEGER 0x8D9A #define GL_BGRA_INTEGER 0x8D9B #define GL_SAMPLER_1D_ARRAY 0x8DC0 #define GL_SAMPLER_2D_ARRAY 0x8DC1 #define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 #define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 #define GL_SAMPLER_CUBE_SHADOW 0x8DC5 #define GL_UNSIGNED_INT_VEC2 0x8DC6 #define GL_UNSIGNED_INT_VEC3 0x8DC7 #define GL_UNSIGNED_INT_VEC4 0x8DC8 #define GL_INT_SAMPLER_1D 0x8DC9 #define GL_INT_SAMPLER_2D 0x8DCA #define GL_INT_SAMPLER_3D 0x8DCB #define GL_INT_SAMPLER_CUBE 0x8DCC #define GL_INT_SAMPLER_1D_ARRAY 0x8DCE #define GL_INT_SAMPLER_2D_ARRAY 0x8DCF #define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 #define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 #define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 #define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 #define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 #define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 #define GL_QUERY_WAIT 0x8E13 #define GL_QUERY_NO_WAIT 0x8E14 #define GL_QUERY_BY_REGION_WAIT 0x8E15 #define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 #define GL_BUFFER_ACCESS_FLAGS 0x911F #define GL_BUFFER_MAP_LENGTH 0x9120 #define GL_BUFFER_MAP_OFFSET 0x9121 #define GL_CLAMP_VERTEX_COLOR 0x891A #define GL_CLAMP_FRAGMENT_COLOR 0x891B #define GL_ALPHA_INTEGER 0x8D97 #ifndef GLEE_H_DEFINED_glColorMaski #define GLEE_H_DEFINED_glColorMaski typedef void (APIENTRYP GLEEPFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); GLEE_EXTERN GLEEPFNGLCOLORMASKIPROC GLeeFuncPtr_glColorMaski; #define glColorMaski GLeeFuncPtr_glColorMaski #endif #ifndef GLEE_H_DEFINED_glGetBooleani_v #define GLEE_H_DEFINED_glGetBooleani_v typedef void (APIENTRYP GLEEPFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean * data); GLEE_EXTERN GLEEPFNGLGETBOOLEANI_VPROC GLeeFuncPtr_glGetBooleani_v; #define glGetBooleani_v GLeeFuncPtr_glGetBooleani_v #endif #ifndef GLEE_H_DEFINED_glGetIntegeri_v #define GLEE_H_DEFINED_glGetIntegeri_v typedef void (APIENTRYP GLEEPFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint * data); GLEE_EXTERN GLEEPFNGLGETINTEGERI_VPROC GLeeFuncPtr_glGetIntegeri_v; #define glGetIntegeri_v GLeeFuncPtr_glGetIntegeri_v #endif #ifndef GLEE_H_DEFINED_glEnablei #define GLEE_H_DEFINED_glEnablei typedef void (APIENTRYP GLEEPFNGLENABLEIPROC) (GLenum target, GLuint index); GLEE_EXTERN GLEEPFNGLENABLEIPROC GLeeFuncPtr_glEnablei; #define glEnablei GLeeFuncPtr_glEnablei #endif #ifndef GLEE_H_DEFINED_glDisablei #define GLEE_H_DEFINED_glDisablei typedef void (APIENTRYP GLEEPFNGLDISABLEIPROC) (GLenum target, GLuint index); GLEE_EXTERN GLEEPFNGLDISABLEIPROC GLeeFuncPtr_glDisablei; #define glDisablei GLeeFuncPtr_glDisablei #endif #ifndef GLEE_H_DEFINED_glIsEnabledi #define GLEE_H_DEFINED_glIsEnabledi typedef GLboolean (APIENTRYP GLEEPFNGLISENABLEDIPROC) (GLenum target, GLuint index); GLEE_EXTERN GLEEPFNGLISENABLEDIPROC GLeeFuncPtr_glIsEnabledi; #define glIsEnabledi GLeeFuncPtr_glIsEnabledi #endif #ifndef GLEE_H_DEFINED_glBeginTransformFeedback #define GLEE_H_DEFINED_glBeginTransformFeedback typedef void (APIENTRYP GLEEPFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode); GLEE_EXTERN GLEEPFNGLBEGINTRANSFORMFEEDBACKPROC GLeeFuncPtr_glBeginTransformFeedback; #define glBeginTransformFeedback GLeeFuncPtr_glBeginTransformFeedback #endif #ifndef GLEE_H_DEFINED_glEndTransformFeedback #define GLEE_H_DEFINED_glEndTransformFeedback typedef void (APIENTRYP GLEEPFNGLENDTRANSFORMFEEDBACKPROC) (); GLEE_EXTERN GLEEPFNGLENDTRANSFORMFEEDBACKPROC GLeeFuncPtr_glEndTransformFeedback; #define glEndTransformFeedback GLeeFuncPtr_glEndTransformFeedback #endif #ifndef GLEE_H_DEFINED_glBindBufferRange #define GLEE_H_DEFINED_glBindBufferRange typedef void (APIENTRYP GLEEPFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); GLEE_EXTERN GLEEPFNGLBINDBUFFERRANGEPROC GLeeFuncPtr_glBindBufferRange; #define glBindBufferRange GLeeFuncPtr_glBindBufferRange #endif #ifndef GLEE_H_DEFINED_glBindBufferBase #define GLEE_H_DEFINED_glBindBufferBase typedef void (APIENTRYP GLEEPFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer); GLEE_EXTERN GLEEPFNGLBINDBUFFERBASEPROC GLeeFuncPtr_glBindBufferBase; #define glBindBufferBase GLeeFuncPtr_glBindBufferBase #endif #ifndef GLEE_H_DEFINED_glTransformFeedbackVaryings #define GLEE_H_DEFINED_glTransformFeedbackVaryings typedef void (APIENTRYP GLEEPFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar* const * varyings, GLenum bufferMode); GLEE_EXTERN GLEEPFNGLTRANSFORMFEEDBACKVARYINGSPROC GLeeFuncPtr_glTransformFeedbackVaryings; #define glTransformFeedbackVaryings GLeeFuncPtr_glTransformFeedbackVaryings #endif #ifndef GLEE_H_DEFINED_glGetTransformFeedbackVarying #define GLEE_H_DEFINED_glGetTransformFeedbackVarying typedef void (APIENTRYP GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); GLEE_EXTERN GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGPROC GLeeFuncPtr_glGetTransformFeedbackVarying; #define glGetTransformFeedbackVarying GLeeFuncPtr_glGetTransformFeedbackVarying #endif #ifndef GLEE_H_DEFINED_glClampColor #define GLEE_H_DEFINED_glClampColor typedef void (APIENTRYP GLEEPFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp); GLEE_EXTERN GLEEPFNGLCLAMPCOLORPROC GLeeFuncPtr_glClampColor; #define glClampColor GLeeFuncPtr_glClampColor #endif #ifndef GLEE_H_DEFINED_glBeginConditionalRender #define GLEE_H_DEFINED_glBeginConditionalRender typedef void (APIENTRYP GLEEPFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode); GLEE_EXTERN GLEEPFNGLBEGINCONDITIONALRENDERPROC GLeeFuncPtr_glBeginConditionalRender; #define glBeginConditionalRender GLeeFuncPtr_glBeginConditionalRender #endif #ifndef GLEE_H_DEFINED_glEndConditionalRender #define GLEE_H_DEFINED_glEndConditionalRender typedef void (APIENTRYP GLEEPFNGLENDCONDITIONALRENDERPROC) (); GLEE_EXTERN GLEEPFNGLENDCONDITIONALRENDERPROC GLeeFuncPtr_glEndConditionalRender; #define glEndConditionalRender GLeeFuncPtr_glEndConditionalRender #endif #ifndef GLEE_H_DEFINED_glVertexAttribIPointer #define GLEE_H_DEFINED_glVertexAttribIPointer typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBIPOINTERPROC GLeeFuncPtr_glVertexAttribIPointer; #define glVertexAttribIPointer GLeeFuncPtr_glVertexAttribIPointer #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribIiv #define GLEE_H_DEFINED_glGetVertexAttribIiv typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBIIVPROC GLeeFuncPtr_glGetVertexAttribIiv; #define glGetVertexAttribIiv GLeeFuncPtr_glGetVertexAttribIiv #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribIuiv #define GLEE_H_DEFINED_glGetVertexAttribIuiv typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBIUIVPROC GLeeFuncPtr_glGetVertexAttribIuiv; #define glGetVertexAttribIuiv GLeeFuncPtr_glGetVertexAttribIuiv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI1i #define GLEE_H_DEFINED_glVertexAttribI1i typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI1IPROC GLeeFuncPtr_glVertexAttribI1i; #define glVertexAttribI1i GLeeFuncPtr_glVertexAttribI1i #endif #ifndef GLEE_H_DEFINED_glVertexAttribI2i #define GLEE_H_DEFINED_glVertexAttribI2i typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI2IPROC GLeeFuncPtr_glVertexAttribI2i; #define glVertexAttribI2i GLeeFuncPtr_glVertexAttribI2i #endif #ifndef GLEE_H_DEFINED_glVertexAttribI3i #define GLEE_H_DEFINED_glVertexAttribI3i typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI3IPROC GLeeFuncPtr_glVertexAttribI3i; #define glVertexAttribI3i GLeeFuncPtr_glVertexAttribI3i #endif #ifndef GLEE_H_DEFINED_glVertexAttribI4i #define GLEE_H_DEFINED_glVertexAttribI4i typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI4IPROC GLeeFuncPtr_glVertexAttribI4i; #define glVertexAttribI4i GLeeFuncPtr_glVertexAttribI4i #endif #ifndef GLEE_H_DEFINED_glVertexAttribI1ui #define GLEE_H_DEFINED_glVertexAttribI1ui typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI1UIPROC GLeeFuncPtr_glVertexAttribI1ui; #define glVertexAttribI1ui GLeeFuncPtr_glVertexAttribI1ui #endif #ifndef GLEE_H_DEFINED_glVertexAttribI2ui #define GLEE_H_DEFINED_glVertexAttribI2ui typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI2UIPROC GLeeFuncPtr_glVertexAttribI2ui; #define glVertexAttribI2ui GLeeFuncPtr_glVertexAttribI2ui #endif #ifndef GLEE_H_DEFINED_glVertexAttribI3ui #define GLEE_H_DEFINED_glVertexAttribI3ui typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI3UIPROC GLeeFuncPtr_glVertexAttribI3ui; #define glVertexAttribI3ui GLeeFuncPtr_glVertexAttribI3ui #endif #ifndef GLEE_H_DEFINED_glVertexAttribI4ui #define GLEE_H_DEFINED_glVertexAttribI4ui typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI4UIPROC GLeeFuncPtr_glVertexAttribI4ui; #define glVertexAttribI4ui GLeeFuncPtr_glVertexAttribI4ui #endif #ifndef GLEE_H_DEFINED_glVertexAttribI1iv #define GLEE_H_DEFINED_glVertexAttribI1iv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI1IVPROC GLeeFuncPtr_glVertexAttribI1iv; #define glVertexAttribI1iv GLeeFuncPtr_glVertexAttribI1iv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI2iv #define GLEE_H_DEFINED_glVertexAttribI2iv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI2IVPROC GLeeFuncPtr_glVertexAttribI2iv; #define glVertexAttribI2iv GLeeFuncPtr_glVertexAttribI2iv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI3iv #define GLEE_H_DEFINED_glVertexAttribI3iv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI3IVPROC GLeeFuncPtr_glVertexAttribI3iv; #define glVertexAttribI3iv GLeeFuncPtr_glVertexAttribI3iv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI4iv #define GLEE_H_DEFINED_glVertexAttribI4iv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI4IVPROC GLeeFuncPtr_glVertexAttribI4iv; #define glVertexAttribI4iv GLeeFuncPtr_glVertexAttribI4iv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI1uiv #define GLEE_H_DEFINED_glVertexAttribI1uiv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI1UIVPROC GLeeFuncPtr_glVertexAttribI1uiv; #define glVertexAttribI1uiv GLeeFuncPtr_glVertexAttribI1uiv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI2uiv #define GLEE_H_DEFINED_glVertexAttribI2uiv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI2UIVPROC GLeeFuncPtr_glVertexAttribI2uiv; #define glVertexAttribI2uiv GLeeFuncPtr_glVertexAttribI2uiv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI3uiv #define GLEE_H_DEFINED_glVertexAttribI3uiv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI3UIVPROC GLeeFuncPtr_glVertexAttribI3uiv; #define glVertexAttribI3uiv GLeeFuncPtr_glVertexAttribI3uiv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI4uiv #define GLEE_H_DEFINED_glVertexAttribI4uiv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI4UIVPROC GLeeFuncPtr_glVertexAttribI4uiv; #define glVertexAttribI4uiv GLeeFuncPtr_glVertexAttribI4uiv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI4bv #define GLEE_H_DEFINED_glVertexAttribI4bv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI4BVPROC GLeeFuncPtr_glVertexAttribI4bv; #define glVertexAttribI4bv GLeeFuncPtr_glVertexAttribI4bv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI4sv #define GLEE_H_DEFINED_glVertexAttribI4sv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI4SVPROC GLeeFuncPtr_glVertexAttribI4sv; #define glVertexAttribI4sv GLeeFuncPtr_glVertexAttribI4sv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI4ubv #define GLEE_H_DEFINED_glVertexAttribI4ubv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI4UBVPROC GLeeFuncPtr_glVertexAttribI4ubv; #define glVertexAttribI4ubv GLeeFuncPtr_glVertexAttribI4ubv #endif #ifndef GLEE_H_DEFINED_glVertexAttribI4usv #define GLEE_H_DEFINED_glVertexAttribI4usv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBI4USVPROC GLeeFuncPtr_glVertexAttribI4usv; #define glVertexAttribI4usv GLeeFuncPtr_glVertexAttribI4usv #endif #ifndef GLEE_H_DEFINED_glGetUniformuiv #define GLEE_H_DEFINED_glGetUniformuiv typedef void (APIENTRYP GLEEPFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint * params); GLEE_EXTERN GLEEPFNGLGETUNIFORMUIVPROC GLeeFuncPtr_glGetUniformuiv; #define glGetUniformuiv GLeeFuncPtr_glGetUniformuiv #endif #ifndef GLEE_H_DEFINED_glBindFragDataLocation #define GLEE_H_DEFINED_glBindFragDataLocation typedef void (APIENTRYP GLEEPFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar * name); GLEE_EXTERN GLEEPFNGLBINDFRAGDATALOCATIONPROC GLeeFuncPtr_glBindFragDataLocation; #define glBindFragDataLocation GLeeFuncPtr_glBindFragDataLocation #endif #ifndef GLEE_H_DEFINED_glGetFragDataLocation #define GLEE_H_DEFINED_glGetFragDataLocation typedef GLint (APIENTRYP GLEEPFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETFRAGDATALOCATIONPROC GLeeFuncPtr_glGetFragDataLocation; #define glGetFragDataLocation GLeeFuncPtr_glGetFragDataLocation #endif #ifndef GLEE_H_DEFINED_glUniform1ui #define GLEE_H_DEFINED_glUniform1ui typedef void (APIENTRYP GLEEPFNGLUNIFORM1UIPROC) (GLint location, GLuint v0); GLEE_EXTERN GLEEPFNGLUNIFORM1UIPROC GLeeFuncPtr_glUniform1ui; #define glUniform1ui GLeeFuncPtr_glUniform1ui #endif #ifndef GLEE_H_DEFINED_glUniform2ui #define GLEE_H_DEFINED_glUniform2ui typedef void (APIENTRYP GLEEPFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1); GLEE_EXTERN GLEEPFNGLUNIFORM2UIPROC GLeeFuncPtr_glUniform2ui; #define glUniform2ui GLeeFuncPtr_glUniform2ui #endif #ifndef GLEE_H_DEFINED_glUniform3ui #define GLEE_H_DEFINED_glUniform3ui typedef void (APIENTRYP GLEEPFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); GLEE_EXTERN GLEEPFNGLUNIFORM3UIPROC GLeeFuncPtr_glUniform3ui; #define glUniform3ui GLeeFuncPtr_glUniform3ui #endif #ifndef GLEE_H_DEFINED_glUniform4ui #define GLEE_H_DEFINED_glUniform4ui typedef void (APIENTRYP GLEEPFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); GLEE_EXTERN GLEEPFNGLUNIFORM4UIPROC GLeeFuncPtr_glUniform4ui; #define glUniform4ui GLeeFuncPtr_glUniform4ui #endif #ifndef GLEE_H_DEFINED_glUniform1uiv #define GLEE_H_DEFINED_glUniform1uiv typedef void (APIENTRYP GLEEPFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLUNIFORM1UIVPROC GLeeFuncPtr_glUniform1uiv; #define glUniform1uiv GLeeFuncPtr_glUniform1uiv #endif #ifndef GLEE_H_DEFINED_glUniform2uiv #define GLEE_H_DEFINED_glUniform2uiv typedef void (APIENTRYP GLEEPFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLUNIFORM2UIVPROC GLeeFuncPtr_glUniform2uiv; #define glUniform2uiv GLeeFuncPtr_glUniform2uiv #endif #ifndef GLEE_H_DEFINED_glUniform3uiv #define GLEE_H_DEFINED_glUniform3uiv typedef void (APIENTRYP GLEEPFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLUNIFORM3UIVPROC GLeeFuncPtr_glUniform3uiv; #define glUniform3uiv GLeeFuncPtr_glUniform3uiv #endif #ifndef GLEE_H_DEFINED_glUniform4uiv #define GLEE_H_DEFINED_glUniform4uiv typedef void (APIENTRYP GLEEPFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLUNIFORM4UIVPROC GLeeFuncPtr_glUniform4uiv; #define glUniform4uiv GLeeFuncPtr_glUniform4uiv #endif #ifndef GLEE_H_DEFINED_glTexParameterIiv #define GLEE_H_DEFINED_glTexParameterIiv typedef void (APIENTRYP GLEEPFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLTEXPARAMETERIIVPROC GLeeFuncPtr_glTexParameterIiv; #define glTexParameterIiv GLeeFuncPtr_glTexParameterIiv #endif #ifndef GLEE_H_DEFINED_glTexParameterIuiv #define GLEE_H_DEFINED_glTexParameterIuiv typedef void (APIENTRYP GLEEPFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint * params); GLEE_EXTERN GLEEPFNGLTEXPARAMETERIUIVPROC GLeeFuncPtr_glTexParameterIuiv; #define glTexParameterIuiv GLeeFuncPtr_glTexParameterIuiv #endif #ifndef GLEE_H_DEFINED_glGetTexParameterIiv #define GLEE_H_DEFINED_glGetTexParameterIiv typedef void (APIENTRYP GLEEPFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETTEXPARAMETERIIVPROC GLeeFuncPtr_glGetTexParameterIiv; #define glGetTexParameterIiv GLeeFuncPtr_glGetTexParameterIiv #endif #ifndef GLEE_H_DEFINED_glGetTexParameterIuiv #define GLEE_H_DEFINED_glGetTexParameterIuiv typedef void (APIENTRYP GLEEPFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint * params); GLEE_EXTERN GLEEPFNGLGETTEXPARAMETERIUIVPROC GLeeFuncPtr_glGetTexParameterIuiv; #define glGetTexParameterIuiv GLeeFuncPtr_glGetTexParameterIuiv #endif #ifndef GLEE_H_DEFINED_glClearBufferiv #define GLEE_H_DEFINED_glClearBufferiv typedef void (APIENTRYP GLEEPFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint * value); GLEE_EXTERN GLEEPFNGLCLEARBUFFERIVPROC GLeeFuncPtr_glClearBufferiv; #define glClearBufferiv GLeeFuncPtr_glClearBufferiv #endif #ifndef GLEE_H_DEFINED_glClearBufferuiv #define GLEE_H_DEFINED_glClearBufferuiv typedef void (APIENTRYP GLEEPFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint * value); GLEE_EXTERN GLEEPFNGLCLEARBUFFERUIVPROC GLeeFuncPtr_glClearBufferuiv; #define glClearBufferuiv GLeeFuncPtr_glClearBufferuiv #endif #ifndef GLEE_H_DEFINED_glClearBufferfv #define GLEE_H_DEFINED_glClearBufferfv typedef void (APIENTRYP GLEEPFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat * value); GLEE_EXTERN GLEEPFNGLCLEARBUFFERFVPROC GLeeFuncPtr_glClearBufferfv; #define glClearBufferfv GLeeFuncPtr_glClearBufferfv #endif #ifndef GLEE_H_DEFINED_glClearBufferfi #define GLEE_H_DEFINED_glClearBufferfi typedef void (APIENTRYP GLEEPFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); GLEE_EXTERN GLEEPFNGLCLEARBUFFERFIPROC GLeeFuncPtr_glClearBufferfi; #define glClearBufferfi GLeeFuncPtr_glClearBufferfi #endif #ifndef GLEE_H_DEFINED_glGetStringi #define GLEE_H_DEFINED_glGetStringi typedef const GLubyte * (APIENTRYP GLEEPFNGLGETSTRINGIPROC) (GLenum name, GLuint index); GLEE_EXTERN GLEEPFNGLGETSTRINGIPROC GLeeFuncPtr_glGetStringi; #define glGetStringi GLeeFuncPtr_glGetStringi #endif #endif /* GL_VERSION_3_1 */ #ifndef GL_VERSION_3_1 #define GL_VERSION_3_1 1 #define __GLEE_GL_VERSION_3_1 1 /* Constants */ #define GL_SAMPLER_2D_RECT 0x8B63 #define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 #define GL_SAMPLER_BUFFER 0x8DC2 #define GL_INT_SAMPLER_2D_RECT 0x8DCD #define GL_INT_SAMPLER_BUFFER 0x8DD0 #define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 #define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 #define GL_TEXTURE_BUFFER 0x8C2A #define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B #define GL_TEXTURE_BINDING_BUFFER 0x8C2C #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D #define GL_TEXTURE_RECTANGLE 0x84F5 #define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 #define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 #define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 #define GL_RED_SNORM 0x8F90 #define GL_RG_SNORM 0x8F91 #define GL_RGB_SNORM 0x8F92 #define GL_RGBA_SNORM 0x8F93 #define GL_R8_SNORM 0x8F94 #define GL_RG8_SNORM 0x8F95 #define GL_RGB8_SNORM 0x8F96 #define GL_RGBA8_SNORM 0x8F97 #define GL_R16_SNORM 0x8F98 #define GL_RG16_SNORM 0x8F99 #define GL_RGB16_SNORM 0x8F9A #define GL_RGBA16_SNORM 0x8F9B #define GL_SIGNED_NORMALIZED 0x8F9C #define GL_PRIMITIVE_RESTART 0x8F9D #define GL_PRIMITIVE_RESTART_INDEX 0x8F9E #ifndef GLEE_H_DEFINED_glDrawArraysInstanced #define GLEE_H_DEFINED_glDrawArraysInstanced typedef void (APIENTRYP GLEEPFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount); GLEE_EXTERN GLEEPFNGLDRAWARRAYSINSTANCEDPROC GLeeFuncPtr_glDrawArraysInstanced; #define glDrawArraysInstanced GLeeFuncPtr_glDrawArraysInstanced #endif #ifndef GLEE_H_DEFINED_glDrawElementsInstanced #define GLEE_H_DEFINED_glDrawElementsInstanced typedef void (APIENTRYP GLEEPFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei instancecount); GLEE_EXTERN GLEEPFNGLDRAWELEMENTSINSTANCEDPROC GLeeFuncPtr_glDrawElementsInstanced; #define glDrawElementsInstanced GLeeFuncPtr_glDrawElementsInstanced #endif #ifndef GLEE_H_DEFINED_glTexBuffer #define GLEE_H_DEFINED_glTexBuffer typedef void (APIENTRYP GLEEPFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer); GLEE_EXTERN GLEEPFNGLTEXBUFFERPROC GLeeFuncPtr_glTexBuffer; #define glTexBuffer GLeeFuncPtr_glTexBuffer #endif #ifndef GLEE_H_DEFINED_glPrimitiveRestartIndex #define GLEE_H_DEFINED_glPrimitiveRestartIndex typedef void (APIENTRYP GLEEPFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index); GLEE_EXTERN GLEEPFNGLPRIMITIVERESTARTINDEXPROC GLeeFuncPtr_glPrimitiveRestartIndex; #define glPrimitiveRestartIndex GLeeFuncPtr_glPrimitiveRestartIndex #endif #endif /* GL_VERSION_3_2 */ #ifndef GL_VERSION_3_2 #define GL_VERSION_3_2 1 #define __GLEE_GL_VERSION_3_2 1 /* Constants */ #define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 #define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 #define GL_LINES_ADJACENCY 0x000A #define GL_LINE_STRIP_ADJACENCY 0x000B #define GL_TRIANGLES_ADJACENCY 0x000C #define GL_TRIANGLE_STRIP_ADJACENCY 0x000D #define GL_PROGRAM_POINT_SIZE 0x8642 #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 #define GL_GEOMETRY_SHADER 0x8DD9 #define GL_GEOMETRY_VERTICES_OUT 0x8916 #define GL_GEOMETRY_INPUT_TYPE 0x8917 #define GL_GEOMETRY_OUTPUT_TYPE 0x8918 #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF #define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 #define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 #define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 #define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 #define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 #define GL_CONTEXT_PROFILE_MASK 0x9126 #ifndef GLEE_H_DEFINED_glGetInteger64i_v #define GLEE_H_DEFINED_glGetInteger64i_v typedef void (APIENTRYP GLEEPFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 * data); GLEE_EXTERN GLEEPFNGLGETINTEGER64I_VPROC GLeeFuncPtr_glGetInteger64i_v; #define glGetInteger64i_v GLeeFuncPtr_glGetInteger64i_v #endif #ifndef GLEE_H_DEFINED_glGetBufferParameteri64v #define GLEE_H_DEFINED_glGetBufferParameteri64v typedef void (APIENTRYP GLEEPFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 * params); GLEE_EXTERN GLEEPFNGLGETBUFFERPARAMETERI64VPROC GLeeFuncPtr_glGetBufferParameteri64v; #define glGetBufferParameteri64v GLeeFuncPtr_glGetBufferParameteri64v #endif #ifndef GLEE_H_DEFINED_glFramebufferTexture #define GLEE_H_DEFINED_glFramebufferTexture typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTUREPROC GLeeFuncPtr_glFramebufferTexture; #define glFramebufferTexture GLeeFuncPtr_glFramebufferTexture #endif #endif /* GL_VERSION_3_3 */ #ifndef GL_VERSION_3_3 #define GL_VERSION_3_3 1 #define __GLEE_GL_VERSION_3_3 1 /* Constants */ #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE #ifndef GLEE_H_DEFINED_glVertexAttribDivisor #define GLEE_H_DEFINED_glVertexAttribDivisor typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBDIVISORPROC GLeeFuncPtr_glVertexAttribDivisor; #define glVertexAttribDivisor GLeeFuncPtr_glVertexAttribDivisor #endif #endif /* GL_VERSION_4_0 */ #ifndef GL_VERSION_4_0 #define GL_VERSION_4_0 1 #define __GLEE_GL_VERSION_4_0 1 /* Constants */ #define GL_SAMPLE_SHADING 0x8C36 #define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37 #define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E #define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F #define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009 #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A #define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B #define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D #define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F #ifndef GLEE_H_DEFINED_glMinSampleShading #define GLEE_H_DEFINED_glMinSampleShading typedef void (APIENTRYP GLEEPFNGLMINSAMPLESHADINGPROC) (GLfloat value); GLEE_EXTERN GLEEPFNGLMINSAMPLESHADINGPROC GLeeFuncPtr_glMinSampleShading; #define glMinSampleShading GLeeFuncPtr_glMinSampleShading #endif #ifndef GLEE_H_DEFINED_glBlendEquationi #define GLEE_H_DEFINED_glBlendEquationi typedef void (APIENTRYP GLEEPFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode); GLEE_EXTERN GLEEPFNGLBLENDEQUATIONIPROC GLeeFuncPtr_glBlendEquationi; #define glBlendEquationi GLeeFuncPtr_glBlendEquationi #endif #ifndef GLEE_H_DEFINED_glBlendEquationSeparatei #define GLEE_H_DEFINED_glBlendEquationSeparatei typedef void (APIENTRYP GLEEPFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); GLEE_EXTERN GLEEPFNGLBLENDEQUATIONSEPARATEIPROC GLeeFuncPtr_glBlendEquationSeparatei; #define glBlendEquationSeparatei GLeeFuncPtr_glBlendEquationSeparatei #endif #ifndef GLEE_H_DEFINED_glBlendFunci #define GLEE_H_DEFINED_glBlendFunci typedef void (APIENTRYP GLEEPFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst); GLEE_EXTERN GLEEPFNGLBLENDFUNCIPROC GLeeFuncPtr_glBlendFunci; #define glBlendFunci GLeeFuncPtr_glBlendFunci #endif #ifndef GLEE_H_DEFINED_glBlendFuncSeparatei #define GLEE_H_DEFINED_glBlendFuncSeparatei typedef void (APIENTRYP GLEEPFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); GLEE_EXTERN GLEEPFNGLBLENDFUNCSEPARATEIPROC GLeeFuncPtr_glBlendFuncSeparatei; #define glBlendFuncSeparatei GLeeFuncPtr_glBlendFuncSeparatei #endif #endif /* GL_VERSION_4_1 */ #ifndef GL_VERSION_4_1 #define GL_VERSION_4_1 1 #define __GLEE_GL_VERSION_4_1 1 /* Constants */ #endif /* GL_VERSION_4_2 */ #ifndef GL_VERSION_4_2 #define GL_VERSION_4_2 1 #define __GLEE_GL_VERSION_4_2 1 /* Constants */ #endif /* GL_VERSION_4_3 */ #ifndef GL_VERSION_4_3 #define GL_VERSION_4_3 1 #define __GLEE_GL_VERSION_4_3 1 /* Constants */ #define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9 #define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E #endif /* GL_ARB_multitexture */ #ifndef GL_ARB_multitexture #define GL_ARB_multitexture 1 #define __GLEE_GL_ARB_multitexture 1 /* Constants */ #define GL_TEXTURE0_ARB 0x84C0 #define GL_TEXTURE1_ARB 0x84C1 #define GL_TEXTURE2_ARB 0x84C2 #define GL_TEXTURE3_ARB 0x84C3 #define GL_TEXTURE4_ARB 0x84C4 #define GL_TEXTURE5_ARB 0x84C5 #define GL_TEXTURE6_ARB 0x84C6 #define GL_TEXTURE7_ARB 0x84C7 #define GL_TEXTURE8_ARB 0x84C8 #define GL_TEXTURE9_ARB 0x84C9 #define GL_TEXTURE10_ARB 0x84CA #define GL_TEXTURE11_ARB 0x84CB #define GL_TEXTURE12_ARB 0x84CC #define GL_TEXTURE13_ARB 0x84CD #define GL_TEXTURE14_ARB 0x84CE #define GL_TEXTURE15_ARB 0x84CF #define GL_TEXTURE16_ARB 0x84D0 #define GL_TEXTURE17_ARB 0x84D1 #define GL_TEXTURE18_ARB 0x84D2 #define GL_TEXTURE19_ARB 0x84D3 #define GL_TEXTURE20_ARB 0x84D4 #define GL_TEXTURE21_ARB 0x84D5 #define GL_TEXTURE22_ARB 0x84D6 #define GL_TEXTURE23_ARB 0x84D7 #define GL_TEXTURE24_ARB 0x84D8 #define GL_TEXTURE25_ARB 0x84D9 #define GL_TEXTURE26_ARB 0x84DA #define GL_TEXTURE27_ARB 0x84DB #define GL_TEXTURE28_ARB 0x84DC #define GL_TEXTURE29_ARB 0x84DD #define GL_TEXTURE30_ARB 0x84DE #define GL_TEXTURE31_ARB 0x84DF #define GL_ACTIVE_TEXTURE_ARB 0x84E0 #define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 #define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 #ifndef GLEE_H_DEFINED_glActiveTextureARB #define GLEE_H_DEFINED_glActiveTextureARB typedef void (APIENTRYP GLEEPFNGLACTIVETEXTUREARBPROC) (GLenum texture); GLEE_EXTERN GLEEPFNGLACTIVETEXTUREARBPROC GLeeFuncPtr_glActiveTextureARB; #define glActiveTextureARB GLeeFuncPtr_glActiveTextureARB #endif #ifndef GLEE_H_DEFINED_glClientActiveTextureARB #define GLEE_H_DEFINED_glClientActiveTextureARB typedef void (APIENTRYP GLEEPFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); GLEE_EXTERN GLEEPFNGLCLIENTACTIVETEXTUREARBPROC GLeeFuncPtr_glClientActiveTextureARB; #define glClientActiveTextureARB GLeeFuncPtr_glClientActiveTextureARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1dARB #define GLEE_H_DEFINED_glMultiTexCoord1dARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1DARBPROC GLeeFuncPtr_glMultiTexCoord1dARB; #define glMultiTexCoord1dARB GLeeFuncPtr_glMultiTexCoord1dARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1dvARB #define GLEE_H_DEFINED_glMultiTexCoord1dvARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1DVARBPROC GLeeFuncPtr_glMultiTexCoord1dvARB; #define glMultiTexCoord1dvARB GLeeFuncPtr_glMultiTexCoord1dvARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1fARB #define GLEE_H_DEFINED_glMultiTexCoord1fARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1FARBPROC GLeeFuncPtr_glMultiTexCoord1fARB; #define glMultiTexCoord1fARB GLeeFuncPtr_glMultiTexCoord1fARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1fvARB #define GLEE_H_DEFINED_glMultiTexCoord1fvARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1FVARBPROC GLeeFuncPtr_glMultiTexCoord1fvARB; #define glMultiTexCoord1fvARB GLeeFuncPtr_glMultiTexCoord1fvARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1iARB #define GLEE_H_DEFINED_glMultiTexCoord1iARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1IARBPROC GLeeFuncPtr_glMultiTexCoord1iARB; #define glMultiTexCoord1iARB GLeeFuncPtr_glMultiTexCoord1iARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1ivARB #define GLEE_H_DEFINED_glMultiTexCoord1ivARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1IVARBPROC GLeeFuncPtr_glMultiTexCoord1ivARB; #define glMultiTexCoord1ivARB GLeeFuncPtr_glMultiTexCoord1ivARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1sARB #define GLEE_H_DEFINED_glMultiTexCoord1sARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1SARBPROC GLeeFuncPtr_glMultiTexCoord1sARB; #define glMultiTexCoord1sARB GLeeFuncPtr_glMultiTexCoord1sARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1svARB #define GLEE_H_DEFINED_glMultiTexCoord1svARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1SVARBPROC GLeeFuncPtr_glMultiTexCoord1svARB; #define glMultiTexCoord1svARB GLeeFuncPtr_glMultiTexCoord1svARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2dARB #define GLEE_H_DEFINED_glMultiTexCoord2dARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2DARBPROC GLeeFuncPtr_glMultiTexCoord2dARB; #define glMultiTexCoord2dARB GLeeFuncPtr_glMultiTexCoord2dARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2dvARB #define GLEE_H_DEFINED_glMultiTexCoord2dvARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2DVARBPROC GLeeFuncPtr_glMultiTexCoord2dvARB; #define glMultiTexCoord2dvARB GLeeFuncPtr_glMultiTexCoord2dvARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2fARB #define GLEE_H_DEFINED_glMultiTexCoord2fARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2FARBPROC GLeeFuncPtr_glMultiTexCoord2fARB; #define glMultiTexCoord2fARB GLeeFuncPtr_glMultiTexCoord2fARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2fvARB #define GLEE_H_DEFINED_glMultiTexCoord2fvARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2FVARBPROC GLeeFuncPtr_glMultiTexCoord2fvARB; #define glMultiTexCoord2fvARB GLeeFuncPtr_glMultiTexCoord2fvARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2iARB #define GLEE_H_DEFINED_glMultiTexCoord2iARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2IARBPROC GLeeFuncPtr_glMultiTexCoord2iARB; #define glMultiTexCoord2iARB GLeeFuncPtr_glMultiTexCoord2iARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2ivARB #define GLEE_H_DEFINED_glMultiTexCoord2ivARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2IVARBPROC GLeeFuncPtr_glMultiTexCoord2ivARB; #define glMultiTexCoord2ivARB GLeeFuncPtr_glMultiTexCoord2ivARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2sARB #define GLEE_H_DEFINED_glMultiTexCoord2sARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2SARBPROC GLeeFuncPtr_glMultiTexCoord2sARB; #define glMultiTexCoord2sARB GLeeFuncPtr_glMultiTexCoord2sARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2svARB #define GLEE_H_DEFINED_glMultiTexCoord2svARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2SVARBPROC GLeeFuncPtr_glMultiTexCoord2svARB; #define glMultiTexCoord2svARB GLeeFuncPtr_glMultiTexCoord2svARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3dARB #define GLEE_H_DEFINED_glMultiTexCoord3dARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3DARBPROC GLeeFuncPtr_glMultiTexCoord3dARB; #define glMultiTexCoord3dARB GLeeFuncPtr_glMultiTexCoord3dARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3dvARB #define GLEE_H_DEFINED_glMultiTexCoord3dvARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3DVARBPROC GLeeFuncPtr_glMultiTexCoord3dvARB; #define glMultiTexCoord3dvARB GLeeFuncPtr_glMultiTexCoord3dvARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3fARB #define GLEE_H_DEFINED_glMultiTexCoord3fARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3FARBPROC GLeeFuncPtr_glMultiTexCoord3fARB; #define glMultiTexCoord3fARB GLeeFuncPtr_glMultiTexCoord3fARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3fvARB #define GLEE_H_DEFINED_glMultiTexCoord3fvARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3FVARBPROC GLeeFuncPtr_glMultiTexCoord3fvARB; #define glMultiTexCoord3fvARB GLeeFuncPtr_glMultiTexCoord3fvARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3iARB #define GLEE_H_DEFINED_glMultiTexCoord3iARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3IARBPROC GLeeFuncPtr_glMultiTexCoord3iARB; #define glMultiTexCoord3iARB GLeeFuncPtr_glMultiTexCoord3iARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3ivARB #define GLEE_H_DEFINED_glMultiTexCoord3ivARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3IVARBPROC GLeeFuncPtr_glMultiTexCoord3ivARB; #define glMultiTexCoord3ivARB GLeeFuncPtr_glMultiTexCoord3ivARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3sARB #define GLEE_H_DEFINED_glMultiTexCoord3sARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3SARBPROC GLeeFuncPtr_glMultiTexCoord3sARB; #define glMultiTexCoord3sARB GLeeFuncPtr_glMultiTexCoord3sARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3svARB #define GLEE_H_DEFINED_glMultiTexCoord3svARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3SVARBPROC GLeeFuncPtr_glMultiTexCoord3svARB; #define glMultiTexCoord3svARB GLeeFuncPtr_glMultiTexCoord3svARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4dARB #define GLEE_H_DEFINED_glMultiTexCoord4dARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4DARBPROC GLeeFuncPtr_glMultiTexCoord4dARB; #define glMultiTexCoord4dARB GLeeFuncPtr_glMultiTexCoord4dARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4dvARB #define GLEE_H_DEFINED_glMultiTexCoord4dvARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4DVARBPROC GLeeFuncPtr_glMultiTexCoord4dvARB; #define glMultiTexCoord4dvARB GLeeFuncPtr_glMultiTexCoord4dvARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4fARB #define GLEE_H_DEFINED_glMultiTexCoord4fARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4FARBPROC GLeeFuncPtr_glMultiTexCoord4fARB; #define glMultiTexCoord4fARB GLeeFuncPtr_glMultiTexCoord4fARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4fvARB #define GLEE_H_DEFINED_glMultiTexCoord4fvARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4FVARBPROC GLeeFuncPtr_glMultiTexCoord4fvARB; #define glMultiTexCoord4fvARB GLeeFuncPtr_glMultiTexCoord4fvARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4iARB #define GLEE_H_DEFINED_glMultiTexCoord4iARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4IARBPROC GLeeFuncPtr_glMultiTexCoord4iARB; #define glMultiTexCoord4iARB GLeeFuncPtr_glMultiTexCoord4iARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4ivARB #define GLEE_H_DEFINED_glMultiTexCoord4ivARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4IVARBPROC GLeeFuncPtr_glMultiTexCoord4ivARB; #define glMultiTexCoord4ivARB GLeeFuncPtr_glMultiTexCoord4ivARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4sARB #define GLEE_H_DEFINED_glMultiTexCoord4sARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4SARBPROC GLeeFuncPtr_glMultiTexCoord4sARB; #define glMultiTexCoord4sARB GLeeFuncPtr_glMultiTexCoord4sARB #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4svARB #define GLEE_H_DEFINED_glMultiTexCoord4svARB typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4SVARBPROC GLeeFuncPtr_glMultiTexCoord4svARB; #define glMultiTexCoord4svARB GLeeFuncPtr_glMultiTexCoord4svARB #endif #endif /* GL_ARB_transpose_matrix */ #ifndef GL_ARB_transpose_matrix #define GL_ARB_transpose_matrix 1 #define __GLEE_GL_ARB_transpose_matrix 1 /* Constants */ #define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 #define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 #define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 #define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 #ifndef GLEE_H_DEFINED_glLoadTransposeMatrixfARB #define GLEE_H_DEFINED_glLoadTransposeMatrixfARB typedef void (APIENTRYP GLEEPFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat * m); GLEE_EXTERN GLEEPFNGLLOADTRANSPOSEMATRIXFARBPROC GLeeFuncPtr_glLoadTransposeMatrixfARB; #define glLoadTransposeMatrixfARB GLeeFuncPtr_glLoadTransposeMatrixfARB #endif #ifndef GLEE_H_DEFINED_glLoadTransposeMatrixdARB #define GLEE_H_DEFINED_glLoadTransposeMatrixdARB typedef void (APIENTRYP GLEEPFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble * m); GLEE_EXTERN GLEEPFNGLLOADTRANSPOSEMATRIXDARBPROC GLeeFuncPtr_glLoadTransposeMatrixdARB; #define glLoadTransposeMatrixdARB GLeeFuncPtr_glLoadTransposeMatrixdARB #endif #ifndef GLEE_H_DEFINED_glMultTransposeMatrixfARB #define GLEE_H_DEFINED_glMultTransposeMatrixfARB typedef void (APIENTRYP GLEEPFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat * m); GLEE_EXTERN GLEEPFNGLMULTTRANSPOSEMATRIXFARBPROC GLeeFuncPtr_glMultTransposeMatrixfARB; #define glMultTransposeMatrixfARB GLeeFuncPtr_glMultTransposeMatrixfARB #endif #ifndef GLEE_H_DEFINED_glMultTransposeMatrixdARB #define GLEE_H_DEFINED_glMultTransposeMatrixdARB typedef void (APIENTRYP GLEEPFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble * m); GLEE_EXTERN GLEEPFNGLMULTTRANSPOSEMATRIXDARBPROC GLeeFuncPtr_glMultTransposeMatrixdARB; #define glMultTransposeMatrixdARB GLeeFuncPtr_glMultTransposeMatrixdARB #endif #endif /* GL_ARB_multisample */ #ifndef GL_ARB_multisample #define GL_ARB_multisample 1 #define __GLEE_GL_ARB_multisample 1 /* Constants */ #define GL_MULTISAMPLE_ARB 0x809D #define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E #define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F #define GL_SAMPLE_COVERAGE_ARB 0x80A0 #define GL_SAMPLE_BUFFERS_ARB 0x80A8 #define GL_SAMPLES_ARB 0x80A9 #define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA #define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB #define GL_MULTISAMPLE_BIT_ARB 0x20000000 #ifndef GLEE_H_DEFINED_glSampleCoverageARB #define GLEE_H_DEFINED_glSampleCoverageARB typedef void (APIENTRYP GLEEPFNGLSAMPLECOVERAGEARBPROC) (GLfloat value, GLboolean invert); GLEE_EXTERN GLEEPFNGLSAMPLECOVERAGEARBPROC GLeeFuncPtr_glSampleCoverageARB; #define glSampleCoverageARB GLeeFuncPtr_glSampleCoverageARB #endif #endif /* GL_ARB_texture_env_add */ #ifndef GL_ARB_texture_env_add #define GL_ARB_texture_env_add 1 #define __GLEE_GL_ARB_texture_env_add 1 /* Constants */ #endif /* GL_ARB_texture_cube_map */ #ifndef GL_ARB_texture_cube_map #define GL_ARB_texture_cube_map 1 #define __GLEE_GL_ARB_texture_cube_map 1 /* Constants */ #define GL_NORMAL_MAP_ARB 0x8511 #define GL_REFLECTION_MAP_ARB 0x8512 #define GL_TEXTURE_CUBE_MAP_ARB 0x8513 #define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A #define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C #endif /* GL_ARB_texture_compression */ #ifndef GL_ARB_texture_compression #define GL_ARB_texture_compression 1 #define __GLEE_GL_ARB_texture_compression 1 /* Constants */ #define GL_COMPRESSED_ALPHA_ARB 0x84E9 #define GL_COMPRESSED_LUMINANCE_ARB 0x84EA #define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB #define GL_COMPRESSED_INTENSITY_ARB 0x84EC #define GL_COMPRESSED_RGB_ARB 0x84ED #define GL_COMPRESSED_RGBA_ARB 0x84EE #define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF #define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 #define GL_TEXTURE_COMPRESSED_ARB 0x86A1 #define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 #define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 #ifndef GLEE_H_DEFINED_glCompressedTexImage3DARB #define GLEE_H_DEFINED_glCompressedTexImage3DARB typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXIMAGE3DARBPROC GLeeFuncPtr_glCompressedTexImage3DARB; #define glCompressedTexImage3DARB GLeeFuncPtr_glCompressedTexImage3DARB #endif #ifndef GLEE_H_DEFINED_glCompressedTexImage2DARB #define GLEE_H_DEFINED_glCompressedTexImage2DARB typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXIMAGE2DARBPROC GLeeFuncPtr_glCompressedTexImage2DARB; #define glCompressedTexImage2DARB GLeeFuncPtr_glCompressedTexImage2DARB #endif #ifndef GLEE_H_DEFINED_glCompressedTexImage1DARB #define GLEE_H_DEFINED_glCompressedTexImage1DARB typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXIMAGE1DARBPROC GLeeFuncPtr_glCompressedTexImage1DARB; #define glCompressedTexImage1DARB GLeeFuncPtr_glCompressedTexImage1DARB #endif #ifndef GLEE_H_DEFINED_glCompressedTexSubImage3DARB #define GLEE_H_DEFINED_glCompressedTexSubImage3DARB typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC GLeeFuncPtr_glCompressedTexSubImage3DARB; #define glCompressedTexSubImage3DARB GLeeFuncPtr_glCompressedTexSubImage3DARB #endif #ifndef GLEE_H_DEFINED_glCompressedTexSubImage2DARB #define GLEE_H_DEFINED_glCompressedTexSubImage2DARB typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC GLeeFuncPtr_glCompressedTexSubImage2DARB; #define glCompressedTexSubImage2DARB GLeeFuncPtr_glCompressedTexSubImage2DARB #endif #ifndef GLEE_H_DEFINED_glCompressedTexSubImage1DARB #define GLEE_H_DEFINED_glCompressedTexSubImage1DARB typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC GLeeFuncPtr_glCompressedTexSubImage1DARB; #define glCompressedTexSubImage1DARB GLeeFuncPtr_glCompressedTexSubImage1DARB #endif #ifndef GLEE_H_DEFINED_glGetCompressedTexImageARB #define GLEE_H_DEFINED_glGetCompressedTexImageARB typedef void (APIENTRYP GLEEPFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid * img); GLEE_EXTERN GLEEPFNGLGETCOMPRESSEDTEXIMAGEARBPROC GLeeFuncPtr_glGetCompressedTexImageARB; #define glGetCompressedTexImageARB GLeeFuncPtr_glGetCompressedTexImageARB #endif #endif /* GL_ARB_texture_border_clamp */ #ifndef GL_ARB_texture_border_clamp #define GL_ARB_texture_border_clamp 1 #define __GLEE_GL_ARB_texture_border_clamp 1 /* Constants */ #define GL_CLAMP_TO_BORDER_ARB 0x812D #endif /* GL_ARB_point_parameters */ #ifndef GL_ARB_point_parameters #define GL_ARB_point_parameters 1 #define __GLEE_GL_ARB_point_parameters 1 /* Constants */ #define GL_POINT_SIZE_MIN_ARB 0x8126 #define GL_POINT_SIZE_MAX_ARB 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 #define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 #ifndef GLEE_H_DEFINED_glPointParameterfARB #define GLEE_H_DEFINED_glPointParameterfARB typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERFARBPROC GLeeFuncPtr_glPointParameterfARB; #define glPointParameterfARB GLeeFuncPtr_glPointParameterfARB #endif #ifndef GLEE_H_DEFINED_glPointParameterfvARB #define GLEE_H_DEFINED_glPointParameterfvARB typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERFVARBPROC GLeeFuncPtr_glPointParameterfvARB; #define glPointParameterfvARB GLeeFuncPtr_glPointParameterfvARB #endif #endif /* GL_ARB_vertex_blend */ #ifndef GL_ARB_vertex_blend #define GL_ARB_vertex_blend 1 #define __GLEE_GL_ARB_vertex_blend 1 /* Constants */ #define GL_MAX_VERTEX_UNITS_ARB 0x86A4 #define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 #define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 #define GL_VERTEX_BLEND_ARB 0x86A7 #define GL_CURRENT_WEIGHT_ARB 0x86A8 #define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 #define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA #define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB #define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC #define GL_WEIGHT_ARRAY_ARB 0x86AD #define GL_MODELVIEW0_ARB 0x1700 #define GL_MODELVIEW1_ARB 0x850A #define GL_MODELVIEW2_ARB 0x8722 #define GL_MODELVIEW3_ARB 0x8723 #define GL_MODELVIEW4_ARB 0x8724 #define GL_MODELVIEW5_ARB 0x8725 #define GL_MODELVIEW6_ARB 0x8726 #define GL_MODELVIEW7_ARB 0x8727 #define GL_MODELVIEW8_ARB 0x8728 #define GL_MODELVIEW9_ARB 0x8729 #define GL_MODELVIEW10_ARB 0x872A #define GL_MODELVIEW11_ARB 0x872B #define GL_MODELVIEW12_ARB 0x872C #define GL_MODELVIEW13_ARB 0x872D #define GL_MODELVIEW14_ARB 0x872E #define GL_MODELVIEW15_ARB 0x872F #define GL_MODELVIEW16_ARB 0x8730 #define GL_MODELVIEW17_ARB 0x8731 #define GL_MODELVIEW18_ARB 0x8732 #define GL_MODELVIEW19_ARB 0x8733 #define GL_MODELVIEW20_ARB 0x8734 #define GL_MODELVIEW21_ARB 0x8735 #define GL_MODELVIEW22_ARB 0x8736 #define GL_MODELVIEW23_ARB 0x8737 #define GL_MODELVIEW24_ARB 0x8738 #define GL_MODELVIEW25_ARB 0x8739 #define GL_MODELVIEW26_ARB 0x873A #define GL_MODELVIEW27_ARB 0x873B #define GL_MODELVIEW28_ARB 0x873C #define GL_MODELVIEW29_ARB 0x873D #define GL_MODELVIEW30_ARB 0x873E #define GL_MODELVIEW31_ARB 0x873F #ifndef GLEE_H_DEFINED_glWeightbvARB #define GLEE_H_DEFINED_glWeightbvARB typedef void (APIENTRYP GLEEPFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte * weights); GLEE_EXTERN GLEEPFNGLWEIGHTBVARBPROC GLeeFuncPtr_glWeightbvARB; #define glWeightbvARB GLeeFuncPtr_glWeightbvARB #endif #ifndef GLEE_H_DEFINED_glWeightsvARB #define GLEE_H_DEFINED_glWeightsvARB typedef void (APIENTRYP GLEEPFNGLWEIGHTSVARBPROC) (GLint size, const GLshort * weights); GLEE_EXTERN GLEEPFNGLWEIGHTSVARBPROC GLeeFuncPtr_glWeightsvARB; #define glWeightsvARB GLeeFuncPtr_glWeightsvARB #endif #ifndef GLEE_H_DEFINED_glWeightivARB #define GLEE_H_DEFINED_glWeightivARB typedef void (APIENTRYP GLEEPFNGLWEIGHTIVARBPROC) (GLint size, const GLint * weights); GLEE_EXTERN GLEEPFNGLWEIGHTIVARBPROC GLeeFuncPtr_glWeightivARB; #define glWeightivARB GLeeFuncPtr_glWeightivARB #endif #ifndef GLEE_H_DEFINED_glWeightfvARB #define GLEE_H_DEFINED_glWeightfvARB typedef void (APIENTRYP GLEEPFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat * weights); GLEE_EXTERN GLEEPFNGLWEIGHTFVARBPROC GLeeFuncPtr_glWeightfvARB; #define glWeightfvARB GLeeFuncPtr_glWeightfvARB #endif #ifndef GLEE_H_DEFINED_glWeightdvARB #define GLEE_H_DEFINED_glWeightdvARB typedef void (APIENTRYP GLEEPFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble * weights); GLEE_EXTERN GLEEPFNGLWEIGHTDVARBPROC GLeeFuncPtr_glWeightdvARB; #define glWeightdvARB GLeeFuncPtr_glWeightdvARB #endif #ifndef GLEE_H_DEFINED_glWeightubvARB #define GLEE_H_DEFINED_glWeightubvARB typedef void (APIENTRYP GLEEPFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte * weights); GLEE_EXTERN GLEEPFNGLWEIGHTUBVARBPROC GLeeFuncPtr_glWeightubvARB; #define glWeightubvARB GLeeFuncPtr_glWeightubvARB #endif #ifndef GLEE_H_DEFINED_glWeightusvARB #define GLEE_H_DEFINED_glWeightusvARB typedef void (APIENTRYP GLEEPFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort * weights); GLEE_EXTERN GLEEPFNGLWEIGHTUSVARBPROC GLeeFuncPtr_glWeightusvARB; #define glWeightusvARB GLeeFuncPtr_glWeightusvARB #endif #ifndef GLEE_H_DEFINED_glWeightuivARB #define GLEE_H_DEFINED_glWeightuivARB typedef void (APIENTRYP GLEEPFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint * weights); GLEE_EXTERN GLEEPFNGLWEIGHTUIVARBPROC GLeeFuncPtr_glWeightuivARB; #define glWeightuivARB GLeeFuncPtr_glWeightuivARB #endif #ifndef GLEE_H_DEFINED_glWeightPointerARB #define GLEE_H_DEFINED_glWeightPointerARB typedef void (APIENTRYP GLEEPFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLWEIGHTPOINTERARBPROC GLeeFuncPtr_glWeightPointerARB; #define glWeightPointerARB GLeeFuncPtr_glWeightPointerARB #endif #ifndef GLEE_H_DEFINED_glVertexBlendARB #define GLEE_H_DEFINED_glVertexBlendARB typedef void (APIENTRYP GLEEPFNGLVERTEXBLENDARBPROC) (GLint count); GLEE_EXTERN GLEEPFNGLVERTEXBLENDARBPROC GLeeFuncPtr_glVertexBlendARB; #define glVertexBlendARB GLeeFuncPtr_glVertexBlendARB #endif #endif /* GL_ARB_matrix_palette */ #ifndef GL_ARB_matrix_palette #define GL_ARB_matrix_palette 1 #define __GLEE_GL_ARB_matrix_palette 1 /* Constants */ #define GL_MATRIX_PALETTE_ARB 0x8840 #define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 #define GL_MAX_PALETTE_MATRICES_ARB 0x8842 #define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 #define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 #define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 #define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 #define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 #define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 #define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 #ifndef GLEE_H_DEFINED_glCurrentPaletteMatrixARB #define GLEE_H_DEFINED_glCurrentPaletteMatrixARB typedef void (APIENTRYP GLEEPFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); GLEE_EXTERN GLEEPFNGLCURRENTPALETTEMATRIXARBPROC GLeeFuncPtr_glCurrentPaletteMatrixARB; #define glCurrentPaletteMatrixARB GLeeFuncPtr_glCurrentPaletteMatrixARB #endif #ifndef GLEE_H_DEFINED_glMatrixIndexubvARB #define GLEE_H_DEFINED_glMatrixIndexubvARB typedef void (APIENTRYP GLEEPFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte * indices); GLEE_EXTERN GLEEPFNGLMATRIXINDEXUBVARBPROC GLeeFuncPtr_glMatrixIndexubvARB; #define glMatrixIndexubvARB GLeeFuncPtr_glMatrixIndexubvARB #endif #ifndef GLEE_H_DEFINED_glMatrixIndexusvARB #define GLEE_H_DEFINED_glMatrixIndexusvARB typedef void (APIENTRYP GLEEPFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort * indices); GLEE_EXTERN GLEEPFNGLMATRIXINDEXUSVARBPROC GLeeFuncPtr_glMatrixIndexusvARB; #define glMatrixIndexusvARB GLeeFuncPtr_glMatrixIndexusvARB #endif #ifndef GLEE_H_DEFINED_glMatrixIndexuivARB #define GLEE_H_DEFINED_glMatrixIndexuivARB typedef void (APIENTRYP GLEEPFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint * indices); GLEE_EXTERN GLEEPFNGLMATRIXINDEXUIVARBPROC GLeeFuncPtr_glMatrixIndexuivARB; #define glMatrixIndexuivARB GLeeFuncPtr_glMatrixIndexuivARB #endif #ifndef GLEE_H_DEFINED_glMatrixIndexPointerARB #define GLEE_H_DEFINED_glMatrixIndexPointerARB typedef void (APIENTRYP GLEEPFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLMATRIXINDEXPOINTERARBPROC GLeeFuncPtr_glMatrixIndexPointerARB; #define glMatrixIndexPointerARB GLeeFuncPtr_glMatrixIndexPointerARB #endif #endif /* GL_ARB_texture_env_combine */ #ifndef GL_ARB_texture_env_combine #define GL_ARB_texture_env_combine 1 #define __GLEE_GL_ARB_texture_env_combine 1 /* Constants */ #define GL_COMBINE_ARB 0x8570 #define GL_COMBINE_RGB_ARB 0x8571 #define GL_COMBINE_ALPHA_ARB 0x8572 #define GL_SOURCE0_RGB_ARB 0x8580 #define GL_SOURCE1_RGB_ARB 0x8581 #define GL_SOURCE2_RGB_ARB 0x8582 #define GL_SOURCE0_ALPHA_ARB 0x8588 #define GL_SOURCE1_ALPHA_ARB 0x8589 #define GL_SOURCE2_ALPHA_ARB 0x858A #define GL_OPERAND0_RGB_ARB 0x8590 #define GL_OPERAND1_RGB_ARB 0x8591 #define GL_OPERAND2_RGB_ARB 0x8592 #define GL_OPERAND0_ALPHA_ARB 0x8598 #define GL_OPERAND1_ALPHA_ARB 0x8599 #define GL_OPERAND2_ALPHA_ARB 0x859A #define GL_RGB_SCALE_ARB 0x8573 #define GL_ADD_SIGNED_ARB 0x8574 #define GL_INTERPOLATE_ARB 0x8575 #define GL_SUBTRACT_ARB 0x84E7 #define GL_CONSTANT_ARB 0x8576 #define GL_PRIMARY_COLOR_ARB 0x8577 #define GL_PREVIOUS_ARB 0x8578 #endif /* GL_ARB_texture_env_crossbar */ #ifndef GL_ARB_texture_env_crossbar #define GL_ARB_texture_env_crossbar 1 #define __GLEE_GL_ARB_texture_env_crossbar 1 /* Constants */ #endif /* GL_ARB_texture_env_dot3 */ #ifndef GL_ARB_texture_env_dot3 #define GL_ARB_texture_env_dot3 1 #define __GLEE_GL_ARB_texture_env_dot3 1 /* Constants */ #define GL_DOT3_RGB_ARB 0x86AE #define GL_DOT3_RGBA_ARB 0x86AF #endif /* GL_ARB_texture_mirrored_repeat */ #ifndef GL_ARB_texture_mirrored_repeat #define GL_ARB_texture_mirrored_repeat 1 #define __GLEE_GL_ARB_texture_mirrored_repeat 1 /* Constants */ #define GL_MIRRORED_REPEAT_ARB 0x8370 #endif /* GL_ARB_depth_texture */ #ifndef GL_ARB_depth_texture #define GL_ARB_depth_texture 1 #define __GLEE_GL_ARB_depth_texture 1 /* Constants */ #define GL_DEPTH_COMPONENT16_ARB 0x81A5 #define GL_DEPTH_COMPONENT24_ARB 0x81A6 #define GL_DEPTH_COMPONENT32_ARB 0x81A7 #define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A #define GL_DEPTH_TEXTURE_MODE_ARB 0x884B #endif /* GL_ARB_shadow */ #ifndef GL_ARB_shadow #define GL_ARB_shadow 1 #define __GLEE_GL_ARB_shadow 1 /* Constants */ #define GL_TEXTURE_COMPARE_MODE_ARB 0x884C #define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D #define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E #endif /* GL_ARB_shadow_ambient */ #ifndef GL_ARB_shadow_ambient #define GL_ARB_shadow_ambient 1 #define __GLEE_GL_ARB_shadow_ambient 1 /* Constants */ #define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF #endif /* GL_ARB_window_pos */ #ifndef GL_ARB_window_pos #define GL_ARB_window_pos 1 #define __GLEE_GL_ARB_window_pos 1 /* Constants */ #ifndef GLEE_H_DEFINED_glWindowPos2dARB #define GLEE_H_DEFINED_glWindowPos2dARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2DARBPROC GLeeFuncPtr_glWindowPos2dARB; #define glWindowPos2dARB GLeeFuncPtr_glWindowPos2dARB #endif #ifndef GLEE_H_DEFINED_glWindowPos2dvARB #define GLEE_H_DEFINED_glWindowPos2dvARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2DVARBPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2DVARBPROC GLeeFuncPtr_glWindowPos2dvARB; #define glWindowPos2dvARB GLeeFuncPtr_glWindowPos2dvARB #endif #ifndef GLEE_H_DEFINED_glWindowPos2fARB #define GLEE_H_DEFINED_glWindowPos2fARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2FARBPROC GLeeFuncPtr_glWindowPos2fARB; #define glWindowPos2fARB GLeeFuncPtr_glWindowPos2fARB #endif #ifndef GLEE_H_DEFINED_glWindowPos2fvARB #define GLEE_H_DEFINED_glWindowPos2fvARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2FVARBPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2FVARBPROC GLeeFuncPtr_glWindowPos2fvARB; #define glWindowPos2fvARB GLeeFuncPtr_glWindowPos2fvARB #endif #ifndef GLEE_H_DEFINED_glWindowPos2iARB #define GLEE_H_DEFINED_glWindowPos2iARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2IARBPROC GLeeFuncPtr_glWindowPos2iARB; #define glWindowPos2iARB GLeeFuncPtr_glWindowPos2iARB #endif #ifndef GLEE_H_DEFINED_glWindowPos2ivARB #define GLEE_H_DEFINED_glWindowPos2ivARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2IVARBPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2IVARBPROC GLeeFuncPtr_glWindowPos2ivARB; #define glWindowPos2ivARB GLeeFuncPtr_glWindowPos2ivARB #endif #ifndef GLEE_H_DEFINED_glWindowPos2sARB #define GLEE_H_DEFINED_glWindowPos2sARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2SARBPROC GLeeFuncPtr_glWindowPos2sARB; #define glWindowPos2sARB GLeeFuncPtr_glWindowPos2sARB #endif #ifndef GLEE_H_DEFINED_glWindowPos2svARB #define GLEE_H_DEFINED_glWindowPos2svARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2SVARBPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2SVARBPROC GLeeFuncPtr_glWindowPos2svARB; #define glWindowPos2svARB GLeeFuncPtr_glWindowPos2svARB #endif #ifndef GLEE_H_DEFINED_glWindowPos3dARB #define GLEE_H_DEFINED_glWindowPos3dARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3DARBPROC GLeeFuncPtr_glWindowPos3dARB; #define glWindowPos3dARB GLeeFuncPtr_glWindowPos3dARB #endif #ifndef GLEE_H_DEFINED_glWindowPos3dvARB #define GLEE_H_DEFINED_glWindowPos3dvARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3DVARBPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3DVARBPROC GLeeFuncPtr_glWindowPos3dvARB; #define glWindowPos3dvARB GLeeFuncPtr_glWindowPos3dvARB #endif #ifndef GLEE_H_DEFINED_glWindowPos3fARB #define GLEE_H_DEFINED_glWindowPos3fARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3FARBPROC GLeeFuncPtr_glWindowPos3fARB; #define glWindowPos3fARB GLeeFuncPtr_glWindowPos3fARB #endif #ifndef GLEE_H_DEFINED_glWindowPos3fvARB #define GLEE_H_DEFINED_glWindowPos3fvARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3FVARBPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3FVARBPROC GLeeFuncPtr_glWindowPos3fvARB; #define glWindowPos3fvARB GLeeFuncPtr_glWindowPos3fvARB #endif #ifndef GLEE_H_DEFINED_glWindowPos3iARB #define GLEE_H_DEFINED_glWindowPos3iARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3IARBPROC GLeeFuncPtr_glWindowPos3iARB; #define glWindowPos3iARB GLeeFuncPtr_glWindowPos3iARB #endif #ifndef GLEE_H_DEFINED_glWindowPos3ivARB #define GLEE_H_DEFINED_glWindowPos3ivARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3IVARBPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3IVARBPROC GLeeFuncPtr_glWindowPos3ivARB; #define glWindowPos3ivARB GLeeFuncPtr_glWindowPos3ivARB #endif #ifndef GLEE_H_DEFINED_glWindowPos3sARB #define GLEE_H_DEFINED_glWindowPos3sARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3SARBPROC GLeeFuncPtr_glWindowPos3sARB; #define glWindowPos3sARB GLeeFuncPtr_glWindowPos3sARB #endif #ifndef GLEE_H_DEFINED_glWindowPos3svARB #define GLEE_H_DEFINED_glWindowPos3svARB typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3SVARBPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3SVARBPROC GLeeFuncPtr_glWindowPos3svARB; #define glWindowPos3svARB GLeeFuncPtr_glWindowPos3svARB #endif #endif /* GL_ARB_vertex_program */ #ifndef GL_ARB_vertex_program #define GL_ARB_vertex_program 1 #define __GLEE_GL_ARB_vertex_program 1 /* Constants */ #define GL_COLOR_SUM_ARB 0x8458 #define GL_VERTEX_PROGRAM_ARB 0x8620 #define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 #define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 #define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 #define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 #define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 #define GL_PROGRAM_LENGTH_ARB 0x8627 #define GL_PROGRAM_STRING_ARB 0x8628 #define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E #define GL_MAX_PROGRAM_MATRICES_ARB 0x862F #define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 #define GL_CURRENT_MATRIX_ARB 0x8641 #define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 #define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 #define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 #define GL_PROGRAM_ERROR_POSITION_ARB 0x864B #define GL_PROGRAM_BINDING_ARB 0x8677 #define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A #define GL_PROGRAM_ERROR_STRING_ARB 0x8874 #define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 #define GL_PROGRAM_FORMAT_ARB 0x8876 #define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 #define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 #define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 #define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 #define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 #define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 #define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 #define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 #define GL_PROGRAM_PARAMETERS_ARB 0x88A8 #define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 #define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA #define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB #define GL_PROGRAM_ATTRIBS_ARB 0x88AC #define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD #define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE #define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF #define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 #define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 #define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 #define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 #define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 #define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 #define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 #define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 #define GL_MATRIX0_ARB 0x88C0 #define GL_MATRIX1_ARB 0x88C1 #define GL_MATRIX2_ARB 0x88C2 #define GL_MATRIX3_ARB 0x88C3 #define GL_MATRIX4_ARB 0x88C4 #define GL_MATRIX5_ARB 0x88C5 #define GL_MATRIX6_ARB 0x88C6 #define GL_MATRIX7_ARB 0x88C7 #define GL_MATRIX8_ARB 0x88C8 #define GL_MATRIX9_ARB 0x88C9 #define GL_MATRIX10_ARB 0x88CA #define GL_MATRIX11_ARB 0x88CB #define GL_MATRIX12_ARB 0x88CC #define GL_MATRIX13_ARB 0x88CD #define GL_MATRIX14_ARB 0x88CE #define GL_MATRIX15_ARB 0x88CF #define GL_MATRIX16_ARB 0x88D0 #define GL_MATRIX17_ARB 0x88D1 #define GL_MATRIX18_ARB 0x88D2 #define GL_MATRIX19_ARB 0x88D3 #define GL_MATRIX20_ARB 0x88D4 #define GL_MATRIX21_ARB 0x88D5 #define GL_MATRIX22_ARB 0x88D6 #define GL_MATRIX23_ARB 0x88D7 #define GL_MATRIX24_ARB 0x88D8 #define GL_MATRIX25_ARB 0x88D9 #define GL_MATRIX26_ARB 0x88DA #define GL_MATRIX27_ARB 0x88DB #define GL_MATRIX28_ARB 0x88DC #define GL_MATRIX29_ARB 0x88DD #define GL_MATRIX30_ARB 0x88DE #define GL_MATRIX31_ARB 0x88DF #ifndef GLEE_H_DEFINED_glVertexAttrib1dARB #define GLEE_H_DEFINED_glVertexAttrib1dARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1DARBPROC GLeeFuncPtr_glVertexAttrib1dARB; #define glVertexAttrib1dARB GLeeFuncPtr_glVertexAttrib1dARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1dvARB #define GLEE_H_DEFINED_glVertexAttrib1dvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1DVARBPROC GLeeFuncPtr_glVertexAttrib1dvARB; #define glVertexAttrib1dvARB GLeeFuncPtr_glVertexAttrib1dvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1fARB #define GLEE_H_DEFINED_glVertexAttrib1fARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1FARBPROC GLeeFuncPtr_glVertexAttrib1fARB; #define glVertexAttrib1fARB GLeeFuncPtr_glVertexAttrib1fARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1fvARB #define GLEE_H_DEFINED_glVertexAttrib1fvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1FVARBPROC GLeeFuncPtr_glVertexAttrib1fvARB; #define glVertexAttrib1fvARB GLeeFuncPtr_glVertexAttrib1fvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1sARB #define GLEE_H_DEFINED_glVertexAttrib1sARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1SARBPROC GLeeFuncPtr_glVertexAttrib1sARB; #define glVertexAttrib1sARB GLeeFuncPtr_glVertexAttrib1sARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1svARB #define GLEE_H_DEFINED_glVertexAttrib1svARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1SVARBPROC GLeeFuncPtr_glVertexAttrib1svARB; #define glVertexAttrib1svARB GLeeFuncPtr_glVertexAttrib1svARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2dARB #define GLEE_H_DEFINED_glVertexAttrib2dARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2DARBPROC GLeeFuncPtr_glVertexAttrib2dARB; #define glVertexAttrib2dARB GLeeFuncPtr_glVertexAttrib2dARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2dvARB #define GLEE_H_DEFINED_glVertexAttrib2dvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2DVARBPROC GLeeFuncPtr_glVertexAttrib2dvARB; #define glVertexAttrib2dvARB GLeeFuncPtr_glVertexAttrib2dvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2fARB #define GLEE_H_DEFINED_glVertexAttrib2fARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2FARBPROC GLeeFuncPtr_glVertexAttrib2fARB; #define glVertexAttrib2fARB GLeeFuncPtr_glVertexAttrib2fARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2fvARB #define GLEE_H_DEFINED_glVertexAttrib2fvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2FVARBPROC GLeeFuncPtr_glVertexAttrib2fvARB; #define glVertexAttrib2fvARB GLeeFuncPtr_glVertexAttrib2fvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2sARB #define GLEE_H_DEFINED_glVertexAttrib2sARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2SARBPROC GLeeFuncPtr_glVertexAttrib2sARB; #define glVertexAttrib2sARB GLeeFuncPtr_glVertexAttrib2sARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2svARB #define GLEE_H_DEFINED_glVertexAttrib2svARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2SVARBPROC GLeeFuncPtr_glVertexAttrib2svARB; #define glVertexAttrib2svARB GLeeFuncPtr_glVertexAttrib2svARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3dARB #define GLEE_H_DEFINED_glVertexAttrib3dARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3DARBPROC GLeeFuncPtr_glVertexAttrib3dARB; #define glVertexAttrib3dARB GLeeFuncPtr_glVertexAttrib3dARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3dvARB #define GLEE_H_DEFINED_glVertexAttrib3dvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3DVARBPROC GLeeFuncPtr_glVertexAttrib3dvARB; #define glVertexAttrib3dvARB GLeeFuncPtr_glVertexAttrib3dvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3fARB #define GLEE_H_DEFINED_glVertexAttrib3fARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3FARBPROC GLeeFuncPtr_glVertexAttrib3fARB; #define glVertexAttrib3fARB GLeeFuncPtr_glVertexAttrib3fARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3fvARB #define GLEE_H_DEFINED_glVertexAttrib3fvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3FVARBPROC GLeeFuncPtr_glVertexAttrib3fvARB; #define glVertexAttrib3fvARB GLeeFuncPtr_glVertexAttrib3fvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3sARB #define GLEE_H_DEFINED_glVertexAttrib3sARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3SARBPROC GLeeFuncPtr_glVertexAttrib3sARB; #define glVertexAttrib3sARB GLeeFuncPtr_glVertexAttrib3sARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3svARB #define GLEE_H_DEFINED_glVertexAttrib3svARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3SVARBPROC GLeeFuncPtr_glVertexAttrib3svARB; #define glVertexAttrib3svARB GLeeFuncPtr_glVertexAttrib3svARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4NbvARB #define GLEE_H_DEFINED_glVertexAttrib4NbvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NBVARBPROC GLeeFuncPtr_glVertexAttrib4NbvARB; #define glVertexAttrib4NbvARB GLeeFuncPtr_glVertexAttrib4NbvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4NivARB #define GLEE_H_DEFINED_glVertexAttrib4NivARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NIVARBPROC GLeeFuncPtr_glVertexAttrib4NivARB; #define glVertexAttrib4NivARB GLeeFuncPtr_glVertexAttrib4NivARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4NsvARB #define GLEE_H_DEFINED_glVertexAttrib4NsvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NSVARBPROC GLeeFuncPtr_glVertexAttrib4NsvARB; #define glVertexAttrib4NsvARB GLeeFuncPtr_glVertexAttrib4NsvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4NubARB #define GLEE_H_DEFINED_glVertexAttrib4NubARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NUBARBPROC GLeeFuncPtr_glVertexAttrib4NubARB; #define glVertexAttrib4NubARB GLeeFuncPtr_glVertexAttrib4NubARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4NubvARB #define GLEE_H_DEFINED_glVertexAttrib4NubvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NUBVARBPROC GLeeFuncPtr_glVertexAttrib4NubvARB; #define glVertexAttrib4NubvARB GLeeFuncPtr_glVertexAttrib4NubvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4NuivARB #define GLEE_H_DEFINED_glVertexAttrib4NuivARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NUIVARBPROC GLeeFuncPtr_glVertexAttrib4NuivARB; #define glVertexAttrib4NuivARB GLeeFuncPtr_glVertexAttrib4NuivARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4NusvARB #define GLEE_H_DEFINED_glVertexAttrib4NusvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4NUSVARBPROC GLeeFuncPtr_glVertexAttrib4NusvARB; #define glVertexAttrib4NusvARB GLeeFuncPtr_glVertexAttrib4NusvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4bvARB #define GLEE_H_DEFINED_glVertexAttrib4bvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4BVARBPROC GLeeFuncPtr_glVertexAttrib4bvARB; #define glVertexAttrib4bvARB GLeeFuncPtr_glVertexAttrib4bvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4dARB #define GLEE_H_DEFINED_glVertexAttrib4dARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4DARBPROC GLeeFuncPtr_glVertexAttrib4dARB; #define glVertexAttrib4dARB GLeeFuncPtr_glVertexAttrib4dARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4dvARB #define GLEE_H_DEFINED_glVertexAttrib4dvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4DVARBPROC GLeeFuncPtr_glVertexAttrib4dvARB; #define glVertexAttrib4dvARB GLeeFuncPtr_glVertexAttrib4dvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4fARB #define GLEE_H_DEFINED_glVertexAttrib4fARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4FARBPROC GLeeFuncPtr_glVertexAttrib4fARB; #define glVertexAttrib4fARB GLeeFuncPtr_glVertexAttrib4fARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4fvARB #define GLEE_H_DEFINED_glVertexAttrib4fvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4FVARBPROC GLeeFuncPtr_glVertexAttrib4fvARB; #define glVertexAttrib4fvARB GLeeFuncPtr_glVertexAttrib4fvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4ivARB #define GLEE_H_DEFINED_glVertexAttrib4ivARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4IVARBPROC GLeeFuncPtr_glVertexAttrib4ivARB; #define glVertexAttrib4ivARB GLeeFuncPtr_glVertexAttrib4ivARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4sARB #define GLEE_H_DEFINED_glVertexAttrib4sARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4SARBPROC GLeeFuncPtr_glVertexAttrib4sARB; #define glVertexAttrib4sARB GLeeFuncPtr_glVertexAttrib4sARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4svARB #define GLEE_H_DEFINED_glVertexAttrib4svARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4SVARBPROC GLeeFuncPtr_glVertexAttrib4svARB; #define glVertexAttrib4svARB GLeeFuncPtr_glVertexAttrib4svARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4ubvARB #define GLEE_H_DEFINED_glVertexAttrib4ubvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4UBVARBPROC GLeeFuncPtr_glVertexAttrib4ubvARB; #define glVertexAttrib4ubvARB GLeeFuncPtr_glVertexAttrib4ubvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4uivARB #define GLEE_H_DEFINED_glVertexAttrib4uivARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4UIVARBPROC GLeeFuncPtr_glVertexAttrib4uivARB; #define glVertexAttrib4uivARB GLeeFuncPtr_glVertexAttrib4uivARB #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4usvARB #define GLEE_H_DEFINED_glVertexAttrib4usvARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4USVARBPROC GLeeFuncPtr_glVertexAttrib4usvARB; #define glVertexAttrib4usvARB GLeeFuncPtr_glVertexAttrib4usvARB #endif #ifndef GLEE_H_DEFINED_glVertexAttribPointerARB #define GLEE_H_DEFINED_glVertexAttribPointerARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBPOINTERARBPROC GLeeFuncPtr_glVertexAttribPointerARB; #define glVertexAttribPointerARB GLeeFuncPtr_glVertexAttribPointerARB #endif #ifndef GLEE_H_DEFINED_glEnableVertexAttribArrayARB #define GLEE_H_DEFINED_glEnableVertexAttribArrayARB typedef void (APIENTRYP GLEEPFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); GLEE_EXTERN GLEEPFNGLENABLEVERTEXATTRIBARRAYARBPROC GLeeFuncPtr_glEnableVertexAttribArrayARB; #define glEnableVertexAttribArrayARB GLeeFuncPtr_glEnableVertexAttribArrayARB #endif #ifndef GLEE_H_DEFINED_glDisableVertexAttribArrayARB #define GLEE_H_DEFINED_glDisableVertexAttribArrayARB typedef void (APIENTRYP GLEEPFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); GLEE_EXTERN GLEEPFNGLDISABLEVERTEXATTRIBARRAYARBPROC GLeeFuncPtr_glDisableVertexAttribArrayARB; #define glDisableVertexAttribArrayARB GLeeFuncPtr_glDisableVertexAttribArrayARB #endif #ifndef GLEE_H_DEFINED_glProgramStringARB #define GLEE_H_DEFINED_glProgramStringARB typedef void (APIENTRYP GLEEPFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid * string); GLEE_EXTERN GLEEPFNGLPROGRAMSTRINGARBPROC GLeeFuncPtr_glProgramStringARB; #define glProgramStringARB GLeeFuncPtr_glProgramStringARB #endif #ifndef GLEE_H_DEFINED_glBindProgramARB #define GLEE_H_DEFINED_glBindProgramARB typedef void (APIENTRYP GLEEPFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); GLEE_EXTERN GLEEPFNGLBINDPROGRAMARBPROC GLeeFuncPtr_glBindProgramARB; #define glBindProgramARB GLeeFuncPtr_glBindProgramARB #endif #ifndef GLEE_H_DEFINED_glDeleteProgramsARB #define GLEE_H_DEFINED_glDeleteProgramsARB typedef void (APIENTRYP GLEEPFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint * programs); GLEE_EXTERN GLEEPFNGLDELETEPROGRAMSARBPROC GLeeFuncPtr_glDeleteProgramsARB; #define glDeleteProgramsARB GLeeFuncPtr_glDeleteProgramsARB #endif #ifndef GLEE_H_DEFINED_glGenProgramsARB #define GLEE_H_DEFINED_glGenProgramsARB typedef void (APIENTRYP GLEEPFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint * programs); GLEE_EXTERN GLEEPFNGLGENPROGRAMSARBPROC GLeeFuncPtr_glGenProgramsARB; #define glGenProgramsARB GLeeFuncPtr_glGenProgramsARB #endif #ifndef GLEE_H_DEFINED_glProgramEnvParameter4dARB #define GLEE_H_DEFINED_glProgramEnvParameter4dARB typedef void (APIENTRYP GLEEPFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLPROGRAMENVPARAMETER4DARBPROC GLeeFuncPtr_glProgramEnvParameter4dARB; #define glProgramEnvParameter4dARB GLeeFuncPtr_glProgramEnvParameter4dARB #endif #ifndef GLEE_H_DEFINED_glProgramEnvParameter4dvARB #define GLEE_H_DEFINED_glProgramEnvParameter4dvARB typedef void (APIENTRYP GLEEPFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble * params); GLEE_EXTERN GLEEPFNGLPROGRAMENVPARAMETER4DVARBPROC GLeeFuncPtr_glProgramEnvParameter4dvARB; #define glProgramEnvParameter4dvARB GLeeFuncPtr_glProgramEnvParameter4dvARB #endif #ifndef GLEE_H_DEFINED_glProgramEnvParameter4fARB #define GLEE_H_DEFINED_glProgramEnvParameter4fARB typedef void (APIENTRYP GLEEPFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLPROGRAMENVPARAMETER4FARBPROC GLeeFuncPtr_glProgramEnvParameter4fARB; #define glProgramEnvParameter4fARB GLeeFuncPtr_glProgramEnvParameter4fARB #endif #ifndef GLEE_H_DEFINED_glProgramEnvParameter4fvARB #define GLEE_H_DEFINED_glProgramEnvParameter4fvARB typedef void (APIENTRYP GLEEPFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPROGRAMENVPARAMETER4FVARBPROC GLeeFuncPtr_glProgramEnvParameter4fvARB; #define glProgramEnvParameter4fvARB GLeeFuncPtr_glProgramEnvParameter4fvARB #endif #ifndef GLEE_H_DEFINED_glProgramLocalParameter4dARB #define GLEE_H_DEFINED_glProgramLocalParameter4dARB typedef void (APIENTRYP GLEEPFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLPROGRAMLOCALPARAMETER4DARBPROC GLeeFuncPtr_glProgramLocalParameter4dARB; #define glProgramLocalParameter4dARB GLeeFuncPtr_glProgramLocalParameter4dARB #endif #ifndef GLEE_H_DEFINED_glProgramLocalParameter4dvARB #define GLEE_H_DEFINED_glProgramLocalParameter4dvARB typedef void (APIENTRYP GLEEPFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble * params); GLEE_EXTERN GLEEPFNGLPROGRAMLOCALPARAMETER4DVARBPROC GLeeFuncPtr_glProgramLocalParameter4dvARB; #define glProgramLocalParameter4dvARB GLeeFuncPtr_glProgramLocalParameter4dvARB #endif #ifndef GLEE_H_DEFINED_glProgramLocalParameter4fARB #define GLEE_H_DEFINED_glProgramLocalParameter4fARB typedef void (APIENTRYP GLEEPFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLPROGRAMLOCALPARAMETER4FARBPROC GLeeFuncPtr_glProgramLocalParameter4fARB; #define glProgramLocalParameter4fARB GLeeFuncPtr_glProgramLocalParameter4fARB #endif #ifndef GLEE_H_DEFINED_glProgramLocalParameter4fvARB #define GLEE_H_DEFINED_glProgramLocalParameter4fvARB typedef void (APIENTRYP GLEEPFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPROGRAMLOCALPARAMETER4FVARBPROC GLeeFuncPtr_glProgramLocalParameter4fvARB; #define glProgramLocalParameter4fvARB GLeeFuncPtr_glProgramLocalParameter4fvARB #endif #ifndef GLEE_H_DEFINED_glGetProgramEnvParameterdvARB #define GLEE_H_DEFINED_glGetProgramEnvParameterdvARB typedef void (APIENTRYP GLEEPFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMENVPARAMETERDVARBPROC GLeeFuncPtr_glGetProgramEnvParameterdvARB; #define glGetProgramEnvParameterdvARB GLeeFuncPtr_glGetProgramEnvParameterdvARB #endif #ifndef GLEE_H_DEFINED_glGetProgramEnvParameterfvARB #define GLEE_H_DEFINED_glGetProgramEnvParameterfvARB typedef void (APIENTRYP GLEEPFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMENVPARAMETERFVARBPROC GLeeFuncPtr_glGetProgramEnvParameterfvARB; #define glGetProgramEnvParameterfvARB GLeeFuncPtr_glGetProgramEnvParameterfvARB #endif #ifndef GLEE_H_DEFINED_glGetProgramLocalParameterdvARB #define GLEE_H_DEFINED_glGetProgramLocalParameterdvARB typedef void (APIENTRYP GLEEPFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMLOCALPARAMETERDVARBPROC GLeeFuncPtr_glGetProgramLocalParameterdvARB; #define glGetProgramLocalParameterdvARB GLeeFuncPtr_glGetProgramLocalParameterdvARB #endif #ifndef GLEE_H_DEFINED_glGetProgramLocalParameterfvARB #define GLEE_H_DEFINED_glGetProgramLocalParameterfvARB typedef void (APIENTRYP GLEEPFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMLOCALPARAMETERFVARBPROC GLeeFuncPtr_glGetProgramLocalParameterfvARB; #define glGetProgramLocalParameterfvARB GLeeFuncPtr_glGetProgramLocalParameterfvARB #endif #ifndef GLEE_H_DEFINED_glGetProgramivARB #define GLEE_H_DEFINED_glGetProgramivARB typedef void (APIENTRYP GLEEPFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMIVARBPROC GLeeFuncPtr_glGetProgramivARB; #define glGetProgramivARB GLeeFuncPtr_glGetProgramivARB #endif #ifndef GLEE_H_DEFINED_glGetProgramStringARB #define GLEE_H_DEFINED_glGetProgramStringARB typedef void (APIENTRYP GLEEPFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid * string); GLEE_EXTERN GLEEPFNGLGETPROGRAMSTRINGARBPROC GLeeFuncPtr_glGetProgramStringARB; #define glGetProgramStringARB GLeeFuncPtr_glGetProgramStringARB #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribdvARB #define GLEE_H_DEFINED_glGetVertexAttribdvARB typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBDVARBPROC GLeeFuncPtr_glGetVertexAttribdvARB; #define glGetVertexAttribdvARB GLeeFuncPtr_glGetVertexAttribdvARB #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribfvARB #define GLEE_H_DEFINED_glGetVertexAttribfvARB typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBFVARBPROC GLeeFuncPtr_glGetVertexAttribfvARB; #define glGetVertexAttribfvARB GLeeFuncPtr_glGetVertexAttribfvARB #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribivARB #define GLEE_H_DEFINED_glGetVertexAttribivARB typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBIVARBPROC GLeeFuncPtr_glGetVertexAttribivARB; #define glGetVertexAttribivARB GLeeFuncPtr_glGetVertexAttribivARB #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribPointervARB #define GLEE_H_DEFINED_glGetVertexAttribPointervARB typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* * pointer); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBPOINTERVARBPROC GLeeFuncPtr_glGetVertexAttribPointervARB; #define glGetVertexAttribPointervARB GLeeFuncPtr_glGetVertexAttribPointervARB #endif #ifndef GLEE_H_DEFINED_glIsProgramARB #define GLEE_H_DEFINED_glIsProgramARB typedef GLboolean (APIENTRYP GLEEPFNGLISPROGRAMARBPROC) (GLuint program); GLEE_EXTERN GLEEPFNGLISPROGRAMARBPROC GLeeFuncPtr_glIsProgramARB; #define glIsProgramARB GLeeFuncPtr_glIsProgramARB #endif #endif /* GL_ARB_fragment_program */ #ifndef GL_ARB_fragment_program #define GL_ARB_fragment_program 1 #define __GLEE_GL_ARB_fragment_program 1 /* Constants */ #define GL_FRAGMENT_PROGRAM_ARB 0x8804 #define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 #define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 #define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 #define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 #define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 #define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A #define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B #define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C #define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D #define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E #define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F #define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 #define GL_MAX_TEXTURE_COORDS_ARB 0x8871 #define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 #endif /* GL_ARB_vertex_buffer_object */ #ifndef GL_ARB_vertex_buffer_object #define GL_ARB_vertex_buffer_object 1 #define __GLEE_GL_ARB_vertex_buffer_object 1 /* Constants */ #define GL_BUFFER_SIZE_ARB 0x8764 #define GL_BUFFER_USAGE_ARB 0x8765 #define GL_ARRAY_BUFFER_ARB 0x8892 #define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 #define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 #define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 #define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 #define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 #define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 #define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 #define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A #define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B #define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C #define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D #define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F #define GL_READ_ONLY_ARB 0x88B8 #define GL_WRITE_ONLY_ARB 0x88B9 #define GL_READ_WRITE_ARB 0x88BA #define GL_BUFFER_ACCESS_ARB 0x88BB #define GL_BUFFER_MAPPED_ARB 0x88BC #define GL_BUFFER_MAP_POINTER_ARB 0x88BD #define GL_STREAM_DRAW_ARB 0x88E0 #define GL_STREAM_READ_ARB 0x88E1 #define GL_STREAM_COPY_ARB 0x88E2 #define GL_STATIC_DRAW_ARB 0x88E4 #define GL_STATIC_READ_ARB 0x88E5 #define GL_STATIC_COPY_ARB 0x88E6 #define GL_DYNAMIC_DRAW_ARB 0x88E8 #define GL_DYNAMIC_READ_ARB 0x88E9 #define GL_DYNAMIC_COPY_ARB 0x88EA #ifndef GLEE_H_DEFINED_glBindBufferARB #define GLEE_H_DEFINED_glBindBufferARB typedef void (APIENTRYP GLEEPFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); GLEE_EXTERN GLEEPFNGLBINDBUFFERARBPROC GLeeFuncPtr_glBindBufferARB; #define glBindBufferARB GLeeFuncPtr_glBindBufferARB #endif #ifndef GLEE_H_DEFINED_glDeleteBuffersARB #define GLEE_H_DEFINED_glDeleteBuffersARB typedef void (APIENTRYP GLEEPFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint * buffers); GLEE_EXTERN GLEEPFNGLDELETEBUFFERSARBPROC GLeeFuncPtr_glDeleteBuffersARB; #define glDeleteBuffersARB GLeeFuncPtr_glDeleteBuffersARB #endif #ifndef GLEE_H_DEFINED_glGenBuffersARB #define GLEE_H_DEFINED_glGenBuffersARB typedef void (APIENTRYP GLEEPFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint * buffers); GLEE_EXTERN GLEEPFNGLGENBUFFERSARBPROC GLeeFuncPtr_glGenBuffersARB; #define glGenBuffersARB GLeeFuncPtr_glGenBuffersARB #endif #ifndef GLEE_H_DEFINED_glIsBufferARB #define GLEE_H_DEFINED_glIsBufferARB typedef GLboolean (APIENTRYP GLEEPFNGLISBUFFERARBPROC) (GLuint buffer); GLEE_EXTERN GLEEPFNGLISBUFFERARBPROC GLeeFuncPtr_glIsBufferARB; #define glIsBufferARB GLeeFuncPtr_glIsBufferARB #endif #ifndef GLEE_H_DEFINED_glBufferDataARB #define GLEE_H_DEFINED_glBufferDataARB typedef void (APIENTRYP GLEEPFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage); GLEE_EXTERN GLEEPFNGLBUFFERDATAARBPROC GLeeFuncPtr_glBufferDataARB; #define glBufferDataARB GLeeFuncPtr_glBufferDataARB #endif #ifndef GLEE_H_DEFINED_glBufferSubDataARB #define GLEE_H_DEFINED_glBufferSubDataARB typedef void (APIENTRYP GLEEPFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data); GLEE_EXTERN GLEEPFNGLBUFFERSUBDATAARBPROC GLeeFuncPtr_glBufferSubDataARB; #define glBufferSubDataARB GLeeFuncPtr_glBufferSubDataARB #endif #ifndef GLEE_H_DEFINED_glGetBufferSubDataARB #define GLEE_H_DEFINED_glGetBufferSubDataARB typedef void (APIENTRYP GLEEPFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data); GLEE_EXTERN GLEEPFNGLGETBUFFERSUBDATAARBPROC GLeeFuncPtr_glGetBufferSubDataARB; #define glGetBufferSubDataARB GLeeFuncPtr_glGetBufferSubDataARB #endif #ifndef GLEE_H_DEFINED_glMapBufferARB #define GLEE_H_DEFINED_glMapBufferARB typedef GLvoid* (APIENTRYP GLEEPFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); GLEE_EXTERN GLEEPFNGLMAPBUFFERARBPROC GLeeFuncPtr_glMapBufferARB; #define glMapBufferARB GLeeFuncPtr_glMapBufferARB #endif #ifndef GLEE_H_DEFINED_glUnmapBufferARB #define GLEE_H_DEFINED_glUnmapBufferARB typedef GLboolean (APIENTRYP GLEEPFNGLUNMAPBUFFERARBPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLUNMAPBUFFERARBPROC GLeeFuncPtr_glUnmapBufferARB; #define glUnmapBufferARB GLeeFuncPtr_glUnmapBufferARB #endif #ifndef GLEE_H_DEFINED_glGetBufferParameterivARB #define GLEE_H_DEFINED_glGetBufferParameterivARB typedef void (APIENTRYP GLEEPFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETBUFFERPARAMETERIVARBPROC GLeeFuncPtr_glGetBufferParameterivARB; #define glGetBufferParameterivARB GLeeFuncPtr_glGetBufferParameterivARB #endif #ifndef GLEE_H_DEFINED_glGetBufferPointervARB #define GLEE_H_DEFINED_glGetBufferPointervARB typedef void (APIENTRYP GLEEPFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* * params); GLEE_EXTERN GLEEPFNGLGETBUFFERPOINTERVARBPROC GLeeFuncPtr_glGetBufferPointervARB; #define glGetBufferPointervARB GLeeFuncPtr_glGetBufferPointervARB #endif #endif /* GL_ARB_occlusion_query */ #ifndef GL_ARB_occlusion_query #define GL_ARB_occlusion_query 1 #define __GLEE_GL_ARB_occlusion_query 1 /* Constants */ #define GL_QUERY_COUNTER_BITS_ARB 0x8864 #define GL_CURRENT_QUERY_ARB 0x8865 #define GL_QUERY_RESULT_ARB 0x8866 #define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 #define GL_SAMPLES_PASSED_ARB 0x8914 #ifndef GLEE_H_DEFINED_glGenQueriesARB #define GLEE_H_DEFINED_glGenQueriesARB typedef void (APIENTRYP GLEEPFNGLGENQUERIESARBPROC) (GLsizei n, GLuint * ids); GLEE_EXTERN GLEEPFNGLGENQUERIESARBPROC GLeeFuncPtr_glGenQueriesARB; #define glGenQueriesARB GLeeFuncPtr_glGenQueriesARB #endif #ifndef GLEE_H_DEFINED_glDeleteQueriesARB #define GLEE_H_DEFINED_glDeleteQueriesARB typedef void (APIENTRYP GLEEPFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint * ids); GLEE_EXTERN GLEEPFNGLDELETEQUERIESARBPROC GLeeFuncPtr_glDeleteQueriesARB; #define glDeleteQueriesARB GLeeFuncPtr_glDeleteQueriesARB #endif #ifndef GLEE_H_DEFINED_glIsQueryARB #define GLEE_H_DEFINED_glIsQueryARB typedef GLboolean (APIENTRYP GLEEPFNGLISQUERYARBPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLISQUERYARBPROC GLeeFuncPtr_glIsQueryARB; #define glIsQueryARB GLeeFuncPtr_glIsQueryARB #endif #ifndef GLEE_H_DEFINED_glBeginQueryARB #define GLEE_H_DEFINED_glBeginQueryARB typedef void (APIENTRYP GLEEPFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); GLEE_EXTERN GLEEPFNGLBEGINQUERYARBPROC GLeeFuncPtr_glBeginQueryARB; #define glBeginQueryARB GLeeFuncPtr_glBeginQueryARB #endif #ifndef GLEE_H_DEFINED_glEndQueryARB #define GLEE_H_DEFINED_glEndQueryARB typedef void (APIENTRYP GLEEPFNGLENDQUERYARBPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLENDQUERYARBPROC GLeeFuncPtr_glEndQueryARB; #define glEndQueryARB GLeeFuncPtr_glEndQueryARB #endif #ifndef GLEE_H_DEFINED_glGetQueryivARB #define GLEE_H_DEFINED_glGetQueryivARB typedef void (APIENTRYP GLEEPFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETQUERYIVARBPROC GLeeFuncPtr_glGetQueryivARB; #define glGetQueryivARB GLeeFuncPtr_glGetQueryivARB #endif #ifndef GLEE_H_DEFINED_glGetQueryObjectivARB #define GLEE_H_DEFINED_glGetQueryObjectivARB typedef void (APIENTRYP GLEEPFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETQUERYOBJECTIVARBPROC GLeeFuncPtr_glGetQueryObjectivARB; #define glGetQueryObjectivARB GLeeFuncPtr_glGetQueryObjectivARB #endif #ifndef GLEE_H_DEFINED_glGetQueryObjectuivARB #define GLEE_H_DEFINED_glGetQueryObjectuivARB typedef void (APIENTRYP GLEEPFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint * params); GLEE_EXTERN GLEEPFNGLGETQUERYOBJECTUIVARBPROC GLeeFuncPtr_glGetQueryObjectuivARB; #define glGetQueryObjectuivARB GLeeFuncPtr_glGetQueryObjectuivARB #endif #endif /* GL_ARB_shader_objects */ #ifndef GL_ARB_shader_objects #define GL_ARB_shader_objects 1 #define __GLEE_GL_ARB_shader_objects 1 /* Constants */ #define GL_PROGRAM_OBJECT_ARB 0x8B40 #define GL_SHADER_OBJECT_ARB 0x8B48 #define GL_OBJECT_TYPE_ARB 0x8B4E #define GL_OBJECT_SUBTYPE_ARB 0x8B4F #define GL_FLOAT_VEC2_ARB 0x8B50 #define GL_FLOAT_VEC3_ARB 0x8B51 #define GL_FLOAT_VEC4_ARB 0x8B52 #define GL_INT_VEC2_ARB 0x8B53 #define GL_INT_VEC3_ARB 0x8B54 #define GL_INT_VEC4_ARB 0x8B55 #define GL_BOOL_ARB 0x8B56 #define GL_BOOL_VEC2_ARB 0x8B57 #define GL_BOOL_VEC3_ARB 0x8B58 #define GL_BOOL_VEC4_ARB 0x8B59 #define GL_FLOAT_MAT2_ARB 0x8B5A #define GL_FLOAT_MAT3_ARB 0x8B5B #define GL_FLOAT_MAT4_ARB 0x8B5C #define GL_SAMPLER_1D_ARB 0x8B5D #define GL_SAMPLER_2D_ARB 0x8B5E #define GL_SAMPLER_3D_ARB 0x8B5F #define GL_SAMPLER_CUBE_ARB 0x8B60 #define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 #define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 #define GL_SAMPLER_2D_RECT_ARB 0x8B63 #define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 #define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 #define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 #define GL_OBJECT_LINK_STATUS_ARB 0x8B82 #define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 #define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 #define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 #define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 #define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 #define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 #ifndef GLEE_H_DEFINED_glDeleteObjectARB #define GLEE_H_DEFINED_glDeleteObjectARB typedef void (APIENTRYP GLEEPFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); GLEE_EXTERN GLEEPFNGLDELETEOBJECTARBPROC GLeeFuncPtr_glDeleteObjectARB; #define glDeleteObjectARB GLeeFuncPtr_glDeleteObjectARB #endif #ifndef GLEE_H_DEFINED_glGetHandleARB #define GLEE_H_DEFINED_glGetHandleARB typedef GLhandleARB (APIENTRYP GLEEPFNGLGETHANDLEARBPROC) (GLenum pname); GLEE_EXTERN GLEEPFNGLGETHANDLEARBPROC GLeeFuncPtr_glGetHandleARB; #define glGetHandleARB GLeeFuncPtr_glGetHandleARB #endif #ifndef GLEE_H_DEFINED_glDetachObjectARB #define GLEE_H_DEFINED_glDetachObjectARB typedef void (APIENTRYP GLEEPFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); GLEE_EXTERN GLEEPFNGLDETACHOBJECTARBPROC GLeeFuncPtr_glDetachObjectARB; #define glDetachObjectARB GLeeFuncPtr_glDetachObjectARB #endif #ifndef GLEE_H_DEFINED_glCreateShaderObjectARB #define GLEE_H_DEFINED_glCreateShaderObjectARB typedef GLhandleARB (APIENTRYP GLEEPFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); GLEE_EXTERN GLEEPFNGLCREATESHADEROBJECTARBPROC GLeeFuncPtr_glCreateShaderObjectARB; #define glCreateShaderObjectARB GLeeFuncPtr_glCreateShaderObjectARB #endif #ifndef GLEE_H_DEFINED_glShaderSourceARB #define GLEE_H_DEFINED_glShaderSourceARB typedef void (APIENTRYP GLEEPFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* * string, const GLint * length); GLEE_EXTERN GLEEPFNGLSHADERSOURCEARBPROC GLeeFuncPtr_glShaderSourceARB; #define glShaderSourceARB GLeeFuncPtr_glShaderSourceARB #endif #ifndef GLEE_H_DEFINED_glCompileShaderARB #define GLEE_H_DEFINED_glCompileShaderARB typedef void (APIENTRYP GLEEPFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); GLEE_EXTERN GLEEPFNGLCOMPILESHADERARBPROC GLeeFuncPtr_glCompileShaderARB; #define glCompileShaderARB GLeeFuncPtr_glCompileShaderARB #endif #ifndef GLEE_H_DEFINED_glCreateProgramObjectARB #define GLEE_H_DEFINED_glCreateProgramObjectARB typedef GLhandleARB (APIENTRYP GLEEPFNGLCREATEPROGRAMOBJECTARBPROC) (); GLEE_EXTERN GLEEPFNGLCREATEPROGRAMOBJECTARBPROC GLeeFuncPtr_glCreateProgramObjectARB; #define glCreateProgramObjectARB GLeeFuncPtr_glCreateProgramObjectARB #endif #ifndef GLEE_H_DEFINED_glAttachObjectARB #define GLEE_H_DEFINED_glAttachObjectARB typedef void (APIENTRYP GLEEPFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); GLEE_EXTERN GLEEPFNGLATTACHOBJECTARBPROC GLeeFuncPtr_glAttachObjectARB; #define glAttachObjectARB GLeeFuncPtr_glAttachObjectARB #endif #ifndef GLEE_H_DEFINED_glLinkProgramARB #define GLEE_H_DEFINED_glLinkProgramARB typedef void (APIENTRYP GLEEPFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); GLEE_EXTERN GLEEPFNGLLINKPROGRAMARBPROC GLeeFuncPtr_glLinkProgramARB; #define glLinkProgramARB GLeeFuncPtr_glLinkProgramARB #endif #ifndef GLEE_H_DEFINED_glUseProgramObjectARB #define GLEE_H_DEFINED_glUseProgramObjectARB typedef void (APIENTRYP GLEEPFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); GLEE_EXTERN GLEEPFNGLUSEPROGRAMOBJECTARBPROC GLeeFuncPtr_glUseProgramObjectARB; #define glUseProgramObjectARB GLeeFuncPtr_glUseProgramObjectARB #endif #ifndef GLEE_H_DEFINED_glValidateProgramARB #define GLEE_H_DEFINED_glValidateProgramARB typedef void (APIENTRYP GLEEPFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); GLEE_EXTERN GLEEPFNGLVALIDATEPROGRAMARBPROC GLeeFuncPtr_glValidateProgramARB; #define glValidateProgramARB GLeeFuncPtr_glValidateProgramARB #endif #ifndef GLEE_H_DEFINED_glUniform1fARB #define GLEE_H_DEFINED_glUniform1fARB typedef void (APIENTRYP GLEEPFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); GLEE_EXTERN GLEEPFNGLUNIFORM1FARBPROC GLeeFuncPtr_glUniform1fARB; #define glUniform1fARB GLeeFuncPtr_glUniform1fARB #endif #ifndef GLEE_H_DEFINED_glUniform2fARB #define GLEE_H_DEFINED_glUniform2fARB typedef void (APIENTRYP GLEEPFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); GLEE_EXTERN GLEEPFNGLUNIFORM2FARBPROC GLeeFuncPtr_glUniform2fARB; #define glUniform2fARB GLeeFuncPtr_glUniform2fARB #endif #ifndef GLEE_H_DEFINED_glUniform3fARB #define GLEE_H_DEFINED_glUniform3fARB typedef void (APIENTRYP GLEEPFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); GLEE_EXTERN GLEEPFNGLUNIFORM3FARBPROC GLeeFuncPtr_glUniform3fARB; #define glUniform3fARB GLeeFuncPtr_glUniform3fARB #endif #ifndef GLEE_H_DEFINED_glUniform4fARB #define GLEE_H_DEFINED_glUniform4fARB typedef void (APIENTRYP GLEEPFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); GLEE_EXTERN GLEEPFNGLUNIFORM4FARBPROC GLeeFuncPtr_glUniform4fARB; #define glUniform4fARB GLeeFuncPtr_glUniform4fARB #endif #ifndef GLEE_H_DEFINED_glUniform1iARB #define GLEE_H_DEFINED_glUniform1iARB typedef void (APIENTRYP GLEEPFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); GLEE_EXTERN GLEEPFNGLUNIFORM1IARBPROC GLeeFuncPtr_glUniform1iARB; #define glUniform1iARB GLeeFuncPtr_glUniform1iARB #endif #ifndef GLEE_H_DEFINED_glUniform2iARB #define GLEE_H_DEFINED_glUniform2iARB typedef void (APIENTRYP GLEEPFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); GLEE_EXTERN GLEEPFNGLUNIFORM2IARBPROC GLeeFuncPtr_glUniform2iARB; #define glUniform2iARB GLeeFuncPtr_glUniform2iARB #endif #ifndef GLEE_H_DEFINED_glUniform3iARB #define GLEE_H_DEFINED_glUniform3iARB typedef void (APIENTRYP GLEEPFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); GLEE_EXTERN GLEEPFNGLUNIFORM3IARBPROC GLeeFuncPtr_glUniform3iARB; #define glUniform3iARB GLeeFuncPtr_glUniform3iARB #endif #ifndef GLEE_H_DEFINED_glUniform4iARB #define GLEE_H_DEFINED_glUniform4iARB typedef void (APIENTRYP GLEEPFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); GLEE_EXTERN GLEEPFNGLUNIFORM4IARBPROC GLeeFuncPtr_glUniform4iARB; #define glUniform4iARB GLeeFuncPtr_glUniform4iARB #endif #ifndef GLEE_H_DEFINED_glUniform1fvARB #define GLEE_H_DEFINED_glUniform1fvARB typedef void (APIENTRYP GLEEPFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORM1FVARBPROC GLeeFuncPtr_glUniform1fvARB; #define glUniform1fvARB GLeeFuncPtr_glUniform1fvARB #endif #ifndef GLEE_H_DEFINED_glUniform2fvARB #define GLEE_H_DEFINED_glUniform2fvARB typedef void (APIENTRYP GLEEPFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORM2FVARBPROC GLeeFuncPtr_glUniform2fvARB; #define glUniform2fvARB GLeeFuncPtr_glUniform2fvARB #endif #ifndef GLEE_H_DEFINED_glUniform3fvARB #define GLEE_H_DEFINED_glUniform3fvARB typedef void (APIENTRYP GLEEPFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORM3FVARBPROC GLeeFuncPtr_glUniform3fvARB; #define glUniform3fvARB GLeeFuncPtr_glUniform3fvARB #endif #ifndef GLEE_H_DEFINED_glUniform4fvARB #define GLEE_H_DEFINED_glUniform4fvARB typedef void (APIENTRYP GLEEPFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORM4FVARBPROC GLeeFuncPtr_glUniform4fvARB; #define glUniform4fvARB GLeeFuncPtr_glUniform4fvARB #endif #ifndef GLEE_H_DEFINED_glUniform1ivARB #define GLEE_H_DEFINED_glUniform1ivARB typedef void (APIENTRYP GLEEPFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLUNIFORM1IVARBPROC GLeeFuncPtr_glUniform1ivARB; #define glUniform1ivARB GLeeFuncPtr_glUniform1ivARB #endif #ifndef GLEE_H_DEFINED_glUniform2ivARB #define GLEE_H_DEFINED_glUniform2ivARB typedef void (APIENTRYP GLEEPFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLUNIFORM2IVARBPROC GLeeFuncPtr_glUniform2ivARB; #define glUniform2ivARB GLeeFuncPtr_glUniform2ivARB #endif #ifndef GLEE_H_DEFINED_glUniform3ivARB #define GLEE_H_DEFINED_glUniform3ivARB typedef void (APIENTRYP GLEEPFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLUNIFORM3IVARBPROC GLeeFuncPtr_glUniform3ivARB; #define glUniform3ivARB GLeeFuncPtr_glUniform3ivARB #endif #ifndef GLEE_H_DEFINED_glUniform4ivARB #define GLEE_H_DEFINED_glUniform4ivARB typedef void (APIENTRYP GLEEPFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLUNIFORM4IVARBPROC GLeeFuncPtr_glUniform4ivARB; #define glUniform4ivARB GLeeFuncPtr_glUniform4ivARB #endif #ifndef GLEE_H_DEFINED_glUniformMatrix2fvARB #define GLEE_H_DEFINED_glUniformMatrix2fvARB typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX2FVARBPROC GLeeFuncPtr_glUniformMatrix2fvARB; #define glUniformMatrix2fvARB GLeeFuncPtr_glUniformMatrix2fvARB #endif #ifndef GLEE_H_DEFINED_glUniformMatrix3fvARB #define GLEE_H_DEFINED_glUniformMatrix3fvARB typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX3FVARBPROC GLeeFuncPtr_glUniformMatrix3fvARB; #define glUniformMatrix3fvARB GLeeFuncPtr_glUniformMatrix3fvARB #endif #ifndef GLEE_H_DEFINED_glUniformMatrix4fvARB #define GLEE_H_DEFINED_glUniformMatrix4fvARB typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX4FVARBPROC GLeeFuncPtr_glUniformMatrix4fvARB; #define glUniformMatrix4fvARB GLeeFuncPtr_glUniformMatrix4fvARB #endif #ifndef GLEE_H_DEFINED_glGetObjectParameterfvARB #define GLEE_H_DEFINED_glGetObjectParameterfvARB typedef void (APIENTRYP GLEEPFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETOBJECTPARAMETERFVARBPROC GLeeFuncPtr_glGetObjectParameterfvARB; #define glGetObjectParameterfvARB GLeeFuncPtr_glGetObjectParameterfvARB #endif #ifndef GLEE_H_DEFINED_glGetObjectParameterivARB #define GLEE_H_DEFINED_glGetObjectParameterivARB typedef void (APIENTRYP GLEEPFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETOBJECTPARAMETERIVARBPROC GLeeFuncPtr_glGetObjectParameterivARB; #define glGetObjectParameterivARB GLeeFuncPtr_glGetObjectParameterivARB #endif #ifndef GLEE_H_DEFINED_glGetInfoLogARB #define GLEE_H_DEFINED_glGetInfoLogARB typedef void (APIENTRYP GLEEPFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog); GLEE_EXTERN GLEEPFNGLGETINFOLOGARBPROC GLeeFuncPtr_glGetInfoLogARB; #define glGetInfoLogARB GLeeFuncPtr_glGetInfoLogARB #endif #ifndef GLEE_H_DEFINED_glGetAttachedObjectsARB #define GLEE_H_DEFINED_glGetAttachedObjectsARB typedef void (APIENTRYP GLEEPFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei * count, GLhandleARB * obj); GLEE_EXTERN GLEEPFNGLGETATTACHEDOBJECTSARBPROC GLeeFuncPtr_glGetAttachedObjectsARB; #define glGetAttachedObjectsARB GLeeFuncPtr_glGetAttachedObjectsARB #endif #ifndef GLEE_H_DEFINED_glGetUniformLocationARB #define GLEE_H_DEFINED_glGetUniformLocationARB typedef GLint (APIENTRYP GLEEPFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB * name); GLEE_EXTERN GLEEPFNGLGETUNIFORMLOCATIONARBPROC GLeeFuncPtr_glGetUniformLocationARB; #define glGetUniformLocationARB GLeeFuncPtr_glGetUniformLocationARB #endif #ifndef GLEE_H_DEFINED_glGetActiveUniformARB #define GLEE_H_DEFINED_glGetActiveUniformARB typedef void (APIENTRYP GLEEPFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); GLEE_EXTERN GLEEPFNGLGETACTIVEUNIFORMARBPROC GLeeFuncPtr_glGetActiveUniformARB; #define glGetActiveUniformARB GLeeFuncPtr_glGetActiveUniformARB #endif #ifndef GLEE_H_DEFINED_glGetUniformfvARB #define GLEE_H_DEFINED_glGetUniformfvARB typedef void (APIENTRYP GLEEPFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETUNIFORMFVARBPROC GLeeFuncPtr_glGetUniformfvARB; #define glGetUniformfvARB GLeeFuncPtr_glGetUniformfvARB #endif #ifndef GLEE_H_DEFINED_glGetUniformivARB #define GLEE_H_DEFINED_glGetUniformivARB typedef void (APIENTRYP GLEEPFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint * params); GLEE_EXTERN GLEEPFNGLGETUNIFORMIVARBPROC GLeeFuncPtr_glGetUniformivARB; #define glGetUniformivARB GLeeFuncPtr_glGetUniformivARB #endif #ifndef GLEE_H_DEFINED_glGetShaderSourceARB #define GLEE_H_DEFINED_glGetShaderSourceARB typedef void (APIENTRYP GLEEPFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * source); GLEE_EXTERN GLEEPFNGLGETSHADERSOURCEARBPROC GLeeFuncPtr_glGetShaderSourceARB; #define glGetShaderSourceARB GLeeFuncPtr_glGetShaderSourceARB #endif #endif /* GL_ARB_vertex_shader */ #ifndef GL_ARB_vertex_shader #define GL_ARB_vertex_shader 1 #define __GLEE_GL_ARB_vertex_shader 1 /* Constants */ #define GL_VERTEX_SHADER_ARB 0x8B31 #define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A #define GL_MAX_VARYING_FLOATS_ARB 0x8B4B #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D #define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 #define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A #ifndef GLEE_H_DEFINED_glBindAttribLocationARB #define GLEE_H_DEFINED_glBindAttribLocationARB typedef void (APIENTRYP GLEEPFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB * name); GLEE_EXTERN GLEEPFNGLBINDATTRIBLOCATIONARBPROC GLeeFuncPtr_glBindAttribLocationARB; #define glBindAttribLocationARB GLeeFuncPtr_glBindAttribLocationARB #endif #ifndef GLEE_H_DEFINED_glGetActiveAttribARB #define GLEE_H_DEFINED_glGetActiveAttribARB typedef void (APIENTRYP GLEEPFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); GLEE_EXTERN GLEEPFNGLGETACTIVEATTRIBARBPROC GLeeFuncPtr_glGetActiveAttribARB; #define glGetActiveAttribARB GLeeFuncPtr_glGetActiveAttribARB #endif #ifndef GLEE_H_DEFINED_glGetAttribLocationARB #define GLEE_H_DEFINED_glGetAttribLocationARB typedef GLint (APIENTRYP GLEEPFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB * name); GLEE_EXTERN GLEEPFNGLGETATTRIBLOCATIONARBPROC GLeeFuncPtr_glGetAttribLocationARB; #define glGetAttribLocationARB GLeeFuncPtr_glGetAttribLocationARB #endif #endif /* GL_ARB_fragment_shader */ #ifndef GL_ARB_fragment_shader #define GL_ARB_fragment_shader 1 #define __GLEE_GL_ARB_fragment_shader 1 /* Constants */ #define GL_FRAGMENT_SHADER_ARB 0x8B30 #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B #endif /* GL_ARB_shading_language_100 */ #ifndef GL_ARB_shading_language_100 #define GL_ARB_shading_language_100 1 #define __GLEE_GL_ARB_shading_language_100 1 /* Constants */ #define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C #endif /* GL_ARB_texture_non_power_of_two */ #ifndef GL_ARB_texture_non_power_of_two #define GL_ARB_texture_non_power_of_two 1 #define __GLEE_GL_ARB_texture_non_power_of_two 1 /* Constants */ #endif /* GL_ARB_point_sprite */ #ifndef GL_ARB_point_sprite #define GL_ARB_point_sprite 1 #define __GLEE_GL_ARB_point_sprite 1 /* Constants */ #define GL_POINT_SPRITE_ARB 0x8861 #define GL_COORD_REPLACE_ARB 0x8862 #endif /* GL_ARB_fragment_program_shadow */ #ifndef GL_ARB_fragment_program_shadow #define GL_ARB_fragment_program_shadow 1 #define __GLEE_GL_ARB_fragment_program_shadow 1 /* Constants */ #endif /* GL_ARB_draw_buffers */ #ifndef GL_ARB_draw_buffers #define GL_ARB_draw_buffers 1 #define __GLEE_GL_ARB_draw_buffers 1 /* Constants */ #define GL_MAX_DRAW_BUFFERS_ARB 0x8824 #define GL_DRAW_BUFFER0_ARB 0x8825 #define GL_DRAW_BUFFER1_ARB 0x8826 #define GL_DRAW_BUFFER2_ARB 0x8827 #define GL_DRAW_BUFFER3_ARB 0x8828 #define GL_DRAW_BUFFER4_ARB 0x8829 #define GL_DRAW_BUFFER5_ARB 0x882A #define GL_DRAW_BUFFER6_ARB 0x882B #define GL_DRAW_BUFFER7_ARB 0x882C #define GL_DRAW_BUFFER8_ARB 0x882D #define GL_DRAW_BUFFER9_ARB 0x882E #define GL_DRAW_BUFFER10_ARB 0x882F #define GL_DRAW_BUFFER11_ARB 0x8830 #define GL_DRAW_BUFFER12_ARB 0x8831 #define GL_DRAW_BUFFER13_ARB 0x8832 #define GL_DRAW_BUFFER14_ARB 0x8833 #define GL_DRAW_BUFFER15_ARB 0x8834 #ifndef GLEE_H_DEFINED_glDrawBuffersARB #define GLEE_H_DEFINED_glDrawBuffersARB typedef void (APIENTRYP GLEEPFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum * bufs); GLEE_EXTERN GLEEPFNGLDRAWBUFFERSARBPROC GLeeFuncPtr_glDrawBuffersARB; #define glDrawBuffersARB GLeeFuncPtr_glDrawBuffersARB #endif #endif /* GL_ARB_texture_rectangle */ #ifndef GL_ARB_texture_rectangle #define GL_ARB_texture_rectangle 1 #define __GLEE_GL_ARB_texture_rectangle 1 /* Constants */ #define GL_TEXTURE_RECTANGLE_ARB 0x84F5 #define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 #define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 #define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 #endif /* GL_ARB_color_buffer_float */ #ifndef GL_ARB_color_buffer_float #define GL_ARB_color_buffer_float 1 #define __GLEE_GL_ARB_color_buffer_float 1 /* Constants */ #define GL_RGBA_FLOAT_MODE_ARB 0x8820 #define GL_CLAMP_VERTEX_COLOR_ARB 0x891A #define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B #define GL_CLAMP_READ_COLOR_ARB 0x891C #define GL_FIXED_ONLY_ARB 0x891D #ifndef GLEE_H_DEFINED_glClampColorARB #define GLEE_H_DEFINED_glClampColorARB typedef void (APIENTRYP GLEEPFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); GLEE_EXTERN GLEEPFNGLCLAMPCOLORARBPROC GLeeFuncPtr_glClampColorARB; #define glClampColorARB GLeeFuncPtr_glClampColorARB #endif #endif /* GL_ARB_half_float_pixel */ #ifndef GL_ARB_half_float_pixel #define GL_ARB_half_float_pixel 1 #define __GLEE_GL_ARB_half_float_pixel 1 /* Constants */ #define GL_HALF_FLOAT_ARB 0x140B #endif /* GL_ARB_texture_float */ #ifndef GL_ARB_texture_float #define GL_ARB_texture_float 1 #define __GLEE_GL_ARB_texture_float 1 /* Constants */ #define GL_TEXTURE_RED_TYPE_ARB 0x8C10 #define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 #define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 #define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 #define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 #define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 #define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 #define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 #define GL_RGBA32F_ARB 0x8814 #define GL_RGB32F_ARB 0x8815 #define GL_ALPHA32F_ARB 0x8816 #define GL_INTENSITY32F_ARB 0x8817 #define GL_LUMINANCE32F_ARB 0x8818 #define GL_LUMINANCE_ALPHA32F_ARB 0x8819 #define GL_RGBA16F_ARB 0x881A #define GL_RGB16F_ARB 0x881B #define GL_ALPHA16F_ARB 0x881C #define GL_INTENSITY16F_ARB 0x881D #define GL_LUMINANCE16F_ARB 0x881E #define GL_LUMINANCE_ALPHA16F_ARB 0x881F #endif /* GL_ARB_pixel_buffer_object */ #ifndef GL_ARB_pixel_buffer_object #define GL_ARB_pixel_buffer_object 1 #define __GLEE_GL_ARB_pixel_buffer_object 1 /* Constants */ #define GL_PIXEL_PACK_BUFFER_ARB 0x88EB #define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC #define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED #define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF #endif /* GL_ARB_depth_buffer_float */ #ifndef GL_ARB_depth_buffer_float #define GL_ARB_depth_buffer_float 1 #define __GLEE_GL_ARB_depth_buffer_float 1 /* Constants */ #define GL_DEPTH_COMPONENT32F 0x8CAC #define GL_DEPTH32F_STENCIL8 0x8CAD #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD #endif /* GL_ARB_draw_instanced */ #ifndef GL_ARB_draw_instanced #define GL_ARB_draw_instanced 1 #define __GLEE_GL_ARB_draw_instanced 1 /* Constants */ #ifndef GLEE_H_DEFINED_glDrawArraysInstancedARB #define GLEE_H_DEFINED_glDrawArraysInstancedARB typedef void (APIENTRYP GLEEPFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); GLEE_EXTERN GLEEPFNGLDRAWARRAYSINSTANCEDARBPROC GLeeFuncPtr_glDrawArraysInstancedARB; #define glDrawArraysInstancedARB GLeeFuncPtr_glDrawArraysInstancedARB #endif #ifndef GLEE_H_DEFINED_glDrawElementsInstancedARB #define GLEE_H_DEFINED_glDrawElementsInstancedARB typedef void (APIENTRYP GLEEPFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount); GLEE_EXTERN GLEEPFNGLDRAWELEMENTSINSTANCEDARBPROC GLeeFuncPtr_glDrawElementsInstancedARB; #define glDrawElementsInstancedARB GLeeFuncPtr_glDrawElementsInstancedARB #endif #endif /* GL_ARB_framebuffer_object */ #ifndef GL_ARB_framebuffer_object #define GL_ARB_framebuffer_object 1 #define __GLEE_GL_ARB_framebuffer_object 1 /* Constants */ #define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 #define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 #define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 #define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 #define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 #define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 #define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 #define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 #define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 #define GL_FRAMEBUFFER_DEFAULT 0x8218 #define GL_FRAMEBUFFER_UNDEFINED 0x8219 #define GL_DEPTH_STENCIL_ATTACHMENT 0x821A #define GL_MAX_RENDERBUFFER_SIZE 0x84E8 #define GL_DEPTH_STENCIL 0x84F9 #define GL_UNSIGNED_INT_24_8 0x84FA #define GL_DEPTH24_STENCIL8 0x88F0 #define GL_TEXTURE_STENCIL_SIZE 0x88F1 #define GL_TEXTURE_RED_TYPE 0x8C10 #define GL_TEXTURE_GREEN_TYPE 0x8C11 #define GL_TEXTURE_BLUE_TYPE 0x8C12 #define GL_TEXTURE_ALPHA_TYPE 0x8C13 #define GL_TEXTURE_DEPTH_TYPE 0x8C16 #define GL_UNSIGNED_NORMALIZED 0x8C17 #define GL_FRAMEBUFFER_BINDING 0x8CA6 #define GL_DRAW_FRAMEBUFFER_BINDING GL_FRAMEBUFFER_BINDING #define GL_RENDERBUFFER_BINDING 0x8CA7 #define GL_READ_FRAMEBUFFER 0x8CA8 #define GL_DRAW_FRAMEBUFFER 0x8CA9 #define GL_READ_FRAMEBUFFER_BINDING 0x8CAA #define GL_RENDERBUFFER_SAMPLES 0x8CAB #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 #define GL_FRAMEBUFFER_COMPLETE 0x8CD5 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC #define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD #define GL_MAX_COLOR_ATTACHMENTS 0x8CDF #define GL_COLOR_ATTACHMENT0 0x8CE0 #define GL_COLOR_ATTACHMENT1 0x8CE1 #define GL_COLOR_ATTACHMENT2 0x8CE2 #define GL_COLOR_ATTACHMENT3 0x8CE3 #define GL_COLOR_ATTACHMENT4 0x8CE4 #define GL_COLOR_ATTACHMENT5 0x8CE5 #define GL_COLOR_ATTACHMENT6 0x8CE6 #define GL_COLOR_ATTACHMENT7 0x8CE7 #define GL_COLOR_ATTACHMENT8 0x8CE8 #define GL_COLOR_ATTACHMENT9 0x8CE9 #define GL_COLOR_ATTACHMENT10 0x8CEA #define GL_COLOR_ATTACHMENT11 0x8CEB #define GL_COLOR_ATTACHMENT12 0x8CEC #define GL_COLOR_ATTACHMENT13 0x8CED #define GL_COLOR_ATTACHMENT14 0x8CEE #define GL_COLOR_ATTACHMENT15 0x8CEF #define GL_DEPTH_ATTACHMENT 0x8D00 #define GL_STENCIL_ATTACHMENT 0x8D20 #define GL_FRAMEBUFFER 0x8D40 #define GL_RENDERBUFFER 0x8D41 #define GL_RENDERBUFFER_WIDTH 0x8D42 #define GL_RENDERBUFFER_HEIGHT 0x8D43 #define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 #define GL_STENCIL_INDEX1 0x8D46 #define GL_STENCIL_INDEX4 0x8D47 #define GL_STENCIL_INDEX8 0x8D48 #define GL_STENCIL_INDEX16 0x8D49 #define GL_RENDERBUFFER_RED_SIZE 0x8D50 #define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 #define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 #define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 #define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 #define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 #define GL_MAX_SAMPLES 0x8D57 #define GL_INDEX 0x8222 #define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 #define GL_TEXTURE_INTENSITY_TYPE 0x8C15 #ifndef GLEE_H_DEFINED_glIsRenderbuffer #define GLEE_H_DEFINED_glIsRenderbuffer typedef GLboolean (APIENTRYP GLEEPFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); GLEE_EXTERN GLEEPFNGLISRENDERBUFFERPROC GLeeFuncPtr_glIsRenderbuffer; #define glIsRenderbuffer GLeeFuncPtr_glIsRenderbuffer #endif #ifndef GLEE_H_DEFINED_glBindRenderbuffer #define GLEE_H_DEFINED_glBindRenderbuffer typedef void (APIENTRYP GLEEPFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); GLEE_EXTERN GLEEPFNGLBINDRENDERBUFFERPROC GLeeFuncPtr_glBindRenderbuffer; #define glBindRenderbuffer GLeeFuncPtr_glBindRenderbuffer #endif #ifndef GLEE_H_DEFINED_glDeleteRenderbuffers #define GLEE_H_DEFINED_glDeleteRenderbuffers typedef void (APIENTRYP GLEEPFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint * renderbuffers); GLEE_EXTERN GLEEPFNGLDELETERENDERBUFFERSPROC GLeeFuncPtr_glDeleteRenderbuffers; #define glDeleteRenderbuffers GLeeFuncPtr_glDeleteRenderbuffers #endif #ifndef GLEE_H_DEFINED_glGenRenderbuffers #define GLEE_H_DEFINED_glGenRenderbuffers typedef void (APIENTRYP GLEEPFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint * renderbuffers); GLEE_EXTERN GLEEPFNGLGENRENDERBUFFERSPROC GLeeFuncPtr_glGenRenderbuffers; #define glGenRenderbuffers GLeeFuncPtr_glGenRenderbuffers #endif #ifndef GLEE_H_DEFINED_glRenderbufferStorage #define GLEE_H_DEFINED_glRenderbufferStorage typedef void (APIENTRYP GLEEPFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLRENDERBUFFERSTORAGEPROC GLeeFuncPtr_glRenderbufferStorage; #define glRenderbufferStorage GLeeFuncPtr_glRenderbufferStorage #endif #ifndef GLEE_H_DEFINED_glGetRenderbufferParameteriv #define GLEE_H_DEFINED_glGetRenderbufferParameteriv typedef void (APIENTRYP GLEEPFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETRENDERBUFFERPARAMETERIVPROC GLeeFuncPtr_glGetRenderbufferParameteriv; #define glGetRenderbufferParameteriv GLeeFuncPtr_glGetRenderbufferParameteriv #endif #ifndef GLEE_H_DEFINED_glIsFramebuffer #define GLEE_H_DEFINED_glIsFramebuffer typedef GLboolean (APIENTRYP GLEEPFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); GLEE_EXTERN GLEEPFNGLISFRAMEBUFFERPROC GLeeFuncPtr_glIsFramebuffer; #define glIsFramebuffer GLeeFuncPtr_glIsFramebuffer #endif #ifndef GLEE_H_DEFINED_glBindFramebuffer #define GLEE_H_DEFINED_glBindFramebuffer typedef void (APIENTRYP GLEEPFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); GLEE_EXTERN GLEEPFNGLBINDFRAMEBUFFERPROC GLeeFuncPtr_glBindFramebuffer; #define glBindFramebuffer GLeeFuncPtr_glBindFramebuffer #endif #ifndef GLEE_H_DEFINED_glDeleteFramebuffers #define GLEE_H_DEFINED_glDeleteFramebuffers typedef void (APIENTRYP GLEEPFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint * framebuffers); GLEE_EXTERN GLEEPFNGLDELETEFRAMEBUFFERSPROC GLeeFuncPtr_glDeleteFramebuffers; #define glDeleteFramebuffers GLeeFuncPtr_glDeleteFramebuffers #endif #ifndef GLEE_H_DEFINED_glGenFramebuffers #define GLEE_H_DEFINED_glGenFramebuffers typedef void (APIENTRYP GLEEPFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint * framebuffers); GLEE_EXTERN GLEEPFNGLGENFRAMEBUFFERSPROC GLeeFuncPtr_glGenFramebuffers; #define glGenFramebuffers GLeeFuncPtr_glGenFramebuffers #endif #ifndef GLEE_H_DEFINED_glCheckFramebufferStatus #define GLEE_H_DEFINED_glCheckFramebufferStatus typedef GLenum (APIENTRYP GLEEPFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLCHECKFRAMEBUFFERSTATUSPROC GLeeFuncPtr_glCheckFramebufferStatus; #define glCheckFramebufferStatus GLeeFuncPtr_glCheckFramebufferStatus #endif #ifndef GLEE_H_DEFINED_glFramebufferTexture1D #define GLEE_H_DEFINED_glFramebufferTexture1D typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTURE1DPROC GLeeFuncPtr_glFramebufferTexture1D; #define glFramebufferTexture1D GLeeFuncPtr_glFramebufferTexture1D #endif #ifndef GLEE_H_DEFINED_glFramebufferTexture2D #define GLEE_H_DEFINED_glFramebufferTexture2D typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTURE2DPROC GLeeFuncPtr_glFramebufferTexture2D; #define glFramebufferTexture2D GLeeFuncPtr_glFramebufferTexture2D #endif #ifndef GLEE_H_DEFINED_glFramebufferTexture3D #define GLEE_H_DEFINED_glFramebufferTexture3D typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTURE3DPROC GLeeFuncPtr_glFramebufferTexture3D; #define glFramebufferTexture3D GLeeFuncPtr_glFramebufferTexture3D #endif #ifndef GLEE_H_DEFINED_glFramebufferRenderbuffer #define GLEE_H_DEFINED_glFramebufferRenderbuffer typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERRENDERBUFFERPROC GLeeFuncPtr_glFramebufferRenderbuffer; #define glFramebufferRenderbuffer GLeeFuncPtr_glFramebufferRenderbuffer #endif #ifndef GLEE_H_DEFINED_glGetFramebufferAttachmentParameteriv #define GLEE_H_DEFINED_glGetFramebufferAttachmentParameteriv typedef void (APIENTRYP GLEEPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC GLeeFuncPtr_glGetFramebufferAttachmentParameteriv; #define glGetFramebufferAttachmentParameteriv GLeeFuncPtr_glGetFramebufferAttachmentParameteriv #endif #ifndef GLEE_H_DEFINED_glGenerateMipmap #define GLEE_H_DEFINED_glGenerateMipmap typedef void (APIENTRYP GLEEPFNGLGENERATEMIPMAPPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLGENERATEMIPMAPPROC GLeeFuncPtr_glGenerateMipmap; #define glGenerateMipmap GLeeFuncPtr_glGenerateMipmap #endif #ifndef GLEE_H_DEFINED_glBlitFramebuffer #define GLEE_H_DEFINED_glBlitFramebuffer typedef void (APIENTRYP GLEEPFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); GLEE_EXTERN GLEEPFNGLBLITFRAMEBUFFERPROC GLeeFuncPtr_glBlitFramebuffer; #define glBlitFramebuffer GLeeFuncPtr_glBlitFramebuffer #endif #ifndef GLEE_H_DEFINED_glRenderbufferStorageMultisample #define GLEE_H_DEFINED_glRenderbufferStorageMultisample typedef void (APIENTRYP GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC GLeeFuncPtr_glRenderbufferStorageMultisample; #define glRenderbufferStorageMultisample GLeeFuncPtr_glRenderbufferStorageMultisample #endif #ifndef GLEE_H_DEFINED_glFramebufferTextureLayer #define GLEE_H_DEFINED_glFramebufferTextureLayer typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTURELAYERPROC GLeeFuncPtr_glFramebufferTextureLayer; #define glFramebufferTextureLayer GLeeFuncPtr_glFramebufferTextureLayer #endif #endif /* GL_ARB_framebuffer_sRGB */ #ifndef GL_ARB_framebuffer_sRGB #define GL_ARB_framebuffer_sRGB 1 #define __GLEE_GL_ARB_framebuffer_sRGB 1 /* Constants */ #define GL_FRAMEBUFFER_SRGB 0x8DB9 #endif /* GL_ARB_geometry_shader4 */ #ifndef GL_ARB_geometry_shader4 #define GL_ARB_geometry_shader4 1 #define __GLEE_GL_ARB_geometry_shader4 1 /* Constants */ #define GL_LINES_ADJACENCY_ARB 0x000A #define GL_LINE_STRIP_ADJACENCY_ARB 0x000B #define GL_TRIANGLES_ADJACENCY_ARB 0x000C #define GL_TRIANGLE_STRIP_ADJACENCY_ARB 0x000D #define GL_PROGRAM_POINT_SIZE_ARB 0x8642 #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB 0x8C29 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB 0x8DA7 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB 0x8DA8 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB 0x8DA9 #define GL_GEOMETRY_SHADER_ARB 0x8DD9 #define GL_GEOMETRY_VERTICES_OUT_ARB 0x8DDA #define GL_GEOMETRY_INPUT_TYPE_ARB 0x8DDB #define GL_GEOMETRY_OUTPUT_TYPE_ARB 0x8DDC #define GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB 0x8DDD #define GL_MAX_VERTEX_VARYING_COMPONENTS_ARB 0x8DDE #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB 0x8DDF #define GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB 0x8DE0 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB 0x8DE1 #ifndef GLEE_H_DEFINED_glProgramParameteriARB #define GLEE_H_DEFINED_glProgramParameteriARB typedef void (APIENTRYP GLEEPFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value); GLEE_EXTERN GLEEPFNGLPROGRAMPARAMETERIARBPROC GLeeFuncPtr_glProgramParameteriARB; #define glProgramParameteriARB GLeeFuncPtr_glProgramParameteriARB #endif #ifndef GLEE_H_DEFINED_glFramebufferTextureARB #define GLEE_H_DEFINED_glFramebufferTextureARB typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTUREARBPROC GLeeFuncPtr_glFramebufferTextureARB; #define glFramebufferTextureARB GLeeFuncPtr_glFramebufferTextureARB #endif #ifndef GLEE_H_DEFINED_glFramebufferTextureLayerARB #define GLEE_H_DEFINED_glFramebufferTextureLayerARB typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTURELAYERARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTURELAYERARBPROC GLeeFuncPtr_glFramebufferTextureLayerARB; #define glFramebufferTextureLayerARB GLeeFuncPtr_glFramebufferTextureLayerARB #endif #ifndef GLEE_H_DEFINED_glFramebufferTextureFaceARB #define GLEE_H_DEFINED_glFramebufferTextureFaceARB typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTUREFACEARBPROC GLeeFuncPtr_glFramebufferTextureFaceARB; #define glFramebufferTextureFaceARB GLeeFuncPtr_glFramebufferTextureFaceARB #endif #endif /* GL_ARB_half_float_vertex */ #ifndef GL_ARB_half_float_vertex #define GL_ARB_half_float_vertex 1 #define __GLEE_GL_ARB_half_float_vertex 1 /* Constants */ #define GL_HALF_FLOAT 0x140B #endif /* GL_ARB_instanced_arrays */ #ifndef GL_ARB_instanced_arrays #define GL_ARB_instanced_arrays 1 #define __GLEE_GL_ARB_instanced_arrays 1 /* Constants */ #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB 0x88FE #ifndef GLEE_H_DEFINED_glVertexAttribDivisorARB #define GLEE_H_DEFINED_glVertexAttribDivisorARB typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBDIVISORARBPROC GLeeFuncPtr_glVertexAttribDivisorARB; #define glVertexAttribDivisorARB GLeeFuncPtr_glVertexAttribDivisorARB #endif #endif /* GL_ARB_map_buffer_range */ #ifndef GL_ARB_map_buffer_range #define GL_ARB_map_buffer_range 1 #define __GLEE_GL_ARB_map_buffer_range 1 /* Constants */ #define GL_MAP_READ_BIT 0x0001 #define GL_MAP_WRITE_BIT 0x0002 #define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 #define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 #define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 #define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 #ifndef GLEE_H_DEFINED_glMapBufferRange #define GLEE_H_DEFINED_glMapBufferRange typedef GLvoid* (APIENTRYP GLEEPFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); GLEE_EXTERN GLEEPFNGLMAPBUFFERRANGEPROC GLeeFuncPtr_glMapBufferRange; #define glMapBufferRange GLeeFuncPtr_glMapBufferRange #endif #ifndef GLEE_H_DEFINED_glFlushMappedBufferRange #define GLEE_H_DEFINED_glFlushMappedBufferRange typedef void (APIENTRYP GLEEPFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length); GLEE_EXTERN GLEEPFNGLFLUSHMAPPEDBUFFERRANGEPROC GLeeFuncPtr_glFlushMappedBufferRange; #define glFlushMappedBufferRange GLeeFuncPtr_glFlushMappedBufferRange #endif #endif /* GL_ARB_texture_buffer_object */ #ifndef GL_ARB_texture_buffer_object #define GL_ARB_texture_buffer_object 1 #define __GLEE_GL_ARB_texture_buffer_object 1 /* Constants */ #define GL_TEXTURE_BUFFER_ARB 0x8C2A #define GL_MAX_TEXTURE_BUFFER_SIZE_ARB 0x8C2B #define GL_TEXTURE_BINDING_BUFFER_ARB 0x8C2C #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB 0x8C2D #define GL_TEXTURE_BUFFER_FORMAT_ARB 0x8C2E #ifndef GLEE_H_DEFINED_glTexBufferARB #define GLEE_H_DEFINED_glTexBufferARB typedef void (APIENTRYP GLEEPFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer); GLEE_EXTERN GLEEPFNGLTEXBUFFERARBPROC GLeeFuncPtr_glTexBufferARB; #define glTexBufferARB GLeeFuncPtr_glTexBufferARB #endif #endif /* GL_ARB_texture_compression_rgtc */ #ifndef GL_ARB_texture_compression_rgtc #define GL_ARB_texture_compression_rgtc 1 #define __GLEE_GL_ARB_texture_compression_rgtc 1 /* Constants */ #define GL_COMPRESSED_RED_RGTC1 0x8DBB #define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC #define GL_COMPRESSED_RG_RGTC2 0x8DBD #define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE #endif /* GL_ARB_texture_rg */ #ifndef GL_ARB_texture_rg #define GL_ARB_texture_rg 1 #define __GLEE_GL_ARB_texture_rg 1 /* Constants */ #define GL_RG 0x8227 #define GL_RG_INTEGER 0x8228 #define GL_R8 0x8229 #define GL_R16 0x822A #define GL_RG8 0x822B #define GL_RG16 0x822C #define GL_R16F 0x822D #define GL_R32F 0x822E #define GL_RG16F 0x822F #define GL_RG32F 0x8230 #define GL_R8I 0x8231 #define GL_R8UI 0x8232 #define GL_R16I 0x8233 #define GL_R16UI 0x8234 #define GL_R32I 0x8235 #define GL_R32UI 0x8236 #define GL_RG8I 0x8237 #define GL_RG8UI 0x8238 #define GL_RG16I 0x8239 #define GL_RG16UI 0x823A #define GL_RG32I 0x823B #define GL_RG32UI 0x823C #endif /* GL_ARB_vertex_array_object */ #ifndef GL_ARB_vertex_array_object #define GL_ARB_vertex_array_object 1 #define __GLEE_GL_ARB_vertex_array_object 1 /* Constants */ #define GL_VERTEX_ARRAY_BINDING 0x85B5 #ifndef GLEE_H_DEFINED_glBindVertexArray #define GLEE_H_DEFINED_glBindVertexArray typedef void (APIENTRYP GLEEPFNGLBINDVERTEXARRAYPROC) (GLuint array); GLEE_EXTERN GLEEPFNGLBINDVERTEXARRAYPROC GLeeFuncPtr_glBindVertexArray; #define glBindVertexArray GLeeFuncPtr_glBindVertexArray #endif #ifndef GLEE_H_DEFINED_glDeleteVertexArrays #define GLEE_H_DEFINED_glDeleteVertexArrays typedef void (APIENTRYP GLEEPFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint * arrays); GLEE_EXTERN GLEEPFNGLDELETEVERTEXARRAYSPROC GLeeFuncPtr_glDeleteVertexArrays; #define glDeleteVertexArrays GLeeFuncPtr_glDeleteVertexArrays #endif #ifndef GLEE_H_DEFINED_glGenVertexArrays #define GLEE_H_DEFINED_glGenVertexArrays typedef void (APIENTRYP GLEEPFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint * arrays); GLEE_EXTERN GLEEPFNGLGENVERTEXARRAYSPROC GLeeFuncPtr_glGenVertexArrays; #define glGenVertexArrays GLeeFuncPtr_glGenVertexArrays #endif #ifndef GLEE_H_DEFINED_glIsVertexArray #define GLEE_H_DEFINED_glIsVertexArray typedef GLboolean (APIENTRYP GLEEPFNGLISVERTEXARRAYPROC) (GLuint array); GLEE_EXTERN GLEEPFNGLISVERTEXARRAYPROC GLeeFuncPtr_glIsVertexArray; #define glIsVertexArray GLeeFuncPtr_glIsVertexArray #endif #endif /* GL_ARB_uniform_buffer_object */ #ifndef GL_ARB_uniform_buffer_object #define GL_ARB_uniform_buffer_object 1 #define __GLEE_GL_ARB_uniform_buffer_object 1 /* Constants */ #define GL_UNIFORM_BUFFER 0x8A11 #define GL_UNIFORM_BUFFER_BINDING 0x8A28 #define GL_UNIFORM_BUFFER_START 0x8A29 #define GL_UNIFORM_BUFFER_SIZE 0x8A2A #define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B #define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C #define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D #define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E #define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F #define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 #define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 #define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 #define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 #define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 #define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 #define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 #define GL_UNIFORM_TYPE 0x8A37 #define GL_UNIFORM_SIZE 0x8A38 #define GL_UNIFORM_NAME_LENGTH 0x8A39 #define GL_UNIFORM_BLOCK_INDEX 0x8A3A #define GL_UNIFORM_OFFSET 0x8A3B #define GL_UNIFORM_ARRAY_STRIDE 0x8A3C #define GL_UNIFORM_MATRIX_STRIDE 0x8A3D #define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E #define GL_UNIFORM_BLOCK_BINDING 0x8A3F #define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 #define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 #define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 #define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 #define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 #define GL_INVALID_INDEX 0xFFFFFFFFu #ifndef GLEE_H_DEFINED_glGetUniformIndices #define GLEE_H_DEFINED_glGetUniformIndices typedef void (APIENTRYP GLEEPFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* const * uniformNames, GLuint * uniformIndices); GLEE_EXTERN GLEEPFNGLGETUNIFORMINDICESPROC GLeeFuncPtr_glGetUniformIndices; #define glGetUniformIndices GLeeFuncPtr_glGetUniformIndices #endif #ifndef GLEE_H_DEFINED_glGetActiveUniformsiv #define GLEE_H_DEFINED_glGetActiveUniformsiv typedef void (APIENTRYP GLEEPFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint * uniformIndices, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETACTIVEUNIFORMSIVPROC GLeeFuncPtr_glGetActiveUniformsiv; #define glGetActiveUniformsiv GLeeFuncPtr_glGetActiveUniformsiv #endif #ifndef GLEE_H_DEFINED_glGetActiveUniformName #define GLEE_H_DEFINED_glGetActiveUniformName typedef void (APIENTRYP GLEEPFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformName); GLEE_EXTERN GLEEPFNGLGETACTIVEUNIFORMNAMEPROC GLeeFuncPtr_glGetActiveUniformName; #define glGetActiveUniformName GLeeFuncPtr_glGetActiveUniformName #endif #ifndef GLEE_H_DEFINED_glGetUniformBlockIndex #define GLEE_H_DEFINED_glGetUniformBlockIndex typedef GLuint (APIENTRYP GLEEPFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar * uniformBlockName); GLEE_EXTERN GLEEPFNGLGETUNIFORMBLOCKINDEXPROC GLeeFuncPtr_glGetUniformBlockIndex; #define glGetUniformBlockIndex GLeeFuncPtr_glGetUniformBlockIndex #endif #ifndef GLEE_H_DEFINED_glGetActiveUniformBlockiv #define GLEE_H_DEFINED_glGetActiveUniformBlockiv typedef void (APIENTRYP GLEEPFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETACTIVEUNIFORMBLOCKIVPROC GLeeFuncPtr_glGetActiveUniformBlockiv; #define glGetActiveUniformBlockiv GLeeFuncPtr_glGetActiveUniformBlockiv #endif #ifndef GLEE_H_DEFINED_glGetActiveUniformBlockName #define GLEE_H_DEFINED_glGetActiveUniformBlockName typedef void (APIENTRYP GLEEPFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei * length, GLchar * uniformBlockName); GLEE_EXTERN GLEEPFNGLGETACTIVEUNIFORMBLOCKNAMEPROC GLeeFuncPtr_glGetActiveUniformBlockName; #define glGetActiveUniformBlockName GLeeFuncPtr_glGetActiveUniformBlockName #endif #ifndef GLEE_H_DEFINED_glUniformBlockBinding #define GLEE_H_DEFINED_glUniformBlockBinding typedef void (APIENTRYP GLEEPFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); GLEE_EXTERN GLEEPFNGLUNIFORMBLOCKBINDINGPROC GLeeFuncPtr_glUniformBlockBinding; #define glUniformBlockBinding GLeeFuncPtr_glUniformBlockBinding #endif #endif /* GL_ARB_compatibility */ #ifndef GL_ARB_compatibility #define GL_ARB_compatibility 1 #define __GLEE_GL_ARB_compatibility 1 /* Constants */ #endif /* GL_ARB_copy_buffer */ #ifndef GL_ARB_copy_buffer #define GL_ARB_copy_buffer 1 #define __GLEE_GL_ARB_copy_buffer 1 /* Constants */ #define GL_COPY_READ_BUFFER_BINDING 0x8F36 #define GL_COPY_READ_BUFFER GL_COPY_READ_BUFFER_BINDING #define GL_COPY_WRITE_BUFFER_BINDING 0x8F37 #define GL_COPY_WRITE_BUFFER GL_COPY_WRITE_BUFFER_BINDING #ifndef GLEE_H_DEFINED_glCopyBufferSubData #define GLEE_H_DEFINED_glCopyBufferSubData typedef void (APIENTRYP GLEEPFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); GLEE_EXTERN GLEEPFNGLCOPYBUFFERSUBDATAPROC GLeeFuncPtr_glCopyBufferSubData; #define glCopyBufferSubData GLeeFuncPtr_glCopyBufferSubData #endif #endif /* GL_ARB_shader_texture_lod */ #ifndef GL_ARB_shader_texture_lod #define GL_ARB_shader_texture_lod 1 #define __GLEE_GL_ARB_shader_texture_lod 1 /* Constants */ #endif /* GL_ARB_depth_clamp */ #ifndef GL_ARB_depth_clamp #define GL_ARB_depth_clamp 1 #define __GLEE_GL_ARB_depth_clamp 1 /* Constants */ #define GL_DEPTH_CLAMP 0x864F #endif /* GL_ARB_draw_elements_base_vertex */ #ifndef GL_ARB_draw_elements_base_vertex #define GL_ARB_draw_elements_base_vertex 1 #define __GLEE_GL_ARB_draw_elements_base_vertex 1 /* Constants */ #ifndef GLEE_H_DEFINED_glDrawElementsBaseVertex #define GLEE_H_DEFINED_glDrawElementsBaseVertex typedef void (APIENTRYP GLEEPFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); GLEE_EXTERN GLEEPFNGLDRAWELEMENTSBASEVERTEXPROC GLeeFuncPtr_glDrawElementsBaseVertex; #define glDrawElementsBaseVertex GLeeFuncPtr_glDrawElementsBaseVertex #endif #ifndef GLEE_H_DEFINED_glDrawRangeElementsBaseVertex #define GLEE_H_DEFINED_glDrawRangeElementsBaseVertex typedef void (APIENTRYP GLEEPFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); GLEE_EXTERN GLEEPFNGLDRAWRANGEELEMENTSBASEVERTEXPROC GLeeFuncPtr_glDrawRangeElementsBaseVertex; #define glDrawRangeElementsBaseVertex GLeeFuncPtr_glDrawRangeElementsBaseVertex #endif #ifndef GLEE_H_DEFINED_glDrawElementsInstancedBaseVertex #define GLEE_H_DEFINED_glDrawElementsInstancedBaseVertex typedef void (APIENTRYP GLEEPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei instancecount, GLint basevertex); GLEE_EXTERN GLEEPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC GLeeFuncPtr_glDrawElementsInstancedBaseVertex; #define glDrawElementsInstancedBaseVertex GLeeFuncPtr_glDrawElementsInstancedBaseVertex #endif #ifndef GLEE_H_DEFINED_glMultiDrawElementsBaseVertex #define GLEE_H_DEFINED_glMultiDrawElementsBaseVertex typedef void (APIENTRYP GLEEPFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei * count, GLenum type, const GLvoid* const * indices, GLsizei drawcount, const GLint * basevertex); GLEE_EXTERN GLEEPFNGLMULTIDRAWELEMENTSBASEVERTEXPROC GLeeFuncPtr_glMultiDrawElementsBaseVertex; #define glMultiDrawElementsBaseVertex GLeeFuncPtr_glMultiDrawElementsBaseVertex #endif #endif /* GL_ARB_fragment_coord_conventions */ #ifndef GL_ARB_fragment_coord_conventions #define GL_ARB_fragment_coord_conventions 1 #define __GLEE_GL_ARB_fragment_coord_conventions 1 /* Constants */ #endif /* GL_ARB_provoking_vertex */ #ifndef GL_ARB_provoking_vertex #define GL_ARB_provoking_vertex 1 #define __GLEE_GL_ARB_provoking_vertex 1 /* Constants */ #define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C #define GL_FIRST_VERTEX_CONVENTION 0x8E4D #define GL_LAST_VERTEX_CONVENTION 0x8E4E #define GL_PROVOKING_VERTEX 0x8E4F #ifndef GLEE_H_DEFINED_glProvokingVertex #define GLEE_H_DEFINED_glProvokingVertex typedef void (APIENTRYP GLEEPFNGLPROVOKINGVERTEXPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLPROVOKINGVERTEXPROC GLeeFuncPtr_glProvokingVertex; #define glProvokingVertex GLeeFuncPtr_glProvokingVertex #endif #endif /* GL_ARB_seamless_cube_map */ #ifndef GL_ARB_seamless_cube_map #define GL_ARB_seamless_cube_map 1 #define __GLEE_GL_ARB_seamless_cube_map 1 /* Constants */ #define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F #endif /* GL_ARB_sync */ #ifndef GL_ARB_sync #define GL_ARB_sync 1 #define __GLEE_GL_ARB_sync 1 /* Constants */ #define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 #define GL_OBJECT_TYPE 0x9112 #define GL_SYNC_CONDITION 0x9113 #define GL_SYNC_STATUS 0x9114 #define GL_SYNC_FLAGS 0x9115 #define GL_SYNC_FENCE 0x9116 #define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 #define GL_UNSIGNALED 0x9118 #define GL_SIGNALED 0x9119 #define GL_ALREADY_SIGNALED 0x911A #define GL_TIMEOUT_EXPIRED 0x911B #define GL_CONDITION_SATISFIED 0x911C #define GL_WAIT_FAILED 0x911D #define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 #define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull #ifndef GLEE_H_DEFINED_glFenceSync #define GLEE_H_DEFINED_glFenceSync typedef GLsync (APIENTRYP GLEEPFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); GLEE_EXTERN GLEEPFNGLFENCESYNCPROC GLeeFuncPtr_glFenceSync; #define glFenceSync GLeeFuncPtr_glFenceSync #endif #ifndef GLEE_H_DEFINED_glIsSync #define GLEE_H_DEFINED_glIsSync typedef GLboolean (APIENTRYP GLEEPFNGLISSYNCPROC) (GLsync sync); GLEE_EXTERN GLEEPFNGLISSYNCPROC GLeeFuncPtr_glIsSync; #define glIsSync GLeeFuncPtr_glIsSync #endif #ifndef GLEE_H_DEFINED_glDeleteSync #define GLEE_H_DEFINED_glDeleteSync typedef void (APIENTRYP GLEEPFNGLDELETESYNCPROC) (GLsync sync); GLEE_EXTERN GLEEPFNGLDELETESYNCPROC GLeeFuncPtr_glDeleteSync; #define glDeleteSync GLeeFuncPtr_glDeleteSync #endif #ifndef GLEE_H_DEFINED_glClientWaitSync #define GLEE_H_DEFINED_glClientWaitSync typedef GLenum (APIENTRYP GLEEPFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); GLEE_EXTERN GLEEPFNGLCLIENTWAITSYNCPROC GLeeFuncPtr_glClientWaitSync; #define glClientWaitSync GLeeFuncPtr_glClientWaitSync #endif #ifndef GLEE_H_DEFINED_glWaitSync #define GLEE_H_DEFINED_glWaitSync typedef void (APIENTRYP GLEEPFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); GLEE_EXTERN GLEEPFNGLWAITSYNCPROC GLeeFuncPtr_glWaitSync; #define glWaitSync GLeeFuncPtr_glWaitSync #endif #ifndef GLEE_H_DEFINED_glGetInteger64v #define GLEE_H_DEFINED_glGetInteger64v typedef void (APIENTRYP GLEEPFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 * params); GLEE_EXTERN GLEEPFNGLGETINTEGER64VPROC GLeeFuncPtr_glGetInteger64v; #define glGetInteger64v GLeeFuncPtr_glGetInteger64v #endif #ifndef GLEE_H_DEFINED_glGetSynciv #define GLEE_H_DEFINED_glGetSynciv typedef void (APIENTRYP GLEEPFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); GLEE_EXTERN GLEEPFNGLGETSYNCIVPROC GLeeFuncPtr_glGetSynciv; #define glGetSynciv GLeeFuncPtr_glGetSynciv #endif #endif /* GL_ARB_texture_multisample */ #ifndef GL_ARB_texture_multisample #define GL_ARB_texture_multisample 1 #define __GLEE_GL_ARB_texture_multisample 1 /* Constants */ #define GL_SAMPLE_POSITION 0x8E50 #define GL_SAMPLE_MASK 0x8E51 #define GL_SAMPLE_MASK_VALUE 0x8E52 #define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 #define GL_TEXTURE_2D_MULTISAMPLE 0x9100 #define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 #define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 #define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 #define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 #define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 #define GL_TEXTURE_SAMPLES 0x9106 #define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 #define GL_SAMPLER_2D_MULTISAMPLE 0x9108 #define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A #define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D #define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E #define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F #define GL_MAX_INTEGER_SAMPLES 0x9110 #ifndef GLEE_H_DEFINED_glTexImage2DMultisample #define GLEE_H_DEFINED_glTexImage2DMultisample typedef void (APIENTRYP GLEEPFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); GLEE_EXTERN GLEEPFNGLTEXIMAGE2DMULTISAMPLEPROC GLeeFuncPtr_glTexImage2DMultisample; #define glTexImage2DMultisample GLeeFuncPtr_glTexImage2DMultisample #endif #ifndef GLEE_H_DEFINED_glTexImage3DMultisample #define GLEE_H_DEFINED_glTexImage3DMultisample typedef void (APIENTRYP GLEEPFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); GLEE_EXTERN GLEEPFNGLTEXIMAGE3DMULTISAMPLEPROC GLeeFuncPtr_glTexImage3DMultisample; #define glTexImage3DMultisample GLeeFuncPtr_glTexImage3DMultisample #endif #ifndef GLEE_H_DEFINED_glGetMultisamplefv #define GLEE_H_DEFINED_glGetMultisamplefv typedef void (APIENTRYP GLEEPFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat * val); GLEE_EXTERN GLEEPFNGLGETMULTISAMPLEFVPROC GLeeFuncPtr_glGetMultisamplefv; #define glGetMultisamplefv GLeeFuncPtr_glGetMultisamplefv #endif #ifndef GLEE_H_DEFINED_glSampleMaski #define GLEE_H_DEFINED_glSampleMaski typedef void (APIENTRYP GLEEPFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); GLEE_EXTERN GLEEPFNGLSAMPLEMASKIPROC GLeeFuncPtr_glSampleMaski; #define glSampleMaski GLeeFuncPtr_glSampleMaski #endif #endif /* GL_ARB_vertex_array_bgra */ #ifndef GL_ARB_vertex_array_bgra #define GL_ARB_vertex_array_bgra 1 #define __GLEE_GL_ARB_vertex_array_bgra 1 /* Constants */ #endif /* GL_ARB_draw_buffers_blend */ #ifndef GL_ARB_draw_buffers_blend #define GL_ARB_draw_buffers_blend 1 #define __GLEE_GL_ARB_draw_buffers_blend 1 /* Constants */ #ifndef GLEE_H_DEFINED_glBlendEquationiARB #define GLEE_H_DEFINED_glBlendEquationiARB typedef void (APIENTRYP GLEEPFNGLBLENDEQUATIONIARBPROC) (GLuint buf, GLenum mode); GLEE_EXTERN GLEEPFNGLBLENDEQUATIONIARBPROC GLeeFuncPtr_glBlendEquationiARB; #define glBlendEquationiARB GLeeFuncPtr_glBlendEquationiARB #endif #ifndef GLEE_H_DEFINED_glBlendEquationSeparateiARB #define GLEE_H_DEFINED_glBlendEquationSeparateiARB typedef void (APIENTRYP GLEEPFNGLBLENDEQUATIONSEPARATEIARBPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); GLEE_EXTERN GLEEPFNGLBLENDEQUATIONSEPARATEIARBPROC GLeeFuncPtr_glBlendEquationSeparateiARB; #define glBlendEquationSeparateiARB GLeeFuncPtr_glBlendEquationSeparateiARB #endif #ifndef GLEE_H_DEFINED_glBlendFunciARB #define GLEE_H_DEFINED_glBlendFunciARB typedef void (APIENTRYP GLEEPFNGLBLENDFUNCIARBPROC) (GLuint buf, GLenum src, GLenum dst); GLEE_EXTERN GLEEPFNGLBLENDFUNCIARBPROC GLeeFuncPtr_glBlendFunciARB; #define glBlendFunciARB GLeeFuncPtr_glBlendFunciARB #endif #ifndef GLEE_H_DEFINED_glBlendFuncSeparateiARB #define GLEE_H_DEFINED_glBlendFuncSeparateiARB typedef void (APIENTRYP GLEEPFNGLBLENDFUNCSEPARATEIARBPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); GLEE_EXTERN GLEEPFNGLBLENDFUNCSEPARATEIARBPROC GLeeFuncPtr_glBlendFuncSeparateiARB; #define glBlendFuncSeparateiARB GLeeFuncPtr_glBlendFuncSeparateiARB #endif #endif /* GL_ARB_sample_shading */ #ifndef GL_ARB_sample_shading #define GL_ARB_sample_shading 1 #define __GLEE_GL_ARB_sample_shading 1 /* Constants */ #define GL_SAMPLE_SHADING_ARB 0x8C36 #define GL_MIN_SAMPLE_SHADING_VALUE_ARB 0x8C37 #ifndef GLEE_H_DEFINED_glMinSampleShadingARB #define GLEE_H_DEFINED_glMinSampleShadingARB typedef void (APIENTRYP GLEEPFNGLMINSAMPLESHADINGARBPROC) (GLfloat value); GLEE_EXTERN GLEEPFNGLMINSAMPLESHADINGARBPROC GLeeFuncPtr_glMinSampleShadingARB; #define glMinSampleShadingARB GLeeFuncPtr_glMinSampleShadingARB #endif #endif /* GL_ARB_texture_cube_map_array */ #ifndef GL_ARB_texture_cube_map_array #define GL_ARB_texture_cube_map_array 1 #define __GLEE_GL_ARB_texture_cube_map_array 1 /* Constants */ #define GL_TEXTURE_CUBE_MAP_ARRAY_ARB 0x9009 #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB 0x900A #define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB 0x900B #define GL_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900C #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB 0x900D #define GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900E #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB 0x900F #endif /* GL_ARB_texture_gather */ #ifndef GL_ARB_texture_gather #define GL_ARB_texture_gather 1 #define __GLEE_GL_ARB_texture_gather 1 /* Constants */ #define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E #define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F #define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB 0x8F9F #endif /* GL_ARB_texture_query_lod */ #ifndef GL_ARB_texture_query_lod #define GL_ARB_texture_query_lod 1 #define __GLEE_GL_ARB_texture_query_lod 1 /* Constants */ #endif /* GL_ARB_shading_language_include */ #ifndef GL_ARB_shading_language_include #define GL_ARB_shading_language_include 1 #define __GLEE_GL_ARB_shading_language_include 1 /* Constants */ #define GL_SHADER_INCLUDE_ARB 0x8DAE #define GL_NAMED_STRING_LENGTH_ARB 0x8DE9 #define GL_NAMED_STRING_TYPE_ARB 0x8DEA #ifndef GLEE_H_DEFINED_glNamedStringARB #define GLEE_H_DEFINED_glNamedStringARB typedef void (APIENTRYP GLEEPFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar * name, GLint stringlen, const GLchar * string); GLEE_EXTERN GLEEPFNGLNAMEDSTRINGARBPROC GLeeFuncPtr_glNamedStringARB; #define glNamedStringARB GLeeFuncPtr_glNamedStringARB #endif #ifndef GLEE_H_DEFINED_glDeleteNamedStringARB #define GLEE_H_DEFINED_glDeleteNamedStringARB typedef void (APIENTRYP GLEEPFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar * name); GLEE_EXTERN GLEEPFNGLDELETENAMEDSTRINGARBPROC GLeeFuncPtr_glDeleteNamedStringARB; #define glDeleteNamedStringARB GLeeFuncPtr_glDeleteNamedStringARB #endif #ifndef GLEE_H_DEFINED_glCompileShaderIncludeARB #define GLEE_H_DEFINED_glCompileShaderIncludeARB typedef void (APIENTRYP GLEEPFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* * path, const GLint * length); GLEE_EXTERN GLEEPFNGLCOMPILESHADERINCLUDEARBPROC GLeeFuncPtr_glCompileShaderIncludeARB; #define glCompileShaderIncludeARB GLeeFuncPtr_glCompileShaderIncludeARB #endif #ifndef GLEE_H_DEFINED_glIsNamedStringARB #define GLEE_H_DEFINED_glIsNamedStringARB typedef GLboolean (APIENTRYP GLEEPFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar * name); GLEE_EXTERN GLEEPFNGLISNAMEDSTRINGARBPROC GLeeFuncPtr_glIsNamedStringARB; #define glIsNamedStringARB GLeeFuncPtr_glIsNamedStringARB #endif #ifndef GLEE_H_DEFINED_glGetNamedStringARB #define GLEE_H_DEFINED_glGetNamedStringARB typedef void (APIENTRYP GLEEPFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar * name, GLsizei bufSize, GLint * stringlen, GLchar * string); GLEE_EXTERN GLEEPFNGLGETNAMEDSTRINGARBPROC GLeeFuncPtr_glGetNamedStringARB; #define glGetNamedStringARB GLeeFuncPtr_glGetNamedStringARB #endif #ifndef GLEE_H_DEFINED_glGetNamedStringivARB #define GLEE_H_DEFINED_glGetNamedStringivARB typedef void (APIENTRYP GLEEPFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar * name, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETNAMEDSTRINGIVARBPROC GLeeFuncPtr_glGetNamedStringivARB; #define glGetNamedStringivARB GLeeFuncPtr_glGetNamedStringivARB #endif #endif /* GL_ARB_texture_compression_bptc */ #ifndef GL_ARB_texture_compression_bptc #define GL_ARB_texture_compression_bptc 1 #define __GLEE_GL_ARB_texture_compression_bptc 1 /* Constants */ #define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C #define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D #define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E #define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F #endif /* GL_ARB_blend_func_extended */ #ifndef GL_ARB_blend_func_extended #define GL_ARB_blend_func_extended 1 #define __GLEE_GL_ARB_blend_func_extended 1 /* Constants */ #define GL_SRC1_COLOR 0x88F9 #define GL_ONE_MINUS_SRC1_COLOR 0x88FA #define GL_ONE_MINUS_SRC1_ALPHA 0x88FB #define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC #ifndef GLEE_H_DEFINED_glBindFragDataLocationIndexed #define GLEE_H_DEFINED_glBindFragDataLocationIndexed typedef void (APIENTRYP GLEEPFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name); GLEE_EXTERN GLEEPFNGLBINDFRAGDATALOCATIONINDEXEDPROC GLeeFuncPtr_glBindFragDataLocationIndexed; #define glBindFragDataLocationIndexed GLeeFuncPtr_glBindFragDataLocationIndexed #endif #ifndef GLEE_H_DEFINED_glGetFragDataIndex #define GLEE_H_DEFINED_glGetFragDataIndex typedef GLint (APIENTRYP GLEEPFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETFRAGDATAINDEXPROC GLeeFuncPtr_glGetFragDataIndex; #define glGetFragDataIndex GLeeFuncPtr_glGetFragDataIndex #endif #endif /* GL_ARB_explicit_attrib_location */ #ifndef GL_ARB_explicit_attrib_location #define GL_ARB_explicit_attrib_location 1 #define __GLEE_GL_ARB_explicit_attrib_location 1 /* Constants */ #endif /* GL_ARB_occlusion_query2 */ #ifndef GL_ARB_occlusion_query2 #define GL_ARB_occlusion_query2 1 #define __GLEE_GL_ARB_occlusion_query2 1 /* Constants */ #define GL_ANY_SAMPLES_PASSED 0x8C2F #endif /* GL_ARB_sampler_objects */ #ifndef GL_ARB_sampler_objects #define GL_ARB_sampler_objects 1 #define __GLEE_GL_ARB_sampler_objects 1 /* Constants */ #define GL_SAMPLER_BINDING 0x8919 #ifndef GLEE_H_DEFINED_glGenSamplers #define GLEE_H_DEFINED_glGenSamplers typedef void (APIENTRYP GLEEPFNGLGENSAMPLERSPROC) (GLsizei count, GLuint * samplers); GLEE_EXTERN GLEEPFNGLGENSAMPLERSPROC GLeeFuncPtr_glGenSamplers; #define glGenSamplers GLeeFuncPtr_glGenSamplers #endif #ifndef GLEE_H_DEFINED_glDeleteSamplers #define GLEE_H_DEFINED_glDeleteSamplers typedef void (APIENTRYP GLEEPFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers); GLEE_EXTERN GLEEPFNGLDELETESAMPLERSPROC GLeeFuncPtr_glDeleteSamplers; #define glDeleteSamplers GLeeFuncPtr_glDeleteSamplers #endif #ifndef GLEE_H_DEFINED_glIsSampler #define GLEE_H_DEFINED_glIsSampler typedef GLboolean (APIENTRYP GLEEPFNGLISSAMPLERPROC) (GLuint sampler); GLEE_EXTERN GLEEPFNGLISSAMPLERPROC GLeeFuncPtr_glIsSampler; #define glIsSampler GLeeFuncPtr_glIsSampler #endif #ifndef GLEE_H_DEFINED_glBindSampler #define GLEE_H_DEFINED_glBindSampler typedef void (APIENTRYP GLEEPFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler); GLEE_EXTERN GLEEPFNGLBINDSAMPLERPROC GLeeFuncPtr_glBindSampler; #define glBindSampler GLeeFuncPtr_glBindSampler #endif #ifndef GLEE_H_DEFINED_glSamplerParameteri #define GLEE_H_DEFINED_glSamplerParameteri typedef void (APIENTRYP GLEEPFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLSAMPLERPARAMETERIPROC GLeeFuncPtr_glSamplerParameteri; #define glSamplerParameteri GLeeFuncPtr_glSamplerParameteri #endif #ifndef GLEE_H_DEFINED_glSamplerParameteriv #define GLEE_H_DEFINED_glSamplerParameteriv typedef void (APIENTRYP GLEEPFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint * param); GLEE_EXTERN GLEEPFNGLSAMPLERPARAMETERIVPROC GLeeFuncPtr_glSamplerParameteriv; #define glSamplerParameteriv GLeeFuncPtr_glSamplerParameteriv #endif #ifndef GLEE_H_DEFINED_glSamplerParameterf #define GLEE_H_DEFINED_glSamplerParameterf typedef void (APIENTRYP GLEEPFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLSAMPLERPARAMETERFPROC GLeeFuncPtr_glSamplerParameterf; #define glSamplerParameterf GLeeFuncPtr_glSamplerParameterf #endif #ifndef GLEE_H_DEFINED_glSamplerParameterfv #define GLEE_H_DEFINED_glSamplerParameterfv typedef void (APIENTRYP GLEEPFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat * param); GLEE_EXTERN GLEEPFNGLSAMPLERPARAMETERFVPROC GLeeFuncPtr_glSamplerParameterfv; #define glSamplerParameterfv GLeeFuncPtr_glSamplerParameterfv #endif #ifndef GLEE_H_DEFINED_glSamplerParameterIiv #define GLEE_H_DEFINED_glSamplerParameterIiv typedef void (APIENTRYP GLEEPFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint * param); GLEE_EXTERN GLEEPFNGLSAMPLERPARAMETERIIVPROC GLeeFuncPtr_glSamplerParameterIiv; #define glSamplerParameterIiv GLeeFuncPtr_glSamplerParameterIiv #endif #ifndef GLEE_H_DEFINED_glSamplerParameterIuiv #define GLEE_H_DEFINED_glSamplerParameterIuiv typedef void (APIENTRYP GLEEPFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint * param); GLEE_EXTERN GLEEPFNGLSAMPLERPARAMETERIUIVPROC GLeeFuncPtr_glSamplerParameterIuiv; #define glSamplerParameterIuiv GLeeFuncPtr_glSamplerParameterIuiv #endif #ifndef GLEE_H_DEFINED_glGetSamplerParameteriv #define GLEE_H_DEFINED_glGetSamplerParameteriv typedef void (APIENTRYP GLEEPFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETSAMPLERPARAMETERIVPROC GLeeFuncPtr_glGetSamplerParameteriv; #define glGetSamplerParameteriv GLeeFuncPtr_glGetSamplerParameteriv #endif #ifndef GLEE_H_DEFINED_glGetSamplerParameterIiv #define GLEE_H_DEFINED_glGetSamplerParameterIiv typedef void (APIENTRYP GLEEPFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETSAMPLERPARAMETERIIVPROC GLeeFuncPtr_glGetSamplerParameterIiv; #define glGetSamplerParameterIiv GLeeFuncPtr_glGetSamplerParameterIiv #endif #ifndef GLEE_H_DEFINED_glGetSamplerParameterfv #define GLEE_H_DEFINED_glGetSamplerParameterfv typedef void (APIENTRYP GLEEPFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETSAMPLERPARAMETERFVPROC GLeeFuncPtr_glGetSamplerParameterfv; #define glGetSamplerParameterfv GLeeFuncPtr_glGetSamplerParameterfv #endif #ifndef GLEE_H_DEFINED_glGetSamplerParameterIuiv #define GLEE_H_DEFINED_glGetSamplerParameterIuiv typedef void (APIENTRYP GLEEPFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint * params); GLEE_EXTERN GLEEPFNGLGETSAMPLERPARAMETERIUIVPROC GLeeFuncPtr_glGetSamplerParameterIuiv; #define glGetSamplerParameterIuiv GLeeFuncPtr_glGetSamplerParameterIuiv #endif #endif /* GL_ARB_shader_bit_encoding */ #ifndef GL_ARB_shader_bit_encoding #define GL_ARB_shader_bit_encoding 1 #define __GLEE_GL_ARB_shader_bit_encoding 1 /* Constants */ #endif /* GL_ARB_texture_rgb10_a2ui */ #ifndef GL_ARB_texture_rgb10_a2ui #define GL_ARB_texture_rgb10_a2ui 1 #define __GLEE_GL_ARB_texture_rgb10_a2ui 1 /* Constants */ #define GL_RGB10_A2UI 0x906F #endif /* GL_ARB_texture_swizzle */ #ifndef GL_ARB_texture_swizzle #define GL_ARB_texture_swizzle 1 #define __GLEE_GL_ARB_texture_swizzle 1 /* Constants */ #define GL_TEXTURE_SWIZZLE_R 0x8E42 #define GL_TEXTURE_SWIZZLE_G 0x8E43 #define GL_TEXTURE_SWIZZLE_B 0x8E44 #define GL_TEXTURE_SWIZZLE_A 0x8E45 #define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 #endif /* GL_ARB_timer_query */ #ifndef GL_ARB_timer_query #define GL_ARB_timer_query 1 #define __GLEE_GL_ARB_timer_query 1 /* Constants */ #define GL_TIME_ELAPSED 0x88BF #define GL_TIMESTAMP 0x8E28 #ifndef GLEE_H_DEFINED_glQueryCounter #define GLEE_H_DEFINED_glQueryCounter typedef void (APIENTRYP GLEEPFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target); GLEE_EXTERN GLEEPFNGLQUERYCOUNTERPROC GLeeFuncPtr_glQueryCounter; #define glQueryCounter GLeeFuncPtr_glQueryCounter #endif #ifndef GLEE_H_DEFINED_glGetQueryObjecti64v #define GLEE_H_DEFINED_glGetQueryObjecti64v typedef void (APIENTRYP GLEEPFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 * params); GLEE_EXTERN GLEEPFNGLGETQUERYOBJECTI64VPROC GLeeFuncPtr_glGetQueryObjecti64v; #define glGetQueryObjecti64v GLeeFuncPtr_glGetQueryObjecti64v #endif #ifndef GLEE_H_DEFINED_glGetQueryObjectui64v #define GLEE_H_DEFINED_glGetQueryObjectui64v typedef void (APIENTRYP GLEEPFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 * params); GLEE_EXTERN GLEEPFNGLGETQUERYOBJECTUI64VPROC GLeeFuncPtr_glGetQueryObjectui64v; #define glGetQueryObjectui64v GLeeFuncPtr_glGetQueryObjectui64v #endif #endif /* GL_ARB_vertex_type_2_10_10_10_rev */ #ifndef GL_ARB_vertex_type_2_10_10_10_rev #define GL_ARB_vertex_type_2_10_10_10_rev 1 #define __GLEE_GL_ARB_vertex_type_2_10_10_10_rev 1 /* Constants */ #define GL_INT_2_10_10_10_REV 0x8D9F #ifndef GLEE_H_DEFINED_glVertexP2ui #define GLEE_H_DEFINED_glVertexP2ui typedef void (APIENTRYP GLEEPFNGLVERTEXP2UIPROC) (GLenum type, GLuint value); GLEE_EXTERN GLEEPFNGLVERTEXP2UIPROC GLeeFuncPtr_glVertexP2ui; #define glVertexP2ui GLeeFuncPtr_glVertexP2ui #endif #ifndef GLEE_H_DEFINED_glVertexP2uiv #define GLEE_H_DEFINED_glVertexP2uiv typedef void (APIENTRYP GLEEPFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint * value); GLEE_EXTERN GLEEPFNGLVERTEXP2UIVPROC GLeeFuncPtr_glVertexP2uiv; #define glVertexP2uiv GLeeFuncPtr_glVertexP2uiv #endif #ifndef GLEE_H_DEFINED_glVertexP3ui #define GLEE_H_DEFINED_glVertexP3ui typedef void (APIENTRYP GLEEPFNGLVERTEXP3UIPROC) (GLenum type, GLuint value); GLEE_EXTERN GLEEPFNGLVERTEXP3UIPROC GLeeFuncPtr_glVertexP3ui; #define glVertexP3ui GLeeFuncPtr_glVertexP3ui #endif #ifndef GLEE_H_DEFINED_glVertexP3uiv #define GLEE_H_DEFINED_glVertexP3uiv typedef void (APIENTRYP GLEEPFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint * value); GLEE_EXTERN GLEEPFNGLVERTEXP3UIVPROC GLeeFuncPtr_glVertexP3uiv; #define glVertexP3uiv GLeeFuncPtr_glVertexP3uiv #endif #ifndef GLEE_H_DEFINED_glVertexP4ui #define GLEE_H_DEFINED_glVertexP4ui typedef void (APIENTRYP GLEEPFNGLVERTEXP4UIPROC) (GLenum type, GLuint value); GLEE_EXTERN GLEEPFNGLVERTEXP4UIPROC GLeeFuncPtr_glVertexP4ui; #define glVertexP4ui GLeeFuncPtr_glVertexP4ui #endif #ifndef GLEE_H_DEFINED_glVertexP4uiv #define GLEE_H_DEFINED_glVertexP4uiv typedef void (APIENTRYP GLEEPFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint * value); GLEE_EXTERN GLEEPFNGLVERTEXP4UIVPROC GLeeFuncPtr_glVertexP4uiv; #define glVertexP4uiv GLeeFuncPtr_glVertexP4uiv #endif #ifndef GLEE_H_DEFINED_glTexCoordP1ui #define GLEE_H_DEFINED_glTexCoordP1ui typedef void (APIENTRYP GLEEPFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords); GLEE_EXTERN GLEEPFNGLTEXCOORDP1UIPROC GLeeFuncPtr_glTexCoordP1ui; #define glTexCoordP1ui GLeeFuncPtr_glTexCoordP1ui #endif #ifndef GLEE_H_DEFINED_glTexCoordP1uiv #define GLEE_H_DEFINED_glTexCoordP1uiv typedef void (APIENTRYP GLEEPFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint * coords); GLEE_EXTERN GLEEPFNGLTEXCOORDP1UIVPROC GLeeFuncPtr_glTexCoordP1uiv; #define glTexCoordP1uiv GLeeFuncPtr_glTexCoordP1uiv #endif #ifndef GLEE_H_DEFINED_glTexCoordP2ui #define GLEE_H_DEFINED_glTexCoordP2ui typedef void (APIENTRYP GLEEPFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords); GLEE_EXTERN GLEEPFNGLTEXCOORDP2UIPROC GLeeFuncPtr_glTexCoordP2ui; #define glTexCoordP2ui GLeeFuncPtr_glTexCoordP2ui #endif #ifndef GLEE_H_DEFINED_glTexCoordP2uiv #define GLEE_H_DEFINED_glTexCoordP2uiv typedef void (APIENTRYP GLEEPFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint * coords); GLEE_EXTERN GLEEPFNGLTEXCOORDP2UIVPROC GLeeFuncPtr_glTexCoordP2uiv; #define glTexCoordP2uiv GLeeFuncPtr_glTexCoordP2uiv #endif #ifndef GLEE_H_DEFINED_glTexCoordP3ui #define GLEE_H_DEFINED_glTexCoordP3ui typedef void (APIENTRYP GLEEPFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords); GLEE_EXTERN GLEEPFNGLTEXCOORDP3UIPROC GLeeFuncPtr_glTexCoordP3ui; #define glTexCoordP3ui GLeeFuncPtr_glTexCoordP3ui #endif #ifndef GLEE_H_DEFINED_glTexCoordP3uiv #define GLEE_H_DEFINED_glTexCoordP3uiv typedef void (APIENTRYP GLEEPFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint * coords); GLEE_EXTERN GLEEPFNGLTEXCOORDP3UIVPROC GLeeFuncPtr_glTexCoordP3uiv; #define glTexCoordP3uiv GLeeFuncPtr_glTexCoordP3uiv #endif #ifndef GLEE_H_DEFINED_glTexCoordP4ui #define GLEE_H_DEFINED_glTexCoordP4ui typedef void (APIENTRYP GLEEPFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords); GLEE_EXTERN GLEEPFNGLTEXCOORDP4UIPROC GLeeFuncPtr_glTexCoordP4ui; #define glTexCoordP4ui GLeeFuncPtr_glTexCoordP4ui #endif #ifndef GLEE_H_DEFINED_glTexCoordP4uiv #define GLEE_H_DEFINED_glTexCoordP4uiv typedef void (APIENTRYP GLEEPFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint * coords); GLEE_EXTERN GLEEPFNGLTEXCOORDP4UIVPROC GLeeFuncPtr_glTexCoordP4uiv; #define glTexCoordP4uiv GLeeFuncPtr_glTexCoordP4uiv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoordP1ui #define GLEE_H_DEFINED_glMultiTexCoordP1ui typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORDP1UIPROC GLeeFuncPtr_glMultiTexCoordP1ui; #define glMultiTexCoordP1ui GLeeFuncPtr_glMultiTexCoordP1ui #endif #ifndef GLEE_H_DEFINED_glMultiTexCoordP1uiv #define GLEE_H_DEFINED_glMultiTexCoordP1uiv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORDP1UIVPROC GLeeFuncPtr_glMultiTexCoordP1uiv; #define glMultiTexCoordP1uiv GLeeFuncPtr_glMultiTexCoordP1uiv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoordP2ui #define GLEE_H_DEFINED_glMultiTexCoordP2ui typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORDP2UIPROC GLeeFuncPtr_glMultiTexCoordP2ui; #define glMultiTexCoordP2ui GLeeFuncPtr_glMultiTexCoordP2ui #endif #ifndef GLEE_H_DEFINED_glMultiTexCoordP2uiv #define GLEE_H_DEFINED_glMultiTexCoordP2uiv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORDP2UIVPROC GLeeFuncPtr_glMultiTexCoordP2uiv; #define glMultiTexCoordP2uiv GLeeFuncPtr_glMultiTexCoordP2uiv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoordP3ui #define GLEE_H_DEFINED_glMultiTexCoordP3ui typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORDP3UIPROC GLeeFuncPtr_glMultiTexCoordP3ui; #define glMultiTexCoordP3ui GLeeFuncPtr_glMultiTexCoordP3ui #endif #ifndef GLEE_H_DEFINED_glMultiTexCoordP3uiv #define GLEE_H_DEFINED_glMultiTexCoordP3uiv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORDP3UIVPROC GLeeFuncPtr_glMultiTexCoordP3uiv; #define glMultiTexCoordP3uiv GLeeFuncPtr_glMultiTexCoordP3uiv #endif #ifndef GLEE_H_DEFINED_glMultiTexCoordP4ui #define GLEE_H_DEFINED_glMultiTexCoordP4ui typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORDP4UIPROC GLeeFuncPtr_glMultiTexCoordP4ui; #define glMultiTexCoordP4ui GLeeFuncPtr_glMultiTexCoordP4ui #endif #ifndef GLEE_H_DEFINED_glMultiTexCoordP4uiv #define GLEE_H_DEFINED_glMultiTexCoordP4uiv typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORDP4UIVPROC GLeeFuncPtr_glMultiTexCoordP4uiv; #define glMultiTexCoordP4uiv GLeeFuncPtr_glMultiTexCoordP4uiv #endif #ifndef GLEE_H_DEFINED_glNormalP3ui #define GLEE_H_DEFINED_glNormalP3ui typedef void (APIENTRYP GLEEPFNGLNORMALP3UIPROC) (GLenum type, GLuint coords); GLEE_EXTERN GLEEPFNGLNORMALP3UIPROC GLeeFuncPtr_glNormalP3ui; #define glNormalP3ui GLeeFuncPtr_glNormalP3ui #endif #ifndef GLEE_H_DEFINED_glNormalP3uiv #define GLEE_H_DEFINED_glNormalP3uiv typedef void (APIENTRYP GLEEPFNGLNORMALP3UIVPROC) (GLenum type, const GLuint * coords); GLEE_EXTERN GLEEPFNGLNORMALP3UIVPROC GLeeFuncPtr_glNormalP3uiv; #define glNormalP3uiv GLeeFuncPtr_glNormalP3uiv #endif #ifndef GLEE_H_DEFINED_glColorP3ui #define GLEE_H_DEFINED_glColorP3ui typedef void (APIENTRYP GLEEPFNGLCOLORP3UIPROC) (GLenum type, GLuint color); GLEE_EXTERN GLEEPFNGLCOLORP3UIPROC GLeeFuncPtr_glColorP3ui; #define glColorP3ui GLeeFuncPtr_glColorP3ui #endif #ifndef GLEE_H_DEFINED_glColorP3uiv #define GLEE_H_DEFINED_glColorP3uiv typedef void (APIENTRYP GLEEPFNGLCOLORP3UIVPROC) (GLenum type, const GLuint * color); GLEE_EXTERN GLEEPFNGLCOLORP3UIVPROC GLeeFuncPtr_glColorP3uiv; #define glColorP3uiv GLeeFuncPtr_glColorP3uiv #endif #ifndef GLEE_H_DEFINED_glColorP4ui #define GLEE_H_DEFINED_glColorP4ui typedef void (APIENTRYP GLEEPFNGLCOLORP4UIPROC) (GLenum type, GLuint color); GLEE_EXTERN GLEEPFNGLCOLORP4UIPROC GLeeFuncPtr_glColorP4ui; #define glColorP4ui GLeeFuncPtr_glColorP4ui #endif #ifndef GLEE_H_DEFINED_glColorP4uiv #define GLEE_H_DEFINED_glColorP4uiv typedef void (APIENTRYP GLEEPFNGLCOLORP4UIVPROC) (GLenum type, const GLuint * color); GLEE_EXTERN GLEEPFNGLCOLORP4UIVPROC GLeeFuncPtr_glColorP4uiv; #define glColorP4uiv GLeeFuncPtr_glColorP4uiv #endif #ifndef GLEE_H_DEFINED_glSecondaryColorP3ui #define GLEE_H_DEFINED_glSecondaryColorP3ui typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color); GLEE_EXTERN GLEEPFNGLSECONDARYCOLORP3UIPROC GLeeFuncPtr_glSecondaryColorP3ui; #define glSecondaryColorP3ui GLeeFuncPtr_glSecondaryColorP3ui #endif #ifndef GLEE_H_DEFINED_glSecondaryColorP3uiv #define GLEE_H_DEFINED_glSecondaryColorP3uiv typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint * color); GLEE_EXTERN GLEEPFNGLSECONDARYCOLORP3UIVPROC GLeeFuncPtr_glSecondaryColorP3uiv; #define glSecondaryColorP3uiv GLeeFuncPtr_glSecondaryColorP3uiv #endif #ifndef GLEE_H_DEFINED_glVertexAttribP1ui #define GLEE_H_DEFINED_glVertexAttribP1ui typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBP1UIPROC GLeeFuncPtr_glVertexAttribP1ui; #define glVertexAttribP1ui GLeeFuncPtr_glVertexAttribP1ui #endif #ifndef GLEE_H_DEFINED_glVertexAttribP1uiv #define GLEE_H_DEFINED_glVertexAttribP1uiv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBP1UIVPROC GLeeFuncPtr_glVertexAttribP1uiv; #define glVertexAttribP1uiv GLeeFuncPtr_glVertexAttribP1uiv #endif #ifndef GLEE_H_DEFINED_glVertexAttribP2ui #define GLEE_H_DEFINED_glVertexAttribP2ui typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBP2UIPROC GLeeFuncPtr_glVertexAttribP2ui; #define glVertexAttribP2ui GLeeFuncPtr_glVertexAttribP2ui #endif #ifndef GLEE_H_DEFINED_glVertexAttribP2uiv #define GLEE_H_DEFINED_glVertexAttribP2uiv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBP2UIVPROC GLeeFuncPtr_glVertexAttribP2uiv; #define glVertexAttribP2uiv GLeeFuncPtr_glVertexAttribP2uiv #endif #ifndef GLEE_H_DEFINED_glVertexAttribP3ui #define GLEE_H_DEFINED_glVertexAttribP3ui typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBP3UIPROC GLeeFuncPtr_glVertexAttribP3ui; #define glVertexAttribP3ui GLeeFuncPtr_glVertexAttribP3ui #endif #ifndef GLEE_H_DEFINED_glVertexAttribP3uiv #define GLEE_H_DEFINED_glVertexAttribP3uiv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBP3UIVPROC GLeeFuncPtr_glVertexAttribP3uiv; #define glVertexAttribP3uiv GLeeFuncPtr_glVertexAttribP3uiv #endif #ifndef GLEE_H_DEFINED_glVertexAttribP4ui #define GLEE_H_DEFINED_glVertexAttribP4ui typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBP4UIPROC GLeeFuncPtr_glVertexAttribP4ui; #define glVertexAttribP4ui GLeeFuncPtr_glVertexAttribP4ui #endif #ifndef GLEE_H_DEFINED_glVertexAttribP4uiv #define GLEE_H_DEFINED_glVertexAttribP4uiv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint * value); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBP4UIVPROC GLeeFuncPtr_glVertexAttribP4uiv; #define glVertexAttribP4uiv GLeeFuncPtr_glVertexAttribP4uiv #endif #endif /* GL_ARB_draw_indirect */ #ifndef GL_ARB_draw_indirect #define GL_ARB_draw_indirect 1 #define __GLEE_GL_ARB_draw_indirect 1 /* Constants */ #define GL_DRAW_INDIRECT_BUFFER 0x8F3F #define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43 #ifndef GLEE_H_DEFINED_glDrawArraysIndirect #define GLEE_H_DEFINED_glDrawArraysIndirect typedef void (APIENTRYP GLEEPFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid * indirect); GLEE_EXTERN GLEEPFNGLDRAWARRAYSINDIRECTPROC GLeeFuncPtr_glDrawArraysIndirect; #define glDrawArraysIndirect GLeeFuncPtr_glDrawArraysIndirect #endif #ifndef GLEE_H_DEFINED_glDrawElementsIndirect #define GLEE_H_DEFINED_glDrawElementsIndirect typedef void (APIENTRYP GLEEPFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid * indirect); GLEE_EXTERN GLEEPFNGLDRAWELEMENTSINDIRECTPROC GLeeFuncPtr_glDrawElementsIndirect; #define glDrawElementsIndirect GLeeFuncPtr_glDrawElementsIndirect #endif #endif /* GL_ARB_gpu_shader5 */ #ifndef GL_ARB_gpu_shader5 #define GL_ARB_gpu_shader5 1 #define __GLEE_GL_ARB_gpu_shader5 1 /* Constants */ #define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F #define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A #define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B #define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C #define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D #endif /* GL_ARB_gpu_shader_fp64 */ #ifndef GL_ARB_gpu_shader_fp64 #define GL_ARB_gpu_shader_fp64 1 #define __GLEE_GL_ARB_gpu_shader_fp64 1 /* Constants */ #define GL_DOUBLE_VEC2 0x8FFC #define GL_DOUBLE_VEC3 0x8FFD #define GL_DOUBLE_VEC4 0x8FFE #define GL_DOUBLE_MAT2 0x8F46 #define GL_DOUBLE_MAT3 0x8F47 #define GL_DOUBLE_MAT4 0x8F48 #define GL_DOUBLE_MAT2x3 0x8F49 #define GL_DOUBLE_MAT2x4 0x8F4A #define GL_DOUBLE_MAT3x2 0x8F4B #define GL_DOUBLE_MAT3x4 0x8F4C #define GL_DOUBLE_MAT4x2 0x8F4D #define GL_DOUBLE_MAT4x3 0x8F4E #ifndef GLEE_H_DEFINED_glUniform1d #define GLEE_H_DEFINED_glUniform1d typedef void (APIENTRYP GLEEPFNGLUNIFORM1DPROC) (GLint location, GLdouble x); GLEE_EXTERN GLEEPFNGLUNIFORM1DPROC GLeeFuncPtr_glUniform1d; #define glUniform1d GLeeFuncPtr_glUniform1d #endif #ifndef GLEE_H_DEFINED_glUniform2d #define GLEE_H_DEFINED_glUniform2d typedef void (APIENTRYP GLEEPFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLUNIFORM2DPROC GLeeFuncPtr_glUniform2d; #define glUniform2d GLeeFuncPtr_glUniform2d #endif #ifndef GLEE_H_DEFINED_glUniform3d #define GLEE_H_DEFINED_glUniform3d typedef void (APIENTRYP GLEEPFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLUNIFORM3DPROC GLeeFuncPtr_glUniform3d; #define glUniform3d GLeeFuncPtr_glUniform3d #endif #ifndef GLEE_H_DEFINED_glUniform4d #define GLEE_H_DEFINED_glUniform4d typedef void (APIENTRYP GLEEPFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLUNIFORM4DPROC GLeeFuncPtr_glUniform4d; #define glUniform4d GLeeFuncPtr_glUniform4d #endif #ifndef GLEE_H_DEFINED_glUniform1dv #define GLEE_H_DEFINED_glUniform1dv typedef void (APIENTRYP GLEEPFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORM1DVPROC GLeeFuncPtr_glUniform1dv; #define glUniform1dv GLeeFuncPtr_glUniform1dv #endif #ifndef GLEE_H_DEFINED_glUniform2dv #define GLEE_H_DEFINED_glUniform2dv typedef void (APIENTRYP GLEEPFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORM2DVPROC GLeeFuncPtr_glUniform2dv; #define glUniform2dv GLeeFuncPtr_glUniform2dv #endif #ifndef GLEE_H_DEFINED_glUniform3dv #define GLEE_H_DEFINED_glUniform3dv typedef void (APIENTRYP GLEEPFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORM3DVPROC GLeeFuncPtr_glUniform3dv; #define glUniform3dv GLeeFuncPtr_glUniform3dv #endif #ifndef GLEE_H_DEFINED_glUniform4dv #define GLEE_H_DEFINED_glUniform4dv typedef void (APIENTRYP GLEEPFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORM4DVPROC GLeeFuncPtr_glUniform4dv; #define glUniform4dv GLeeFuncPtr_glUniform4dv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix2dv #define GLEE_H_DEFINED_glUniformMatrix2dv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX2DVPROC GLeeFuncPtr_glUniformMatrix2dv; #define glUniformMatrix2dv GLeeFuncPtr_glUniformMatrix2dv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix3dv #define GLEE_H_DEFINED_glUniformMatrix3dv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX3DVPROC GLeeFuncPtr_glUniformMatrix3dv; #define glUniformMatrix3dv GLeeFuncPtr_glUniformMatrix3dv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix4dv #define GLEE_H_DEFINED_glUniformMatrix4dv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX4DVPROC GLeeFuncPtr_glUniformMatrix4dv; #define glUniformMatrix4dv GLeeFuncPtr_glUniformMatrix4dv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix2x3dv #define GLEE_H_DEFINED_glUniformMatrix2x3dv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX2X3DVPROC GLeeFuncPtr_glUniformMatrix2x3dv; #define glUniformMatrix2x3dv GLeeFuncPtr_glUniformMatrix2x3dv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix2x4dv #define GLEE_H_DEFINED_glUniformMatrix2x4dv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX2X4DVPROC GLeeFuncPtr_glUniformMatrix2x4dv; #define glUniformMatrix2x4dv GLeeFuncPtr_glUniformMatrix2x4dv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix3x2dv #define GLEE_H_DEFINED_glUniformMatrix3x2dv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX3X2DVPROC GLeeFuncPtr_glUniformMatrix3x2dv; #define glUniformMatrix3x2dv GLeeFuncPtr_glUniformMatrix3x2dv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix3x4dv #define GLEE_H_DEFINED_glUniformMatrix3x4dv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX3X4DVPROC GLeeFuncPtr_glUniformMatrix3x4dv; #define glUniformMatrix3x4dv GLeeFuncPtr_glUniformMatrix3x4dv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix4x2dv #define GLEE_H_DEFINED_glUniformMatrix4x2dv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX4X2DVPROC GLeeFuncPtr_glUniformMatrix4x2dv; #define glUniformMatrix4x2dv GLeeFuncPtr_glUniformMatrix4x2dv #endif #ifndef GLEE_H_DEFINED_glUniformMatrix4x3dv #define GLEE_H_DEFINED_glUniformMatrix4x3dv typedef void (APIENTRYP GLEEPFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLUNIFORMMATRIX4X3DVPROC GLeeFuncPtr_glUniformMatrix4x3dv; #define glUniformMatrix4x3dv GLeeFuncPtr_glUniformMatrix4x3dv #endif #ifndef GLEE_H_DEFINED_glGetUniformdv #define GLEE_H_DEFINED_glGetUniformdv typedef void (APIENTRYP GLEEPFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETUNIFORMDVPROC GLeeFuncPtr_glGetUniformdv; #define glGetUniformdv GLeeFuncPtr_glGetUniformdv #endif #endif /* GL_ARB_shader_subroutine */ #ifndef GL_ARB_shader_subroutine #define GL_ARB_shader_subroutine 1 #define __GLEE_GL_ARB_shader_subroutine 1 /* Constants */ #define GL_ACTIVE_SUBROUTINES 0x8DE5 #define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6 #define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47 #define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48 #define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49 #define GL_MAX_SUBROUTINES 0x8DE7 #define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8 #define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A #define GL_COMPATIBLE_SUBROUTINES 0x8E4B #ifndef GLEE_H_DEFINED_glGetSubroutineUniformLocation #define GLEE_H_DEFINED_glGetSubroutineUniformLocation typedef GLint (APIENTRYP GLEEPFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETSUBROUTINEUNIFORMLOCATIONPROC GLeeFuncPtr_glGetSubroutineUniformLocation; #define glGetSubroutineUniformLocation GLeeFuncPtr_glGetSubroutineUniformLocation #endif #ifndef GLEE_H_DEFINED_glGetSubroutineIndex #define GLEE_H_DEFINED_glGetSubroutineIndex typedef GLuint (APIENTRYP GLEEPFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETSUBROUTINEINDEXPROC GLeeFuncPtr_glGetSubroutineIndex; #define glGetSubroutineIndex GLeeFuncPtr_glGetSubroutineIndex #endif #ifndef GLEE_H_DEFINED_glGetActiveSubroutineUniformiv #define GLEE_H_DEFINED_glGetActiveSubroutineUniformiv typedef void (APIENTRYP GLEEPFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint * values); GLEE_EXTERN GLEEPFNGLGETACTIVESUBROUTINEUNIFORMIVPROC GLeeFuncPtr_glGetActiveSubroutineUniformiv; #define glGetActiveSubroutineUniformiv GLeeFuncPtr_glGetActiveSubroutineUniformiv #endif #ifndef GLEE_H_DEFINED_glGetActiveSubroutineUniformName #define GLEE_H_DEFINED_glGetActiveSubroutineUniformName typedef void (APIENTRYP GLEEPFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name); GLEE_EXTERN GLEEPFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC GLeeFuncPtr_glGetActiveSubroutineUniformName; #define glGetActiveSubroutineUniformName GLeeFuncPtr_glGetActiveSubroutineUniformName #endif #ifndef GLEE_H_DEFINED_glGetActiveSubroutineName #define GLEE_H_DEFINED_glGetActiveSubroutineName typedef void (APIENTRYP GLEEPFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei * length, GLchar * name); GLEE_EXTERN GLEEPFNGLGETACTIVESUBROUTINENAMEPROC GLeeFuncPtr_glGetActiveSubroutineName; #define glGetActiveSubroutineName GLeeFuncPtr_glGetActiveSubroutineName #endif #ifndef GLEE_H_DEFINED_glUniformSubroutinesuiv #define GLEE_H_DEFINED_glUniformSubroutinesuiv typedef void (APIENTRYP GLEEPFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint * indices); GLEE_EXTERN GLEEPFNGLUNIFORMSUBROUTINESUIVPROC GLeeFuncPtr_glUniformSubroutinesuiv; #define glUniformSubroutinesuiv GLeeFuncPtr_glUniformSubroutinesuiv #endif #ifndef GLEE_H_DEFINED_glGetUniformSubroutineuiv #define GLEE_H_DEFINED_glGetUniformSubroutineuiv typedef void (APIENTRYP GLEEPFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint * params); GLEE_EXTERN GLEEPFNGLGETUNIFORMSUBROUTINEUIVPROC GLeeFuncPtr_glGetUniformSubroutineuiv; #define glGetUniformSubroutineuiv GLeeFuncPtr_glGetUniformSubroutineuiv #endif #ifndef GLEE_H_DEFINED_glGetProgramStageiv #define GLEE_H_DEFINED_glGetProgramStageiv typedef void (APIENTRYP GLEEPFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint * values); GLEE_EXTERN GLEEPFNGLGETPROGRAMSTAGEIVPROC GLeeFuncPtr_glGetProgramStageiv; #define glGetProgramStageiv GLeeFuncPtr_glGetProgramStageiv #endif #endif /* GL_ARB_tessellation_shader */ #ifndef GL_ARB_tessellation_shader #define GL_ARB_tessellation_shader 1 #define __GLEE_GL_ARB_tessellation_shader 1 /* Constants */ #define GL_PATCHES 0x000E #define GL_PATCH_VERTICES 0x8E72 #define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73 #define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74 #define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75 #define GL_TESS_GEN_MODE 0x8E76 #define GL_TESS_GEN_SPACING 0x8E77 #define GL_TESS_GEN_VERTEX_ORDER 0x8E78 #define GL_TESS_GEN_POINT_MODE 0x8E79 #define GL_ISOLINES 0x8E7A #define GL_FRACTIONAL_ODD 0x8E7B #define GL_FRACTIONAL_EVEN 0x8E7C #define GL_MAX_PATCH_VERTICES 0x8E7D #define GL_MAX_TESS_GEN_LEVEL 0x8E7E #define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F #define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80 #define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81 #define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82 #define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83 #define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84 #define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85 #define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86 #define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89 #define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A #define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C #define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D #define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E #define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F #define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0 #define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1 #define GL_TESS_EVALUATION_SHADER 0x8E87 #define GL_TESS_CONTROL_SHADER 0x8E88 #ifndef GLEE_H_DEFINED_glPatchParameteri #define GLEE_H_DEFINED_glPatchParameteri typedef void (APIENTRYP GLEEPFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value); GLEE_EXTERN GLEEPFNGLPATCHPARAMETERIPROC GLeeFuncPtr_glPatchParameteri; #define glPatchParameteri GLeeFuncPtr_glPatchParameteri #endif #ifndef GLEE_H_DEFINED_glPatchParameterfv #define GLEE_H_DEFINED_glPatchParameterfv typedef void (APIENTRYP GLEEPFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat * values); GLEE_EXTERN GLEEPFNGLPATCHPARAMETERFVPROC GLeeFuncPtr_glPatchParameterfv; #define glPatchParameterfv GLeeFuncPtr_glPatchParameterfv #endif #endif /* GL_ARB_texture_buffer_object_rgb32 */ #ifndef GL_ARB_texture_buffer_object_rgb32 #define GL_ARB_texture_buffer_object_rgb32 1 #define __GLEE_GL_ARB_texture_buffer_object_rgb32 1 /* Constants */ #endif /* GL_ARB_transform_feedback2 */ #ifndef GL_ARB_transform_feedback2 #define GL_ARB_transform_feedback2 1 #define __GLEE_GL_ARB_transform_feedback2 1 /* Constants */ #define GL_TRANSFORM_FEEDBACK 0x8E22 #define GL_TRANSFORM_FEEDBACK_PAUSED 0x8E23 #define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED GL_TRANSFORM_FEEDBACK_PAUSED #define GL_TRANSFORM_FEEDBACK_ACTIVE 0x8E24 #define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE GL_TRANSFORM_FEEDBACK_ACTIVE #define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25 #ifndef GLEE_H_DEFINED_glBindTransformFeedback #define GLEE_H_DEFINED_glBindTransformFeedback typedef void (APIENTRYP GLEEPFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id); GLEE_EXTERN GLEEPFNGLBINDTRANSFORMFEEDBACKPROC GLeeFuncPtr_glBindTransformFeedback; #define glBindTransformFeedback GLeeFuncPtr_glBindTransformFeedback #endif #ifndef GLEE_H_DEFINED_glDeleteTransformFeedbacks #define GLEE_H_DEFINED_glDeleteTransformFeedbacks typedef void (APIENTRYP GLEEPFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint * ids); GLEE_EXTERN GLEEPFNGLDELETETRANSFORMFEEDBACKSPROC GLeeFuncPtr_glDeleteTransformFeedbacks; #define glDeleteTransformFeedbacks GLeeFuncPtr_glDeleteTransformFeedbacks #endif #ifndef GLEE_H_DEFINED_glGenTransformFeedbacks #define GLEE_H_DEFINED_glGenTransformFeedbacks typedef void (APIENTRYP GLEEPFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint * ids); GLEE_EXTERN GLEEPFNGLGENTRANSFORMFEEDBACKSPROC GLeeFuncPtr_glGenTransformFeedbacks; #define glGenTransformFeedbacks GLeeFuncPtr_glGenTransformFeedbacks #endif #ifndef GLEE_H_DEFINED_glIsTransformFeedback #define GLEE_H_DEFINED_glIsTransformFeedback typedef GLboolean (APIENTRYP GLEEPFNGLISTRANSFORMFEEDBACKPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLISTRANSFORMFEEDBACKPROC GLeeFuncPtr_glIsTransformFeedback; #define glIsTransformFeedback GLeeFuncPtr_glIsTransformFeedback #endif #ifndef GLEE_H_DEFINED_glPauseTransformFeedback #define GLEE_H_DEFINED_glPauseTransformFeedback typedef void (APIENTRYP GLEEPFNGLPAUSETRANSFORMFEEDBACKPROC) (); GLEE_EXTERN GLEEPFNGLPAUSETRANSFORMFEEDBACKPROC GLeeFuncPtr_glPauseTransformFeedback; #define glPauseTransformFeedback GLeeFuncPtr_glPauseTransformFeedback #endif #ifndef GLEE_H_DEFINED_glResumeTransformFeedback #define GLEE_H_DEFINED_glResumeTransformFeedback typedef void (APIENTRYP GLEEPFNGLRESUMETRANSFORMFEEDBACKPROC) (); GLEE_EXTERN GLEEPFNGLRESUMETRANSFORMFEEDBACKPROC GLeeFuncPtr_glResumeTransformFeedback; #define glResumeTransformFeedback GLeeFuncPtr_glResumeTransformFeedback #endif #ifndef GLEE_H_DEFINED_glDrawTransformFeedback #define GLEE_H_DEFINED_glDrawTransformFeedback typedef void (APIENTRYP GLEEPFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id); GLEE_EXTERN GLEEPFNGLDRAWTRANSFORMFEEDBACKPROC GLeeFuncPtr_glDrawTransformFeedback; #define glDrawTransformFeedback GLeeFuncPtr_glDrawTransformFeedback #endif #endif /* GL_ARB_transform_feedback3 */ #ifndef GL_ARB_transform_feedback3 #define GL_ARB_transform_feedback3 1 #define __GLEE_GL_ARB_transform_feedback3 1 /* Constants */ #define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70 #define GL_MAX_VERTEX_STREAMS 0x8E71 #ifndef GLEE_H_DEFINED_glDrawTransformFeedbackStream #define GLEE_H_DEFINED_glDrawTransformFeedbackStream typedef void (APIENTRYP GLEEPFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream); GLEE_EXTERN GLEEPFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC GLeeFuncPtr_glDrawTransformFeedbackStream; #define glDrawTransformFeedbackStream GLeeFuncPtr_glDrawTransformFeedbackStream #endif #ifndef GLEE_H_DEFINED_glBeginQueryIndexed #define GLEE_H_DEFINED_glBeginQueryIndexed typedef void (APIENTRYP GLEEPFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id); GLEE_EXTERN GLEEPFNGLBEGINQUERYINDEXEDPROC GLeeFuncPtr_glBeginQueryIndexed; #define glBeginQueryIndexed GLeeFuncPtr_glBeginQueryIndexed #endif #ifndef GLEE_H_DEFINED_glEndQueryIndexed #define GLEE_H_DEFINED_glEndQueryIndexed typedef void (APIENTRYP GLEEPFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index); GLEE_EXTERN GLEEPFNGLENDQUERYINDEXEDPROC GLeeFuncPtr_glEndQueryIndexed; #define glEndQueryIndexed GLeeFuncPtr_glEndQueryIndexed #endif #ifndef GLEE_H_DEFINED_glGetQueryIndexediv #define GLEE_H_DEFINED_glGetQueryIndexediv typedef void (APIENTRYP GLEEPFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETQUERYINDEXEDIVPROC GLeeFuncPtr_glGetQueryIndexediv; #define glGetQueryIndexediv GLeeFuncPtr_glGetQueryIndexediv #endif #endif /* GL_ARB_ES2_compatibility */ #ifndef GL_ARB_ES2_compatibility #define GL_ARB_ES2_compatibility 1 #define __GLEE_GL_ARB_ES2_compatibility 1 /* Constants */ #define GL_FIXED 0x140C #define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A #define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B #define GL_LOW_FLOAT 0x8DF0 #define GL_MEDIUM_FLOAT 0x8DF1 #define GL_HIGH_FLOAT 0x8DF2 #define GL_LOW_INT 0x8DF3 #define GL_MEDIUM_INT 0x8DF4 #define GL_HIGH_INT 0x8DF5 #define GL_SHADER_COMPILER 0x8DFA #define GL_SHADER_BINARY_FORMATS 0x8DF8 #define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 #define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB #define GL_MAX_VARYING_VECTORS 0x8DFC #define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD #define GL_RGB565 0x8D62 #ifndef GLEE_H_DEFINED_glReleaseShaderCompiler #define GLEE_H_DEFINED_glReleaseShaderCompiler typedef void (APIENTRYP GLEEPFNGLRELEASESHADERCOMPILERPROC) (); GLEE_EXTERN GLEEPFNGLRELEASESHADERCOMPILERPROC GLeeFuncPtr_glReleaseShaderCompiler; #define glReleaseShaderCompiler GLeeFuncPtr_glReleaseShaderCompiler #endif #ifndef GLEE_H_DEFINED_glShaderBinary #define GLEE_H_DEFINED_glShaderBinary typedef void (APIENTRYP GLEEPFNGLSHADERBINARYPROC) (GLsizei count, const GLuint * shaders, GLenum binaryformat, const GLvoid * binary, GLsizei length); GLEE_EXTERN GLEEPFNGLSHADERBINARYPROC GLeeFuncPtr_glShaderBinary; #define glShaderBinary GLeeFuncPtr_glShaderBinary #endif #ifndef GLEE_H_DEFINED_glGetShaderPrecisionFormat #define GLEE_H_DEFINED_glGetShaderPrecisionFormat typedef void (APIENTRYP GLEEPFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision); GLEE_EXTERN GLEEPFNGLGETSHADERPRECISIONFORMATPROC GLeeFuncPtr_glGetShaderPrecisionFormat; #define glGetShaderPrecisionFormat GLeeFuncPtr_glGetShaderPrecisionFormat #endif #ifndef GLEE_H_DEFINED_glDepthRangef #define GLEE_H_DEFINED_glDepthRangef typedef void (APIENTRYP GLEEPFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); GLEE_EXTERN GLEEPFNGLDEPTHRANGEFPROC GLeeFuncPtr_glDepthRangef; #define glDepthRangef GLeeFuncPtr_glDepthRangef #endif #ifndef GLEE_H_DEFINED_glClearDepthf #define GLEE_H_DEFINED_glClearDepthf typedef void (APIENTRYP GLEEPFNGLCLEARDEPTHFPROC) (GLfloat d); GLEE_EXTERN GLEEPFNGLCLEARDEPTHFPROC GLeeFuncPtr_glClearDepthf; #define glClearDepthf GLeeFuncPtr_glClearDepthf #endif #endif /* GL_ARB_get_program_binary */ #ifndef GL_ARB_get_program_binary #define GL_ARB_get_program_binary 1 #define __GLEE_GL_ARB_get_program_binary 1 /* Constants */ #define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257 #define GL_PROGRAM_BINARY_LENGTH 0x8741 #define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE #define GL_PROGRAM_BINARY_FORMATS 0x87FF #ifndef GLEE_H_DEFINED_glGetProgramBinary #define GLEE_H_DEFINED_glGetProgramBinary typedef void (APIENTRYP GLEEPFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei * length, GLenum * binaryFormat, GLvoid * binary); GLEE_EXTERN GLEEPFNGLGETPROGRAMBINARYPROC GLeeFuncPtr_glGetProgramBinary; #define glGetProgramBinary GLeeFuncPtr_glGetProgramBinary #endif #ifndef GLEE_H_DEFINED_glProgramBinary #define GLEE_H_DEFINED_glProgramBinary typedef void (APIENTRYP GLEEPFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const GLvoid * binary, GLsizei length); GLEE_EXTERN GLEEPFNGLPROGRAMBINARYPROC GLeeFuncPtr_glProgramBinary; #define glProgramBinary GLeeFuncPtr_glProgramBinary #endif #ifndef GLEE_H_DEFINED_glProgramParameteri #define GLEE_H_DEFINED_glProgramParameteri typedef void (APIENTRYP GLEEPFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value); GLEE_EXTERN GLEEPFNGLPROGRAMPARAMETERIPROC GLeeFuncPtr_glProgramParameteri; #define glProgramParameteri GLeeFuncPtr_glProgramParameteri #endif #endif /* GL_ARB_separate_shader_objects */ #ifndef GL_ARB_separate_shader_objects #define GL_ARB_separate_shader_objects 1 #define __GLEE_GL_ARB_separate_shader_objects 1 /* Constants */ #define GL_VERTEX_SHADER_BIT 0x00000001 #define GL_FRAGMENT_SHADER_BIT 0x00000002 #define GL_GEOMETRY_SHADER_BIT 0x00000004 #define GL_TESS_CONTROL_SHADER_BIT 0x00000008 #define GL_TESS_EVALUATION_SHADER_BIT 0x00000010 #define GL_ALL_SHADER_BITS 0xFFFFFFFF #define GL_PROGRAM_SEPARABLE 0x8258 #define GL_ACTIVE_PROGRAM 0x8259 #define GL_PROGRAM_PIPELINE_BINDING 0x825A #ifndef GLEE_H_DEFINED_glUseProgramStages #define GLEE_H_DEFINED_glUseProgramStages typedef void (APIENTRYP GLEEPFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program); GLEE_EXTERN GLEEPFNGLUSEPROGRAMSTAGESPROC GLeeFuncPtr_glUseProgramStages; #define glUseProgramStages GLeeFuncPtr_glUseProgramStages #endif #ifndef GLEE_H_DEFINED_glActiveShaderProgram #define GLEE_H_DEFINED_glActiveShaderProgram typedef void (APIENTRYP GLEEPFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program); GLEE_EXTERN GLEEPFNGLACTIVESHADERPROGRAMPROC GLeeFuncPtr_glActiveShaderProgram; #define glActiveShaderProgram GLeeFuncPtr_glActiveShaderProgram #endif #ifndef GLEE_H_DEFINED_glCreateShaderProgramv #define GLEE_H_DEFINED_glCreateShaderProgramv typedef GLuint (APIENTRYP GLEEPFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar* const * strings); GLEE_EXTERN GLEEPFNGLCREATESHADERPROGRAMVPROC GLeeFuncPtr_glCreateShaderProgramv; #define glCreateShaderProgramv GLeeFuncPtr_glCreateShaderProgramv #endif #ifndef GLEE_H_DEFINED_glBindProgramPipeline #define GLEE_H_DEFINED_glBindProgramPipeline typedef void (APIENTRYP GLEEPFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline); GLEE_EXTERN GLEEPFNGLBINDPROGRAMPIPELINEPROC GLeeFuncPtr_glBindProgramPipeline; #define glBindProgramPipeline GLeeFuncPtr_glBindProgramPipeline #endif #ifndef GLEE_H_DEFINED_glDeleteProgramPipelines #define GLEE_H_DEFINED_glDeleteProgramPipelines typedef void (APIENTRYP GLEEPFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint * pipelines); GLEE_EXTERN GLEEPFNGLDELETEPROGRAMPIPELINESPROC GLeeFuncPtr_glDeleteProgramPipelines; #define glDeleteProgramPipelines GLeeFuncPtr_glDeleteProgramPipelines #endif #ifndef GLEE_H_DEFINED_glGenProgramPipelines #define GLEE_H_DEFINED_glGenProgramPipelines typedef void (APIENTRYP GLEEPFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint * pipelines); GLEE_EXTERN GLEEPFNGLGENPROGRAMPIPELINESPROC GLeeFuncPtr_glGenProgramPipelines; #define glGenProgramPipelines GLeeFuncPtr_glGenProgramPipelines #endif #ifndef GLEE_H_DEFINED_glIsProgramPipeline #define GLEE_H_DEFINED_glIsProgramPipeline typedef GLboolean (APIENTRYP GLEEPFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline); GLEE_EXTERN GLEEPFNGLISPROGRAMPIPELINEPROC GLeeFuncPtr_glIsProgramPipeline; #define glIsProgramPipeline GLeeFuncPtr_glIsProgramPipeline #endif #ifndef GLEE_H_DEFINED_glGetProgramPipelineiv #define GLEE_H_DEFINED_glGetProgramPipelineiv typedef void (APIENTRYP GLEEPFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMPIPELINEIVPROC GLeeFuncPtr_glGetProgramPipelineiv; #define glGetProgramPipelineiv GLeeFuncPtr_glGetProgramPipelineiv #endif #ifndef GLEE_H_DEFINED_glProgramUniform1i #define GLEE_H_DEFINED_glProgramUniform1i typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1IPROC GLeeFuncPtr_glProgramUniform1i; #define glProgramUniform1i GLeeFuncPtr_glProgramUniform1i #endif #ifndef GLEE_H_DEFINED_glProgramUniform1iv #define GLEE_H_DEFINED_glProgramUniform1iv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1IVPROC GLeeFuncPtr_glProgramUniform1iv; #define glProgramUniform1iv GLeeFuncPtr_glProgramUniform1iv #endif #ifndef GLEE_H_DEFINED_glProgramUniform1f #define GLEE_H_DEFINED_glProgramUniform1f typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1FPROC GLeeFuncPtr_glProgramUniform1f; #define glProgramUniform1f GLeeFuncPtr_glProgramUniform1f #endif #ifndef GLEE_H_DEFINED_glProgramUniform1fv #define GLEE_H_DEFINED_glProgramUniform1fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1FVPROC GLeeFuncPtr_glProgramUniform1fv; #define glProgramUniform1fv GLeeFuncPtr_glProgramUniform1fv #endif #ifndef GLEE_H_DEFINED_glProgramUniform1d #define GLEE_H_DEFINED_glProgramUniform1d typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1DPROC GLeeFuncPtr_glProgramUniform1d; #define glProgramUniform1d GLeeFuncPtr_glProgramUniform1d #endif #ifndef GLEE_H_DEFINED_glProgramUniform1dv #define GLEE_H_DEFINED_glProgramUniform1dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1DVPROC GLeeFuncPtr_glProgramUniform1dv; #define glProgramUniform1dv GLeeFuncPtr_glProgramUniform1dv #endif #ifndef GLEE_H_DEFINED_glProgramUniform1ui #define GLEE_H_DEFINED_glProgramUniform1ui typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1UIPROC GLeeFuncPtr_glProgramUniform1ui; #define glProgramUniform1ui GLeeFuncPtr_glProgramUniform1ui #endif #ifndef GLEE_H_DEFINED_glProgramUniform1uiv #define GLEE_H_DEFINED_glProgramUniform1uiv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1UIVPROC GLeeFuncPtr_glProgramUniform1uiv; #define glProgramUniform1uiv GLeeFuncPtr_glProgramUniform1uiv #endif #ifndef GLEE_H_DEFINED_glProgramUniform2i #define GLEE_H_DEFINED_glProgramUniform2i typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2IPROC GLeeFuncPtr_glProgramUniform2i; #define glProgramUniform2i GLeeFuncPtr_glProgramUniform2i #endif #ifndef GLEE_H_DEFINED_glProgramUniform2iv #define GLEE_H_DEFINED_glProgramUniform2iv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2IVPROC GLeeFuncPtr_glProgramUniform2iv; #define glProgramUniform2iv GLeeFuncPtr_glProgramUniform2iv #endif #ifndef GLEE_H_DEFINED_glProgramUniform2f #define GLEE_H_DEFINED_glProgramUniform2f typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2FPROC GLeeFuncPtr_glProgramUniform2f; #define glProgramUniform2f GLeeFuncPtr_glProgramUniform2f #endif #ifndef GLEE_H_DEFINED_glProgramUniform2fv #define GLEE_H_DEFINED_glProgramUniform2fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2FVPROC GLeeFuncPtr_glProgramUniform2fv; #define glProgramUniform2fv GLeeFuncPtr_glProgramUniform2fv #endif #ifndef GLEE_H_DEFINED_glProgramUniform2d #define GLEE_H_DEFINED_glProgramUniform2d typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2DPROC GLeeFuncPtr_glProgramUniform2d; #define glProgramUniform2d GLeeFuncPtr_glProgramUniform2d #endif #ifndef GLEE_H_DEFINED_glProgramUniform2dv #define GLEE_H_DEFINED_glProgramUniform2dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2DVPROC GLeeFuncPtr_glProgramUniform2dv; #define glProgramUniform2dv GLeeFuncPtr_glProgramUniform2dv #endif #ifndef GLEE_H_DEFINED_glProgramUniform2ui #define GLEE_H_DEFINED_glProgramUniform2ui typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2UIPROC GLeeFuncPtr_glProgramUniform2ui; #define glProgramUniform2ui GLeeFuncPtr_glProgramUniform2ui #endif #ifndef GLEE_H_DEFINED_glProgramUniform2uiv #define GLEE_H_DEFINED_glProgramUniform2uiv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2UIVPROC GLeeFuncPtr_glProgramUniform2uiv; #define glProgramUniform2uiv GLeeFuncPtr_glProgramUniform2uiv #endif #ifndef GLEE_H_DEFINED_glProgramUniform3i #define GLEE_H_DEFINED_glProgramUniform3i typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3IPROC GLeeFuncPtr_glProgramUniform3i; #define glProgramUniform3i GLeeFuncPtr_glProgramUniform3i #endif #ifndef GLEE_H_DEFINED_glProgramUniform3iv #define GLEE_H_DEFINED_glProgramUniform3iv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3IVPROC GLeeFuncPtr_glProgramUniform3iv; #define glProgramUniform3iv GLeeFuncPtr_glProgramUniform3iv #endif #ifndef GLEE_H_DEFINED_glProgramUniform3f #define GLEE_H_DEFINED_glProgramUniform3f typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3FPROC GLeeFuncPtr_glProgramUniform3f; #define glProgramUniform3f GLeeFuncPtr_glProgramUniform3f #endif #ifndef GLEE_H_DEFINED_glProgramUniform3fv #define GLEE_H_DEFINED_glProgramUniform3fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3FVPROC GLeeFuncPtr_glProgramUniform3fv; #define glProgramUniform3fv GLeeFuncPtr_glProgramUniform3fv #endif #ifndef GLEE_H_DEFINED_glProgramUniform3d #define GLEE_H_DEFINED_glProgramUniform3d typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3DPROC GLeeFuncPtr_glProgramUniform3d; #define glProgramUniform3d GLeeFuncPtr_glProgramUniform3d #endif #ifndef GLEE_H_DEFINED_glProgramUniform3dv #define GLEE_H_DEFINED_glProgramUniform3dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3DVPROC GLeeFuncPtr_glProgramUniform3dv; #define glProgramUniform3dv GLeeFuncPtr_glProgramUniform3dv #endif #ifndef GLEE_H_DEFINED_glProgramUniform3ui #define GLEE_H_DEFINED_glProgramUniform3ui typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3UIPROC GLeeFuncPtr_glProgramUniform3ui; #define glProgramUniform3ui GLeeFuncPtr_glProgramUniform3ui #endif #ifndef GLEE_H_DEFINED_glProgramUniform3uiv #define GLEE_H_DEFINED_glProgramUniform3uiv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3UIVPROC GLeeFuncPtr_glProgramUniform3uiv; #define glProgramUniform3uiv GLeeFuncPtr_glProgramUniform3uiv #endif #ifndef GLEE_H_DEFINED_glProgramUniform4i #define GLEE_H_DEFINED_glProgramUniform4i typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4IPROC GLeeFuncPtr_glProgramUniform4i; #define glProgramUniform4i GLeeFuncPtr_glProgramUniform4i #endif #ifndef GLEE_H_DEFINED_glProgramUniform4iv #define GLEE_H_DEFINED_glProgramUniform4iv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4IVPROC GLeeFuncPtr_glProgramUniform4iv; #define glProgramUniform4iv GLeeFuncPtr_glProgramUniform4iv #endif #ifndef GLEE_H_DEFINED_glProgramUniform4f #define GLEE_H_DEFINED_glProgramUniform4f typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4FPROC GLeeFuncPtr_glProgramUniform4f; #define glProgramUniform4f GLeeFuncPtr_glProgramUniform4f #endif #ifndef GLEE_H_DEFINED_glProgramUniform4fv #define GLEE_H_DEFINED_glProgramUniform4fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4FVPROC GLeeFuncPtr_glProgramUniform4fv; #define glProgramUniform4fv GLeeFuncPtr_glProgramUniform4fv #endif #ifndef GLEE_H_DEFINED_glProgramUniform4d #define GLEE_H_DEFINED_glProgramUniform4d typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4DPROC GLeeFuncPtr_glProgramUniform4d; #define glProgramUniform4d GLeeFuncPtr_glProgramUniform4d #endif #ifndef GLEE_H_DEFINED_glProgramUniform4dv #define GLEE_H_DEFINED_glProgramUniform4dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4DVPROC GLeeFuncPtr_glProgramUniform4dv; #define glProgramUniform4dv GLeeFuncPtr_glProgramUniform4dv #endif #ifndef GLEE_H_DEFINED_glProgramUniform4ui #define GLEE_H_DEFINED_glProgramUniform4ui typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4UIPROC GLeeFuncPtr_glProgramUniform4ui; #define glProgramUniform4ui GLeeFuncPtr_glProgramUniform4ui #endif #ifndef GLEE_H_DEFINED_glProgramUniform4uiv #define GLEE_H_DEFINED_glProgramUniform4uiv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4UIVPROC GLeeFuncPtr_glProgramUniform4uiv; #define glProgramUniform4uiv GLeeFuncPtr_glProgramUniform4uiv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2fv #define GLEE_H_DEFINED_glProgramUniformMatrix2fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2FVPROC GLeeFuncPtr_glProgramUniformMatrix2fv; #define glProgramUniformMatrix2fv GLeeFuncPtr_glProgramUniformMatrix2fv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3fv #define GLEE_H_DEFINED_glProgramUniformMatrix3fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3FVPROC GLeeFuncPtr_glProgramUniformMatrix3fv; #define glProgramUniformMatrix3fv GLeeFuncPtr_glProgramUniformMatrix3fv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4fv #define GLEE_H_DEFINED_glProgramUniformMatrix4fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4FVPROC GLeeFuncPtr_glProgramUniformMatrix4fv; #define glProgramUniformMatrix4fv GLeeFuncPtr_glProgramUniformMatrix4fv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2dv #define GLEE_H_DEFINED_glProgramUniformMatrix2dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2DVPROC GLeeFuncPtr_glProgramUniformMatrix2dv; #define glProgramUniformMatrix2dv GLeeFuncPtr_glProgramUniformMatrix2dv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3dv #define GLEE_H_DEFINED_glProgramUniformMatrix3dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3DVPROC GLeeFuncPtr_glProgramUniformMatrix3dv; #define glProgramUniformMatrix3dv GLeeFuncPtr_glProgramUniformMatrix3dv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4dv #define GLEE_H_DEFINED_glProgramUniformMatrix4dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4DVPROC GLeeFuncPtr_glProgramUniformMatrix4dv; #define glProgramUniformMatrix4dv GLeeFuncPtr_glProgramUniformMatrix4dv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2x3fv #define GLEE_H_DEFINED_glProgramUniformMatrix2x3fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2X3FVPROC GLeeFuncPtr_glProgramUniformMatrix2x3fv; #define glProgramUniformMatrix2x3fv GLeeFuncPtr_glProgramUniformMatrix2x3fv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3x2fv #define GLEE_H_DEFINED_glProgramUniformMatrix3x2fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3X2FVPROC GLeeFuncPtr_glProgramUniformMatrix3x2fv; #define glProgramUniformMatrix3x2fv GLeeFuncPtr_glProgramUniformMatrix3x2fv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2x4fv #define GLEE_H_DEFINED_glProgramUniformMatrix2x4fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2X4FVPROC GLeeFuncPtr_glProgramUniformMatrix2x4fv; #define glProgramUniformMatrix2x4fv GLeeFuncPtr_glProgramUniformMatrix2x4fv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4x2fv #define GLEE_H_DEFINED_glProgramUniformMatrix4x2fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4X2FVPROC GLeeFuncPtr_glProgramUniformMatrix4x2fv; #define glProgramUniformMatrix4x2fv GLeeFuncPtr_glProgramUniformMatrix4x2fv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3x4fv #define GLEE_H_DEFINED_glProgramUniformMatrix3x4fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3X4FVPROC GLeeFuncPtr_glProgramUniformMatrix3x4fv; #define glProgramUniformMatrix3x4fv GLeeFuncPtr_glProgramUniformMatrix3x4fv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4x3fv #define GLEE_H_DEFINED_glProgramUniformMatrix4x3fv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4X3FVPROC GLeeFuncPtr_glProgramUniformMatrix4x3fv; #define glProgramUniformMatrix4x3fv GLeeFuncPtr_glProgramUniformMatrix4x3fv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2x3dv #define GLEE_H_DEFINED_glProgramUniformMatrix2x3dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2X3DVPROC GLeeFuncPtr_glProgramUniformMatrix2x3dv; #define glProgramUniformMatrix2x3dv GLeeFuncPtr_glProgramUniformMatrix2x3dv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3x2dv #define GLEE_H_DEFINED_glProgramUniformMatrix3x2dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3X2DVPROC GLeeFuncPtr_glProgramUniformMatrix3x2dv; #define glProgramUniformMatrix3x2dv GLeeFuncPtr_glProgramUniformMatrix3x2dv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2x4dv #define GLEE_H_DEFINED_glProgramUniformMatrix2x4dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2X4DVPROC GLeeFuncPtr_glProgramUniformMatrix2x4dv; #define glProgramUniformMatrix2x4dv GLeeFuncPtr_glProgramUniformMatrix2x4dv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4x2dv #define GLEE_H_DEFINED_glProgramUniformMatrix4x2dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4X2DVPROC GLeeFuncPtr_glProgramUniformMatrix4x2dv; #define glProgramUniformMatrix4x2dv GLeeFuncPtr_glProgramUniformMatrix4x2dv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3x4dv #define GLEE_H_DEFINED_glProgramUniformMatrix3x4dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3X4DVPROC GLeeFuncPtr_glProgramUniformMatrix3x4dv; #define glProgramUniformMatrix3x4dv GLeeFuncPtr_glProgramUniformMatrix3x4dv #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4x3dv #define GLEE_H_DEFINED_glProgramUniformMatrix4x3dv typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4X3DVPROC GLeeFuncPtr_glProgramUniformMatrix4x3dv; #define glProgramUniformMatrix4x3dv GLeeFuncPtr_glProgramUniformMatrix4x3dv #endif #ifndef GLEE_H_DEFINED_glValidateProgramPipeline #define GLEE_H_DEFINED_glValidateProgramPipeline typedef void (APIENTRYP GLEEPFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline); GLEE_EXTERN GLEEPFNGLVALIDATEPROGRAMPIPELINEPROC GLeeFuncPtr_glValidateProgramPipeline; #define glValidateProgramPipeline GLeeFuncPtr_glValidateProgramPipeline #endif #ifndef GLEE_H_DEFINED_glGetProgramPipelineInfoLog #define GLEE_H_DEFINED_glGetProgramPipelineInfoLog typedef void (APIENTRYP GLEEPFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog); GLEE_EXTERN GLEEPFNGLGETPROGRAMPIPELINEINFOLOGPROC GLeeFuncPtr_glGetProgramPipelineInfoLog; #define glGetProgramPipelineInfoLog GLeeFuncPtr_glGetProgramPipelineInfoLog #endif #endif /* GL_ARB_shader_precision */ #ifndef GL_ARB_shader_precision #define GL_ARB_shader_precision 1 #define __GLEE_GL_ARB_shader_precision 1 /* Constants */ #endif /* GL_ARB_vertex_attrib_64bit */ #ifndef GL_ARB_vertex_attrib_64bit #define GL_ARB_vertex_attrib_64bit 1 #define __GLEE_GL_ARB_vertex_attrib_64bit 1 /* Constants */ #ifndef GLEE_H_DEFINED_glVertexAttribL1d #define GLEE_H_DEFINED_glVertexAttribL1d typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL1DPROC GLeeFuncPtr_glVertexAttribL1d; #define glVertexAttribL1d GLeeFuncPtr_glVertexAttribL1d #endif #ifndef GLEE_H_DEFINED_glVertexAttribL2d #define GLEE_H_DEFINED_glVertexAttribL2d typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL2DPROC GLeeFuncPtr_glVertexAttribL2d; #define glVertexAttribL2d GLeeFuncPtr_glVertexAttribL2d #endif #ifndef GLEE_H_DEFINED_glVertexAttribL3d #define GLEE_H_DEFINED_glVertexAttribL3d typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL3DPROC GLeeFuncPtr_glVertexAttribL3d; #define glVertexAttribL3d GLeeFuncPtr_glVertexAttribL3d #endif #ifndef GLEE_H_DEFINED_glVertexAttribL4d #define GLEE_H_DEFINED_glVertexAttribL4d typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL4DPROC GLeeFuncPtr_glVertexAttribL4d; #define glVertexAttribL4d GLeeFuncPtr_glVertexAttribL4d #endif #ifndef GLEE_H_DEFINED_glVertexAttribL1dv #define GLEE_H_DEFINED_glVertexAttribL1dv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL1DVPROC GLeeFuncPtr_glVertexAttribL1dv; #define glVertexAttribL1dv GLeeFuncPtr_glVertexAttribL1dv #endif #ifndef GLEE_H_DEFINED_glVertexAttribL2dv #define GLEE_H_DEFINED_glVertexAttribL2dv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL2DVPROC GLeeFuncPtr_glVertexAttribL2dv; #define glVertexAttribL2dv GLeeFuncPtr_glVertexAttribL2dv #endif #ifndef GLEE_H_DEFINED_glVertexAttribL3dv #define GLEE_H_DEFINED_glVertexAttribL3dv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL3DVPROC GLeeFuncPtr_glVertexAttribL3dv; #define glVertexAttribL3dv GLeeFuncPtr_glVertexAttribL3dv #endif #ifndef GLEE_H_DEFINED_glVertexAttribL4dv #define GLEE_H_DEFINED_glVertexAttribL4dv typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL4DVPROC GLeeFuncPtr_glVertexAttribL4dv; #define glVertexAttribL4dv GLeeFuncPtr_glVertexAttribL4dv #endif #ifndef GLEE_H_DEFINED_glVertexAttribLPointer #define GLEE_H_DEFINED_glVertexAttribLPointer typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBLPOINTERPROC GLeeFuncPtr_glVertexAttribLPointer; #define glVertexAttribLPointer GLeeFuncPtr_glVertexAttribLPointer #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribLdv #define GLEE_H_DEFINED_glGetVertexAttribLdv typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBLDVPROC GLeeFuncPtr_glGetVertexAttribLdv; #define glGetVertexAttribLdv GLeeFuncPtr_glGetVertexAttribLdv #endif #endif /* GL_ARB_viewport_array */ #ifndef GL_ARB_viewport_array #define GL_ARB_viewport_array 1 #define __GLEE_GL_ARB_viewport_array 1 /* Constants */ #define GL_MAX_VIEWPORTS 0x825B #define GL_VIEWPORT_SUBPIXEL_BITS 0x825C #define GL_VIEWPORT_BOUNDS_RANGE 0x825D #define GL_LAYER_PROVOKING_VERTEX 0x825E #define GL_VIEWPORT_INDEX_PROVOKING_VERTEX 0x825F #define GL_UNDEFINED_VERTEX 0x8260 #ifndef GLEE_H_DEFINED_glViewportArrayv #define GLEE_H_DEFINED_glViewportArrayv typedef void (APIENTRYP GLEEPFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVIEWPORTARRAYVPROC GLeeFuncPtr_glViewportArrayv; #define glViewportArrayv GLeeFuncPtr_glViewportArrayv #endif #ifndef GLEE_H_DEFINED_glViewportIndexedf #define GLEE_H_DEFINED_glViewportIndexedf typedef void (APIENTRYP GLEEPFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); GLEE_EXTERN GLEEPFNGLVIEWPORTINDEXEDFPROC GLeeFuncPtr_glViewportIndexedf; #define glViewportIndexedf GLeeFuncPtr_glViewportIndexedf #endif #ifndef GLEE_H_DEFINED_glViewportIndexedfv #define GLEE_H_DEFINED_glViewportIndexedfv typedef void (APIENTRYP GLEEPFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVIEWPORTINDEXEDFVPROC GLeeFuncPtr_glViewportIndexedfv; #define glViewportIndexedfv GLeeFuncPtr_glViewportIndexedfv #endif #ifndef GLEE_H_DEFINED_glScissorArrayv #define GLEE_H_DEFINED_glScissorArrayv typedef void (APIENTRYP GLEEPFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint * v); GLEE_EXTERN GLEEPFNGLSCISSORARRAYVPROC GLeeFuncPtr_glScissorArrayv; #define glScissorArrayv GLeeFuncPtr_glScissorArrayv #endif #ifndef GLEE_H_DEFINED_glScissorIndexed #define GLEE_H_DEFINED_glScissorIndexed typedef void (APIENTRYP GLEEPFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLSCISSORINDEXEDPROC GLeeFuncPtr_glScissorIndexed; #define glScissorIndexed GLeeFuncPtr_glScissorIndexed #endif #ifndef GLEE_H_DEFINED_glScissorIndexedv #define GLEE_H_DEFINED_glScissorIndexedv typedef void (APIENTRYP GLEEPFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint * v); GLEE_EXTERN GLEEPFNGLSCISSORINDEXEDVPROC GLeeFuncPtr_glScissorIndexedv; #define glScissorIndexedv GLeeFuncPtr_glScissorIndexedv #endif #ifndef GLEE_H_DEFINED_glDepthRangeArrayv #define GLEE_H_DEFINED_glDepthRangeArrayv typedef void (APIENTRYP GLEEPFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLdouble * v); GLEE_EXTERN GLEEPFNGLDEPTHRANGEARRAYVPROC GLeeFuncPtr_glDepthRangeArrayv; #define glDepthRangeArrayv GLeeFuncPtr_glDepthRangeArrayv #endif #ifndef GLEE_H_DEFINED_glDepthRangeIndexed #define GLEE_H_DEFINED_glDepthRangeIndexed typedef void (APIENTRYP GLEEPFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLdouble n, GLdouble f); GLEE_EXTERN GLEEPFNGLDEPTHRANGEINDEXEDPROC GLeeFuncPtr_glDepthRangeIndexed; #define glDepthRangeIndexed GLeeFuncPtr_glDepthRangeIndexed #endif #ifndef GLEE_H_DEFINED_glGetFloati_v #define GLEE_H_DEFINED_glGetFloati_v typedef void (APIENTRYP GLEEPFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat * data); GLEE_EXTERN GLEEPFNGLGETFLOATI_VPROC GLeeFuncPtr_glGetFloati_v; #define glGetFloati_v GLeeFuncPtr_glGetFloati_v #endif #ifndef GLEE_H_DEFINED_glGetDoublei_v #define GLEE_H_DEFINED_glGetDoublei_v typedef void (APIENTRYP GLEEPFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble * data); GLEE_EXTERN GLEEPFNGLGETDOUBLEI_VPROC GLeeFuncPtr_glGetDoublei_v; #define glGetDoublei_v GLeeFuncPtr_glGetDoublei_v #endif #endif /* GL_ARB_cl_event */ #ifndef GL_ARB_cl_event #define GL_ARB_cl_event 1 #define __GLEE_GL_ARB_cl_event 1 /* Constants */ #define GL_SYNC_CL_EVENT_ARB 0x8240 #define GL_SYNC_CL_EVENT_COMPLETE_ARB 0x8241 #ifndef GLEE_H_DEFINED_glCreateSyncFromCLeventARB #define GLEE_H_DEFINED_glCreateSyncFromCLeventARB typedef GLsync (APIENTRYP GLEEPFNGLCREATESYNCFROMCLEVENTARBPROC) (struct _cl_context * context, struct _cl_event * event, GLbitfield flags); GLEE_EXTERN GLEEPFNGLCREATESYNCFROMCLEVENTARBPROC GLeeFuncPtr_glCreateSyncFromCLeventARB; #define glCreateSyncFromCLeventARB GLeeFuncPtr_glCreateSyncFromCLeventARB #endif #endif /* GL_ARB_debug_output */ #ifndef GL_ARB_debug_output #define GL_ARB_debug_output 1 #define __GLEE_GL_ARB_debug_output 1 /* Constants */ #define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242 #define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243 #define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244 #define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245 #define GL_DEBUG_SOURCE_API_ARB 0x8246 #define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247 #define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248 #define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249 #define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A #define GL_DEBUG_SOURCE_OTHER_ARB 0x824B #define GL_DEBUG_TYPE_ERROR_ARB 0x824C #define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D #define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E #define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F #define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250 #define GL_DEBUG_TYPE_OTHER_ARB 0x8251 #define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143 #define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144 #define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145 #define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146 #define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147 #define GL_DEBUG_SEVERITY_LOW_ARB 0x9148 #ifndef GLEE_H_DEFINED_glDebugMessageControlARB #define GLEE_H_DEFINED_glDebugMessageControlARB typedef void (APIENTRYP GLEEPFNGLDEBUGMESSAGECONTROLARBPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); GLEE_EXTERN GLEEPFNGLDEBUGMESSAGECONTROLARBPROC GLeeFuncPtr_glDebugMessageControlARB; #define glDebugMessageControlARB GLeeFuncPtr_glDebugMessageControlARB #endif #ifndef GLEE_H_DEFINED_glDebugMessageInsertARB #define GLEE_H_DEFINED_glDebugMessageInsertARB typedef void (APIENTRYP GLEEPFNGLDEBUGMESSAGEINSERTARBPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); GLEE_EXTERN GLEEPFNGLDEBUGMESSAGEINSERTARBPROC GLeeFuncPtr_glDebugMessageInsertARB; #define glDebugMessageInsertARB GLeeFuncPtr_glDebugMessageInsertARB #endif #ifndef GLEE_H_DEFINED_glDebugMessageCallbackARB #define GLEE_H_DEFINED_glDebugMessageCallbackARB typedef void (APIENTRYP GLEEPFNGLDEBUGMESSAGECALLBACKARBPROC) (GLDEBUGPROCARB callback, const GLvoid * userParam); GLEE_EXTERN GLEEPFNGLDEBUGMESSAGECALLBACKARBPROC GLeeFuncPtr_glDebugMessageCallbackARB; #define glDebugMessageCallbackARB GLeeFuncPtr_glDebugMessageCallbackARB #endif #ifndef GLEE_H_DEFINED_glGetDebugMessageLogARB #define GLEE_H_DEFINED_glGetDebugMessageLogARB typedef GLuint (APIENTRYP GLEEPFNGLGETDEBUGMESSAGELOGARBPROC) (GLuint count, GLsizei bufsize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); GLEE_EXTERN GLEEPFNGLGETDEBUGMESSAGELOGARBPROC GLeeFuncPtr_glGetDebugMessageLogARB; #define glGetDebugMessageLogARB GLeeFuncPtr_glGetDebugMessageLogARB #endif #endif /* GL_ARB_robustness */ #ifndef GL_ARB_robustness #define GL_ARB_robustness 1 #define __GLEE_GL_ARB_robustness 1 /* Constants */ #define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB 0x00000004 #define GL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 #define GL_GUILTY_CONTEXT_RESET_ARB 0x8253 #define GL_INNOCENT_CONTEXT_RESET_ARB 0x8254 #define GL_UNKNOWN_CONTEXT_RESET_ARB 0x8255 #define GL_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 #define GL_NO_RESET_NOTIFICATION_ARB 0x8261 #ifndef GLEE_H_DEFINED_glGetGraphicsResetStatusARB #define GLEE_H_DEFINED_glGetGraphicsResetStatusARB typedef GLenum (APIENTRYP GLEEPFNGLGETGRAPHICSRESETSTATUSARBPROC) (); GLEE_EXTERN GLEEPFNGLGETGRAPHICSRESETSTATUSARBPROC GLeeFuncPtr_glGetGraphicsResetStatusARB; #define glGetGraphicsResetStatusARB GLeeFuncPtr_glGetGraphicsResetStatusARB #endif #ifndef GLEE_H_DEFINED_glGetnMapdvARB #define GLEE_H_DEFINED_glGetnMapdvARB typedef void (APIENTRYP GLEEPFNGLGETNMAPDVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble * v); GLEE_EXTERN GLEEPFNGLGETNMAPDVARBPROC GLeeFuncPtr_glGetnMapdvARB; #define glGetnMapdvARB GLeeFuncPtr_glGetnMapdvARB #endif #ifndef GLEE_H_DEFINED_glGetnMapfvARB #define GLEE_H_DEFINED_glGetnMapfvARB typedef void (APIENTRYP GLEEPFNGLGETNMAPFVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat * v); GLEE_EXTERN GLEEPFNGLGETNMAPFVARBPROC GLeeFuncPtr_glGetnMapfvARB; #define glGetnMapfvARB GLeeFuncPtr_glGetnMapfvARB #endif #ifndef GLEE_H_DEFINED_glGetnMapivARB #define GLEE_H_DEFINED_glGetnMapivARB typedef void (APIENTRYP GLEEPFNGLGETNMAPIVARBPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint * v); GLEE_EXTERN GLEEPFNGLGETNMAPIVARBPROC GLeeFuncPtr_glGetnMapivARB; #define glGetnMapivARB GLeeFuncPtr_glGetnMapivARB #endif #ifndef GLEE_H_DEFINED_glGetnPixelMapfvARB #define GLEE_H_DEFINED_glGetnPixelMapfvARB typedef void (APIENTRYP GLEEPFNGLGETNPIXELMAPFVARBPROC) (GLenum map, GLsizei bufSize, GLfloat * values); GLEE_EXTERN GLEEPFNGLGETNPIXELMAPFVARBPROC GLeeFuncPtr_glGetnPixelMapfvARB; #define glGetnPixelMapfvARB GLeeFuncPtr_glGetnPixelMapfvARB #endif #ifndef GLEE_H_DEFINED_glGetnPixelMapuivARB #define GLEE_H_DEFINED_glGetnPixelMapuivARB typedef void (APIENTRYP GLEEPFNGLGETNPIXELMAPUIVARBPROC) (GLenum map, GLsizei bufSize, GLuint * values); GLEE_EXTERN GLEEPFNGLGETNPIXELMAPUIVARBPROC GLeeFuncPtr_glGetnPixelMapuivARB; #define glGetnPixelMapuivARB GLeeFuncPtr_glGetnPixelMapuivARB #endif #ifndef GLEE_H_DEFINED_glGetnPixelMapusvARB #define GLEE_H_DEFINED_glGetnPixelMapusvARB typedef void (APIENTRYP GLEEPFNGLGETNPIXELMAPUSVARBPROC) (GLenum map, GLsizei bufSize, GLushort * values); GLEE_EXTERN GLEEPFNGLGETNPIXELMAPUSVARBPROC GLeeFuncPtr_glGetnPixelMapusvARB; #define glGetnPixelMapusvARB GLeeFuncPtr_glGetnPixelMapusvARB #endif #ifndef GLEE_H_DEFINED_glGetnPolygonStippleARB #define GLEE_H_DEFINED_glGetnPolygonStippleARB typedef void (APIENTRYP GLEEPFNGLGETNPOLYGONSTIPPLEARBPROC) (GLsizei bufSize, GLubyte * pattern); GLEE_EXTERN GLEEPFNGLGETNPOLYGONSTIPPLEARBPROC GLeeFuncPtr_glGetnPolygonStippleARB; #define glGetnPolygonStippleARB GLeeFuncPtr_glGetnPolygonStippleARB #endif #ifndef GLEE_H_DEFINED_glGetnColorTableARB #define GLEE_H_DEFINED_glGetnColorTableARB typedef void (APIENTRYP GLEEPFNGLGETNCOLORTABLEARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid * table); GLEE_EXTERN GLEEPFNGLGETNCOLORTABLEARBPROC GLeeFuncPtr_glGetnColorTableARB; #define glGetnColorTableARB GLeeFuncPtr_glGetnColorTableARB #endif #ifndef GLEE_H_DEFINED_glGetnConvolutionFilterARB #define GLEE_H_DEFINED_glGetnConvolutionFilterARB typedef void (APIENTRYP GLEEPFNGLGETNCONVOLUTIONFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid * image); GLEE_EXTERN GLEEPFNGLGETNCONVOLUTIONFILTERARBPROC GLeeFuncPtr_glGetnConvolutionFilterARB; #define glGetnConvolutionFilterARB GLeeFuncPtr_glGetnConvolutionFilterARB #endif #ifndef GLEE_H_DEFINED_glGetnSeparableFilterARB #define GLEE_H_DEFINED_glGetnSeparableFilterARB typedef void (APIENTRYP GLEEPFNGLGETNSEPARABLEFILTERARBPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid * row, GLsizei columnBufSize, GLvoid * column, GLvoid * span); GLEE_EXTERN GLEEPFNGLGETNSEPARABLEFILTERARBPROC GLeeFuncPtr_glGetnSeparableFilterARB; #define glGetnSeparableFilterARB GLeeFuncPtr_glGetnSeparableFilterARB #endif #ifndef GLEE_H_DEFINED_glGetnHistogramARB #define GLEE_H_DEFINED_glGetnHistogramARB typedef void (APIENTRYP GLEEPFNGLGETNHISTOGRAMARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid * values); GLEE_EXTERN GLEEPFNGLGETNHISTOGRAMARBPROC GLeeFuncPtr_glGetnHistogramARB; #define glGetnHistogramARB GLeeFuncPtr_glGetnHistogramARB #endif #ifndef GLEE_H_DEFINED_glGetnMinmaxARB #define GLEE_H_DEFINED_glGetnMinmaxARB typedef void (APIENTRYP GLEEPFNGLGETNMINMAXARBPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid * values); GLEE_EXTERN GLEEPFNGLGETNMINMAXARBPROC GLeeFuncPtr_glGetnMinmaxARB; #define glGetnMinmaxARB GLeeFuncPtr_glGetnMinmaxARB #endif #ifndef GLEE_H_DEFINED_glGetnTexImageARB #define GLEE_H_DEFINED_glGetnTexImageARB typedef void (APIENTRYP GLEEPFNGLGETNTEXIMAGEARBPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid * img); GLEE_EXTERN GLEEPFNGLGETNTEXIMAGEARBPROC GLeeFuncPtr_glGetnTexImageARB; #define glGetnTexImageARB GLeeFuncPtr_glGetnTexImageARB #endif #ifndef GLEE_H_DEFINED_glReadnPixelsARB #define GLEE_H_DEFINED_glReadnPixelsARB typedef void (APIENTRYP GLEEPFNGLREADNPIXELSARBPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid * data); GLEE_EXTERN GLEEPFNGLREADNPIXELSARBPROC GLeeFuncPtr_glReadnPixelsARB; #define glReadnPixelsARB GLeeFuncPtr_glReadnPixelsARB #endif #ifndef GLEE_H_DEFINED_glGetnCompressedTexImageARB #define GLEE_H_DEFINED_glGetnCompressedTexImageARB typedef void (APIENTRYP GLEEPFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint lod, GLsizei bufSize, GLvoid * img); GLEE_EXTERN GLEEPFNGLGETNCOMPRESSEDTEXIMAGEARBPROC GLeeFuncPtr_glGetnCompressedTexImageARB; #define glGetnCompressedTexImageARB GLeeFuncPtr_glGetnCompressedTexImageARB #endif #ifndef GLEE_H_DEFINED_glGetnUniformfvARB #define GLEE_H_DEFINED_glGetnUniformfvARB typedef void (APIENTRYP GLEEPFNGLGETNUNIFORMFVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETNUNIFORMFVARBPROC GLeeFuncPtr_glGetnUniformfvARB; #define glGetnUniformfvARB GLeeFuncPtr_glGetnUniformfvARB #endif #ifndef GLEE_H_DEFINED_glGetnUniformivARB #define GLEE_H_DEFINED_glGetnUniformivARB typedef void (APIENTRYP GLEEPFNGLGETNUNIFORMIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLint * params); GLEE_EXTERN GLEEPFNGLGETNUNIFORMIVARBPROC GLeeFuncPtr_glGetnUniformivARB; #define glGetnUniformivARB GLeeFuncPtr_glGetnUniformivARB #endif #ifndef GLEE_H_DEFINED_glGetnUniformuivARB #define GLEE_H_DEFINED_glGetnUniformuivARB typedef void (APIENTRYP GLEEPFNGLGETNUNIFORMUIVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint * params); GLEE_EXTERN GLEEPFNGLGETNUNIFORMUIVARBPROC GLeeFuncPtr_glGetnUniformuivARB; #define glGetnUniformuivARB GLeeFuncPtr_glGetnUniformuivARB #endif #ifndef GLEE_H_DEFINED_glGetnUniformdvARB #define GLEE_H_DEFINED_glGetnUniformdvARB typedef void (APIENTRYP GLEEPFNGLGETNUNIFORMDVARBPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETNUNIFORMDVARBPROC GLeeFuncPtr_glGetnUniformdvARB; #define glGetnUniformdvARB GLeeFuncPtr_glGetnUniformdvARB #endif #endif /* GL_ARB_shader_stencil_export */ #ifndef GL_ARB_shader_stencil_export #define GL_ARB_shader_stencil_export 1 #define __GLEE_GL_ARB_shader_stencil_export 1 /* Constants */ #endif /* GL_ARB_base_instance */ #ifndef GL_ARB_base_instance #define GL_ARB_base_instance 1 #define __GLEE_GL_ARB_base_instance 1 /* Constants */ #ifndef GLEE_H_DEFINED_glDrawArraysInstancedBaseInstance #define GLEE_H_DEFINED_glDrawArraysInstancedBaseInstance typedef void (APIENTRYP GLEEPFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); GLEE_EXTERN GLEEPFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC GLeeFuncPtr_glDrawArraysInstancedBaseInstance; #define glDrawArraysInstancedBaseInstance GLeeFuncPtr_glDrawArraysInstancedBaseInstance #endif #ifndef GLEE_H_DEFINED_glDrawElementsInstancedBaseInstance #define GLEE_H_DEFINED_glDrawElementsInstancedBaseInstance typedef void (APIENTRYP GLEEPFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLuint baseinstance); GLEE_EXTERN GLEEPFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC GLeeFuncPtr_glDrawElementsInstancedBaseInstance; #define glDrawElementsInstancedBaseInstance GLeeFuncPtr_glDrawElementsInstancedBaseInstance #endif #ifndef GLEE_H_DEFINED_glDrawElementsInstancedBaseVertexBaseInstance #define GLEE_H_DEFINED_glDrawElementsInstancedBaseVertexBaseInstance typedef void (APIENTRYP GLEEPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); GLEE_EXTERN GLEEPFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC GLeeFuncPtr_glDrawElementsInstancedBaseVertexBaseInstance; #define glDrawElementsInstancedBaseVertexBaseInstance GLeeFuncPtr_glDrawElementsInstancedBaseVertexBaseInstance #endif #endif /* GL_ARB_shading_language_420pack */ #ifndef GL_ARB_shading_language_420pack #define GL_ARB_shading_language_420pack 1 #define __GLEE_GL_ARB_shading_language_420pack 1 /* Constants */ #endif /* GL_ARB_transform_feedback_instanced */ #ifndef GL_ARB_transform_feedback_instanced #define GL_ARB_transform_feedback_instanced 1 #define __GLEE_GL_ARB_transform_feedback_instanced 1 /* Constants */ #ifndef GLEE_H_DEFINED_glDrawTransformFeedbackInstanced #define GLEE_H_DEFINED_glDrawTransformFeedbackInstanced typedef void (APIENTRYP GLEEPFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount); GLEE_EXTERN GLEEPFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC GLeeFuncPtr_glDrawTransformFeedbackInstanced; #define glDrawTransformFeedbackInstanced GLeeFuncPtr_glDrawTransformFeedbackInstanced #endif #ifndef GLEE_H_DEFINED_glDrawTransformFeedbackStreamInstanced #define GLEE_H_DEFINED_glDrawTransformFeedbackStreamInstanced typedef void (APIENTRYP GLEEPFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount); GLEE_EXTERN GLEEPFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC GLeeFuncPtr_glDrawTransformFeedbackStreamInstanced; #define glDrawTransformFeedbackStreamInstanced GLeeFuncPtr_glDrawTransformFeedbackStreamInstanced #endif #endif /* GL_ARB_compressed_texture_pixel_storage */ #ifndef GL_ARB_compressed_texture_pixel_storage #define GL_ARB_compressed_texture_pixel_storage 1 #define __GLEE_GL_ARB_compressed_texture_pixel_storage 1 /* Constants */ #define GL_UNPACK_COMPRESSED_BLOCK_WIDTH 0x9127 #define GL_UNPACK_COMPRESSED_BLOCK_HEIGHT 0x9128 #define GL_UNPACK_COMPRESSED_BLOCK_DEPTH 0x9129 #define GL_UNPACK_COMPRESSED_BLOCK_SIZE 0x912A #define GL_PACK_COMPRESSED_BLOCK_WIDTH 0x912B #define GL_PACK_COMPRESSED_BLOCK_HEIGHT 0x912C #define GL_PACK_COMPRESSED_BLOCK_DEPTH 0x912D #define GL_PACK_COMPRESSED_BLOCK_SIZE 0x912E #endif /* GL_ARB_conservative_depth */ #ifndef GL_ARB_conservative_depth #define GL_ARB_conservative_depth 1 #define __GLEE_GL_ARB_conservative_depth 1 /* Constants */ #endif /* GL_ARB_internalformat_query */ #ifndef GL_ARB_internalformat_query #define GL_ARB_internalformat_query 1 #define __GLEE_GL_ARB_internalformat_query 1 /* Constants */ #define GL_NUM_SAMPLE_COUNTS 0x9380 #ifndef GLEE_H_DEFINED_glGetInternalformativ #define GLEE_H_DEFINED_glGetInternalformativ typedef void (APIENTRYP GLEEPFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint * params); GLEE_EXTERN GLEEPFNGLGETINTERNALFORMATIVPROC GLeeFuncPtr_glGetInternalformativ; #define glGetInternalformativ GLeeFuncPtr_glGetInternalformativ #endif #endif /* GL_ARB_map_buffer_alignment */ #ifndef GL_ARB_map_buffer_alignment #define GL_ARB_map_buffer_alignment 1 #define __GLEE_GL_ARB_map_buffer_alignment 1 /* Constants */ #define GL_MIN_MAP_BUFFER_ALIGNMENT 0x90BC #endif /* GL_ARB_shader_atomic_counters */ #ifndef GL_ARB_shader_atomic_counters #define GL_ARB_shader_atomic_counters 1 #define __GLEE_GL_ARB_shader_atomic_counters 1 /* Constants */ #define GL_ATOMIC_COUNTER_BUFFER 0x92C0 #define GL_ATOMIC_COUNTER_BUFFER_BINDING 0x92C1 #define GL_ATOMIC_COUNTER_BUFFER_START 0x92C2 #define GL_ATOMIC_COUNTER_BUFFER_SIZE 0x92C3 #define GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE 0x92C4 #define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS 0x92C5 #define GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES 0x92C6 #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER 0x92C7 #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER 0x92C8 #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER 0x92C9 #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER 0x92CA #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER 0x92CB #define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE #define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF #define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0 #define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1 #define GL_MAX_VERTEX_ATOMIC_COUNTERS 0x92D2 #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3 #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4 #define GL_MAX_GEOMETRY_ATOMIC_COUNTERS 0x92D5 #define GL_MAX_FRAGMENT_ATOMIC_COUNTERS 0x92D6 #define GL_MAX_COMBINED_ATOMIC_COUNTERS 0x92D7 #define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8 #define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC #define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS 0x92D9 #define GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX 0x92DA #define GL_UNSIGNED_INT_ATOMIC_COUNTER 0x92DB #ifndef GLEE_H_DEFINED_glGetActiveAtomicCounterBufferiv #define GLEE_H_DEFINED_glGetActiveAtomicCounterBufferiv typedef void (APIENTRYP GLEEPFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC GLeeFuncPtr_glGetActiveAtomicCounterBufferiv; #define glGetActiveAtomicCounterBufferiv GLeeFuncPtr_glGetActiveAtomicCounterBufferiv #endif #endif /* GL_ARB_shader_image_load_store */ #ifndef GL_ARB_shader_image_load_store #define GL_ARB_shader_image_load_store 1 #define __GLEE_GL_ARB_shader_image_load_store 1 /* Constants */ #define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001 #define GL_ELEMENT_ARRAY_BARRIER_BIT 0x00000002 #define GL_UNIFORM_BARRIER_BIT 0x00000004 #define GL_TEXTURE_FETCH_BARRIER_BIT 0x00000008 #define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 #define GL_COMMAND_BARRIER_BIT 0x00000040 #define GL_PIXEL_BUFFER_BARRIER_BIT 0x00000080 #define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 #define GL_BUFFER_UPDATE_BARRIER_BIT 0x00000200 #define GL_FRAMEBUFFER_BARRIER_BIT 0x00000400 #define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800 #define GL_ATOMIC_COUNTER_BARRIER_BIT 0x00001000 #define GL_ALL_BARRIER_BITS 0xFFFFFFFF #define GL_MAX_IMAGE_UNITS 0x8F38 #define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 #define GL_IMAGE_BINDING_NAME 0x8F3A #define GL_IMAGE_BINDING_LEVEL 0x8F3B #define GL_IMAGE_BINDING_LAYERED 0x8F3C #define GL_IMAGE_BINDING_LAYER 0x8F3D #define GL_IMAGE_BINDING_ACCESS 0x8F3E #define GL_IMAGE_1D 0x904C #define GL_IMAGE_2D 0x904D #define GL_IMAGE_3D 0x904E #define GL_IMAGE_2D_RECT 0x904F #define GL_IMAGE_CUBE 0x9050 #define GL_IMAGE_BUFFER 0x9051 #define GL_IMAGE_1D_ARRAY 0x9052 #define GL_IMAGE_2D_ARRAY 0x9053 #define GL_IMAGE_CUBE_MAP_ARRAY 0x9054 #define GL_IMAGE_2D_MULTISAMPLE 0x9055 #define GL_IMAGE_2D_MULTISAMPLE_ARRAY 0x9056 #define GL_INT_IMAGE_1D 0x9057 #define GL_INT_IMAGE_2D 0x9058 #define GL_INT_IMAGE_3D 0x9059 #define GL_INT_IMAGE_2D_RECT 0x905A #define GL_INT_IMAGE_CUBE 0x905B #define GL_INT_IMAGE_BUFFER 0x905C #define GL_INT_IMAGE_1D_ARRAY 0x905D #define GL_INT_IMAGE_2D_ARRAY 0x905E #define GL_INT_IMAGE_CUBE_MAP_ARRAY 0x905F #define GL_INT_IMAGE_2D_MULTISAMPLE 0x9060 #define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x9061 #define GL_UNSIGNED_INT_IMAGE_1D 0x9062 #define GL_UNSIGNED_INT_IMAGE_2D 0x9063 #define GL_UNSIGNED_INT_IMAGE_3D 0x9064 #define GL_UNSIGNED_INT_IMAGE_2D_RECT 0x9065 #define GL_UNSIGNED_INT_IMAGE_CUBE 0x9066 #define GL_UNSIGNED_INT_IMAGE_BUFFER 0x9067 #define GL_UNSIGNED_INT_IMAGE_1D_ARRAY 0x9068 #define GL_UNSIGNED_INT_IMAGE_2D_ARRAY 0x9069 #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE 0x906B #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY 0x906C #define GL_MAX_IMAGE_SAMPLES 0x906D #define GL_IMAGE_BINDING_FORMAT 0x906E #define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7 #define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8 #define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9 #define GL_MAX_VERTEX_IMAGE_UNIFORMS 0x90CA #define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB #define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC #define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD #define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE #define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF #ifndef GLEE_H_DEFINED_glBindImageTexture #define GLEE_H_DEFINED_glBindImageTexture typedef void (APIENTRYP GLEEPFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); GLEE_EXTERN GLEEPFNGLBINDIMAGETEXTUREPROC GLeeFuncPtr_glBindImageTexture; #define glBindImageTexture GLeeFuncPtr_glBindImageTexture #endif #ifndef GLEE_H_DEFINED_glMemoryBarrier #define GLEE_H_DEFINED_glMemoryBarrier typedef void (APIENTRYP GLEEPFNGLMEMORYBARRIERPROC) (GLbitfield barriers); GLEE_EXTERN GLEEPFNGLMEMORYBARRIERPROC GLeeFuncPtr_glMemoryBarrier; #define glMemoryBarrier GLeeFuncPtr_glMemoryBarrier #endif #endif /* GL_ARB_shading_language_packing */ #ifndef GL_ARB_shading_language_packing #define GL_ARB_shading_language_packing 1 #define __GLEE_GL_ARB_shading_language_packing 1 /* Constants */ #endif /* GL_ARB_texture_storage */ #ifndef GL_ARB_texture_storage #define GL_ARB_texture_storage 1 #define __GLEE_GL_ARB_texture_storage 1 /* Constants */ #define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F #ifndef GLEE_H_DEFINED_glTexStorage1D #define GLEE_H_DEFINED_glTexStorage1D typedef void (APIENTRYP GLEEPFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); GLEE_EXTERN GLEEPFNGLTEXSTORAGE1DPROC GLeeFuncPtr_glTexStorage1D; #define glTexStorage1D GLeeFuncPtr_glTexStorage1D #endif #ifndef GLEE_H_DEFINED_glTexStorage2D #define GLEE_H_DEFINED_glTexStorage2D typedef void (APIENTRYP GLEEPFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLTEXSTORAGE2DPROC GLeeFuncPtr_glTexStorage2D; #define glTexStorage2D GLeeFuncPtr_glTexStorage2D #endif #ifndef GLEE_H_DEFINED_glTexStorage3D #define GLEE_H_DEFINED_glTexStorage3D typedef void (APIENTRYP GLEEPFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); GLEE_EXTERN GLEEPFNGLTEXSTORAGE3DPROC GLeeFuncPtr_glTexStorage3D; #define glTexStorage3D GLeeFuncPtr_glTexStorage3D #endif #ifndef GLEE_H_DEFINED_glTextureStorage1DEXT #define GLEE_H_DEFINED_glTextureStorage1DEXT typedef void (APIENTRYP GLEEPFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); GLEE_EXTERN GLEEPFNGLTEXTURESTORAGE1DEXTPROC GLeeFuncPtr_glTextureStorage1DEXT; #define glTextureStorage1DEXT GLeeFuncPtr_glTextureStorage1DEXT #endif #ifndef GLEE_H_DEFINED_glTextureStorage2DEXT #define GLEE_H_DEFINED_glTextureStorage2DEXT typedef void (APIENTRYP GLEEPFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLTEXTURESTORAGE2DEXTPROC GLeeFuncPtr_glTextureStorage2DEXT; #define glTextureStorage2DEXT GLeeFuncPtr_glTextureStorage2DEXT #endif #ifndef GLEE_H_DEFINED_glTextureStorage3DEXT #define GLEE_H_DEFINED_glTextureStorage3DEXT typedef void (APIENTRYP GLEEPFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); GLEE_EXTERN GLEEPFNGLTEXTURESTORAGE3DEXTPROC GLeeFuncPtr_glTextureStorage3DEXT; #define glTextureStorage3DEXT GLeeFuncPtr_glTextureStorage3DEXT #endif #endif /* GL_KHR_texture_compression_astc_ldr */ #ifndef GL_KHR_texture_compression_astc_ldr #define GL_KHR_texture_compression_astc_ldr 1 #define __GLEE_GL_KHR_texture_compression_astc_ldr 1 /* Constants */ #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 #define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 #define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 #define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 #define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 #define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 #define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 #define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 #define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 #define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 #define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA #define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB #define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC #define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD #endif /* GL_KHR_debug */ #ifndef GL_KHR_debug #define GL_KHR_debug 1 #define __GLEE_GL_KHR_debug 1 /* Constants */ #define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 #define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 #define GL_DEBUG_CALLBACK_FUNCTION 0x8244 #define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 #define GL_DEBUG_SOURCE_API 0x8246 #define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 #define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 #define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 #define GL_DEBUG_SOURCE_APPLICATION 0x824A #define GL_DEBUG_SOURCE_OTHER 0x824B #define GL_DEBUG_TYPE_ERROR 0x824C #define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D #define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E #define GL_DEBUG_TYPE_PORTABILITY 0x824F #define GL_DEBUG_TYPE_PERFORMANCE 0x8250 #define GL_DEBUG_TYPE_OTHER 0x8251 #define GL_DEBUG_TYPE_MARKER 0x8268 #define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 #define GL_DEBUG_TYPE_POP_GROUP 0x826A #define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B #define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C #define GL_DEBUG_GROUP_STACK_DEPTH 0x826D #define GL_BUFFER 0x82E0 #define GL_SHADER 0x82E1 #define GL_PROGRAM 0x82E2 #define GL_QUERY 0x82E3 #define GL_PROGRAM_PIPELINE 0x82E4 #define GL_SAMPLER 0x82E6 #define GL_DISPLAY_LIST 0x82E7 #define GL_MAX_LABEL_LENGTH 0x82E8 #define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 #define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 #define GL_DEBUG_LOGGED_MESSAGES 0x9145 #define GL_DEBUG_SEVERITY_HIGH 0x9146 #define GL_DEBUG_SEVERITY_MEDIUM 0x9147 #define GL_DEBUG_SEVERITY_LOW 0x9148 #define GL_DEBUG_OUTPUT 0x92E0 #define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 #ifndef GLEE_H_DEFINED_glDebugMessageControl #define GLEE_H_DEFINED_glDebugMessageControl typedef void (APIENTRYP GLEEPFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); GLEE_EXTERN GLEEPFNGLDEBUGMESSAGECONTROLPROC GLeeFuncPtr_glDebugMessageControl; #define glDebugMessageControl GLeeFuncPtr_glDebugMessageControl #endif #ifndef GLEE_H_DEFINED_glDebugMessageInsert #define GLEE_H_DEFINED_glDebugMessageInsert typedef void (APIENTRYP GLEEPFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); GLEE_EXTERN GLEEPFNGLDEBUGMESSAGEINSERTPROC GLeeFuncPtr_glDebugMessageInsert; #define glDebugMessageInsert GLeeFuncPtr_glDebugMessageInsert #endif #ifndef GLEE_H_DEFINED_glDebugMessageCallback #define GLEE_H_DEFINED_glDebugMessageCallback typedef void (APIENTRYP GLEEPFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void * userParam); GLEE_EXTERN GLEEPFNGLDEBUGMESSAGECALLBACKPROC GLeeFuncPtr_glDebugMessageCallback; #define glDebugMessageCallback GLeeFuncPtr_glDebugMessageCallback #endif #ifndef GLEE_H_DEFINED_glGetDebugMessageLog #define GLEE_H_DEFINED_glGetDebugMessageLog typedef GLuint (APIENTRYP GLEEPFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); GLEE_EXTERN GLEEPFNGLGETDEBUGMESSAGELOGPROC GLeeFuncPtr_glGetDebugMessageLog; #define glGetDebugMessageLog GLeeFuncPtr_glGetDebugMessageLog #endif #ifndef GLEE_H_DEFINED_glPushDebugGroup #define GLEE_H_DEFINED_glPushDebugGroup typedef void (APIENTRYP GLEEPFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar * message); GLEE_EXTERN GLEEPFNGLPUSHDEBUGGROUPPROC GLeeFuncPtr_glPushDebugGroup; #define glPushDebugGroup GLeeFuncPtr_glPushDebugGroup #endif #ifndef GLEE_H_DEFINED_glPopDebugGroup #define GLEE_H_DEFINED_glPopDebugGroup typedef void (APIENTRYP GLEEPFNGLPOPDEBUGGROUPPROC) (); GLEE_EXTERN GLEEPFNGLPOPDEBUGGROUPPROC GLeeFuncPtr_glPopDebugGroup; #define glPopDebugGroup GLeeFuncPtr_glPopDebugGroup #endif #ifndef GLEE_H_DEFINED_glObjectLabel #define GLEE_H_DEFINED_glObjectLabel typedef void (APIENTRYP GLEEPFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar * label); GLEE_EXTERN GLEEPFNGLOBJECTLABELPROC GLeeFuncPtr_glObjectLabel; #define glObjectLabel GLeeFuncPtr_glObjectLabel #endif #ifndef GLEE_H_DEFINED_glGetObjectLabel #define GLEE_H_DEFINED_glGetObjectLabel typedef void (APIENTRYP GLEEPFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label); GLEE_EXTERN GLEEPFNGLGETOBJECTLABELPROC GLeeFuncPtr_glGetObjectLabel; #define glGetObjectLabel GLeeFuncPtr_glGetObjectLabel #endif #ifndef GLEE_H_DEFINED_glObjectPtrLabel #define GLEE_H_DEFINED_glObjectPtrLabel typedef void (APIENTRYP GLEEPFNGLOBJECTPTRLABELPROC) (const void * ptr, GLsizei length, const GLchar * label); GLEE_EXTERN GLEEPFNGLOBJECTPTRLABELPROC GLeeFuncPtr_glObjectPtrLabel; #define glObjectPtrLabel GLeeFuncPtr_glObjectPtrLabel #endif #ifndef GLEE_H_DEFINED_glGetObjectPtrLabel #define GLEE_H_DEFINED_glGetObjectPtrLabel typedef void (APIENTRYP GLEEPFNGLGETOBJECTPTRLABELPROC) (const void * ptr, GLsizei bufSize, GLsizei * length, GLchar * label); GLEE_EXTERN GLEEPFNGLGETOBJECTPTRLABELPROC GLeeFuncPtr_glGetObjectPtrLabel; #define glGetObjectPtrLabel GLeeFuncPtr_glGetObjectPtrLabel #endif #endif /* GL_ARB_arrays_of_arrays */ #ifndef GL_ARB_arrays_of_arrays #define GL_ARB_arrays_of_arrays 1 #define __GLEE_GL_ARB_arrays_of_arrays 1 /* Constants */ #endif /* GL_ARB_clear_buffer_object */ #ifndef GL_ARB_clear_buffer_object #define GL_ARB_clear_buffer_object 1 #define __GLEE_GL_ARB_clear_buffer_object 1 /* Constants */ #ifndef GLEE_H_DEFINED_glClearBufferData #define GLEE_H_DEFINED_glClearBufferData typedef void (APIENTRYP GLEEPFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void * data); GLEE_EXTERN GLEEPFNGLCLEARBUFFERDATAPROC GLeeFuncPtr_glClearBufferData; #define glClearBufferData GLeeFuncPtr_glClearBufferData #endif #ifndef GLEE_H_DEFINED_glClearBufferSubData #define GLEE_H_DEFINED_glClearBufferSubData typedef void (APIENTRYP GLEEPFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void * data); GLEE_EXTERN GLEEPFNGLCLEARBUFFERSUBDATAPROC GLeeFuncPtr_glClearBufferSubData; #define glClearBufferSubData GLeeFuncPtr_glClearBufferSubData #endif #ifndef GLEE_H_DEFINED_glClearNamedBufferDataEXT #define GLEE_H_DEFINED_glClearNamedBufferDataEXT typedef void (APIENTRYP GLEEPFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void * data); GLEE_EXTERN GLEEPFNGLCLEARNAMEDBUFFERDATAEXTPROC GLeeFuncPtr_glClearNamedBufferDataEXT; #define glClearNamedBufferDataEXT GLeeFuncPtr_glClearNamedBufferDataEXT #endif #ifndef GLEE_H_DEFINED_glClearNamedBufferSubDataEXT #define GLEE_H_DEFINED_glClearNamedBufferSubDataEXT typedef void (APIENTRYP GLEEPFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void * data); GLEE_EXTERN GLEEPFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC GLeeFuncPtr_glClearNamedBufferSubDataEXT; #define glClearNamedBufferSubDataEXT GLeeFuncPtr_glClearNamedBufferSubDataEXT #endif #endif /* GL_ARB_compute_shader */ #ifndef GL_ARB_compute_shader #define GL_ARB_compute_shader 1 #define __GLEE_GL_ARB_compute_shader 1 /* Constants */ #define GL_COMPUTE_SHADER 0x91B9 #define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB #define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC #define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD #define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262 #define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263 #define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264 #define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265 #define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266 #define GL_MAX_COMPUTE_LOCAL_INVOCATIONS 0x90EB #define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE #define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF #define GL_COMPUTE_LOCAL_WORK_SIZE 0x8267 #define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC #define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED #define GL_DISPATCH_INDIRECT_BUFFER 0x90EE #define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF #define GL_COMPUTE_SHADER_BIT 0x00000020 #ifndef GLEE_H_DEFINED_glDispatchCompute #define GLEE_H_DEFINED_glDispatchCompute typedef void (APIENTRYP GLEEPFNGLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); GLEE_EXTERN GLEEPFNGLDISPATCHCOMPUTEPROC GLeeFuncPtr_glDispatchCompute; #define glDispatchCompute GLeeFuncPtr_glDispatchCompute #endif #ifndef GLEE_H_DEFINED_glDispatchComputeIndirect #define GLEE_H_DEFINED_glDispatchComputeIndirect typedef void (APIENTRYP GLEEPFNGLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect); GLEE_EXTERN GLEEPFNGLDISPATCHCOMPUTEINDIRECTPROC GLeeFuncPtr_glDispatchComputeIndirect; #define glDispatchComputeIndirect GLeeFuncPtr_glDispatchComputeIndirect #endif #endif /* GL_ARB_copy_image */ #ifndef GL_ARB_copy_image #define GL_ARB_copy_image 1 #define __GLEE_GL_ARB_copy_image 1 /* Constants */ #ifndef GLEE_H_DEFINED_glCopyImageSubData #define GLEE_H_DEFINED_glCopyImageSubData typedef void (APIENTRYP GLEEPFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth); GLEE_EXTERN GLEEPFNGLCOPYIMAGESUBDATAPROC GLeeFuncPtr_glCopyImageSubData; #define glCopyImageSubData GLeeFuncPtr_glCopyImageSubData #endif #endif /* GL_ARB_texture_view */ #ifndef GL_ARB_texture_view #define GL_ARB_texture_view 1 #define __GLEE_GL_ARB_texture_view 1 /* Constants */ #define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB #define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC #define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD #define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE #define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF #ifndef GLEE_H_DEFINED_glTextureView #define GLEE_H_DEFINED_glTextureView typedef void (APIENTRYP GLEEPFNGLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); GLEE_EXTERN GLEEPFNGLTEXTUREVIEWPROC GLeeFuncPtr_glTextureView; #define glTextureView GLeeFuncPtr_glTextureView #endif #endif /* GL_ARB_vertex_attrib_binding */ #ifndef GL_ARB_vertex_attrib_binding #define GL_ARB_vertex_attrib_binding 1 #define __GLEE_GL_ARB_vertex_attrib_binding 1 /* Constants */ #define GL_VERTEX_ATTRIB_BINDING 0x82D4 #define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5 #define GL_VERTEX_BINDING_DIVISOR 0x82D6 #define GL_VERTEX_BINDING_OFFSET 0x82D7 #define GL_VERTEX_BINDING_STRIDE 0x82D8 #define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 #define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA #ifndef GLEE_H_DEFINED_glBindVertexBuffer #define GLEE_H_DEFINED_glBindVertexBuffer typedef void (APIENTRYP GLEEPFNGLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); GLEE_EXTERN GLEEPFNGLBINDVERTEXBUFFERPROC GLeeFuncPtr_glBindVertexBuffer; #define glBindVertexBuffer GLeeFuncPtr_glBindVertexBuffer #endif #ifndef GLEE_H_DEFINED_glVertexAttribFormat #define GLEE_H_DEFINED_glVertexAttribFormat typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBFORMATPROC GLeeFuncPtr_glVertexAttribFormat; #define glVertexAttribFormat GLeeFuncPtr_glVertexAttribFormat #endif #ifndef GLEE_H_DEFINED_glVertexAttribIFormat #define GLEE_H_DEFINED_glVertexAttribIFormat typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBIFORMATPROC GLeeFuncPtr_glVertexAttribIFormat; #define glVertexAttribIFormat GLeeFuncPtr_glVertexAttribIFormat #endif #ifndef GLEE_H_DEFINED_glVertexAttribLFormat #define GLEE_H_DEFINED_glVertexAttribLFormat typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBLFORMATPROC GLeeFuncPtr_glVertexAttribLFormat; #define glVertexAttribLFormat GLeeFuncPtr_glVertexAttribLFormat #endif #ifndef GLEE_H_DEFINED_glVertexAttribBinding #define GLEE_H_DEFINED_glVertexAttribBinding typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBBINDINGPROC GLeeFuncPtr_glVertexAttribBinding; #define glVertexAttribBinding GLeeFuncPtr_glVertexAttribBinding #endif #ifndef GLEE_H_DEFINED_glVertexBindingDivisor #define GLEE_H_DEFINED_glVertexBindingDivisor typedef void (APIENTRYP GLEEPFNGLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor); GLEE_EXTERN GLEEPFNGLVERTEXBINDINGDIVISORPROC GLeeFuncPtr_glVertexBindingDivisor; #define glVertexBindingDivisor GLeeFuncPtr_glVertexBindingDivisor #endif #ifndef GLEE_H_DEFINED_glVertexArrayBindVertexBufferEXT #define GLEE_H_DEFINED_glVertexArrayBindVertexBufferEXT typedef void (APIENTRYP GLEEPFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); GLEE_EXTERN GLEEPFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC GLeeFuncPtr_glVertexArrayBindVertexBufferEXT; #define glVertexArrayBindVertexBufferEXT GLeeFuncPtr_glVertexArrayBindVertexBufferEXT #endif #ifndef GLEE_H_DEFINED_glVertexArrayVertexAttribFormatEXT #define GLEE_H_DEFINED_glVertexArrayVertexAttribFormatEXT typedef void (APIENTRYP GLEEPFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); GLEE_EXTERN GLEEPFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC GLeeFuncPtr_glVertexArrayVertexAttribFormatEXT; #define glVertexArrayVertexAttribFormatEXT GLeeFuncPtr_glVertexArrayVertexAttribFormatEXT #endif #ifndef GLEE_H_DEFINED_glVertexArrayVertexAttribIFormatEXT #define GLEE_H_DEFINED_glVertexArrayVertexAttribIFormatEXT typedef void (APIENTRYP GLEEPFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); GLEE_EXTERN GLEEPFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC GLeeFuncPtr_glVertexArrayVertexAttribIFormatEXT; #define glVertexArrayVertexAttribIFormatEXT GLeeFuncPtr_glVertexArrayVertexAttribIFormatEXT #endif #ifndef GLEE_H_DEFINED_glVertexArrayVertexAttribLFormatEXT #define GLEE_H_DEFINED_glVertexArrayVertexAttribLFormatEXT typedef void (APIENTRYP GLEEPFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); GLEE_EXTERN GLEEPFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC GLeeFuncPtr_glVertexArrayVertexAttribLFormatEXT; #define glVertexArrayVertexAttribLFormatEXT GLeeFuncPtr_glVertexArrayVertexAttribLFormatEXT #endif #ifndef GLEE_H_DEFINED_glVertexArrayVertexAttribBindingEXT #define GLEE_H_DEFINED_glVertexArrayVertexAttribBindingEXT typedef void (APIENTRYP GLEEPFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex); GLEE_EXTERN GLEEPFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC GLeeFuncPtr_glVertexArrayVertexAttribBindingEXT; #define glVertexArrayVertexAttribBindingEXT GLeeFuncPtr_glVertexArrayVertexAttribBindingEXT #endif #ifndef GLEE_H_DEFINED_glVertexArrayVertexBindingDivisorEXT #define GLEE_H_DEFINED_glVertexArrayVertexBindingDivisorEXT typedef void (APIENTRYP GLEEPFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor); GLEE_EXTERN GLEEPFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC GLeeFuncPtr_glVertexArrayVertexBindingDivisorEXT; #define glVertexArrayVertexBindingDivisorEXT GLeeFuncPtr_glVertexArrayVertexBindingDivisorEXT #endif #endif /* GL_ARB_robustness_isolation */ #ifndef GL_ARB_robustness_isolation #define GL_ARB_robustness_isolation 1 #define __GLEE_GL_ARB_robustness_isolation 1 /* Constants */ #endif /* GL_ARB_ES3_compatibility */ #ifndef GL_ARB_ES3_compatibility #define GL_ARB_ES3_compatibility 1 #define __GLEE_GL_ARB_ES3_compatibility 1 /* Constants */ #define GL_COMPRESSED_RGB8_ETC2 0x9274 #define GL_COMPRESSED_SRGB8_ETC2 0x9275 #define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276 #define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277 #define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278 #define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279 #define GL_COMPRESSED_R11_EAC 0x9270 #define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 #define GL_COMPRESSED_RG11_EAC 0x9272 #define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 #define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69 #define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A #define GL_MAX_ELEMENT_INDEX 0x8D6B #endif /* GL_ARB_explicit_uniform_location */ #ifndef GL_ARB_explicit_uniform_location #define GL_ARB_explicit_uniform_location 1 #define __GLEE_GL_ARB_explicit_uniform_location 1 /* Constants */ #define GL_MAX_UNIFORM_LOCATIONS 0x826E #endif /* GL_ARB_fragment_layer_viewport */ #ifndef GL_ARB_fragment_layer_viewport #define GL_ARB_fragment_layer_viewport 1 #define __GLEE_GL_ARB_fragment_layer_viewport 1 /* Constants */ #endif /* GL_ARB_framebuffer_no_attachments */ #ifndef GL_ARB_framebuffer_no_attachments #define GL_ARB_framebuffer_no_attachments 1 #define __GLEE_GL_ARB_framebuffer_no_attachments 1 /* Constants */ #define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310 #define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311 #define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312 #define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313 #define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314 #define GL_MAX_FRAMEBUFFER_WIDTH 0x9315 #define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316 #define GL_MAX_FRAMEBUFFER_LAYERS 0x9317 #define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318 #ifndef GLEE_H_DEFINED_glFramebufferParameteri #define GLEE_H_DEFINED_glFramebufferParameteri typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERPARAMETERIPROC GLeeFuncPtr_glFramebufferParameteri; #define glFramebufferParameteri GLeeFuncPtr_glFramebufferParameteri #endif #ifndef GLEE_H_DEFINED_glGetFramebufferParameteriv #define GLEE_H_DEFINED_glGetFramebufferParameteriv typedef void (APIENTRYP GLEEPFNGLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETFRAMEBUFFERPARAMETERIVPROC GLeeFuncPtr_glGetFramebufferParameteriv; #define glGetFramebufferParameteriv GLeeFuncPtr_glGetFramebufferParameteriv #endif #ifndef GLEE_H_DEFINED_glNamedFramebufferParameteriEXT #define GLEE_H_DEFINED_glNamedFramebufferParameteriEXT typedef void (APIENTRYP GLEEPFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC GLeeFuncPtr_glNamedFramebufferParameteriEXT; #define glNamedFramebufferParameteriEXT GLeeFuncPtr_glNamedFramebufferParameteriEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedFramebufferParameterivEXT #define GLEE_H_DEFINED_glGetNamedFramebufferParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC GLeeFuncPtr_glGetNamedFramebufferParameterivEXT; #define glGetNamedFramebufferParameterivEXT GLeeFuncPtr_glGetNamedFramebufferParameterivEXT #endif #endif /* GL_ARB_internalformat_query2 */ #ifndef GL_ARB_internalformat_query2 #define GL_ARB_internalformat_query2 1 #define __GLEE_GL_ARB_internalformat_query2 1 /* Constants */ #define GL_INTERNALFORMAT_SUPPORTED 0x826F #define GL_INTERNALFORMAT_PREFERRED 0x8270 #define GL_INTERNALFORMAT_RED_SIZE 0x8271 #define GL_INTERNALFORMAT_GREEN_SIZE 0x8272 #define GL_INTERNALFORMAT_BLUE_SIZE 0x8273 #define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274 #define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275 #define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276 #define GL_INTERNALFORMAT_SHARED_SIZE 0x8277 #define GL_INTERNALFORMAT_RED_TYPE 0x8278 #define GL_INTERNALFORMAT_GREEN_TYPE 0x8279 #define GL_INTERNALFORMAT_BLUE_TYPE 0x827A #define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B #define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C #define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D #define GL_MAX_WIDTH 0x827E #define GL_MAX_HEIGHT 0x827F #define GL_MAX_DEPTH 0x8280 #define GL_MAX_LAYERS 0x8281 #define GL_MAX_COMBINED_DIMENSIONS 0x8282 #define GL_COLOR_COMPONENTS 0x8283 #define GL_DEPTH_COMPONENTS 0x8284 #define GL_STENCIL_COMPONENTS 0x8285 #define GL_COLOR_RENDERABLE 0x8286 #define GL_DEPTH_RENDERABLE 0x8287 #define GL_STENCIL_RENDERABLE 0x8288 #define GL_FRAMEBUFFER_RENDERABLE 0x8289 #define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A #define GL_FRAMEBUFFER_BLEND 0x828B #define GL_READ_PIXELS 0x828C #define GL_READ_PIXELS_FORMAT 0x828D #define GL_READ_PIXELS_TYPE 0x828E #define GL_TEXTURE_IMAGE_FORMAT 0x828F #define GL_TEXTURE_IMAGE_TYPE 0x8290 #define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291 #define GL_GET_TEXTURE_IMAGE_TYPE 0x8292 #define GL_MIPMAP 0x8293 #define GL_MANUAL_GENERATE_MIPMAP 0x8294 #define GL_AUTO_GENERATE_MIPMAP 0x8295 #define GL_COLOR_ENCODING 0x8296 #define GL_SRGB_READ 0x8297 #define GL_SRGB_WRITE 0x8298 #define GL_SRGB_DECODE_ARB 0x8299 #define GL_FILTER 0x829A #define GL_VERTEX_TEXTURE 0x829B #define GL_TESS_CONTROL_TEXTURE 0x829C #define GL_TESS_EVALUATION_TEXTURE 0x829D #define GL_GEOMETRY_TEXTURE 0x829E #define GL_FRAGMENT_TEXTURE 0x829F #define GL_COMPUTE_TEXTURE 0x82A0 #define GL_TEXTURE_SHADOW 0x82A1 #define GL_TEXTURE_GATHER 0x82A2 #define GL_TEXTURE_GATHER_SHADOW 0x82A3 #define GL_SHADER_IMAGE_LOAD 0x82A4 #define GL_SHADER_IMAGE_STORE 0x82A5 #define GL_SHADER_IMAGE_ATOMIC 0x82A6 #define GL_IMAGE_TEXEL_SIZE 0x82A7 #define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8 #define GL_IMAGE_PIXEL_FORMAT 0x82A9 #define GL_IMAGE_PIXEL_TYPE 0x82AA #define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC #define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD #define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE #define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF #define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1 #define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2 #define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3 #define GL_CLEAR_BUFFER 0x82B4 #define GL_TEXTURE_VIEW 0x82B5 #define GL_VIEW_COMPATIBILITY_CLASS 0x82B6 #define GL_FULL_SUPPORT 0x82B7 #define GL_CAVEAT_SUPPORT 0x82B8 #define GL_IMAGE_CLASS_4_X_32 0x82B9 #define GL_IMAGE_CLASS_2_X_32 0x82BA #define GL_IMAGE_CLASS_1_X_32 0x82BB #define GL_IMAGE_CLASS_4_X_16 0x82BC #define GL_IMAGE_CLASS_2_X_16 0x82BD #define GL_IMAGE_CLASS_1_X_16 0x82BE #define GL_IMAGE_CLASS_4_X_8 0x82BF #define GL_IMAGE_CLASS_2_X_8 0x82C0 #define GL_IMAGE_CLASS_1_X_8 0x82C1 #define GL_IMAGE_CLASS_11_11_10 0x82C2 #define GL_IMAGE_CLASS_10_10_10_2 0x82C3 #define GL_VIEW_CLASS_128_BITS 0x82C4 #define GL_VIEW_CLASS_96_BITS 0x82C5 #define GL_VIEW_CLASS_64_BITS 0x82C6 #define GL_VIEW_CLASS_48_BITS 0x82C7 #define GL_VIEW_CLASS_32_BITS 0x82C8 #define GL_VIEW_CLASS_24_BITS 0x82C9 #define GL_VIEW_CLASS_16_BITS 0x82CA #define GL_VIEW_CLASS_8_BITS 0x82CB #define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC #define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD #define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE #define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF #define GL_VIEW_CLASS_RGTC1_RED 0x82D0 #define GL_VIEW_CLASS_RGTC2_RG 0x82D1 #define GL_VIEW_CLASS_BPTC_UNORM 0x82D2 #define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3 #ifndef GLEE_H_DEFINED_glGetInternalformati64v #define GLEE_H_DEFINED_glGetInternalformati64v typedef void (APIENTRYP GLEEPFNGLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 * params); GLEE_EXTERN GLEEPFNGLGETINTERNALFORMATI64VPROC GLeeFuncPtr_glGetInternalformati64v; #define glGetInternalformati64v GLeeFuncPtr_glGetInternalformati64v #endif #endif /* GL_ARB_invalidate_subdata */ #ifndef GL_ARB_invalidate_subdata #define GL_ARB_invalidate_subdata 1 #define __GLEE_GL_ARB_invalidate_subdata 1 /* Constants */ #ifndef GLEE_H_DEFINED_glInvalidateTexSubImage #define GLEE_H_DEFINED_glInvalidateTexSubImage typedef void (APIENTRYP GLEEPFNGLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); GLEE_EXTERN GLEEPFNGLINVALIDATETEXSUBIMAGEPROC GLeeFuncPtr_glInvalidateTexSubImage; #define glInvalidateTexSubImage GLeeFuncPtr_glInvalidateTexSubImage #endif #ifndef GLEE_H_DEFINED_glInvalidateTexImage #define GLEE_H_DEFINED_glInvalidateTexImage typedef void (APIENTRYP GLEEPFNGLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLINVALIDATETEXIMAGEPROC GLeeFuncPtr_glInvalidateTexImage; #define glInvalidateTexImage GLeeFuncPtr_glInvalidateTexImage #endif #ifndef GLEE_H_DEFINED_glInvalidateBufferSubData #define GLEE_H_DEFINED_glInvalidateBufferSubData typedef void (APIENTRYP GLEEPFNGLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); GLEE_EXTERN GLEEPFNGLINVALIDATEBUFFERSUBDATAPROC GLeeFuncPtr_glInvalidateBufferSubData; #define glInvalidateBufferSubData GLeeFuncPtr_glInvalidateBufferSubData #endif #ifndef GLEE_H_DEFINED_glInvalidateBufferData #define GLEE_H_DEFINED_glInvalidateBufferData typedef void (APIENTRYP GLEEPFNGLINVALIDATEBUFFERDATAPROC) (GLuint buffer); GLEE_EXTERN GLEEPFNGLINVALIDATEBUFFERDATAPROC GLeeFuncPtr_glInvalidateBufferData; #define glInvalidateBufferData GLeeFuncPtr_glInvalidateBufferData #endif #ifndef GLEE_H_DEFINED_glInvalidateFramebuffer #define GLEE_H_DEFINED_glInvalidateFramebuffer typedef void (APIENTRYP GLEEPFNGLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum * attachments); GLEE_EXTERN GLEEPFNGLINVALIDATEFRAMEBUFFERPROC GLeeFuncPtr_glInvalidateFramebuffer; #define glInvalidateFramebuffer GLeeFuncPtr_glInvalidateFramebuffer #endif #ifndef GLEE_H_DEFINED_glInvalidateSubFramebuffer #define GLEE_H_DEFINED_glInvalidateSubFramebuffer typedef void (APIENTRYP GLEEPFNGLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLINVALIDATESUBFRAMEBUFFERPROC GLeeFuncPtr_glInvalidateSubFramebuffer; #define glInvalidateSubFramebuffer GLeeFuncPtr_glInvalidateSubFramebuffer #endif #endif /* GL_ARB_multi_draw_indirect */ #ifndef GL_ARB_multi_draw_indirect #define GL_ARB_multi_draw_indirect 1 #define __GLEE_GL_ARB_multi_draw_indirect 1 /* Constants */ #ifndef GLEE_H_DEFINED_glMultiDrawArraysIndirect #define GLEE_H_DEFINED_glMultiDrawArraysIndirect typedef void (APIENTRYP GLEEPFNGLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride); GLEE_EXTERN GLEEPFNGLMULTIDRAWARRAYSINDIRECTPROC GLeeFuncPtr_glMultiDrawArraysIndirect; #define glMultiDrawArraysIndirect GLeeFuncPtr_glMultiDrawArraysIndirect #endif #ifndef GLEE_H_DEFINED_glMultiDrawElementsIndirect #define GLEE_H_DEFINED_glMultiDrawElementsIndirect typedef void (APIENTRYP GLEEPFNGLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void * indirect, GLsizei drawcount, GLsizei stride); GLEE_EXTERN GLEEPFNGLMULTIDRAWELEMENTSINDIRECTPROC GLeeFuncPtr_glMultiDrawElementsIndirect; #define glMultiDrawElementsIndirect GLeeFuncPtr_glMultiDrawElementsIndirect #endif #endif /* GL_ARB_program_interface_query */ #ifndef GL_ARB_program_interface_query #define GL_ARB_program_interface_query 1 #define __GLEE_GL_ARB_program_interface_query 1 /* Constants */ #define GL_UNIFORM 0x92E1 #define GL_UNIFORM_BLOCK 0x92E2 #define GL_PROGRAM_INPUT 0x92E3 #define GL_PROGRAM_OUTPUT 0x92E4 #define GL_BUFFER_VARIABLE 0x92E5 #define GL_SHADER_STORAGE_BLOCK 0x92E6 #define GL_VERTEX_SUBROUTINE 0x92E8 #define GL_TESS_CONTROL_SUBROUTINE 0x92E9 #define GL_TESS_EVALUATION_SUBROUTINE 0x92EA #define GL_GEOMETRY_SUBROUTINE 0x92EB #define GL_FRAGMENT_SUBROUTINE 0x92EC #define GL_COMPUTE_SUBROUTINE 0x92ED #define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE #define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF #define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0 #define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1 #define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2 #define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3 #define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4 #define GL_ACTIVE_RESOURCES 0x92F5 #define GL_MAX_NAME_LENGTH 0x92F6 #define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7 #define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8 #define GL_NAME_LENGTH 0x92F9 #define GL_TYPE 0x92FA #define GL_ARRAY_SIZE 0x92FB #define GL_OFFSET 0x92FC #define GL_BLOCK_INDEX 0x92FD #define GL_ARRAY_STRIDE 0x92FE #define GL_MATRIX_STRIDE 0x92FF #define GL_IS_ROW_MAJOR 0x9300 #define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301 #define GL_BUFFER_BINDING 0x9302 #define GL_BUFFER_DATA_SIZE 0x9303 #define GL_NUM_ACTIVE_VARIABLES 0x9304 #define GL_ACTIVE_VARIABLES 0x9305 #define GL_REFERENCED_BY_VERTEX_SHADER 0x9306 #define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307 #define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308 #define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309 #define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A #define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B #define GL_TOP_LEVEL_ARRAY_SIZE 0x930C #define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D #define GL_LOCATION 0x930E #define GL_LOCATION_INDEX 0x930F #define GL_IS_PER_PATCH 0x92E7 #ifndef GLEE_H_DEFINED_glGetProgramInterfaceiv #define GLEE_H_DEFINED_glGetProgramInterfaceiv typedef void (APIENTRYP GLEEPFNGLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMINTERFACEIVPROC GLeeFuncPtr_glGetProgramInterfaceiv; #define glGetProgramInterfaceiv GLeeFuncPtr_glGetProgramInterfaceiv #endif #ifndef GLEE_H_DEFINED_glGetProgramResourceIndex #define GLEE_H_DEFINED_glGetProgramResourceIndex typedef GLuint (APIENTRYP GLEEPFNGLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETPROGRAMRESOURCEINDEXPROC GLeeFuncPtr_glGetProgramResourceIndex; #define glGetProgramResourceIndex GLeeFuncPtr_glGetProgramResourceIndex #endif #ifndef GLEE_H_DEFINED_glGetProgramResourceName #define GLEE_H_DEFINED_glGetProgramResourceName typedef void (APIENTRYP GLEEPFNGLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei * length, GLchar * name); GLEE_EXTERN GLEEPFNGLGETPROGRAMRESOURCENAMEPROC GLeeFuncPtr_glGetProgramResourceName; #define glGetProgramResourceName GLeeFuncPtr_glGetProgramResourceName #endif #ifndef GLEE_H_DEFINED_glGetProgramResourceiv #define GLEE_H_DEFINED_glGetProgramResourceiv typedef void (APIENTRYP GLEEPFNGLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum * props, GLsizei bufSize, GLsizei * length, GLint * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMRESOURCEIVPROC GLeeFuncPtr_glGetProgramResourceiv; #define glGetProgramResourceiv GLeeFuncPtr_glGetProgramResourceiv #endif #ifndef GLEE_H_DEFINED_glGetProgramResourceLocation #define GLEE_H_DEFINED_glGetProgramResourceLocation typedef GLint (APIENTRYP GLEEPFNGLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETPROGRAMRESOURCELOCATIONPROC GLeeFuncPtr_glGetProgramResourceLocation; #define glGetProgramResourceLocation GLeeFuncPtr_glGetProgramResourceLocation #endif #ifndef GLEE_H_DEFINED_glGetProgramResourceLocationIndex #define GLEE_H_DEFINED_glGetProgramResourceLocationIndex typedef GLint (APIENTRYP GLEEPFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC GLeeFuncPtr_glGetProgramResourceLocationIndex; #define glGetProgramResourceLocationIndex GLeeFuncPtr_glGetProgramResourceLocationIndex #endif #endif /* GL_ARB_robust_buffer_access_behavior */ #ifndef GL_ARB_robust_buffer_access_behavior #define GL_ARB_robust_buffer_access_behavior 1 #define __GLEE_GL_ARB_robust_buffer_access_behavior 1 /* Constants */ #endif /* GL_ARB_shader_image_size */ #ifndef GL_ARB_shader_image_size #define GL_ARB_shader_image_size 1 #define __GLEE_GL_ARB_shader_image_size 1 /* Constants */ #endif /* GL_ARB_shader_storage_buffer_object */ #ifndef GL_ARB_shader_storage_buffer_object #define GL_ARB_shader_storage_buffer_object 1 #define __GLEE_GL_ARB_shader_storage_buffer_object 1 /* Constants */ #define GL_SHADER_STORAGE_BUFFER 0x90D2 #define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3 #define GL_SHADER_STORAGE_BUFFER_START 0x90D4 #define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5 #define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6 #define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7 #define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8 #define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9 #define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA #define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB #define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC #define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD #define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE #define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF #define GL_SHADER_STORAGE_BARRIER_BIT 0x2000 #define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS #ifndef GLEE_H_DEFINED_glShaderStorageBlockBinding #define GLEE_H_DEFINED_glShaderStorageBlockBinding typedef void (APIENTRYP GLEEPFNGLSHADERSTORAGEBLOCKBINDINGPROC) (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding); GLEE_EXTERN GLEEPFNGLSHADERSTORAGEBLOCKBINDINGPROC GLeeFuncPtr_glShaderStorageBlockBinding; #define glShaderStorageBlockBinding GLeeFuncPtr_glShaderStorageBlockBinding #endif #endif /* GL_ARB_stencil_texturing */ #ifndef GL_ARB_stencil_texturing #define GL_ARB_stencil_texturing 1 #define __GLEE_GL_ARB_stencil_texturing 1 /* Constants */ #define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA #endif /* GL_ARB_texture_buffer_range */ #ifndef GL_ARB_texture_buffer_range #define GL_ARB_texture_buffer_range 1 #define __GLEE_GL_ARB_texture_buffer_range 1 /* Constants */ #define GL_TEXTURE_BUFFER_OFFSET 0x919D #define GL_TEXTURE_BUFFER_SIZE 0x919E #define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F #ifndef GLEE_H_DEFINED_glTexBufferRange #define GLEE_H_DEFINED_glTexBufferRange typedef void (APIENTRYP GLEEPFNGLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); GLEE_EXTERN GLEEPFNGLTEXBUFFERRANGEPROC GLeeFuncPtr_glTexBufferRange; #define glTexBufferRange GLeeFuncPtr_glTexBufferRange #endif #ifndef GLEE_H_DEFINED_glTextureBufferRangeEXT #define GLEE_H_DEFINED_glTextureBufferRangeEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREBUFFERRANGEEXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); GLEE_EXTERN GLEEPFNGLTEXTUREBUFFERRANGEEXTPROC GLeeFuncPtr_glTextureBufferRangeEXT; #define glTextureBufferRangeEXT GLeeFuncPtr_glTextureBufferRangeEXT #endif #endif /* GL_ARB_texture_query_levels */ #ifndef GL_ARB_texture_query_levels #define GL_ARB_texture_query_levels 1 #define __GLEE_GL_ARB_texture_query_levels 1 /* Constants */ #endif /* GL_ARB_texture_storage_multisample */ #ifndef GL_ARB_texture_storage_multisample #define GL_ARB_texture_storage_multisample 1 #define __GLEE_GL_ARB_texture_storage_multisample 1 /* Constants */ #ifndef GLEE_H_DEFINED_glTexStorage2DMultisample #define GLEE_H_DEFINED_glTexStorage2DMultisample typedef void (APIENTRYP GLEEPFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); GLEE_EXTERN GLEEPFNGLTEXSTORAGE2DMULTISAMPLEPROC GLeeFuncPtr_glTexStorage2DMultisample; #define glTexStorage2DMultisample GLeeFuncPtr_glTexStorage2DMultisample #endif #ifndef GLEE_H_DEFINED_glTexStorage3DMultisample #define GLEE_H_DEFINED_glTexStorage3DMultisample typedef void (APIENTRYP GLEEPFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); GLEE_EXTERN GLEEPFNGLTEXSTORAGE3DMULTISAMPLEPROC GLeeFuncPtr_glTexStorage3DMultisample; #define glTexStorage3DMultisample GLeeFuncPtr_glTexStorage3DMultisample #endif #ifndef GLEE_H_DEFINED_glTextureStorage2DMultisampleEXT #define GLEE_H_DEFINED_glTextureStorage2DMultisampleEXT typedef void (APIENTRYP GLEEPFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); GLEE_EXTERN GLEEPFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC GLeeFuncPtr_glTextureStorage2DMultisampleEXT; #define glTextureStorage2DMultisampleEXT GLeeFuncPtr_glTextureStorage2DMultisampleEXT #endif #ifndef GLEE_H_DEFINED_glTextureStorage3DMultisampleEXT #define GLEE_H_DEFINED_glTextureStorage3DMultisampleEXT typedef void (APIENTRYP GLEEPFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) (GLuint texture, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); GLEE_EXTERN GLEEPFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC GLeeFuncPtr_glTextureStorage3DMultisampleEXT; #define glTextureStorage3DMultisampleEXT GLeeFuncPtr_glTextureStorage3DMultisampleEXT #endif #endif /* GL_EXT_abgr */ #ifndef GL_EXT_abgr #define GL_EXT_abgr 1 #define __GLEE_GL_EXT_abgr 1 /* Constants */ #define GL_ABGR_EXT 0x8000 #endif /* GL_EXT_blend_color */ #ifndef GL_EXT_blend_color #define GL_EXT_blend_color 1 #define __GLEE_GL_EXT_blend_color 1 /* Constants */ #define GL_CONSTANT_COLOR_EXT 0x8001 #define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 #define GL_CONSTANT_ALPHA_EXT 0x8003 #define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 #define GL_BLEND_COLOR_EXT 0x8005 #ifndef GLEE_H_DEFINED_glBlendColorEXT #define GLEE_H_DEFINED_glBlendColorEXT typedef void (APIENTRYP GLEEPFNGLBLENDCOLOREXTPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); GLEE_EXTERN GLEEPFNGLBLENDCOLOREXTPROC GLeeFuncPtr_glBlendColorEXT; #define glBlendColorEXT GLeeFuncPtr_glBlendColorEXT #endif #endif /* GL_EXT_polygon_offset */ #ifndef GL_EXT_polygon_offset #define GL_EXT_polygon_offset 1 #define __GLEE_GL_EXT_polygon_offset 1 /* Constants */ #define GL_POLYGON_OFFSET_EXT 0x8037 #define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 #define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 #ifndef GLEE_H_DEFINED_glPolygonOffsetEXT #define GLEE_H_DEFINED_glPolygonOffsetEXT typedef void (APIENTRYP GLEEPFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); GLEE_EXTERN GLEEPFNGLPOLYGONOFFSETEXTPROC GLeeFuncPtr_glPolygonOffsetEXT; #define glPolygonOffsetEXT GLeeFuncPtr_glPolygonOffsetEXT #endif #endif /* GL_EXT_texture */ #ifndef GL_EXT_texture #define GL_EXT_texture 1 #define __GLEE_GL_EXT_texture 1 /* Constants */ #define GL_ALPHA4_EXT 0x803B #define GL_ALPHA8_EXT 0x803C #define GL_ALPHA12_EXT 0x803D #define GL_ALPHA16_EXT 0x803E #define GL_LUMINANCE4_EXT 0x803F #define GL_LUMINANCE8_EXT 0x8040 #define GL_LUMINANCE12_EXT 0x8041 #define GL_LUMINANCE16_EXT 0x8042 #define GL_LUMINANCE4_ALPHA4_EXT 0x8043 #define GL_LUMINANCE6_ALPHA2_EXT 0x8044 #define GL_LUMINANCE8_ALPHA8_EXT 0x8045 #define GL_LUMINANCE12_ALPHA4_EXT 0x8046 #define GL_LUMINANCE12_ALPHA12_EXT 0x8047 #define GL_LUMINANCE16_ALPHA16_EXT 0x8048 #define GL_INTENSITY_EXT 0x8049 #define GL_INTENSITY4_EXT 0x804A #define GL_INTENSITY8_EXT 0x804B #define GL_INTENSITY12_EXT 0x804C #define GL_INTENSITY16_EXT 0x804D #define GL_RGB2_EXT 0x804E #define GL_RGB4_EXT 0x804F #define GL_RGB5_EXT 0x8050 #define GL_RGB8_EXT 0x8051 #define GL_RGB10_EXT 0x8052 #define GL_RGB12_EXT 0x8053 #define GL_RGB16_EXT 0x8054 #define GL_RGBA2_EXT 0x8055 #define GL_RGBA4_EXT 0x8056 #define GL_RGB5_A1_EXT 0x8057 #define GL_RGBA8_EXT 0x8058 #define GL_RGB10_A2_EXT 0x8059 #define GL_RGBA12_EXT 0x805A #define GL_RGBA16_EXT 0x805B #define GL_TEXTURE_RED_SIZE_EXT 0x805C #define GL_TEXTURE_GREEN_SIZE_EXT 0x805D #define GL_TEXTURE_BLUE_SIZE_EXT 0x805E #define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F #define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 #define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 #define GL_REPLACE_EXT 0x8062 #define GL_PROXY_TEXTURE_1D_EXT 0x8063 #define GL_PROXY_TEXTURE_2D_EXT 0x8064 #define GL_TEXTURE_TOO_LARGE_EXT 0x8065 #endif /* GL_EXT_texture3D */ #ifndef GL_EXT_texture3D #define GL_EXT_texture3D 1 #define __GLEE_GL_EXT_texture3D 1 /* Constants */ #define GL_PACK_SKIP_IMAGES_EXT 0x806B #define GL_PACK_IMAGE_HEIGHT_EXT 0x806C #define GL_UNPACK_SKIP_IMAGES_EXT 0x806D #define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E #define GL_TEXTURE_3D_EXT 0x806F #define GL_PROXY_TEXTURE_3D_EXT 0x8070 #define GL_TEXTURE_DEPTH_EXT 0x8071 #define GL_TEXTURE_WRAP_R_EXT 0x8072 #define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 #ifndef GLEE_H_DEFINED_glTexImage3DEXT #define GLEE_H_DEFINED_glTexImage3DEXT typedef void (APIENTRYP GLEEPFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXIMAGE3DEXTPROC GLeeFuncPtr_glTexImage3DEXT; #define glTexImage3DEXT GLeeFuncPtr_glTexImage3DEXT #endif #ifndef GLEE_H_DEFINED_glTexSubImage3DEXT #define GLEE_H_DEFINED_glTexSubImage3DEXT typedef void (APIENTRYP GLEEPFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXSUBIMAGE3DEXTPROC GLeeFuncPtr_glTexSubImage3DEXT; #define glTexSubImage3DEXT GLeeFuncPtr_glTexSubImage3DEXT #endif #endif /* GL_SGIS_texture_filter4 */ #ifndef GL_SGIS_texture_filter4 #define GL_SGIS_texture_filter4 1 #define __GLEE_GL_SGIS_texture_filter4 1 /* Constants */ #define GL_FILTER4_SGIS 0x8146 #define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 #ifndef GLEE_H_DEFINED_glGetTexFilterFuncSGIS #define GLEE_H_DEFINED_glGetTexFilterFuncSGIS typedef void (APIENTRYP GLEEPFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat * weights); GLEE_EXTERN GLEEPFNGLGETTEXFILTERFUNCSGISPROC GLeeFuncPtr_glGetTexFilterFuncSGIS; #define glGetTexFilterFuncSGIS GLeeFuncPtr_glGetTexFilterFuncSGIS #endif #ifndef GLEE_H_DEFINED_glTexFilterFuncSGIS #define GLEE_H_DEFINED_glTexFilterFuncSGIS typedef void (APIENTRYP GLEEPFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat * weights); GLEE_EXTERN GLEEPFNGLTEXFILTERFUNCSGISPROC GLeeFuncPtr_glTexFilterFuncSGIS; #define glTexFilterFuncSGIS GLeeFuncPtr_glTexFilterFuncSGIS #endif #endif /* GL_EXT_subtexture */ #ifndef GL_EXT_subtexture #define GL_EXT_subtexture 1 #define __GLEE_GL_EXT_subtexture 1 /* Constants */ #ifndef GLEE_H_DEFINED_glTexSubImage1DEXT #define GLEE_H_DEFINED_glTexSubImage1DEXT typedef void (APIENTRYP GLEEPFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXSUBIMAGE1DEXTPROC GLeeFuncPtr_glTexSubImage1DEXT; #define glTexSubImage1DEXT GLeeFuncPtr_glTexSubImage1DEXT #endif #ifndef GLEE_H_DEFINED_glTexSubImage2DEXT #define GLEE_H_DEFINED_glTexSubImage2DEXT typedef void (APIENTRYP GLEEPFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXSUBIMAGE2DEXTPROC GLeeFuncPtr_glTexSubImage2DEXT; #define glTexSubImage2DEXT GLeeFuncPtr_glTexSubImage2DEXT #endif #endif /* GL_EXT_copy_texture */ #ifndef GL_EXT_copy_texture #define GL_EXT_copy_texture 1 #define __GLEE_GL_EXT_copy_texture 1 /* Constants */ #ifndef GLEE_H_DEFINED_glCopyTexImage1DEXT #define GLEE_H_DEFINED_glCopyTexImage1DEXT typedef void (APIENTRYP GLEEPFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); GLEE_EXTERN GLEEPFNGLCOPYTEXIMAGE1DEXTPROC GLeeFuncPtr_glCopyTexImage1DEXT; #define glCopyTexImage1DEXT GLeeFuncPtr_glCopyTexImage1DEXT #endif #ifndef GLEE_H_DEFINED_glCopyTexImage2DEXT #define GLEE_H_DEFINED_glCopyTexImage2DEXT typedef void (APIENTRYP GLEEPFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); GLEE_EXTERN GLEEPFNGLCOPYTEXIMAGE2DEXTPROC GLeeFuncPtr_glCopyTexImage2DEXT; #define glCopyTexImage2DEXT GLeeFuncPtr_glCopyTexImage2DEXT #endif #ifndef GLEE_H_DEFINED_glCopyTexSubImage1DEXT #define GLEE_H_DEFINED_glCopyTexSubImage1DEXT typedef void (APIENTRYP GLEEPFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); GLEE_EXTERN GLEEPFNGLCOPYTEXSUBIMAGE1DEXTPROC GLeeFuncPtr_glCopyTexSubImage1DEXT; #define glCopyTexSubImage1DEXT GLeeFuncPtr_glCopyTexSubImage1DEXT #endif #ifndef GLEE_H_DEFINED_glCopyTexSubImage2DEXT #define GLEE_H_DEFINED_glCopyTexSubImage2DEXT typedef void (APIENTRYP GLEEPFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLCOPYTEXSUBIMAGE2DEXTPROC GLeeFuncPtr_glCopyTexSubImage2DEXT; #define glCopyTexSubImage2DEXT GLeeFuncPtr_glCopyTexSubImage2DEXT #endif #ifndef GLEE_H_DEFINED_glCopyTexSubImage3DEXT #define GLEE_H_DEFINED_glCopyTexSubImage3DEXT typedef void (APIENTRYP GLEEPFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLCOPYTEXSUBIMAGE3DEXTPROC GLeeFuncPtr_glCopyTexSubImage3DEXT; #define glCopyTexSubImage3DEXT GLeeFuncPtr_glCopyTexSubImage3DEXT #endif #endif /* GL_EXT_histogram */ #ifndef GL_EXT_histogram #define GL_EXT_histogram 1 #define __GLEE_GL_EXT_histogram 1 /* Constants */ #define GL_HISTOGRAM_EXT 0x8024 #define GL_PROXY_HISTOGRAM_EXT 0x8025 #define GL_HISTOGRAM_WIDTH_EXT 0x8026 #define GL_HISTOGRAM_FORMAT_EXT 0x8027 #define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 #define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 #define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A #define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B #define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C #define GL_HISTOGRAM_SINK_EXT 0x802D #define GL_MINMAX_EXT 0x802E #define GL_MINMAX_FORMAT_EXT 0x802F #define GL_MINMAX_SINK_EXT 0x8030 #define GL_TABLE_TOO_LARGE_EXT 0x8031 #ifndef GLEE_H_DEFINED_glGetHistogramEXT #define GLEE_H_DEFINED_glGetHistogramEXT typedef void (APIENTRYP GLEEPFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); GLEE_EXTERN GLEEPFNGLGETHISTOGRAMEXTPROC GLeeFuncPtr_glGetHistogramEXT; #define glGetHistogramEXT GLeeFuncPtr_glGetHistogramEXT #endif #ifndef GLEE_H_DEFINED_glGetHistogramParameterfvEXT #define GLEE_H_DEFINED_glGetHistogramParameterfvEXT typedef void (APIENTRYP GLEEPFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETHISTOGRAMPARAMETERFVEXTPROC GLeeFuncPtr_glGetHistogramParameterfvEXT; #define glGetHistogramParameterfvEXT GLeeFuncPtr_glGetHistogramParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glGetHistogramParameterivEXT #define GLEE_H_DEFINED_glGetHistogramParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETHISTOGRAMPARAMETERIVEXTPROC GLeeFuncPtr_glGetHistogramParameterivEXT; #define glGetHistogramParameterivEXT GLeeFuncPtr_glGetHistogramParameterivEXT #endif #ifndef GLEE_H_DEFINED_glGetMinmaxEXT #define GLEE_H_DEFINED_glGetMinmaxEXT typedef void (APIENTRYP GLEEPFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); GLEE_EXTERN GLEEPFNGLGETMINMAXEXTPROC GLeeFuncPtr_glGetMinmaxEXT; #define glGetMinmaxEXT GLeeFuncPtr_glGetMinmaxEXT #endif #ifndef GLEE_H_DEFINED_glGetMinmaxParameterfvEXT #define GLEE_H_DEFINED_glGetMinmaxParameterfvEXT typedef void (APIENTRYP GLEEPFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETMINMAXPARAMETERFVEXTPROC GLeeFuncPtr_glGetMinmaxParameterfvEXT; #define glGetMinmaxParameterfvEXT GLeeFuncPtr_glGetMinmaxParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glGetMinmaxParameterivEXT #define GLEE_H_DEFINED_glGetMinmaxParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETMINMAXPARAMETERIVEXTPROC GLeeFuncPtr_glGetMinmaxParameterivEXT; #define glGetMinmaxParameterivEXT GLeeFuncPtr_glGetMinmaxParameterivEXT #endif #ifndef GLEE_H_DEFINED_glHistogramEXT #define GLEE_H_DEFINED_glHistogramEXT typedef void (APIENTRYP GLEEPFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); GLEE_EXTERN GLEEPFNGLHISTOGRAMEXTPROC GLeeFuncPtr_glHistogramEXT; #define glHistogramEXT GLeeFuncPtr_glHistogramEXT #endif #ifndef GLEE_H_DEFINED_glMinmaxEXT #define GLEE_H_DEFINED_glMinmaxEXT typedef void (APIENTRYP GLEEPFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); GLEE_EXTERN GLEEPFNGLMINMAXEXTPROC GLeeFuncPtr_glMinmaxEXT; #define glMinmaxEXT GLeeFuncPtr_glMinmaxEXT #endif #ifndef GLEE_H_DEFINED_glResetHistogramEXT #define GLEE_H_DEFINED_glResetHistogramEXT typedef void (APIENTRYP GLEEPFNGLRESETHISTOGRAMEXTPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLRESETHISTOGRAMEXTPROC GLeeFuncPtr_glResetHistogramEXT; #define glResetHistogramEXT GLeeFuncPtr_glResetHistogramEXT #endif #ifndef GLEE_H_DEFINED_glResetMinmaxEXT #define GLEE_H_DEFINED_glResetMinmaxEXT typedef void (APIENTRYP GLEEPFNGLRESETMINMAXEXTPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLRESETMINMAXEXTPROC GLeeFuncPtr_glResetMinmaxEXT; #define glResetMinmaxEXT GLeeFuncPtr_glResetMinmaxEXT #endif #endif /* GL_EXT_convolution */ #ifndef GL_EXT_convolution #define GL_EXT_convolution 1 #define __GLEE_GL_EXT_convolution 1 /* Constants */ #define GL_CONVOLUTION_1D_EXT 0x8010 #define GL_CONVOLUTION_2D_EXT 0x8011 #define GL_SEPARABLE_2D_EXT 0x8012 #define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 #define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 #define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 #define GL_REDUCE_EXT 0x8016 #define GL_CONVOLUTION_FORMAT_EXT 0x8017 #define GL_CONVOLUTION_WIDTH_EXT 0x8018 #define GL_CONVOLUTION_HEIGHT_EXT 0x8019 #define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A #define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B #define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C #define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D #define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E #define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F #define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 #define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 #define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 #define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 #ifndef GLEE_H_DEFINED_glConvolutionFilter1DEXT #define GLEE_H_DEFINED_glConvolutionFilter1DEXT typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image); GLEE_EXTERN GLEEPFNGLCONVOLUTIONFILTER1DEXTPROC GLeeFuncPtr_glConvolutionFilter1DEXT; #define glConvolutionFilter1DEXT GLeeFuncPtr_glConvolutionFilter1DEXT #endif #ifndef GLEE_H_DEFINED_glConvolutionFilter2DEXT #define GLEE_H_DEFINED_glConvolutionFilter2DEXT typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image); GLEE_EXTERN GLEEPFNGLCONVOLUTIONFILTER2DEXTPROC GLeeFuncPtr_glConvolutionFilter2DEXT; #define glConvolutionFilter2DEXT GLeeFuncPtr_glConvolutionFilter2DEXT #endif #ifndef GLEE_H_DEFINED_glConvolutionParameterfEXT #define GLEE_H_DEFINED_glConvolutionParameterfEXT typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); GLEE_EXTERN GLEEPFNGLCONVOLUTIONPARAMETERFEXTPROC GLeeFuncPtr_glConvolutionParameterfEXT; #define glConvolutionParameterfEXT GLeeFuncPtr_glConvolutionParameterfEXT #endif #ifndef GLEE_H_DEFINED_glConvolutionParameterfvEXT #define GLEE_H_DEFINED_glConvolutionParameterfvEXT typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLCONVOLUTIONPARAMETERFVEXTPROC GLeeFuncPtr_glConvolutionParameterfvEXT; #define glConvolutionParameterfvEXT GLeeFuncPtr_glConvolutionParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glConvolutionParameteriEXT #define GLEE_H_DEFINED_glConvolutionParameteriEXT typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); GLEE_EXTERN GLEEPFNGLCONVOLUTIONPARAMETERIEXTPROC GLeeFuncPtr_glConvolutionParameteriEXT; #define glConvolutionParameteriEXT GLeeFuncPtr_glConvolutionParameteriEXT #endif #ifndef GLEE_H_DEFINED_glConvolutionParameterivEXT #define GLEE_H_DEFINED_glConvolutionParameterivEXT typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLCONVOLUTIONPARAMETERIVEXTPROC GLeeFuncPtr_glConvolutionParameterivEXT; #define glConvolutionParameterivEXT GLeeFuncPtr_glConvolutionParameterivEXT #endif #ifndef GLEE_H_DEFINED_glCopyConvolutionFilter1DEXT #define GLEE_H_DEFINED_glCopyConvolutionFilter1DEXT typedef void (APIENTRYP GLEEPFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); GLEE_EXTERN GLEEPFNGLCOPYCONVOLUTIONFILTER1DEXTPROC GLeeFuncPtr_glCopyConvolutionFilter1DEXT; #define glCopyConvolutionFilter1DEXT GLeeFuncPtr_glCopyConvolutionFilter1DEXT #endif #ifndef GLEE_H_DEFINED_glCopyConvolutionFilter2DEXT #define GLEE_H_DEFINED_glCopyConvolutionFilter2DEXT typedef void (APIENTRYP GLEEPFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLCOPYCONVOLUTIONFILTER2DEXTPROC GLeeFuncPtr_glCopyConvolutionFilter2DEXT; #define glCopyConvolutionFilter2DEXT GLeeFuncPtr_glCopyConvolutionFilter2DEXT #endif #ifndef GLEE_H_DEFINED_glGetConvolutionFilterEXT #define GLEE_H_DEFINED_glGetConvolutionFilterEXT typedef void (APIENTRYP GLEEPFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid * image); GLEE_EXTERN GLEEPFNGLGETCONVOLUTIONFILTEREXTPROC GLeeFuncPtr_glGetConvolutionFilterEXT; #define glGetConvolutionFilterEXT GLeeFuncPtr_glGetConvolutionFilterEXT #endif #ifndef GLEE_H_DEFINED_glGetConvolutionParameterfvEXT #define GLEE_H_DEFINED_glGetConvolutionParameterfvEXT typedef void (APIENTRYP GLEEPFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETCONVOLUTIONPARAMETERFVEXTPROC GLeeFuncPtr_glGetConvolutionParameterfvEXT; #define glGetConvolutionParameterfvEXT GLeeFuncPtr_glGetConvolutionParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glGetConvolutionParameterivEXT #define GLEE_H_DEFINED_glGetConvolutionParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETCONVOLUTIONPARAMETERIVEXTPROC GLeeFuncPtr_glGetConvolutionParameterivEXT; #define glGetConvolutionParameterivEXT GLeeFuncPtr_glGetConvolutionParameterivEXT #endif #ifndef GLEE_H_DEFINED_glGetSeparableFilterEXT #define GLEE_H_DEFINED_glGetSeparableFilterEXT typedef void (APIENTRYP GLEEPFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span); GLEE_EXTERN GLEEPFNGLGETSEPARABLEFILTEREXTPROC GLeeFuncPtr_glGetSeparableFilterEXT; #define glGetSeparableFilterEXT GLeeFuncPtr_glGetSeparableFilterEXT #endif #ifndef GLEE_H_DEFINED_glSeparableFilter2DEXT #define GLEE_H_DEFINED_glSeparableFilter2DEXT typedef void (APIENTRYP GLEEPFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column); GLEE_EXTERN GLEEPFNGLSEPARABLEFILTER2DEXTPROC GLeeFuncPtr_glSeparableFilter2DEXT; #define glSeparableFilter2DEXT GLeeFuncPtr_glSeparableFilter2DEXT #endif #endif /* GL_SGI_color_matrix */ #ifndef GL_SGI_color_matrix #define GL_SGI_color_matrix 1 #define __GLEE_GL_SGI_color_matrix 1 /* Constants */ #define GL_COLOR_MATRIX_SGI 0x80B1 #define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 #define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 #define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 #define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 #define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 #define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 #define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 #define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 #define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA #define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB #endif /* GL_SGI_color_table */ #ifndef GL_SGI_color_table #define GL_SGI_color_table 1 #define __GLEE_GL_SGI_color_table 1 /* Constants */ #define GL_COLOR_TABLE_SGI 0x80D0 #define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 #define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 #define GL_PROXY_COLOR_TABLE_SGI 0x80D3 #define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 #define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 #define GL_COLOR_TABLE_SCALE_SGI 0x80D6 #define GL_COLOR_TABLE_BIAS_SGI 0x80D7 #define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 #define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 #define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA #define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB #define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC #define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD #define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE #define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF #ifndef GLEE_H_DEFINED_glColorTableSGI #define GLEE_H_DEFINED_glColorTableSGI typedef void (APIENTRYP GLEEPFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table); GLEE_EXTERN GLEEPFNGLCOLORTABLESGIPROC GLeeFuncPtr_glColorTableSGI; #define glColorTableSGI GLeeFuncPtr_glColorTableSGI #endif #ifndef GLEE_H_DEFINED_glColorTableParameterfvSGI #define GLEE_H_DEFINED_glColorTableParameterfvSGI typedef void (APIENTRYP GLEEPFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLCOLORTABLEPARAMETERFVSGIPROC GLeeFuncPtr_glColorTableParameterfvSGI; #define glColorTableParameterfvSGI GLeeFuncPtr_glColorTableParameterfvSGI #endif #ifndef GLEE_H_DEFINED_glColorTableParameterivSGI #define GLEE_H_DEFINED_glColorTableParameterivSGI typedef void (APIENTRYP GLEEPFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLCOLORTABLEPARAMETERIVSGIPROC GLeeFuncPtr_glColorTableParameterivSGI; #define glColorTableParameterivSGI GLeeFuncPtr_glColorTableParameterivSGI #endif #ifndef GLEE_H_DEFINED_glCopyColorTableSGI #define GLEE_H_DEFINED_glCopyColorTableSGI typedef void (APIENTRYP GLEEPFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); GLEE_EXTERN GLEEPFNGLCOPYCOLORTABLESGIPROC GLeeFuncPtr_glCopyColorTableSGI; #define glCopyColorTableSGI GLeeFuncPtr_glCopyColorTableSGI #endif #ifndef GLEE_H_DEFINED_glGetColorTableSGI #define GLEE_H_DEFINED_glGetColorTableSGI typedef void (APIENTRYP GLEEPFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid * table); GLEE_EXTERN GLEEPFNGLGETCOLORTABLESGIPROC GLeeFuncPtr_glGetColorTableSGI; #define glGetColorTableSGI GLeeFuncPtr_glGetColorTableSGI #endif #ifndef GLEE_H_DEFINED_glGetColorTableParameterfvSGI #define GLEE_H_DEFINED_glGetColorTableParameterfvSGI typedef void (APIENTRYP GLEEPFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETCOLORTABLEPARAMETERFVSGIPROC GLeeFuncPtr_glGetColorTableParameterfvSGI; #define glGetColorTableParameterfvSGI GLeeFuncPtr_glGetColorTableParameterfvSGI #endif #ifndef GLEE_H_DEFINED_glGetColorTableParameterivSGI #define GLEE_H_DEFINED_glGetColorTableParameterivSGI typedef void (APIENTRYP GLEEPFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETCOLORTABLEPARAMETERIVSGIPROC GLeeFuncPtr_glGetColorTableParameterivSGI; #define glGetColorTableParameterivSGI GLeeFuncPtr_glGetColorTableParameterivSGI #endif #endif /* GL_SGIS_pixel_texture */ #ifndef GL_SGIS_pixel_texture #define GL_SGIS_pixel_texture 1 #define __GLEE_GL_SGIS_pixel_texture 1 /* Constants */ #define GL_PIXEL_TEXTURE_SGIS 0x8353 #define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 #define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 #define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 #ifndef GLEE_H_DEFINED_glPixelTexGenParameteriSGIS #define GLEE_H_DEFINED_glPixelTexGenParameteriSGIS typedef void (APIENTRYP GLEEPFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLPIXELTEXGENPARAMETERISGISPROC GLeeFuncPtr_glPixelTexGenParameteriSGIS; #define glPixelTexGenParameteriSGIS GLeeFuncPtr_glPixelTexGenParameteriSGIS #endif #ifndef GLEE_H_DEFINED_glPixelTexGenParameterivSGIS #define GLEE_H_DEFINED_glPixelTexGenParameterivSGIS typedef void (APIENTRYP GLEEPFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLPIXELTEXGENPARAMETERIVSGISPROC GLeeFuncPtr_glPixelTexGenParameterivSGIS; #define glPixelTexGenParameterivSGIS GLeeFuncPtr_glPixelTexGenParameterivSGIS #endif #ifndef GLEE_H_DEFINED_glPixelTexGenParameterfSGIS #define GLEE_H_DEFINED_glPixelTexGenParameterfSGIS typedef void (APIENTRYP GLEEPFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLPIXELTEXGENPARAMETERFSGISPROC GLeeFuncPtr_glPixelTexGenParameterfSGIS; #define glPixelTexGenParameterfSGIS GLeeFuncPtr_glPixelTexGenParameterfSGIS #endif #ifndef GLEE_H_DEFINED_glPixelTexGenParameterfvSGIS #define GLEE_H_DEFINED_glPixelTexGenParameterfvSGIS typedef void (APIENTRYP GLEEPFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPIXELTEXGENPARAMETERFVSGISPROC GLeeFuncPtr_glPixelTexGenParameterfvSGIS; #define glPixelTexGenParameterfvSGIS GLeeFuncPtr_glPixelTexGenParameterfvSGIS #endif #ifndef GLEE_H_DEFINED_glGetPixelTexGenParameterivSGIS #define GLEE_H_DEFINED_glGetPixelTexGenParameterivSGIS typedef void (APIENTRYP GLEEPFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETPIXELTEXGENPARAMETERIVSGISPROC GLeeFuncPtr_glGetPixelTexGenParameterivSGIS; #define glGetPixelTexGenParameterivSGIS GLeeFuncPtr_glGetPixelTexGenParameterivSGIS #endif #ifndef GLEE_H_DEFINED_glGetPixelTexGenParameterfvSGIS #define GLEE_H_DEFINED_glGetPixelTexGenParameterfvSGIS typedef void (APIENTRYP GLEEPFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETPIXELTEXGENPARAMETERFVSGISPROC GLeeFuncPtr_glGetPixelTexGenParameterfvSGIS; #define glGetPixelTexGenParameterfvSGIS GLeeFuncPtr_glGetPixelTexGenParameterfvSGIS #endif #endif /* GL_SGIX_pixel_texture */ #ifndef GL_SGIX_pixel_texture #define GL_SGIX_pixel_texture 1 #define __GLEE_GL_SGIX_pixel_texture 1 /* Constants */ #define GL_PIXEL_TEX_GEN_SGIX 0x8139 #define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B #ifndef GLEE_H_DEFINED_glPixelTexGenSGIX #define GLEE_H_DEFINED_glPixelTexGenSGIX typedef void (APIENTRYP GLEEPFNGLPIXELTEXGENSGIXPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLPIXELTEXGENSGIXPROC GLeeFuncPtr_glPixelTexGenSGIX; #define glPixelTexGenSGIX GLeeFuncPtr_glPixelTexGenSGIX #endif #endif /* GL_SGIS_texture4D */ #ifndef GL_SGIS_texture4D #define GL_SGIS_texture4D 1 #define __GLEE_GL_SGIS_texture4D 1 /* Constants */ #define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 #define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 #define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 #define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 #define GL_TEXTURE_4D_SGIS 0x8134 #define GL_PROXY_TEXTURE_4D_SGIS 0x8135 #define GL_TEXTURE_4DSIZE_SGIS 0x8136 #define GL_TEXTURE_WRAP_Q_SGIS 0x8137 #define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 #define GL_TEXTURE_4D_BINDING_SGIS 0x814F #ifndef GLEE_H_DEFINED_glTexImage4DSGIS #define GLEE_H_DEFINED_glTexImage4DSGIS typedef void (APIENTRYP GLEEPFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXIMAGE4DSGISPROC GLeeFuncPtr_glTexImage4DSGIS; #define glTexImage4DSGIS GLeeFuncPtr_glTexImage4DSGIS #endif #ifndef GLEE_H_DEFINED_glTexSubImage4DSGIS #define GLEE_H_DEFINED_glTexSubImage4DSGIS typedef void (APIENTRYP GLEEPFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXSUBIMAGE4DSGISPROC GLeeFuncPtr_glTexSubImage4DSGIS; #define glTexSubImage4DSGIS GLeeFuncPtr_glTexSubImage4DSGIS #endif #endif /* GL_SGI_texture_color_table */ #ifndef GL_SGI_texture_color_table #define GL_SGI_texture_color_table 1 #define __GLEE_GL_SGI_texture_color_table 1 /* Constants */ #define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC #define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD #endif /* GL_EXT_cmyka */ #ifndef GL_EXT_cmyka #define GL_EXT_cmyka 1 #define __GLEE_GL_EXT_cmyka 1 /* Constants */ #define GL_CMYK_EXT 0x800C #define GL_CMYKA_EXT 0x800D #define GL_PACK_CMYK_HINT_EXT 0x800E #define GL_UNPACK_CMYK_HINT_EXT 0x800F #endif /* GL_EXT_texture_object */ #ifndef GL_EXT_texture_object #define GL_EXT_texture_object 1 #define __GLEE_GL_EXT_texture_object 1 /* Constants */ #define GL_TEXTURE_PRIORITY_EXT 0x8066 #define GL_TEXTURE_RESIDENT_EXT 0x8067 #define GL_TEXTURE_1D_BINDING_EXT 0x8068 #define GL_TEXTURE_2D_BINDING_EXT 0x8069 #define GL_TEXTURE_3D_BINDING_EXT 0x806A #ifndef GLEE_H_DEFINED_glAreTexturesResidentEXT #define GLEE_H_DEFINED_glAreTexturesResidentEXT typedef GLboolean (APIENTRYP GLEEPFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint * textures, GLboolean * residences); GLEE_EXTERN GLEEPFNGLARETEXTURESRESIDENTEXTPROC GLeeFuncPtr_glAreTexturesResidentEXT; #define glAreTexturesResidentEXT GLeeFuncPtr_glAreTexturesResidentEXT #endif #ifndef GLEE_H_DEFINED_glBindTextureEXT #define GLEE_H_DEFINED_glBindTextureEXT typedef void (APIENTRYP GLEEPFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); GLEE_EXTERN GLEEPFNGLBINDTEXTUREEXTPROC GLeeFuncPtr_glBindTextureEXT; #define glBindTextureEXT GLeeFuncPtr_glBindTextureEXT #endif #ifndef GLEE_H_DEFINED_glDeleteTexturesEXT #define GLEE_H_DEFINED_glDeleteTexturesEXT typedef void (APIENTRYP GLEEPFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint * textures); GLEE_EXTERN GLEEPFNGLDELETETEXTURESEXTPROC GLeeFuncPtr_glDeleteTexturesEXT; #define glDeleteTexturesEXT GLeeFuncPtr_glDeleteTexturesEXT #endif #ifndef GLEE_H_DEFINED_glGenTexturesEXT #define GLEE_H_DEFINED_glGenTexturesEXT typedef void (APIENTRYP GLEEPFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint * textures); GLEE_EXTERN GLEEPFNGLGENTEXTURESEXTPROC GLeeFuncPtr_glGenTexturesEXT; #define glGenTexturesEXT GLeeFuncPtr_glGenTexturesEXT #endif #ifndef GLEE_H_DEFINED_glIsTextureEXT #define GLEE_H_DEFINED_glIsTextureEXT typedef GLboolean (APIENTRYP GLEEPFNGLISTEXTUREEXTPROC) (GLuint texture); GLEE_EXTERN GLEEPFNGLISTEXTUREEXTPROC GLeeFuncPtr_glIsTextureEXT; #define glIsTextureEXT GLeeFuncPtr_glIsTextureEXT #endif #ifndef GLEE_H_DEFINED_glPrioritizeTexturesEXT #define GLEE_H_DEFINED_glPrioritizeTexturesEXT typedef void (APIENTRYP GLEEPFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint * textures, const GLclampf * priorities); GLEE_EXTERN GLEEPFNGLPRIORITIZETEXTURESEXTPROC GLeeFuncPtr_glPrioritizeTexturesEXT; #define glPrioritizeTexturesEXT GLeeFuncPtr_glPrioritizeTexturesEXT #endif #endif /* GL_SGIS_detail_texture */ #ifndef GL_SGIS_detail_texture #define GL_SGIS_detail_texture 1 #define __GLEE_GL_SGIS_detail_texture 1 /* Constants */ #define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 #define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 #define GL_LINEAR_DETAIL_SGIS 0x8097 #define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 #define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 #define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A #define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B #define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C #ifndef GLEE_H_DEFINED_glDetailTexFuncSGIS #define GLEE_H_DEFINED_glDetailTexFuncSGIS typedef void (APIENTRYP GLEEPFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat * points); GLEE_EXTERN GLEEPFNGLDETAILTEXFUNCSGISPROC GLeeFuncPtr_glDetailTexFuncSGIS; #define glDetailTexFuncSGIS GLeeFuncPtr_glDetailTexFuncSGIS #endif #ifndef GLEE_H_DEFINED_glGetDetailTexFuncSGIS #define GLEE_H_DEFINED_glGetDetailTexFuncSGIS typedef void (APIENTRYP GLEEPFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat * points); GLEE_EXTERN GLEEPFNGLGETDETAILTEXFUNCSGISPROC GLeeFuncPtr_glGetDetailTexFuncSGIS; #define glGetDetailTexFuncSGIS GLeeFuncPtr_glGetDetailTexFuncSGIS #endif #endif /* GL_SGIS_sharpen_texture */ #ifndef GL_SGIS_sharpen_texture #define GL_SGIS_sharpen_texture 1 #define __GLEE_GL_SGIS_sharpen_texture 1 /* Constants */ #define GL_LINEAR_SHARPEN_SGIS 0x80AD #define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE #define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF #define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 #ifndef GLEE_H_DEFINED_glSharpenTexFuncSGIS #define GLEE_H_DEFINED_glSharpenTexFuncSGIS typedef void (APIENTRYP GLEEPFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat * points); GLEE_EXTERN GLEEPFNGLSHARPENTEXFUNCSGISPROC GLeeFuncPtr_glSharpenTexFuncSGIS; #define glSharpenTexFuncSGIS GLeeFuncPtr_glSharpenTexFuncSGIS #endif #ifndef GLEE_H_DEFINED_glGetSharpenTexFuncSGIS #define GLEE_H_DEFINED_glGetSharpenTexFuncSGIS typedef void (APIENTRYP GLEEPFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat * points); GLEE_EXTERN GLEEPFNGLGETSHARPENTEXFUNCSGISPROC GLeeFuncPtr_glGetSharpenTexFuncSGIS; #define glGetSharpenTexFuncSGIS GLeeFuncPtr_glGetSharpenTexFuncSGIS #endif #endif /* GL_EXT_packed_pixels */ #ifndef GL_EXT_packed_pixels #define GL_EXT_packed_pixels 1 #define __GLEE_GL_EXT_packed_pixels 1 /* Constants */ #define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 #define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 #define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 #define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 #define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 #endif /* GL_SGIS_texture_lod */ #ifndef GL_SGIS_texture_lod #define GL_SGIS_texture_lod 1 #define __GLEE_GL_SGIS_texture_lod 1 /* Constants */ #define GL_TEXTURE_MIN_LOD_SGIS 0x813A #define GL_TEXTURE_MAX_LOD_SGIS 0x813B #define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C #define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D #endif /* GL_SGIS_multisample */ #ifndef GL_SGIS_multisample #define GL_SGIS_multisample 1 #define __GLEE_GL_SGIS_multisample 1 /* Constants */ #define GL_MULTISAMPLE_SGIS 0x809D #define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E #define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F #define GL_SAMPLE_MASK_SGIS 0x80A0 #define GL_1PASS_SGIS 0x80A1 #define GL_2PASS_0_SGIS 0x80A2 #define GL_2PASS_1_SGIS 0x80A3 #define GL_4PASS_0_SGIS 0x80A4 #define GL_4PASS_1_SGIS 0x80A5 #define GL_4PASS_2_SGIS 0x80A6 #define GL_4PASS_3_SGIS 0x80A7 #define GL_SAMPLE_BUFFERS_SGIS 0x80A8 #define GL_SAMPLES_SGIS 0x80A9 #define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA #define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB #define GL_SAMPLE_PATTERN_SGIS 0x80AC #ifndef GLEE_H_DEFINED_glSampleMaskSGIS #define GLEE_H_DEFINED_glSampleMaskSGIS typedef void (APIENTRYP GLEEPFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); GLEE_EXTERN GLEEPFNGLSAMPLEMASKSGISPROC GLeeFuncPtr_glSampleMaskSGIS; #define glSampleMaskSGIS GLeeFuncPtr_glSampleMaskSGIS #endif #ifndef GLEE_H_DEFINED_glSamplePatternSGIS #define GLEE_H_DEFINED_glSamplePatternSGIS typedef void (APIENTRYP GLEEPFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); GLEE_EXTERN GLEEPFNGLSAMPLEPATTERNSGISPROC GLeeFuncPtr_glSamplePatternSGIS; #define glSamplePatternSGIS GLeeFuncPtr_glSamplePatternSGIS #endif #endif /* GL_EXT_rescale_normal */ #ifndef GL_EXT_rescale_normal #define GL_EXT_rescale_normal 1 #define __GLEE_GL_EXT_rescale_normal 1 /* Constants */ #define GL_RESCALE_NORMAL_EXT 0x803A #endif /* GL_EXT_vertex_array */ #ifndef GL_EXT_vertex_array #define GL_EXT_vertex_array 1 #define __GLEE_GL_EXT_vertex_array 1 /* Constants */ #define GL_VERTEX_ARRAY_EXT 0x8074 #define GL_NORMAL_ARRAY_EXT 0x8075 #define GL_COLOR_ARRAY_EXT 0x8076 #define GL_INDEX_ARRAY_EXT 0x8077 #define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 #define GL_EDGE_FLAG_ARRAY_EXT 0x8079 #define GL_VERTEX_ARRAY_SIZE_EXT 0x807A #define GL_VERTEX_ARRAY_TYPE_EXT 0x807B #define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C #define GL_VERTEX_ARRAY_COUNT_EXT 0x807D #define GL_NORMAL_ARRAY_TYPE_EXT 0x807E #define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F #define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 #define GL_COLOR_ARRAY_SIZE_EXT 0x8081 #define GL_COLOR_ARRAY_TYPE_EXT 0x8082 #define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 #define GL_COLOR_ARRAY_COUNT_EXT 0x8084 #define GL_INDEX_ARRAY_TYPE_EXT 0x8085 #define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 #define GL_INDEX_ARRAY_COUNT_EXT 0x8087 #define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 #define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 #define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A #define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B #define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C #define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D #define GL_VERTEX_ARRAY_POINTER_EXT 0x808E #define GL_NORMAL_ARRAY_POINTER_EXT 0x808F #define GL_COLOR_ARRAY_POINTER_EXT 0x8090 #define GL_INDEX_ARRAY_POINTER_EXT 0x8091 #define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 #define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 #ifndef GLEE_H_DEFINED_glArrayElementEXT #define GLEE_H_DEFINED_glArrayElementEXT typedef void (APIENTRYP GLEEPFNGLARRAYELEMENTEXTPROC) (GLint i); GLEE_EXTERN GLEEPFNGLARRAYELEMENTEXTPROC GLeeFuncPtr_glArrayElementEXT; #define glArrayElementEXT GLeeFuncPtr_glArrayElementEXT #endif #ifndef GLEE_H_DEFINED_glColorPointerEXT #define GLEE_H_DEFINED_glColorPointerEXT typedef void (APIENTRYP GLEEPFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLCOLORPOINTEREXTPROC GLeeFuncPtr_glColorPointerEXT; #define glColorPointerEXT GLeeFuncPtr_glColorPointerEXT #endif #ifndef GLEE_H_DEFINED_glDrawArraysEXT #define GLEE_H_DEFINED_glDrawArraysEXT typedef void (APIENTRYP GLEEPFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); GLEE_EXTERN GLEEPFNGLDRAWARRAYSEXTPROC GLeeFuncPtr_glDrawArraysEXT; #define glDrawArraysEXT GLeeFuncPtr_glDrawArraysEXT #endif #ifndef GLEE_H_DEFINED_glEdgeFlagPointerEXT #define GLEE_H_DEFINED_glEdgeFlagPointerEXT typedef void (APIENTRYP GLEEPFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean * pointer); GLEE_EXTERN GLEEPFNGLEDGEFLAGPOINTEREXTPROC GLeeFuncPtr_glEdgeFlagPointerEXT; #define glEdgeFlagPointerEXT GLeeFuncPtr_glEdgeFlagPointerEXT #endif #ifndef GLEE_H_DEFINED_glGetPointervEXT #define GLEE_H_DEFINED_glGetPointervEXT typedef void (APIENTRYP GLEEPFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* * params); GLEE_EXTERN GLEEPFNGLGETPOINTERVEXTPROC GLeeFuncPtr_glGetPointervEXT; #define glGetPointervEXT GLeeFuncPtr_glGetPointervEXT #endif #ifndef GLEE_H_DEFINED_glIndexPointerEXT #define GLEE_H_DEFINED_glIndexPointerEXT typedef void (APIENTRYP GLEEPFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLINDEXPOINTEREXTPROC GLeeFuncPtr_glIndexPointerEXT; #define glIndexPointerEXT GLeeFuncPtr_glIndexPointerEXT #endif #ifndef GLEE_H_DEFINED_glNormalPointerEXT #define GLEE_H_DEFINED_glNormalPointerEXT typedef void (APIENTRYP GLEEPFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLNORMALPOINTEREXTPROC GLeeFuncPtr_glNormalPointerEXT; #define glNormalPointerEXT GLeeFuncPtr_glNormalPointerEXT #endif #ifndef GLEE_H_DEFINED_glTexCoordPointerEXT #define GLEE_H_DEFINED_glTexCoordPointerEXT typedef void (APIENTRYP GLEEPFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLTEXCOORDPOINTEREXTPROC GLeeFuncPtr_glTexCoordPointerEXT; #define glTexCoordPointerEXT GLeeFuncPtr_glTexCoordPointerEXT #endif #ifndef GLEE_H_DEFINED_glVertexPointerEXT #define GLEE_H_DEFINED_glVertexPointerEXT typedef void (APIENTRYP GLEEPFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLVERTEXPOINTEREXTPROC GLeeFuncPtr_glVertexPointerEXT; #define glVertexPointerEXT GLeeFuncPtr_glVertexPointerEXT #endif #endif /* GL_EXT_misc_attribute */ #ifndef GL_EXT_misc_attribute #define GL_EXT_misc_attribute 1 #define __GLEE_GL_EXT_misc_attribute 1 /* Constants */ #endif /* GL_SGIS_generate_mipmap */ #ifndef GL_SGIS_generate_mipmap #define GL_SGIS_generate_mipmap 1 #define __GLEE_GL_SGIS_generate_mipmap 1 /* Constants */ #define GL_GENERATE_MIPMAP_SGIS 0x8191 #define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 #endif /* GL_SGIX_clipmap */ #ifndef GL_SGIX_clipmap #define GL_SGIX_clipmap 1 #define __GLEE_GL_SGIX_clipmap 1 /* Constants */ #define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 #define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 #define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 #define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 #define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 #define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 #define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 #define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 #define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 #define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D #define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E #define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F #endif /* GL_SGIX_shadow */ #ifndef GL_SGIX_shadow #define GL_SGIX_shadow 1 #define __GLEE_GL_SGIX_shadow 1 /* Constants */ #define GL_TEXTURE_COMPARE_SGIX 0x819A #define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B #define GL_TEXTURE_LEQUAL_R_SGIX 0x819C #define GL_TEXTURE_GEQUAL_R_SGIX 0x819D #endif /* GL_SGIS_texture_edge_clamp */ #ifndef GL_SGIS_texture_edge_clamp #define GL_SGIS_texture_edge_clamp 1 #define __GLEE_GL_SGIS_texture_edge_clamp 1 /* Constants */ #define GL_CLAMP_TO_EDGE_SGIS 0x812F #endif /* GL_SGIS_texture_border_clamp */ #ifndef GL_SGIS_texture_border_clamp #define GL_SGIS_texture_border_clamp 1 #define __GLEE_GL_SGIS_texture_border_clamp 1 /* Constants */ #define GL_CLAMP_TO_BORDER_SGIS 0x812D #endif /* GL_EXT_blend_minmax */ #ifndef GL_EXT_blend_minmax #define GL_EXT_blend_minmax 1 #define __GLEE_GL_EXT_blend_minmax 1 /* Constants */ #define GL_FUNC_ADD_EXT 0x8006 #define GL_MIN_EXT 0x8007 #define GL_MAX_EXT 0x8008 #define GL_BLEND_EQUATION_EXT 0x8009 #ifndef GLEE_H_DEFINED_glBlendEquationEXT #define GLEE_H_DEFINED_glBlendEquationEXT typedef void (APIENTRYP GLEEPFNGLBLENDEQUATIONEXTPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLBLENDEQUATIONEXTPROC GLeeFuncPtr_glBlendEquationEXT; #define glBlendEquationEXT GLeeFuncPtr_glBlendEquationEXT #endif #endif /* GL_EXT_blend_subtract */ #ifndef GL_EXT_blend_subtract #define GL_EXT_blend_subtract 1 #define __GLEE_GL_EXT_blend_subtract 1 /* Constants */ #define GL_FUNC_SUBTRACT_EXT 0x800A #define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B #endif /* GL_EXT_blend_logic_op */ #ifndef GL_EXT_blend_logic_op #define GL_EXT_blend_logic_op 1 #define __GLEE_GL_EXT_blend_logic_op 1 /* Constants */ #endif /* GL_SGIX_interlace */ #ifndef GL_SGIX_interlace #define GL_SGIX_interlace 1 #define __GLEE_GL_SGIX_interlace 1 /* Constants */ #define GL_INTERLACE_SGIX 0x8094 #endif /* GL_SGIX_pixel_tiles */ #ifndef GL_SGIX_pixel_tiles #define GL_SGIX_pixel_tiles 1 #define __GLEE_GL_SGIX_pixel_tiles 1 /* Constants */ #define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E #define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F #define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 #define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 #define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 #define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 #define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 #define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 #endif /* GL_SGIS_texture_select */ #ifndef GL_SGIS_texture_select #define GL_SGIS_texture_select 1 #define __GLEE_GL_SGIS_texture_select 1 /* Constants */ #define GL_DUAL_ALPHA4_SGIS 0x8110 #define GL_DUAL_ALPHA8_SGIS 0x8111 #define GL_DUAL_ALPHA12_SGIS 0x8112 #define GL_DUAL_ALPHA16_SGIS 0x8113 #define GL_DUAL_LUMINANCE4_SGIS 0x8114 #define GL_DUAL_LUMINANCE8_SGIS 0x8115 #define GL_DUAL_LUMINANCE12_SGIS 0x8116 #define GL_DUAL_LUMINANCE16_SGIS 0x8117 #define GL_DUAL_INTENSITY4_SGIS 0x8118 #define GL_DUAL_INTENSITY8_SGIS 0x8119 #define GL_DUAL_INTENSITY12_SGIS 0x811A #define GL_DUAL_INTENSITY16_SGIS 0x811B #define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C #define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D #define GL_QUAD_ALPHA4_SGIS 0x811E #define GL_QUAD_ALPHA8_SGIS 0x811F #define GL_QUAD_LUMINANCE4_SGIS 0x8120 #define GL_QUAD_LUMINANCE8_SGIS 0x8121 #define GL_QUAD_INTENSITY4_SGIS 0x8122 #define GL_QUAD_INTENSITY8_SGIS 0x8123 #define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 #define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 #endif /* GL_SGIX_sprite */ #ifndef GL_SGIX_sprite #define GL_SGIX_sprite 1 #define __GLEE_GL_SGIX_sprite 1 /* Constants */ #define GL_SPRITE_SGIX 0x8148 #define GL_SPRITE_MODE_SGIX 0x8149 #define GL_SPRITE_AXIS_SGIX 0x814A #define GL_SPRITE_TRANSLATION_SGIX 0x814B #define GL_SPRITE_AXIAL_SGIX 0x814C #define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D #define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E #ifndef GLEE_H_DEFINED_glSpriteParameterfSGIX #define GLEE_H_DEFINED_glSpriteParameterfSGIX typedef void (APIENTRYP GLEEPFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLSPRITEPARAMETERFSGIXPROC GLeeFuncPtr_glSpriteParameterfSGIX; #define glSpriteParameterfSGIX GLeeFuncPtr_glSpriteParameterfSGIX #endif #ifndef GLEE_H_DEFINED_glSpriteParameterfvSGIX #define GLEE_H_DEFINED_glSpriteParameterfvSGIX typedef void (APIENTRYP GLEEPFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLSPRITEPARAMETERFVSGIXPROC GLeeFuncPtr_glSpriteParameterfvSGIX; #define glSpriteParameterfvSGIX GLeeFuncPtr_glSpriteParameterfvSGIX #endif #ifndef GLEE_H_DEFINED_glSpriteParameteriSGIX #define GLEE_H_DEFINED_glSpriteParameteriSGIX typedef void (APIENTRYP GLEEPFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLSPRITEPARAMETERISGIXPROC GLeeFuncPtr_glSpriteParameteriSGIX; #define glSpriteParameteriSGIX GLeeFuncPtr_glSpriteParameteriSGIX #endif #ifndef GLEE_H_DEFINED_glSpriteParameterivSGIX #define GLEE_H_DEFINED_glSpriteParameterivSGIX typedef void (APIENTRYP GLEEPFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLSPRITEPARAMETERIVSGIXPROC GLeeFuncPtr_glSpriteParameterivSGIX; #define glSpriteParameterivSGIX GLeeFuncPtr_glSpriteParameterivSGIX #endif #endif /* GL_SGIX_texture_multi_buffer */ #ifndef GL_SGIX_texture_multi_buffer #define GL_SGIX_texture_multi_buffer 1 #define __GLEE_GL_SGIX_texture_multi_buffer 1 /* Constants */ #define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E #endif /* GL_EXT_point_parameters */ #ifndef GL_EXT_point_parameters #define GL_EXT_point_parameters 1 #define __GLEE_GL_EXT_point_parameters 1 /* Constants */ #define GL_POINT_SIZE_MIN_EXT 0x8126 #define GL_POINT_SIZE_MAX_EXT 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 #define GL_DISTANCE_ATTENUATION_EXT 0x8129 #ifndef GLEE_H_DEFINED_glPointParameterfEXT #define GLEE_H_DEFINED_glPointParameterfEXT typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERFEXTPROC GLeeFuncPtr_glPointParameterfEXT; #define glPointParameterfEXT GLeeFuncPtr_glPointParameterfEXT #endif #ifndef GLEE_H_DEFINED_glPointParameterfvEXT #define GLEE_H_DEFINED_glPointParameterfvEXT typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERFVEXTPROC GLeeFuncPtr_glPointParameterfvEXT; #define glPointParameterfvEXT GLeeFuncPtr_glPointParameterfvEXT #endif #endif /* GL_SGIS_point_parameters */ #ifndef GL_SGIS_point_parameters #define GL_SGIS_point_parameters 1 #define __GLEE_GL_SGIS_point_parameters 1 /* Constants */ #define GL_POINT_SIZE_MIN_SGIS 0x8126 #define GL_POINT_SIZE_MAX_SGIS 0x8127 #define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 #define GL_DISTANCE_ATTENUATION_SGIS 0x8129 #ifndef GLEE_H_DEFINED_glPointParameterfSGIS #define GLEE_H_DEFINED_glPointParameterfSGIS typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERFSGISPROC GLeeFuncPtr_glPointParameterfSGIS; #define glPointParameterfSGIS GLeeFuncPtr_glPointParameterfSGIS #endif #ifndef GLEE_H_DEFINED_glPointParameterfvSGIS #define GLEE_H_DEFINED_glPointParameterfvSGIS typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERFVSGISPROC GLeeFuncPtr_glPointParameterfvSGIS; #define glPointParameterfvSGIS GLeeFuncPtr_glPointParameterfvSGIS #endif #endif /* GL_SGIX_instruments */ #ifndef GL_SGIX_instruments #define GL_SGIX_instruments 1 #define __GLEE_GL_SGIX_instruments 1 /* Constants */ #define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 #define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 #ifndef GLEE_H_DEFINED_glGetInstrumentsSGIX #define GLEE_H_DEFINED_glGetInstrumentsSGIX typedef GLint (APIENTRYP GLEEPFNGLGETINSTRUMENTSSGIXPROC) (); GLEE_EXTERN GLEEPFNGLGETINSTRUMENTSSGIXPROC GLeeFuncPtr_glGetInstrumentsSGIX; #define glGetInstrumentsSGIX GLeeFuncPtr_glGetInstrumentsSGIX #endif #ifndef GLEE_H_DEFINED_glInstrumentsBufferSGIX #define GLEE_H_DEFINED_glInstrumentsBufferSGIX typedef void (APIENTRYP GLEEPFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint * buffer); GLEE_EXTERN GLEEPFNGLINSTRUMENTSBUFFERSGIXPROC GLeeFuncPtr_glInstrumentsBufferSGIX; #define glInstrumentsBufferSGIX GLeeFuncPtr_glInstrumentsBufferSGIX #endif #ifndef GLEE_H_DEFINED_glPollInstrumentsSGIX #define GLEE_H_DEFINED_glPollInstrumentsSGIX typedef GLint (APIENTRYP GLEEPFNGLPOLLINSTRUMENTSSGIXPROC) (GLint * marker_p); GLEE_EXTERN GLEEPFNGLPOLLINSTRUMENTSSGIXPROC GLeeFuncPtr_glPollInstrumentsSGIX; #define glPollInstrumentsSGIX GLeeFuncPtr_glPollInstrumentsSGIX #endif #ifndef GLEE_H_DEFINED_glReadInstrumentsSGIX #define GLEE_H_DEFINED_glReadInstrumentsSGIX typedef void (APIENTRYP GLEEPFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); GLEE_EXTERN GLEEPFNGLREADINSTRUMENTSSGIXPROC GLeeFuncPtr_glReadInstrumentsSGIX; #define glReadInstrumentsSGIX GLeeFuncPtr_glReadInstrumentsSGIX #endif #ifndef GLEE_H_DEFINED_glStartInstrumentsSGIX #define GLEE_H_DEFINED_glStartInstrumentsSGIX typedef void (APIENTRYP GLEEPFNGLSTARTINSTRUMENTSSGIXPROC) (); GLEE_EXTERN GLEEPFNGLSTARTINSTRUMENTSSGIXPROC GLeeFuncPtr_glStartInstrumentsSGIX; #define glStartInstrumentsSGIX GLeeFuncPtr_glStartInstrumentsSGIX #endif #ifndef GLEE_H_DEFINED_glStopInstrumentsSGIX #define GLEE_H_DEFINED_glStopInstrumentsSGIX typedef void (APIENTRYP GLEEPFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); GLEE_EXTERN GLEEPFNGLSTOPINSTRUMENTSSGIXPROC GLeeFuncPtr_glStopInstrumentsSGIX; #define glStopInstrumentsSGIX GLeeFuncPtr_glStopInstrumentsSGIX #endif #endif /* GL_SGIX_texture_scale_bias */ #ifndef GL_SGIX_texture_scale_bias #define GL_SGIX_texture_scale_bias 1 #define __GLEE_GL_SGIX_texture_scale_bias 1 /* Constants */ #define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 #define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A #define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B #define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C #endif /* GL_SGIX_framezoom */ #ifndef GL_SGIX_framezoom #define GL_SGIX_framezoom 1 #define __GLEE_GL_SGIX_framezoom 1 /* Constants */ #define GL_FRAMEZOOM_SGIX 0x818B #define GL_FRAMEZOOM_FACTOR_SGIX 0x818C #define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D #ifndef GLEE_H_DEFINED_glFrameZoomSGIX #define GLEE_H_DEFINED_glFrameZoomSGIX typedef void (APIENTRYP GLEEPFNGLFRAMEZOOMSGIXPROC) (GLint factor); GLEE_EXTERN GLEEPFNGLFRAMEZOOMSGIXPROC GLeeFuncPtr_glFrameZoomSGIX; #define glFrameZoomSGIX GLeeFuncPtr_glFrameZoomSGIX #endif #endif /* GL_SGIX_tag_sample_buffer */ #ifndef GL_SGIX_tag_sample_buffer #define GL_SGIX_tag_sample_buffer 1 #define __GLEE_GL_SGIX_tag_sample_buffer 1 /* Constants */ #ifndef GLEE_H_DEFINED_glTagSampleBufferSGIX #define GLEE_H_DEFINED_glTagSampleBufferSGIX typedef void (APIENTRYP GLEEPFNGLTAGSAMPLEBUFFERSGIXPROC) (); GLEE_EXTERN GLEEPFNGLTAGSAMPLEBUFFERSGIXPROC GLeeFuncPtr_glTagSampleBufferSGIX; #define glTagSampleBufferSGIX GLeeFuncPtr_glTagSampleBufferSGIX #endif #endif /* GL_FfdMaskSGIX */ #ifndef GL_FfdMaskSGIX #define GL_FfdMaskSGIX 1 #define __GLEE_GL_FfdMaskSGIX 1 /* Constants */ #define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 #define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 #endif /* GL_SGIX_polynomial_ffd */ #ifndef GL_SGIX_polynomial_ffd #define GL_SGIX_polynomial_ffd 1 #define __GLEE_GL_SGIX_polynomial_ffd 1 /* Constants */ #define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 #define GL_TEXTURE_DEFORMATION_SGIX 0x8195 #define GL_DEFORMATIONS_MASK_SGIX 0x8196 #define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 #ifndef GLEE_H_DEFINED_glDeformationMap3dSGIX #define GLEE_H_DEFINED_glDeformationMap3dSGIX typedef void (APIENTRYP GLEEPFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble * points); GLEE_EXTERN GLEEPFNGLDEFORMATIONMAP3DSGIXPROC GLeeFuncPtr_glDeformationMap3dSGIX; #define glDeformationMap3dSGIX GLeeFuncPtr_glDeformationMap3dSGIX #endif #ifndef GLEE_H_DEFINED_glDeformationMap3fSGIX #define GLEE_H_DEFINED_glDeformationMap3fSGIX typedef void (APIENTRYP GLEEPFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat * points); GLEE_EXTERN GLEEPFNGLDEFORMATIONMAP3FSGIXPROC GLeeFuncPtr_glDeformationMap3fSGIX; #define glDeformationMap3fSGIX GLeeFuncPtr_glDeformationMap3fSGIX #endif #ifndef GLEE_H_DEFINED_glDeformSGIX #define GLEE_H_DEFINED_glDeformSGIX typedef void (APIENTRYP GLEEPFNGLDEFORMSGIXPROC) (GLbitfield mask); GLEE_EXTERN GLEEPFNGLDEFORMSGIXPROC GLeeFuncPtr_glDeformSGIX; #define glDeformSGIX GLeeFuncPtr_glDeformSGIX #endif #ifndef GLEE_H_DEFINED_glLoadIdentityDeformationMapSGIX #define GLEE_H_DEFINED_glLoadIdentityDeformationMapSGIX typedef void (APIENTRYP GLEEPFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); GLEE_EXTERN GLEEPFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC GLeeFuncPtr_glLoadIdentityDeformationMapSGIX; #define glLoadIdentityDeformationMapSGIX GLeeFuncPtr_glLoadIdentityDeformationMapSGIX #endif #endif /* GL_SGIX_reference_plane */ #ifndef GL_SGIX_reference_plane #define GL_SGIX_reference_plane 1 #define __GLEE_GL_SGIX_reference_plane 1 /* Constants */ #define GL_REFERENCE_PLANE_SGIX 0x817D #define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E #ifndef GLEE_H_DEFINED_glReferencePlaneSGIX #define GLEE_H_DEFINED_glReferencePlaneSGIX typedef void (APIENTRYP GLEEPFNGLREFERENCEPLANESGIXPROC) (const GLdouble * equation); GLEE_EXTERN GLEEPFNGLREFERENCEPLANESGIXPROC GLeeFuncPtr_glReferencePlaneSGIX; #define glReferencePlaneSGIX GLeeFuncPtr_glReferencePlaneSGIX #endif #endif /* GL_SGIX_flush_raster */ #ifndef GL_SGIX_flush_raster #define GL_SGIX_flush_raster 1 #define __GLEE_GL_SGIX_flush_raster 1 /* Constants */ #ifndef GLEE_H_DEFINED_glFlushRasterSGIX #define GLEE_H_DEFINED_glFlushRasterSGIX typedef void (APIENTRYP GLEEPFNGLFLUSHRASTERSGIXPROC) (); GLEE_EXTERN GLEEPFNGLFLUSHRASTERSGIXPROC GLeeFuncPtr_glFlushRasterSGIX; #define glFlushRasterSGIX GLeeFuncPtr_glFlushRasterSGIX #endif #endif /* GL_SGIX_depth_texture */ #ifndef GL_SGIX_depth_texture #define GL_SGIX_depth_texture 1 #define __GLEE_GL_SGIX_depth_texture 1 /* Constants */ #define GL_DEPTH_COMPONENT16_SGIX 0x81A5 #define GL_DEPTH_COMPONENT24_SGIX 0x81A6 #define GL_DEPTH_COMPONENT32_SGIX 0x81A7 #endif /* GL_SGIS_fog_function */ #ifndef GL_SGIS_fog_function #define GL_SGIS_fog_function 1 #define __GLEE_GL_SGIS_fog_function 1 /* Constants */ #define GL_FOG_FUNC_SGIS 0x812A #define GL_FOG_FUNC_POINTS_SGIS 0x812B #define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C #ifndef GLEE_H_DEFINED_glFogFuncSGIS #define GLEE_H_DEFINED_glFogFuncSGIS typedef void (APIENTRYP GLEEPFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat * points); GLEE_EXTERN GLEEPFNGLFOGFUNCSGISPROC GLeeFuncPtr_glFogFuncSGIS; #define glFogFuncSGIS GLeeFuncPtr_glFogFuncSGIS #endif #ifndef GLEE_H_DEFINED_glGetFogFuncSGIS #define GLEE_H_DEFINED_glGetFogFuncSGIS typedef void (APIENTRYP GLEEPFNGLGETFOGFUNCSGISPROC) (GLfloat * points); GLEE_EXTERN GLEEPFNGLGETFOGFUNCSGISPROC GLeeFuncPtr_glGetFogFuncSGIS; #define glGetFogFuncSGIS GLeeFuncPtr_glGetFogFuncSGIS #endif #endif /* GL_SGIX_fog_offset */ #ifndef GL_SGIX_fog_offset #define GL_SGIX_fog_offset 1 #define __GLEE_GL_SGIX_fog_offset 1 /* Constants */ #define GL_FOG_OFFSET_SGIX 0x8198 #define GL_FOG_OFFSET_VALUE_SGIX 0x8199 #endif /* GL_HP_image_transform */ #ifndef GL_HP_image_transform #define GL_HP_image_transform 1 #define __GLEE_GL_HP_image_transform 1 /* Constants */ #define GL_IMAGE_SCALE_X_HP 0x8155 #define GL_IMAGE_SCALE_Y_HP 0x8156 #define GL_IMAGE_TRANSLATE_X_HP 0x8157 #define GL_IMAGE_TRANSLATE_Y_HP 0x8158 #define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 #define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A #define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B #define GL_IMAGE_MAG_FILTER_HP 0x815C #define GL_IMAGE_MIN_FILTER_HP 0x815D #define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E #define GL_CUBIC_HP 0x815F #define GL_AVERAGE_HP 0x8160 #define GL_IMAGE_TRANSFORM_2D_HP 0x8161 #define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 #define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 #ifndef GLEE_H_DEFINED_glImageTransformParameteriHP #define GLEE_H_DEFINED_glImageTransformParameteriHP typedef void (APIENTRYP GLEEPFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLIMAGETRANSFORMPARAMETERIHPPROC GLeeFuncPtr_glImageTransformParameteriHP; #define glImageTransformParameteriHP GLeeFuncPtr_glImageTransformParameteriHP #endif #ifndef GLEE_H_DEFINED_glImageTransformParameterfHP #define GLEE_H_DEFINED_glImageTransformParameterfHP typedef void (APIENTRYP GLEEPFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLIMAGETRANSFORMPARAMETERFHPPROC GLeeFuncPtr_glImageTransformParameterfHP; #define glImageTransformParameterfHP GLeeFuncPtr_glImageTransformParameterfHP #endif #ifndef GLEE_H_DEFINED_glImageTransformParameterivHP #define GLEE_H_DEFINED_glImageTransformParameterivHP typedef void (APIENTRYP GLEEPFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLIMAGETRANSFORMPARAMETERIVHPPROC GLeeFuncPtr_glImageTransformParameterivHP; #define glImageTransformParameterivHP GLeeFuncPtr_glImageTransformParameterivHP #endif #ifndef GLEE_H_DEFINED_glImageTransformParameterfvHP #define GLEE_H_DEFINED_glImageTransformParameterfvHP typedef void (APIENTRYP GLEEPFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLIMAGETRANSFORMPARAMETERFVHPPROC GLeeFuncPtr_glImageTransformParameterfvHP; #define glImageTransformParameterfvHP GLeeFuncPtr_glImageTransformParameterfvHP #endif #ifndef GLEE_H_DEFINED_glGetImageTransformParameterivHP #define GLEE_H_DEFINED_glGetImageTransformParameterivHP typedef void (APIENTRYP GLEEPFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC GLeeFuncPtr_glGetImageTransformParameterivHP; #define glGetImageTransformParameterivHP GLeeFuncPtr_glGetImageTransformParameterivHP #endif #ifndef GLEE_H_DEFINED_glGetImageTransformParameterfvHP #define GLEE_H_DEFINED_glGetImageTransformParameterfvHP typedef void (APIENTRYP GLEEPFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC GLeeFuncPtr_glGetImageTransformParameterfvHP; #define glGetImageTransformParameterfvHP GLeeFuncPtr_glGetImageTransformParameterfvHP #endif #endif /* GL_HP_convolution_border_modes */ #ifndef GL_HP_convolution_border_modes #define GL_HP_convolution_border_modes 1 #define __GLEE_GL_HP_convolution_border_modes 1 /* Constants */ #define GL_IGNORE_BORDER_HP 0x8150 #define GL_CONSTANT_BORDER_HP 0x8151 #define GL_REPLICATE_BORDER_HP 0x8153 #define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 #endif /* GL_INGR_palette_buffer */ #ifndef GL_INGR_palette_buffer #define GL_INGR_palette_buffer 1 #define __GLEE_GL_INGR_palette_buffer 1 /* Constants */ #endif /* GL_SGIX_texture_add_env */ #ifndef GL_SGIX_texture_add_env #define GL_SGIX_texture_add_env 1 #define __GLEE_GL_SGIX_texture_add_env 1 /* Constants */ #define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE #endif /* GL_EXT_color_subtable */ #ifndef GL_EXT_color_subtable #define GL_EXT_color_subtable 1 #define __GLEE_GL_EXT_color_subtable 1 /* Constants */ #ifndef GLEE_H_DEFINED_glColorSubTableEXT #define GLEE_H_DEFINED_glColorSubTableEXT typedef void (APIENTRYP GLEEPFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data); GLEE_EXTERN GLEEPFNGLCOLORSUBTABLEEXTPROC GLeeFuncPtr_glColorSubTableEXT; #define glColorSubTableEXT GLeeFuncPtr_glColorSubTableEXT #endif #ifndef GLEE_H_DEFINED_glCopyColorSubTableEXT #define GLEE_H_DEFINED_glCopyColorSubTableEXT typedef void (APIENTRYP GLEEPFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); GLEE_EXTERN GLEEPFNGLCOPYCOLORSUBTABLEEXTPROC GLeeFuncPtr_glCopyColorSubTableEXT; #define glCopyColorSubTableEXT GLeeFuncPtr_glCopyColorSubTableEXT #endif #endif /* GL_PGI_vertex_hints */ #ifndef GL_PGI_vertex_hints #define GL_PGI_vertex_hints 1 #define __GLEE_GL_PGI_vertex_hints 1 /* Constants */ #define GL_VERTEX_DATA_HINT_PGI 0x1A22A #define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B #define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C #define GL_MAX_VERTEX_HINT_PGI 0x1A22D #define GL_COLOR3_BIT_PGI 0x00010000 #define GL_COLOR4_BIT_PGI 0x00020000 #define GL_EDGEFLAG_BIT_PGI 0x00040000 #define GL_INDEX_BIT_PGI 0x00080000 #define GL_MAT_AMBIENT_BIT_PGI 0x00100000 #define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 #define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 #define GL_MAT_EMISSION_BIT_PGI 0x00800000 #define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 #define GL_MAT_SHININESS_BIT_PGI 0x02000000 #define GL_MAT_SPECULAR_BIT_PGI 0x04000000 #define GL_NORMAL_BIT_PGI 0x08000000 #define GL_TEXCOORD1_BIT_PGI 0x10000000 #define GL_TEXCOORD2_BIT_PGI 0x20000000 #define GL_TEXCOORD3_BIT_PGI 0x40000000 #define GL_TEXCOORD4_BIT_PGI 0x80000000 #define GL_VERTEX23_BIT_PGI 0x00000004 #define GL_VERTEX4_BIT_PGI 0x00000008 #endif /* GL_PGI_misc_hints */ #ifndef GL_PGI_misc_hints #define GL_PGI_misc_hints 1 #define __GLEE_GL_PGI_misc_hints 1 /* Constants */ #define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 #define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD #define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE #define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 #define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 #define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 #define GL_ALWAYS_FAST_HINT_PGI 0x1A20C #define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D #define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E #define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F #define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 #define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 #define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 #define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 #define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 #define GL_FULL_STIPPLE_HINT_PGI 0x1A219 #define GL_CLIP_NEAR_HINT_PGI 0x1A220 #define GL_CLIP_FAR_HINT_PGI 0x1A221 #define GL_WIDE_LINE_HINT_PGI 0x1A222 #define GL_BACK_NORMALS_HINT_PGI 0x1A223 #ifndef GLEE_H_DEFINED_glHintPGI #define GLEE_H_DEFINED_glHintPGI typedef void (APIENTRYP GLEEPFNGLHINTPGIPROC) (GLenum target, GLint mode); GLEE_EXTERN GLEEPFNGLHINTPGIPROC GLeeFuncPtr_glHintPGI; #define glHintPGI GLeeFuncPtr_glHintPGI #endif #endif /* GL_EXT_paletted_texture */ #ifndef GL_EXT_paletted_texture #define GL_EXT_paletted_texture 1 #define __GLEE_GL_EXT_paletted_texture 1 /* Constants */ #define GL_COLOR_INDEX1_EXT 0x80E2 #define GL_COLOR_INDEX2_EXT 0x80E3 #define GL_COLOR_INDEX4_EXT 0x80E4 #define GL_COLOR_INDEX8_EXT 0x80E5 #define GL_COLOR_INDEX12_EXT 0x80E6 #define GL_COLOR_INDEX16_EXT 0x80E7 #define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED #ifndef GLEE_H_DEFINED_glColorTableEXT #define GLEE_H_DEFINED_glColorTableEXT typedef void (APIENTRYP GLEEPFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid * table); GLEE_EXTERN GLEEPFNGLCOLORTABLEEXTPROC GLeeFuncPtr_glColorTableEXT; #define glColorTableEXT GLeeFuncPtr_glColorTableEXT #endif #ifndef GLEE_H_DEFINED_glGetColorTableEXT #define GLEE_H_DEFINED_glGetColorTableEXT typedef void (APIENTRYP GLEEPFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid * data); GLEE_EXTERN GLEEPFNGLGETCOLORTABLEEXTPROC GLeeFuncPtr_glGetColorTableEXT; #define glGetColorTableEXT GLeeFuncPtr_glGetColorTableEXT #endif #ifndef GLEE_H_DEFINED_glGetColorTableParameterivEXT #define GLEE_H_DEFINED_glGetColorTableParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETCOLORTABLEPARAMETERIVEXTPROC GLeeFuncPtr_glGetColorTableParameterivEXT; #define glGetColorTableParameterivEXT GLeeFuncPtr_glGetColorTableParameterivEXT #endif #ifndef GLEE_H_DEFINED_glGetColorTableParameterfvEXT #define GLEE_H_DEFINED_glGetColorTableParameterfvEXT typedef void (APIENTRYP GLEEPFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETCOLORTABLEPARAMETERFVEXTPROC GLeeFuncPtr_glGetColorTableParameterfvEXT; #define glGetColorTableParameterfvEXT GLeeFuncPtr_glGetColorTableParameterfvEXT #endif #endif /* GL_EXT_clip_volume_hint */ #ifndef GL_EXT_clip_volume_hint #define GL_EXT_clip_volume_hint 1 #define __GLEE_GL_EXT_clip_volume_hint 1 /* Constants */ #define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 #endif /* GL_SGIX_list_priority */ #ifndef GL_SGIX_list_priority #define GL_SGIX_list_priority 1 #define __GLEE_GL_SGIX_list_priority 1 /* Constants */ #define GL_LIST_PRIORITY_SGIX 0x8182 #ifndef GLEE_H_DEFINED_glGetListParameterfvSGIX #define GLEE_H_DEFINED_glGetListParameterfvSGIX typedef void (APIENTRYP GLEEPFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETLISTPARAMETERFVSGIXPROC GLeeFuncPtr_glGetListParameterfvSGIX; #define glGetListParameterfvSGIX GLeeFuncPtr_glGetListParameterfvSGIX #endif #ifndef GLEE_H_DEFINED_glGetListParameterivSGIX #define GLEE_H_DEFINED_glGetListParameterivSGIX typedef void (APIENTRYP GLEEPFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETLISTPARAMETERIVSGIXPROC GLeeFuncPtr_glGetListParameterivSGIX; #define glGetListParameterivSGIX GLeeFuncPtr_glGetListParameterivSGIX #endif #ifndef GLEE_H_DEFINED_glListParameterfSGIX #define GLEE_H_DEFINED_glListParameterfSGIX typedef void (APIENTRYP GLEEPFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLLISTPARAMETERFSGIXPROC GLeeFuncPtr_glListParameterfSGIX; #define glListParameterfSGIX GLeeFuncPtr_glListParameterfSGIX #endif #ifndef GLEE_H_DEFINED_glListParameterfvSGIX #define GLEE_H_DEFINED_glListParameterfvSGIX typedef void (APIENTRYP GLEEPFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLLISTPARAMETERFVSGIXPROC GLeeFuncPtr_glListParameterfvSGIX; #define glListParameterfvSGIX GLeeFuncPtr_glListParameterfvSGIX #endif #ifndef GLEE_H_DEFINED_glListParameteriSGIX #define GLEE_H_DEFINED_glListParameteriSGIX typedef void (APIENTRYP GLEEPFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLLISTPARAMETERISGIXPROC GLeeFuncPtr_glListParameteriSGIX; #define glListParameteriSGIX GLeeFuncPtr_glListParameteriSGIX #endif #ifndef GLEE_H_DEFINED_glListParameterivSGIX #define GLEE_H_DEFINED_glListParameterivSGIX typedef void (APIENTRYP GLEEPFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLLISTPARAMETERIVSGIXPROC GLeeFuncPtr_glListParameterivSGIX; #define glListParameterivSGIX GLeeFuncPtr_glListParameterivSGIX #endif #endif /* GL_SGIX_ir_instrument1 */ #ifndef GL_SGIX_ir_instrument1 #define GL_SGIX_ir_instrument1 1 #define __GLEE_GL_SGIX_ir_instrument1 1 /* Constants */ #define GL_IR_INSTRUMENT1_SGIX 0x817F #endif /* GL_SGIX_calligraphic_fragment */ #ifndef GL_SGIX_calligraphic_fragment #define GL_SGIX_calligraphic_fragment 1 #define __GLEE_GL_SGIX_calligraphic_fragment 1 /* Constants */ #define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 #endif /* GL_SGIX_texture_lod_bias */ #ifndef GL_SGIX_texture_lod_bias #define GL_SGIX_texture_lod_bias 1 #define __GLEE_GL_SGIX_texture_lod_bias 1 /* Constants */ #define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E #define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F #define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 #endif /* GL_SGIX_shadow_ambient */ #ifndef GL_SGIX_shadow_ambient #define GL_SGIX_shadow_ambient 1 #define __GLEE_GL_SGIX_shadow_ambient 1 /* Constants */ #define GL_SHADOW_AMBIENT_SGIX 0x80BF #endif /* GL_EXT_index_texture */ #ifndef GL_EXT_index_texture #define GL_EXT_index_texture 1 #define __GLEE_GL_EXT_index_texture 1 /* Constants */ #endif /* GL_EXT_index_material */ #ifndef GL_EXT_index_material #define GL_EXT_index_material 1 #define __GLEE_GL_EXT_index_material 1 /* Constants */ #define GL_INDEX_MATERIAL_EXT 0x81B8 #define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 #define GL_INDEX_MATERIAL_FACE_EXT 0x81BA #ifndef GLEE_H_DEFINED_glIndexMaterialEXT #define GLEE_H_DEFINED_glIndexMaterialEXT typedef void (APIENTRYP GLEEPFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); GLEE_EXTERN GLEEPFNGLINDEXMATERIALEXTPROC GLeeFuncPtr_glIndexMaterialEXT; #define glIndexMaterialEXT GLeeFuncPtr_glIndexMaterialEXT #endif #endif /* GL_EXT_index_func */ #ifndef GL_EXT_index_func #define GL_EXT_index_func 1 #define __GLEE_GL_EXT_index_func 1 /* Constants */ #define GL_INDEX_TEST_EXT 0x81B5 #define GL_INDEX_TEST_FUNC_EXT 0x81B6 #define GL_INDEX_TEST_REF_EXT 0x81B7 #ifndef GLEE_H_DEFINED_glIndexFuncEXT #define GLEE_H_DEFINED_glIndexFuncEXT typedef void (APIENTRYP GLEEPFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); GLEE_EXTERN GLEEPFNGLINDEXFUNCEXTPROC GLeeFuncPtr_glIndexFuncEXT; #define glIndexFuncEXT GLeeFuncPtr_glIndexFuncEXT #endif #endif /* GL_EXT_index_array_formats */ #ifndef GL_EXT_index_array_formats #define GL_EXT_index_array_formats 1 #define __GLEE_GL_EXT_index_array_formats 1 /* Constants */ #define GL_IUI_V2F_EXT 0x81AD #define GL_IUI_V3F_EXT 0x81AE #define GL_IUI_N3F_V2F_EXT 0x81AF #define GL_IUI_N3F_V3F_EXT 0x81B0 #define GL_T2F_IUI_V2F_EXT 0x81B1 #define GL_T2F_IUI_V3F_EXT 0x81B2 #define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 #define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 #endif /* GL_EXT_compiled_vertex_array */ #ifndef GL_EXT_compiled_vertex_array #define GL_EXT_compiled_vertex_array 1 #define __GLEE_GL_EXT_compiled_vertex_array 1 /* Constants */ #define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 #define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 #ifndef GLEE_H_DEFINED_glLockArraysEXT #define GLEE_H_DEFINED_glLockArraysEXT typedef void (APIENTRYP GLEEPFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); GLEE_EXTERN GLEEPFNGLLOCKARRAYSEXTPROC GLeeFuncPtr_glLockArraysEXT; #define glLockArraysEXT GLeeFuncPtr_glLockArraysEXT #endif #ifndef GLEE_H_DEFINED_glUnlockArraysEXT #define GLEE_H_DEFINED_glUnlockArraysEXT typedef void (APIENTRYP GLEEPFNGLUNLOCKARRAYSEXTPROC) (); GLEE_EXTERN GLEEPFNGLUNLOCKARRAYSEXTPROC GLeeFuncPtr_glUnlockArraysEXT; #define glUnlockArraysEXT GLeeFuncPtr_glUnlockArraysEXT #endif #endif /* GL_EXT_cull_vertex */ #ifndef GL_EXT_cull_vertex #define GL_EXT_cull_vertex 1 #define __GLEE_GL_EXT_cull_vertex 1 /* Constants */ #define GL_CULL_VERTEX_EXT 0x81AA #define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB #define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC #ifndef GLEE_H_DEFINED_glCullParameterdvEXT #define GLEE_H_DEFINED_glCullParameterdvEXT typedef void (APIENTRYP GLEEPFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble * params); GLEE_EXTERN GLEEPFNGLCULLPARAMETERDVEXTPROC GLeeFuncPtr_glCullParameterdvEXT; #define glCullParameterdvEXT GLeeFuncPtr_glCullParameterdvEXT #endif #ifndef GLEE_H_DEFINED_glCullParameterfvEXT #define GLEE_H_DEFINED_glCullParameterfvEXT typedef void (APIENTRYP GLEEPFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLCULLPARAMETERFVEXTPROC GLeeFuncPtr_glCullParameterfvEXT; #define glCullParameterfvEXT GLeeFuncPtr_glCullParameterfvEXT #endif #endif /* GL_SGIX_ycrcb */ #ifndef GL_SGIX_ycrcb #define GL_SGIX_ycrcb 1 #define __GLEE_GL_SGIX_ycrcb 1 /* Constants */ #define GL_YCRCB_422_SGIX 0x81BB #define GL_YCRCB_444_SGIX 0x81BC #endif /* GL_SGIX_fragment_lighting */ #ifndef GL_SGIX_fragment_lighting #define GL_SGIX_fragment_lighting 1 #define __GLEE_GL_SGIX_fragment_lighting 1 /* Constants */ #define GL_FRAGMENT_LIGHTING_SGIX 0x8400 #define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 #define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 #define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 #define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 #define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 #define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 #define GL_LIGHT_ENV_MODE_SGIX 0x8407 #define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 #define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 #define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A #define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B #define GL_FRAGMENT_LIGHT0_SGIX 0x840C #define GL_FRAGMENT_LIGHT1_SGIX 0x840D #define GL_FRAGMENT_LIGHT2_SGIX 0x840E #define GL_FRAGMENT_LIGHT3_SGIX 0x840F #define GL_FRAGMENT_LIGHT4_SGIX 0x8410 #define GL_FRAGMENT_LIGHT5_SGIX 0x8411 #define GL_FRAGMENT_LIGHT6_SGIX 0x8412 #define GL_FRAGMENT_LIGHT7_SGIX 0x8413 #ifndef GLEE_H_DEFINED_glFragmentColorMaterialSGIX #define GLEE_H_DEFINED_glFragmentColorMaterialSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); GLEE_EXTERN GLEEPFNGLFRAGMENTCOLORMATERIALSGIXPROC GLeeFuncPtr_glFragmentColorMaterialSGIX; #define glFragmentColorMaterialSGIX GLeeFuncPtr_glFragmentColorMaterialSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentLightfSGIX #define GLEE_H_DEFINED_glFragmentLightfSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLFRAGMENTLIGHTFSGIXPROC GLeeFuncPtr_glFragmentLightfSGIX; #define glFragmentLightfSGIX GLeeFuncPtr_glFragmentLightfSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentLightfvSGIX #define GLEE_H_DEFINED_glFragmentLightfvSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLFRAGMENTLIGHTFVSGIXPROC GLeeFuncPtr_glFragmentLightfvSGIX; #define glFragmentLightfvSGIX GLeeFuncPtr_glFragmentLightfvSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentLightiSGIX #define GLEE_H_DEFINED_glFragmentLightiSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLFRAGMENTLIGHTISGIXPROC GLeeFuncPtr_glFragmentLightiSGIX; #define glFragmentLightiSGIX GLeeFuncPtr_glFragmentLightiSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentLightivSGIX #define GLEE_H_DEFINED_glFragmentLightivSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLFRAGMENTLIGHTIVSGIXPROC GLeeFuncPtr_glFragmentLightivSGIX; #define glFragmentLightivSGIX GLeeFuncPtr_glFragmentLightivSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentLightModelfSGIX #define GLEE_H_DEFINED_glFragmentLightModelfSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLFRAGMENTLIGHTMODELFSGIXPROC GLeeFuncPtr_glFragmentLightModelfSGIX; #define glFragmentLightModelfSGIX GLeeFuncPtr_glFragmentLightModelfSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentLightModelfvSGIX #define GLEE_H_DEFINED_glFragmentLightModelfvSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLFRAGMENTLIGHTMODELFVSGIXPROC GLeeFuncPtr_glFragmentLightModelfvSGIX; #define glFragmentLightModelfvSGIX GLeeFuncPtr_glFragmentLightModelfvSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentLightModeliSGIX #define GLEE_H_DEFINED_glFragmentLightModeliSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLFRAGMENTLIGHTMODELISGIXPROC GLeeFuncPtr_glFragmentLightModeliSGIX; #define glFragmentLightModeliSGIX GLeeFuncPtr_glFragmentLightModeliSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentLightModelivSGIX #define GLEE_H_DEFINED_glFragmentLightModelivSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLFRAGMENTLIGHTMODELIVSGIXPROC GLeeFuncPtr_glFragmentLightModelivSGIX; #define glFragmentLightModelivSGIX GLeeFuncPtr_glFragmentLightModelivSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentMaterialfSGIX #define GLEE_H_DEFINED_glFragmentMaterialfSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLFRAGMENTMATERIALFSGIXPROC GLeeFuncPtr_glFragmentMaterialfSGIX; #define glFragmentMaterialfSGIX GLeeFuncPtr_glFragmentMaterialfSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentMaterialfvSGIX #define GLEE_H_DEFINED_glFragmentMaterialfvSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLFRAGMENTMATERIALFVSGIXPROC GLeeFuncPtr_glFragmentMaterialfvSGIX; #define glFragmentMaterialfvSGIX GLeeFuncPtr_glFragmentMaterialfvSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentMaterialiSGIX #define GLEE_H_DEFINED_glFragmentMaterialiSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLFRAGMENTMATERIALISGIXPROC GLeeFuncPtr_glFragmentMaterialiSGIX; #define glFragmentMaterialiSGIX GLeeFuncPtr_glFragmentMaterialiSGIX #endif #ifndef GLEE_H_DEFINED_glFragmentMaterialivSGIX #define GLEE_H_DEFINED_glFragmentMaterialivSGIX typedef void (APIENTRYP GLEEPFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLFRAGMENTMATERIALIVSGIXPROC GLeeFuncPtr_glFragmentMaterialivSGIX; #define glFragmentMaterialivSGIX GLeeFuncPtr_glFragmentMaterialivSGIX #endif #ifndef GLEE_H_DEFINED_glGetFragmentLightfvSGIX #define GLEE_H_DEFINED_glGetFragmentLightfvSGIX typedef void (APIENTRYP GLEEPFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETFRAGMENTLIGHTFVSGIXPROC GLeeFuncPtr_glGetFragmentLightfvSGIX; #define glGetFragmentLightfvSGIX GLeeFuncPtr_glGetFragmentLightfvSGIX #endif #ifndef GLEE_H_DEFINED_glGetFragmentLightivSGIX #define GLEE_H_DEFINED_glGetFragmentLightivSGIX typedef void (APIENTRYP GLEEPFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETFRAGMENTLIGHTIVSGIXPROC GLeeFuncPtr_glGetFragmentLightivSGIX; #define glGetFragmentLightivSGIX GLeeFuncPtr_glGetFragmentLightivSGIX #endif #ifndef GLEE_H_DEFINED_glGetFragmentMaterialfvSGIX #define GLEE_H_DEFINED_glGetFragmentMaterialfvSGIX typedef void (APIENTRYP GLEEPFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETFRAGMENTMATERIALFVSGIXPROC GLeeFuncPtr_glGetFragmentMaterialfvSGIX; #define glGetFragmentMaterialfvSGIX GLeeFuncPtr_glGetFragmentMaterialfvSGIX #endif #ifndef GLEE_H_DEFINED_glGetFragmentMaterialivSGIX #define GLEE_H_DEFINED_glGetFragmentMaterialivSGIX typedef void (APIENTRYP GLEEPFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETFRAGMENTMATERIALIVSGIXPROC GLeeFuncPtr_glGetFragmentMaterialivSGIX; #define glGetFragmentMaterialivSGIX GLeeFuncPtr_glGetFragmentMaterialivSGIX #endif #ifndef GLEE_H_DEFINED_glLightEnviSGIX #define GLEE_H_DEFINED_glLightEnviSGIX typedef void (APIENTRYP GLEEPFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLLIGHTENVISGIXPROC GLeeFuncPtr_glLightEnviSGIX; #define glLightEnviSGIX GLeeFuncPtr_glLightEnviSGIX #endif #endif /* GL_IBM_rasterpos_clip */ #ifndef GL_IBM_rasterpos_clip #define GL_IBM_rasterpos_clip 1 #define __GLEE_GL_IBM_rasterpos_clip 1 /* Constants */ #define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 #endif /* GL_HP_texture_lighting */ #ifndef GL_HP_texture_lighting #define GL_HP_texture_lighting 1 #define __GLEE_GL_HP_texture_lighting 1 /* Constants */ #define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 #define GL_TEXTURE_POST_SPECULAR_HP 0x8168 #define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 #endif /* GL_EXT_draw_range_elements */ #ifndef GL_EXT_draw_range_elements #define GL_EXT_draw_range_elements 1 #define __GLEE_GL_EXT_draw_range_elements 1 /* Constants */ #define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 #define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 #ifndef GLEE_H_DEFINED_glDrawRangeElementsEXT #define GLEE_H_DEFINED_glDrawRangeElementsEXT typedef void (APIENTRYP GLEEPFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices); GLEE_EXTERN GLEEPFNGLDRAWRANGEELEMENTSEXTPROC GLeeFuncPtr_glDrawRangeElementsEXT; #define glDrawRangeElementsEXT GLeeFuncPtr_glDrawRangeElementsEXT #endif #endif /* GL_WIN_phong_shading */ #ifndef GL_WIN_phong_shading #define GL_WIN_phong_shading 1 #define __GLEE_GL_WIN_phong_shading 1 /* Constants */ #define GL_PHONG_WIN 0x80EA #define GL_PHONG_HINT_WIN 0x80EB #endif /* GL_WIN_specular_fog */ #ifndef GL_WIN_specular_fog #define GL_WIN_specular_fog 1 #define __GLEE_GL_WIN_specular_fog 1 /* Constants */ #define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC #endif /* GL_EXT_light_texture */ #ifndef GL_EXT_light_texture #define GL_EXT_light_texture 1 #define __GLEE_GL_EXT_light_texture 1 /* Constants */ #define GL_FRAGMENT_MATERIAL_EXT 0x8349 #define GL_FRAGMENT_NORMAL_EXT 0x834A #define GL_FRAGMENT_COLOR_EXT 0x834C #define GL_ATTENUATION_EXT 0x834D #define GL_SHADOW_ATTENUATION_EXT 0x834E #define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F #define GL_TEXTURE_LIGHT_EXT 0x8350 #define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 #define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 #ifndef GLEE_H_DEFINED_glApplyTextureEXT #define GLEE_H_DEFINED_glApplyTextureEXT typedef void (APIENTRYP GLEEPFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLAPPLYTEXTUREEXTPROC GLeeFuncPtr_glApplyTextureEXT; #define glApplyTextureEXT GLeeFuncPtr_glApplyTextureEXT #endif #ifndef GLEE_H_DEFINED_glTextureLightEXT #define GLEE_H_DEFINED_glTextureLightEXT typedef void (APIENTRYP GLEEPFNGLTEXTURELIGHTEXTPROC) (GLenum pname); GLEE_EXTERN GLEEPFNGLTEXTURELIGHTEXTPROC GLeeFuncPtr_glTextureLightEXT; #define glTextureLightEXT GLeeFuncPtr_glTextureLightEXT #endif #ifndef GLEE_H_DEFINED_glTextureMaterialEXT #define GLEE_H_DEFINED_glTextureMaterialEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); GLEE_EXTERN GLEEPFNGLTEXTUREMATERIALEXTPROC GLeeFuncPtr_glTextureMaterialEXT; #define glTextureMaterialEXT GLeeFuncPtr_glTextureMaterialEXT #endif #endif /* GL_SGIX_blend_alpha_minmax */ #ifndef GL_SGIX_blend_alpha_minmax #define GL_SGIX_blend_alpha_minmax 1 #define __GLEE_GL_SGIX_blend_alpha_minmax 1 /* Constants */ #define GL_ALPHA_MIN_SGIX 0x8320 #define GL_ALPHA_MAX_SGIX 0x8321 #endif /* GL_SGIX_impact_pixel_texture */ #ifndef GL_SGIX_impact_pixel_texture #define GL_SGIX_impact_pixel_texture 1 #define __GLEE_GL_SGIX_impact_pixel_texture 1 /* Constants */ #define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 #define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 #define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 #define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187 #define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188 #define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 #define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A #endif /* GL_EXT_bgra */ #ifndef GL_EXT_bgra #define GL_EXT_bgra 1 #define __GLEE_GL_EXT_bgra 1 /* Constants */ #define GL_BGR_EXT 0x80E0 #define GL_BGRA_EXT 0x80E1 #endif /* GL_SGIX_async */ #ifndef GL_SGIX_async #define GL_SGIX_async 1 #define __GLEE_GL_SGIX_async 1 /* Constants */ #define GL_ASYNC_MARKER_SGIX 0x8329 #ifndef GLEE_H_DEFINED_glAsyncMarkerSGIX #define GLEE_H_DEFINED_glAsyncMarkerSGIX typedef void (APIENTRYP GLEEPFNGLASYNCMARKERSGIXPROC) (GLuint marker); GLEE_EXTERN GLEEPFNGLASYNCMARKERSGIXPROC GLeeFuncPtr_glAsyncMarkerSGIX; #define glAsyncMarkerSGIX GLeeFuncPtr_glAsyncMarkerSGIX #endif #ifndef GLEE_H_DEFINED_glFinishAsyncSGIX #define GLEE_H_DEFINED_glFinishAsyncSGIX typedef GLint (APIENTRYP GLEEPFNGLFINISHASYNCSGIXPROC) (GLuint * markerp); GLEE_EXTERN GLEEPFNGLFINISHASYNCSGIXPROC GLeeFuncPtr_glFinishAsyncSGIX; #define glFinishAsyncSGIX GLeeFuncPtr_glFinishAsyncSGIX #endif #ifndef GLEE_H_DEFINED_glPollAsyncSGIX #define GLEE_H_DEFINED_glPollAsyncSGIX typedef GLint (APIENTRYP GLEEPFNGLPOLLASYNCSGIXPROC) (GLuint * markerp); GLEE_EXTERN GLEEPFNGLPOLLASYNCSGIXPROC GLeeFuncPtr_glPollAsyncSGIX; #define glPollAsyncSGIX GLeeFuncPtr_glPollAsyncSGIX #endif #ifndef GLEE_H_DEFINED_glGenAsyncMarkersSGIX #define GLEE_H_DEFINED_glGenAsyncMarkersSGIX typedef GLuint (APIENTRYP GLEEPFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); GLEE_EXTERN GLEEPFNGLGENASYNCMARKERSSGIXPROC GLeeFuncPtr_glGenAsyncMarkersSGIX; #define glGenAsyncMarkersSGIX GLeeFuncPtr_glGenAsyncMarkersSGIX #endif #ifndef GLEE_H_DEFINED_glDeleteAsyncMarkersSGIX #define GLEE_H_DEFINED_glDeleteAsyncMarkersSGIX typedef void (APIENTRYP GLEEPFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); GLEE_EXTERN GLEEPFNGLDELETEASYNCMARKERSSGIXPROC GLeeFuncPtr_glDeleteAsyncMarkersSGIX; #define glDeleteAsyncMarkersSGIX GLeeFuncPtr_glDeleteAsyncMarkersSGIX #endif #ifndef GLEE_H_DEFINED_glIsAsyncMarkerSGIX #define GLEE_H_DEFINED_glIsAsyncMarkerSGIX typedef GLboolean (APIENTRYP GLEEPFNGLISASYNCMARKERSGIXPROC) (GLuint marker); GLEE_EXTERN GLEEPFNGLISASYNCMARKERSGIXPROC GLeeFuncPtr_glIsAsyncMarkerSGIX; #define glIsAsyncMarkerSGIX GLeeFuncPtr_glIsAsyncMarkerSGIX #endif #endif /* GL_SGIX_async_pixel */ #ifndef GL_SGIX_async_pixel #define GL_SGIX_async_pixel 1 #define __GLEE_GL_SGIX_async_pixel 1 /* Constants */ #define GL_ASYNC_TEX_IMAGE_SGIX 0x835C #define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D #define GL_ASYNC_READ_PIXELS_SGIX 0x835E #define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F #define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 #define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 #endif /* GL_SGIX_async_histogram */ #ifndef GL_SGIX_async_histogram #define GL_SGIX_async_histogram 1 #define __GLEE_GL_SGIX_async_histogram 1 /* Constants */ #define GL_ASYNC_HISTOGRAM_SGIX 0x832C #define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D #endif /* GL_INTEL_texture_scissor */ #ifndef GL_INTEL_texture_scissor #define GL_INTEL_texture_scissor 1 #define __GLEE_GL_INTEL_texture_scissor 1 /* Constants */ #endif /* GL_INTEL_parallel_arrays */ #ifndef GL_INTEL_parallel_arrays #define GL_INTEL_parallel_arrays 1 #define __GLEE_GL_INTEL_parallel_arrays 1 /* Constants */ #define GL_PARALLEL_ARRAYS_INTEL 0x83F4 #define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 #define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 #define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 #define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 #ifndef GLEE_H_DEFINED_glVertexPointervINTEL #define GLEE_H_DEFINED_glVertexPointervINTEL typedef void (APIENTRYP GLEEPFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* * pointer); GLEE_EXTERN GLEEPFNGLVERTEXPOINTERVINTELPROC GLeeFuncPtr_glVertexPointervINTEL; #define glVertexPointervINTEL GLeeFuncPtr_glVertexPointervINTEL #endif #ifndef GLEE_H_DEFINED_glNormalPointervINTEL #define GLEE_H_DEFINED_glNormalPointervINTEL typedef void (APIENTRYP GLEEPFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* * pointer); GLEE_EXTERN GLEEPFNGLNORMALPOINTERVINTELPROC GLeeFuncPtr_glNormalPointervINTEL; #define glNormalPointervINTEL GLeeFuncPtr_glNormalPointervINTEL #endif #ifndef GLEE_H_DEFINED_glColorPointervINTEL #define GLEE_H_DEFINED_glColorPointervINTEL typedef void (APIENTRYP GLEEPFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* * pointer); GLEE_EXTERN GLEEPFNGLCOLORPOINTERVINTELPROC GLeeFuncPtr_glColorPointervINTEL; #define glColorPointervINTEL GLeeFuncPtr_glColorPointervINTEL #endif #ifndef GLEE_H_DEFINED_glTexCoordPointervINTEL #define GLEE_H_DEFINED_glTexCoordPointervINTEL typedef void (APIENTRYP GLEEPFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* * pointer); GLEE_EXTERN GLEEPFNGLTEXCOORDPOINTERVINTELPROC GLeeFuncPtr_glTexCoordPointervINTEL; #define glTexCoordPointervINTEL GLeeFuncPtr_glTexCoordPointervINTEL #endif #endif /* GL_HP_occlusion_test */ #ifndef GL_HP_occlusion_test #define GL_HP_occlusion_test 1 #define __GLEE_GL_HP_occlusion_test 1 /* Constants */ #define GL_OCCLUSION_TEST_HP 0x8165 #define GL_OCCLUSION_TEST_RESULT_HP 0x8166 #endif /* GL_EXT_pixel_transform */ #ifndef GL_EXT_pixel_transform #define GL_EXT_pixel_transform 1 #define __GLEE_GL_EXT_pixel_transform 1 /* Constants */ #define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 #define GL_PIXEL_MAG_FILTER_EXT 0x8331 #define GL_PIXEL_MIN_FILTER_EXT 0x8332 #define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 #define GL_CUBIC_EXT 0x8334 #define GL_AVERAGE_EXT 0x8335 #define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 #define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 #define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 #ifndef GLEE_H_DEFINED_glPixelTransformParameteriEXT #define GLEE_H_DEFINED_glPixelTransformParameteriEXT typedef void (APIENTRYP GLEEPFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLPIXELTRANSFORMPARAMETERIEXTPROC GLeeFuncPtr_glPixelTransformParameteriEXT; #define glPixelTransformParameteriEXT GLeeFuncPtr_glPixelTransformParameteriEXT #endif #ifndef GLEE_H_DEFINED_glPixelTransformParameterfEXT #define GLEE_H_DEFINED_glPixelTransformParameterfEXT typedef void (APIENTRYP GLEEPFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLPIXELTRANSFORMPARAMETERFEXTPROC GLeeFuncPtr_glPixelTransformParameterfEXT; #define glPixelTransformParameterfEXT GLeeFuncPtr_glPixelTransformParameterfEXT #endif #ifndef GLEE_H_DEFINED_glPixelTransformParameterivEXT #define GLEE_H_DEFINED_glPixelTransformParameterivEXT typedef void (APIENTRYP GLEEPFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLPIXELTRANSFORMPARAMETERIVEXTPROC GLeeFuncPtr_glPixelTransformParameterivEXT; #define glPixelTransformParameterivEXT GLeeFuncPtr_glPixelTransformParameterivEXT #endif #ifndef GLEE_H_DEFINED_glPixelTransformParameterfvEXT #define GLEE_H_DEFINED_glPixelTransformParameterfvEXT typedef void (APIENTRYP GLEEPFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPIXELTRANSFORMPARAMETERFVEXTPROC GLeeFuncPtr_glPixelTransformParameterfvEXT; #define glPixelTransformParameterfvEXT GLeeFuncPtr_glPixelTransformParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glGetPixelTransformParameterivEXT #define GLEE_H_DEFINED_glGetPixelTransformParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETPIXELTRANSFORMPARAMETERIVEXTPROC GLeeFuncPtr_glGetPixelTransformParameterivEXT; #define glGetPixelTransformParameterivEXT GLeeFuncPtr_glGetPixelTransformParameterivEXT #endif #ifndef GLEE_H_DEFINED_glGetPixelTransformParameterfvEXT #define GLEE_H_DEFINED_glGetPixelTransformParameterfvEXT typedef void (APIENTRYP GLEEPFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETPIXELTRANSFORMPARAMETERFVEXTPROC GLeeFuncPtr_glGetPixelTransformParameterfvEXT; #define glGetPixelTransformParameterfvEXT GLeeFuncPtr_glGetPixelTransformParameterfvEXT #endif #endif /* GL_EXT_pixel_transform_color_table */ #ifndef GL_EXT_pixel_transform_color_table #define GL_EXT_pixel_transform_color_table 1 #define __GLEE_GL_EXT_pixel_transform_color_table 1 /* Constants */ #endif /* GL_EXT_shared_texture_palette */ #ifndef GL_EXT_shared_texture_palette #define GL_EXT_shared_texture_palette 1 #define __GLEE_GL_EXT_shared_texture_palette 1 /* Constants */ #define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB #endif /* GL_EXT_separate_specular_color */ #ifndef GL_EXT_separate_specular_color #define GL_EXT_separate_specular_color 1 #define __GLEE_GL_EXT_separate_specular_color 1 /* Constants */ #define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 #define GL_SINGLE_COLOR_EXT 0x81F9 #define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA #endif /* GL_EXT_secondary_color */ #ifndef GL_EXT_secondary_color #define GL_EXT_secondary_color 1 #define __GLEE_GL_EXT_secondary_color 1 /* Constants */ #define GL_COLOR_SUM_EXT 0x8458 #define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 #define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A #define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B #define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C #define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D #define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E #ifndef GLEE_H_DEFINED_glSecondaryColor3bEXT #define GLEE_H_DEFINED_glSecondaryColor3bEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3BEXTPROC GLeeFuncPtr_glSecondaryColor3bEXT; #define glSecondaryColor3bEXT GLeeFuncPtr_glSecondaryColor3bEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3bvEXT #define GLEE_H_DEFINED_glSecondaryColor3bvEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3BVEXTPROC GLeeFuncPtr_glSecondaryColor3bvEXT; #define glSecondaryColor3bvEXT GLeeFuncPtr_glSecondaryColor3bvEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3dEXT #define GLEE_H_DEFINED_glSecondaryColor3dEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3DEXTPROC GLeeFuncPtr_glSecondaryColor3dEXT; #define glSecondaryColor3dEXT GLeeFuncPtr_glSecondaryColor3dEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3dvEXT #define GLEE_H_DEFINED_glSecondaryColor3dvEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3DVEXTPROC GLeeFuncPtr_glSecondaryColor3dvEXT; #define glSecondaryColor3dvEXT GLeeFuncPtr_glSecondaryColor3dvEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3fEXT #define GLEE_H_DEFINED_glSecondaryColor3fEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3FEXTPROC GLeeFuncPtr_glSecondaryColor3fEXT; #define glSecondaryColor3fEXT GLeeFuncPtr_glSecondaryColor3fEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3fvEXT #define GLEE_H_DEFINED_glSecondaryColor3fvEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3FVEXTPROC GLeeFuncPtr_glSecondaryColor3fvEXT; #define glSecondaryColor3fvEXT GLeeFuncPtr_glSecondaryColor3fvEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3iEXT #define GLEE_H_DEFINED_glSecondaryColor3iEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3IEXTPROC GLeeFuncPtr_glSecondaryColor3iEXT; #define glSecondaryColor3iEXT GLeeFuncPtr_glSecondaryColor3iEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3ivEXT #define GLEE_H_DEFINED_glSecondaryColor3ivEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3IVEXTPROC GLeeFuncPtr_glSecondaryColor3ivEXT; #define glSecondaryColor3ivEXT GLeeFuncPtr_glSecondaryColor3ivEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3sEXT #define GLEE_H_DEFINED_glSecondaryColor3sEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3SEXTPROC GLeeFuncPtr_glSecondaryColor3sEXT; #define glSecondaryColor3sEXT GLeeFuncPtr_glSecondaryColor3sEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3svEXT #define GLEE_H_DEFINED_glSecondaryColor3svEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3SVEXTPROC GLeeFuncPtr_glSecondaryColor3svEXT; #define glSecondaryColor3svEXT GLeeFuncPtr_glSecondaryColor3svEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3ubEXT #define GLEE_H_DEFINED_glSecondaryColor3ubEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3UBEXTPROC GLeeFuncPtr_glSecondaryColor3ubEXT; #define glSecondaryColor3ubEXT GLeeFuncPtr_glSecondaryColor3ubEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3ubvEXT #define GLEE_H_DEFINED_glSecondaryColor3ubvEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3UBVEXTPROC GLeeFuncPtr_glSecondaryColor3ubvEXT; #define glSecondaryColor3ubvEXT GLeeFuncPtr_glSecondaryColor3ubvEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3uiEXT #define GLEE_H_DEFINED_glSecondaryColor3uiEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3UIEXTPROC GLeeFuncPtr_glSecondaryColor3uiEXT; #define glSecondaryColor3uiEXT GLeeFuncPtr_glSecondaryColor3uiEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3uivEXT #define GLEE_H_DEFINED_glSecondaryColor3uivEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3UIVEXTPROC GLeeFuncPtr_glSecondaryColor3uivEXT; #define glSecondaryColor3uivEXT GLeeFuncPtr_glSecondaryColor3uivEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3usEXT #define GLEE_H_DEFINED_glSecondaryColor3usEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3USEXTPROC GLeeFuncPtr_glSecondaryColor3usEXT; #define glSecondaryColor3usEXT GLeeFuncPtr_glSecondaryColor3usEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3usvEXT #define GLEE_H_DEFINED_glSecondaryColor3usvEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3USVEXTPROC GLeeFuncPtr_glSecondaryColor3usvEXT; #define glSecondaryColor3usvEXT GLeeFuncPtr_glSecondaryColor3usvEXT #endif #ifndef GLEE_H_DEFINED_glSecondaryColorPointerEXT #define GLEE_H_DEFINED_glSecondaryColorPointerEXT typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLSECONDARYCOLORPOINTEREXTPROC GLeeFuncPtr_glSecondaryColorPointerEXT; #define glSecondaryColorPointerEXT GLeeFuncPtr_glSecondaryColorPointerEXT #endif #endif /* GL_EXT_texture_perturb_normal */ #ifndef GL_EXT_texture_perturb_normal #define GL_EXT_texture_perturb_normal 1 #define __GLEE_GL_EXT_texture_perturb_normal 1 /* Constants */ #define GL_PERTURB_EXT 0x85AE #define GL_TEXTURE_NORMAL_EXT 0x85AF #ifndef GLEE_H_DEFINED_glTextureNormalEXT #define GLEE_H_DEFINED_glTextureNormalEXT typedef void (APIENTRYP GLEEPFNGLTEXTURENORMALEXTPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLTEXTURENORMALEXTPROC GLeeFuncPtr_glTextureNormalEXT; #define glTextureNormalEXT GLeeFuncPtr_glTextureNormalEXT #endif #endif /* GL_EXT_multi_draw_arrays */ #ifndef GL_EXT_multi_draw_arrays #define GL_EXT_multi_draw_arrays 1 #define __GLEE_GL_EXT_multi_draw_arrays 1 /* Constants */ #ifndef GLEE_H_DEFINED_glMultiDrawArraysEXT #define GLEE_H_DEFINED_glMultiDrawArraysEXT typedef void (APIENTRYP GLEEPFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount); GLEE_EXTERN GLEEPFNGLMULTIDRAWARRAYSEXTPROC GLeeFuncPtr_glMultiDrawArraysEXT; #define glMultiDrawArraysEXT GLeeFuncPtr_glMultiDrawArraysEXT #endif #ifndef GLEE_H_DEFINED_glMultiDrawElementsEXT #define GLEE_H_DEFINED_glMultiDrawElementsEXT typedef void (APIENTRYP GLEEPFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei * count, GLenum type, const GLvoid* * indices, GLsizei primcount); GLEE_EXTERN GLEEPFNGLMULTIDRAWELEMENTSEXTPROC GLeeFuncPtr_glMultiDrawElementsEXT; #define glMultiDrawElementsEXT GLeeFuncPtr_glMultiDrawElementsEXT #endif #endif /* GL_EXT_fog_coord */ #ifndef GL_EXT_fog_coord #define GL_EXT_fog_coord 1 #define __GLEE_GL_EXT_fog_coord 1 /* Constants */ #define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 #define GL_FOG_COORDINATE_EXT 0x8451 #define GL_FRAGMENT_DEPTH_EXT 0x8452 #define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 #define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 #define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 #define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 #define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 #ifndef GLEE_H_DEFINED_glFogCoordfEXT #define GLEE_H_DEFINED_glFogCoordfEXT typedef void (APIENTRYP GLEEPFNGLFOGCOORDFEXTPROC) (GLfloat coord); GLEE_EXTERN GLEEPFNGLFOGCOORDFEXTPROC GLeeFuncPtr_glFogCoordfEXT; #define glFogCoordfEXT GLeeFuncPtr_glFogCoordfEXT #endif #ifndef GLEE_H_DEFINED_glFogCoordfvEXT #define GLEE_H_DEFINED_glFogCoordfvEXT typedef void (APIENTRYP GLEEPFNGLFOGCOORDFVEXTPROC) (const GLfloat * coord); GLEE_EXTERN GLEEPFNGLFOGCOORDFVEXTPROC GLeeFuncPtr_glFogCoordfvEXT; #define glFogCoordfvEXT GLeeFuncPtr_glFogCoordfvEXT #endif #ifndef GLEE_H_DEFINED_glFogCoorddEXT #define GLEE_H_DEFINED_glFogCoorddEXT typedef void (APIENTRYP GLEEPFNGLFOGCOORDDEXTPROC) (GLdouble coord); GLEE_EXTERN GLEEPFNGLFOGCOORDDEXTPROC GLeeFuncPtr_glFogCoorddEXT; #define glFogCoorddEXT GLeeFuncPtr_glFogCoorddEXT #endif #ifndef GLEE_H_DEFINED_glFogCoorddvEXT #define GLEE_H_DEFINED_glFogCoorddvEXT typedef void (APIENTRYP GLEEPFNGLFOGCOORDDVEXTPROC) (const GLdouble * coord); GLEE_EXTERN GLEEPFNGLFOGCOORDDVEXTPROC GLeeFuncPtr_glFogCoorddvEXT; #define glFogCoorddvEXT GLeeFuncPtr_glFogCoorddvEXT #endif #ifndef GLEE_H_DEFINED_glFogCoordPointerEXT #define GLEE_H_DEFINED_glFogCoordPointerEXT typedef void (APIENTRYP GLEEPFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLFOGCOORDPOINTEREXTPROC GLeeFuncPtr_glFogCoordPointerEXT; #define glFogCoordPointerEXT GLeeFuncPtr_glFogCoordPointerEXT #endif #endif /* GL_REND_screen_coordinates */ #ifndef GL_REND_screen_coordinates #define GL_REND_screen_coordinates 1 #define __GLEE_GL_REND_screen_coordinates 1 /* Constants */ #define GL_SCREEN_COORDINATES_REND 0x8490 #define GL_INVERTED_SCREEN_W_REND 0x8491 #endif /* GL_EXT_coordinate_frame */ #ifndef GL_EXT_coordinate_frame #define GL_EXT_coordinate_frame 1 #define __GLEE_GL_EXT_coordinate_frame 1 /* Constants */ #define GL_TANGENT_ARRAY_EXT 0x8439 #define GL_BINORMAL_ARRAY_EXT 0x843A #define GL_CURRENT_TANGENT_EXT 0x843B #define GL_CURRENT_BINORMAL_EXT 0x843C #define GL_TANGENT_ARRAY_TYPE_EXT 0x843E #define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F #define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 #define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 #define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 #define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 #define GL_MAP1_TANGENT_EXT 0x8444 #define GL_MAP2_TANGENT_EXT 0x8445 #define GL_MAP1_BINORMAL_EXT 0x8446 #define GL_MAP2_BINORMAL_EXT 0x8447 #ifndef GLEE_H_DEFINED_glTangent3bEXT #define GLEE_H_DEFINED_glTangent3bEXT typedef void (APIENTRYP GLEEPFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); GLEE_EXTERN GLEEPFNGLTANGENT3BEXTPROC GLeeFuncPtr_glTangent3bEXT; #define glTangent3bEXT GLeeFuncPtr_glTangent3bEXT #endif #ifndef GLEE_H_DEFINED_glTangent3bvEXT #define GLEE_H_DEFINED_glTangent3bvEXT typedef void (APIENTRYP GLEEPFNGLTANGENT3BVEXTPROC) (const GLbyte * v); GLEE_EXTERN GLEEPFNGLTANGENT3BVEXTPROC GLeeFuncPtr_glTangent3bvEXT; #define glTangent3bvEXT GLeeFuncPtr_glTangent3bvEXT #endif #ifndef GLEE_H_DEFINED_glTangent3dEXT #define GLEE_H_DEFINED_glTangent3dEXT typedef void (APIENTRYP GLEEPFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); GLEE_EXTERN GLEEPFNGLTANGENT3DEXTPROC GLeeFuncPtr_glTangent3dEXT; #define glTangent3dEXT GLeeFuncPtr_glTangent3dEXT #endif #ifndef GLEE_H_DEFINED_glTangent3dvEXT #define GLEE_H_DEFINED_glTangent3dvEXT typedef void (APIENTRYP GLEEPFNGLTANGENT3DVEXTPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLTANGENT3DVEXTPROC GLeeFuncPtr_glTangent3dvEXT; #define glTangent3dvEXT GLeeFuncPtr_glTangent3dvEXT #endif #ifndef GLEE_H_DEFINED_glTangent3fEXT #define GLEE_H_DEFINED_glTangent3fEXT typedef void (APIENTRYP GLEEPFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); GLEE_EXTERN GLEEPFNGLTANGENT3FEXTPROC GLeeFuncPtr_glTangent3fEXT; #define glTangent3fEXT GLeeFuncPtr_glTangent3fEXT #endif #ifndef GLEE_H_DEFINED_glTangent3fvEXT #define GLEE_H_DEFINED_glTangent3fvEXT typedef void (APIENTRYP GLEEPFNGLTANGENT3FVEXTPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLTANGENT3FVEXTPROC GLeeFuncPtr_glTangent3fvEXT; #define glTangent3fvEXT GLeeFuncPtr_glTangent3fvEXT #endif #ifndef GLEE_H_DEFINED_glTangent3iEXT #define GLEE_H_DEFINED_glTangent3iEXT typedef void (APIENTRYP GLEEPFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); GLEE_EXTERN GLEEPFNGLTANGENT3IEXTPROC GLeeFuncPtr_glTangent3iEXT; #define glTangent3iEXT GLeeFuncPtr_glTangent3iEXT #endif #ifndef GLEE_H_DEFINED_glTangent3ivEXT #define GLEE_H_DEFINED_glTangent3ivEXT typedef void (APIENTRYP GLEEPFNGLTANGENT3IVEXTPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLTANGENT3IVEXTPROC GLeeFuncPtr_glTangent3ivEXT; #define glTangent3ivEXT GLeeFuncPtr_glTangent3ivEXT #endif #ifndef GLEE_H_DEFINED_glTangent3sEXT #define GLEE_H_DEFINED_glTangent3sEXT typedef void (APIENTRYP GLEEPFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); GLEE_EXTERN GLEEPFNGLTANGENT3SEXTPROC GLeeFuncPtr_glTangent3sEXT; #define glTangent3sEXT GLeeFuncPtr_glTangent3sEXT #endif #ifndef GLEE_H_DEFINED_glTangent3svEXT #define GLEE_H_DEFINED_glTangent3svEXT typedef void (APIENTRYP GLEEPFNGLTANGENT3SVEXTPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLTANGENT3SVEXTPROC GLeeFuncPtr_glTangent3svEXT; #define glTangent3svEXT GLeeFuncPtr_glTangent3svEXT #endif #ifndef GLEE_H_DEFINED_glBinormal3bEXT #define GLEE_H_DEFINED_glBinormal3bEXT typedef void (APIENTRYP GLEEPFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); GLEE_EXTERN GLEEPFNGLBINORMAL3BEXTPROC GLeeFuncPtr_glBinormal3bEXT; #define glBinormal3bEXT GLeeFuncPtr_glBinormal3bEXT #endif #ifndef GLEE_H_DEFINED_glBinormal3bvEXT #define GLEE_H_DEFINED_glBinormal3bvEXT typedef void (APIENTRYP GLEEPFNGLBINORMAL3BVEXTPROC) (const GLbyte * v); GLEE_EXTERN GLEEPFNGLBINORMAL3BVEXTPROC GLeeFuncPtr_glBinormal3bvEXT; #define glBinormal3bvEXT GLeeFuncPtr_glBinormal3bvEXT #endif #ifndef GLEE_H_DEFINED_glBinormal3dEXT #define GLEE_H_DEFINED_glBinormal3dEXT typedef void (APIENTRYP GLEEPFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); GLEE_EXTERN GLEEPFNGLBINORMAL3DEXTPROC GLeeFuncPtr_glBinormal3dEXT; #define glBinormal3dEXT GLeeFuncPtr_glBinormal3dEXT #endif #ifndef GLEE_H_DEFINED_glBinormal3dvEXT #define GLEE_H_DEFINED_glBinormal3dvEXT typedef void (APIENTRYP GLEEPFNGLBINORMAL3DVEXTPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLBINORMAL3DVEXTPROC GLeeFuncPtr_glBinormal3dvEXT; #define glBinormal3dvEXT GLeeFuncPtr_glBinormal3dvEXT #endif #ifndef GLEE_H_DEFINED_glBinormal3fEXT #define GLEE_H_DEFINED_glBinormal3fEXT typedef void (APIENTRYP GLEEPFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); GLEE_EXTERN GLEEPFNGLBINORMAL3FEXTPROC GLeeFuncPtr_glBinormal3fEXT; #define glBinormal3fEXT GLeeFuncPtr_glBinormal3fEXT #endif #ifndef GLEE_H_DEFINED_glBinormal3fvEXT #define GLEE_H_DEFINED_glBinormal3fvEXT typedef void (APIENTRYP GLEEPFNGLBINORMAL3FVEXTPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLBINORMAL3FVEXTPROC GLeeFuncPtr_glBinormal3fvEXT; #define glBinormal3fvEXT GLeeFuncPtr_glBinormal3fvEXT #endif #ifndef GLEE_H_DEFINED_glBinormal3iEXT #define GLEE_H_DEFINED_glBinormal3iEXT typedef void (APIENTRYP GLEEPFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); GLEE_EXTERN GLEEPFNGLBINORMAL3IEXTPROC GLeeFuncPtr_glBinormal3iEXT; #define glBinormal3iEXT GLeeFuncPtr_glBinormal3iEXT #endif #ifndef GLEE_H_DEFINED_glBinormal3ivEXT #define GLEE_H_DEFINED_glBinormal3ivEXT typedef void (APIENTRYP GLEEPFNGLBINORMAL3IVEXTPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLBINORMAL3IVEXTPROC GLeeFuncPtr_glBinormal3ivEXT; #define glBinormal3ivEXT GLeeFuncPtr_glBinormal3ivEXT #endif #ifndef GLEE_H_DEFINED_glBinormal3sEXT #define GLEE_H_DEFINED_glBinormal3sEXT typedef void (APIENTRYP GLEEPFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); GLEE_EXTERN GLEEPFNGLBINORMAL3SEXTPROC GLeeFuncPtr_glBinormal3sEXT; #define glBinormal3sEXT GLeeFuncPtr_glBinormal3sEXT #endif #ifndef GLEE_H_DEFINED_glBinormal3svEXT #define GLEE_H_DEFINED_glBinormal3svEXT typedef void (APIENTRYP GLEEPFNGLBINORMAL3SVEXTPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLBINORMAL3SVEXTPROC GLeeFuncPtr_glBinormal3svEXT; #define glBinormal3svEXT GLeeFuncPtr_glBinormal3svEXT #endif #ifndef GLEE_H_DEFINED_glTangentPointerEXT #define GLEE_H_DEFINED_glTangentPointerEXT typedef void (APIENTRYP GLEEPFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLTANGENTPOINTEREXTPROC GLeeFuncPtr_glTangentPointerEXT; #define glTangentPointerEXT GLeeFuncPtr_glTangentPointerEXT #endif #ifndef GLEE_H_DEFINED_glBinormalPointerEXT #define GLEE_H_DEFINED_glBinormalPointerEXT typedef void (APIENTRYP GLEEPFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLBINORMALPOINTEREXTPROC GLeeFuncPtr_glBinormalPointerEXT; #define glBinormalPointerEXT GLeeFuncPtr_glBinormalPointerEXT #endif #endif /* GL_EXT_texture_env_combine */ #ifndef GL_EXT_texture_env_combine #define GL_EXT_texture_env_combine 1 #define __GLEE_GL_EXT_texture_env_combine 1 /* Constants */ #define GL_COMBINE_EXT 0x8570 #define GL_COMBINE_RGB_EXT 0x8571 #define GL_COMBINE_ALPHA_EXT 0x8572 #define GL_RGB_SCALE_EXT 0x8573 #define GL_ADD_SIGNED_EXT 0x8574 #define GL_INTERPOLATE_EXT 0x8575 #define GL_CONSTANT_EXT 0x8576 #define GL_PRIMARY_COLOR_EXT 0x8577 #define GL_PREVIOUS_EXT 0x8578 #define GL_SOURCE0_RGB_EXT 0x8580 #define GL_SOURCE1_RGB_EXT 0x8581 #define GL_SOURCE2_RGB_EXT 0x8582 #define GL_SOURCE0_ALPHA_EXT 0x8588 #define GL_SOURCE1_ALPHA_EXT 0x8589 #define GL_SOURCE2_ALPHA_EXT 0x858A #define GL_OPERAND0_RGB_EXT 0x8590 #define GL_OPERAND1_RGB_EXT 0x8591 #define GL_OPERAND2_RGB_EXT 0x8592 #define GL_OPERAND0_ALPHA_EXT 0x8598 #define GL_OPERAND1_ALPHA_EXT 0x8599 #define GL_OPERAND2_ALPHA_EXT 0x859A #endif /* GL_APPLE_specular_vector */ #ifndef GL_APPLE_specular_vector #define GL_APPLE_specular_vector 1 #define __GLEE_GL_APPLE_specular_vector 1 /* Constants */ #define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 #endif /* GL_APPLE_transform_hint */ #ifndef GL_APPLE_transform_hint #define GL_APPLE_transform_hint 1 #define __GLEE_GL_APPLE_transform_hint 1 /* Constants */ #define GL_TRANSFORM_HINT_APPLE 0x85B1 #endif /* GL_SGIX_fog_scale */ #ifndef GL_SGIX_fog_scale #define GL_SGIX_fog_scale 1 #define __GLEE_GL_SGIX_fog_scale 1 /* Constants */ #define GL_FOG_SCALE_SGIX 0x81FC #define GL_FOG_SCALE_VALUE_SGIX 0x81FD #endif /* GL_SUNX_constant_data */ #ifndef GL_SUNX_constant_data #define GL_SUNX_constant_data 1 #define __GLEE_GL_SUNX_constant_data 1 /* Constants */ #define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 #define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 #ifndef GLEE_H_DEFINED_glFinishTextureSUNX #define GLEE_H_DEFINED_glFinishTextureSUNX typedef void (APIENTRYP GLEEPFNGLFINISHTEXTURESUNXPROC) (); GLEE_EXTERN GLEEPFNGLFINISHTEXTURESUNXPROC GLeeFuncPtr_glFinishTextureSUNX; #define glFinishTextureSUNX GLeeFuncPtr_glFinishTextureSUNX #endif #endif /* GL_SUN_global_alpha */ #ifndef GL_SUN_global_alpha #define GL_SUN_global_alpha 1 #define __GLEE_GL_SUN_global_alpha 1 /* Constants */ #define GL_GLOBAL_ALPHA_SUN 0x81D9 #define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA #ifndef GLEE_H_DEFINED_glGlobalAlphaFactorbSUN #define GLEE_H_DEFINED_glGlobalAlphaFactorbSUN typedef void (APIENTRYP GLEEPFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); GLEE_EXTERN GLEEPFNGLGLOBALALPHAFACTORBSUNPROC GLeeFuncPtr_glGlobalAlphaFactorbSUN; #define glGlobalAlphaFactorbSUN GLeeFuncPtr_glGlobalAlphaFactorbSUN #endif #ifndef GLEE_H_DEFINED_glGlobalAlphaFactorsSUN #define GLEE_H_DEFINED_glGlobalAlphaFactorsSUN typedef void (APIENTRYP GLEEPFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); GLEE_EXTERN GLEEPFNGLGLOBALALPHAFACTORSSUNPROC GLeeFuncPtr_glGlobalAlphaFactorsSUN; #define glGlobalAlphaFactorsSUN GLeeFuncPtr_glGlobalAlphaFactorsSUN #endif #ifndef GLEE_H_DEFINED_glGlobalAlphaFactoriSUN #define GLEE_H_DEFINED_glGlobalAlphaFactoriSUN typedef void (APIENTRYP GLEEPFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); GLEE_EXTERN GLEEPFNGLGLOBALALPHAFACTORISUNPROC GLeeFuncPtr_glGlobalAlphaFactoriSUN; #define glGlobalAlphaFactoriSUN GLeeFuncPtr_glGlobalAlphaFactoriSUN #endif #ifndef GLEE_H_DEFINED_glGlobalAlphaFactorfSUN #define GLEE_H_DEFINED_glGlobalAlphaFactorfSUN typedef void (APIENTRYP GLEEPFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); GLEE_EXTERN GLEEPFNGLGLOBALALPHAFACTORFSUNPROC GLeeFuncPtr_glGlobalAlphaFactorfSUN; #define glGlobalAlphaFactorfSUN GLeeFuncPtr_glGlobalAlphaFactorfSUN #endif #ifndef GLEE_H_DEFINED_glGlobalAlphaFactordSUN #define GLEE_H_DEFINED_glGlobalAlphaFactordSUN typedef void (APIENTRYP GLEEPFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); GLEE_EXTERN GLEEPFNGLGLOBALALPHAFACTORDSUNPROC GLeeFuncPtr_glGlobalAlphaFactordSUN; #define glGlobalAlphaFactordSUN GLeeFuncPtr_glGlobalAlphaFactordSUN #endif #ifndef GLEE_H_DEFINED_glGlobalAlphaFactorubSUN #define GLEE_H_DEFINED_glGlobalAlphaFactorubSUN typedef void (APIENTRYP GLEEPFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); GLEE_EXTERN GLEEPFNGLGLOBALALPHAFACTORUBSUNPROC GLeeFuncPtr_glGlobalAlphaFactorubSUN; #define glGlobalAlphaFactorubSUN GLeeFuncPtr_glGlobalAlphaFactorubSUN #endif #ifndef GLEE_H_DEFINED_glGlobalAlphaFactorusSUN #define GLEE_H_DEFINED_glGlobalAlphaFactorusSUN typedef void (APIENTRYP GLEEPFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); GLEE_EXTERN GLEEPFNGLGLOBALALPHAFACTORUSSUNPROC GLeeFuncPtr_glGlobalAlphaFactorusSUN; #define glGlobalAlphaFactorusSUN GLeeFuncPtr_glGlobalAlphaFactorusSUN #endif #ifndef GLEE_H_DEFINED_glGlobalAlphaFactoruiSUN #define GLEE_H_DEFINED_glGlobalAlphaFactoruiSUN typedef void (APIENTRYP GLEEPFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); GLEE_EXTERN GLEEPFNGLGLOBALALPHAFACTORUISUNPROC GLeeFuncPtr_glGlobalAlphaFactoruiSUN; #define glGlobalAlphaFactoruiSUN GLeeFuncPtr_glGlobalAlphaFactoruiSUN #endif #endif /* GL_SUN_triangle_list */ #ifndef GL_SUN_triangle_list #define GL_SUN_triangle_list 1 #define __GLEE_GL_SUN_triangle_list 1 /* Constants */ #define GL_RESTART_SUN 0x0001 #define GL_REPLACE_MIDDLE_SUN 0x0002 #define GL_REPLACE_OLDEST_SUN 0x0003 #define GL_TRIANGLE_LIST_SUN 0x81D7 #define GL_REPLACEMENT_CODE_SUN 0x81D8 #define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 #define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 #define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 #define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 #define GL_R1UI_V3F_SUN 0x85C4 #define GL_R1UI_C4UB_V3F_SUN 0x85C5 #define GL_R1UI_C3F_V3F_SUN 0x85C6 #define GL_R1UI_N3F_V3F_SUN 0x85C7 #define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 #define GL_R1UI_T2F_V3F_SUN 0x85C9 #define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA #define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB #ifndef GLEE_H_DEFINED_glReplacementCodeuiSUN #define GLEE_H_DEFINED_glReplacementCodeuiSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUISUNPROC GLeeFuncPtr_glReplacementCodeuiSUN; #define glReplacementCodeuiSUN GLeeFuncPtr_glReplacementCodeuiSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeusSUN #define GLEE_H_DEFINED_glReplacementCodeusSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUSSUNPROC GLeeFuncPtr_glReplacementCodeusSUN; #define glReplacementCodeusSUN GLeeFuncPtr_glReplacementCodeusSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeubSUN #define GLEE_H_DEFINED_glReplacementCodeubSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUBSUNPROC GLeeFuncPtr_glReplacementCodeubSUN; #define glReplacementCodeubSUN GLeeFuncPtr_glReplacementCodeubSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuivSUN #define GLEE_H_DEFINED_glReplacementCodeuivSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint * code); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUIVSUNPROC GLeeFuncPtr_glReplacementCodeuivSUN; #define glReplacementCodeuivSUN GLeeFuncPtr_glReplacementCodeuivSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeusvSUN #define GLEE_H_DEFINED_glReplacementCodeusvSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort * code); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUSVSUNPROC GLeeFuncPtr_glReplacementCodeusvSUN; #define glReplacementCodeusvSUN GLeeFuncPtr_glReplacementCodeusvSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeubvSUN #define GLEE_H_DEFINED_glReplacementCodeubvSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte * code); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUBVSUNPROC GLeeFuncPtr_glReplacementCodeubvSUN; #define glReplacementCodeubvSUN GLeeFuncPtr_glReplacementCodeubvSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodePointerSUN #define GLEE_H_DEFINED_glReplacementCodePointerSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* * pointer); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEPOINTERSUNPROC GLeeFuncPtr_glReplacementCodePointerSUN; #define glReplacementCodePointerSUN GLeeFuncPtr_glReplacementCodePointerSUN #endif #endif /* GL_SUN_vertex */ #ifndef GL_SUN_vertex #define GL_SUN_vertex 1 #define __GLEE_GL_SUN_vertex 1 /* Constants */ #ifndef GLEE_H_DEFINED_glColor4ubVertex2fSUN #define GLEE_H_DEFINED_glColor4ubVertex2fSUN typedef void (APIENTRYP GLEEPFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); GLEE_EXTERN GLEEPFNGLCOLOR4UBVERTEX2FSUNPROC GLeeFuncPtr_glColor4ubVertex2fSUN; #define glColor4ubVertex2fSUN GLeeFuncPtr_glColor4ubVertex2fSUN #endif #ifndef GLEE_H_DEFINED_glColor4ubVertex2fvSUN #define GLEE_H_DEFINED_glColor4ubVertex2fvSUN typedef void (APIENTRYP GLEEPFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte * c, const GLfloat * v); GLEE_EXTERN GLEEPFNGLCOLOR4UBVERTEX2FVSUNPROC GLeeFuncPtr_glColor4ubVertex2fvSUN; #define glColor4ubVertex2fvSUN GLeeFuncPtr_glColor4ubVertex2fvSUN #endif #ifndef GLEE_H_DEFINED_glColor4ubVertex3fSUN #define GLEE_H_DEFINED_glColor4ubVertex3fSUN typedef void (APIENTRYP GLEEPFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLCOLOR4UBVERTEX3FSUNPROC GLeeFuncPtr_glColor4ubVertex3fSUN; #define glColor4ubVertex3fSUN GLeeFuncPtr_glColor4ubVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glColor4ubVertex3fvSUN #define GLEE_H_DEFINED_glColor4ubVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte * c, const GLfloat * v); GLEE_EXTERN GLEEPFNGLCOLOR4UBVERTEX3FVSUNPROC GLeeFuncPtr_glColor4ubVertex3fvSUN; #define glColor4ubVertex3fvSUN GLeeFuncPtr_glColor4ubVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glColor3fVertex3fSUN #define GLEE_H_DEFINED_glColor3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLCOLOR3FVERTEX3FSUNPROC GLeeFuncPtr_glColor3fVertex3fSUN; #define glColor3fVertex3fSUN GLeeFuncPtr_glColor3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glColor3fVertex3fvSUN #define GLEE_H_DEFINED_glColor3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat * c, const GLfloat * v); GLEE_EXTERN GLEEPFNGLCOLOR3FVERTEX3FVSUNPROC GLeeFuncPtr_glColor3fVertex3fvSUN; #define glColor3fVertex3fvSUN GLeeFuncPtr_glColor3fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glNormal3fVertex3fSUN #define GLEE_H_DEFINED_glNormal3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glNormal3fVertex3fSUN; #define glNormal3fVertex3fSUN GLeeFuncPtr_glNormal3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glNormal3fVertex3fvSUN #define GLEE_H_DEFINED_glNormal3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat * n, const GLfloat * v); GLEE_EXTERN GLEEPFNGLNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glNormal3fVertex3fvSUN; #define glNormal3fVertex3fvSUN GLeeFuncPtr_glNormal3fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glColor4fNormal3fVertex3fSUN #define GLEE_H_DEFINED_glColor4fNormal3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glColor4fNormal3fVertex3fSUN; #define glColor4fNormal3fVertex3fSUN GLeeFuncPtr_glColor4fNormal3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glColor4fNormal3fVertex3fvSUN #define GLEE_H_DEFINED_glColor4fNormal3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat * c, const GLfloat * n, const GLfloat * v); GLEE_EXTERN GLEEPFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glColor4fNormal3fVertex3fvSUN; #define glColor4fNormal3fVertex3fvSUN GLeeFuncPtr_glColor4fNormal3fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord2fVertex3fSUN #define GLEE_H_DEFINED_glTexCoord2fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLTEXCOORD2FVERTEX3FSUNPROC GLeeFuncPtr_glTexCoord2fVertex3fSUN; #define glTexCoord2fVertex3fSUN GLeeFuncPtr_glTexCoord2fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord2fVertex3fvSUN #define GLEE_H_DEFINED_glTexCoord2fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat * tc, const GLfloat * v); GLEE_EXTERN GLEEPFNGLTEXCOORD2FVERTEX3FVSUNPROC GLeeFuncPtr_glTexCoord2fVertex3fvSUN; #define glTexCoord2fVertex3fvSUN GLeeFuncPtr_glTexCoord2fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord4fVertex4fSUN #define GLEE_H_DEFINED_glTexCoord4fVertex4fSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLTEXCOORD4FVERTEX4FSUNPROC GLeeFuncPtr_glTexCoord4fVertex4fSUN; #define glTexCoord4fVertex4fSUN GLeeFuncPtr_glTexCoord4fVertex4fSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord4fVertex4fvSUN #define GLEE_H_DEFINED_glTexCoord4fVertex4fvSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat * tc, const GLfloat * v); GLEE_EXTERN GLEEPFNGLTEXCOORD4FVERTEX4FVSUNPROC GLeeFuncPtr_glTexCoord4fVertex4fvSUN; #define glTexCoord4fVertex4fvSUN GLeeFuncPtr_glTexCoord4fVertex4fvSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord2fColor4ubVertex3fSUN #define GLEE_H_DEFINED_glTexCoord2fColor4ubVertex3fSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC GLeeFuncPtr_glTexCoord2fColor4ubVertex3fSUN; #define glTexCoord2fColor4ubVertex3fSUN GLeeFuncPtr_glTexCoord2fColor4ubVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord2fColor4ubVertex3fvSUN #define GLEE_H_DEFINED_glTexCoord2fColor4ubVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat * tc, const GLubyte * c, const GLfloat * v); GLEE_EXTERN GLEEPFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC GLeeFuncPtr_glTexCoord2fColor4ubVertex3fvSUN; #define glTexCoord2fColor4ubVertex3fvSUN GLeeFuncPtr_glTexCoord2fColor4ubVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord2fColor3fVertex3fSUN #define GLEE_H_DEFINED_glTexCoord2fColor3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC GLeeFuncPtr_glTexCoord2fColor3fVertex3fSUN; #define glTexCoord2fColor3fVertex3fSUN GLeeFuncPtr_glTexCoord2fColor3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord2fColor3fVertex3fvSUN #define GLEE_H_DEFINED_glTexCoord2fColor3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat * tc, const GLfloat * c, const GLfloat * v); GLEE_EXTERN GLEEPFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC GLeeFuncPtr_glTexCoord2fColor3fVertex3fvSUN; #define glTexCoord2fColor3fVertex3fvSUN GLeeFuncPtr_glTexCoord2fColor3fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord2fNormal3fVertex3fSUN #define GLEE_H_DEFINED_glTexCoord2fNormal3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glTexCoord2fNormal3fVertex3fSUN; #define glTexCoord2fNormal3fVertex3fSUN GLeeFuncPtr_glTexCoord2fNormal3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord2fNormal3fVertex3fvSUN #define GLEE_H_DEFINED_glTexCoord2fNormal3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat * tc, const GLfloat * n, const GLfloat * v); GLEE_EXTERN GLEEPFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glTexCoord2fNormal3fVertex3fvSUN; #define glTexCoord2fNormal3fVertex3fvSUN GLeeFuncPtr_glTexCoord2fNormal3fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord2fColor4fNormal3fVertex3fSUN #define GLEE_H_DEFINED_glTexCoord2fColor4fNormal3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glTexCoord2fColor4fNormal3fVertex3fSUN; #define glTexCoord2fColor4fNormal3fVertex3fSUN GLeeFuncPtr_glTexCoord2fColor4fNormal3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord2fColor4fNormal3fVertex3fvSUN #define GLEE_H_DEFINED_glTexCoord2fColor4fNormal3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v); GLEE_EXTERN GLEEPFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glTexCoord2fColor4fNormal3fVertex3fvSUN; #define glTexCoord2fColor4fNormal3fVertex3fvSUN GLeeFuncPtr_glTexCoord2fColor4fNormal3fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord4fColor4fNormal3fVertex4fSUN #define GLEE_H_DEFINED_glTexCoord4fColor4fNormal3fVertex4fSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC GLeeFuncPtr_glTexCoord4fColor4fNormal3fVertex4fSUN; #define glTexCoord4fColor4fNormal3fVertex4fSUN GLeeFuncPtr_glTexCoord4fColor4fNormal3fVertex4fSUN #endif #ifndef GLEE_H_DEFINED_glTexCoord4fColor4fNormal3fVertex4fvSUN #define GLEE_H_DEFINED_glTexCoord4fColor4fNormal3fVertex4fvSUN typedef void (APIENTRYP GLEEPFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v); GLEE_EXTERN GLEEPFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC GLeeFuncPtr_glTexCoord4fColor4fNormal3fVertex4fvSUN; #define glTexCoord4fColor4fNormal3fVertex4fvSUN GLeeFuncPtr_glTexCoord4fColor4fNormal3fVertex4fvSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiVertex3fSUN #define GLEE_H_DEFINED_glReplacementCodeuiVertex3fSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiVertex3fSUN; #define glReplacementCodeuiVertex3fSUN GLeeFuncPtr_glReplacementCodeuiVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiVertex3fvSUN #define GLEE_H_DEFINED_glReplacementCodeuiVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * v); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiVertex3fvSUN; #define glReplacementCodeuiVertex3fvSUN GLeeFuncPtr_glReplacementCodeuiVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiColor4ubVertex3fSUN #define GLEE_H_DEFINED_glReplacementCodeuiColor4ubVertex3fSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiColor4ubVertex3fSUN; #define glReplacementCodeuiColor4ubVertex3fSUN GLeeFuncPtr_glReplacementCodeuiColor4ubVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiColor4ubVertex3fvSUN #define GLEE_H_DEFINED_glReplacementCodeuiColor4ubVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint * rc, const GLubyte * c, const GLfloat * v); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiColor4ubVertex3fvSUN; #define glReplacementCodeuiColor4ubVertex3fvSUN GLeeFuncPtr_glReplacementCodeuiColor4ubVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiColor3fVertex3fSUN #define GLEE_H_DEFINED_glReplacementCodeuiColor3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiColor3fVertex3fSUN; #define glReplacementCodeuiColor3fVertex3fSUN GLeeFuncPtr_glReplacementCodeuiColor3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiColor3fVertex3fvSUN #define GLEE_H_DEFINED_glReplacementCodeuiColor3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * c, const GLfloat * v); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiColor3fVertex3fvSUN; #define glReplacementCodeuiColor3fVertex3fvSUN GLeeFuncPtr_glReplacementCodeuiColor3fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiNormal3fVertex3fSUN #define GLEE_H_DEFINED_glReplacementCodeuiNormal3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiNormal3fVertex3fSUN; #define glReplacementCodeuiNormal3fVertex3fSUN GLeeFuncPtr_glReplacementCodeuiNormal3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiNormal3fVertex3fvSUN #define GLEE_H_DEFINED_glReplacementCodeuiNormal3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * n, const GLfloat * v); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiNormal3fVertex3fvSUN; #define glReplacementCodeuiNormal3fVertex3fvSUN GLeeFuncPtr_glReplacementCodeuiNormal3fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiColor4fNormal3fVertex3fSUN #define GLEE_H_DEFINED_glReplacementCodeuiColor4fNormal3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiColor4fNormal3fVertex3fSUN; #define glReplacementCodeuiColor4fNormal3fVertex3fSUN GLeeFuncPtr_glReplacementCodeuiColor4fNormal3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiColor4fNormal3fVertex3fvSUN #define GLEE_H_DEFINED_glReplacementCodeuiColor4fNormal3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * c, const GLfloat * n, const GLfloat * v); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiColor4fNormal3fVertex3fvSUN; #define glReplacementCodeuiColor4fNormal3fVertex3fvSUN GLeeFuncPtr_glReplacementCodeuiColor4fNormal3fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fVertex3fSUN #define GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fVertex3fSUN; #define glReplacementCodeuiTexCoord2fVertex3fSUN GLeeFuncPtr_glReplacementCodeuiTexCoord2fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fVertex3fvSUN #define GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * tc, const GLfloat * v); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fVertex3fvSUN; #define glReplacementCodeuiTexCoord2fVertex3fvSUN GLeeFuncPtr_glReplacementCodeuiTexCoord2fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN #define GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN; #define glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN GLeeFuncPtr_glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN #define GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * tc, const GLfloat * n, const GLfloat * v); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN; #define glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN GLeeFuncPtr_glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN #define GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN; #define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN GLeeFuncPtr_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN #endif #ifndef GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN #define GLEE_H_DEFINED_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN typedef void (APIENTRYP GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint * rc, const GLfloat * tc, const GLfloat * c, const GLfloat * n, const GLfloat * v); GLEE_EXTERN GLEEPFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC GLeeFuncPtr_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN; #define glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN GLeeFuncPtr_glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN #endif #endif /* GL_EXT_blend_func_separate */ #ifndef GL_EXT_blend_func_separate #define GL_EXT_blend_func_separate 1 #define __GLEE_GL_EXT_blend_func_separate 1 /* Constants */ #define GL_BLEND_DST_RGB_EXT 0x80C8 #define GL_BLEND_SRC_RGB_EXT 0x80C9 #define GL_BLEND_DST_ALPHA_EXT 0x80CA #define GL_BLEND_SRC_ALPHA_EXT 0x80CB #ifndef GLEE_H_DEFINED_glBlendFuncSeparateEXT #define GLEE_H_DEFINED_glBlendFuncSeparateEXT typedef void (APIENTRYP GLEEPFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); GLEE_EXTERN GLEEPFNGLBLENDFUNCSEPARATEEXTPROC GLeeFuncPtr_glBlendFuncSeparateEXT; #define glBlendFuncSeparateEXT GLeeFuncPtr_glBlendFuncSeparateEXT #endif #endif /* GL_INGR_color_clamp */ #ifndef GL_INGR_color_clamp #define GL_INGR_color_clamp 1 #define __GLEE_GL_INGR_color_clamp 1 /* Constants */ #define GL_RED_MIN_CLAMP_INGR 0x8560 #define GL_GREEN_MIN_CLAMP_INGR 0x8561 #define GL_BLUE_MIN_CLAMP_INGR 0x8562 #define GL_ALPHA_MIN_CLAMP_INGR 0x8563 #define GL_RED_MAX_CLAMP_INGR 0x8564 #define GL_GREEN_MAX_CLAMP_INGR 0x8565 #define GL_BLUE_MAX_CLAMP_INGR 0x8566 #define GL_ALPHA_MAX_CLAMP_INGR 0x8567 #endif /* GL_INGR_interlace_read */ #ifndef GL_INGR_interlace_read #define GL_INGR_interlace_read 1 #define __GLEE_GL_INGR_interlace_read 1 /* Constants */ #define GL_INTERLACE_READ_INGR 0x8568 #endif /* GL_EXT_stencil_wrap */ #ifndef GL_EXT_stencil_wrap #define GL_EXT_stencil_wrap 1 #define __GLEE_GL_EXT_stencil_wrap 1 /* Constants */ #define GL_INCR_WRAP_EXT 0x8507 #define GL_DECR_WRAP_EXT 0x8508 #endif /* GL_EXT_422_pixels */ #ifndef GL_EXT_422_pixels #define GL_EXT_422_pixels 1 #define __GLEE_GL_EXT_422_pixels 1 /* Constants */ #define GL_422_EXT 0x80CC #define GL_422_REV_EXT 0x80CD #define GL_422_AVERAGE_EXT 0x80CE #define GL_422_REV_AVERAGE_EXT 0x80CF #endif /* GL_NV_texgen_reflection */ #ifndef GL_NV_texgen_reflection #define GL_NV_texgen_reflection 1 #define __GLEE_GL_NV_texgen_reflection 1 /* Constants */ #define GL_NORMAL_MAP_NV 0x8511 #define GL_REFLECTION_MAP_NV 0x8512 #endif /* GL_EXT_texture_cube_map */ #ifndef GL_EXT_texture_cube_map #define GL_EXT_texture_cube_map 1 #define __GLEE_GL_EXT_texture_cube_map 1 /* Constants */ #define GL_NORMAL_MAP_EXT 0x8511 #define GL_REFLECTION_MAP_EXT 0x8512 #define GL_TEXTURE_CUBE_MAP_EXT 0x8513 #define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A #define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C #endif /* GL_SUN_convolution_border_modes */ #ifndef GL_SUN_convolution_border_modes #define GL_SUN_convolution_border_modes 1 #define __GLEE_GL_SUN_convolution_border_modes 1 /* Constants */ #define GL_WRAP_BORDER_SUN 0x81D4 #endif /* GL_EXT_texture_env_add */ #ifndef GL_EXT_texture_env_add #define GL_EXT_texture_env_add 1 #define __GLEE_GL_EXT_texture_env_add 1 /* Constants */ #endif /* GL_EXT_texture_lod_bias */ #ifndef GL_EXT_texture_lod_bias #define GL_EXT_texture_lod_bias 1 #define __GLEE_GL_EXT_texture_lod_bias 1 /* Constants */ #define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD #define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 #define GL_TEXTURE_LOD_BIAS_EXT 0x8501 #endif /* GL_EXT_texture_filter_anisotropic */ #ifndef GL_EXT_texture_filter_anisotropic #define GL_EXT_texture_filter_anisotropic 1 #define __GLEE_GL_EXT_texture_filter_anisotropic 1 /* Constants */ #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF #endif /* GL_EXT_vertex_weighting */ #ifndef GL_EXT_vertex_weighting #define GL_EXT_vertex_weighting 1 #define __GLEE_GL_EXT_vertex_weighting 1 /* Constants */ #define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH #define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 #define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX #define GL_MODELVIEW1_MATRIX_EXT 0x8506 #define GL_VERTEX_WEIGHTING_EXT 0x8509 #define GL_MODELVIEW0_EXT GL_MODELVIEW #define GL_MODELVIEW1_EXT 0x850A #define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B #define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C #define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D #define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E #define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F #define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 #ifndef GLEE_H_DEFINED_glVertexWeightfEXT #define GLEE_H_DEFINED_glVertexWeightfEXT typedef void (APIENTRYP GLEEPFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); GLEE_EXTERN GLEEPFNGLVERTEXWEIGHTFEXTPROC GLeeFuncPtr_glVertexWeightfEXT; #define glVertexWeightfEXT GLeeFuncPtr_glVertexWeightfEXT #endif #ifndef GLEE_H_DEFINED_glVertexWeightfvEXT #define GLEE_H_DEFINED_glVertexWeightfvEXT typedef void (APIENTRYP GLEEPFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat * weight); GLEE_EXTERN GLEEPFNGLVERTEXWEIGHTFVEXTPROC GLeeFuncPtr_glVertexWeightfvEXT; #define glVertexWeightfvEXT GLeeFuncPtr_glVertexWeightfvEXT #endif #ifndef GLEE_H_DEFINED_glVertexWeightPointerEXT #define GLEE_H_DEFINED_glVertexWeightPointerEXT typedef void (APIENTRYP GLEEPFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLVERTEXWEIGHTPOINTEREXTPROC GLeeFuncPtr_glVertexWeightPointerEXT; #define glVertexWeightPointerEXT GLeeFuncPtr_glVertexWeightPointerEXT #endif #endif /* GL_NV_light_max_exponent */ #ifndef GL_NV_light_max_exponent #define GL_NV_light_max_exponent 1 #define __GLEE_GL_NV_light_max_exponent 1 /* Constants */ #define GL_MAX_SHININESS_NV 0x8504 #define GL_MAX_SPOT_EXPONENT_NV 0x8505 #endif /* GL_NV_vertex_array_range */ #ifndef GL_NV_vertex_array_range #define GL_NV_vertex_array_range 1 #define __GLEE_GL_NV_vertex_array_range 1 /* Constants */ #define GL_VERTEX_ARRAY_RANGE_NV 0x851D #define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E #define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F #define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 #define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 #ifndef GLEE_H_DEFINED_glFlushVertexArrayRangeNV #define GLEE_H_DEFINED_glFlushVertexArrayRangeNV typedef void (APIENTRYP GLEEPFNGLFLUSHVERTEXARRAYRANGENVPROC) (); GLEE_EXTERN GLEEPFNGLFLUSHVERTEXARRAYRANGENVPROC GLeeFuncPtr_glFlushVertexArrayRangeNV; #define glFlushVertexArrayRangeNV GLeeFuncPtr_glFlushVertexArrayRangeNV #endif #ifndef GLEE_H_DEFINED_glVertexArrayRangeNV #define GLEE_H_DEFINED_glVertexArrayRangeNV typedef void (APIENTRYP GLEEPFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLVERTEXARRAYRANGENVPROC GLeeFuncPtr_glVertexArrayRangeNV; #define glVertexArrayRangeNV GLeeFuncPtr_glVertexArrayRangeNV #endif #endif /* GL_NV_register_combiners */ #ifndef GL_NV_register_combiners #define GL_NV_register_combiners 1 #define __GLEE_GL_NV_register_combiners 1 /* Constants */ #define GL_REGISTER_COMBINERS_NV 0x8522 #define GL_VARIABLE_A_NV 0x8523 #define GL_VARIABLE_B_NV 0x8524 #define GL_VARIABLE_C_NV 0x8525 #define GL_VARIABLE_D_NV 0x8526 #define GL_VARIABLE_E_NV 0x8527 #define GL_VARIABLE_F_NV 0x8528 #define GL_VARIABLE_G_NV 0x8529 #define GL_CONSTANT_COLOR0_NV 0x852A #define GL_CONSTANT_COLOR1_NV 0x852B #define GL_PRIMARY_COLOR_NV 0x852C #define GL_SECONDARY_COLOR_NV 0x852D #define GL_SPARE0_NV 0x852E #define GL_SPARE1_NV 0x852F #define GL_DISCARD_NV 0x8530 #define GL_E_TIMES_F_NV 0x8531 #define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 #define GL_UNSIGNED_IDENTITY_NV 0x8536 #define GL_UNSIGNED_INVERT_NV 0x8537 #define GL_EXPAND_NORMAL_NV 0x8538 #define GL_EXPAND_NEGATE_NV 0x8539 #define GL_HALF_BIAS_NORMAL_NV 0x853A #define GL_HALF_BIAS_NEGATE_NV 0x853B #define GL_SIGNED_IDENTITY_NV 0x853C #define GL_SIGNED_NEGATE_NV 0x853D #define GL_SCALE_BY_TWO_NV 0x853E #define GL_SCALE_BY_FOUR_NV 0x853F #define GL_SCALE_BY_ONE_HALF_NV 0x8540 #define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 #define GL_COMBINER_INPUT_NV 0x8542 #define GL_COMBINER_MAPPING_NV 0x8543 #define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 #define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 #define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 #define GL_COMBINER_MUX_SUM_NV 0x8547 #define GL_COMBINER_SCALE_NV 0x8548 #define GL_COMBINER_BIAS_NV 0x8549 #define GL_COMBINER_AB_OUTPUT_NV 0x854A #define GL_COMBINER_CD_OUTPUT_NV 0x854B #define GL_COMBINER_SUM_OUTPUT_NV 0x854C #define GL_MAX_GENERAL_COMBINERS_NV 0x854D #define GL_NUM_GENERAL_COMBINERS_NV 0x854E #define GL_COLOR_SUM_CLAMP_NV 0x854F #define GL_COMBINER0_NV 0x8550 #define GL_COMBINER1_NV 0x8551 #define GL_COMBINER2_NV 0x8552 #define GL_COMBINER3_NV 0x8553 #define GL_COMBINER4_NV 0x8554 #define GL_COMBINER5_NV 0x8555 #define GL_COMBINER6_NV 0x8556 #define GL_COMBINER7_NV 0x8557 #ifndef GLEE_H_DEFINED_glCombinerParameterfvNV #define GLEE_H_DEFINED_glCombinerParameterfvNV typedef void (APIENTRYP GLEEPFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLCOMBINERPARAMETERFVNVPROC GLeeFuncPtr_glCombinerParameterfvNV; #define glCombinerParameterfvNV GLeeFuncPtr_glCombinerParameterfvNV #endif #ifndef GLEE_H_DEFINED_glCombinerParameterfNV #define GLEE_H_DEFINED_glCombinerParameterfNV typedef void (APIENTRYP GLEEPFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLCOMBINERPARAMETERFNVPROC GLeeFuncPtr_glCombinerParameterfNV; #define glCombinerParameterfNV GLeeFuncPtr_glCombinerParameterfNV #endif #ifndef GLEE_H_DEFINED_glCombinerParameterivNV #define GLEE_H_DEFINED_glCombinerParameterivNV typedef void (APIENTRYP GLEEPFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLCOMBINERPARAMETERIVNVPROC GLeeFuncPtr_glCombinerParameterivNV; #define glCombinerParameterivNV GLeeFuncPtr_glCombinerParameterivNV #endif #ifndef GLEE_H_DEFINED_glCombinerParameteriNV #define GLEE_H_DEFINED_glCombinerParameteriNV typedef void (APIENTRYP GLEEPFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLCOMBINERPARAMETERINVPROC GLeeFuncPtr_glCombinerParameteriNV; #define glCombinerParameteriNV GLeeFuncPtr_glCombinerParameteriNV #endif #ifndef GLEE_H_DEFINED_glCombinerInputNV #define GLEE_H_DEFINED_glCombinerInputNV typedef void (APIENTRYP GLEEPFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); GLEE_EXTERN GLEEPFNGLCOMBINERINPUTNVPROC GLeeFuncPtr_glCombinerInputNV; #define glCombinerInputNV GLeeFuncPtr_glCombinerInputNV #endif #ifndef GLEE_H_DEFINED_glCombinerOutputNV #define GLEE_H_DEFINED_glCombinerOutputNV typedef void (APIENTRYP GLEEPFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); GLEE_EXTERN GLEEPFNGLCOMBINEROUTPUTNVPROC GLeeFuncPtr_glCombinerOutputNV; #define glCombinerOutputNV GLeeFuncPtr_glCombinerOutputNV #endif #ifndef GLEE_H_DEFINED_glFinalCombinerInputNV #define GLEE_H_DEFINED_glFinalCombinerInputNV typedef void (APIENTRYP GLEEPFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); GLEE_EXTERN GLEEPFNGLFINALCOMBINERINPUTNVPROC GLeeFuncPtr_glFinalCombinerInputNV; #define glFinalCombinerInputNV GLeeFuncPtr_glFinalCombinerInputNV #endif #ifndef GLEE_H_DEFINED_glGetCombinerInputParameterfvNV #define GLEE_H_DEFINED_glGetCombinerInputParameterfvNV typedef void (APIENTRYP GLEEPFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETCOMBINERINPUTPARAMETERFVNVPROC GLeeFuncPtr_glGetCombinerInputParameterfvNV; #define glGetCombinerInputParameterfvNV GLeeFuncPtr_glGetCombinerInputParameterfvNV #endif #ifndef GLEE_H_DEFINED_glGetCombinerInputParameterivNV #define GLEE_H_DEFINED_glGetCombinerInputParameterivNV typedef void (APIENTRYP GLEEPFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETCOMBINERINPUTPARAMETERIVNVPROC GLeeFuncPtr_glGetCombinerInputParameterivNV; #define glGetCombinerInputParameterivNV GLeeFuncPtr_glGetCombinerInputParameterivNV #endif #ifndef GLEE_H_DEFINED_glGetCombinerOutputParameterfvNV #define GLEE_H_DEFINED_glGetCombinerOutputParameterfvNV typedef void (APIENTRYP GLEEPFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC GLeeFuncPtr_glGetCombinerOutputParameterfvNV; #define glGetCombinerOutputParameterfvNV GLeeFuncPtr_glGetCombinerOutputParameterfvNV #endif #ifndef GLEE_H_DEFINED_glGetCombinerOutputParameterivNV #define GLEE_H_DEFINED_glGetCombinerOutputParameterivNV typedef void (APIENTRYP GLEEPFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC GLeeFuncPtr_glGetCombinerOutputParameterivNV; #define glGetCombinerOutputParameterivNV GLeeFuncPtr_glGetCombinerOutputParameterivNV #endif #ifndef GLEE_H_DEFINED_glGetFinalCombinerInputParameterfvNV #define GLEE_H_DEFINED_glGetFinalCombinerInputParameterfvNV typedef void (APIENTRYP GLEEPFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC GLeeFuncPtr_glGetFinalCombinerInputParameterfvNV; #define glGetFinalCombinerInputParameterfvNV GLeeFuncPtr_glGetFinalCombinerInputParameterfvNV #endif #ifndef GLEE_H_DEFINED_glGetFinalCombinerInputParameterivNV #define GLEE_H_DEFINED_glGetFinalCombinerInputParameterivNV typedef void (APIENTRYP GLEEPFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC GLeeFuncPtr_glGetFinalCombinerInputParameterivNV; #define glGetFinalCombinerInputParameterivNV GLeeFuncPtr_glGetFinalCombinerInputParameterivNV #endif #endif /* GL_NV_fog_distance */ #ifndef GL_NV_fog_distance #define GL_NV_fog_distance 1 #define __GLEE_GL_NV_fog_distance 1 /* Constants */ #define GL_FOG_DISTANCE_MODE_NV 0x855A #define GL_EYE_RADIAL_NV 0x855B #define GL_EYE_PLANE_ABSOLUTE_NV 0x855C #endif /* GL_NV_texgen_emboss */ #ifndef GL_NV_texgen_emboss #define GL_NV_texgen_emboss 1 #define __GLEE_GL_NV_texgen_emboss 1 /* Constants */ #define GL_EMBOSS_LIGHT_NV 0x855D #define GL_EMBOSS_CONSTANT_NV 0x855E #define GL_EMBOSS_MAP_NV 0x855F #endif /* GL_NV_blend_square */ #ifndef GL_NV_blend_square #define GL_NV_blend_square 1 #define __GLEE_GL_NV_blend_square 1 /* Constants */ #endif /* GL_NV_texture_env_combine4 */ #ifndef GL_NV_texture_env_combine4 #define GL_NV_texture_env_combine4 1 #define __GLEE_GL_NV_texture_env_combine4 1 /* Constants */ #define GL_COMBINE4_NV 0x8503 #define GL_SOURCE3_RGB_NV 0x8583 #define GL_SOURCE3_ALPHA_NV 0x858B #define GL_OPERAND3_RGB_NV 0x8593 #define GL_OPERAND3_ALPHA_NV 0x859B #endif /* GL_MESA_resize_buffers */ #ifndef GL_MESA_resize_buffers #define GL_MESA_resize_buffers 1 #define __GLEE_GL_MESA_resize_buffers 1 /* Constants */ #ifndef GLEE_H_DEFINED_glResizeBuffersMESA #define GLEE_H_DEFINED_glResizeBuffersMESA typedef void (APIENTRYP GLEEPFNGLRESIZEBUFFERSMESAPROC) (); GLEE_EXTERN GLEEPFNGLRESIZEBUFFERSMESAPROC GLeeFuncPtr_glResizeBuffersMESA; #define glResizeBuffersMESA GLeeFuncPtr_glResizeBuffersMESA #endif #endif /* GL_MESA_window_pos */ #ifndef GL_MESA_window_pos #define GL_MESA_window_pos 1 #define __GLEE_GL_MESA_window_pos 1 /* Constants */ #ifndef GLEE_H_DEFINED_glWindowPos2dMESA #define GLEE_H_DEFINED_glWindowPos2dMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2DMESAPROC GLeeFuncPtr_glWindowPos2dMESA; #define glWindowPos2dMESA GLeeFuncPtr_glWindowPos2dMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos2dvMESA #define GLEE_H_DEFINED_glWindowPos2dvMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2DVMESAPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2DVMESAPROC GLeeFuncPtr_glWindowPos2dvMESA; #define glWindowPos2dvMESA GLeeFuncPtr_glWindowPos2dvMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos2fMESA #define GLEE_H_DEFINED_glWindowPos2fMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2FMESAPROC GLeeFuncPtr_glWindowPos2fMESA; #define glWindowPos2fMESA GLeeFuncPtr_glWindowPos2fMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos2fvMESA #define GLEE_H_DEFINED_glWindowPos2fvMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2FVMESAPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2FVMESAPROC GLeeFuncPtr_glWindowPos2fvMESA; #define glWindowPos2fvMESA GLeeFuncPtr_glWindowPos2fvMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos2iMESA #define GLEE_H_DEFINED_glWindowPos2iMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2IMESAPROC GLeeFuncPtr_glWindowPos2iMESA; #define glWindowPos2iMESA GLeeFuncPtr_glWindowPos2iMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos2ivMESA #define GLEE_H_DEFINED_glWindowPos2ivMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2IVMESAPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2IVMESAPROC GLeeFuncPtr_glWindowPos2ivMESA; #define glWindowPos2ivMESA GLeeFuncPtr_glWindowPos2ivMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos2sMESA #define GLEE_H_DEFINED_glWindowPos2sMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); GLEE_EXTERN GLEEPFNGLWINDOWPOS2SMESAPROC GLeeFuncPtr_glWindowPos2sMESA; #define glWindowPos2sMESA GLeeFuncPtr_glWindowPos2sMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos2svMESA #define GLEE_H_DEFINED_glWindowPos2svMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS2SVMESAPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS2SVMESAPROC GLeeFuncPtr_glWindowPos2svMESA; #define glWindowPos2svMESA GLeeFuncPtr_glWindowPos2svMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos3dMESA #define GLEE_H_DEFINED_glWindowPos3dMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3DMESAPROC GLeeFuncPtr_glWindowPos3dMESA; #define glWindowPos3dMESA GLeeFuncPtr_glWindowPos3dMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos3dvMESA #define GLEE_H_DEFINED_glWindowPos3dvMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3DVMESAPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3DVMESAPROC GLeeFuncPtr_glWindowPos3dvMESA; #define glWindowPos3dvMESA GLeeFuncPtr_glWindowPos3dvMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos3fMESA #define GLEE_H_DEFINED_glWindowPos3fMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3FMESAPROC GLeeFuncPtr_glWindowPos3fMESA; #define glWindowPos3fMESA GLeeFuncPtr_glWindowPos3fMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos3fvMESA #define GLEE_H_DEFINED_glWindowPos3fvMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3FVMESAPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3FVMESAPROC GLeeFuncPtr_glWindowPos3fvMESA; #define glWindowPos3fvMESA GLeeFuncPtr_glWindowPos3fvMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos3iMESA #define GLEE_H_DEFINED_glWindowPos3iMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3IMESAPROC GLeeFuncPtr_glWindowPos3iMESA; #define glWindowPos3iMESA GLeeFuncPtr_glWindowPos3iMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos3ivMESA #define GLEE_H_DEFINED_glWindowPos3ivMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3IVMESAPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3IVMESAPROC GLeeFuncPtr_glWindowPos3ivMESA; #define glWindowPos3ivMESA GLeeFuncPtr_glWindowPos3ivMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos3sMESA #define GLEE_H_DEFINED_glWindowPos3sMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); GLEE_EXTERN GLEEPFNGLWINDOWPOS3SMESAPROC GLeeFuncPtr_glWindowPos3sMESA; #define glWindowPos3sMESA GLeeFuncPtr_glWindowPos3sMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos3svMESA #define GLEE_H_DEFINED_glWindowPos3svMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS3SVMESAPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS3SVMESAPROC GLeeFuncPtr_glWindowPos3svMESA; #define glWindowPos3svMESA GLeeFuncPtr_glWindowPos3svMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos4dMESA #define GLEE_H_DEFINED_glWindowPos4dMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLWINDOWPOS4DMESAPROC GLeeFuncPtr_glWindowPos4dMESA; #define glWindowPos4dMESA GLeeFuncPtr_glWindowPos4dMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos4dvMESA #define GLEE_H_DEFINED_glWindowPos4dvMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS4DVMESAPROC) (const GLdouble * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS4DVMESAPROC GLeeFuncPtr_glWindowPos4dvMESA; #define glWindowPos4dvMESA GLeeFuncPtr_glWindowPos4dvMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos4fMESA #define GLEE_H_DEFINED_glWindowPos4fMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLWINDOWPOS4FMESAPROC GLeeFuncPtr_glWindowPos4fMESA; #define glWindowPos4fMESA GLeeFuncPtr_glWindowPos4fMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos4fvMESA #define GLEE_H_DEFINED_glWindowPos4fvMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS4FVMESAPROC) (const GLfloat * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS4FVMESAPROC GLeeFuncPtr_glWindowPos4fvMESA; #define glWindowPos4fvMESA GLeeFuncPtr_glWindowPos4fvMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos4iMESA #define GLEE_H_DEFINED_glWindowPos4iMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); GLEE_EXTERN GLEEPFNGLWINDOWPOS4IMESAPROC GLeeFuncPtr_glWindowPos4iMESA; #define glWindowPos4iMESA GLeeFuncPtr_glWindowPos4iMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos4ivMESA #define GLEE_H_DEFINED_glWindowPos4ivMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS4IVMESAPROC) (const GLint * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS4IVMESAPROC GLeeFuncPtr_glWindowPos4ivMESA; #define glWindowPos4ivMESA GLeeFuncPtr_glWindowPos4ivMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos4sMESA #define GLEE_H_DEFINED_glWindowPos4sMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); GLEE_EXTERN GLEEPFNGLWINDOWPOS4SMESAPROC GLeeFuncPtr_glWindowPos4sMESA; #define glWindowPos4sMESA GLeeFuncPtr_glWindowPos4sMESA #endif #ifndef GLEE_H_DEFINED_glWindowPos4svMESA #define GLEE_H_DEFINED_glWindowPos4svMESA typedef void (APIENTRYP GLEEPFNGLWINDOWPOS4SVMESAPROC) (const GLshort * v); GLEE_EXTERN GLEEPFNGLWINDOWPOS4SVMESAPROC GLeeFuncPtr_glWindowPos4svMESA; #define glWindowPos4svMESA GLeeFuncPtr_glWindowPos4svMESA #endif #endif /* GL_EXT_texture_compression_s3tc */ #ifndef GL_EXT_texture_compression_s3tc #define GL_EXT_texture_compression_s3tc 1 #define __GLEE_GL_EXT_texture_compression_s3tc 1 /* Constants */ #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 #endif /* GL_IBM_cull_vertex */ #ifndef GL_IBM_cull_vertex #define GL_IBM_cull_vertex 1 #define __GLEE_GL_IBM_cull_vertex 1 /* Constants */ #define GL_CULL_VERTEX_IBM 103050 #endif /* GL_IBM_multimode_draw_arrays */ #ifndef GL_IBM_multimode_draw_arrays #define GL_IBM_multimode_draw_arrays 1 #define __GLEE_GL_IBM_multimode_draw_arrays 1 /* Constants */ #ifndef GLEE_H_DEFINED_glMultiModeDrawArraysIBM #define GLEE_H_DEFINED_glMultiModeDrawArraysIBM typedef void (APIENTRYP GLEEPFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); GLEE_EXTERN GLEEPFNGLMULTIMODEDRAWARRAYSIBMPROC GLeeFuncPtr_glMultiModeDrawArraysIBM; #define glMultiModeDrawArraysIBM GLeeFuncPtr_glMultiModeDrawArraysIBM #endif #ifndef GLEE_H_DEFINED_glMultiModeDrawElementsIBM #define GLEE_H_DEFINED_glMultiModeDrawElementsIBM typedef void (APIENTRYP GLEEPFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid* const * indices, GLsizei primcount, GLint modestride); GLEE_EXTERN GLEEPFNGLMULTIMODEDRAWELEMENTSIBMPROC GLeeFuncPtr_glMultiModeDrawElementsIBM; #define glMultiModeDrawElementsIBM GLeeFuncPtr_glMultiModeDrawElementsIBM #endif #endif /* GL_IBM_vertex_array_lists */ #ifndef GL_IBM_vertex_array_lists #define GL_IBM_vertex_array_lists 1 #define __GLEE_GL_IBM_vertex_array_lists 1 /* Constants */ #define GL_VERTEX_ARRAY_LIST_IBM 103070 #define GL_NORMAL_ARRAY_LIST_IBM 103071 #define GL_COLOR_ARRAY_LIST_IBM 103072 #define GL_INDEX_ARRAY_LIST_IBM 103073 #define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 #define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 #define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 #define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 #define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 #define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 #define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 #define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 #define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 #define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 #define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 #define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 #ifndef GLEE_H_DEFINED_glColorPointerListIBM #define GLEE_H_DEFINED_glColorPointerListIBM typedef void (APIENTRYP GLEEPFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride); GLEE_EXTERN GLEEPFNGLCOLORPOINTERLISTIBMPROC GLeeFuncPtr_glColorPointerListIBM; #define glColorPointerListIBM GLeeFuncPtr_glColorPointerListIBM #endif #ifndef GLEE_H_DEFINED_glSecondaryColorPointerListIBM #define GLEE_H_DEFINED_glSecondaryColorPointerListIBM typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride); GLEE_EXTERN GLEEPFNGLSECONDARYCOLORPOINTERLISTIBMPROC GLeeFuncPtr_glSecondaryColorPointerListIBM; #define glSecondaryColorPointerListIBM GLeeFuncPtr_glSecondaryColorPointerListIBM #endif #ifndef GLEE_H_DEFINED_glEdgeFlagPointerListIBM #define GLEE_H_DEFINED_glEdgeFlagPointerListIBM typedef void (APIENTRYP GLEEPFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* * pointer, GLint ptrstride); GLEE_EXTERN GLEEPFNGLEDGEFLAGPOINTERLISTIBMPROC GLeeFuncPtr_glEdgeFlagPointerListIBM; #define glEdgeFlagPointerListIBM GLeeFuncPtr_glEdgeFlagPointerListIBM #endif #ifndef GLEE_H_DEFINED_glFogCoordPointerListIBM #define GLEE_H_DEFINED_glFogCoordPointerListIBM typedef void (APIENTRYP GLEEPFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride); GLEE_EXTERN GLEEPFNGLFOGCOORDPOINTERLISTIBMPROC GLeeFuncPtr_glFogCoordPointerListIBM; #define glFogCoordPointerListIBM GLeeFuncPtr_glFogCoordPointerListIBM #endif #ifndef GLEE_H_DEFINED_glIndexPointerListIBM #define GLEE_H_DEFINED_glIndexPointerListIBM typedef void (APIENTRYP GLEEPFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride); GLEE_EXTERN GLEEPFNGLINDEXPOINTERLISTIBMPROC GLeeFuncPtr_glIndexPointerListIBM; #define glIndexPointerListIBM GLeeFuncPtr_glIndexPointerListIBM #endif #ifndef GLEE_H_DEFINED_glNormalPointerListIBM #define GLEE_H_DEFINED_glNormalPointerListIBM typedef void (APIENTRYP GLEEPFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride); GLEE_EXTERN GLEEPFNGLNORMALPOINTERLISTIBMPROC GLeeFuncPtr_glNormalPointerListIBM; #define glNormalPointerListIBM GLeeFuncPtr_glNormalPointerListIBM #endif #ifndef GLEE_H_DEFINED_glTexCoordPointerListIBM #define GLEE_H_DEFINED_glTexCoordPointerListIBM typedef void (APIENTRYP GLEEPFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride); GLEE_EXTERN GLEEPFNGLTEXCOORDPOINTERLISTIBMPROC GLeeFuncPtr_glTexCoordPointerListIBM; #define glTexCoordPointerListIBM GLeeFuncPtr_glTexCoordPointerListIBM #endif #ifndef GLEE_H_DEFINED_glVertexPointerListIBM #define GLEE_H_DEFINED_glVertexPointerListIBM typedef void (APIENTRYP GLEEPFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* * pointer, GLint ptrstride); GLEE_EXTERN GLEEPFNGLVERTEXPOINTERLISTIBMPROC GLeeFuncPtr_glVertexPointerListIBM; #define glVertexPointerListIBM GLeeFuncPtr_glVertexPointerListIBM #endif #endif /* GL_SGIX_subsample */ #ifndef GL_SGIX_subsample #define GL_SGIX_subsample 1 #define __GLEE_GL_SGIX_subsample 1 /* Constants */ #define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 #define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 #define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 #define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 #define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 #endif /* GL_SGIX_ycrcb_subsample */ #ifndef GL_SGIX_ycrcb_subsample #define GL_SGIX_ycrcb_subsample 1 #define __GLEE_GL_SGIX_ycrcb_subsample 1 /* Constants */ #endif /* GL_SGIX_ycrcba */ #ifndef GL_SGIX_ycrcba #define GL_SGIX_ycrcba 1 #define __GLEE_GL_SGIX_ycrcba 1 /* Constants */ #define GL_YCRCB_SGIX 0x8318 #define GL_YCRCBA_SGIX 0x8319 #endif /* GL_SGI_depth_pass_instrument */ #ifndef GL_SGI_depth_pass_instrument #define GL_SGI_depth_pass_instrument 1 #define __GLEE_GL_SGI_depth_pass_instrument 1 /* Constants */ #define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 #define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311 #define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312 #endif /* GL_3DFX_texture_compression_FXT1 */ #ifndef GL_3DFX_texture_compression_FXT1 #define GL_3DFX_texture_compression_FXT1 1 #define __GLEE_GL_3DFX_texture_compression_FXT1 1 /* Constants */ #define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 #define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 #endif /* GL_3DFX_multisample */ #ifndef GL_3DFX_multisample #define GL_3DFX_multisample 1 #define __GLEE_GL_3DFX_multisample 1 /* Constants */ #define GL_MULTISAMPLE_3DFX 0x86B2 #define GL_SAMPLE_BUFFERS_3DFX 0x86B3 #define GL_SAMPLES_3DFX 0x86B4 #define GL_MULTISAMPLE_BIT_3DFX 0x20000000 #endif /* GL_3DFX_tbuffer */ #ifndef GL_3DFX_tbuffer #define GL_3DFX_tbuffer 1 #define __GLEE_GL_3DFX_tbuffer 1 /* Constants */ #ifndef GLEE_H_DEFINED_glTbufferMask3DFX #define GLEE_H_DEFINED_glTbufferMask3DFX typedef void (APIENTRYP GLEEPFNGLTBUFFERMASK3DFXPROC) (GLuint mask); GLEE_EXTERN GLEEPFNGLTBUFFERMASK3DFXPROC GLeeFuncPtr_glTbufferMask3DFX; #define glTbufferMask3DFX GLeeFuncPtr_glTbufferMask3DFX #endif #endif /* GL_EXT_multisample */ #ifndef GL_EXT_multisample #define GL_EXT_multisample 1 #define __GLEE_GL_EXT_multisample 1 /* Constants */ #define GL_MULTISAMPLE_EXT 0x809D #define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E #define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F #define GL_SAMPLE_MASK_EXT 0x80A0 #define GL_1PASS_EXT 0x80A1 #define GL_2PASS_0_EXT 0x80A2 #define GL_2PASS_1_EXT 0x80A3 #define GL_4PASS_0_EXT 0x80A4 #define GL_4PASS_1_EXT 0x80A5 #define GL_4PASS_2_EXT 0x80A6 #define GL_4PASS_3_EXT 0x80A7 #define GL_SAMPLE_BUFFERS_EXT 0x80A8 #define GL_SAMPLES_EXT 0x80A9 #define GL_SAMPLE_MASK_VALUE_EXT 0x80AA #define GL_SAMPLE_MASK_INVERT_EXT 0x80AB #define GL_SAMPLE_PATTERN_EXT 0x80AC #define GL_MULTISAMPLE_BIT_EXT 0x20000000 #ifndef GLEE_H_DEFINED_glSampleMaskEXT #define GLEE_H_DEFINED_glSampleMaskEXT typedef void (APIENTRYP GLEEPFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); GLEE_EXTERN GLEEPFNGLSAMPLEMASKEXTPROC GLeeFuncPtr_glSampleMaskEXT; #define glSampleMaskEXT GLeeFuncPtr_glSampleMaskEXT #endif #ifndef GLEE_H_DEFINED_glSamplePatternEXT #define GLEE_H_DEFINED_glSamplePatternEXT typedef void (APIENTRYP GLEEPFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); GLEE_EXTERN GLEEPFNGLSAMPLEPATTERNEXTPROC GLeeFuncPtr_glSamplePatternEXT; #define glSamplePatternEXT GLeeFuncPtr_glSamplePatternEXT #endif #endif /* GL_SGIX_vertex_preclip */ #ifndef GL_SGIX_vertex_preclip #define GL_SGIX_vertex_preclip 1 #define __GLEE_GL_SGIX_vertex_preclip 1 /* Constants */ #define GL_VERTEX_PRECLIP_SGIX 0x83EE #define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF #endif /* GL_SGIX_convolution_accuracy */ #ifndef GL_SGIX_convolution_accuracy #define GL_SGIX_convolution_accuracy 1 #define __GLEE_GL_SGIX_convolution_accuracy 1 /* Constants */ #define GL_CONVOLUTION_HINT_SGIX 0x8316 #endif /* GL_SGIX_resample */ #ifndef GL_SGIX_resample #define GL_SGIX_resample 1 #define __GLEE_GL_SGIX_resample 1 /* Constants */ #define GL_PACK_RESAMPLE_SGIX 0x842C #define GL_UNPACK_RESAMPLE_SGIX 0x842D #define GL_RESAMPLE_REPLICATE_SGIX 0x842E #define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F #define GL_RESAMPLE_DECIMATE_SGIX 0x8430 #endif /* GL_SGIS_point_line_texgen */ #ifndef GL_SGIS_point_line_texgen #define GL_SGIS_point_line_texgen 1 #define __GLEE_GL_SGIS_point_line_texgen 1 /* Constants */ #define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 #define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 #define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 #define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 #define GL_EYE_POINT_SGIS 0x81F4 #define GL_OBJECT_POINT_SGIS 0x81F5 #define GL_EYE_LINE_SGIS 0x81F6 #define GL_OBJECT_LINE_SGIS 0x81F7 #endif /* GL_SGIS_texture_color_mask */ #ifndef GL_SGIS_texture_color_mask #define GL_SGIS_texture_color_mask 1 #define __GLEE_GL_SGIS_texture_color_mask 1 /* Constants */ #define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF #ifndef GLEE_H_DEFINED_glTextureColorMaskSGIS #define GLEE_H_DEFINED_glTextureColorMaskSGIS typedef void (APIENTRYP GLEEPFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); GLEE_EXTERN GLEEPFNGLTEXTURECOLORMASKSGISPROC GLeeFuncPtr_glTextureColorMaskSGIS; #define glTextureColorMaskSGIS GLeeFuncPtr_glTextureColorMaskSGIS #endif #endif /* GL_EXT_texture_env_dot3 */ #ifndef GL_EXT_texture_env_dot3 #define GL_EXT_texture_env_dot3 1 #define __GLEE_GL_EXT_texture_env_dot3 1 /* Constants */ #define GL_DOT3_RGB_EXT 0x8740 #define GL_DOT3_RGBA_EXT 0x8741 #endif /* GL_ATI_texture_mirror_once */ #ifndef GL_ATI_texture_mirror_once #define GL_ATI_texture_mirror_once 1 #define __GLEE_GL_ATI_texture_mirror_once 1 /* Constants */ #define GL_MIRROR_CLAMP_ATI 0x8742 #define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 #endif /* GL_NV_fence */ #ifndef GL_NV_fence #define GL_NV_fence 1 #define __GLEE_GL_NV_fence 1 /* Constants */ #define GL_ALL_COMPLETED_NV 0x84F2 #define GL_FENCE_STATUS_NV 0x84F3 #define GL_FENCE_CONDITION_NV 0x84F4 #ifndef GLEE_H_DEFINED_glDeleteFencesNV #define GLEE_H_DEFINED_glDeleteFencesNV typedef void (APIENTRYP GLEEPFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint * fences); GLEE_EXTERN GLEEPFNGLDELETEFENCESNVPROC GLeeFuncPtr_glDeleteFencesNV; #define glDeleteFencesNV GLeeFuncPtr_glDeleteFencesNV #endif #ifndef GLEE_H_DEFINED_glGenFencesNV #define GLEE_H_DEFINED_glGenFencesNV typedef void (APIENTRYP GLEEPFNGLGENFENCESNVPROC) (GLsizei n, GLuint * fences); GLEE_EXTERN GLEEPFNGLGENFENCESNVPROC GLeeFuncPtr_glGenFencesNV; #define glGenFencesNV GLeeFuncPtr_glGenFencesNV #endif #ifndef GLEE_H_DEFINED_glIsFenceNV #define GLEE_H_DEFINED_glIsFenceNV typedef GLboolean (APIENTRYP GLEEPFNGLISFENCENVPROC) (GLuint fence); GLEE_EXTERN GLEEPFNGLISFENCENVPROC GLeeFuncPtr_glIsFenceNV; #define glIsFenceNV GLeeFuncPtr_glIsFenceNV #endif #ifndef GLEE_H_DEFINED_glTestFenceNV #define GLEE_H_DEFINED_glTestFenceNV typedef GLboolean (APIENTRYP GLEEPFNGLTESTFENCENVPROC) (GLuint fence); GLEE_EXTERN GLEEPFNGLTESTFENCENVPROC GLeeFuncPtr_glTestFenceNV; #define glTestFenceNV GLeeFuncPtr_glTestFenceNV #endif #ifndef GLEE_H_DEFINED_glGetFenceivNV #define GLEE_H_DEFINED_glGetFenceivNV typedef void (APIENTRYP GLEEPFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETFENCEIVNVPROC GLeeFuncPtr_glGetFenceivNV; #define glGetFenceivNV GLeeFuncPtr_glGetFenceivNV #endif #ifndef GLEE_H_DEFINED_glFinishFenceNV #define GLEE_H_DEFINED_glFinishFenceNV typedef void (APIENTRYP GLEEPFNGLFINISHFENCENVPROC) (GLuint fence); GLEE_EXTERN GLEEPFNGLFINISHFENCENVPROC GLeeFuncPtr_glFinishFenceNV; #define glFinishFenceNV GLeeFuncPtr_glFinishFenceNV #endif #ifndef GLEE_H_DEFINED_glSetFenceNV #define GLEE_H_DEFINED_glSetFenceNV typedef void (APIENTRYP GLEEPFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); GLEE_EXTERN GLEEPFNGLSETFENCENVPROC GLeeFuncPtr_glSetFenceNV; #define glSetFenceNV GLeeFuncPtr_glSetFenceNV #endif #endif /* GL_IBM_texture_mirrored_repeat */ #ifndef GL_IBM_texture_mirrored_repeat #define GL_IBM_texture_mirrored_repeat 1 #define __GLEE_GL_IBM_texture_mirrored_repeat 1 /* Constants */ #define GL_MIRRORED_REPEAT_IBM 0x8370 #endif /* GL_NV_evaluators */ #ifndef GL_NV_evaluators #define GL_NV_evaluators 1 #define __GLEE_GL_NV_evaluators 1 /* Constants */ #define GL_EVAL_2D_NV 0x86C0 #define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 #define GL_MAP_TESSELLATION_NV 0x86C2 #define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 #define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 #define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 #define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 #define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 #define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 #define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 #define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA #define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB #define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC #define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD #define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE #define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF #define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 #define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 #define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 #define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 #define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 #define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 #define GL_MAX_MAP_TESSELLATION_NV 0x86D6 #define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 #ifndef GLEE_H_DEFINED_glMapControlPointsNV #define GLEE_H_DEFINED_glMapControlPointsNV typedef void (APIENTRYP GLEEPFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid * points); GLEE_EXTERN GLEEPFNGLMAPCONTROLPOINTSNVPROC GLeeFuncPtr_glMapControlPointsNV; #define glMapControlPointsNV GLeeFuncPtr_glMapControlPointsNV #endif #ifndef GLEE_H_DEFINED_glMapParameterivNV #define GLEE_H_DEFINED_glMapParameterivNV typedef void (APIENTRYP GLEEPFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLMAPPARAMETERIVNVPROC GLeeFuncPtr_glMapParameterivNV; #define glMapParameterivNV GLeeFuncPtr_glMapParameterivNV #endif #ifndef GLEE_H_DEFINED_glMapParameterfvNV #define GLEE_H_DEFINED_glMapParameterfvNV typedef void (APIENTRYP GLEEPFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLMAPPARAMETERFVNVPROC GLeeFuncPtr_glMapParameterfvNV; #define glMapParameterfvNV GLeeFuncPtr_glMapParameterfvNV #endif #ifndef GLEE_H_DEFINED_glGetMapControlPointsNV #define GLEE_H_DEFINED_glGetMapControlPointsNV typedef void (APIENTRYP GLEEPFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid * points); GLEE_EXTERN GLEEPFNGLGETMAPCONTROLPOINTSNVPROC GLeeFuncPtr_glGetMapControlPointsNV; #define glGetMapControlPointsNV GLeeFuncPtr_glGetMapControlPointsNV #endif #ifndef GLEE_H_DEFINED_glGetMapParameterivNV #define GLEE_H_DEFINED_glGetMapParameterivNV typedef void (APIENTRYP GLEEPFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETMAPPARAMETERIVNVPROC GLeeFuncPtr_glGetMapParameterivNV; #define glGetMapParameterivNV GLeeFuncPtr_glGetMapParameterivNV #endif #ifndef GLEE_H_DEFINED_glGetMapParameterfvNV #define GLEE_H_DEFINED_glGetMapParameterfvNV typedef void (APIENTRYP GLEEPFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETMAPPARAMETERFVNVPROC GLeeFuncPtr_glGetMapParameterfvNV; #define glGetMapParameterfvNV GLeeFuncPtr_glGetMapParameterfvNV #endif #ifndef GLEE_H_DEFINED_glGetMapAttribParameterivNV #define GLEE_H_DEFINED_glGetMapAttribParameterivNV typedef void (APIENTRYP GLEEPFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETMAPATTRIBPARAMETERIVNVPROC GLeeFuncPtr_glGetMapAttribParameterivNV; #define glGetMapAttribParameterivNV GLeeFuncPtr_glGetMapAttribParameterivNV #endif #ifndef GLEE_H_DEFINED_glGetMapAttribParameterfvNV #define GLEE_H_DEFINED_glGetMapAttribParameterfvNV typedef void (APIENTRYP GLEEPFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETMAPATTRIBPARAMETERFVNVPROC GLeeFuncPtr_glGetMapAttribParameterfvNV; #define glGetMapAttribParameterfvNV GLeeFuncPtr_glGetMapAttribParameterfvNV #endif #ifndef GLEE_H_DEFINED_glEvalMapsNV #define GLEE_H_DEFINED_glEvalMapsNV typedef void (APIENTRYP GLEEPFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); GLEE_EXTERN GLEEPFNGLEVALMAPSNVPROC GLeeFuncPtr_glEvalMapsNV; #define glEvalMapsNV GLeeFuncPtr_glEvalMapsNV #endif #endif /* GL_NV_packed_depth_stencil */ #ifndef GL_NV_packed_depth_stencil #define GL_NV_packed_depth_stencil 1 #define __GLEE_GL_NV_packed_depth_stencil 1 /* Constants */ #define GL_DEPTH_STENCIL_NV 0x84F9 #define GL_UNSIGNED_INT_24_8_NV 0x84FA #endif /* GL_NV_register_combiners2 */ #ifndef GL_NV_register_combiners2 #define GL_NV_register_combiners2 1 #define __GLEE_GL_NV_register_combiners2 1 /* Constants */ #define GL_PER_STAGE_CONSTANTS_NV 0x8535 #ifndef GLEE_H_DEFINED_glCombinerStageParameterfvNV #define GLEE_H_DEFINED_glCombinerStageParameterfvNV typedef void (APIENTRYP GLEEPFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLCOMBINERSTAGEPARAMETERFVNVPROC GLeeFuncPtr_glCombinerStageParameterfvNV; #define glCombinerStageParameterfvNV GLeeFuncPtr_glCombinerStageParameterfvNV #endif #ifndef GLEE_H_DEFINED_glGetCombinerStageParameterfvNV #define GLEE_H_DEFINED_glGetCombinerStageParameterfvNV typedef void (APIENTRYP GLEEPFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC GLeeFuncPtr_glGetCombinerStageParameterfvNV; #define glGetCombinerStageParameterfvNV GLeeFuncPtr_glGetCombinerStageParameterfvNV #endif #endif /* GL_NV_texture_compression_vtc */ #ifndef GL_NV_texture_compression_vtc #define GL_NV_texture_compression_vtc 1 #define __GLEE_GL_NV_texture_compression_vtc 1 /* Constants */ #endif /* GL_NV_texture_rectangle */ #ifndef GL_NV_texture_rectangle #define GL_NV_texture_rectangle 1 #define __GLEE_GL_NV_texture_rectangle 1 /* Constants */ #define GL_TEXTURE_RECTANGLE_NV 0x84F5 #define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 #define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 #define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 #endif /* GL_NV_texture_shader */ #ifndef GL_NV_texture_shader #define GL_NV_texture_shader 1 #define __GLEE_GL_NV_texture_shader 1 /* Constants */ #define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C #define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D #define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E #define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 #define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA #define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB #define GL_DSDT_MAG_INTENSITY_NV 0x86DC #define GL_SHADER_CONSISTENT_NV 0x86DD #define GL_TEXTURE_SHADER_NV 0x86DE #define GL_SHADER_OPERATION_NV 0x86DF #define GL_CULL_MODES_NV 0x86E0 #define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 #define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 #define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 #define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV #define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV #define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV #define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 #define GL_CONST_EYE_NV 0x86E5 #define GL_PASS_THROUGH_NV 0x86E6 #define GL_CULL_FRAGMENT_NV 0x86E7 #define GL_OFFSET_TEXTURE_2D_NV 0x86E8 #define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 #define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA #define GL_DOT_PRODUCT_NV 0x86EC #define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED #define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE #define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 #define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 #define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 #define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 #define GL_HILO_NV 0x86F4 #define GL_DSDT_NV 0x86F5 #define GL_DSDT_MAG_NV 0x86F6 #define GL_DSDT_MAG_VIB_NV 0x86F7 #define GL_HILO16_NV 0x86F8 #define GL_SIGNED_HILO_NV 0x86F9 #define GL_SIGNED_HILO16_NV 0x86FA #define GL_SIGNED_RGBA_NV 0x86FB #define GL_SIGNED_RGBA8_NV 0x86FC #define GL_SIGNED_RGB_NV 0x86FE #define GL_SIGNED_RGB8_NV 0x86FF #define GL_SIGNED_LUMINANCE_NV 0x8701 #define GL_SIGNED_LUMINANCE8_NV 0x8702 #define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 #define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 #define GL_SIGNED_ALPHA_NV 0x8705 #define GL_SIGNED_ALPHA8_NV 0x8706 #define GL_SIGNED_INTENSITY_NV 0x8707 #define GL_SIGNED_INTENSITY8_NV 0x8708 #define GL_DSDT8_NV 0x8709 #define GL_DSDT8_MAG8_NV 0x870A #define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B #define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C #define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D #define GL_HI_SCALE_NV 0x870E #define GL_LO_SCALE_NV 0x870F #define GL_DS_SCALE_NV 0x8710 #define GL_DT_SCALE_NV 0x8711 #define GL_MAGNITUDE_SCALE_NV 0x8712 #define GL_VIBRANCE_SCALE_NV 0x8713 #define GL_HI_BIAS_NV 0x8714 #define GL_LO_BIAS_NV 0x8715 #define GL_DS_BIAS_NV 0x8716 #define GL_DT_BIAS_NV 0x8717 #define GL_MAGNITUDE_BIAS_NV 0x8718 #define GL_VIBRANCE_BIAS_NV 0x8719 #define GL_TEXTURE_BORDER_VALUES_NV 0x871A #define GL_TEXTURE_HI_SIZE_NV 0x871B #define GL_TEXTURE_LO_SIZE_NV 0x871C #define GL_TEXTURE_DS_SIZE_NV 0x871D #define GL_TEXTURE_DT_SIZE_NV 0x871E #define GL_TEXTURE_MAG_SIZE_NV 0x871F #endif /* GL_NV_texture_shader2 */ #ifndef GL_NV_texture_shader2 #define GL_NV_texture_shader2 1 #define __GLEE_GL_NV_texture_shader2 1 /* Constants */ #define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF #endif /* GL_NV_vertex_array_range2 */ #ifndef GL_NV_vertex_array_range2 #define GL_NV_vertex_array_range2 1 #define __GLEE_GL_NV_vertex_array_range2 1 /* Constants */ #define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 #endif /* GL_NV_vertex_program */ #ifndef GL_NV_vertex_program #define GL_NV_vertex_program 1 #define __GLEE_GL_NV_vertex_program 1 /* Constants */ #define GL_VERTEX_PROGRAM_NV 0x8620 #define GL_VERTEX_STATE_PROGRAM_NV 0x8621 #define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 #define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 #define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 #define GL_CURRENT_ATTRIB_NV 0x8626 #define GL_PROGRAM_LENGTH_NV 0x8627 #define GL_PROGRAM_STRING_NV 0x8628 #define GL_MODELVIEW_PROJECTION_NV 0x8629 #define GL_IDENTITY_NV 0x862A #define GL_INVERSE_NV 0x862B #define GL_TRANSPOSE_NV 0x862C #define GL_INVERSE_TRANSPOSE_NV 0x862D #define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E #define GL_MAX_TRACK_MATRICES_NV 0x862F #define GL_MATRIX0_NV 0x8630 #define GL_MATRIX1_NV 0x8631 #define GL_MATRIX2_NV 0x8632 #define GL_MATRIX3_NV 0x8633 #define GL_MATRIX4_NV 0x8634 #define GL_MATRIX5_NV 0x8635 #define GL_MATRIX6_NV 0x8636 #define GL_MATRIX7_NV 0x8637 #define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 #define GL_CURRENT_MATRIX_NV 0x8641 #define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 #define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 #define GL_PROGRAM_PARAMETER_NV 0x8644 #define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 #define GL_PROGRAM_TARGET_NV 0x8646 #define GL_PROGRAM_RESIDENT_NV 0x8647 #define GL_TRACK_MATRIX_NV 0x8648 #define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 #define GL_VERTEX_PROGRAM_BINDING_NV 0x864A #define GL_PROGRAM_ERROR_POSITION_NV 0x864B #define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 #define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 #define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 #define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 #define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 #define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 #define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 #define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 #define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 #define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 #define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A #define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B #define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C #define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D #define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E #define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F #define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 #define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 #define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 #define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 #define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 #define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 #define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 #define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 #define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 #define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 #define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A #define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B #define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C #define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D #define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E #define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F #define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 #define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 #define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 #define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 #define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 #define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 #define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 #define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 #define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 #define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 #define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A #define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B #define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C #define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D #define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E #define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F #ifndef GLEE_H_DEFINED_glAreProgramsResidentNV #define GLEE_H_DEFINED_glAreProgramsResidentNV typedef GLboolean (APIENTRYP GLEEPFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint * programs, GLboolean * residences); GLEE_EXTERN GLEEPFNGLAREPROGRAMSRESIDENTNVPROC GLeeFuncPtr_glAreProgramsResidentNV; #define glAreProgramsResidentNV GLeeFuncPtr_glAreProgramsResidentNV #endif #ifndef GLEE_H_DEFINED_glBindProgramNV #define GLEE_H_DEFINED_glBindProgramNV typedef void (APIENTRYP GLEEPFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); GLEE_EXTERN GLEEPFNGLBINDPROGRAMNVPROC GLeeFuncPtr_glBindProgramNV; #define glBindProgramNV GLeeFuncPtr_glBindProgramNV #endif #ifndef GLEE_H_DEFINED_glDeleteProgramsNV #define GLEE_H_DEFINED_glDeleteProgramsNV typedef void (APIENTRYP GLEEPFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint * programs); GLEE_EXTERN GLEEPFNGLDELETEPROGRAMSNVPROC GLeeFuncPtr_glDeleteProgramsNV; #define glDeleteProgramsNV GLeeFuncPtr_glDeleteProgramsNV #endif #ifndef GLEE_H_DEFINED_glExecuteProgramNV #define GLEE_H_DEFINED_glExecuteProgramNV typedef void (APIENTRYP GLEEPFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat * params); GLEE_EXTERN GLEEPFNGLEXECUTEPROGRAMNVPROC GLeeFuncPtr_glExecuteProgramNV; #define glExecuteProgramNV GLeeFuncPtr_glExecuteProgramNV #endif #ifndef GLEE_H_DEFINED_glGenProgramsNV #define GLEE_H_DEFINED_glGenProgramsNV typedef void (APIENTRYP GLEEPFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint * programs); GLEE_EXTERN GLEEPFNGLGENPROGRAMSNVPROC GLeeFuncPtr_glGenProgramsNV; #define glGenProgramsNV GLeeFuncPtr_glGenProgramsNV #endif #ifndef GLEE_H_DEFINED_glGetProgramParameterdvNV #define GLEE_H_DEFINED_glGetProgramParameterdvNV typedef void (APIENTRYP GLEEPFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMPARAMETERDVNVPROC GLeeFuncPtr_glGetProgramParameterdvNV; #define glGetProgramParameterdvNV GLeeFuncPtr_glGetProgramParameterdvNV #endif #ifndef GLEE_H_DEFINED_glGetProgramParameterfvNV #define GLEE_H_DEFINED_glGetProgramParameterfvNV typedef void (APIENTRYP GLEEPFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMPARAMETERFVNVPROC GLeeFuncPtr_glGetProgramParameterfvNV; #define glGetProgramParameterfvNV GLeeFuncPtr_glGetProgramParameterfvNV #endif #ifndef GLEE_H_DEFINED_glGetProgramivNV #define GLEE_H_DEFINED_glGetProgramivNV typedef void (APIENTRYP GLEEPFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMIVNVPROC GLeeFuncPtr_glGetProgramivNV; #define glGetProgramivNV GLeeFuncPtr_glGetProgramivNV #endif #ifndef GLEE_H_DEFINED_glGetProgramStringNV #define GLEE_H_DEFINED_glGetProgramStringNV typedef void (APIENTRYP GLEEPFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte * program); GLEE_EXTERN GLEEPFNGLGETPROGRAMSTRINGNVPROC GLeeFuncPtr_glGetProgramStringNV; #define glGetProgramStringNV GLeeFuncPtr_glGetProgramStringNV #endif #ifndef GLEE_H_DEFINED_glGetTrackMatrixivNV #define GLEE_H_DEFINED_glGetTrackMatrixivNV typedef void (APIENTRYP GLEEPFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETTRACKMATRIXIVNVPROC GLeeFuncPtr_glGetTrackMatrixivNV; #define glGetTrackMatrixivNV GLeeFuncPtr_glGetTrackMatrixivNV #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribdvNV #define GLEE_H_DEFINED_glGetVertexAttribdvNV typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBDVNVPROC GLeeFuncPtr_glGetVertexAttribdvNV; #define glGetVertexAttribdvNV GLeeFuncPtr_glGetVertexAttribdvNV #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribfvNV #define GLEE_H_DEFINED_glGetVertexAttribfvNV typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBFVNVPROC GLeeFuncPtr_glGetVertexAttribfvNV; #define glGetVertexAttribfvNV GLeeFuncPtr_glGetVertexAttribfvNV #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribivNV #define GLEE_H_DEFINED_glGetVertexAttribivNV typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBIVNVPROC GLeeFuncPtr_glGetVertexAttribivNV; #define glGetVertexAttribivNV GLeeFuncPtr_glGetVertexAttribivNV #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribPointervNV #define GLEE_H_DEFINED_glGetVertexAttribPointervNV typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* * pointer); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBPOINTERVNVPROC GLeeFuncPtr_glGetVertexAttribPointervNV; #define glGetVertexAttribPointervNV GLeeFuncPtr_glGetVertexAttribPointervNV #endif #ifndef GLEE_H_DEFINED_glIsProgramNV #define GLEE_H_DEFINED_glIsProgramNV typedef GLboolean (APIENTRYP GLEEPFNGLISPROGRAMNVPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLISPROGRAMNVPROC GLeeFuncPtr_glIsProgramNV; #define glIsProgramNV GLeeFuncPtr_glIsProgramNV #endif #ifndef GLEE_H_DEFINED_glLoadProgramNV #define GLEE_H_DEFINED_glLoadProgramNV typedef void (APIENTRYP GLEEPFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte * program); GLEE_EXTERN GLEEPFNGLLOADPROGRAMNVPROC GLeeFuncPtr_glLoadProgramNV; #define glLoadProgramNV GLeeFuncPtr_glLoadProgramNV #endif #ifndef GLEE_H_DEFINED_glProgramParameter4dNV #define GLEE_H_DEFINED_glProgramParameter4dNV typedef void (APIENTRYP GLEEPFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLPROGRAMPARAMETER4DNVPROC GLeeFuncPtr_glProgramParameter4dNV; #define glProgramParameter4dNV GLeeFuncPtr_glProgramParameter4dNV #endif #ifndef GLEE_H_DEFINED_glProgramParameter4dvNV #define GLEE_H_DEFINED_glProgramParameter4dvNV typedef void (APIENTRYP GLEEPFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLPROGRAMPARAMETER4DVNVPROC GLeeFuncPtr_glProgramParameter4dvNV; #define glProgramParameter4dvNV GLeeFuncPtr_glProgramParameter4dvNV #endif #ifndef GLEE_H_DEFINED_glProgramParameter4fNV #define GLEE_H_DEFINED_glProgramParameter4fNV typedef void (APIENTRYP GLEEPFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLPROGRAMPARAMETER4FNVPROC GLeeFuncPtr_glProgramParameter4fNV; #define glProgramParameter4fNV GLeeFuncPtr_glProgramParameter4fNV #endif #ifndef GLEE_H_DEFINED_glProgramParameter4fvNV #define GLEE_H_DEFINED_glProgramParameter4fvNV typedef void (APIENTRYP GLEEPFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLPROGRAMPARAMETER4FVNVPROC GLeeFuncPtr_glProgramParameter4fvNV; #define glProgramParameter4fvNV GLeeFuncPtr_glProgramParameter4fvNV #endif #ifndef GLEE_H_DEFINED_glProgramParameters4dvNV #define GLEE_H_DEFINED_glProgramParameters4dvNV typedef void (APIENTRYP GLEEPFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble * v); GLEE_EXTERN GLEEPFNGLPROGRAMPARAMETERS4DVNVPROC GLeeFuncPtr_glProgramParameters4dvNV; #define glProgramParameters4dvNV GLeeFuncPtr_glProgramParameters4dvNV #endif #ifndef GLEE_H_DEFINED_glProgramParameters4fvNV #define GLEE_H_DEFINED_glProgramParameters4fvNV typedef void (APIENTRYP GLEEPFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat * v); GLEE_EXTERN GLEEPFNGLPROGRAMPARAMETERS4FVNVPROC GLeeFuncPtr_glProgramParameters4fvNV; #define glProgramParameters4fvNV GLeeFuncPtr_glProgramParameters4fvNV #endif #ifndef GLEE_H_DEFINED_glRequestResidentProgramsNV #define GLEE_H_DEFINED_glRequestResidentProgramsNV typedef void (APIENTRYP GLEEPFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint * programs); GLEE_EXTERN GLEEPFNGLREQUESTRESIDENTPROGRAMSNVPROC GLeeFuncPtr_glRequestResidentProgramsNV; #define glRequestResidentProgramsNV GLeeFuncPtr_glRequestResidentProgramsNV #endif #ifndef GLEE_H_DEFINED_glTrackMatrixNV #define GLEE_H_DEFINED_glTrackMatrixNV typedef void (APIENTRYP GLEEPFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); GLEE_EXTERN GLEEPFNGLTRACKMATRIXNVPROC GLeeFuncPtr_glTrackMatrixNV; #define glTrackMatrixNV GLeeFuncPtr_glTrackMatrixNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribPointerNV #define GLEE_H_DEFINED_glVertexAttribPointerNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBPOINTERNVPROC GLeeFuncPtr_glVertexAttribPointerNV; #define glVertexAttribPointerNV GLeeFuncPtr_glVertexAttribPointerNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1dNV #define GLEE_H_DEFINED_glVertexAttrib1dNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1DNVPROC GLeeFuncPtr_glVertexAttrib1dNV; #define glVertexAttrib1dNV GLeeFuncPtr_glVertexAttrib1dNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1dvNV #define GLEE_H_DEFINED_glVertexAttrib1dvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1DVNVPROC GLeeFuncPtr_glVertexAttrib1dvNV; #define glVertexAttrib1dvNV GLeeFuncPtr_glVertexAttrib1dvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1fNV #define GLEE_H_DEFINED_glVertexAttrib1fNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1FNVPROC GLeeFuncPtr_glVertexAttrib1fNV; #define glVertexAttrib1fNV GLeeFuncPtr_glVertexAttrib1fNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1fvNV #define GLEE_H_DEFINED_glVertexAttrib1fvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1FVNVPROC GLeeFuncPtr_glVertexAttrib1fvNV; #define glVertexAttrib1fvNV GLeeFuncPtr_glVertexAttrib1fvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1sNV #define GLEE_H_DEFINED_glVertexAttrib1sNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1SNVPROC GLeeFuncPtr_glVertexAttrib1sNV; #define glVertexAttrib1sNV GLeeFuncPtr_glVertexAttrib1sNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1svNV #define GLEE_H_DEFINED_glVertexAttrib1svNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1SVNVPROC GLeeFuncPtr_glVertexAttrib1svNV; #define glVertexAttrib1svNV GLeeFuncPtr_glVertexAttrib1svNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2dNV #define GLEE_H_DEFINED_glVertexAttrib2dNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2DNVPROC GLeeFuncPtr_glVertexAttrib2dNV; #define glVertexAttrib2dNV GLeeFuncPtr_glVertexAttrib2dNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2dvNV #define GLEE_H_DEFINED_glVertexAttrib2dvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2DVNVPROC GLeeFuncPtr_glVertexAttrib2dvNV; #define glVertexAttrib2dvNV GLeeFuncPtr_glVertexAttrib2dvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2fNV #define GLEE_H_DEFINED_glVertexAttrib2fNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2FNVPROC GLeeFuncPtr_glVertexAttrib2fNV; #define glVertexAttrib2fNV GLeeFuncPtr_glVertexAttrib2fNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2fvNV #define GLEE_H_DEFINED_glVertexAttrib2fvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2FVNVPROC GLeeFuncPtr_glVertexAttrib2fvNV; #define glVertexAttrib2fvNV GLeeFuncPtr_glVertexAttrib2fvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2sNV #define GLEE_H_DEFINED_glVertexAttrib2sNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2SNVPROC GLeeFuncPtr_glVertexAttrib2sNV; #define glVertexAttrib2sNV GLeeFuncPtr_glVertexAttrib2sNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2svNV #define GLEE_H_DEFINED_glVertexAttrib2svNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2SVNVPROC GLeeFuncPtr_glVertexAttrib2svNV; #define glVertexAttrib2svNV GLeeFuncPtr_glVertexAttrib2svNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3dNV #define GLEE_H_DEFINED_glVertexAttrib3dNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3DNVPROC GLeeFuncPtr_glVertexAttrib3dNV; #define glVertexAttrib3dNV GLeeFuncPtr_glVertexAttrib3dNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3dvNV #define GLEE_H_DEFINED_glVertexAttrib3dvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3DVNVPROC GLeeFuncPtr_glVertexAttrib3dvNV; #define glVertexAttrib3dvNV GLeeFuncPtr_glVertexAttrib3dvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3fNV #define GLEE_H_DEFINED_glVertexAttrib3fNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3FNVPROC GLeeFuncPtr_glVertexAttrib3fNV; #define glVertexAttrib3fNV GLeeFuncPtr_glVertexAttrib3fNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3fvNV #define GLEE_H_DEFINED_glVertexAttrib3fvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3FVNVPROC GLeeFuncPtr_glVertexAttrib3fvNV; #define glVertexAttrib3fvNV GLeeFuncPtr_glVertexAttrib3fvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3sNV #define GLEE_H_DEFINED_glVertexAttrib3sNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3SNVPROC GLeeFuncPtr_glVertexAttrib3sNV; #define glVertexAttrib3sNV GLeeFuncPtr_glVertexAttrib3sNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3svNV #define GLEE_H_DEFINED_glVertexAttrib3svNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3SVNVPROC GLeeFuncPtr_glVertexAttrib3svNV; #define glVertexAttrib3svNV GLeeFuncPtr_glVertexAttrib3svNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4dNV #define GLEE_H_DEFINED_glVertexAttrib4dNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4DNVPROC GLeeFuncPtr_glVertexAttrib4dNV; #define glVertexAttrib4dNV GLeeFuncPtr_glVertexAttrib4dNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4dvNV #define GLEE_H_DEFINED_glVertexAttrib4dvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4DVNVPROC GLeeFuncPtr_glVertexAttrib4dvNV; #define glVertexAttrib4dvNV GLeeFuncPtr_glVertexAttrib4dvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4fNV #define GLEE_H_DEFINED_glVertexAttrib4fNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4FNVPROC GLeeFuncPtr_glVertexAttrib4fNV; #define glVertexAttrib4fNV GLeeFuncPtr_glVertexAttrib4fNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4fvNV #define GLEE_H_DEFINED_glVertexAttrib4fvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4FVNVPROC GLeeFuncPtr_glVertexAttrib4fvNV; #define glVertexAttrib4fvNV GLeeFuncPtr_glVertexAttrib4fvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4sNV #define GLEE_H_DEFINED_glVertexAttrib4sNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4SNVPROC GLeeFuncPtr_glVertexAttrib4sNV; #define glVertexAttrib4sNV GLeeFuncPtr_glVertexAttrib4sNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4svNV #define GLEE_H_DEFINED_glVertexAttrib4svNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4SVNVPROC GLeeFuncPtr_glVertexAttrib4svNV; #define glVertexAttrib4svNV GLeeFuncPtr_glVertexAttrib4svNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4ubNV #define GLEE_H_DEFINED_glVertexAttrib4ubNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4UBNVPROC GLeeFuncPtr_glVertexAttrib4ubNV; #define glVertexAttrib4ubNV GLeeFuncPtr_glVertexAttrib4ubNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4ubvNV #define GLEE_H_DEFINED_glVertexAttrib4ubvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4UBVNVPROC GLeeFuncPtr_glVertexAttrib4ubvNV; #define glVertexAttrib4ubvNV GLeeFuncPtr_glVertexAttrib4ubvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs1dvNV #define GLEE_H_DEFINED_glVertexAttribs1dvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS1DVNVPROC GLeeFuncPtr_glVertexAttribs1dvNV; #define glVertexAttribs1dvNV GLeeFuncPtr_glVertexAttribs1dvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs1fvNV #define GLEE_H_DEFINED_glVertexAttribs1fvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS1FVNVPROC GLeeFuncPtr_glVertexAttribs1fvNV; #define glVertexAttribs1fvNV GLeeFuncPtr_glVertexAttribs1fvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs1svNV #define GLEE_H_DEFINED_glVertexAttribs1svNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS1SVNVPROC GLeeFuncPtr_glVertexAttribs1svNV; #define glVertexAttribs1svNV GLeeFuncPtr_glVertexAttribs1svNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs2dvNV #define GLEE_H_DEFINED_glVertexAttribs2dvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS2DVNVPROC GLeeFuncPtr_glVertexAttribs2dvNV; #define glVertexAttribs2dvNV GLeeFuncPtr_glVertexAttribs2dvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs2fvNV #define GLEE_H_DEFINED_glVertexAttribs2fvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS2FVNVPROC GLeeFuncPtr_glVertexAttribs2fvNV; #define glVertexAttribs2fvNV GLeeFuncPtr_glVertexAttribs2fvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs2svNV #define GLEE_H_DEFINED_glVertexAttribs2svNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS2SVNVPROC GLeeFuncPtr_glVertexAttribs2svNV; #define glVertexAttribs2svNV GLeeFuncPtr_glVertexAttribs2svNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs3dvNV #define GLEE_H_DEFINED_glVertexAttribs3dvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS3DVNVPROC GLeeFuncPtr_glVertexAttribs3dvNV; #define glVertexAttribs3dvNV GLeeFuncPtr_glVertexAttribs3dvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs3fvNV #define GLEE_H_DEFINED_glVertexAttribs3fvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS3FVNVPROC GLeeFuncPtr_glVertexAttribs3fvNV; #define glVertexAttribs3fvNV GLeeFuncPtr_glVertexAttribs3fvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs3svNV #define GLEE_H_DEFINED_glVertexAttribs3svNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS3SVNVPROC GLeeFuncPtr_glVertexAttribs3svNV; #define glVertexAttribs3svNV GLeeFuncPtr_glVertexAttribs3svNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs4dvNV #define GLEE_H_DEFINED_glVertexAttribs4dvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS4DVNVPROC GLeeFuncPtr_glVertexAttribs4dvNV; #define glVertexAttribs4dvNV GLeeFuncPtr_glVertexAttribs4dvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs4fvNV #define GLEE_H_DEFINED_glVertexAttribs4fvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS4FVNVPROC GLeeFuncPtr_glVertexAttribs4fvNV; #define glVertexAttribs4fvNV GLeeFuncPtr_glVertexAttribs4fvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs4svNV #define GLEE_H_DEFINED_glVertexAttribs4svNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS4SVNVPROC GLeeFuncPtr_glVertexAttribs4svNV; #define glVertexAttribs4svNV GLeeFuncPtr_glVertexAttribs4svNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs4ubvNV #define GLEE_H_DEFINED_glVertexAttribs4ubvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS4UBVNVPROC GLeeFuncPtr_glVertexAttribs4ubvNV; #define glVertexAttribs4ubvNV GLeeFuncPtr_glVertexAttribs4ubvNV #endif #endif /* GL_SGIX_texture_coordinate_clamp */ #ifndef GL_SGIX_texture_coordinate_clamp #define GL_SGIX_texture_coordinate_clamp 1 #define __GLEE_GL_SGIX_texture_coordinate_clamp 1 /* Constants */ #define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 #define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A #define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B #endif /* GL_SGIX_scalebias_hint */ #ifndef GL_SGIX_scalebias_hint #define GL_SGIX_scalebias_hint 1 #define __GLEE_GL_SGIX_scalebias_hint 1 /* Constants */ #define GL_SCALEBIAS_HINT_SGIX 0x8322 #endif /* GL_OML_interlace */ #ifndef GL_OML_interlace #define GL_OML_interlace 1 #define __GLEE_GL_OML_interlace 1 /* Constants */ #define GL_INTERLACE_OML 0x8980 #define GL_INTERLACE_READ_OML 0x8981 #endif /* GL_OML_subsample */ #ifndef GL_OML_subsample #define GL_OML_subsample 1 #define __GLEE_GL_OML_subsample 1 /* Constants */ #define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 #define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 #endif /* GL_OML_resample */ #ifndef GL_OML_resample #define GL_OML_resample 1 #define __GLEE_GL_OML_resample 1 /* Constants */ #define GL_PACK_RESAMPLE_OML 0x8984 #define GL_UNPACK_RESAMPLE_OML 0x8985 #define GL_RESAMPLE_REPLICATE_OML 0x8986 #define GL_RESAMPLE_ZERO_FILL_OML 0x8987 #define GL_RESAMPLE_AVERAGE_OML 0x8988 #define GL_RESAMPLE_DECIMATE_OML 0x8989 #endif /* GL_NV_copy_depth_to_color */ #ifndef GL_NV_copy_depth_to_color #define GL_NV_copy_depth_to_color 1 #define __GLEE_GL_NV_copy_depth_to_color 1 /* Constants */ #define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E #define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F #endif /* GL_ATI_envmap_bumpmap */ #ifndef GL_ATI_envmap_bumpmap #define GL_ATI_envmap_bumpmap 1 #define __GLEE_GL_ATI_envmap_bumpmap 1 /* Constants */ #define GL_BUMP_ROT_MATRIX_ATI 0x8775 #define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 #define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 #define GL_BUMP_TEX_UNITS_ATI 0x8778 #define GL_DUDV_ATI 0x8779 #define GL_DU8DV8_ATI 0x877A #define GL_BUMP_ENVMAP_ATI 0x877B #define GL_BUMP_TARGET_ATI 0x877C #ifndef GLEE_H_DEFINED_glTexBumpParameterivATI #define GLEE_H_DEFINED_glTexBumpParameterivATI typedef void (APIENTRYP GLEEPFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint * param); GLEE_EXTERN GLEEPFNGLTEXBUMPPARAMETERIVATIPROC GLeeFuncPtr_glTexBumpParameterivATI; #define glTexBumpParameterivATI GLeeFuncPtr_glTexBumpParameterivATI #endif #ifndef GLEE_H_DEFINED_glTexBumpParameterfvATI #define GLEE_H_DEFINED_glTexBumpParameterfvATI typedef void (APIENTRYP GLEEPFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat * param); GLEE_EXTERN GLEEPFNGLTEXBUMPPARAMETERFVATIPROC GLeeFuncPtr_glTexBumpParameterfvATI; #define glTexBumpParameterfvATI GLeeFuncPtr_glTexBumpParameterfvATI #endif #ifndef GLEE_H_DEFINED_glGetTexBumpParameterivATI #define GLEE_H_DEFINED_glGetTexBumpParameterivATI typedef void (APIENTRYP GLEEPFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint * param); GLEE_EXTERN GLEEPFNGLGETTEXBUMPPARAMETERIVATIPROC GLeeFuncPtr_glGetTexBumpParameterivATI; #define glGetTexBumpParameterivATI GLeeFuncPtr_glGetTexBumpParameterivATI #endif #ifndef GLEE_H_DEFINED_glGetTexBumpParameterfvATI #define GLEE_H_DEFINED_glGetTexBumpParameterfvATI typedef void (APIENTRYP GLEEPFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat * param); GLEE_EXTERN GLEEPFNGLGETTEXBUMPPARAMETERFVATIPROC GLeeFuncPtr_glGetTexBumpParameterfvATI; #define glGetTexBumpParameterfvATI GLeeFuncPtr_glGetTexBumpParameterfvATI #endif #endif /* GL_ATI_fragment_shader */ #ifndef GL_ATI_fragment_shader #define GL_ATI_fragment_shader 1 #define __GLEE_GL_ATI_fragment_shader 1 /* Constants */ #define GL_FRAGMENT_SHADER_ATI 0x8920 #define GL_REG_0_ATI 0x8921 #define GL_REG_1_ATI 0x8922 #define GL_REG_2_ATI 0x8923 #define GL_REG_3_ATI 0x8924 #define GL_REG_4_ATI 0x8925 #define GL_REG_5_ATI 0x8926 #define GL_REG_6_ATI 0x8927 #define GL_REG_7_ATI 0x8928 #define GL_REG_8_ATI 0x8929 #define GL_REG_9_ATI 0x892A #define GL_REG_10_ATI 0x892B #define GL_REG_11_ATI 0x892C #define GL_REG_12_ATI 0x892D #define GL_REG_13_ATI 0x892E #define GL_REG_14_ATI 0x892F #define GL_REG_15_ATI 0x8930 #define GL_REG_16_ATI 0x8931 #define GL_REG_17_ATI 0x8932 #define GL_REG_18_ATI 0x8933 #define GL_REG_19_ATI 0x8934 #define GL_REG_20_ATI 0x8935 #define GL_REG_21_ATI 0x8936 #define GL_REG_22_ATI 0x8937 #define GL_REG_23_ATI 0x8938 #define GL_REG_24_ATI 0x8939 #define GL_REG_25_ATI 0x893A #define GL_REG_26_ATI 0x893B #define GL_REG_27_ATI 0x893C #define GL_REG_28_ATI 0x893D #define GL_REG_29_ATI 0x893E #define GL_REG_30_ATI 0x893F #define GL_REG_31_ATI 0x8940 #define GL_CON_0_ATI 0x8941 #define GL_CON_1_ATI 0x8942 #define GL_CON_2_ATI 0x8943 #define GL_CON_3_ATI 0x8944 #define GL_CON_4_ATI 0x8945 #define GL_CON_5_ATI 0x8946 #define GL_CON_6_ATI 0x8947 #define GL_CON_7_ATI 0x8948 #define GL_CON_8_ATI 0x8949 #define GL_CON_9_ATI 0x894A #define GL_CON_10_ATI 0x894B #define GL_CON_11_ATI 0x894C #define GL_CON_12_ATI 0x894D #define GL_CON_13_ATI 0x894E #define GL_CON_14_ATI 0x894F #define GL_CON_15_ATI 0x8950 #define GL_CON_16_ATI 0x8951 #define GL_CON_17_ATI 0x8952 #define GL_CON_18_ATI 0x8953 #define GL_CON_19_ATI 0x8954 #define GL_CON_20_ATI 0x8955 #define GL_CON_21_ATI 0x8956 #define GL_CON_22_ATI 0x8957 #define GL_CON_23_ATI 0x8958 #define GL_CON_24_ATI 0x8959 #define GL_CON_25_ATI 0x895A #define GL_CON_26_ATI 0x895B #define GL_CON_27_ATI 0x895C #define GL_CON_28_ATI 0x895D #define GL_CON_29_ATI 0x895E #define GL_CON_30_ATI 0x895F #define GL_CON_31_ATI 0x8960 #define GL_MOV_ATI 0x8961 #define GL_ADD_ATI 0x8963 #define GL_MUL_ATI 0x8964 #define GL_SUB_ATI 0x8965 #define GL_DOT3_ATI 0x8966 #define GL_DOT4_ATI 0x8967 #define GL_MAD_ATI 0x8968 #define GL_LERP_ATI 0x8969 #define GL_CND_ATI 0x896A #define GL_CND0_ATI 0x896B #define GL_DOT2_ADD_ATI 0x896C #define GL_SECONDARY_INTERPOLATOR_ATI 0x896D #define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E #define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F #define GL_NUM_PASSES_ATI 0x8970 #define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 #define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 #define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 #define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 #define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 #define GL_SWIZZLE_STR_ATI 0x8976 #define GL_SWIZZLE_STQ_ATI 0x8977 #define GL_SWIZZLE_STR_DR_ATI 0x8978 #define GL_SWIZZLE_STQ_DQ_ATI 0x8979 #define GL_SWIZZLE_STRQ_ATI 0x897A #define GL_SWIZZLE_STRQ_DQ_ATI 0x897B #define GL_RED_BIT_ATI 0x00000001 #define GL_GREEN_BIT_ATI 0x00000002 #define GL_BLUE_BIT_ATI 0x00000004 #define GL_2X_BIT_ATI 0x00000001 #define GL_4X_BIT_ATI 0x00000002 #define GL_8X_BIT_ATI 0x00000004 #define GL_HALF_BIT_ATI 0x00000008 #define GL_QUARTER_BIT_ATI 0x00000010 #define GL_EIGHTH_BIT_ATI 0x00000020 #define GL_SATURATE_BIT_ATI 0x00000040 #define GL_COMP_BIT_ATI 0x00000002 #define GL_NEGATE_BIT_ATI 0x00000004 #define GL_BIAS_BIT_ATI 0x00000008 #ifndef GLEE_H_DEFINED_glGenFragmentShadersATI #define GLEE_H_DEFINED_glGenFragmentShadersATI typedef GLuint (APIENTRYP GLEEPFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); GLEE_EXTERN GLEEPFNGLGENFRAGMENTSHADERSATIPROC GLeeFuncPtr_glGenFragmentShadersATI; #define glGenFragmentShadersATI GLeeFuncPtr_glGenFragmentShadersATI #endif #ifndef GLEE_H_DEFINED_glBindFragmentShaderATI #define GLEE_H_DEFINED_glBindFragmentShaderATI typedef void (APIENTRYP GLEEPFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLBINDFRAGMENTSHADERATIPROC GLeeFuncPtr_glBindFragmentShaderATI; #define glBindFragmentShaderATI GLeeFuncPtr_glBindFragmentShaderATI #endif #ifndef GLEE_H_DEFINED_glDeleteFragmentShaderATI #define GLEE_H_DEFINED_glDeleteFragmentShaderATI typedef void (APIENTRYP GLEEPFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLDELETEFRAGMENTSHADERATIPROC GLeeFuncPtr_glDeleteFragmentShaderATI; #define glDeleteFragmentShaderATI GLeeFuncPtr_glDeleteFragmentShaderATI #endif #ifndef GLEE_H_DEFINED_glBeginFragmentShaderATI #define GLEE_H_DEFINED_glBeginFragmentShaderATI typedef void (APIENTRYP GLEEPFNGLBEGINFRAGMENTSHADERATIPROC) (); GLEE_EXTERN GLEEPFNGLBEGINFRAGMENTSHADERATIPROC GLeeFuncPtr_glBeginFragmentShaderATI; #define glBeginFragmentShaderATI GLeeFuncPtr_glBeginFragmentShaderATI #endif #ifndef GLEE_H_DEFINED_glEndFragmentShaderATI #define GLEE_H_DEFINED_glEndFragmentShaderATI typedef void (APIENTRYP GLEEPFNGLENDFRAGMENTSHADERATIPROC) (); GLEE_EXTERN GLEEPFNGLENDFRAGMENTSHADERATIPROC GLeeFuncPtr_glEndFragmentShaderATI; #define glEndFragmentShaderATI GLeeFuncPtr_glEndFragmentShaderATI #endif #ifndef GLEE_H_DEFINED_glPassTexCoordATI #define GLEE_H_DEFINED_glPassTexCoordATI typedef void (APIENTRYP GLEEPFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); GLEE_EXTERN GLEEPFNGLPASSTEXCOORDATIPROC GLeeFuncPtr_glPassTexCoordATI; #define glPassTexCoordATI GLeeFuncPtr_glPassTexCoordATI #endif #ifndef GLEE_H_DEFINED_glSampleMapATI #define GLEE_H_DEFINED_glSampleMapATI typedef void (APIENTRYP GLEEPFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); GLEE_EXTERN GLEEPFNGLSAMPLEMAPATIPROC GLeeFuncPtr_glSampleMapATI; #define glSampleMapATI GLeeFuncPtr_glSampleMapATI #endif #ifndef GLEE_H_DEFINED_glColorFragmentOp1ATI #define GLEE_H_DEFINED_glColorFragmentOp1ATI typedef void (APIENTRYP GLEEPFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); GLEE_EXTERN GLEEPFNGLCOLORFRAGMENTOP1ATIPROC GLeeFuncPtr_glColorFragmentOp1ATI; #define glColorFragmentOp1ATI GLeeFuncPtr_glColorFragmentOp1ATI #endif #ifndef GLEE_H_DEFINED_glColorFragmentOp2ATI #define GLEE_H_DEFINED_glColorFragmentOp2ATI typedef void (APIENTRYP GLEEPFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); GLEE_EXTERN GLEEPFNGLCOLORFRAGMENTOP2ATIPROC GLeeFuncPtr_glColorFragmentOp2ATI; #define glColorFragmentOp2ATI GLeeFuncPtr_glColorFragmentOp2ATI #endif #ifndef GLEE_H_DEFINED_glColorFragmentOp3ATI #define GLEE_H_DEFINED_glColorFragmentOp3ATI typedef void (APIENTRYP GLEEPFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); GLEE_EXTERN GLEEPFNGLCOLORFRAGMENTOP3ATIPROC GLeeFuncPtr_glColorFragmentOp3ATI; #define glColorFragmentOp3ATI GLeeFuncPtr_glColorFragmentOp3ATI #endif #ifndef GLEE_H_DEFINED_glAlphaFragmentOp1ATI #define GLEE_H_DEFINED_glAlphaFragmentOp1ATI typedef void (APIENTRYP GLEEPFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); GLEE_EXTERN GLEEPFNGLALPHAFRAGMENTOP1ATIPROC GLeeFuncPtr_glAlphaFragmentOp1ATI; #define glAlphaFragmentOp1ATI GLeeFuncPtr_glAlphaFragmentOp1ATI #endif #ifndef GLEE_H_DEFINED_glAlphaFragmentOp2ATI #define GLEE_H_DEFINED_glAlphaFragmentOp2ATI typedef void (APIENTRYP GLEEPFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); GLEE_EXTERN GLEEPFNGLALPHAFRAGMENTOP2ATIPROC GLeeFuncPtr_glAlphaFragmentOp2ATI; #define glAlphaFragmentOp2ATI GLeeFuncPtr_glAlphaFragmentOp2ATI #endif #ifndef GLEE_H_DEFINED_glAlphaFragmentOp3ATI #define GLEE_H_DEFINED_glAlphaFragmentOp3ATI typedef void (APIENTRYP GLEEPFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); GLEE_EXTERN GLEEPFNGLALPHAFRAGMENTOP3ATIPROC GLeeFuncPtr_glAlphaFragmentOp3ATI; #define glAlphaFragmentOp3ATI GLeeFuncPtr_glAlphaFragmentOp3ATI #endif #ifndef GLEE_H_DEFINED_glSetFragmentShaderConstantATI #define GLEE_H_DEFINED_glSetFragmentShaderConstantATI typedef void (APIENTRYP GLEEPFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat * value); GLEE_EXTERN GLEEPFNGLSETFRAGMENTSHADERCONSTANTATIPROC GLeeFuncPtr_glSetFragmentShaderConstantATI; #define glSetFragmentShaderConstantATI GLeeFuncPtr_glSetFragmentShaderConstantATI #endif #endif /* GL_ATI_pn_triangles */ #ifndef GL_ATI_pn_triangles #define GL_ATI_pn_triangles 1 #define __GLEE_GL_ATI_pn_triangles 1 /* Constants */ #define GL_PN_TRIANGLES_ATI 0x87F0 #define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 #define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 #define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 #define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 #define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 #define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 #define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 #define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 #ifndef GLEE_H_DEFINED_glPNTrianglesiATI #define GLEE_H_DEFINED_glPNTrianglesiATI typedef void (APIENTRYP GLEEPFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLPNTRIANGLESIATIPROC GLeeFuncPtr_glPNTrianglesiATI; #define glPNTrianglesiATI GLeeFuncPtr_glPNTrianglesiATI #endif #ifndef GLEE_H_DEFINED_glPNTrianglesfATI #define GLEE_H_DEFINED_glPNTrianglesfATI typedef void (APIENTRYP GLEEPFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLPNTRIANGLESFATIPROC GLeeFuncPtr_glPNTrianglesfATI; #define glPNTrianglesfATI GLeeFuncPtr_glPNTrianglesfATI #endif #endif /* GL_ATI_vertex_array_object */ #ifndef GL_ATI_vertex_array_object #define GL_ATI_vertex_array_object 1 #define __GLEE_GL_ATI_vertex_array_object 1 /* Constants */ #define GL_STATIC_ATI 0x8760 #define GL_DYNAMIC_ATI 0x8761 #define GL_PRESERVE_ATI 0x8762 #define GL_DISCARD_ATI 0x8763 #define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 #define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 #define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 #define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 #ifndef GLEE_H_DEFINED_glNewObjectBufferATI #define GLEE_H_DEFINED_glNewObjectBufferATI typedef GLuint (APIENTRYP GLEEPFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid * pointer, GLenum usage); GLEE_EXTERN GLEEPFNGLNEWOBJECTBUFFERATIPROC GLeeFuncPtr_glNewObjectBufferATI; #define glNewObjectBufferATI GLeeFuncPtr_glNewObjectBufferATI #endif #ifndef GLEE_H_DEFINED_glIsObjectBufferATI #define GLEE_H_DEFINED_glIsObjectBufferATI typedef GLboolean (APIENTRYP GLEEPFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); GLEE_EXTERN GLEEPFNGLISOBJECTBUFFERATIPROC GLeeFuncPtr_glIsObjectBufferATI; #define glIsObjectBufferATI GLeeFuncPtr_glIsObjectBufferATI #endif #ifndef GLEE_H_DEFINED_glUpdateObjectBufferATI #define GLEE_H_DEFINED_glUpdateObjectBufferATI typedef void (APIENTRYP GLEEPFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid * pointer, GLenum preserve); GLEE_EXTERN GLEEPFNGLUPDATEOBJECTBUFFERATIPROC GLeeFuncPtr_glUpdateObjectBufferATI; #define glUpdateObjectBufferATI GLeeFuncPtr_glUpdateObjectBufferATI #endif #ifndef GLEE_H_DEFINED_glGetObjectBufferfvATI #define GLEE_H_DEFINED_glGetObjectBufferfvATI typedef void (APIENTRYP GLEEPFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETOBJECTBUFFERFVATIPROC GLeeFuncPtr_glGetObjectBufferfvATI; #define glGetObjectBufferfvATI GLeeFuncPtr_glGetObjectBufferfvATI #endif #ifndef GLEE_H_DEFINED_glGetObjectBufferivATI #define GLEE_H_DEFINED_glGetObjectBufferivATI typedef void (APIENTRYP GLEEPFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETOBJECTBUFFERIVATIPROC GLeeFuncPtr_glGetObjectBufferivATI; #define glGetObjectBufferivATI GLeeFuncPtr_glGetObjectBufferivATI #endif #ifndef GLEE_H_DEFINED_glFreeObjectBufferATI #define GLEE_H_DEFINED_glFreeObjectBufferATI typedef void (APIENTRYP GLEEPFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); GLEE_EXTERN GLEEPFNGLFREEOBJECTBUFFERATIPROC GLeeFuncPtr_glFreeObjectBufferATI; #define glFreeObjectBufferATI GLeeFuncPtr_glFreeObjectBufferATI #endif #ifndef GLEE_H_DEFINED_glArrayObjectATI #define GLEE_H_DEFINED_glArrayObjectATI typedef void (APIENTRYP GLEEPFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); GLEE_EXTERN GLEEPFNGLARRAYOBJECTATIPROC GLeeFuncPtr_glArrayObjectATI; #define glArrayObjectATI GLeeFuncPtr_glArrayObjectATI #endif #ifndef GLEE_H_DEFINED_glGetArrayObjectfvATI #define GLEE_H_DEFINED_glGetArrayObjectfvATI typedef void (APIENTRYP GLEEPFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETARRAYOBJECTFVATIPROC GLeeFuncPtr_glGetArrayObjectfvATI; #define glGetArrayObjectfvATI GLeeFuncPtr_glGetArrayObjectfvATI #endif #ifndef GLEE_H_DEFINED_glGetArrayObjectivATI #define GLEE_H_DEFINED_glGetArrayObjectivATI typedef void (APIENTRYP GLEEPFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETARRAYOBJECTIVATIPROC GLeeFuncPtr_glGetArrayObjectivATI; #define glGetArrayObjectivATI GLeeFuncPtr_glGetArrayObjectivATI #endif #ifndef GLEE_H_DEFINED_glVariantArrayObjectATI #define GLEE_H_DEFINED_glVariantArrayObjectATI typedef void (APIENTRYP GLEEPFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); GLEE_EXTERN GLEEPFNGLVARIANTARRAYOBJECTATIPROC GLeeFuncPtr_glVariantArrayObjectATI; #define glVariantArrayObjectATI GLeeFuncPtr_glVariantArrayObjectATI #endif #ifndef GLEE_H_DEFINED_glGetVariantArrayObjectfvATI #define GLEE_H_DEFINED_glGetVariantArrayObjectfvATI typedef void (APIENTRYP GLEEPFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETVARIANTARRAYOBJECTFVATIPROC GLeeFuncPtr_glGetVariantArrayObjectfvATI; #define glGetVariantArrayObjectfvATI GLeeFuncPtr_glGetVariantArrayObjectfvATI #endif #ifndef GLEE_H_DEFINED_glGetVariantArrayObjectivATI #define GLEE_H_DEFINED_glGetVariantArrayObjectivATI typedef void (APIENTRYP GLEEPFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETVARIANTARRAYOBJECTIVATIPROC GLeeFuncPtr_glGetVariantArrayObjectivATI; #define glGetVariantArrayObjectivATI GLeeFuncPtr_glGetVariantArrayObjectivATI #endif #endif /* GL_EXT_vertex_shader */ #ifndef GL_EXT_vertex_shader #define GL_EXT_vertex_shader 1 #define __GLEE_GL_EXT_vertex_shader 1 /* Constants */ #define GL_VERTEX_SHADER_EXT 0x8780 #define GL_VERTEX_SHADER_BINDING_EXT 0x8781 #define GL_OP_INDEX_EXT 0x8782 #define GL_OP_NEGATE_EXT 0x8783 #define GL_OP_DOT3_EXT 0x8784 #define GL_OP_DOT4_EXT 0x8785 #define GL_OP_MUL_EXT 0x8786 #define GL_OP_ADD_EXT 0x8787 #define GL_OP_MADD_EXT 0x8788 #define GL_OP_FRAC_EXT 0x8789 #define GL_OP_MAX_EXT 0x878A #define GL_OP_MIN_EXT 0x878B #define GL_OP_SET_GE_EXT 0x878C #define GL_OP_SET_LT_EXT 0x878D #define GL_OP_CLAMP_EXT 0x878E #define GL_OP_FLOOR_EXT 0x878F #define GL_OP_ROUND_EXT 0x8790 #define GL_OP_EXP_BASE_2_EXT 0x8791 #define GL_OP_LOG_BASE_2_EXT 0x8792 #define GL_OP_POWER_EXT 0x8793 #define GL_OP_RECIP_EXT 0x8794 #define GL_OP_RECIP_SQRT_EXT 0x8795 #define GL_OP_SUB_EXT 0x8796 #define GL_OP_CROSS_PRODUCT_EXT 0x8797 #define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 #define GL_OP_MOV_EXT 0x8799 #define GL_OUTPUT_VERTEX_EXT 0x879A #define GL_OUTPUT_COLOR0_EXT 0x879B #define GL_OUTPUT_COLOR1_EXT 0x879C #define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D #define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E #define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F #define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 #define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 #define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 #define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 #define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 #define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 #define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 #define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 #define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 #define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 #define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA #define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB #define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC #define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD #define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE #define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF #define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 #define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 #define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 #define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 #define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 #define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 #define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 #define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 #define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 #define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 #define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA #define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB #define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC #define GL_OUTPUT_FOG_EXT 0x87BD #define GL_SCALAR_EXT 0x87BE #define GL_VECTOR_EXT 0x87BF #define GL_MATRIX_EXT 0x87C0 #define GL_VARIANT_EXT 0x87C1 #define GL_INVARIANT_EXT 0x87C2 #define GL_LOCAL_CONSTANT_EXT 0x87C3 #define GL_LOCAL_EXT 0x87C4 #define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 #define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 #define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 #define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 #define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 #define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA #define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC #define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD #define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE #define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF #define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 #define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 #define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 #define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 #define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 #define GL_X_EXT 0x87D5 #define GL_Y_EXT 0x87D6 #define GL_Z_EXT 0x87D7 #define GL_W_EXT 0x87D8 #define GL_NEGATIVE_X_EXT 0x87D9 #define GL_NEGATIVE_Y_EXT 0x87DA #define GL_NEGATIVE_Z_EXT 0x87DB #define GL_NEGATIVE_W_EXT 0x87DC #define GL_ZERO_EXT 0x87DD #define GL_ONE_EXT 0x87DE #define GL_NEGATIVE_ONE_EXT 0x87DF #define GL_NORMALIZED_RANGE_EXT 0x87E0 #define GL_FULL_RANGE_EXT 0x87E1 #define GL_CURRENT_VERTEX_EXT 0x87E2 #define GL_MVP_MATRIX_EXT 0x87E3 #define GL_VARIANT_VALUE_EXT 0x87E4 #define GL_VARIANT_DATATYPE_EXT 0x87E5 #define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 #define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 #define GL_VARIANT_ARRAY_EXT 0x87E8 #define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 #define GL_INVARIANT_VALUE_EXT 0x87EA #define GL_INVARIANT_DATATYPE_EXT 0x87EB #define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC #define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED #ifndef GLEE_H_DEFINED_glBeginVertexShaderEXT #define GLEE_H_DEFINED_glBeginVertexShaderEXT typedef void (APIENTRYP GLEEPFNGLBEGINVERTEXSHADEREXTPROC) (); GLEE_EXTERN GLEEPFNGLBEGINVERTEXSHADEREXTPROC GLeeFuncPtr_glBeginVertexShaderEXT; #define glBeginVertexShaderEXT GLeeFuncPtr_glBeginVertexShaderEXT #endif #ifndef GLEE_H_DEFINED_glEndVertexShaderEXT #define GLEE_H_DEFINED_glEndVertexShaderEXT typedef void (APIENTRYP GLEEPFNGLENDVERTEXSHADEREXTPROC) (); GLEE_EXTERN GLEEPFNGLENDVERTEXSHADEREXTPROC GLeeFuncPtr_glEndVertexShaderEXT; #define glEndVertexShaderEXT GLeeFuncPtr_glEndVertexShaderEXT #endif #ifndef GLEE_H_DEFINED_glBindVertexShaderEXT #define GLEE_H_DEFINED_glBindVertexShaderEXT typedef void (APIENTRYP GLEEPFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLBINDVERTEXSHADEREXTPROC GLeeFuncPtr_glBindVertexShaderEXT; #define glBindVertexShaderEXT GLeeFuncPtr_glBindVertexShaderEXT #endif #ifndef GLEE_H_DEFINED_glGenVertexShadersEXT #define GLEE_H_DEFINED_glGenVertexShadersEXT typedef GLuint (APIENTRYP GLEEPFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); GLEE_EXTERN GLEEPFNGLGENVERTEXSHADERSEXTPROC GLeeFuncPtr_glGenVertexShadersEXT; #define glGenVertexShadersEXT GLeeFuncPtr_glGenVertexShadersEXT #endif #ifndef GLEE_H_DEFINED_glDeleteVertexShaderEXT #define GLEE_H_DEFINED_glDeleteVertexShaderEXT typedef void (APIENTRYP GLEEPFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLDELETEVERTEXSHADEREXTPROC GLeeFuncPtr_glDeleteVertexShaderEXT; #define glDeleteVertexShaderEXT GLeeFuncPtr_glDeleteVertexShaderEXT #endif #ifndef GLEE_H_DEFINED_glShaderOp1EXT #define GLEE_H_DEFINED_glShaderOp1EXT typedef void (APIENTRYP GLEEPFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); GLEE_EXTERN GLEEPFNGLSHADEROP1EXTPROC GLeeFuncPtr_glShaderOp1EXT; #define glShaderOp1EXT GLeeFuncPtr_glShaderOp1EXT #endif #ifndef GLEE_H_DEFINED_glShaderOp2EXT #define GLEE_H_DEFINED_glShaderOp2EXT typedef void (APIENTRYP GLEEPFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); GLEE_EXTERN GLEEPFNGLSHADEROP2EXTPROC GLeeFuncPtr_glShaderOp2EXT; #define glShaderOp2EXT GLeeFuncPtr_glShaderOp2EXT #endif #ifndef GLEE_H_DEFINED_glShaderOp3EXT #define GLEE_H_DEFINED_glShaderOp3EXT typedef void (APIENTRYP GLEEPFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); GLEE_EXTERN GLEEPFNGLSHADEROP3EXTPROC GLeeFuncPtr_glShaderOp3EXT; #define glShaderOp3EXT GLeeFuncPtr_glShaderOp3EXT #endif #ifndef GLEE_H_DEFINED_glSwizzleEXT #define GLEE_H_DEFINED_glSwizzleEXT typedef void (APIENTRYP GLEEPFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); GLEE_EXTERN GLEEPFNGLSWIZZLEEXTPROC GLeeFuncPtr_glSwizzleEXT; #define glSwizzleEXT GLeeFuncPtr_glSwizzleEXT #endif #ifndef GLEE_H_DEFINED_glWriteMaskEXT #define GLEE_H_DEFINED_glWriteMaskEXT typedef void (APIENTRYP GLEEPFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); GLEE_EXTERN GLEEPFNGLWRITEMASKEXTPROC GLeeFuncPtr_glWriteMaskEXT; #define glWriteMaskEXT GLeeFuncPtr_glWriteMaskEXT #endif #ifndef GLEE_H_DEFINED_glInsertComponentEXT #define GLEE_H_DEFINED_glInsertComponentEXT typedef void (APIENTRYP GLEEPFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); GLEE_EXTERN GLEEPFNGLINSERTCOMPONENTEXTPROC GLeeFuncPtr_glInsertComponentEXT; #define glInsertComponentEXT GLeeFuncPtr_glInsertComponentEXT #endif #ifndef GLEE_H_DEFINED_glExtractComponentEXT #define GLEE_H_DEFINED_glExtractComponentEXT typedef void (APIENTRYP GLEEPFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); GLEE_EXTERN GLEEPFNGLEXTRACTCOMPONENTEXTPROC GLeeFuncPtr_glExtractComponentEXT; #define glExtractComponentEXT GLeeFuncPtr_glExtractComponentEXT #endif #ifndef GLEE_H_DEFINED_glGenSymbolsEXT #define GLEE_H_DEFINED_glGenSymbolsEXT typedef GLuint (APIENTRYP GLEEPFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); GLEE_EXTERN GLEEPFNGLGENSYMBOLSEXTPROC GLeeFuncPtr_glGenSymbolsEXT; #define glGenSymbolsEXT GLeeFuncPtr_glGenSymbolsEXT #endif #ifndef GLEE_H_DEFINED_glSetInvariantEXT #define GLEE_H_DEFINED_glSetInvariantEXT typedef void (APIENTRYP GLEEPFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid * addr); GLEE_EXTERN GLEEPFNGLSETINVARIANTEXTPROC GLeeFuncPtr_glSetInvariantEXT; #define glSetInvariantEXT GLeeFuncPtr_glSetInvariantEXT #endif #ifndef GLEE_H_DEFINED_glSetLocalConstantEXT #define GLEE_H_DEFINED_glSetLocalConstantEXT typedef void (APIENTRYP GLEEPFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid * addr); GLEE_EXTERN GLEEPFNGLSETLOCALCONSTANTEXTPROC GLeeFuncPtr_glSetLocalConstantEXT; #define glSetLocalConstantEXT GLeeFuncPtr_glSetLocalConstantEXT #endif #ifndef GLEE_H_DEFINED_glVariantbvEXT #define GLEE_H_DEFINED_glVariantbvEXT typedef void (APIENTRYP GLEEPFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte * addr); GLEE_EXTERN GLEEPFNGLVARIANTBVEXTPROC GLeeFuncPtr_glVariantbvEXT; #define glVariantbvEXT GLeeFuncPtr_glVariantbvEXT #endif #ifndef GLEE_H_DEFINED_glVariantsvEXT #define GLEE_H_DEFINED_glVariantsvEXT typedef void (APIENTRYP GLEEPFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort * addr); GLEE_EXTERN GLEEPFNGLVARIANTSVEXTPROC GLeeFuncPtr_glVariantsvEXT; #define glVariantsvEXT GLeeFuncPtr_glVariantsvEXT #endif #ifndef GLEE_H_DEFINED_glVariantivEXT #define GLEE_H_DEFINED_glVariantivEXT typedef void (APIENTRYP GLEEPFNGLVARIANTIVEXTPROC) (GLuint id, const GLint * addr); GLEE_EXTERN GLEEPFNGLVARIANTIVEXTPROC GLeeFuncPtr_glVariantivEXT; #define glVariantivEXT GLeeFuncPtr_glVariantivEXT #endif #ifndef GLEE_H_DEFINED_glVariantfvEXT #define GLEE_H_DEFINED_glVariantfvEXT typedef void (APIENTRYP GLEEPFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat * addr); GLEE_EXTERN GLEEPFNGLVARIANTFVEXTPROC GLeeFuncPtr_glVariantfvEXT; #define glVariantfvEXT GLeeFuncPtr_glVariantfvEXT #endif #ifndef GLEE_H_DEFINED_glVariantdvEXT #define GLEE_H_DEFINED_glVariantdvEXT typedef void (APIENTRYP GLEEPFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble * addr); GLEE_EXTERN GLEEPFNGLVARIANTDVEXTPROC GLeeFuncPtr_glVariantdvEXT; #define glVariantdvEXT GLeeFuncPtr_glVariantdvEXT #endif #ifndef GLEE_H_DEFINED_glVariantubvEXT #define GLEE_H_DEFINED_glVariantubvEXT typedef void (APIENTRYP GLEEPFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte * addr); GLEE_EXTERN GLEEPFNGLVARIANTUBVEXTPROC GLeeFuncPtr_glVariantubvEXT; #define glVariantubvEXT GLeeFuncPtr_glVariantubvEXT #endif #ifndef GLEE_H_DEFINED_glVariantusvEXT #define GLEE_H_DEFINED_glVariantusvEXT typedef void (APIENTRYP GLEEPFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort * addr); GLEE_EXTERN GLEEPFNGLVARIANTUSVEXTPROC GLeeFuncPtr_glVariantusvEXT; #define glVariantusvEXT GLeeFuncPtr_glVariantusvEXT #endif #ifndef GLEE_H_DEFINED_glVariantuivEXT #define GLEE_H_DEFINED_glVariantuivEXT typedef void (APIENTRYP GLEEPFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint * addr); GLEE_EXTERN GLEEPFNGLVARIANTUIVEXTPROC GLeeFuncPtr_glVariantuivEXT; #define glVariantuivEXT GLeeFuncPtr_glVariantuivEXT #endif #ifndef GLEE_H_DEFINED_glVariantPointerEXT #define GLEE_H_DEFINED_glVariantPointerEXT typedef void (APIENTRYP GLEEPFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid * addr); GLEE_EXTERN GLEEPFNGLVARIANTPOINTEREXTPROC GLeeFuncPtr_glVariantPointerEXT; #define glVariantPointerEXT GLeeFuncPtr_glVariantPointerEXT #endif #ifndef GLEE_H_DEFINED_glEnableVariantClientStateEXT #define GLEE_H_DEFINED_glEnableVariantClientStateEXT typedef void (APIENTRYP GLEEPFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLENABLEVARIANTCLIENTSTATEEXTPROC GLeeFuncPtr_glEnableVariantClientStateEXT; #define glEnableVariantClientStateEXT GLeeFuncPtr_glEnableVariantClientStateEXT #endif #ifndef GLEE_H_DEFINED_glDisableVariantClientStateEXT #define GLEE_H_DEFINED_glDisableVariantClientStateEXT typedef void (APIENTRYP GLEEPFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLDISABLEVARIANTCLIENTSTATEEXTPROC GLeeFuncPtr_glDisableVariantClientStateEXT; #define glDisableVariantClientStateEXT GLeeFuncPtr_glDisableVariantClientStateEXT #endif #ifndef GLEE_H_DEFINED_glBindLightParameterEXT #define GLEE_H_DEFINED_glBindLightParameterEXT typedef GLuint (APIENTRYP GLEEPFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); GLEE_EXTERN GLEEPFNGLBINDLIGHTPARAMETEREXTPROC GLeeFuncPtr_glBindLightParameterEXT; #define glBindLightParameterEXT GLeeFuncPtr_glBindLightParameterEXT #endif #ifndef GLEE_H_DEFINED_glBindMaterialParameterEXT #define GLEE_H_DEFINED_glBindMaterialParameterEXT typedef GLuint (APIENTRYP GLEEPFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); GLEE_EXTERN GLEEPFNGLBINDMATERIALPARAMETEREXTPROC GLeeFuncPtr_glBindMaterialParameterEXT; #define glBindMaterialParameterEXT GLeeFuncPtr_glBindMaterialParameterEXT #endif #ifndef GLEE_H_DEFINED_glBindTexGenParameterEXT #define GLEE_H_DEFINED_glBindTexGenParameterEXT typedef GLuint (APIENTRYP GLEEPFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); GLEE_EXTERN GLEEPFNGLBINDTEXGENPARAMETEREXTPROC GLeeFuncPtr_glBindTexGenParameterEXT; #define glBindTexGenParameterEXT GLeeFuncPtr_glBindTexGenParameterEXT #endif #ifndef GLEE_H_DEFINED_glBindTextureUnitParameterEXT #define GLEE_H_DEFINED_glBindTextureUnitParameterEXT typedef GLuint (APIENTRYP GLEEPFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); GLEE_EXTERN GLEEPFNGLBINDTEXTUREUNITPARAMETEREXTPROC GLeeFuncPtr_glBindTextureUnitParameterEXT; #define glBindTextureUnitParameterEXT GLeeFuncPtr_glBindTextureUnitParameterEXT #endif #ifndef GLEE_H_DEFINED_glBindParameterEXT #define GLEE_H_DEFINED_glBindParameterEXT typedef GLuint (APIENTRYP GLEEPFNGLBINDPARAMETEREXTPROC) (GLenum value); GLEE_EXTERN GLEEPFNGLBINDPARAMETEREXTPROC GLeeFuncPtr_glBindParameterEXT; #define glBindParameterEXT GLeeFuncPtr_glBindParameterEXT #endif #ifndef GLEE_H_DEFINED_glIsVariantEnabledEXT #define GLEE_H_DEFINED_glIsVariantEnabledEXT typedef GLboolean (APIENTRYP GLEEPFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); GLEE_EXTERN GLEEPFNGLISVARIANTENABLEDEXTPROC GLeeFuncPtr_glIsVariantEnabledEXT; #define glIsVariantEnabledEXT GLeeFuncPtr_glIsVariantEnabledEXT #endif #ifndef GLEE_H_DEFINED_glGetVariantBooleanvEXT #define GLEE_H_DEFINED_glGetVariantBooleanvEXT typedef void (APIENTRYP GLEEPFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean * data); GLEE_EXTERN GLEEPFNGLGETVARIANTBOOLEANVEXTPROC GLeeFuncPtr_glGetVariantBooleanvEXT; #define glGetVariantBooleanvEXT GLeeFuncPtr_glGetVariantBooleanvEXT #endif #ifndef GLEE_H_DEFINED_glGetVariantIntegervEXT #define GLEE_H_DEFINED_glGetVariantIntegervEXT typedef void (APIENTRYP GLEEPFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint * data); GLEE_EXTERN GLEEPFNGLGETVARIANTINTEGERVEXTPROC GLeeFuncPtr_glGetVariantIntegervEXT; #define glGetVariantIntegervEXT GLeeFuncPtr_glGetVariantIntegervEXT #endif #ifndef GLEE_H_DEFINED_glGetVariantFloatvEXT #define GLEE_H_DEFINED_glGetVariantFloatvEXT typedef void (APIENTRYP GLEEPFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat * data); GLEE_EXTERN GLEEPFNGLGETVARIANTFLOATVEXTPROC GLeeFuncPtr_glGetVariantFloatvEXT; #define glGetVariantFloatvEXT GLeeFuncPtr_glGetVariantFloatvEXT #endif #ifndef GLEE_H_DEFINED_glGetVariantPointervEXT #define GLEE_H_DEFINED_glGetVariantPointervEXT typedef void (APIENTRYP GLEEPFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* * data); GLEE_EXTERN GLEEPFNGLGETVARIANTPOINTERVEXTPROC GLeeFuncPtr_glGetVariantPointervEXT; #define glGetVariantPointervEXT GLeeFuncPtr_glGetVariantPointervEXT #endif #ifndef GLEE_H_DEFINED_glGetInvariantBooleanvEXT #define GLEE_H_DEFINED_glGetInvariantBooleanvEXT typedef void (APIENTRYP GLEEPFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean * data); GLEE_EXTERN GLEEPFNGLGETINVARIANTBOOLEANVEXTPROC GLeeFuncPtr_glGetInvariantBooleanvEXT; #define glGetInvariantBooleanvEXT GLeeFuncPtr_glGetInvariantBooleanvEXT #endif #ifndef GLEE_H_DEFINED_glGetInvariantIntegervEXT #define GLEE_H_DEFINED_glGetInvariantIntegervEXT typedef void (APIENTRYP GLEEPFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint * data); GLEE_EXTERN GLEEPFNGLGETINVARIANTINTEGERVEXTPROC GLeeFuncPtr_glGetInvariantIntegervEXT; #define glGetInvariantIntegervEXT GLeeFuncPtr_glGetInvariantIntegervEXT #endif #ifndef GLEE_H_DEFINED_glGetInvariantFloatvEXT #define GLEE_H_DEFINED_glGetInvariantFloatvEXT typedef void (APIENTRYP GLEEPFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat * data); GLEE_EXTERN GLEEPFNGLGETINVARIANTFLOATVEXTPROC GLeeFuncPtr_glGetInvariantFloatvEXT; #define glGetInvariantFloatvEXT GLeeFuncPtr_glGetInvariantFloatvEXT #endif #ifndef GLEE_H_DEFINED_glGetLocalConstantBooleanvEXT #define GLEE_H_DEFINED_glGetLocalConstantBooleanvEXT typedef void (APIENTRYP GLEEPFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean * data); GLEE_EXTERN GLEEPFNGLGETLOCALCONSTANTBOOLEANVEXTPROC GLeeFuncPtr_glGetLocalConstantBooleanvEXT; #define glGetLocalConstantBooleanvEXT GLeeFuncPtr_glGetLocalConstantBooleanvEXT #endif #ifndef GLEE_H_DEFINED_glGetLocalConstantIntegervEXT #define GLEE_H_DEFINED_glGetLocalConstantIntegervEXT typedef void (APIENTRYP GLEEPFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint * data); GLEE_EXTERN GLEEPFNGLGETLOCALCONSTANTINTEGERVEXTPROC GLeeFuncPtr_glGetLocalConstantIntegervEXT; #define glGetLocalConstantIntegervEXT GLeeFuncPtr_glGetLocalConstantIntegervEXT #endif #ifndef GLEE_H_DEFINED_glGetLocalConstantFloatvEXT #define GLEE_H_DEFINED_glGetLocalConstantFloatvEXT typedef void (APIENTRYP GLEEPFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat * data); GLEE_EXTERN GLEEPFNGLGETLOCALCONSTANTFLOATVEXTPROC GLeeFuncPtr_glGetLocalConstantFloatvEXT; #define glGetLocalConstantFloatvEXT GLeeFuncPtr_glGetLocalConstantFloatvEXT #endif #endif /* GL_ATI_vertex_streams */ #ifndef GL_ATI_vertex_streams #define GL_ATI_vertex_streams 1 #define __GLEE_GL_ATI_vertex_streams 1 /* Constants */ #define GL_MAX_VERTEX_STREAMS_ATI 0x876B #define GL_VERTEX_STREAM0_ATI 0x876C #define GL_VERTEX_STREAM1_ATI 0x876D #define GL_VERTEX_STREAM2_ATI 0x876E #define GL_VERTEX_STREAM3_ATI 0x876F #define GL_VERTEX_STREAM4_ATI 0x8770 #define GL_VERTEX_STREAM5_ATI 0x8771 #define GL_VERTEX_STREAM6_ATI 0x8772 #define GL_VERTEX_STREAM7_ATI 0x8773 #define GL_VERTEX_SOURCE_ATI 0x8774 #ifndef GLEE_H_DEFINED_glVertexStream1sATI #define GLEE_H_DEFINED_glVertexStream1sATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM1SATIPROC GLeeFuncPtr_glVertexStream1sATI; #define glVertexStream1sATI GLeeFuncPtr_glVertexStream1sATI #endif #ifndef GLEE_H_DEFINED_glVertexStream1svATI #define GLEE_H_DEFINED_glVertexStream1svATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM1SVATIPROC GLeeFuncPtr_glVertexStream1svATI; #define glVertexStream1svATI GLeeFuncPtr_glVertexStream1svATI #endif #ifndef GLEE_H_DEFINED_glVertexStream1iATI #define GLEE_H_DEFINED_glVertexStream1iATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM1IATIPROC GLeeFuncPtr_glVertexStream1iATI; #define glVertexStream1iATI GLeeFuncPtr_glVertexStream1iATI #endif #ifndef GLEE_H_DEFINED_glVertexStream1ivATI #define GLEE_H_DEFINED_glVertexStream1ivATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM1IVATIPROC GLeeFuncPtr_glVertexStream1ivATI; #define glVertexStream1ivATI GLeeFuncPtr_glVertexStream1ivATI #endif #ifndef GLEE_H_DEFINED_glVertexStream1fATI #define GLEE_H_DEFINED_glVertexStream1fATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM1FATIPROC GLeeFuncPtr_glVertexStream1fATI; #define glVertexStream1fATI GLeeFuncPtr_glVertexStream1fATI #endif #ifndef GLEE_H_DEFINED_glVertexStream1fvATI #define GLEE_H_DEFINED_glVertexStream1fvATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM1FVATIPROC GLeeFuncPtr_glVertexStream1fvATI; #define glVertexStream1fvATI GLeeFuncPtr_glVertexStream1fvATI #endif #ifndef GLEE_H_DEFINED_glVertexStream1dATI #define GLEE_H_DEFINED_glVertexStream1dATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM1DATIPROC GLeeFuncPtr_glVertexStream1dATI; #define glVertexStream1dATI GLeeFuncPtr_glVertexStream1dATI #endif #ifndef GLEE_H_DEFINED_glVertexStream1dvATI #define GLEE_H_DEFINED_glVertexStream1dvATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM1DVATIPROC GLeeFuncPtr_glVertexStream1dvATI; #define glVertexStream1dvATI GLeeFuncPtr_glVertexStream1dvATI #endif #ifndef GLEE_H_DEFINED_glVertexStream2sATI #define GLEE_H_DEFINED_glVertexStream2sATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM2SATIPROC GLeeFuncPtr_glVertexStream2sATI; #define glVertexStream2sATI GLeeFuncPtr_glVertexStream2sATI #endif #ifndef GLEE_H_DEFINED_glVertexStream2svATI #define GLEE_H_DEFINED_glVertexStream2svATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM2SVATIPROC GLeeFuncPtr_glVertexStream2svATI; #define glVertexStream2svATI GLeeFuncPtr_glVertexStream2svATI #endif #ifndef GLEE_H_DEFINED_glVertexStream2iATI #define GLEE_H_DEFINED_glVertexStream2iATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM2IATIPROC GLeeFuncPtr_glVertexStream2iATI; #define glVertexStream2iATI GLeeFuncPtr_glVertexStream2iATI #endif #ifndef GLEE_H_DEFINED_glVertexStream2ivATI #define GLEE_H_DEFINED_glVertexStream2ivATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM2IVATIPROC GLeeFuncPtr_glVertexStream2ivATI; #define glVertexStream2ivATI GLeeFuncPtr_glVertexStream2ivATI #endif #ifndef GLEE_H_DEFINED_glVertexStream2fATI #define GLEE_H_DEFINED_glVertexStream2fATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM2FATIPROC GLeeFuncPtr_glVertexStream2fATI; #define glVertexStream2fATI GLeeFuncPtr_glVertexStream2fATI #endif #ifndef GLEE_H_DEFINED_glVertexStream2fvATI #define GLEE_H_DEFINED_glVertexStream2fvATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM2FVATIPROC GLeeFuncPtr_glVertexStream2fvATI; #define glVertexStream2fvATI GLeeFuncPtr_glVertexStream2fvATI #endif #ifndef GLEE_H_DEFINED_glVertexStream2dATI #define GLEE_H_DEFINED_glVertexStream2dATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM2DATIPROC GLeeFuncPtr_glVertexStream2dATI; #define glVertexStream2dATI GLeeFuncPtr_glVertexStream2dATI #endif #ifndef GLEE_H_DEFINED_glVertexStream2dvATI #define GLEE_H_DEFINED_glVertexStream2dvATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM2DVATIPROC GLeeFuncPtr_glVertexStream2dvATI; #define glVertexStream2dvATI GLeeFuncPtr_glVertexStream2dvATI #endif #ifndef GLEE_H_DEFINED_glVertexStream3sATI #define GLEE_H_DEFINED_glVertexStream3sATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM3SATIPROC GLeeFuncPtr_glVertexStream3sATI; #define glVertexStream3sATI GLeeFuncPtr_glVertexStream3sATI #endif #ifndef GLEE_H_DEFINED_glVertexStream3svATI #define GLEE_H_DEFINED_glVertexStream3svATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM3SVATIPROC GLeeFuncPtr_glVertexStream3svATI; #define glVertexStream3svATI GLeeFuncPtr_glVertexStream3svATI #endif #ifndef GLEE_H_DEFINED_glVertexStream3iATI #define GLEE_H_DEFINED_glVertexStream3iATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM3IATIPROC GLeeFuncPtr_glVertexStream3iATI; #define glVertexStream3iATI GLeeFuncPtr_glVertexStream3iATI #endif #ifndef GLEE_H_DEFINED_glVertexStream3ivATI #define GLEE_H_DEFINED_glVertexStream3ivATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM3IVATIPROC GLeeFuncPtr_glVertexStream3ivATI; #define glVertexStream3ivATI GLeeFuncPtr_glVertexStream3ivATI #endif #ifndef GLEE_H_DEFINED_glVertexStream3fATI #define GLEE_H_DEFINED_glVertexStream3fATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM3FATIPROC GLeeFuncPtr_glVertexStream3fATI; #define glVertexStream3fATI GLeeFuncPtr_glVertexStream3fATI #endif #ifndef GLEE_H_DEFINED_glVertexStream3fvATI #define GLEE_H_DEFINED_glVertexStream3fvATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM3FVATIPROC GLeeFuncPtr_glVertexStream3fvATI; #define glVertexStream3fvATI GLeeFuncPtr_glVertexStream3fvATI #endif #ifndef GLEE_H_DEFINED_glVertexStream3dATI #define GLEE_H_DEFINED_glVertexStream3dATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM3DATIPROC GLeeFuncPtr_glVertexStream3dATI; #define glVertexStream3dATI GLeeFuncPtr_glVertexStream3dATI #endif #ifndef GLEE_H_DEFINED_glVertexStream3dvATI #define GLEE_H_DEFINED_glVertexStream3dvATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM3DVATIPROC GLeeFuncPtr_glVertexStream3dvATI; #define glVertexStream3dvATI GLeeFuncPtr_glVertexStream3dvATI #endif #ifndef GLEE_H_DEFINED_glVertexStream4sATI #define GLEE_H_DEFINED_glVertexStream4sATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM4SATIPROC GLeeFuncPtr_glVertexStream4sATI; #define glVertexStream4sATI GLeeFuncPtr_glVertexStream4sATI #endif #ifndef GLEE_H_DEFINED_glVertexStream4svATI #define GLEE_H_DEFINED_glVertexStream4svATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM4SVATIPROC GLeeFuncPtr_glVertexStream4svATI; #define glVertexStream4svATI GLeeFuncPtr_glVertexStream4svATI #endif #ifndef GLEE_H_DEFINED_glVertexStream4iATI #define GLEE_H_DEFINED_glVertexStream4iATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM4IATIPROC GLeeFuncPtr_glVertexStream4iATI; #define glVertexStream4iATI GLeeFuncPtr_glVertexStream4iATI #endif #ifndef GLEE_H_DEFINED_glVertexStream4ivATI #define GLEE_H_DEFINED_glVertexStream4ivATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM4IVATIPROC GLeeFuncPtr_glVertexStream4ivATI; #define glVertexStream4ivATI GLeeFuncPtr_glVertexStream4ivATI #endif #ifndef GLEE_H_DEFINED_glVertexStream4fATI #define GLEE_H_DEFINED_glVertexStream4fATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM4FATIPROC GLeeFuncPtr_glVertexStream4fATI; #define glVertexStream4fATI GLeeFuncPtr_glVertexStream4fATI #endif #ifndef GLEE_H_DEFINED_glVertexStream4fvATI #define GLEE_H_DEFINED_glVertexStream4fvATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM4FVATIPROC GLeeFuncPtr_glVertexStream4fvATI; #define glVertexStream4fvATI GLeeFuncPtr_glVertexStream4fvATI #endif #ifndef GLEE_H_DEFINED_glVertexStream4dATI #define GLEE_H_DEFINED_glVertexStream4dATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM4DATIPROC GLeeFuncPtr_glVertexStream4dATI; #define glVertexStream4dATI GLeeFuncPtr_glVertexStream4dATI #endif #ifndef GLEE_H_DEFINED_glVertexStream4dvATI #define GLEE_H_DEFINED_glVertexStream4dvATI typedef void (APIENTRYP GLEEPFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble * coords); GLEE_EXTERN GLEEPFNGLVERTEXSTREAM4DVATIPROC GLeeFuncPtr_glVertexStream4dvATI; #define glVertexStream4dvATI GLeeFuncPtr_glVertexStream4dvATI #endif #ifndef GLEE_H_DEFINED_glNormalStream3bATI #define GLEE_H_DEFINED_glNormalStream3bATI typedef void (APIENTRYP GLEEPFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); GLEE_EXTERN GLEEPFNGLNORMALSTREAM3BATIPROC GLeeFuncPtr_glNormalStream3bATI; #define glNormalStream3bATI GLeeFuncPtr_glNormalStream3bATI #endif #ifndef GLEE_H_DEFINED_glNormalStream3bvATI #define GLEE_H_DEFINED_glNormalStream3bvATI typedef void (APIENTRYP GLEEPFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte * coords); GLEE_EXTERN GLEEPFNGLNORMALSTREAM3BVATIPROC GLeeFuncPtr_glNormalStream3bvATI; #define glNormalStream3bvATI GLeeFuncPtr_glNormalStream3bvATI #endif #ifndef GLEE_H_DEFINED_glNormalStream3sATI #define GLEE_H_DEFINED_glNormalStream3sATI typedef void (APIENTRYP GLEEPFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); GLEE_EXTERN GLEEPFNGLNORMALSTREAM3SATIPROC GLeeFuncPtr_glNormalStream3sATI; #define glNormalStream3sATI GLeeFuncPtr_glNormalStream3sATI #endif #ifndef GLEE_H_DEFINED_glNormalStream3svATI #define GLEE_H_DEFINED_glNormalStream3svATI typedef void (APIENTRYP GLEEPFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort * coords); GLEE_EXTERN GLEEPFNGLNORMALSTREAM3SVATIPROC GLeeFuncPtr_glNormalStream3svATI; #define glNormalStream3svATI GLeeFuncPtr_glNormalStream3svATI #endif #ifndef GLEE_H_DEFINED_glNormalStream3iATI #define GLEE_H_DEFINED_glNormalStream3iATI typedef void (APIENTRYP GLEEPFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); GLEE_EXTERN GLEEPFNGLNORMALSTREAM3IATIPROC GLeeFuncPtr_glNormalStream3iATI; #define glNormalStream3iATI GLeeFuncPtr_glNormalStream3iATI #endif #ifndef GLEE_H_DEFINED_glNormalStream3ivATI #define GLEE_H_DEFINED_glNormalStream3ivATI typedef void (APIENTRYP GLEEPFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint * coords); GLEE_EXTERN GLEEPFNGLNORMALSTREAM3IVATIPROC GLeeFuncPtr_glNormalStream3ivATI; #define glNormalStream3ivATI GLeeFuncPtr_glNormalStream3ivATI #endif #ifndef GLEE_H_DEFINED_glNormalStream3fATI #define GLEE_H_DEFINED_glNormalStream3fATI typedef void (APIENTRYP GLEEPFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); GLEE_EXTERN GLEEPFNGLNORMALSTREAM3FATIPROC GLeeFuncPtr_glNormalStream3fATI; #define glNormalStream3fATI GLeeFuncPtr_glNormalStream3fATI #endif #ifndef GLEE_H_DEFINED_glNormalStream3fvATI #define GLEE_H_DEFINED_glNormalStream3fvATI typedef void (APIENTRYP GLEEPFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat * coords); GLEE_EXTERN GLEEPFNGLNORMALSTREAM3FVATIPROC GLeeFuncPtr_glNormalStream3fvATI; #define glNormalStream3fvATI GLeeFuncPtr_glNormalStream3fvATI #endif #ifndef GLEE_H_DEFINED_glNormalStream3dATI #define GLEE_H_DEFINED_glNormalStream3dATI typedef void (APIENTRYP GLEEPFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); GLEE_EXTERN GLEEPFNGLNORMALSTREAM3DATIPROC GLeeFuncPtr_glNormalStream3dATI; #define glNormalStream3dATI GLeeFuncPtr_glNormalStream3dATI #endif #ifndef GLEE_H_DEFINED_glNormalStream3dvATI #define GLEE_H_DEFINED_glNormalStream3dvATI typedef void (APIENTRYP GLEEPFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble * coords); GLEE_EXTERN GLEEPFNGLNORMALSTREAM3DVATIPROC GLeeFuncPtr_glNormalStream3dvATI; #define glNormalStream3dvATI GLeeFuncPtr_glNormalStream3dvATI #endif #ifndef GLEE_H_DEFINED_glClientActiveVertexStreamATI #define GLEE_H_DEFINED_glClientActiveVertexStreamATI typedef void (APIENTRYP GLEEPFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); GLEE_EXTERN GLEEPFNGLCLIENTACTIVEVERTEXSTREAMATIPROC GLeeFuncPtr_glClientActiveVertexStreamATI; #define glClientActiveVertexStreamATI GLeeFuncPtr_glClientActiveVertexStreamATI #endif #ifndef GLEE_H_DEFINED_glVertexBlendEnviATI #define GLEE_H_DEFINED_glVertexBlendEnviATI typedef void (APIENTRYP GLEEPFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLVERTEXBLENDENVIATIPROC GLeeFuncPtr_glVertexBlendEnviATI; #define glVertexBlendEnviATI GLeeFuncPtr_glVertexBlendEnviATI #endif #ifndef GLEE_H_DEFINED_glVertexBlendEnvfATI #define GLEE_H_DEFINED_glVertexBlendEnvfATI typedef void (APIENTRYP GLEEPFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLVERTEXBLENDENVFATIPROC GLeeFuncPtr_glVertexBlendEnvfATI; #define glVertexBlendEnvfATI GLeeFuncPtr_glVertexBlendEnvfATI #endif #endif /* GL_ATI_element_array */ #ifndef GL_ATI_element_array #define GL_ATI_element_array 1 #define __GLEE_GL_ATI_element_array 1 /* Constants */ #define GL_ELEMENT_ARRAY_ATI 0x8768 #define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 #define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A #ifndef GLEE_H_DEFINED_glElementPointerATI #define GLEE_H_DEFINED_glElementPointerATI typedef void (APIENTRYP GLEEPFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLELEMENTPOINTERATIPROC GLeeFuncPtr_glElementPointerATI; #define glElementPointerATI GLeeFuncPtr_glElementPointerATI #endif #ifndef GLEE_H_DEFINED_glDrawElementArrayATI #define GLEE_H_DEFINED_glDrawElementArrayATI typedef void (APIENTRYP GLEEPFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); GLEE_EXTERN GLEEPFNGLDRAWELEMENTARRAYATIPROC GLeeFuncPtr_glDrawElementArrayATI; #define glDrawElementArrayATI GLeeFuncPtr_glDrawElementArrayATI #endif #ifndef GLEE_H_DEFINED_glDrawRangeElementArrayATI #define GLEE_H_DEFINED_glDrawRangeElementArrayATI typedef void (APIENTRYP GLEEPFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); GLEE_EXTERN GLEEPFNGLDRAWRANGEELEMENTARRAYATIPROC GLeeFuncPtr_glDrawRangeElementArrayATI; #define glDrawRangeElementArrayATI GLeeFuncPtr_glDrawRangeElementArrayATI #endif #endif /* GL_SUN_mesh_array */ #ifndef GL_SUN_mesh_array #define GL_SUN_mesh_array 1 #define __GLEE_GL_SUN_mesh_array 1 /* Constants */ #define GL_QUAD_MESH_SUN 0x8614 #define GL_TRIANGLE_MESH_SUN 0x8615 #ifndef GLEE_H_DEFINED_glDrawMeshArraysSUN #define GLEE_H_DEFINED_glDrawMeshArraysSUN typedef void (APIENTRYP GLEEPFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); GLEE_EXTERN GLEEPFNGLDRAWMESHARRAYSSUNPROC GLeeFuncPtr_glDrawMeshArraysSUN; #define glDrawMeshArraysSUN GLeeFuncPtr_glDrawMeshArraysSUN #endif #endif /* GL_SUN_slice_accum */ #ifndef GL_SUN_slice_accum #define GL_SUN_slice_accum 1 #define __GLEE_GL_SUN_slice_accum 1 /* Constants */ #define GL_SLICE_ACCUM_SUN 0x85CC #endif /* GL_NV_multisample_filter_hint */ #ifndef GL_NV_multisample_filter_hint #define GL_NV_multisample_filter_hint 1 #define __GLEE_GL_NV_multisample_filter_hint 1 /* Constants */ #define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 #endif /* GL_NV_depth_clamp */ #ifndef GL_NV_depth_clamp #define GL_NV_depth_clamp 1 #define __GLEE_GL_NV_depth_clamp 1 /* Constants */ #define GL_DEPTH_CLAMP_NV 0x864F #endif /* GL_NV_occlusion_query */ #ifndef GL_NV_occlusion_query #define GL_NV_occlusion_query 1 #define __GLEE_GL_NV_occlusion_query 1 /* Constants */ #define GL_PIXEL_COUNTER_BITS_NV 0x8864 #define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 #define GL_PIXEL_COUNT_NV 0x8866 #define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 #ifndef GLEE_H_DEFINED_glGenOcclusionQueriesNV #define GLEE_H_DEFINED_glGenOcclusionQueriesNV typedef void (APIENTRYP GLEEPFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint * ids); GLEE_EXTERN GLEEPFNGLGENOCCLUSIONQUERIESNVPROC GLeeFuncPtr_glGenOcclusionQueriesNV; #define glGenOcclusionQueriesNV GLeeFuncPtr_glGenOcclusionQueriesNV #endif #ifndef GLEE_H_DEFINED_glDeleteOcclusionQueriesNV #define GLEE_H_DEFINED_glDeleteOcclusionQueriesNV typedef void (APIENTRYP GLEEPFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint * ids); GLEE_EXTERN GLEEPFNGLDELETEOCCLUSIONQUERIESNVPROC GLeeFuncPtr_glDeleteOcclusionQueriesNV; #define glDeleteOcclusionQueriesNV GLeeFuncPtr_glDeleteOcclusionQueriesNV #endif #ifndef GLEE_H_DEFINED_glIsOcclusionQueryNV #define GLEE_H_DEFINED_glIsOcclusionQueryNV typedef GLboolean (APIENTRYP GLEEPFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLISOCCLUSIONQUERYNVPROC GLeeFuncPtr_glIsOcclusionQueryNV; #define glIsOcclusionQueryNV GLeeFuncPtr_glIsOcclusionQueryNV #endif #ifndef GLEE_H_DEFINED_glBeginOcclusionQueryNV #define GLEE_H_DEFINED_glBeginOcclusionQueryNV typedef void (APIENTRYP GLEEPFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLBEGINOCCLUSIONQUERYNVPROC GLeeFuncPtr_glBeginOcclusionQueryNV; #define glBeginOcclusionQueryNV GLeeFuncPtr_glBeginOcclusionQueryNV #endif #ifndef GLEE_H_DEFINED_glEndOcclusionQueryNV #define GLEE_H_DEFINED_glEndOcclusionQueryNV typedef void (APIENTRYP GLEEPFNGLENDOCCLUSIONQUERYNVPROC) (); GLEE_EXTERN GLEEPFNGLENDOCCLUSIONQUERYNVPROC GLeeFuncPtr_glEndOcclusionQueryNV; #define glEndOcclusionQueryNV GLeeFuncPtr_glEndOcclusionQueryNV #endif #ifndef GLEE_H_DEFINED_glGetOcclusionQueryivNV #define GLEE_H_DEFINED_glGetOcclusionQueryivNV typedef void (APIENTRYP GLEEPFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETOCCLUSIONQUERYIVNVPROC GLeeFuncPtr_glGetOcclusionQueryivNV; #define glGetOcclusionQueryivNV GLeeFuncPtr_glGetOcclusionQueryivNV #endif #ifndef GLEE_H_DEFINED_glGetOcclusionQueryuivNV #define GLEE_H_DEFINED_glGetOcclusionQueryuivNV typedef void (APIENTRYP GLEEPFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint * params); GLEE_EXTERN GLEEPFNGLGETOCCLUSIONQUERYUIVNVPROC GLeeFuncPtr_glGetOcclusionQueryuivNV; #define glGetOcclusionQueryuivNV GLeeFuncPtr_glGetOcclusionQueryuivNV #endif #endif /* GL_NV_point_sprite */ #ifndef GL_NV_point_sprite #define GL_NV_point_sprite 1 #define __GLEE_GL_NV_point_sprite 1 /* Constants */ #define GL_POINT_SPRITE_NV 0x8861 #define GL_COORD_REPLACE_NV 0x8862 #define GL_POINT_SPRITE_R_MODE_NV 0x8863 #ifndef GLEE_H_DEFINED_glPointParameteriNV #define GLEE_H_DEFINED_glPointParameteriNV typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERINVPROC GLeeFuncPtr_glPointParameteriNV; #define glPointParameteriNV GLeeFuncPtr_glPointParameteriNV #endif #ifndef GLEE_H_DEFINED_glPointParameterivNV #define GLEE_H_DEFINED_glPointParameterivNV typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERIVNVPROC GLeeFuncPtr_glPointParameterivNV; #define glPointParameterivNV GLeeFuncPtr_glPointParameterivNV #endif #endif /* GL_NV_texture_shader3 */ #ifndef GL_NV_texture_shader3 #define GL_NV_texture_shader3 1 #define __GLEE_GL_NV_texture_shader3 1 /* Constants */ #define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 #define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 #define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 #define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 #define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 #define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 #define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 #define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 #define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 #define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 #define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A #define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B #define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C #define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D #define GL_HILO8_NV 0x885E #define GL_SIGNED_HILO8_NV 0x885F #define GL_FORCE_BLUE_TO_ONE_NV 0x8860 #endif /* GL_NV_vertex_program1_1 */ #ifndef GL_NV_vertex_program1_1 #define GL_NV_vertex_program1_1 1 #define __GLEE_GL_NV_vertex_program1_1 1 /* Constants */ #endif /* GL_EXT_shadow_funcs */ #ifndef GL_EXT_shadow_funcs #define GL_EXT_shadow_funcs 1 #define __GLEE_GL_EXT_shadow_funcs 1 /* Constants */ #endif /* GL_EXT_stencil_two_side */ #ifndef GL_EXT_stencil_two_side #define GL_EXT_stencil_two_side 1 #define __GLEE_GL_EXT_stencil_two_side 1 /* Constants */ #define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 #define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 #ifndef GLEE_H_DEFINED_glActiveStencilFaceEXT #define GLEE_H_DEFINED_glActiveStencilFaceEXT typedef void (APIENTRYP GLEEPFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); GLEE_EXTERN GLEEPFNGLACTIVESTENCILFACEEXTPROC GLeeFuncPtr_glActiveStencilFaceEXT; #define glActiveStencilFaceEXT GLeeFuncPtr_glActiveStencilFaceEXT #endif #endif /* GL_ATI_text_fragment_shader */ #ifndef GL_ATI_text_fragment_shader #define GL_ATI_text_fragment_shader 1 #define __GLEE_GL_ATI_text_fragment_shader 1 /* Constants */ #define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 #endif /* GL_APPLE_client_storage */ #ifndef GL_APPLE_client_storage #define GL_APPLE_client_storage 1 #define __GLEE_GL_APPLE_client_storage 1 /* Constants */ #define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 #endif /* GL_APPLE_element_array */ #ifndef GL_APPLE_element_array #define GL_APPLE_element_array 1 #define __GLEE_GL_APPLE_element_array 1 /* Constants */ #define GL_ELEMENT_ARRAY_APPLE 0x8A0C #define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D #define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E #ifndef GLEE_H_DEFINED_glElementPointerAPPLE #define GLEE_H_DEFINED_glElementPointerAPPLE typedef void (APIENTRYP GLEEPFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLELEMENTPOINTERAPPLEPROC GLeeFuncPtr_glElementPointerAPPLE; #define glElementPointerAPPLE GLeeFuncPtr_glElementPointerAPPLE #endif #ifndef GLEE_H_DEFINED_glDrawElementArrayAPPLE #define GLEE_H_DEFINED_glDrawElementArrayAPPLE typedef void (APIENTRYP GLEEPFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); GLEE_EXTERN GLEEPFNGLDRAWELEMENTARRAYAPPLEPROC GLeeFuncPtr_glDrawElementArrayAPPLE; #define glDrawElementArrayAPPLE GLeeFuncPtr_glDrawElementArrayAPPLE #endif #ifndef GLEE_H_DEFINED_glDrawRangeElementArrayAPPLE #define GLEE_H_DEFINED_glDrawRangeElementArrayAPPLE typedef void (APIENTRYP GLEEPFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); GLEE_EXTERN GLEEPFNGLDRAWRANGEELEMENTARRAYAPPLEPROC GLeeFuncPtr_glDrawRangeElementArrayAPPLE; #define glDrawRangeElementArrayAPPLE GLeeFuncPtr_glDrawRangeElementArrayAPPLE #endif #ifndef GLEE_H_DEFINED_glMultiDrawElementArrayAPPLE #define GLEE_H_DEFINED_glMultiDrawElementArrayAPPLE typedef void (APIENTRYP GLEEPFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount); GLEE_EXTERN GLEEPFNGLMULTIDRAWELEMENTARRAYAPPLEPROC GLeeFuncPtr_glMultiDrawElementArrayAPPLE; #define glMultiDrawElementArrayAPPLE GLeeFuncPtr_glMultiDrawElementArrayAPPLE #endif #ifndef GLEE_H_DEFINED_glMultiDrawRangeElementArrayAPPLE #define GLEE_H_DEFINED_glMultiDrawRangeElementArrayAPPLE typedef void (APIENTRYP GLEEPFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint * first, const GLsizei * count, GLsizei primcount); GLEE_EXTERN GLEEPFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC GLeeFuncPtr_glMultiDrawRangeElementArrayAPPLE; #define glMultiDrawRangeElementArrayAPPLE GLeeFuncPtr_glMultiDrawRangeElementArrayAPPLE #endif #endif /* GL_APPLE_fence */ #ifndef GL_APPLE_fence #define GL_APPLE_fence 1 #define __GLEE_GL_APPLE_fence 1 /* Constants */ #define GL_DRAW_PIXELS_APPLE 0x8A0A #define GL_FENCE_APPLE 0x8A0B #ifndef GLEE_H_DEFINED_glGenFencesAPPLE #define GLEE_H_DEFINED_glGenFencesAPPLE typedef void (APIENTRYP GLEEPFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint * fences); GLEE_EXTERN GLEEPFNGLGENFENCESAPPLEPROC GLeeFuncPtr_glGenFencesAPPLE; #define glGenFencesAPPLE GLeeFuncPtr_glGenFencesAPPLE #endif #ifndef GLEE_H_DEFINED_glDeleteFencesAPPLE #define GLEE_H_DEFINED_glDeleteFencesAPPLE typedef void (APIENTRYP GLEEPFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint * fences); GLEE_EXTERN GLEEPFNGLDELETEFENCESAPPLEPROC GLeeFuncPtr_glDeleteFencesAPPLE; #define glDeleteFencesAPPLE GLeeFuncPtr_glDeleteFencesAPPLE #endif #ifndef GLEE_H_DEFINED_glSetFenceAPPLE #define GLEE_H_DEFINED_glSetFenceAPPLE typedef void (APIENTRYP GLEEPFNGLSETFENCEAPPLEPROC) (GLuint fence); GLEE_EXTERN GLEEPFNGLSETFENCEAPPLEPROC GLeeFuncPtr_glSetFenceAPPLE; #define glSetFenceAPPLE GLeeFuncPtr_glSetFenceAPPLE #endif #ifndef GLEE_H_DEFINED_glIsFenceAPPLE #define GLEE_H_DEFINED_glIsFenceAPPLE typedef GLboolean (APIENTRYP GLEEPFNGLISFENCEAPPLEPROC) (GLuint fence); GLEE_EXTERN GLEEPFNGLISFENCEAPPLEPROC GLeeFuncPtr_glIsFenceAPPLE; #define glIsFenceAPPLE GLeeFuncPtr_glIsFenceAPPLE #endif #ifndef GLEE_H_DEFINED_glTestFenceAPPLE #define GLEE_H_DEFINED_glTestFenceAPPLE typedef GLboolean (APIENTRYP GLEEPFNGLTESTFENCEAPPLEPROC) (GLuint fence); GLEE_EXTERN GLEEPFNGLTESTFENCEAPPLEPROC GLeeFuncPtr_glTestFenceAPPLE; #define glTestFenceAPPLE GLeeFuncPtr_glTestFenceAPPLE #endif #ifndef GLEE_H_DEFINED_glFinishFenceAPPLE #define GLEE_H_DEFINED_glFinishFenceAPPLE typedef void (APIENTRYP GLEEPFNGLFINISHFENCEAPPLEPROC) (GLuint fence); GLEE_EXTERN GLEEPFNGLFINISHFENCEAPPLEPROC GLeeFuncPtr_glFinishFenceAPPLE; #define glFinishFenceAPPLE GLeeFuncPtr_glFinishFenceAPPLE #endif #ifndef GLEE_H_DEFINED_glTestObjectAPPLE #define GLEE_H_DEFINED_glTestObjectAPPLE typedef GLboolean (APIENTRYP GLEEPFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); GLEE_EXTERN GLEEPFNGLTESTOBJECTAPPLEPROC GLeeFuncPtr_glTestObjectAPPLE; #define glTestObjectAPPLE GLeeFuncPtr_glTestObjectAPPLE #endif #ifndef GLEE_H_DEFINED_glFinishObjectAPPLE #define GLEE_H_DEFINED_glFinishObjectAPPLE typedef void (APIENTRYP GLEEPFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); GLEE_EXTERN GLEEPFNGLFINISHOBJECTAPPLEPROC GLeeFuncPtr_glFinishObjectAPPLE; #define glFinishObjectAPPLE GLeeFuncPtr_glFinishObjectAPPLE #endif #endif /* GL_APPLE_vertex_array_object */ #ifndef GL_APPLE_vertex_array_object #define GL_APPLE_vertex_array_object 1 #define __GLEE_GL_APPLE_vertex_array_object 1 /* Constants */ #define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 #ifndef GLEE_H_DEFINED_glBindVertexArrayAPPLE #define GLEE_H_DEFINED_glBindVertexArrayAPPLE typedef void (APIENTRYP GLEEPFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); GLEE_EXTERN GLEEPFNGLBINDVERTEXARRAYAPPLEPROC GLeeFuncPtr_glBindVertexArrayAPPLE; #define glBindVertexArrayAPPLE GLeeFuncPtr_glBindVertexArrayAPPLE #endif #ifndef GLEE_H_DEFINED_glDeleteVertexArraysAPPLE #define GLEE_H_DEFINED_glDeleteVertexArraysAPPLE typedef void (APIENTRYP GLEEPFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint * arrays); GLEE_EXTERN GLEEPFNGLDELETEVERTEXARRAYSAPPLEPROC GLeeFuncPtr_glDeleteVertexArraysAPPLE; #define glDeleteVertexArraysAPPLE GLeeFuncPtr_glDeleteVertexArraysAPPLE #endif #ifndef GLEE_H_DEFINED_glGenVertexArraysAPPLE #define GLEE_H_DEFINED_glGenVertexArraysAPPLE typedef void (APIENTRYP GLEEPFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint * arrays); GLEE_EXTERN GLEEPFNGLGENVERTEXARRAYSAPPLEPROC GLeeFuncPtr_glGenVertexArraysAPPLE; #define glGenVertexArraysAPPLE GLeeFuncPtr_glGenVertexArraysAPPLE #endif #ifndef GLEE_H_DEFINED_glIsVertexArrayAPPLE #define GLEE_H_DEFINED_glIsVertexArrayAPPLE typedef GLboolean (APIENTRYP GLEEPFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); GLEE_EXTERN GLEEPFNGLISVERTEXARRAYAPPLEPROC GLeeFuncPtr_glIsVertexArrayAPPLE; #define glIsVertexArrayAPPLE GLeeFuncPtr_glIsVertexArrayAPPLE #endif #endif /* GL_APPLE_vertex_array_range */ #ifndef GL_APPLE_vertex_array_range #define GL_APPLE_vertex_array_range 1 #define __GLEE_GL_APPLE_vertex_array_range 1 /* Constants */ #define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D #define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E #define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F #define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 #define GL_STORAGE_CLIENT_APPLE 0x85B4 #define GL_STORAGE_CACHED_APPLE 0x85BE #define GL_STORAGE_SHARED_APPLE 0x85BF #ifndef GLEE_H_DEFINED_glVertexArrayRangeAPPLE #define GLEE_H_DEFINED_glVertexArrayRangeAPPLE typedef void (APIENTRYP GLEEPFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid * pointer); GLEE_EXTERN GLEEPFNGLVERTEXARRAYRANGEAPPLEPROC GLeeFuncPtr_glVertexArrayRangeAPPLE; #define glVertexArrayRangeAPPLE GLeeFuncPtr_glVertexArrayRangeAPPLE #endif #ifndef GLEE_H_DEFINED_glFlushVertexArrayRangeAPPLE #define GLEE_H_DEFINED_glFlushVertexArrayRangeAPPLE typedef void (APIENTRYP GLEEPFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid * pointer); GLEE_EXTERN GLEEPFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC GLeeFuncPtr_glFlushVertexArrayRangeAPPLE; #define glFlushVertexArrayRangeAPPLE GLeeFuncPtr_glFlushVertexArrayRangeAPPLE #endif #ifndef GLEE_H_DEFINED_glVertexArrayParameteriAPPLE #define GLEE_H_DEFINED_glVertexArrayParameteriAPPLE typedef void (APIENTRYP GLEEPFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLVERTEXARRAYPARAMETERIAPPLEPROC GLeeFuncPtr_glVertexArrayParameteriAPPLE; #define glVertexArrayParameteriAPPLE GLeeFuncPtr_glVertexArrayParameteriAPPLE #endif #endif /* GL_APPLE_ycbcr_422 */ #ifndef GL_APPLE_ycbcr_422 #define GL_APPLE_ycbcr_422 1 #define __GLEE_GL_APPLE_ycbcr_422 1 /* Constants */ #define GL_YCBCR_422_APPLE 0x85B9 #define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA #define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB #endif /* GL_S3_s3tc */ #ifndef GL_S3_s3tc #define GL_S3_s3tc 1 #define __GLEE_GL_S3_s3tc 1 /* Constants */ #define GL_RGB_S3TC 0x83A0 #define GL_RGB4_S3TC 0x83A1 #define GL_RGBA_S3TC 0x83A2 #define GL_RGBA4_S3TC 0x83A3 #define GL_RGBA_DXT5_S3TC 0x83A4 #define GL_RGBA4_DXT5_S3TC 0x83A5 #endif /* GL_ATI_draw_buffers */ #ifndef GL_ATI_draw_buffers #define GL_ATI_draw_buffers 1 #define __GLEE_GL_ATI_draw_buffers 1 /* Constants */ #define GL_MAX_DRAW_BUFFERS_ATI 0x8824 #define GL_DRAW_BUFFER0_ATI 0x8825 #define GL_DRAW_BUFFER1_ATI 0x8826 #define GL_DRAW_BUFFER2_ATI 0x8827 #define GL_DRAW_BUFFER3_ATI 0x8828 #define GL_DRAW_BUFFER4_ATI 0x8829 #define GL_DRAW_BUFFER5_ATI 0x882A #define GL_DRAW_BUFFER6_ATI 0x882B #define GL_DRAW_BUFFER7_ATI 0x882C #define GL_DRAW_BUFFER8_ATI 0x882D #define GL_DRAW_BUFFER9_ATI 0x882E #define GL_DRAW_BUFFER10_ATI 0x882F #define GL_DRAW_BUFFER11_ATI 0x8830 #define GL_DRAW_BUFFER12_ATI 0x8831 #define GL_DRAW_BUFFER13_ATI 0x8832 #define GL_DRAW_BUFFER14_ATI 0x8833 #define GL_DRAW_BUFFER15_ATI 0x8834 #ifndef GLEE_H_DEFINED_glDrawBuffersATI #define GLEE_H_DEFINED_glDrawBuffersATI typedef void (APIENTRYP GLEEPFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum * bufs); GLEE_EXTERN GLEEPFNGLDRAWBUFFERSATIPROC GLeeFuncPtr_glDrawBuffersATI; #define glDrawBuffersATI GLeeFuncPtr_glDrawBuffersATI #endif #endif /* GL_ATI_pixel_format_float */ #ifndef GL_ATI_pixel_format_float #define GL_ATI_pixel_format_float 1 #define __GLEE_GL_ATI_pixel_format_float 1 /* Constants */ #define GL_RGBA_FLOAT_MODE_ATI 0x8820 #define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 #endif /* GL_ATI_texture_env_combine3 */ #ifndef GL_ATI_texture_env_combine3 #define GL_ATI_texture_env_combine3 1 #define __GLEE_GL_ATI_texture_env_combine3 1 /* Constants */ #define GL_MODULATE_ADD_ATI 0x8744 #define GL_MODULATE_SIGNED_ADD_ATI 0x8745 #define GL_MODULATE_SUBTRACT_ATI 0x8746 #endif /* GL_ATI_texture_float */ #ifndef GL_ATI_texture_float #define GL_ATI_texture_float 1 #define __GLEE_GL_ATI_texture_float 1 /* Constants */ #define GL_RGBA_FLOAT32_ATI 0x8814 #define GL_RGB_FLOAT32_ATI 0x8815 #define GL_ALPHA_FLOAT32_ATI 0x8816 #define GL_INTENSITY_FLOAT32_ATI 0x8817 #define GL_LUMINANCE_FLOAT32_ATI 0x8818 #define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 #define GL_RGBA_FLOAT16_ATI 0x881A #define GL_RGB_FLOAT16_ATI 0x881B #define GL_ALPHA_FLOAT16_ATI 0x881C #define GL_INTENSITY_FLOAT16_ATI 0x881D #define GL_LUMINANCE_FLOAT16_ATI 0x881E #define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F #endif /* GL_NV_float_buffer */ #ifndef GL_NV_float_buffer #define GL_NV_float_buffer 1 #define __GLEE_GL_NV_float_buffer 1 /* Constants */ #define GL_FLOAT_R_NV 0x8880 #define GL_FLOAT_RG_NV 0x8881 #define GL_FLOAT_RGB_NV 0x8882 #define GL_FLOAT_RGBA_NV 0x8883 #define GL_FLOAT_R16_NV 0x8884 #define GL_FLOAT_R32_NV 0x8885 #define GL_FLOAT_RG16_NV 0x8886 #define GL_FLOAT_RG32_NV 0x8887 #define GL_FLOAT_RGB16_NV 0x8888 #define GL_FLOAT_RGB32_NV 0x8889 #define GL_FLOAT_RGBA16_NV 0x888A #define GL_FLOAT_RGBA32_NV 0x888B #define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C #define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D #define GL_FLOAT_RGBA_MODE_NV 0x888E #endif /* GL_NV_fragment_program */ #ifndef GL_NV_fragment_program #define GL_NV_fragment_program 1 #define __GLEE_GL_NV_fragment_program 1 /* Constants */ #define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 #define GL_FRAGMENT_PROGRAM_NV 0x8870 #define GL_MAX_TEXTURE_COORDS_NV 0x8871 #define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 #define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 #define GL_PROGRAM_ERROR_STRING_NV 0x8874 #ifndef GLEE_H_DEFINED_glProgramNamedParameter4fNV #define GLEE_H_DEFINED_glProgramNamedParameter4fNV typedef void (APIENTRYP GLEEPFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLPROGRAMNAMEDPARAMETER4FNVPROC GLeeFuncPtr_glProgramNamedParameter4fNV; #define glProgramNamedParameter4fNV GLeeFuncPtr_glProgramNamedParameter4fNV #endif #ifndef GLEE_H_DEFINED_glProgramNamedParameter4fvNV #define GLEE_H_DEFINED_glProgramNamedParameter4fvNV typedef void (APIENTRYP GLEEPFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); GLEE_EXTERN GLEEPFNGLPROGRAMNAMEDPARAMETER4FVNVPROC GLeeFuncPtr_glProgramNamedParameter4fvNV; #define glProgramNamedParameter4fvNV GLeeFuncPtr_glProgramNamedParameter4fvNV #endif #ifndef GLEE_H_DEFINED_glProgramNamedParameter4dNV #define GLEE_H_DEFINED_glProgramNamedParameter4dNV typedef void (APIENTRYP GLEEPFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLPROGRAMNAMEDPARAMETER4DNVPROC GLeeFuncPtr_glProgramNamedParameter4dNV; #define glProgramNamedParameter4dNV GLeeFuncPtr_glProgramNamedParameter4dNV #endif #ifndef GLEE_H_DEFINED_glProgramNamedParameter4dvNV #define GLEE_H_DEFINED_glProgramNamedParameter4dvNV typedef void (APIENTRYP GLEEPFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); GLEE_EXTERN GLEEPFNGLPROGRAMNAMEDPARAMETER4DVNVPROC GLeeFuncPtr_glProgramNamedParameter4dvNV; #define glProgramNamedParameter4dvNV GLeeFuncPtr_glProgramNamedParameter4dvNV #endif #ifndef GLEE_H_DEFINED_glGetProgramNamedParameterfvNV #define GLEE_H_DEFINED_glGetProgramNamedParameterfvNV typedef void (APIENTRYP GLEEPFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC GLeeFuncPtr_glGetProgramNamedParameterfvNV; #define glGetProgramNamedParameterfvNV GLeeFuncPtr_glGetProgramNamedParameterfvNV #endif #ifndef GLEE_H_DEFINED_glGetProgramNamedParameterdvNV #define GLEE_H_DEFINED_glGetProgramNamedParameterdvNV typedef void (APIENTRYP GLEEPFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC GLeeFuncPtr_glGetProgramNamedParameterdvNV; #define glGetProgramNamedParameterdvNV GLeeFuncPtr_glGetProgramNamedParameterdvNV #endif #endif /* GL_NV_half_float */ #ifndef GL_NV_half_float #define GL_NV_half_float 1 #define __GLEE_GL_NV_half_float 1 /* Constants */ #define GL_HALF_FLOAT_NV 0x140B #ifndef GLEE_H_DEFINED_glVertex2hNV #define GLEE_H_DEFINED_glVertex2hNV typedef void (APIENTRYP GLEEPFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y); GLEE_EXTERN GLEEPFNGLVERTEX2HNVPROC GLeeFuncPtr_glVertex2hNV; #define glVertex2hNV GLeeFuncPtr_glVertex2hNV #endif #ifndef GLEE_H_DEFINED_glVertex2hvNV #define GLEE_H_DEFINED_glVertex2hvNV typedef void (APIENTRYP GLEEPFNGLVERTEX2HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEX2HVNVPROC GLeeFuncPtr_glVertex2hvNV; #define glVertex2hvNV GLeeFuncPtr_glVertex2hvNV #endif #ifndef GLEE_H_DEFINED_glVertex3hNV #define GLEE_H_DEFINED_glVertex3hNV typedef void (APIENTRYP GLEEPFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z); GLEE_EXTERN GLEEPFNGLVERTEX3HNVPROC GLeeFuncPtr_glVertex3hNV; #define glVertex3hNV GLeeFuncPtr_glVertex3hNV #endif #ifndef GLEE_H_DEFINED_glVertex3hvNV #define GLEE_H_DEFINED_glVertex3hvNV typedef void (APIENTRYP GLEEPFNGLVERTEX3HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEX3HVNVPROC GLeeFuncPtr_glVertex3hvNV; #define glVertex3hvNV GLeeFuncPtr_glVertex3hvNV #endif #ifndef GLEE_H_DEFINED_glVertex4hNV #define GLEE_H_DEFINED_glVertex4hNV typedef void (APIENTRYP GLEEPFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); GLEE_EXTERN GLEEPFNGLVERTEX4HNVPROC GLeeFuncPtr_glVertex4hNV; #define glVertex4hNV GLeeFuncPtr_glVertex4hNV #endif #ifndef GLEE_H_DEFINED_glVertex4hvNV #define GLEE_H_DEFINED_glVertex4hvNV typedef void (APIENTRYP GLEEPFNGLVERTEX4HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEX4HVNVPROC GLeeFuncPtr_glVertex4hvNV; #define glVertex4hvNV GLeeFuncPtr_glVertex4hvNV #endif #ifndef GLEE_H_DEFINED_glNormal3hNV #define GLEE_H_DEFINED_glNormal3hNV typedef void (APIENTRYP GLEEPFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); GLEE_EXTERN GLEEPFNGLNORMAL3HNVPROC GLeeFuncPtr_glNormal3hNV; #define glNormal3hNV GLeeFuncPtr_glNormal3hNV #endif #ifndef GLEE_H_DEFINED_glNormal3hvNV #define GLEE_H_DEFINED_glNormal3hvNV typedef void (APIENTRYP GLEEPFNGLNORMAL3HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLNORMAL3HVNVPROC GLeeFuncPtr_glNormal3hvNV; #define glNormal3hvNV GLeeFuncPtr_glNormal3hvNV #endif #ifndef GLEE_H_DEFINED_glColor3hNV #define GLEE_H_DEFINED_glColor3hNV typedef void (APIENTRYP GLEEPFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); GLEE_EXTERN GLEEPFNGLCOLOR3HNVPROC GLeeFuncPtr_glColor3hNV; #define glColor3hNV GLeeFuncPtr_glColor3hNV #endif #ifndef GLEE_H_DEFINED_glColor3hvNV #define GLEE_H_DEFINED_glColor3hvNV typedef void (APIENTRYP GLEEPFNGLCOLOR3HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLCOLOR3HVNVPROC GLeeFuncPtr_glColor3hvNV; #define glColor3hvNV GLeeFuncPtr_glColor3hvNV #endif #ifndef GLEE_H_DEFINED_glColor4hNV #define GLEE_H_DEFINED_glColor4hNV typedef void (APIENTRYP GLEEPFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); GLEE_EXTERN GLEEPFNGLCOLOR4HNVPROC GLeeFuncPtr_glColor4hNV; #define glColor4hNV GLeeFuncPtr_glColor4hNV #endif #ifndef GLEE_H_DEFINED_glColor4hvNV #define GLEE_H_DEFINED_glColor4hvNV typedef void (APIENTRYP GLEEPFNGLCOLOR4HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLCOLOR4HVNVPROC GLeeFuncPtr_glColor4hvNV; #define glColor4hvNV GLeeFuncPtr_glColor4hvNV #endif #ifndef GLEE_H_DEFINED_glTexCoord1hNV #define GLEE_H_DEFINED_glTexCoord1hNV typedef void (APIENTRYP GLEEPFNGLTEXCOORD1HNVPROC) (GLhalfNV s); GLEE_EXTERN GLEEPFNGLTEXCOORD1HNVPROC GLeeFuncPtr_glTexCoord1hNV; #define glTexCoord1hNV GLeeFuncPtr_glTexCoord1hNV #endif #ifndef GLEE_H_DEFINED_glTexCoord1hvNV #define GLEE_H_DEFINED_glTexCoord1hvNV typedef void (APIENTRYP GLEEPFNGLTEXCOORD1HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLTEXCOORD1HVNVPROC GLeeFuncPtr_glTexCoord1hvNV; #define glTexCoord1hvNV GLeeFuncPtr_glTexCoord1hvNV #endif #ifndef GLEE_H_DEFINED_glTexCoord2hNV #define GLEE_H_DEFINED_glTexCoord2hNV typedef void (APIENTRYP GLEEPFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t); GLEE_EXTERN GLEEPFNGLTEXCOORD2HNVPROC GLeeFuncPtr_glTexCoord2hNV; #define glTexCoord2hNV GLeeFuncPtr_glTexCoord2hNV #endif #ifndef GLEE_H_DEFINED_glTexCoord2hvNV #define GLEE_H_DEFINED_glTexCoord2hvNV typedef void (APIENTRYP GLEEPFNGLTEXCOORD2HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLTEXCOORD2HVNVPROC GLeeFuncPtr_glTexCoord2hvNV; #define glTexCoord2hvNV GLeeFuncPtr_glTexCoord2hvNV #endif #ifndef GLEE_H_DEFINED_glTexCoord3hNV #define GLEE_H_DEFINED_glTexCoord3hNV typedef void (APIENTRYP GLEEPFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r); GLEE_EXTERN GLEEPFNGLTEXCOORD3HNVPROC GLeeFuncPtr_glTexCoord3hNV; #define glTexCoord3hNV GLeeFuncPtr_glTexCoord3hNV #endif #ifndef GLEE_H_DEFINED_glTexCoord3hvNV #define GLEE_H_DEFINED_glTexCoord3hvNV typedef void (APIENTRYP GLEEPFNGLTEXCOORD3HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLTEXCOORD3HVNVPROC GLeeFuncPtr_glTexCoord3hvNV; #define glTexCoord3hvNV GLeeFuncPtr_glTexCoord3hvNV #endif #ifndef GLEE_H_DEFINED_glTexCoord4hNV #define GLEE_H_DEFINED_glTexCoord4hNV typedef void (APIENTRYP GLEEPFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); GLEE_EXTERN GLEEPFNGLTEXCOORD4HNVPROC GLeeFuncPtr_glTexCoord4hNV; #define glTexCoord4hNV GLeeFuncPtr_glTexCoord4hNV #endif #ifndef GLEE_H_DEFINED_glTexCoord4hvNV #define GLEE_H_DEFINED_glTexCoord4hvNV typedef void (APIENTRYP GLEEPFNGLTEXCOORD4HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLTEXCOORD4HVNVPROC GLeeFuncPtr_glTexCoord4hvNV; #define glTexCoord4hvNV GLeeFuncPtr_glTexCoord4hvNV #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1hNV #define GLEE_H_DEFINED_glMultiTexCoord1hNV typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1HNVPROC GLeeFuncPtr_glMultiTexCoord1hNV; #define glMultiTexCoord1hNV GLeeFuncPtr_glMultiTexCoord1hNV #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1hvNV #define GLEE_H_DEFINED_glMultiTexCoord1hvNV typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1HVNVPROC GLeeFuncPtr_glMultiTexCoord1hvNV; #define glMultiTexCoord1hvNV GLeeFuncPtr_glMultiTexCoord1hvNV #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2hNV #define GLEE_H_DEFINED_glMultiTexCoord2hNV typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2HNVPROC GLeeFuncPtr_glMultiTexCoord2hNV; #define glMultiTexCoord2hNV GLeeFuncPtr_glMultiTexCoord2hNV #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2hvNV #define GLEE_H_DEFINED_glMultiTexCoord2hvNV typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2HVNVPROC GLeeFuncPtr_glMultiTexCoord2hvNV; #define glMultiTexCoord2hvNV GLeeFuncPtr_glMultiTexCoord2hvNV #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3hNV #define GLEE_H_DEFINED_glMultiTexCoord3hNV typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3HNVPROC GLeeFuncPtr_glMultiTexCoord3hNV; #define glMultiTexCoord3hNV GLeeFuncPtr_glMultiTexCoord3hNV #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3hvNV #define GLEE_H_DEFINED_glMultiTexCoord3hvNV typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3HVNVPROC GLeeFuncPtr_glMultiTexCoord3hvNV; #define glMultiTexCoord3hvNV GLeeFuncPtr_glMultiTexCoord3hvNV #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4hNV #define GLEE_H_DEFINED_glMultiTexCoord4hNV typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4HNVPROC GLeeFuncPtr_glMultiTexCoord4hNV; #define glMultiTexCoord4hNV GLeeFuncPtr_glMultiTexCoord4hNV #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4hvNV #define GLEE_H_DEFINED_glMultiTexCoord4hvNV typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4HVNVPROC GLeeFuncPtr_glMultiTexCoord4hvNV; #define glMultiTexCoord4hvNV GLeeFuncPtr_glMultiTexCoord4hvNV #endif #ifndef GLEE_H_DEFINED_glFogCoordhNV #define GLEE_H_DEFINED_glFogCoordhNV typedef void (APIENTRYP GLEEPFNGLFOGCOORDHNVPROC) (GLhalfNV fog); GLEE_EXTERN GLEEPFNGLFOGCOORDHNVPROC GLeeFuncPtr_glFogCoordhNV; #define glFogCoordhNV GLeeFuncPtr_glFogCoordhNV #endif #ifndef GLEE_H_DEFINED_glFogCoordhvNV #define GLEE_H_DEFINED_glFogCoordhvNV typedef void (APIENTRYP GLEEPFNGLFOGCOORDHVNVPROC) (const GLhalfNV * fog); GLEE_EXTERN GLEEPFNGLFOGCOORDHVNVPROC GLeeFuncPtr_glFogCoordhvNV; #define glFogCoordhvNV GLeeFuncPtr_glFogCoordhvNV #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3hNV #define GLEE_H_DEFINED_glSecondaryColor3hNV typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3HNVPROC GLeeFuncPtr_glSecondaryColor3hNV; #define glSecondaryColor3hNV GLeeFuncPtr_glSecondaryColor3hNV #endif #ifndef GLEE_H_DEFINED_glSecondaryColor3hvNV #define GLEE_H_DEFINED_glSecondaryColor3hvNV typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLSECONDARYCOLOR3HVNVPROC GLeeFuncPtr_glSecondaryColor3hvNV; #define glSecondaryColor3hvNV GLeeFuncPtr_glSecondaryColor3hvNV #endif #ifndef GLEE_H_DEFINED_glVertexWeighthNV #define GLEE_H_DEFINED_glVertexWeighthNV typedef void (APIENTRYP GLEEPFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); GLEE_EXTERN GLEEPFNGLVERTEXWEIGHTHNVPROC GLeeFuncPtr_glVertexWeighthNV; #define glVertexWeighthNV GLeeFuncPtr_glVertexWeighthNV #endif #ifndef GLEE_H_DEFINED_glVertexWeighthvNV #define GLEE_H_DEFINED_glVertexWeighthvNV typedef void (APIENTRYP GLEEPFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV * weight); GLEE_EXTERN GLEEPFNGLVERTEXWEIGHTHVNVPROC GLeeFuncPtr_glVertexWeighthvNV; #define glVertexWeighthvNV GLeeFuncPtr_glVertexWeighthvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1hNV #define GLEE_H_DEFINED_glVertexAttrib1hNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1HNVPROC GLeeFuncPtr_glVertexAttrib1hNV; #define glVertexAttrib1hNV GLeeFuncPtr_glVertexAttrib1hNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib1hvNV #define GLEE_H_DEFINED_glVertexAttrib1hvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB1HVNVPROC GLeeFuncPtr_glVertexAttrib1hvNV; #define glVertexAttrib1hvNV GLeeFuncPtr_glVertexAttrib1hvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2hNV #define GLEE_H_DEFINED_glVertexAttrib2hNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2HNVPROC GLeeFuncPtr_glVertexAttrib2hNV; #define glVertexAttrib2hNV GLeeFuncPtr_glVertexAttrib2hNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib2hvNV #define GLEE_H_DEFINED_glVertexAttrib2hvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB2HVNVPROC GLeeFuncPtr_glVertexAttrib2hvNV; #define glVertexAttrib2hvNV GLeeFuncPtr_glVertexAttrib2hvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3hNV #define GLEE_H_DEFINED_glVertexAttrib3hNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3HNVPROC GLeeFuncPtr_glVertexAttrib3hNV; #define glVertexAttrib3hNV GLeeFuncPtr_glVertexAttrib3hNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib3hvNV #define GLEE_H_DEFINED_glVertexAttrib3hvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB3HVNVPROC GLeeFuncPtr_glVertexAttrib3hvNV; #define glVertexAttrib3hvNV GLeeFuncPtr_glVertexAttrib3hvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4hNV #define GLEE_H_DEFINED_glVertexAttrib4hNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4HNVPROC GLeeFuncPtr_glVertexAttrib4hNV; #define glVertexAttrib4hNV GLeeFuncPtr_glVertexAttrib4hNV #endif #ifndef GLEE_H_DEFINED_glVertexAttrib4hvNV #define GLEE_H_DEFINED_glVertexAttrib4hvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIB4HVNVPROC GLeeFuncPtr_glVertexAttrib4hvNV; #define glVertexAttrib4hvNV GLeeFuncPtr_glVertexAttrib4hvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs1hvNV #define GLEE_H_DEFINED_glVertexAttribs1hvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS1HVNVPROC GLeeFuncPtr_glVertexAttribs1hvNV; #define glVertexAttribs1hvNV GLeeFuncPtr_glVertexAttribs1hvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs2hvNV #define GLEE_H_DEFINED_glVertexAttribs2hvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS2HVNVPROC GLeeFuncPtr_glVertexAttribs2hvNV; #define glVertexAttribs2hvNV GLeeFuncPtr_glVertexAttribs2hvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs3hvNV #define GLEE_H_DEFINED_glVertexAttribs3hvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS3HVNVPROC GLeeFuncPtr_glVertexAttribs3hvNV; #define glVertexAttribs3hvNV GLeeFuncPtr_glVertexAttribs3hvNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribs4hvNV #define GLEE_H_DEFINED_glVertexAttribs4hvNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBS4HVNVPROC GLeeFuncPtr_glVertexAttribs4hvNV; #define glVertexAttribs4hvNV GLeeFuncPtr_glVertexAttribs4hvNV #endif #endif /* GL_NV_pixel_data_range */ #ifndef GL_NV_pixel_data_range #define GL_NV_pixel_data_range 1 #define __GLEE_GL_NV_pixel_data_range 1 /* Constants */ #define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 #define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 #define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A #define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B #define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C #define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D #ifndef GLEE_H_DEFINED_glPixelDataRangeNV #define GLEE_H_DEFINED_glPixelDataRangeNV typedef void (APIENTRYP GLEEPFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLPIXELDATARANGENVPROC GLeeFuncPtr_glPixelDataRangeNV; #define glPixelDataRangeNV GLeeFuncPtr_glPixelDataRangeNV #endif #ifndef GLEE_H_DEFINED_glFlushPixelDataRangeNV #define GLEE_H_DEFINED_glFlushPixelDataRangeNV typedef void (APIENTRYP GLEEPFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLFLUSHPIXELDATARANGENVPROC GLeeFuncPtr_glFlushPixelDataRangeNV; #define glFlushPixelDataRangeNV GLeeFuncPtr_glFlushPixelDataRangeNV #endif #endif /* GL_NV_primitive_restart */ #ifndef GL_NV_primitive_restart #define GL_NV_primitive_restart 1 #define __GLEE_GL_NV_primitive_restart 1 /* Constants */ #define GL_PRIMITIVE_RESTART_NV 0x8558 #define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 #ifndef GLEE_H_DEFINED_glPrimitiveRestartNV #define GLEE_H_DEFINED_glPrimitiveRestartNV typedef void (APIENTRYP GLEEPFNGLPRIMITIVERESTARTNVPROC) (); GLEE_EXTERN GLEEPFNGLPRIMITIVERESTARTNVPROC GLeeFuncPtr_glPrimitiveRestartNV; #define glPrimitiveRestartNV GLeeFuncPtr_glPrimitiveRestartNV #endif #ifndef GLEE_H_DEFINED_glPrimitiveRestartIndexNV #define GLEE_H_DEFINED_glPrimitiveRestartIndexNV typedef void (APIENTRYP GLEEPFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); GLEE_EXTERN GLEEPFNGLPRIMITIVERESTARTINDEXNVPROC GLeeFuncPtr_glPrimitiveRestartIndexNV; #define glPrimitiveRestartIndexNV GLeeFuncPtr_glPrimitiveRestartIndexNV #endif #endif /* GL_NV_texture_expand_normal */ #ifndef GL_NV_texture_expand_normal #define GL_NV_texture_expand_normal 1 #define __GLEE_GL_NV_texture_expand_normal 1 /* Constants */ #define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F #endif /* GL_NV_vertex_program2 */ #ifndef GL_NV_vertex_program2 #define GL_NV_vertex_program2 1 #define __GLEE_GL_NV_vertex_program2 1 /* Constants */ #endif /* GL_ATI_map_object_buffer */ #ifndef GL_ATI_map_object_buffer #define GL_ATI_map_object_buffer 1 #define __GLEE_GL_ATI_map_object_buffer 1 /* Constants */ #ifndef GLEE_H_DEFINED_glMapObjectBufferATI #define GLEE_H_DEFINED_glMapObjectBufferATI typedef GLvoid* (APIENTRYP GLEEPFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); GLEE_EXTERN GLEEPFNGLMAPOBJECTBUFFERATIPROC GLeeFuncPtr_glMapObjectBufferATI; #define glMapObjectBufferATI GLeeFuncPtr_glMapObjectBufferATI #endif #ifndef GLEE_H_DEFINED_glUnmapObjectBufferATI #define GLEE_H_DEFINED_glUnmapObjectBufferATI typedef void (APIENTRYP GLEEPFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); GLEE_EXTERN GLEEPFNGLUNMAPOBJECTBUFFERATIPROC GLeeFuncPtr_glUnmapObjectBufferATI; #define glUnmapObjectBufferATI GLeeFuncPtr_glUnmapObjectBufferATI #endif #endif /* GL_ATI_separate_stencil */ #ifndef GL_ATI_separate_stencil #define GL_ATI_separate_stencil 1 #define __GLEE_GL_ATI_separate_stencil 1 /* Constants */ #define GL_STENCIL_BACK_FUNC_ATI 0x8800 #define GL_STENCIL_BACK_FAIL_ATI 0x8801 #define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 #define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 #ifndef GLEE_H_DEFINED_glStencilOpSeparateATI #define GLEE_H_DEFINED_glStencilOpSeparateATI typedef void (APIENTRYP GLEEPFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); GLEE_EXTERN GLEEPFNGLSTENCILOPSEPARATEATIPROC GLeeFuncPtr_glStencilOpSeparateATI; #define glStencilOpSeparateATI GLeeFuncPtr_glStencilOpSeparateATI #endif #ifndef GLEE_H_DEFINED_glStencilFuncSeparateATI #define GLEE_H_DEFINED_glStencilFuncSeparateATI typedef void (APIENTRYP GLEEPFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); GLEE_EXTERN GLEEPFNGLSTENCILFUNCSEPARATEATIPROC GLeeFuncPtr_glStencilFuncSeparateATI; #define glStencilFuncSeparateATI GLeeFuncPtr_glStencilFuncSeparateATI #endif #endif /* GL_ATI_vertex_attrib_array_object */ #ifndef GL_ATI_vertex_attrib_array_object #define GL_ATI_vertex_attrib_array_object 1 #define __GLEE_GL_ATI_vertex_attrib_array_object 1 /* Constants */ #ifndef GLEE_H_DEFINED_glVertexAttribArrayObjectATI #define GLEE_H_DEFINED_glVertexAttribArrayObjectATI typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBARRAYOBJECTATIPROC GLeeFuncPtr_glVertexAttribArrayObjectATI; #define glVertexAttribArrayObjectATI GLeeFuncPtr_glVertexAttribArrayObjectATI #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribArrayObjectfvATI #define GLEE_H_DEFINED_glGetVertexAttribArrayObjectfvATI typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC GLeeFuncPtr_glGetVertexAttribArrayObjectfvATI; #define glGetVertexAttribArrayObjectfvATI GLeeFuncPtr_glGetVertexAttribArrayObjectfvATI #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribArrayObjectivATI #define GLEE_H_DEFINED_glGetVertexAttribArrayObjectivATI typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC GLeeFuncPtr_glGetVertexAttribArrayObjectivATI; #define glGetVertexAttribArrayObjectivATI GLeeFuncPtr_glGetVertexAttribArrayObjectivATI #endif #endif /* GL_OES_byte_coordinates */ #ifndef GL_OES_byte_coordinates #define GL_OES_byte_coordinates 1 #define __GLEE_GL_OES_byte_coordinates 1 /* Constants */ #ifndef GLEE_H_DEFINED_glMultiTexCoord1bOES #define GLEE_H_DEFINED_glMultiTexCoord1bOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1BOESPROC) (GLenum texture, GLbyte s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1BOESPROC GLeeFuncPtr_glMultiTexCoord1bOES; #define glMultiTexCoord1bOES GLeeFuncPtr_glMultiTexCoord1bOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1bvOES #define GLEE_H_DEFINED_glMultiTexCoord1bvOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1BVOESPROC) (GLenum texture, const GLbyte * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1BVOESPROC GLeeFuncPtr_glMultiTexCoord1bvOES; #define glMultiTexCoord1bvOES GLeeFuncPtr_glMultiTexCoord1bvOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2bOES #define GLEE_H_DEFINED_glMultiTexCoord2bOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2BOESPROC) (GLenum texture, GLbyte s, GLbyte t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2BOESPROC GLeeFuncPtr_glMultiTexCoord2bOES; #define glMultiTexCoord2bOES GLeeFuncPtr_glMultiTexCoord2bOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2bvOES #define GLEE_H_DEFINED_glMultiTexCoord2bvOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2BVOESPROC) (GLenum texture, const GLbyte * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2BVOESPROC GLeeFuncPtr_glMultiTexCoord2bvOES; #define glMultiTexCoord2bvOES GLeeFuncPtr_glMultiTexCoord2bvOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3bOES #define GLEE_H_DEFINED_glMultiTexCoord3bOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3BOESPROC GLeeFuncPtr_glMultiTexCoord3bOES; #define glMultiTexCoord3bOES GLeeFuncPtr_glMultiTexCoord3bOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3bvOES #define GLEE_H_DEFINED_glMultiTexCoord3bvOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3BVOESPROC) (GLenum texture, const GLbyte * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3BVOESPROC GLeeFuncPtr_glMultiTexCoord3bvOES; #define glMultiTexCoord3bvOES GLeeFuncPtr_glMultiTexCoord3bvOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4bOES #define GLEE_H_DEFINED_glMultiTexCoord4bOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4BOESPROC) (GLenum texture, GLbyte s, GLbyte t, GLbyte r, GLbyte q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4BOESPROC GLeeFuncPtr_glMultiTexCoord4bOES; #define glMultiTexCoord4bOES GLeeFuncPtr_glMultiTexCoord4bOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4bvOES #define GLEE_H_DEFINED_glMultiTexCoord4bvOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4BVOESPROC) (GLenum texture, const GLbyte * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4BVOESPROC GLeeFuncPtr_glMultiTexCoord4bvOES; #define glMultiTexCoord4bvOES GLeeFuncPtr_glMultiTexCoord4bvOES #endif #ifndef GLEE_H_DEFINED_glTexCoord1bOES #define GLEE_H_DEFINED_glTexCoord1bOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD1BOESPROC) (GLbyte s); GLEE_EXTERN GLEEPFNGLTEXCOORD1BOESPROC GLeeFuncPtr_glTexCoord1bOES; #define glTexCoord1bOES GLeeFuncPtr_glTexCoord1bOES #endif #ifndef GLEE_H_DEFINED_glTexCoord1bvOES #define GLEE_H_DEFINED_glTexCoord1bvOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD1BVOESPROC) (const GLbyte * coords); GLEE_EXTERN GLEEPFNGLTEXCOORD1BVOESPROC GLeeFuncPtr_glTexCoord1bvOES; #define glTexCoord1bvOES GLeeFuncPtr_glTexCoord1bvOES #endif #ifndef GLEE_H_DEFINED_glTexCoord2bOES #define GLEE_H_DEFINED_glTexCoord2bOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD2BOESPROC) (GLbyte s, GLbyte t); GLEE_EXTERN GLEEPFNGLTEXCOORD2BOESPROC GLeeFuncPtr_glTexCoord2bOES; #define glTexCoord2bOES GLeeFuncPtr_glTexCoord2bOES #endif #ifndef GLEE_H_DEFINED_glTexCoord2bvOES #define GLEE_H_DEFINED_glTexCoord2bvOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD2BVOESPROC) (const GLbyte * coords); GLEE_EXTERN GLEEPFNGLTEXCOORD2BVOESPROC GLeeFuncPtr_glTexCoord2bvOES; #define glTexCoord2bvOES GLeeFuncPtr_glTexCoord2bvOES #endif #ifndef GLEE_H_DEFINED_glTexCoord3bOES #define GLEE_H_DEFINED_glTexCoord3bOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD3BOESPROC) (GLbyte s, GLbyte t, GLbyte r); GLEE_EXTERN GLEEPFNGLTEXCOORD3BOESPROC GLeeFuncPtr_glTexCoord3bOES; #define glTexCoord3bOES GLeeFuncPtr_glTexCoord3bOES #endif #ifndef GLEE_H_DEFINED_glTexCoord3bvOES #define GLEE_H_DEFINED_glTexCoord3bvOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD3BVOESPROC) (const GLbyte * coords); GLEE_EXTERN GLEEPFNGLTEXCOORD3BVOESPROC GLeeFuncPtr_glTexCoord3bvOES; #define glTexCoord3bvOES GLeeFuncPtr_glTexCoord3bvOES #endif #ifndef GLEE_H_DEFINED_glTexCoord4bOES #define GLEE_H_DEFINED_glTexCoord4bOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD4BOESPROC) (GLbyte s, GLbyte t, GLbyte r, GLbyte q); GLEE_EXTERN GLEEPFNGLTEXCOORD4BOESPROC GLeeFuncPtr_glTexCoord4bOES; #define glTexCoord4bOES GLeeFuncPtr_glTexCoord4bOES #endif #ifndef GLEE_H_DEFINED_glTexCoord4bvOES #define GLEE_H_DEFINED_glTexCoord4bvOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD4BVOESPROC) (const GLbyte * coords); GLEE_EXTERN GLEEPFNGLTEXCOORD4BVOESPROC GLeeFuncPtr_glTexCoord4bvOES; #define glTexCoord4bvOES GLeeFuncPtr_glTexCoord4bvOES #endif #ifndef GLEE_H_DEFINED_glVertex2bOES #define GLEE_H_DEFINED_glVertex2bOES typedef void (APIENTRYP GLEEPFNGLVERTEX2BOESPROC) (GLbyte x); GLEE_EXTERN GLEEPFNGLVERTEX2BOESPROC GLeeFuncPtr_glVertex2bOES; #define glVertex2bOES GLeeFuncPtr_glVertex2bOES #endif #ifndef GLEE_H_DEFINED_glVertex2bvOES #define GLEE_H_DEFINED_glVertex2bvOES typedef void (APIENTRYP GLEEPFNGLVERTEX2BVOESPROC) (const GLbyte * coords); GLEE_EXTERN GLEEPFNGLVERTEX2BVOESPROC GLeeFuncPtr_glVertex2bvOES; #define glVertex2bvOES GLeeFuncPtr_glVertex2bvOES #endif #ifndef GLEE_H_DEFINED_glVertex3bOES #define GLEE_H_DEFINED_glVertex3bOES typedef void (APIENTRYP GLEEPFNGLVERTEX3BOESPROC) (GLbyte x, GLbyte y); GLEE_EXTERN GLEEPFNGLVERTEX3BOESPROC GLeeFuncPtr_glVertex3bOES; #define glVertex3bOES GLeeFuncPtr_glVertex3bOES #endif #ifndef GLEE_H_DEFINED_glVertex3bvOES #define GLEE_H_DEFINED_glVertex3bvOES typedef void (APIENTRYP GLEEPFNGLVERTEX3BVOESPROC) (const GLbyte * coords); GLEE_EXTERN GLEEPFNGLVERTEX3BVOESPROC GLeeFuncPtr_glVertex3bvOES; #define glVertex3bvOES GLeeFuncPtr_glVertex3bvOES #endif #ifndef GLEE_H_DEFINED_glVertex4bOES #define GLEE_H_DEFINED_glVertex4bOES typedef void (APIENTRYP GLEEPFNGLVERTEX4BOESPROC) (GLbyte x, GLbyte y, GLbyte z); GLEE_EXTERN GLEEPFNGLVERTEX4BOESPROC GLeeFuncPtr_glVertex4bOES; #define glVertex4bOES GLeeFuncPtr_glVertex4bOES #endif #ifndef GLEE_H_DEFINED_glVertex4bvOES #define GLEE_H_DEFINED_glVertex4bvOES typedef void (APIENTRYP GLEEPFNGLVERTEX4BVOESPROC) (const GLbyte * coords); GLEE_EXTERN GLEEPFNGLVERTEX4BVOESPROC GLeeFuncPtr_glVertex4bvOES; #define glVertex4bvOES GLeeFuncPtr_glVertex4bvOES #endif #endif /* GL_OES_fixed_point */ #ifndef GL_OES_fixed_point #define GL_OES_fixed_point 1 #define __GLEE_GL_OES_fixed_point 1 /* Constants */ #define GL_FIXED_OES 0x140C #ifndef GLEE_H_DEFINED_glAccumxOES #define GLEE_H_DEFINED_glAccumxOES typedef void (APIENTRYP GLEEPFNGLACCUMXOESPROC) (GLenum op, GLfixed value); GLEE_EXTERN GLEEPFNGLACCUMXOESPROC GLeeFuncPtr_glAccumxOES; #define glAccumxOES GLeeFuncPtr_glAccumxOES #endif #ifndef GLEE_H_DEFINED_glAlphaFuncxOES #define GLEE_H_DEFINED_glAlphaFuncxOES typedef void (APIENTRYP GLEEPFNGLALPHAFUNCXOESPROC) (GLenum func, GLfixed ref); GLEE_EXTERN GLEEPFNGLALPHAFUNCXOESPROC GLeeFuncPtr_glAlphaFuncxOES; #define glAlphaFuncxOES GLeeFuncPtr_glAlphaFuncxOES #endif #ifndef GLEE_H_DEFINED_glBitmapxOES #define GLEE_H_DEFINED_glBitmapxOES typedef void (APIENTRYP GLEEPFNGLBITMAPXOESPROC) (GLsizei width, GLsizei height, GLfixed xorig, GLfixed yorig, GLfixed xmove, GLfixed ymove, const GLubyte * bitmap); GLEE_EXTERN GLEEPFNGLBITMAPXOESPROC GLeeFuncPtr_glBitmapxOES; #define glBitmapxOES GLeeFuncPtr_glBitmapxOES #endif #ifndef GLEE_H_DEFINED_glBlendColorxOES #define GLEE_H_DEFINED_glBlendColorxOES typedef void (APIENTRYP GLEEPFNGLBLENDCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); GLEE_EXTERN GLEEPFNGLBLENDCOLORXOESPROC GLeeFuncPtr_glBlendColorxOES; #define glBlendColorxOES GLeeFuncPtr_glBlendColorxOES #endif #ifndef GLEE_H_DEFINED_glClearAccumxOES #define GLEE_H_DEFINED_glClearAccumxOES typedef void (APIENTRYP GLEEPFNGLCLEARACCUMXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); GLEE_EXTERN GLEEPFNGLCLEARACCUMXOESPROC GLeeFuncPtr_glClearAccumxOES; #define glClearAccumxOES GLeeFuncPtr_glClearAccumxOES #endif #ifndef GLEE_H_DEFINED_glClearColorxOES #define GLEE_H_DEFINED_glClearColorxOES typedef void (APIENTRYP GLEEPFNGLCLEARCOLORXOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); GLEE_EXTERN GLEEPFNGLCLEARCOLORXOESPROC GLeeFuncPtr_glClearColorxOES; #define glClearColorxOES GLeeFuncPtr_glClearColorxOES #endif #ifndef GLEE_H_DEFINED_glClearDepthxOES #define GLEE_H_DEFINED_glClearDepthxOES typedef void (APIENTRYP GLEEPFNGLCLEARDEPTHXOESPROC) (GLfixed depth); GLEE_EXTERN GLEEPFNGLCLEARDEPTHXOESPROC GLeeFuncPtr_glClearDepthxOES; #define glClearDepthxOES GLeeFuncPtr_glClearDepthxOES #endif #ifndef GLEE_H_DEFINED_glClipPlanexOES #define GLEE_H_DEFINED_glClipPlanexOES typedef void (APIENTRYP GLEEPFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed * equation); GLEE_EXTERN GLEEPFNGLCLIPPLANEXOESPROC GLeeFuncPtr_glClipPlanexOES; #define glClipPlanexOES GLeeFuncPtr_glClipPlanexOES #endif #ifndef GLEE_H_DEFINED_glColor3xOES #define GLEE_H_DEFINED_glColor3xOES typedef void (APIENTRYP GLEEPFNGLCOLOR3XOESPROC) (GLfixed red, GLfixed green, GLfixed blue); GLEE_EXTERN GLEEPFNGLCOLOR3XOESPROC GLeeFuncPtr_glColor3xOES; #define glColor3xOES GLeeFuncPtr_glColor3xOES #endif #ifndef GLEE_H_DEFINED_glColor4xOES #define GLEE_H_DEFINED_glColor4xOES typedef void (APIENTRYP GLEEPFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); GLEE_EXTERN GLEEPFNGLCOLOR4XOESPROC GLeeFuncPtr_glColor4xOES; #define glColor4xOES GLeeFuncPtr_glColor4xOES #endif #ifndef GLEE_H_DEFINED_glColor3xvOES #define GLEE_H_DEFINED_glColor3xvOES typedef void (APIENTRYP GLEEPFNGLCOLOR3XVOESPROC) (const GLfixed * components); GLEE_EXTERN GLEEPFNGLCOLOR3XVOESPROC GLeeFuncPtr_glColor3xvOES; #define glColor3xvOES GLeeFuncPtr_glColor3xvOES #endif #ifndef GLEE_H_DEFINED_glColor4xvOES #define GLEE_H_DEFINED_glColor4xvOES typedef void (APIENTRYP GLEEPFNGLCOLOR4XVOESPROC) (const GLfixed * components); GLEE_EXTERN GLEEPFNGLCOLOR4XVOESPROC GLeeFuncPtr_glColor4xvOES; #define glColor4xvOES GLeeFuncPtr_glColor4xvOES #endif #ifndef GLEE_H_DEFINED_glConvolutionParameterxOES #define GLEE_H_DEFINED_glConvolutionParameterxOES typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLCONVOLUTIONPARAMETERXOESPROC GLeeFuncPtr_glConvolutionParameterxOES; #define glConvolutionParameterxOES GLeeFuncPtr_glConvolutionParameterxOES #endif #ifndef GLEE_H_DEFINED_glConvolutionParameterxvOES #define GLEE_H_DEFINED_glConvolutionParameterxvOES typedef void (APIENTRYP GLEEPFNGLCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed * params); GLEE_EXTERN GLEEPFNGLCONVOLUTIONPARAMETERXVOESPROC GLeeFuncPtr_glConvolutionParameterxvOES; #define glConvolutionParameterxvOES GLeeFuncPtr_glConvolutionParameterxvOES #endif #ifndef GLEE_H_DEFINED_glDepthRangexOES #define GLEE_H_DEFINED_glDepthRangexOES typedef void (APIENTRYP GLEEPFNGLDEPTHRANGEXOESPROC) (GLfixed n, GLfixed f); GLEE_EXTERN GLEEPFNGLDEPTHRANGEXOESPROC GLeeFuncPtr_glDepthRangexOES; #define glDepthRangexOES GLeeFuncPtr_glDepthRangexOES #endif #ifndef GLEE_H_DEFINED_glEvalCoord1xOES #define GLEE_H_DEFINED_glEvalCoord1xOES typedef void (APIENTRYP GLEEPFNGLEVALCOORD1XOESPROC) (GLfixed u); GLEE_EXTERN GLEEPFNGLEVALCOORD1XOESPROC GLeeFuncPtr_glEvalCoord1xOES; #define glEvalCoord1xOES GLeeFuncPtr_glEvalCoord1xOES #endif #ifndef GLEE_H_DEFINED_glEvalCoord2xOES #define GLEE_H_DEFINED_glEvalCoord2xOES typedef void (APIENTRYP GLEEPFNGLEVALCOORD2XOESPROC) (GLfixed u, GLfixed v); GLEE_EXTERN GLEEPFNGLEVALCOORD2XOESPROC GLeeFuncPtr_glEvalCoord2xOES; #define glEvalCoord2xOES GLeeFuncPtr_glEvalCoord2xOES #endif #ifndef GLEE_H_DEFINED_glEvalCoord1xvOES #define GLEE_H_DEFINED_glEvalCoord1xvOES typedef void (APIENTRYP GLEEPFNGLEVALCOORD1XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLEVALCOORD1XVOESPROC GLeeFuncPtr_glEvalCoord1xvOES; #define glEvalCoord1xvOES GLeeFuncPtr_glEvalCoord1xvOES #endif #ifndef GLEE_H_DEFINED_glEvalCoord2xvOES #define GLEE_H_DEFINED_glEvalCoord2xvOES typedef void (APIENTRYP GLEEPFNGLEVALCOORD2XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLEVALCOORD2XVOESPROC GLeeFuncPtr_glEvalCoord2xvOES; #define glEvalCoord2xvOES GLeeFuncPtr_glEvalCoord2xvOES #endif #ifndef GLEE_H_DEFINED_glFeedbackBufferxOES #define GLEE_H_DEFINED_glFeedbackBufferxOES typedef void (APIENTRYP GLEEPFNGLFEEDBACKBUFFERXOESPROC) (GLsizei n, GLenum type, const GLfixed * buffer); GLEE_EXTERN GLEEPFNGLFEEDBACKBUFFERXOESPROC GLeeFuncPtr_glFeedbackBufferxOES; #define glFeedbackBufferxOES GLeeFuncPtr_glFeedbackBufferxOES #endif #ifndef GLEE_H_DEFINED_glFogxOES #define GLEE_H_DEFINED_glFogxOES typedef void (APIENTRYP GLEEPFNGLFOGXOESPROC) (GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLFOGXOESPROC GLeeFuncPtr_glFogxOES; #define glFogxOES GLeeFuncPtr_glFogxOES #endif #ifndef GLEE_H_DEFINED_glFogxvOES #define GLEE_H_DEFINED_glFogxvOES typedef void (APIENTRYP GLEEPFNGLFOGXVOESPROC) (GLenum pname, const GLfixed * param); GLEE_EXTERN GLEEPFNGLFOGXVOESPROC GLeeFuncPtr_glFogxvOES; #define glFogxvOES GLeeFuncPtr_glFogxvOES #endif #ifndef GLEE_H_DEFINED_glFrustumxOES #define GLEE_H_DEFINED_glFrustumxOES typedef void (APIENTRYP GLEEPFNGLFRUSTUMXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); GLEE_EXTERN GLEEPFNGLFRUSTUMXOESPROC GLeeFuncPtr_glFrustumxOES; #define glFrustumxOES GLeeFuncPtr_glFrustumxOES #endif #ifndef GLEE_H_DEFINED_glGetClipPlanexOES #define GLEE_H_DEFINED_glGetClipPlanexOES typedef void (APIENTRYP GLEEPFNGLGETCLIPPLANEXOESPROC) (GLenum plane, GLfixed * equation); GLEE_EXTERN GLEEPFNGLGETCLIPPLANEXOESPROC GLeeFuncPtr_glGetClipPlanexOES; #define glGetClipPlanexOES GLeeFuncPtr_glGetClipPlanexOES #endif #ifndef GLEE_H_DEFINED_glGetConvolutionParameterxvOES #define GLEE_H_DEFINED_glGetConvolutionParameterxvOES typedef void (APIENTRYP GLEEPFNGLGETCONVOLUTIONPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed * params); GLEE_EXTERN GLEEPFNGLGETCONVOLUTIONPARAMETERXVOESPROC GLeeFuncPtr_glGetConvolutionParameterxvOES; #define glGetConvolutionParameterxvOES GLeeFuncPtr_glGetConvolutionParameterxvOES #endif #ifndef GLEE_H_DEFINED_glGetFixedvOES #define GLEE_H_DEFINED_glGetFixedvOES typedef void (APIENTRYP GLEEPFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed * params); GLEE_EXTERN GLEEPFNGLGETFIXEDVOESPROC GLeeFuncPtr_glGetFixedvOES; #define glGetFixedvOES GLeeFuncPtr_glGetFixedvOES #endif #ifndef GLEE_H_DEFINED_glGetHistogramParameterxvOES #define GLEE_H_DEFINED_glGetHistogramParameterxvOES typedef void (APIENTRYP GLEEPFNGLGETHISTOGRAMPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed * params); GLEE_EXTERN GLEEPFNGLGETHISTOGRAMPARAMETERXVOESPROC GLeeFuncPtr_glGetHistogramParameterxvOES; #define glGetHistogramParameterxvOES GLeeFuncPtr_glGetHistogramParameterxvOES #endif #ifndef GLEE_H_DEFINED_glGetLightxOES #define GLEE_H_DEFINED_glGetLightxOES typedef void (APIENTRYP GLEEPFNGLGETLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed * params); GLEE_EXTERN GLEEPFNGLGETLIGHTXOESPROC GLeeFuncPtr_glGetLightxOES; #define glGetLightxOES GLeeFuncPtr_glGetLightxOES #endif #ifndef GLEE_H_DEFINED_glGetMapxvOES #define GLEE_H_DEFINED_glGetMapxvOES typedef void (APIENTRYP GLEEPFNGLGETMAPXVOESPROC) (GLenum target, GLenum query, GLfixed * v); GLEE_EXTERN GLEEPFNGLGETMAPXVOESPROC GLeeFuncPtr_glGetMapxvOES; #define glGetMapxvOES GLeeFuncPtr_glGetMapxvOES #endif #ifndef GLEE_H_DEFINED_glGetMaterialxOES #define GLEE_H_DEFINED_glGetMaterialxOES typedef void (APIENTRYP GLEEPFNGLGETMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLGETMATERIALXOESPROC GLeeFuncPtr_glGetMaterialxOES; #define glGetMaterialxOES GLeeFuncPtr_glGetMaterialxOES #endif #ifndef GLEE_H_DEFINED_glGetPixelMapxv #define GLEE_H_DEFINED_glGetPixelMapxv typedef void (APIENTRYP GLEEPFNGLGETPIXELMAPXVPROC) (GLenum map, GLint size, GLfixed * values); GLEE_EXTERN GLEEPFNGLGETPIXELMAPXVPROC GLeeFuncPtr_glGetPixelMapxv; #define glGetPixelMapxv GLeeFuncPtr_glGetPixelMapxv #endif #ifndef GLEE_H_DEFINED_glGetTexEnvxvOES #define GLEE_H_DEFINED_glGetTexEnvxvOES typedef void (APIENTRYP GLEEPFNGLGETTEXENVXVOESPROC) (GLenum target, GLenum pname, GLfixed * params); GLEE_EXTERN GLEEPFNGLGETTEXENVXVOESPROC GLeeFuncPtr_glGetTexEnvxvOES; #define glGetTexEnvxvOES GLeeFuncPtr_glGetTexEnvxvOES #endif #ifndef GLEE_H_DEFINED_glGetTexGenxvOES #define GLEE_H_DEFINED_glGetTexGenxvOES typedef void (APIENTRYP GLEEPFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed * params); GLEE_EXTERN GLEEPFNGLGETTEXGENXVOESPROC GLeeFuncPtr_glGetTexGenxvOES; #define glGetTexGenxvOES GLeeFuncPtr_glGetTexGenxvOES #endif #ifndef GLEE_H_DEFINED_glGetTexLevelParameterxvOES #define GLEE_H_DEFINED_glGetTexLevelParameterxvOES typedef void (APIENTRYP GLEEPFNGLGETTEXLEVELPARAMETERXVOESPROC) (GLenum target, GLint level, GLenum pname, GLfixed * params); GLEE_EXTERN GLEEPFNGLGETTEXLEVELPARAMETERXVOESPROC GLeeFuncPtr_glGetTexLevelParameterxvOES; #define glGetTexLevelParameterxvOES GLeeFuncPtr_glGetTexLevelParameterxvOES #endif #ifndef GLEE_H_DEFINED_glGetTexParameterxvOES #define GLEE_H_DEFINED_glGetTexParameterxvOES typedef void (APIENTRYP GLEEPFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed * params); GLEE_EXTERN GLEEPFNGLGETTEXPARAMETERXVOESPROC GLeeFuncPtr_glGetTexParameterxvOES; #define glGetTexParameterxvOES GLeeFuncPtr_glGetTexParameterxvOES #endif #ifndef GLEE_H_DEFINED_glIndexxOES #define GLEE_H_DEFINED_glIndexxOES typedef void (APIENTRYP GLEEPFNGLINDEXXOESPROC) (GLfixed component); GLEE_EXTERN GLEEPFNGLINDEXXOESPROC GLeeFuncPtr_glIndexxOES; #define glIndexxOES GLeeFuncPtr_glIndexxOES #endif #ifndef GLEE_H_DEFINED_glIndexxvOES #define GLEE_H_DEFINED_glIndexxvOES typedef void (APIENTRYP GLEEPFNGLINDEXXVOESPROC) (const GLfixed * component); GLEE_EXTERN GLEEPFNGLINDEXXVOESPROC GLeeFuncPtr_glIndexxvOES; #define glIndexxvOES GLeeFuncPtr_glIndexxvOES #endif #ifndef GLEE_H_DEFINED_glLightModelxOES #define GLEE_H_DEFINED_glLightModelxOES typedef void (APIENTRYP GLEEPFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLLIGHTMODELXOESPROC GLeeFuncPtr_glLightModelxOES; #define glLightModelxOES GLeeFuncPtr_glLightModelxOES #endif #ifndef GLEE_H_DEFINED_glLightModelxvOES #define GLEE_H_DEFINED_glLightModelxvOES typedef void (APIENTRYP GLEEPFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed * param); GLEE_EXTERN GLEEPFNGLLIGHTMODELXVOESPROC GLeeFuncPtr_glLightModelxvOES; #define glLightModelxvOES GLeeFuncPtr_glLightModelxvOES #endif #ifndef GLEE_H_DEFINED_glLightxOES #define GLEE_H_DEFINED_glLightxOES typedef void (APIENTRYP GLEEPFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLLIGHTXOESPROC GLeeFuncPtr_glLightxOES; #define glLightxOES GLeeFuncPtr_glLightxOES #endif #ifndef GLEE_H_DEFINED_glLightxvOES #define GLEE_H_DEFINED_glLightxvOES typedef void (APIENTRYP GLEEPFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed * params); GLEE_EXTERN GLEEPFNGLLIGHTXVOESPROC GLeeFuncPtr_glLightxvOES; #define glLightxvOES GLeeFuncPtr_glLightxvOES #endif #ifndef GLEE_H_DEFINED_glLineWidthxOES #define GLEE_H_DEFINED_glLineWidthxOES typedef void (APIENTRYP GLEEPFNGLLINEWIDTHXOESPROC) (GLfixed width); GLEE_EXTERN GLEEPFNGLLINEWIDTHXOESPROC GLeeFuncPtr_glLineWidthxOES; #define glLineWidthxOES GLeeFuncPtr_glLineWidthxOES #endif #ifndef GLEE_H_DEFINED_glLoadMatrixxOES #define GLEE_H_DEFINED_glLoadMatrixxOES typedef void (APIENTRYP GLEEPFNGLLOADMATRIXXOESPROC) (const GLfixed * m); GLEE_EXTERN GLEEPFNGLLOADMATRIXXOESPROC GLeeFuncPtr_glLoadMatrixxOES; #define glLoadMatrixxOES GLeeFuncPtr_glLoadMatrixxOES #endif #ifndef GLEE_H_DEFINED_glLoadTransposeMatrixxOES #define GLEE_H_DEFINED_glLoadTransposeMatrixxOES typedef void (APIENTRYP GLEEPFNGLLOADTRANSPOSEMATRIXXOESPROC) (const GLfixed * m); GLEE_EXTERN GLEEPFNGLLOADTRANSPOSEMATRIXXOESPROC GLeeFuncPtr_glLoadTransposeMatrixxOES; #define glLoadTransposeMatrixxOES GLeeFuncPtr_glLoadTransposeMatrixxOES #endif #ifndef GLEE_H_DEFINED_glMap1xOES #define GLEE_H_DEFINED_glMap1xOES typedef void (APIENTRYP GLEEPFNGLMAP1XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint stride, GLint order, GLfixed points); GLEE_EXTERN GLEEPFNGLMAP1XOESPROC GLeeFuncPtr_glMap1xOES; #define glMap1xOES GLeeFuncPtr_glMap1xOES #endif #ifndef GLEE_H_DEFINED_glMap2xOES #define GLEE_H_DEFINED_glMap2xOES typedef void (APIENTRYP GLEEPFNGLMAP2XOESPROC) (GLenum target, GLfixed u1, GLfixed u2, GLint ustride, GLint uorder, GLfixed v1, GLfixed v2, GLint vstride, GLint vorder, GLfixed points); GLEE_EXTERN GLEEPFNGLMAP2XOESPROC GLeeFuncPtr_glMap2xOES; #define glMap2xOES GLeeFuncPtr_glMap2xOES #endif #ifndef GLEE_H_DEFINED_glMapGrid1xOES #define GLEE_H_DEFINED_glMapGrid1xOES typedef void (APIENTRYP GLEEPFNGLMAPGRID1XOESPROC) (GLint n, GLfixed u1, GLfixed u2); GLEE_EXTERN GLEEPFNGLMAPGRID1XOESPROC GLeeFuncPtr_glMapGrid1xOES; #define glMapGrid1xOES GLeeFuncPtr_glMapGrid1xOES #endif #ifndef GLEE_H_DEFINED_glMapGrid2xOES #define GLEE_H_DEFINED_glMapGrid2xOES typedef void (APIENTRYP GLEEPFNGLMAPGRID2XOESPROC) (GLint n, GLfixed u1, GLfixed u2, GLfixed v1, GLfixed v2); GLEE_EXTERN GLEEPFNGLMAPGRID2XOESPROC GLeeFuncPtr_glMapGrid2xOES; #define glMapGrid2xOES GLeeFuncPtr_glMapGrid2xOES #endif #ifndef GLEE_H_DEFINED_glMaterialxOES #define GLEE_H_DEFINED_glMaterialxOES typedef void (APIENTRYP GLEEPFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLMATERIALXOESPROC GLeeFuncPtr_glMaterialxOES; #define glMaterialxOES GLeeFuncPtr_glMaterialxOES #endif #ifndef GLEE_H_DEFINED_glMaterialxvOES #define GLEE_H_DEFINED_glMaterialxvOES typedef void (APIENTRYP GLEEPFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed * param); GLEE_EXTERN GLEEPFNGLMATERIALXVOESPROC GLeeFuncPtr_glMaterialxvOES; #define glMaterialxvOES GLeeFuncPtr_glMaterialxvOES #endif #ifndef GLEE_H_DEFINED_glMultMatrixxOES #define GLEE_H_DEFINED_glMultMatrixxOES typedef void (APIENTRYP GLEEPFNGLMULTMATRIXXOESPROC) (const GLfixed * m); GLEE_EXTERN GLEEPFNGLMULTMATRIXXOESPROC GLeeFuncPtr_glMultMatrixxOES; #define glMultMatrixxOES GLeeFuncPtr_glMultMatrixxOES #endif #ifndef GLEE_H_DEFINED_glMultTransposeMatrixxOES #define GLEE_H_DEFINED_glMultTransposeMatrixxOES typedef void (APIENTRYP GLEEPFNGLMULTTRANSPOSEMATRIXXOESPROC) (const GLfixed * m); GLEE_EXTERN GLEEPFNGLMULTTRANSPOSEMATRIXXOESPROC GLeeFuncPtr_glMultTransposeMatrixxOES; #define glMultTransposeMatrixxOES GLeeFuncPtr_glMultTransposeMatrixxOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1xOES #define GLEE_H_DEFINED_glMultiTexCoord1xOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1XOESPROC) (GLenum texture, GLfixed s); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1XOESPROC GLeeFuncPtr_glMultiTexCoord1xOES; #define glMultiTexCoord1xOES GLeeFuncPtr_glMultiTexCoord1xOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2xOES #define GLEE_H_DEFINED_glMultiTexCoord2xOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2XOESPROC) (GLenum texture, GLfixed s, GLfixed t); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2XOESPROC GLeeFuncPtr_glMultiTexCoord2xOES; #define glMultiTexCoord2xOES GLeeFuncPtr_glMultiTexCoord2xOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3xOES #define GLEE_H_DEFINED_glMultiTexCoord3xOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3XOESPROC GLeeFuncPtr_glMultiTexCoord3xOES; #define glMultiTexCoord3xOES GLeeFuncPtr_glMultiTexCoord3xOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4xOES #define GLEE_H_DEFINED_glMultiTexCoord4xOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4XOESPROC) (GLenum texture, GLfixed s, GLfixed t, GLfixed r, GLfixed q); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4XOESPROC GLeeFuncPtr_glMultiTexCoord4xOES; #define glMultiTexCoord4xOES GLeeFuncPtr_glMultiTexCoord4xOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord1xvOES #define GLEE_H_DEFINED_glMultiTexCoord1xvOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD1XVOESPROC) (GLenum texture, const GLfixed * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD1XVOESPROC GLeeFuncPtr_glMultiTexCoord1xvOES; #define glMultiTexCoord1xvOES GLeeFuncPtr_glMultiTexCoord1xvOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord2xvOES #define GLEE_H_DEFINED_glMultiTexCoord2xvOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD2XVOESPROC) (GLenum texture, const GLfixed * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD2XVOESPROC GLeeFuncPtr_glMultiTexCoord2xvOES; #define glMultiTexCoord2xvOES GLeeFuncPtr_glMultiTexCoord2xvOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord3xvOES #define GLEE_H_DEFINED_glMultiTexCoord3xvOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD3XVOESPROC) (GLenum texture, const GLfixed * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD3XVOESPROC GLeeFuncPtr_glMultiTexCoord3xvOES; #define glMultiTexCoord3xvOES GLeeFuncPtr_glMultiTexCoord3xvOES #endif #ifndef GLEE_H_DEFINED_glMultiTexCoord4xvOES #define GLEE_H_DEFINED_glMultiTexCoord4xvOES typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORD4XVOESPROC) (GLenum texture, const GLfixed * coords); GLEE_EXTERN GLEEPFNGLMULTITEXCOORD4XVOESPROC GLeeFuncPtr_glMultiTexCoord4xvOES; #define glMultiTexCoord4xvOES GLeeFuncPtr_glMultiTexCoord4xvOES #endif #ifndef GLEE_H_DEFINED_glNormal3xOES #define GLEE_H_DEFINED_glNormal3xOES typedef void (APIENTRYP GLEEPFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz); GLEE_EXTERN GLEEPFNGLNORMAL3XOESPROC GLeeFuncPtr_glNormal3xOES; #define glNormal3xOES GLeeFuncPtr_glNormal3xOES #endif #ifndef GLEE_H_DEFINED_glNormal3xvOES #define GLEE_H_DEFINED_glNormal3xvOES typedef void (APIENTRYP GLEEPFNGLNORMAL3XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLNORMAL3XVOESPROC GLeeFuncPtr_glNormal3xvOES; #define glNormal3xvOES GLeeFuncPtr_glNormal3xvOES #endif #ifndef GLEE_H_DEFINED_glOrthoxOES #define GLEE_H_DEFINED_glOrthoxOES typedef void (APIENTRYP GLEEPFNGLORTHOXOESPROC) (GLfixed l, GLfixed r, GLfixed b, GLfixed t, GLfixed n, GLfixed f); GLEE_EXTERN GLEEPFNGLORTHOXOESPROC GLeeFuncPtr_glOrthoxOES; #define glOrthoxOES GLeeFuncPtr_glOrthoxOES #endif #ifndef GLEE_H_DEFINED_glPassThroughxOES #define GLEE_H_DEFINED_glPassThroughxOES typedef void (APIENTRYP GLEEPFNGLPASSTHROUGHXOESPROC) (GLfixed token); GLEE_EXTERN GLEEPFNGLPASSTHROUGHXOESPROC GLeeFuncPtr_glPassThroughxOES; #define glPassThroughxOES GLeeFuncPtr_glPassThroughxOES #endif #ifndef GLEE_H_DEFINED_glPixelMapx #define GLEE_H_DEFINED_glPixelMapx typedef void (APIENTRYP GLEEPFNGLPIXELMAPXPROC) (GLenum map, GLint size, const GLfixed * values); GLEE_EXTERN GLEEPFNGLPIXELMAPXPROC GLeeFuncPtr_glPixelMapx; #define glPixelMapx GLeeFuncPtr_glPixelMapx #endif #ifndef GLEE_H_DEFINED_glPixelStorex #define GLEE_H_DEFINED_glPixelStorex typedef void (APIENTRYP GLEEPFNGLPIXELSTOREXPROC) (GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLPIXELSTOREXPROC GLeeFuncPtr_glPixelStorex; #define glPixelStorex GLeeFuncPtr_glPixelStorex #endif #ifndef GLEE_H_DEFINED_glPixelTransferxOES #define GLEE_H_DEFINED_glPixelTransferxOES typedef void (APIENTRYP GLEEPFNGLPIXELTRANSFERXOESPROC) (GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLPIXELTRANSFERXOESPROC GLeeFuncPtr_glPixelTransferxOES; #define glPixelTransferxOES GLeeFuncPtr_glPixelTransferxOES #endif #ifndef GLEE_H_DEFINED_glPixelZoomxOES #define GLEE_H_DEFINED_glPixelZoomxOES typedef void (APIENTRYP GLEEPFNGLPIXELZOOMXOESPROC) (GLfixed xfactor, GLfixed yfactor); GLEE_EXTERN GLEEPFNGLPIXELZOOMXOESPROC GLeeFuncPtr_glPixelZoomxOES; #define glPixelZoomxOES GLeeFuncPtr_glPixelZoomxOES #endif #ifndef GLEE_H_DEFINED_glPointParameterxvOES #define GLEE_H_DEFINED_glPointParameterxvOES typedef void (APIENTRYP GLEEPFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed * params); GLEE_EXTERN GLEEPFNGLPOINTPARAMETERXVOESPROC GLeeFuncPtr_glPointParameterxvOES; #define glPointParameterxvOES GLeeFuncPtr_glPointParameterxvOES #endif #ifndef GLEE_H_DEFINED_glPointSizexOES #define GLEE_H_DEFINED_glPointSizexOES typedef void (APIENTRYP GLEEPFNGLPOINTSIZEXOESPROC) (GLfixed size); GLEE_EXTERN GLEEPFNGLPOINTSIZEXOESPROC GLeeFuncPtr_glPointSizexOES; #define glPointSizexOES GLeeFuncPtr_glPointSizexOES #endif #ifndef GLEE_H_DEFINED_glPolygonOffsetxOES #define GLEE_H_DEFINED_glPolygonOffsetxOES typedef void (APIENTRYP GLEEPFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units); GLEE_EXTERN GLEEPFNGLPOLYGONOFFSETXOESPROC GLeeFuncPtr_glPolygonOffsetxOES; #define glPolygonOffsetxOES GLeeFuncPtr_glPolygonOffsetxOES #endif #ifndef GLEE_H_DEFINED_glPrioritizeTexturesxOES #define GLEE_H_DEFINED_glPrioritizeTexturesxOES typedef void (APIENTRYP GLEEPFNGLPRIORITIZETEXTURESXOESPROC) (GLsizei n, const GLuint * textures, const GLfixed * priorities); GLEE_EXTERN GLEEPFNGLPRIORITIZETEXTURESXOESPROC GLeeFuncPtr_glPrioritizeTexturesxOES; #define glPrioritizeTexturesxOES GLeeFuncPtr_glPrioritizeTexturesxOES #endif #ifndef GLEE_H_DEFINED_glRasterPos2xOES #define GLEE_H_DEFINED_glRasterPos2xOES typedef void (APIENTRYP GLEEPFNGLRASTERPOS2XOESPROC) (GLfixed x, GLfixed y); GLEE_EXTERN GLEEPFNGLRASTERPOS2XOESPROC GLeeFuncPtr_glRasterPos2xOES; #define glRasterPos2xOES GLeeFuncPtr_glRasterPos2xOES #endif #ifndef GLEE_H_DEFINED_glRasterPos3xOES #define GLEE_H_DEFINED_glRasterPos3xOES typedef void (APIENTRYP GLEEPFNGLRASTERPOS3XOESPROC) (GLfixed x, GLfixed y, GLfixed z); GLEE_EXTERN GLEEPFNGLRASTERPOS3XOESPROC GLeeFuncPtr_glRasterPos3xOES; #define glRasterPos3xOES GLeeFuncPtr_glRasterPos3xOES #endif #ifndef GLEE_H_DEFINED_glRasterPos4xOES #define GLEE_H_DEFINED_glRasterPos4xOES typedef void (APIENTRYP GLEEPFNGLRASTERPOS4XOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed w); GLEE_EXTERN GLEEPFNGLRASTERPOS4XOESPROC GLeeFuncPtr_glRasterPos4xOES; #define glRasterPos4xOES GLeeFuncPtr_glRasterPos4xOES #endif #ifndef GLEE_H_DEFINED_glRasterPos2xvOES #define GLEE_H_DEFINED_glRasterPos2xvOES typedef void (APIENTRYP GLEEPFNGLRASTERPOS2XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLRASTERPOS2XVOESPROC GLeeFuncPtr_glRasterPos2xvOES; #define glRasterPos2xvOES GLeeFuncPtr_glRasterPos2xvOES #endif #ifndef GLEE_H_DEFINED_glRasterPos3xvOES #define GLEE_H_DEFINED_glRasterPos3xvOES typedef void (APIENTRYP GLEEPFNGLRASTERPOS3XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLRASTERPOS3XVOESPROC GLeeFuncPtr_glRasterPos3xvOES; #define glRasterPos3xvOES GLeeFuncPtr_glRasterPos3xvOES #endif #ifndef GLEE_H_DEFINED_glRasterPos4xvOES #define GLEE_H_DEFINED_glRasterPos4xvOES typedef void (APIENTRYP GLEEPFNGLRASTERPOS4XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLRASTERPOS4XVOESPROC GLeeFuncPtr_glRasterPos4xvOES; #define glRasterPos4xvOES GLeeFuncPtr_glRasterPos4xvOES #endif #ifndef GLEE_H_DEFINED_glRectxOES #define GLEE_H_DEFINED_glRectxOES typedef void (APIENTRYP GLEEPFNGLRECTXOESPROC) (GLfixed x1, GLfixed y1, GLfixed x2, GLfixed y2); GLEE_EXTERN GLEEPFNGLRECTXOESPROC GLeeFuncPtr_glRectxOES; #define glRectxOES GLeeFuncPtr_glRectxOES #endif #ifndef GLEE_H_DEFINED_glRectxvOES #define GLEE_H_DEFINED_glRectxvOES typedef void (APIENTRYP GLEEPFNGLRECTXVOESPROC) (const GLfixed * v1, const GLfixed * v2); GLEE_EXTERN GLEEPFNGLRECTXVOESPROC GLeeFuncPtr_glRectxvOES; #define glRectxvOES GLeeFuncPtr_glRectxvOES #endif #ifndef GLEE_H_DEFINED_glRotatexOES #define GLEE_H_DEFINED_glRotatexOES typedef void (APIENTRYP GLEEPFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z); GLEE_EXTERN GLEEPFNGLROTATEXOESPROC GLeeFuncPtr_glRotatexOES; #define glRotatexOES GLeeFuncPtr_glRotatexOES #endif #ifndef GLEE_H_DEFINED_glSampleCoverageOES #define GLEE_H_DEFINED_glSampleCoverageOES typedef void (APIENTRYP GLEEPFNGLSAMPLECOVERAGEOESPROC) (GLfixed value, GLboolean invert); GLEE_EXTERN GLEEPFNGLSAMPLECOVERAGEOESPROC GLeeFuncPtr_glSampleCoverageOES; #define glSampleCoverageOES GLeeFuncPtr_glSampleCoverageOES #endif #ifndef GLEE_H_DEFINED_glScalexOES #define GLEE_H_DEFINED_glScalexOES typedef void (APIENTRYP GLEEPFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); GLEE_EXTERN GLEEPFNGLSCALEXOESPROC GLeeFuncPtr_glScalexOES; #define glScalexOES GLeeFuncPtr_glScalexOES #endif #ifndef GLEE_H_DEFINED_glTexCoord1xOES #define GLEE_H_DEFINED_glTexCoord1xOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD1XOESPROC) (GLfixed s); GLEE_EXTERN GLEEPFNGLTEXCOORD1XOESPROC GLeeFuncPtr_glTexCoord1xOES; #define glTexCoord1xOES GLeeFuncPtr_glTexCoord1xOES #endif #ifndef GLEE_H_DEFINED_glTexCoord2xOES #define GLEE_H_DEFINED_glTexCoord2xOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD2XOESPROC) (GLfixed s, GLfixed t); GLEE_EXTERN GLEEPFNGLTEXCOORD2XOESPROC GLeeFuncPtr_glTexCoord2xOES; #define glTexCoord2xOES GLeeFuncPtr_glTexCoord2xOES #endif #ifndef GLEE_H_DEFINED_glTexCoord3xOES #define GLEE_H_DEFINED_glTexCoord3xOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD3XOESPROC) (GLfixed s, GLfixed t, GLfixed r); GLEE_EXTERN GLEEPFNGLTEXCOORD3XOESPROC GLeeFuncPtr_glTexCoord3xOES; #define glTexCoord3xOES GLeeFuncPtr_glTexCoord3xOES #endif #ifndef GLEE_H_DEFINED_glTexCoord4xOES #define GLEE_H_DEFINED_glTexCoord4xOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD4XOESPROC) (GLfixed s, GLfixed t, GLfixed r, GLfixed q); GLEE_EXTERN GLEEPFNGLTEXCOORD4XOESPROC GLeeFuncPtr_glTexCoord4xOES; #define glTexCoord4xOES GLeeFuncPtr_glTexCoord4xOES #endif #ifndef GLEE_H_DEFINED_glTexCoord1xvOES #define GLEE_H_DEFINED_glTexCoord1xvOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD1XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLTEXCOORD1XVOESPROC GLeeFuncPtr_glTexCoord1xvOES; #define glTexCoord1xvOES GLeeFuncPtr_glTexCoord1xvOES #endif #ifndef GLEE_H_DEFINED_glTexCoord2xvOES #define GLEE_H_DEFINED_glTexCoord2xvOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD2XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLTEXCOORD2XVOESPROC GLeeFuncPtr_glTexCoord2xvOES; #define glTexCoord2xvOES GLeeFuncPtr_glTexCoord2xvOES #endif #ifndef GLEE_H_DEFINED_glTexCoord3xvOES #define GLEE_H_DEFINED_glTexCoord3xvOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD3XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLTEXCOORD3XVOESPROC GLeeFuncPtr_glTexCoord3xvOES; #define glTexCoord3xvOES GLeeFuncPtr_glTexCoord3xvOES #endif #ifndef GLEE_H_DEFINED_glTexCoord4xvOES #define GLEE_H_DEFINED_glTexCoord4xvOES typedef void (APIENTRYP GLEEPFNGLTEXCOORD4XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLTEXCOORD4XVOESPROC GLeeFuncPtr_glTexCoord4xvOES; #define glTexCoord4xvOES GLeeFuncPtr_glTexCoord4xvOES #endif #ifndef GLEE_H_DEFINED_glTexEnvxOES #define GLEE_H_DEFINED_glTexEnvxOES typedef void (APIENTRYP GLEEPFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLTEXENVXOESPROC GLeeFuncPtr_glTexEnvxOES; #define glTexEnvxOES GLeeFuncPtr_glTexEnvxOES #endif #ifndef GLEE_H_DEFINED_glTexEnvxvOES #define GLEE_H_DEFINED_glTexEnvxvOES typedef void (APIENTRYP GLEEPFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed * params); GLEE_EXTERN GLEEPFNGLTEXENVXVOESPROC GLeeFuncPtr_glTexEnvxvOES; #define glTexEnvxvOES GLeeFuncPtr_glTexEnvxvOES #endif #ifndef GLEE_H_DEFINED_glTexGenxOES #define GLEE_H_DEFINED_glTexGenxOES typedef void (APIENTRYP GLEEPFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLTEXGENXOESPROC GLeeFuncPtr_glTexGenxOES; #define glTexGenxOES GLeeFuncPtr_glTexGenxOES #endif #ifndef GLEE_H_DEFINED_glTexGenxvOES #define GLEE_H_DEFINED_glTexGenxvOES typedef void (APIENTRYP GLEEPFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed * params); GLEE_EXTERN GLEEPFNGLTEXGENXVOESPROC GLeeFuncPtr_glTexGenxvOES; #define glTexGenxvOES GLeeFuncPtr_glTexGenxvOES #endif #ifndef GLEE_H_DEFINED_glTexParameterxOES #define GLEE_H_DEFINED_glTexParameterxOES typedef void (APIENTRYP GLEEPFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param); GLEE_EXTERN GLEEPFNGLTEXPARAMETERXOESPROC GLeeFuncPtr_glTexParameterxOES; #define glTexParameterxOES GLeeFuncPtr_glTexParameterxOES #endif #ifndef GLEE_H_DEFINED_glTexParameterxvOES #define GLEE_H_DEFINED_glTexParameterxvOES typedef void (APIENTRYP GLEEPFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed * params); GLEE_EXTERN GLEEPFNGLTEXPARAMETERXVOESPROC GLeeFuncPtr_glTexParameterxvOES; #define glTexParameterxvOES GLeeFuncPtr_glTexParameterxvOES #endif #ifndef GLEE_H_DEFINED_glTranslatexOES #define GLEE_H_DEFINED_glTranslatexOES typedef void (APIENTRYP GLEEPFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z); GLEE_EXTERN GLEEPFNGLTRANSLATEXOESPROC GLeeFuncPtr_glTranslatexOES; #define glTranslatexOES GLeeFuncPtr_glTranslatexOES #endif #ifndef GLEE_H_DEFINED_glVertex2xOES #define GLEE_H_DEFINED_glVertex2xOES typedef void (APIENTRYP GLEEPFNGLVERTEX2XOESPROC) (GLfixed x); GLEE_EXTERN GLEEPFNGLVERTEX2XOESPROC GLeeFuncPtr_glVertex2xOES; #define glVertex2xOES GLeeFuncPtr_glVertex2xOES #endif #ifndef GLEE_H_DEFINED_glVertex3xOES #define GLEE_H_DEFINED_glVertex3xOES typedef void (APIENTRYP GLEEPFNGLVERTEX3XOESPROC) (GLfixed x, GLfixed y); GLEE_EXTERN GLEEPFNGLVERTEX3XOESPROC GLeeFuncPtr_glVertex3xOES; #define glVertex3xOES GLeeFuncPtr_glVertex3xOES #endif #ifndef GLEE_H_DEFINED_glVertex4xOES #define GLEE_H_DEFINED_glVertex4xOES typedef void (APIENTRYP GLEEPFNGLVERTEX4XOESPROC) (GLfixed x, GLfixed y, GLfixed z); GLEE_EXTERN GLEEPFNGLVERTEX4XOESPROC GLeeFuncPtr_glVertex4xOES; #define glVertex4xOES GLeeFuncPtr_glVertex4xOES #endif #ifndef GLEE_H_DEFINED_glVertex2xvOES #define GLEE_H_DEFINED_glVertex2xvOES typedef void (APIENTRYP GLEEPFNGLVERTEX2XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLVERTEX2XVOESPROC GLeeFuncPtr_glVertex2xvOES; #define glVertex2xvOES GLeeFuncPtr_glVertex2xvOES #endif #ifndef GLEE_H_DEFINED_glVertex3xvOES #define GLEE_H_DEFINED_glVertex3xvOES typedef void (APIENTRYP GLEEPFNGLVERTEX3XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLVERTEX3XVOESPROC GLeeFuncPtr_glVertex3xvOES; #define glVertex3xvOES GLeeFuncPtr_glVertex3xvOES #endif #ifndef GLEE_H_DEFINED_glVertex4xvOES #define GLEE_H_DEFINED_glVertex4xvOES typedef void (APIENTRYP GLEEPFNGLVERTEX4XVOESPROC) (const GLfixed * coords); GLEE_EXTERN GLEEPFNGLVERTEX4XVOESPROC GLeeFuncPtr_glVertex4xvOES; #define glVertex4xvOES GLeeFuncPtr_glVertex4xvOES #endif #endif /* GL_OES_single_precision */ #ifndef GL_OES_single_precision #define GL_OES_single_precision 1 #define __GLEE_GL_OES_single_precision 1 /* Constants */ #ifndef GLEE_H_DEFINED_glDepthRangefOES #define GLEE_H_DEFINED_glDepthRangefOES typedef void (APIENTRYP GLEEPFNGLDEPTHRANGEFOESPROC) (GLclampf n, GLclampf f); GLEE_EXTERN GLEEPFNGLDEPTHRANGEFOESPROC GLeeFuncPtr_glDepthRangefOES; #define glDepthRangefOES GLeeFuncPtr_glDepthRangefOES #endif #ifndef GLEE_H_DEFINED_glFrustumfOES #define GLEE_H_DEFINED_glFrustumfOES typedef void (APIENTRYP GLEEPFNGLFRUSTUMFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); GLEE_EXTERN GLEEPFNGLFRUSTUMFOESPROC GLeeFuncPtr_glFrustumfOES; #define glFrustumfOES GLeeFuncPtr_glFrustumfOES #endif #ifndef GLEE_H_DEFINED_glOrthofOES #define GLEE_H_DEFINED_glOrthofOES typedef void (APIENTRYP GLEEPFNGLORTHOFOESPROC) (GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); GLEE_EXTERN GLEEPFNGLORTHOFOESPROC GLeeFuncPtr_glOrthofOES; #define glOrthofOES GLeeFuncPtr_glOrthofOES #endif #ifndef GLEE_H_DEFINED_glClipPlanefOES #define GLEE_H_DEFINED_glClipPlanefOES typedef void (APIENTRYP GLEEPFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat * equation); GLEE_EXTERN GLEEPFNGLCLIPPLANEFOESPROC GLeeFuncPtr_glClipPlanefOES; #define glClipPlanefOES GLeeFuncPtr_glClipPlanefOES #endif #ifndef GLEE_H_DEFINED_glClearDepthfOES #define GLEE_H_DEFINED_glClearDepthfOES typedef void (APIENTRYP GLEEPFNGLCLEARDEPTHFOESPROC) (GLclampd depth); GLEE_EXTERN GLEEPFNGLCLEARDEPTHFOESPROC GLeeFuncPtr_glClearDepthfOES; #define glClearDepthfOES GLeeFuncPtr_glClearDepthfOES #endif #ifndef GLEE_H_DEFINED_glGetClipPlanefOES #define GLEE_H_DEFINED_glGetClipPlanefOES typedef void (APIENTRYP GLEEPFNGLGETCLIPPLANEFOESPROC) (GLenum plane, GLfloat * equation); GLEE_EXTERN GLEEPFNGLGETCLIPPLANEFOESPROC GLeeFuncPtr_glGetClipPlanefOES; #define glGetClipPlanefOES GLeeFuncPtr_glGetClipPlanefOES #endif #endif /* GL_OES_compressed_paletted_texture */ #ifndef GL_OES_compressed_paletted_texture #define GL_OES_compressed_paletted_texture 1 #define __GLEE_GL_OES_compressed_paletted_texture 1 /* Constants */ #define GL_PALETTE4_RGB8_OES 0x8B90 #define GL_PALETTE4_RGBA8_OES 0x8B91 #define GL_PALETTE4_R5_G6_B5_OES 0x8B92 #define GL_PALETTE4_RGBA4_OES 0x8B93 #define GL_PALETTE4_RGB5_A1_OES 0x8B94 #define GL_PALETTE8_RGB8_OES 0x8B95 #define GL_PALETTE8_RGBA8_OES 0x8B96 #define GL_PALETTE8_R5_G6_B5_OES 0x8B97 #define GL_PALETTE8_RGBA4_OES 0x8B98 #define GL_PALETTE8_RGB5_A1_OES 0x8B99 #endif /* GL_OES_read_format */ #ifndef GL_OES_read_format #define GL_OES_read_format 1 #define __GLEE_GL_OES_read_format 1 /* Constants */ #define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A #define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B #endif /* GL_OES_query_matrix */ #ifndef GL_OES_query_matrix #define GL_OES_query_matrix 1 #define __GLEE_GL_OES_query_matrix 1 /* Constants */ #ifndef GLEE_H_DEFINED_glQueryMatrixxOES #define GLEE_H_DEFINED_glQueryMatrixxOES typedef GLbitfield (APIENTRYP GLEEPFNGLQUERYMATRIXXOESPROC) (const GLfixed * mantissa, const GLint * exponent); GLEE_EXTERN GLEEPFNGLQUERYMATRIXXOESPROC GLeeFuncPtr_glQueryMatrixxOES; #define glQueryMatrixxOES GLeeFuncPtr_glQueryMatrixxOES #endif #endif /* GL_EXT_depth_bounds_test */ #ifndef GL_EXT_depth_bounds_test #define GL_EXT_depth_bounds_test 1 #define __GLEE_GL_EXT_depth_bounds_test 1 /* Constants */ #define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 #define GL_DEPTH_BOUNDS_EXT 0x8891 #ifndef GLEE_H_DEFINED_glDepthBoundsEXT #define GLEE_H_DEFINED_glDepthBoundsEXT typedef void (APIENTRYP GLEEPFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); GLEE_EXTERN GLEEPFNGLDEPTHBOUNDSEXTPROC GLeeFuncPtr_glDepthBoundsEXT; #define glDepthBoundsEXT GLeeFuncPtr_glDepthBoundsEXT #endif #endif /* GL_EXT_texture_mirror_clamp */ #ifndef GL_EXT_texture_mirror_clamp #define GL_EXT_texture_mirror_clamp 1 #define __GLEE_GL_EXT_texture_mirror_clamp 1 /* Constants */ #define GL_MIRROR_CLAMP_EXT 0x8742 #define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 #define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 #endif /* GL_EXT_blend_equation_separate */ #ifndef GL_EXT_blend_equation_separate #define GL_EXT_blend_equation_separate 1 #define __GLEE_GL_EXT_blend_equation_separate 1 /* Constants */ #define GL_BLEND_EQUATION_RGB_EXT 0x8009 #define GL_BLEND_EQUATION_ALPHA_EXT 0x883D #ifndef GLEE_H_DEFINED_glBlendEquationSeparateEXT #define GLEE_H_DEFINED_glBlendEquationSeparateEXT typedef void (APIENTRYP GLEEPFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); GLEE_EXTERN GLEEPFNGLBLENDEQUATIONSEPARATEEXTPROC GLeeFuncPtr_glBlendEquationSeparateEXT; #define glBlendEquationSeparateEXT GLeeFuncPtr_glBlendEquationSeparateEXT #endif #endif /* GL_MESA_pack_invert */ #ifndef GL_MESA_pack_invert #define GL_MESA_pack_invert 1 #define __GLEE_GL_MESA_pack_invert 1 /* Constants */ #define GL_PACK_INVERT_MESA 0x8758 #endif /* GL_MESA_ycbcr_texture */ #ifndef GL_MESA_ycbcr_texture #define GL_MESA_ycbcr_texture 1 #define __GLEE_GL_MESA_ycbcr_texture 1 /* Constants */ #define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA #define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB #define GL_YCBCR_MESA 0x8757 #endif /* GL_EXT_pixel_buffer_object */ #ifndef GL_EXT_pixel_buffer_object #define GL_EXT_pixel_buffer_object 1 #define __GLEE_GL_EXT_pixel_buffer_object 1 /* Constants */ #define GL_PIXEL_PACK_BUFFER_EXT 0x88EB #define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC #define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED #define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF #endif /* GL_NV_fragment_program_option */ #ifndef GL_NV_fragment_program_option #define GL_NV_fragment_program_option 1 #define __GLEE_GL_NV_fragment_program_option 1 /* Constants */ #endif /* GL_NV_fragment_program2 */ #ifndef GL_NV_fragment_program2 #define GL_NV_fragment_program2 1 #define __GLEE_GL_NV_fragment_program2 1 /* Constants */ #define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 #define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 #define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 #define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 #define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 #endif /* GL_NV_vertex_program2_option */ #ifndef GL_NV_vertex_program2_option #define GL_NV_vertex_program2_option 1 #define __GLEE_GL_NV_vertex_program2_option 1 /* Constants */ #endif /* GL_NV_vertex_program3 */ #ifndef GL_NV_vertex_program3 #define GL_NV_vertex_program3 1 #define __GLEE_GL_NV_vertex_program3 1 /* Constants */ #endif /* GL_EXT_framebuffer_object */ #ifndef GL_EXT_framebuffer_object #define GL_EXT_framebuffer_object 1 #define __GLEE_GL_EXT_framebuffer_object 1 /* Constants */ #define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 #define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 #define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 #define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 #define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA #define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB #define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC #define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD #define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF #define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 #define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 #define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 #define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 #define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 #define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 #define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 #define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 #define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 #define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 #define GL_COLOR_ATTACHMENT10_EXT 0x8CEA #define GL_COLOR_ATTACHMENT11_EXT 0x8CEB #define GL_COLOR_ATTACHMENT12_EXT 0x8CEC #define GL_COLOR_ATTACHMENT13_EXT 0x8CED #define GL_COLOR_ATTACHMENT14_EXT 0x8CEE #define GL_COLOR_ATTACHMENT15_EXT 0x8CEF #define GL_DEPTH_ATTACHMENT_EXT 0x8D00 #define GL_STENCIL_ATTACHMENT_EXT 0x8D20 #define GL_FRAMEBUFFER_EXT 0x8D40 #define GL_RENDERBUFFER_EXT 0x8D41 #define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 #define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 #define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 #define GL_STENCIL_INDEX1_EXT 0x8D46 #define GL_STENCIL_INDEX4_EXT 0x8D47 #define GL_STENCIL_INDEX8_EXT 0x8D48 #define GL_STENCIL_INDEX16_EXT 0x8D49 #define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 #define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 #define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 #define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 #define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 #define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 #ifndef GLEE_H_DEFINED_glIsRenderbufferEXT #define GLEE_H_DEFINED_glIsRenderbufferEXT typedef GLboolean (APIENTRYP GLEEPFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); GLEE_EXTERN GLEEPFNGLISRENDERBUFFEREXTPROC GLeeFuncPtr_glIsRenderbufferEXT; #define glIsRenderbufferEXT GLeeFuncPtr_glIsRenderbufferEXT #endif #ifndef GLEE_H_DEFINED_glBindRenderbufferEXT #define GLEE_H_DEFINED_glBindRenderbufferEXT typedef void (APIENTRYP GLEEPFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); GLEE_EXTERN GLEEPFNGLBINDRENDERBUFFEREXTPROC GLeeFuncPtr_glBindRenderbufferEXT; #define glBindRenderbufferEXT GLeeFuncPtr_glBindRenderbufferEXT #endif #ifndef GLEE_H_DEFINED_glDeleteRenderbuffersEXT #define GLEE_H_DEFINED_glDeleteRenderbuffersEXT typedef void (APIENTRYP GLEEPFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint * renderbuffers); GLEE_EXTERN GLEEPFNGLDELETERENDERBUFFERSEXTPROC GLeeFuncPtr_glDeleteRenderbuffersEXT; #define glDeleteRenderbuffersEXT GLeeFuncPtr_glDeleteRenderbuffersEXT #endif #ifndef GLEE_H_DEFINED_glGenRenderbuffersEXT #define GLEE_H_DEFINED_glGenRenderbuffersEXT typedef void (APIENTRYP GLEEPFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint * renderbuffers); GLEE_EXTERN GLEEPFNGLGENRENDERBUFFERSEXTPROC GLeeFuncPtr_glGenRenderbuffersEXT; #define glGenRenderbuffersEXT GLeeFuncPtr_glGenRenderbuffersEXT #endif #ifndef GLEE_H_DEFINED_glRenderbufferStorageEXT #define GLEE_H_DEFINED_glRenderbufferStorageEXT typedef void (APIENTRYP GLEEPFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLRENDERBUFFERSTORAGEEXTPROC GLeeFuncPtr_glRenderbufferStorageEXT; #define glRenderbufferStorageEXT GLeeFuncPtr_glRenderbufferStorageEXT #endif #ifndef GLEE_H_DEFINED_glGetRenderbufferParameterivEXT #define GLEE_H_DEFINED_glGetRenderbufferParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETRENDERBUFFERPARAMETERIVEXTPROC GLeeFuncPtr_glGetRenderbufferParameterivEXT; #define glGetRenderbufferParameterivEXT GLeeFuncPtr_glGetRenderbufferParameterivEXT #endif #ifndef GLEE_H_DEFINED_glIsFramebufferEXT #define GLEE_H_DEFINED_glIsFramebufferEXT typedef GLboolean (APIENTRYP GLEEPFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); GLEE_EXTERN GLEEPFNGLISFRAMEBUFFEREXTPROC GLeeFuncPtr_glIsFramebufferEXT; #define glIsFramebufferEXT GLeeFuncPtr_glIsFramebufferEXT #endif #ifndef GLEE_H_DEFINED_glBindFramebufferEXT #define GLEE_H_DEFINED_glBindFramebufferEXT typedef void (APIENTRYP GLEEPFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); GLEE_EXTERN GLEEPFNGLBINDFRAMEBUFFEREXTPROC GLeeFuncPtr_glBindFramebufferEXT; #define glBindFramebufferEXT GLeeFuncPtr_glBindFramebufferEXT #endif #ifndef GLEE_H_DEFINED_glDeleteFramebuffersEXT #define GLEE_H_DEFINED_glDeleteFramebuffersEXT typedef void (APIENTRYP GLEEPFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint * framebuffers); GLEE_EXTERN GLEEPFNGLDELETEFRAMEBUFFERSEXTPROC GLeeFuncPtr_glDeleteFramebuffersEXT; #define glDeleteFramebuffersEXT GLeeFuncPtr_glDeleteFramebuffersEXT #endif #ifndef GLEE_H_DEFINED_glGenFramebuffersEXT #define GLEE_H_DEFINED_glGenFramebuffersEXT typedef void (APIENTRYP GLEEPFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint * framebuffers); GLEE_EXTERN GLEEPFNGLGENFRAMEBUFFERSEXTPROC GLeeFuncPtr_glGenFramebuffersEXT; #define glGenFramebuffersEXT GLeeFuncPtr_glGenFramebuffersEXT #endif #ifndef GLEE_H_DEFINED_glCheckFramebufferStatusEXT #define GLEE_H_DEFINED_glCheckFramebufferStatusEXT typedef GLenum (APIENTRYP GLEEPFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLCHECKFRAMEBUFFERSTATUSEXTPROC GLeeFuncPtr_glCheckFramebufferStatusEXT; #define glCheckFramebufferStatusEXT GLeeFuncPtr_glCheckFramebufferStatusEXT #endif #ifndef GLEE_H_DEFINED_glFramebufferTexture1DEXT #define GLEE_H_DEFINED_glFramebufferTexture1DEXT typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTURE1DEXTPROC GLeeFuncPtr_glFramebufferTexture1DEXT; #define glFramebufferTexture1DEXT GLeeFuncPtr_glFramebufferTexture1DEXT #endif #ifndef GLEE_H_DEFINED_glFramebufferTexture2DEXT #define GLEE_H_DEFINED_glFramebufferTexture2DEXT typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTURE2DEXTPROC GLeeFuncPtr_glFramebufferTexture2DEXT; #define glFramebufferTexture2DEXT GLeeFuncPtr_glFramebufferTexture2DEXT #endif #ifndef GLEE_H_DEFINED_glFramebufferTexture3DEXT #define GLEE_H_DEFINED_glFramebufferTexture3DEXT typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERTEXTURE3DEXTPROC GLeeFuncPtr_glFramebufferTexture3DEXT; #define glFramebufferTexture3DEXT GLeeFuncPtr_glFramebufferTexture3DEXT #endif #ifndef GLEE_H_DEFINED_glFramebufferRenderbufferEXT #define GLEE_H_DEFINED_glFramebufferRenderbufferEXT typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERRENDERBUFFEREXTPROC GLeeFuncPtr_glFramebufferRenderbufferEXT; #define glFramebufferRenderbufferEXT GLeeFuncPtr_glFramebufferRenderbufferEXT #endif #ifndef GLEE_H_DEFINED_glGetFramebufferAttachmentParameterivEXT #define GLEE_H_DEFINED_glGetFramebufferAttachmentParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC GLeeFuncPtr_glGetFramebufferAttachmentParameterivEXT; #define glGetFramebufferAttachmentParameterivEXT GLeeFuncPtr_glGetFramebufferAttachmentParameterivEXT #endif #ifndef GLEE_H_DEFINED_glGenerateMipmapEXT #define GLEE_H_DEFINED_glGenerateMipmapEXT typedef void (APIENTRYP GLEEPFNGLGENERATEMIPMAPEXTPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLGENERATEMIPMAPEXTPROC GLeeFuncPtr_glGenerateMipmapEXT; #define glGenerateMipmapEXT GLeeFuncPtr_glGenerateMipmapEXT #endif #endif /* GL_GREMEDY_string_marker */ #ifndef GL_GREMEDY_string_marker #define GL_GREMEDY_string_marker 1 #define __GLEE_GL_GREMEDY_string_marker 1 /* Constants */ #ifndef GLEE_H_DEFINED_glStringMarkerGREMEDY #define GLEE_H_DEFINED_glStringMarkerGREMEDY typedef void (APIENTRYP GLEEPFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid * string); GLEE_EXTERN GLEEPFNGLSTRINGMARKERGREMEDYPROC GLeeFuncPtr_glStringMarkerGREMEDY; #define glStringMarkerGREMEDY GLeeFuncPtr_glStringMarkerGREMEDY #endif #endif /* GL_EXT_packed_depth_stencil */ #ifndef GL_EXT_packed_depth_stencil #define GL_EXT_packed_depth_stencil 1 #define __GLEE_GL_EXT_packed_depth_stencil 1 /* Constants */ #define GL_DEPTH_STENCIL_EXT 0x84F9 #define GL_UNSIGNED_INT_24_8_EXT 0x84FA #define GL_DEPTH24_STENCIL8_EXT 0x88F0 #define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 #endif /* GL_EXT_stencil_clear_tag */ #ifndef GL_EXT_stencil_clear_tag #define GL_EXT_stencil_clear_tag 1 #define __GLEE_GL_EXT_stencil_clear_tag 1 /* Constants */ #define GL_STENCIL_TAG_BITS_EXT 0x88F2 #define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 #ifndef GLEE_H_DEFINED_glStencilClearTagEXT #define GLEE_H_DEFINED_glStencilClearTagEXT typedef void (APIENTRYP GLEEPFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag); GLEE_EXTERN GLEEPFNGLSTENCILCLEARTAGEXTPROC GLeeFuncPtr_glStencilClearTagEXT; #define glStencilClearTagEXT GLeeFuncPtr_glStencilClearTagEXT #endif #endif /* GL_EXT_texture_sRGB */ #ifndef GL_EXT_texture_sRGB #define GL_EXT_texture_sRGB 1 #define __GLEE_GL_EXT_texture_sRGB 1 /* Constants */ #define GL_SRGB_EXT 0x8C40 #define GL_SRGB8_EXT 0x8C41 #define GL_SRGB_ALPHA_EXT 0x8C42 #define GL_SRGB8_ALPHA8_EXT 0x8C43 #define GL_SLUMINANCE_ALPHA_EXT 0x8C44 #define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 #define GL_SLUMINANCE_EXT 0x8C46 #define GL_SLUMINANCE8_EXT 0x8C47 #define GL_COMPRESSED_SRGB_EXT 0x8C48 #define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 #define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A #define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B #define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F #endif /* GL_EXT_framebuffer_blit */ #ifndef GL_EXT_framebuffer_blit #define GL_EXT_framebuffer_blit 1 #define __GLEE_GL_EXT_framebuffer_blit 1 /* Constants */ #define GL_READ_FRAMEBUFFER_EXT 0x8CA8 #define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 #define GL_DRAW_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT #define GL_READ_FRAMEBUFFER_BINDING_EXT 0x8CAA #ifndef GLEE_H_DEFINED_glBlitFramebufferEXT #define GLEE_H_DEFINED_glBlitFramebufferEXT typedef void (APIENTRYP GLEEPFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); GLEE_EXTERN GLEEPFNGLBLITFRAMEBUFFEREXTPROC GLeeFuncPtr_glBlitFramebufferEXT; #define glBlitFramebufferEXT GLeeFuncPtr_glBlitFramebufferEXT #endif #endif /* GL_EXT_framebuffer_multisample */ #ifndef GL_EXT_framebuffer_multisample #define GL_EXT_framebuffer_multisample 1 #define __GLEE_GL_EXT_framebuffer_multisample 1 /* Constants */ #define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 #define GL_MAX_SAMPLES_EXT 0x8D57 #ifndef GLEE_H_DEFINED_glRenderbufferStorageMultisampleEXT #define GLEE_H_DEFINED_glRenderbufferStorageMultisampleEXT typedef void (APIENTRYP GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC GLeeFuncPtr_glRenderbufferStorageMultisampleEXT; #define glRenderbufferStorageMultisampleEXT GLeeFuncPtr_glRenderbufferStorageMultisampleEXT #endif #endif /* GL_MESAX_texture_stack */ #ifndef GL_MESAX_texture_stack #define GL_MESAX_texture_stack 1 #define __GLEE_GL_MESAX_texture_stack 1 /* Constants */ #define GL_TEXTURE_1D_STACK_MESAX 0x8759 #define GL_TEXTURE_2D_STACK_MESAX 0x875A #define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B #define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C #define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D #define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E #endif /* GL_EXT_timer_query */ #ifndef GL_EXT_timer_query #define GL_EXT_timer_query 1 #define __GLEE_GL_EXT_timer_query 1 /* Constants */ #define GL_TIME_ELAPSED_EXT 0x88BF #ifndef GLEE_H_DEFINED_glGetQueryObjecti64vEXT #define GLEE_H_DEFINED_glGetQueryObjecti64vEXT typedef void (APIENTRYP GLEEPFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT * params); GLEE_EXTERN GLEEPFNGLGETQUERYOBJECTI64VEXTPROC GLeeFuncPtr_glGetQueryObjecti64vEXT; #define glGetQueryObjecti64vEXT GLeeFuncPtr_glGetQueryObjecti64vEXT #endif #ifndef GLEE_H_DEFINED_glGetQueryObjectui64vEXT #define GLEE_H_DEFINED_glGetQueryObjectui64vEXT typedef void (APIENTRYP GLEEPFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT * params); GLEE_EXTERN GLEEPFNGLGETQUERYOBJECTUI64VEXTPROC GLeeFuncPtr_glGetQueryObjectui64vEXT; #define glGetQueryObjectui64vEXT GLeeFuncPtr_glGetQueryObjectui64vEXT #endif #endif /* GL_EXT_gpu_program_parameters */ #ifndef GL_EXT_gpu_program_parameters #define GL_EXT_gpu_program_parameters 1 #define __GLEE_GL_EXT_gpu_program_parameters 1 /* Constants */ #ifndef GLEE_H_DEFINED_glProgramEnvParameters4fvEXT #define GLEE_H_DEFINED_glProgramEnvParameters4fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPROGRAMENVPARAMETERS4FVEXTPROC GLeeFuncPtr_glProgramEnvParameters4fvEXT; #define glProgramEnvParameters4fvEXT GLeeFuncPtr_glProgramEnvParameters4fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramLocalParameters4fvEXT #define GLEE_H_DEFINED_glProgramLocalParameters4fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC GLeeFuncPtr_glProgramLocalParameters4fvEXT; #define glProgramLocalParameters4fvEXT GLeeFuncPtr_glProgramLocalParameters4fvEXT #endif #endif /* GL_APPLE_flush_buffer_range */ #ifndef GL_APPLE_flush_buffer_range #define GL_APPLE_flush_buffer_range 1 #define __GLEE_GL_APPLE_flush_buffer_range 1 /* Constants */ #define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 #define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 #ifndef GLEE_H_DEFINED_glBufferParameteriAPPLE #define GLEE_H_DEFINED_glBufferParameteriAPPLE typedef void (APIENTRYP GLEEPFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLBUFFERPARAMETERIAPPLEPROC GLeeFuncPtr_glBufferParameteriAPPLE; #define glBufferParameteriAPPLE GLeeFuncPtr_glBufferParameteriAPPLE #endif #ifndef GLEE_H_DEFINED_glFlushMappedBufferRangeAPPLE #define GLEE_H_DEFINED_glFlushMappedBufferRangeAPPLE typedef void (APIENTRYP GLEEPFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); GLEE_EXTERN GLEEPFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC GLeeFuncPtr_glFlushMappedBufferRangeAPPLE; #define glFlushMappedBufferRangeAPPLE GLeeFuncPtr_glFlushMappedBufferRangeAPPLE #endif #endif /* GL_EXT_gpu_shader4 */ #ifndef GL_EXT_gpu_shader4 #define GL_EXT_gpu_shader4 1 #define __GLEE_GL_EXT_gpu_shader4 1 /* Constants */ #define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 #define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 #define GL_SAMPLER_BUFFER_EXT 0x8DC2 #define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 #define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 #define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 #define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 #define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 #define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 #define GL_INT_SAMPLER_1D_EXT 0x8DC9 #define GL_INT_SAMPLER_2D_EXT 0x8DCA #define GL_INT_SAMPLER_3D_EXT 0x8DCB #define GL_INT_SAMPLER_CUBE_EXT 0x8DCC #define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD #define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE #define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF #define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 #define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 #define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 #define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 #define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 #define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 #define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 #define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 #define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 #ifndef GLEE_H_DEFINED_glGetUniformuivEXT #define GLEE_H_DEFINED_glGetUniformuivEXT typedef void (APIENTRYP GLEEPFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint * params); GLEE_EXTERN GLEEPFNGLGETUNIFORMUIVEXTPROC GLeeFuncPtr_glGetUniformuivEXT; #define glGetUniformuivEXT GLeeFuncPtr_glGetUniformuivEXT #endif #ifndef GLEE_H_DEFINED_glBindFragDataLocationEXT #define GLEE_H_DEFINED_glBindFragDataLocationEXT typedef void (APIENTRYP GLEEPFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar * name); GLEE_EXTERN GLEEPFNGLBINDFRAGDATALOCATIONEXTPROC GLeeFuncPtr_glBindFragDataLocationEXT; #define glBindFragDataLocationEXT GLeeFuncPtr_glBindFragDataLocationEXT #endif #ifndef GLEE_H_DEFINED_glGetFragDataLocationEXT #define GLEE_H_DEFINED_glGetFragDataLocationEXT typedef GLint (APIENTRYP GLEEPFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETFRAGDATALOCATIONEXTPROC GLeeFuncPtr_glGetFragDataLocationEXT; #define glGetFragDataLocationEXT GLeeFuncPtr_glGetFragDataLocationEXT #endif #ifndef GLEE_H_DEFINED_glUniform1uiEXT #define GLEE_H_DEFINED_glUniform1uiEXT typedef void (APIENTRYP GLEEPFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); GLEE_EXTERN GLEEPFNGLUNIFORM1UIEXTPROC GLeeFuncPtr_glUniform1uiEXT; #define glUniform1uiEXT GLeeFuncPtr_glUniform1uiEXT #endif #ifndef GLEE_H_DEFINED_glUniform2uiEXT #define GLEE_H_DEFINED_glUniform2uiEXT typedef void (APIENTRYP GLEEPFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); GLEE_EXTERN GLEEPFNGLUNIFORM2UIEXTPROC GLeeFuncPtr_glUniform2uiEXT; #define glUniform2uiEXT GLeeFuncPtr_glUniform2uiEXT #endif #ifndef GLEE_H_DEFINED_glUniform3uiEXT #define GLEE_H_DEFINED_glUniform3uiEXT typedef void (APIENTRYP GLEEPFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); GLEE_EXTERN GLEEPFNGLUNIFORM3UIEXTPROC GLeeFuncPtr_glUniform3uiEXT; #define glUniform3uiEXT GLeeFuncPtr_glUniform3uiEXT #endif #ifndef GLEE_H_DEFINED_glUniform4uiEXT #define GLEE_H_DEFINED_glUniform4uiEXT typedef void (APIENTRYP GLEEPFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); GLEE_EXTERN GLEEPFNGLUNIFORM4UIEXTPROC GLeeFuncPtr_glUniform4uiEXT; #define glUniform4uiEXT GLeeFuncPtr_glUniform4uiEXT #endif #ifndef GLEE_H_DEFINED_glUniform1uivEXT #define GLEE_H_DEFINED_glUniform1uivEXT typedef void (APIENTRYP GLEEPFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLUNIFORM1UIVEXTPROC GLeeFuncPtr_glUniform1uivEXT; #define glUniform1uivEXT GLeeFuncPtr_glUniform1uivEXT #endif #ifndef GLEE_H_DEFINED_glUniform2uivEXT #define GLEE_H_DEFINED_glUniform2uivEXT typedef void (APIENTRYP GLEEPFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLUNIFORM2UIVEXTPROC GLeeFuncPtr_glUniform2uivEXT; #define glUniform2uivEXT GLeeFuncPtr_glUniform2uivEXT #endif #ifndef GLEE_H_DEFINED_glUniform3uivEXT #define GLEE_H_DEFINED_glUniform3uivEXT typedef void (APIENTRYP GLEEPFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLUNIFORM3UIVEXTPROC GLeeFuncPtr_glUniform3uivEXT; #define glUniform3uivEXT GLeeFuncPtr_glUniform3uivEXT #endif #ifndef GLEE_H_DEFINED_glUniform4uivEXT #define GLEE_H_DEFINED_glUniform4uivEXT typedef void (APIENTRYP GLEEPFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLUNIFORM4UIVEXTPROC GLeeFuncPtr_glUniform4uivEXT; #define glUniform4uivEXT GLeeFuncPtr_glUniform4uivEXT #endif #endif /* GL_EXT_draw_instanced */ #ifndef GL_EXT_draw_instanced #define GL_EXT_draw_instanced 1 #define __GLEE_GL_EXT_draw_instanced 1 /* Constants */ #ifndef GLEE_H_DEFINED_glDrawArraysInstancedEXT #define GLEE_H_DEFINED_glDrawArraysInstancedEXT typedef void (APIENTRYP GLEEPFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); GLEE_EXTERN GLEEPFNGLDRAWARRAYSINSTANCEDEXTPROC GLeeFuncPtr_glDrawArraysInstancedEXT; #define glDrawArraysInstancedEXT GLeeFuncPtr_glDrawArraysInstancedEXT #endif #ifndef GLEE_H_DEFINED_glDrawElementsInstancedEXT #define GLEE_H_DEFINED_glDrawElementsInstancedEXT typedef void (APIENTRYP GLEEPFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount); GLEE_EXTERN GLEEPFNGLDRAWELEMENTSINSTANCEDEXTPROC GLeeFuncPtr_glDrawElementsInstancedEXT; #define glDrawElementsInstancedEXT GLeeFuncPtr_glDrawElementsInstancedEXT #endif #endif /* GL_EXT_packed_float */ #ifndef GL_EXT_packed_float #define GL_EXT_packed_float 1 #define __GLEE_GL_EXT_packed_float 1 /* Constants */ #define GL_R11F_G11F_B10F_EXT 0x8C3A #define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B #define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C #endif /* GL_EXT_texture_array */ #ifndef GL_EXT_texture_array #define GL_EXT_texture_array 1 #define __GLEE_GL_EXT_texture_array 1 /* Constants */ #define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 #define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 #define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A #define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B #define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C #define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D #define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF #define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E #endif /* GL_EXT_texture_buffer_object */ #ifndef GL_EXT_texture_buffer_object #define GL_EXT_texture_buffer_object 1 #define __GLEE_GL_EXT_texture_buffer_object 1 /* Constants */ #define GL_TEXTURE_BUFFER_EXT 0x8C2A #define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B #define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D #define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E #ifndef GLEE_H_DEFINED_glTexBufferEXT #define GLEE_H_DEFINED_glTexBufferEXT typedef void (APIENTRYP GLEEPFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); GLEE_EXTERN GLEEPFNGLTEXBUFFEREXTPROC GLeeFuncPtr_glTexBufferEXT; #define glTexBufferEXT GLeeFuncPtr_glTexBufferEXT #endif #endif /* GL_EXT_texture_compression_latc */ #ifndef GL_EXT_texture_compression_latc #define GL_EXT_texture_compression_latc 1 #define __GLEE_GL_EXT_texture_compression_latc 1 /* Constants */ #define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 #define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 #define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 #define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 #endif /* GL_EXT_texture_compression_rgtc */ #ifndef GL_EXT_texture_compression_rgtc #define GL_EXT_texture_compression_rgtc 1 #define __GLEE_GL_EXT_texture_compression_rgtc 1 /* Constants */ #define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB #define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC #define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD #define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE #endif /* GL_EXT_texture_shared_exponent */ #ifndef GL_EXT_texture_shared_exponent #define GL_EXT_texture_shared_exponent 1 #define __GLEE_GL_EXT_texture_shared_exponent 1 /* Constants */ #define GL_RGB9_E5_EXT 0x8C3D #define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E #define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F #endif /* GL_NV_depth_buffer_float */ #ifndef GL_NV_depth_buffer_float #define GL_NV_depth_buffer_float 1 #define __GLEE_GL_NV_depth_buffer_float 1 /* Constants */ #define GL_DEPTH_COMPONENT32F_NV 0x8DAB #define GL_DEPTH32F_STENCIL8_NV 0x8DAC #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD #define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF #ifndef GLEE_H_DEFINED_glDepthRangedNV #define GLEE_H_DEFINED_glDepthRangedNV typedef void (APIENTRYP GLEEPFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); GLEE_EXTERN GLEEPFNGLDEPTHRANGEDNVPROC GLeeFuncPtr_glDepthRangedNV; #define glDepthRangedNV GLeeFuncPtr_glDepthRangedNV #endif #ifndef GLEE_H_DEFINED_glClearDepthdNV #define GLEE_H_DEFINED_glClearDepthdNV typedef void (APIENTRYP GLEEPFNGLCLEARDEPTHDNVPROC) (GLdouble depth); GLEE_EXTERN GLEEPFNGLCLEARDEPTHDNVPROC GLeeFuncPtr_glClearDepthdNV; #define glClearDepthdNV GLeeFuncPtr_glClearDepthdNV #endif #ifndef GLEE_H_DEFINED_glDepthBoundsdNV #define GLEE_H_DEFINED_glDepthBoundsdNV typedef void (APIENTRYP GLEEPFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); GLEE_EXTERN GLEEPFNGLDEPTHBOUNDSDNVPROC GLeeFuncPtr_glDepthBoundsdNV; #define glDepthBoundsdNV GLeeFuncPtr_glDepthBoundsdNV #endif #endif /* GL_NV_framebuffer_multisample_coverage */ #ifndef GL_NV_framebuffer_multisample_coverage #define GL_NV_framebuffer_multisample_coverage 1 #define __GLEE_GL_NV_framebuffer_multisample_coverage 1 /* Constants */ #define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB #define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 #define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 #define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 #ifndef GLEE_H_DEFINED_glRenderbufferStorageMultisampleCoverageNV #define GLEE_H_DEFINED_glRenderbufferStorageMultisampleCoverageNV typedef void (APIENTRYP GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC GLeeFuncPtr_glRenderbufferStorageMultisampleCoverageNV; #define glRenderbufferStorageMultisampleCoverageNV GLeeFuncPtr_glRenderbufferStorageMultisampleCoverageNV #endif #endif /* GL_EXT_framebuffer_sRGB */ #ifndef GL_EXT_framebuffer_sRGB #define GL_EXT_framebuffer_sRGB 1 #define __GLEE_GL_EXT_framebuffer_sRGB 1 /* Constants */ #define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 #define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA #endif /* GL_NV_geometry_shader4 */ #ifndef GL_NV_geometry_shader4 #define GL_NV_geometry_shader4 1 #define __GLEE_GL_NV_geometry_shader4 1 /* Constants */ #endif /* GL_NV_parameter_buffer_object */ #ifndef GL_NV_parameter_buffer_object #define GL_NV_parameter_buffer_object 1 #define __GLEE_GL_NV_parameter_buffer_object 1 /* Constants */ #define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 #define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 #define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 #define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 #define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 #ifndef GLEE_H_DEFINED_glProgramBufferParametersfvNV #define GLEE_H_DEFINED_glProgramBufferParametersfvNV typedef void (APIENTRYP GLEEPFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLfloat * params); GLEE_EXTERN GLEEPFNGLPROGRAMBUFFERPARAMETERSFVNVPROC GLeeFuncPtr_glProgramBufferParametersfvNV; #define glProgramBufferParametersfvNV GLeeFuncPtr_glProgramBufferParametersfvNV #endif #ifndef GLEE_H_DEFINED_glProgramBufferParametersIivNV #define GLEE_H_DEFINED_glProgramBufferParametersIivNV typedef void (APIENTRYP GLEEPFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLint * params); GLEE_EXTERN GLEEPFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC GLeeFuncPtr_glProgramBufferParametersIivNV; #define glProgramBufferParametersIivNV GLeeFuncPtr_glProgramBufferParametersIivNV #endif #ifndef GLEE_H_DEFINED_glProgramBufferParametersIuivNV #define GLEE_H_DEFINED_glProgramBufferParametersIuivNV typedef void (APIENTRYP GLEEPFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint bindingIndex, GLuint wordIndex, GLsizei count, const GLuint * params); GLEE_EXTERN GLEEPFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC GLeeFuncPtr_glProgramBufferParametersIuivNV; #define glProgramBufferParametersIuivNV GLeeFuncPtr_glProgramBufferParametersIuivNV #endif #endif /* GL_EXT_draw_buffers2 */ #ifndef GL_EXT_draw_buffers2 #define GL_EXT_draw_buffers2 1 #define __GLEE_GL_EXT_draw_buffers2 1 /* Constants */ #ifndef GLEE_H_DEFINED_glColorMaskIndexedEXT #define GLEE_H_DEFINED_glColorMaskIndexedEXT typedef void (APIENTRYP GLEEPFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); GLEE_EXTERN GLEEPFNGLCOLORMASKINDEXEDEXTPROC GLeeFuncPtr_glColorMaskIndexedEXT; #define glColorMaskIndexedEXT GLeeFuncPtr_glColorMaskIndexedEXT #endif #ifndef GLEE_H_DEFINED_glGetBooleanIndexedvEXT #define GLEE_H_DEFINED_glGetBooleanIndexedvEXT typedef void (APIENTRYP GLEEPFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean * data); GLEE_EXTERN GLEEPFNGLGETBOOLEANINDEXEDVEXTPROC GLeeFuncPtr_glGetBooleanIndexedvEXT; #define glGetBooleanIndexedvEXT GLeeFuncPtr_glGetBooleanIndexedvEXT #endif #ifndef GLEE_H_DEFINED_glGetIntegerIndexedvEXT #define GLEE_H_DEFINED_glGetIntegerIndexedvEXT typedef void (APIENTRYP GLEEPFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint * data); GLEE_EXTERN GLEEPFNGLGETINTEGERINDEXEDVEXTPROC GLeeFuncPtr_glGetIntegerIndexedvEXT; #define glGetIntegerIndexedvEXT GLeeFuncPtr_glGetIntegerIndexedvEXT #endif #ifndef GLEE_H_DEFINED_glEnableIndexedEXT #define GLEE_H_DEFINED_glEnableIndexedEXT typedef void (APIENTRYP GLEEPFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); GLEE_EXTERN GLEEPFNGLENABLEINDEXEDEXTPROC GLeeFuncPtr_glEnableIndexedEXT; #define glEnableIndexedEXT GLeeFuncPtr_glEnableIndexedEXT #endif #ifndef GLEE_H_DEFINED_glDisableIndexedEXT #define GLEE_H_DEFINED_glDisableIndexedEXT typedef void (APIENTRYP GLEEPFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); GLEE_EXTERN GLEEPFNGLDISABLEINDEXEDEXTPROC GLeeFuncPtr_glDisableIndexedEXT; #define glDisableIndexedEXT GLeeFuncPtr_glDisableIndexedEXT #endif #ifndef GLEE_H_DEFINED_glIsEnabledIndexedEXT #define GLEE_H_DEFINED_glIsEnabledIndexedEXT typedef GLboolean (APIENTRYP GLEEPFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); GLEE_EXTERN GLEEPFNGLISENABLEDINDEXEDEXTPROC GLeeFuncPtr_glIsEnabledIndexedEXT; #define glIsEnabledIndexedEXT GLeeFuncPtr_glIsEnabledIndexedEXT #endif #endif /* GL_NV_transform_feedback */ #ifndef GL_NV_transform_feedback #define GL_NV_transform_feedback 1 #define __GLEE_GL_NV_transform_feedback 1 /* Constants */ #define GL_BACK_PRIMARY_COLOR_NV 0x8C77 #define GL_BACK_SECONDARY_COLOR_NV 0x8C78 #define GL_TEXTURE_COORD_NV 0x8C79 #define GL_CLIP_DISTANCE_NV 0x8C7A #define GL_VERTEX_ID_NV 0x8C7B #define GL_PRIMITIVE_ID_NV 0x8C7C #define GL_GENERIC_ATTRIB_NV 0x8C7D #define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E #define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 #define GL_ACTIVE_VARYINGS_NV 0x8C81 #define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 #define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 #define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 #define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 #define GL_PRIMITIVES_GENERATED_NV 0x8C87 #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 #define GL_RASTERIZER_DISCARD_NV 0x8C89 #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV 0x8C8A #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B #define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C #define GL_SEPARATE_ATTRIBS_NV 0x8C8D #define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F #define GL_LAYER_NV 0x8DAA #define GL_NEXT_BUFFER_NV -2 #define GL_SKIP_COMPONENTS4_NV -3 #define GL_SKIP_COMPONENTS3_NV -4 #define GL_SKIP_COMPONENTS2_NV -5 #define GL_SKIP_COMPONENTS1_NV -6 #ifndef GLEE_H_DEFINED_glBeginTransformFeedbackNV #define GLEE_H_DEFINED_glBeginTransformFeedbackNV typedef void (APIENTRYP GLEEPFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); GLEE_EXTERN GLEEPFNGLBEGINTRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glBeginTransformFeedbackNV; #define glBeginTransformFeedbackNV GLeeFuncPtr_glBeginTransformFeedbackNV #endif #ifndef GLEE_H_DEFINED_glEndTransformFeedbackNV #define GLEE_H_DEFINED_glEndTransformFeedbackNV typedef void (APIENTRYP GLEEPFNGLENDTRANSFORMFEEDBACKNVPROC) (); GLEE_EXTERN GLEEPFNGLENDTRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glEndTransformFeedbackNV; #define glEndTransformFeedbackNV GLeeFuncPtr_glEndTransformFeedbackNV #endif #ifndef GLEE_H_DEFINED_glTransformFeedbackAttribsNV #define GLEE_H_DEFINED_glTransformFeedbackAttribsNV typedef void (APIENTRYP GLEEPFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint * attribs, GLenum bufferMode); GLEE_EXTERN GLEEPFNGLTRANSFORMFEEDBACKATTRIBSNVPROC GLeeFuncPtr_glTransformFeedbackAttribsNV; #define glTransformFeedbackAttribsNV GLeeFuncPtr_glTransformFeedbackAttribsNV #endif #ifndef GLEE_H_DEFINED_glBindBufferRangeNV #define GLEE_H_DEFINED_glBindBufferRangeNV typedef void (APIENTRYP GLEEPFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); GLEE_EXTERN GLEEPFNGLBINDBUFFERRANGENVPROC GLeeFuncPtr_glBindBufferRangeNV; #define glBindBufferRangeNV GLeeFuncPtr_glBindBufferRangeNV #endif #ifndef GLEE_H_DEFINED_glBindBufferOffsetNV #define GLEE_H_DEFINED_glBindBufferOffsetNV typedef void (APIENTRYP GLEEPFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); GLEE_EXTERN GLEEPFNGLBINDBUFFEROFFSETNVPROC GLeeFuncPtr_glBindBufferOffsetNV; #define glBindBufferOffsetNV GLeeFuncPtr_glBindBufferOffsetNV #endif #ifndef GLEE_H_DEFINED_glBindBufferBaseNV #define GLEE_H_DEFINED_glBindBufferBaseNV typedef void (APIENTRYP GLEEPFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); GLEE_EXTERN GLEEPFNGLBINDBUFFERBASENVPROC GLeeFuncPtr_glBindBufferBaseNV; #define glBindBufferBaseNV GLeeFuncPtr_glBindBufferBaseNV #endif #ifndef GLEE_H_DEFINED_glTransformFeedbackVaryingsNV #define GLEE_H_DEFINED_glTransformFeedbackVaryingsNV typedef void (APIENTRYP GLEEPFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint * locations, GLenum bufferMode); GLEE_EXTERN GLEEPFNGLTRANSFORMFEEDBACKVARYINGSNVPROC GLeeFuncPtr_glTransformFeedbackVaryingsNV; #define glTransformFeedbackVaryingsNV GLeeFuncPtr_glTransformFeedbackVaryingsNV #endif #ifndef GLEE_H_DEFINED_glActiveVaryingNV #define GLEE_H_DEFINED_glActiveVaryingNV typedef void (APIENTRYP GLEEPFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar * name); GLEE_EXTERN GLEEPFNGLACTIVEVARYINGNVPROC GLeeFuncPtr_glActiveVaryingNV; #define glActiveVaryingNV GLeeFuncPtr_glActiveVaryingNV #endif #ifndef GLEE_H_DEFINED_glGetVaryingLocationNV #define GLEE_H_DEFINED_glGetVaryingLocationNV typedef GLint (APIENTRYP GLEEPFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar * name); GLEE_EXTERN GLEEPFNGLGETVARYINGLOCATIONNVPROC GLeeFuncPtr_glGetVaryingLocationNV; #define glGetVaryingLocationNV GLeeFuncPtr_glGetVaryingLocationNV #endif #ifndef GLEE_H_DEFINED_glGetActiveVaryingNV #define GLEE_H_DEFINED_glGetActiveVaryingNV typedef void (APIENTRYP GLEEPFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); GLEE_EXTERN GLEEPFNGLGETACTIVEVARYINGNVPROC GLeeFuncPtr_glGetActiveVaryingNV; #define glGetActiveVaryingNV GLeeFuncPtr_glGetActiveVaryingNV #endif #ifndef GLEE_H_DEFINED_glGetTransformFeedbackVaryingNV #define GLEE_H_DEFINED_glGetTransformFeedbackVaryingNV typedef void (APIENTRYP GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint * location); GLEE_EXTERN GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC GLeeFuncPtr_glGetTransformFeedbackVaryingNV; #define glGetTransformFeedbackVaryingNV GLeeFuncPtr_glGetTransformFeedbackVaryingNV #endif #ifndef GLEE_H_DEFINED_glTransformFeedbackStreamAttribsNV #define GLEE_H_DEFINED_glTransformFeedbackStreamAttribsNV typedef void (APIENTRYP GLEEPFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC) (GLsizei count, const GLint * attribs, GLsizei nbuffers, const GLint * bufstreams, GLenum bufferMode); GLEE_EXTERN GLEEPFNGLTRANSFORMFEEDBACKSTREAMATTRIBSNVPROC GLeeFuncPtr_glTransformFeedbackStreamAttribsNV; #define glTransformFeedbackStreamAttribsNV GLeeFuncPtr_glTransformFeedbackStreamAttribsNV #endif #endif /* GL_EXT_bindable_uniform */ #ifndef GL_EXT_bindable_uniform #define GL_EXT_bindable_uniform 1 #define __GLEE_GL_EXT_bindable_uniform 1 /* Constants */ #define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 #define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 #define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 #define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED #define GL_UNIFORM_BUFFER_EXT 0x8DEE #define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF #ifndef GLEE_H_DEFINED_glUniformBufferEXT #define GLEE_H_DEFINED_glUniformBufferEXT typedef void (APIENTRYP GLEEPFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); GLEE_EXTERN GLEEPFNGLUNIFORMBUFFEREXTPROC GLeeFuncPtr_glUniformBufferEXT; #define glUniformBufferEXT GLeeFuncPtr_glUniformBufferEXT #endif #ifndef GLEE_H_DEFINED_glGetUniformBufferSizeEXT #define GLEE_H_DEFINED_glGetUniformBufferSizeEXT typedef GLint (APIENTRYP GLEEPFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); GLEE_EXTERN GLEEPFNGLGETUNIFORMBUFFERSIZEEXTPROC GLeeFuncPtr_glGetUniformBufferSizeEXT; #define glGetUniformBufferSizeEXT GLeeFuncPtr_glGetUniformBufferSizeEXT #endif #ifndef GLEE_H_DEFINED_glGetUniformOffsetEXT #define GLEE_H_DEFINED_glGetUniformOffsetEXT typedef GLintptr (APIENTRYP GLEEPFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); GLEE_EXTERN GLEEPFNGLGETUNIFORMOFFSETEXTPROC GLeeFuncPtr_glGetUniformOffsetEXT; #define glGetUniformOffsetEXT GLeeFuncPtr_glGetUniformOffsetEXT #endif #endif /* GL_EXT_texture_integer */ #ifndef GL_EXT_texture_integer #define GL_EXT_texture_integer 1 #define __GLEE_GL_EXT_texture_integer 1 /* Constants */ #define GL_RGBA32UI_EXT 0x8D70 #define GL_RGB32UI_EXT 0x8D71 #define GL_ALPHA32UI_EXT 0x8D72 #define GL_INTENSITY32UI_EXT 0x8D73 #define GL_LUMINANCE32UI_EXT 0x8D74 #define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 #define GL_RGBA16UI_EXT 0x8D76 #define GL_RGB16UI_EXT 0x8D77 #define GL_ALPHA16UI_EXT 0x8D78 #define GL_INTENSITY16UI_EXT 0x8D79 #define GL_LUMINANCE16UI_EXT 0x8D7A #define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B #define GL_RGBA8UI_EXT 0x8D7C #define GL_RGB8UI_EXT 0x8D7D #define GL_ALPHA8UI_EXT 0x8D7E #define GL_INTENSITY8UI_EXT 0x8D7F #define GL_LUMINANCE8UI_EXT 0x8D80 #define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 #define GL_RGBA32I_EXT 0x8D82 #define GL_RGB32I_EXT 0x8D83 #define GL_ALPHA32I_EXT 0x8D84 #define GL_INTENSITY32I_EXT 0x8D85 #define GL_LUMINANCE32I_EXT 0x8D86 #define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 #define GL_RGBA16I_EXT 0x8D88 #define GL_RGB16I_EXT 0x8D89 #define GL_ALPHA16I_EXT 0x8D8A #define GL_INTENSITY16I_EXT 0x8D8B #define GL_LUMINANCE16I_EXT 0x8D8C #define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D #define GL_RGBA8I_EXT 0x8D8E #define GL_RGB8I_EXT 0x8D8F #define GL_ALPHA8I_EXT 0x8D90 #define GL_INTENSITY8I_EXT 0x8D91 #define GL_LUMINANCE8I_EXT 0x8D92 #define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 #define GL_RED_INTEGER_EXT 0x8D94 #define GL_GREEN_INTEGER_EXT 0x8D95 #define GL_BLUE_INTEGER_EXT 0x8D96 #define GL_ALPHA_INTEGER_EXT 0x8D97 #define GL_RGB_INTEGER_EXT 0x8D98 #define GL_RGBA_INTEGER_EXT 0x8D99 #define GL_BGR_INTEGER_EXT 0x8D9A #define GL_BGRA_INTEGER_EXT 0x8D9B #define GL_LUMINANCE_INTEGER_EXT 0x8D9C #define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D #define GL_RGBA_INTEGER_MODE_EXT 0x8D9E #ifndef GLEE_H_DEFINED_glTexParameterIivEXT #define GLEE_H_DEFINED_glTexParameterIivEXT typedef void (APIENTRYP GLEEPFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLTEXPARAMETERIIVEXTPROC GLeeFuncPtr_glTexParameterIivEXT; #define glTexParameterIivEXT GLeeFuncPtr_glTexParameterIivEXT #endif #ifndef GLEE_H_DEFINED_glTexParameterIuivEXT #define GLEE_H_DEFINED_glTexParameterIuivEXT typedef void (APIENTRYP GLEEPFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint * params); GLEE_EXTERN GLEEPFNGLTEXPARAMETERIUIVEXTPROC GLeeFuncPtr_glTexParameterIuivEXT; #define glTexParameterIuivEXT GLeeFuncPtr_glTexParameterIuivEXT #endif #ifndef GLEE_H_DEFINED_glGetTexParameterIivEXT #define GLEE_H_DEFINED_glGetTexParameterIivEXT typedef void (APIENTRYP GLEEPFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETTEXPARAMETERIIVEXTPROC GLeeFuncPtr_glGetTexParameterIivEXT; #define glGetTexParameterIivEXT GLeeFuncPtr_glGetTexParameterIivEXT #endif #ifndef GLEE_H_DEFINED_glGetTexParameterIuivEXT #define GLEE_H_DEFINED_glGetTexParameterIuivEXT typedef void (APIENTRYP GLEEPFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint * params); GLEE_EXTERN GLEEPFNGLGETTEXPARAMETERIUIVEXTPROC GLeeFuncPtr_glGetTexParameterIuivEXT; #define glGetTexParameterIuivEXT GLeeFuncPtr_glGetTexParameterIuivEXT #endif #ifndef GLEE_H_DEFINED_glClearColorIiEXT #define GLEE_H_DEFINED_glClearColorIiEXT typedef void (APIENTRYP GLEEPFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); GLEE_EXTERN GLEEPFNGLCLEARCOLORIIEXTPROC GLeeFuncPtr_glClearColorIiEXT; #define glClearColorIiEXT GLeeFuncPtr_glClearColorIiEXT #endif #ifndef GLEE_H_DEFINED_glClearColorIuiEXT #define GLEE_H_DEFINED_glClearColorIuiEXT typedef void (APIENTRYP GLEEPFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); GLEE_EXTERN GLEEPFNGLCLEARCOLORIUIEXTPROC GLeeFuncPtr_glClearColorIuiEXT; #define glClearColorIuiEXT GLeeFuncPtr_glClearColorIuiEXT #endif #endif /* GL_GREMEDY_frame_terminator */ #ifndef GL_GREMEDY_frame_terminator #define GL_GREMEDY_frame_terminator 1 #define __GLEE_GL_GREMEDY_frame_terminator 1 /* Constants */ #ifndef GLEE_H_DEFINED_glFrameTerminatorGREMEDY #define GLEE_H_DEFINED_glFrameTerminatorGREMEDY typedef void (APIENTRYP GLEEPFNGLFRAMETERMINATORGREMEDYPROC) (); GLEE_EXTERN GLEEPFNGLFRAMETERMINATORGREMEDYPROC GLeeFuncPtr_glFrameTerminatorGREMEDY; #define glFrameTerminatorGREMEDY GLeeFuncPtr_glFrameTerminatorGREMEDY #endif #endif /* GL_NV_conditional_render */ #ifndef GL_NV_conditional_render #define GL_NV_conditional_render 1 #define __GLEE_GL_NV_conditional_render 1 /* Constants */ #define GL_QUERY_WAIT_NV 0x8E13 #define GL_QUERY_NO_WAIT_NV 0x8E14 #define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 #define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 #ifndef GLEE_H_DEFINED_glBeginConditionalRenderNV #define GLEE_H_DEFINED_glBeginConditionalRenderNV typedef void (APIENTRYP GLEEPFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); GLEE_EXTERN GLEEPFNGLBEGINCONDITIONALRENDERNVPROC GLeeFuncPtr_glBeginConditionalRenderNV; #define glBeginConditionalRenderNV GLeeFuncPtr_glBeginConditionalRenderNV #endif #ifndef GLEE_H_DEFINED_glEndConditionalRenderNV #define GLEE_H_DEFINED_glEndConditionalRenderNV typedef void (APIENTRYP GLEEPFNGLENDCONDITIONALRENDERNVPROC) (); GLEE_EXTERN GLEEPFNGLENDCONDITIONALRENDERNVPROC GLeeFuncPtr_glEndConditionalRenderNV; #define glEndConditionalRenderNV GLeeFuncPtr_glEndConditionalRenderNV #endif #endif /* GL_NV_present_video */ #ifndef GL_NV_present_video #define GL_NV_present_video 1 #define __GLEE_GL_NV_present_video 1 /* Constants */ #define GL_FRAME_NV 0x8E26 #define GL_FIELDS_NV 0x8E27 #define GL_CURRENT_TIME_NV 0x8E28 #define GL_NUM_FILL_STREAMS_NV 0x8E29 #define GL_PRESENT_TIME_NV 0x8E2A #define GL_PRESENT_DURATION_NV 0x8E2B #ifndef GLEE_H_DEFINED_glPresentFrameKeyedNV #define GLEE_H_DEFINED_glPresentFrameKeyedNV typedef void (APIENTRYP GLEEPFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1); GLEE_EXTERN GLEEPFNGLPRESENTFRAMEKEYEDNVPROC GLeeFuncPtr_glPresentFrameKeyedNV; #define glPresentFrameKeyedNV GLeeFuncPtr_glPresentFrameKeyedNV #endif #ifndef GLEE_H_DEFINED_glPresentFrameDualFillNV #define GLEE_H_DEFINED_glPresentFrameDualFillNV typedef void (APIENTRYP GLEEPFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3); GLEE_EXTERN GLEEPFNGLPRESENTFRAMEDUALFILLNVPROC GLeeFuncPtr_glPresentFrameDualFillNV; #define glPresentFrameDualFillNV GLeeFuncPtr_glPresentFrameDualFillNV #endif #ifndef GLEE_H_DEFINED_glGetVideoivNV #define GLEE_H_DEFINED_glGetVideoivNV typedef void (APIENTRYP GLEEPFNGLGETVIDEOIVNVPROC) (GLuint video_slot, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETVIDEOIVNVPROC GLeeFuncPtr_glGetVideoivNV; #define glGetVideoivNV GLeeFuncPtr_glGetVideoivNV #endif #ifndef GLEE_H_DEFINED_glGetVideouivNV #define GLEE_H_DEFINED_glGetVideouivNV typedef void (APIENTRYP GLEEPFNGLGETVIDEOUIVNVPROC) (GLuint video_slot, GLenum pname, GLuint * params); GLEE_EXTERN GLEEPFNGLGETVIDEOUIVNVPROC GLeeFuncPtr_glGetVideouivNV; #define glGetVideouivNV GLeeFuncPtr_glGetVideouivNV #endif #ifndef GLEE_H_DEFINED_glGetVideoi64vNV #define GLEE_H_DEFINED_glGetVideoi64vNV typedef void (APIENTRYP GLEEPFNGLGETVIDEOI64VNVPROC) (GLuint video_slot, GLenum pname, GLint64EXT * params); GLEE_EXTERN GLEEPFNGLGETVIDEOI64VNVPROC GLeeFuncPtr_glGetVideoi64vNV; #define glGetVideoi64vNV GLeeFuncPtr_glGetVideoi64vNV #endif #ifndef GLEE_H_DEFINED_glGetVideoui64vNV #define GLEE_H_DEFINED_glGetVideoui64vNV typedef void (APIENTRYP GLEEPFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pname, GLuint64EXT * params); GLEE_EXTERN GLEEPFNGLGETVIDEOUI64VNVPROC GLeeFuncPtr_glGetVideoui64vNV; #define glGetVideoui64vNV GLeeFuncPtr_glGetVideoui64vNV #endif #endif /* GL_EXT_transform_feedback */ #ifndef GL_EXT_transform_feedback #define GL_EXT_transform_feedback 1 #define __GLEE_GL_EXT_transform_feedback 1 /* Constants */ #define GL_TRANSFORM_FEEDBACK_BUFFER_EXT 0x8C8E #define GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT 0x8C84 #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT 0x8C85 #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT 0x8C8F #define GL_INTERLEAVED_ATTRIBS_EXT 0x8C8C #define GL_SEPARATE_ATTRIBS_EXT 0x8C8D #define GL_PRIMITIVES_GENERATED_EXT 0x8C87 #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT 0x8C88 #define GL_RASTERIZER_DISCARD_EXT 0x8C89 #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT 0x8C8A #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT 0x8C8B #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT 0x8C80 #define GL_TRANSFORM_FEEDBACK_VARYINGS_EXT 0x8C83 #define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT 0x8C7F #define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT 0x8C76 #ifndef GLEE_H_DEFINED_glBeginTransformFeedbackEXT #define GLEE_H_DEFINED_glBeginTransformFeedbackEXT typedef void (APIENTRYP GLEEPFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode); GLEE_EXTERN GLEEPFNGLBEGINTRANSFORMFEEDBACKEXTPROC GLeeFuncPtr_glBeginTransformFeedbackEXT; #define glBeginTransformFeedbackEXT GLeeFuncPtr_glBeginTransformFeedbackEXT #endif #ifndef GLEE_H_DEFINED_glEndTransformFeedbackEXT #define GLEE_H_DEFINED_glEndTransformFeedbackEXT typedef void (APIENTRYP GLEEPFNGLENDTRANSFORMFEEDBACKEXTPROC) (); GLEE_EXTERN GLEEPFNGLENDTRANSFORMFEEDBACKEXTPROC GLeeFuncPtr_glEndTransformFeedbackEXT; #define glEndTransformFeedbackEXT GLeeFuncPtr_glEndTransformFeedbackEXT #endif #ifndef GLEE_H_DEFINED_glBindBufferRangeEXT #define GLEE_H_DEFINED_glBindBufferRangeEXT typedef void (APIENTRYP GLEEPFNGLBINDBUFFERRANGEEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); GLEE_EXTERN GLEEPFNGLBINDBUFFERRANGEEXTPROC GLeeFuncPtr_glBindBufferRangeEXT; #define glBindBufferRangeEXT GLeeFuncPtr_glBindBufferRangeEXT #endif #ifndef GLEE_H_DEFINED_glBindBufferOffsetEXT #define GLEE_H_DEFINED_glBindBufferOffsetEXT typedef void (APIENTRYP GLEEPFNGLBINDBUFFEROFFSETEXTPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); GLEE_EXTERN GLEEPFNGLBINDBUFFEROFFSETEXTPROC GLeeFuncPtr_glBindBufferOffsetEXT; #define glBindBufferOffsetEXT GLeeFuncPtr_glBindBufferOffsetEXT #endif #ifndef GLEE_H_DEFINED_glBindBufferBaseEXT #define GLEE_H_DEFINED_glBindBufferBaseEXT typedef void (APIENTRYP GLEEPFNGLBINDBUFFERBASEEXTPROC) (GLenum target, GLuint index, GLuint buffer); GLEE_EXTERN GLEEPFNGLBINDBUFFERBASEEXTPROC GLeeFuncPtr_glBindBufferBaseEXT; #define glBindBufferBaseEXT GLeeFuncPtr_glBindBufferBaseEXT #endif #ifndef GLEE_H_DEFINED_glTransformFeedbackVaryingsEXT #define GLEE_H_DEFINED_glTransformFeedbackVaryingsEXT typedef void (APIENTRYP GLEEPFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC) (GLuint program, GLsizei count, const GLchar* * varyings, GLenum bufferMode); GLEE_EXTERN GLEEPFNGLTRANSFORMFEEDBACKVARYINGSEXTPROC GLeeFuncPtr_glTransformFeedbackVaryingsEXT; #define glTransformFeedbackVaryingsEXT GLeeFuncPtr_glTransformFeedbackVaryingsEXT #endif #ifndef GLEE_H_DEFINED_glGetTransformFeedbackVaryingEXT #define GLEE_H_DEFINED_glGetTransformFeedbackVaryingEXT typedef void (APIENTRYP GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); GLEE_EXTERN GLEEPFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC GLeeFuncPtr_glGetTransformFeedbackVaryingEXT; #define glGetTransformFeedbackVaryingEXT GLeeFuncPtr_glGetTransformFeedbackVaryingEXT #endif #endif /* GL_EXT_direct_state_access */ #ifndef GL_EXT_direct_state_access #define GL_EXT_direct_state_access 1 #define __GLEE_GL_EXT_direct_state_access 1 /* Constants */ #define GL_PROGRAM_MATRIX_EXT 0x8E2D #define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E #define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F #ifndef GLEE_H_DEFINED_glClientAttribDefaultEXT #define GLEE_H_DEFINED_glClientAttribDefaultEXT typedef void (APIENTRYP GLEEPFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); GLEE_EXTERN GLEEPFNGLCLIENTATTRIBDEFAULTEXTPROC GLeeFuncPtr_glClientAttribDefaultEXT; #define glClientAttribDefaultEXT GLeeFuncPtr_glClientAttribDefaultEXT #endif #ifndef GLEE_H_DEFINED_glPushClientAttribDefaultEXT #define GLEE_H_DEFINED_glPushClientAttribDefaultEXT typedef void (APIENTRYP GLEEPFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask); GLEE_EXTERN GLEEPFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC GLeeFuncPtr_glPushClientAttribDefaultEXT; #define glPushClientAttribDefaultEXT GLeeFuncPtr_glPushClientAttribDefaultEXT #endif #ifndef GLEE_H_DEFINED_glMatrixLoadfEXT #define GLEE_H_DEFINED_glMatrixLoadfEXT typedef void (APIENTRYP GLEEPFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat * m); GLEE_EXTERN GLEEPFNGLMATRIXLOADFEXTPROC GLeeFuncPtr_glMatrixLoadfEXT; #define glMatrixLoadfEXT GLeeFuncPtr_glMatrixLoadfEXT #endif #ifndef GLEE_H_DEFINED_glMatrixLoaddEXT #define GLEE_H_DEFINED_glMatrixLoaddEXT typedef void (APIENTRYP GLEEPFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble * m); GLEE_EXTERN GLEEPFNGLMATRIXLOADDEXTPROC GLeeFuncPtr_glMatrixLoaddEXT; #define glMatrixLoaddEXT GLeeFuncPtr_glMatrixLoaddEXT #endif #ifndef GLEE_H_DEFINED_glMatrixMultfEXT #define GLEE_H_DEFINED_glMatrixMultfEXT typedef void (APIENTRYP GLEEPFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat * m); GLEE_EXTERN GLEEPFNGLMATRIXMULTFEXTPROC GLeeFuncPtr_glMatrixMultfEXT; #define glMatrixMultfEXT GLeeFuncPtr_glMatrixMultfEXT #endif #ifndef GLEE_H_DEFINED_glMatrixMultdEXT #define GLEE_H_DEFINED_glMatrixMultdEXT typedef void (APIENTRYP GLEEPFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble * m); GLEE_EXTERN GLEEPFNGLMATRIXMULTDEXTPROC GLeeFuncPtr_glMatrixMultdEXT; #define glMatrixMultdEXT GLeeFuncPtr_glMatrixMultdEXT #endif #ifndef GLEE_H_DEFINED_glMatrixLoadIdentityEXT #define GLEE_H_DEFINED_glMatrixLoadIdentityEXT typedef void (APIENTRYP GLEEPFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLMATRIXLOADIDENTITYEXTPROC GLeeFuncPtr_glMatrixLoadIdentityEXT; #define glMatrixLoadIdentityEXT GLeeFuncPtr_glMatrixLoadIdentityEXT #endif #ifndef GLEE_H_DEFINED_glMatrixRotatefEXT #define GLEE_H_DEFINED_glMatrixRotatefEXT typedef void (APIENTRYP GLEEPFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLMATRIXROTATEFEXTPROC GLeeFuncPtr_glMatrixRotatefEXT; #define glMatrixRotatefEXT GLeeFuncPtr_glMatrixRotatefEXT #endif #ifndef GLEE_H_DEFINED_glMatrixRotatedEXT #define GLEE_H_DEFINED_glMatrixRotatedEXT typedef void (APIENTRYP GLEEPFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLMATRIXROTATEDEXTPROC GLeeFuncPtr_glMatrixRotatedEXT; #define glMatrixRotatedEXT GLeeFuncPtr_glMatrixRotatedEXT #endif #ifndef GLEE_H_DEFINED_glMatrixScalefEXT #define GLEE_H_DEFINED_glMatrixScalefEXT typedef void (APIENTRYP GLEEPFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLMATRIXSCALEFEXTPROC GLeeFuncPtr_glMatrixScalefEXT; #define glMatrixScalefEXT GLeeFuncPtr_glMatrixScalefEXT #endif #ifndef GLEE_H_DEFINED_glMatrixScaledEXT #define GLEE_H_DEFINED_glMatrixScaledEXT typedef void (APIENTRYP GLEEPFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLMATRIXSCALEDEXTPROC GLeeFuncPtr_glMatrixScaledEXT; #define glMatrixScaledEXT GLeeFuncPtr_glMatrixScaledEXT #endif #ifndef GLEE_H_DEFINED_glMatrixTranslatefEXT #define GLEE_H_DEFINED_glMatrixTranslatefEXT typedef void (APIENTRYP GLEEPFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); GLEE_EXTERN GLEEPFNGLMATRIXTRANSLATEFEXTPROC GLeeFuncPtr_glMatrixTranslatefEXT; #define glMatrixTranslatefEXT GLeeFuncPtr_glMatrixTranslatefEXT #endif #ifndef GLEE_H_DEFINED_glMatrixTranslatedEXT #define GLEE_H_DEFINED_glMatrixTranslatedEXT typedef void (APIENTRYP GLEEPFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLMATRIXTRANSLATEDEXTPROC GLeeFuncPtr_glMatrixTranslatedEXT; #define glMatrixTranslatedEXT GLeeFuncPtr_glMatrixTranslatedEXT #endif #ifndef GLEE_H_DEFINED_glMatrixFrustumEXT #define GLEE_H_DEFINED_glMatrixFrustumEXT typedef void (APIENTRYP GLEEPFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLEE_EXTERN GLEEPFNGLMATRIXFRUSTUMEXTPROC GLeeFuncPtr_glMatrixFrustumEXT; #define glMatrixFrustumEXT GLeeFuncPtr_glMatrixFrustumEXT #endif #ifndef GLEE_H_DEFINED_glMatrixOrthoEXT #define GLEE_H_DEFINED_glMatrixOrthoEXT typedef void (APIENTRYP GLEEPFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); GLEE_EXTERN GLEEPFNGLMATRIXORTHOEXTPROC GLeeFuncPtr_glMatrixOrthoEXT; #define glMatrixOrthoEXT GLeeFuncPtr_glMatrixOrthoEXT #endif #ifndef GLEE_H_DEFINED_glMatrixPopEXT #define GLEE_H_DEFINED_glMatrixPopEXT typedef void (APIENTRYP GLEEPFNGLMATRIXPOPEXTPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLMATRIXPOPEXTPROC GLeeFuncPtr_glMatrixPopEXT; #define glMatrixPopEXT GLeeFuncPtr_glMatrixPopEXT #endif #ifndef GLEE_H_DEFINED_glMatrixPushEXT #define GLEE_H_DEFINED_glMatrixPushEXT typedef void (APIENTRYP GLEEPFNGLMATRIXPUSHEXTPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLMATRIXPUSHEXTPROC GLeeFuncPtr_glMatrixPushEXT; #define glMatrixPushEXT GLeeFuncPtr_glMatrixPushEXT #endif #ifndef GLEE_H_DEFINED_glMatrixLoadTransposefEXT #define GLEE_H_DEFINED_glMatrixLoadTransposefEXT typedef void (APIENTRYP GLEEPFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat * m); GLEE_EXTERN GLEEPFNGLMATRIXLOADTRANSPOSEFEXTPROC GLeeFuncPtr_glMatrixLoadTransposefEXT; #define glMatrixLoadTransposefEXT GLeeFuncPtr_glMatrixLoadTransposefEXT #endif #ifndef GLEE_H_DEFINED_glMatrixLoadTransposedEXT #define GLEE_H_DEFINED_glMatrixLoadTransposedEXT typedef void (APIENTRYP GLEEPFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble * m); GLEE_EXTERN GLEEPFNGLMATRIXLOADTRANSPOSEDEXTPROC GLeeFuncPtr_glMatrixLoadTransposedEXT; #define glMatrixLoadTransposedEXT GLeeFuncPtr_glMatrixLoadTransposedEXT #endif #ifndef GLEE_H_DEFINED_glMatrixMultTransposefEXT #define GLEE_H_DEFINED_glMatrixMultTransposefEXT typedef void (APIENTRYP GLEEPFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat * m); GLEE_EXTERN GLEEPFNGLMATRIXMULTTRANSPOSEFEXTPROC GLeeFuncPtr_glMatrixMultTransposefEXT; #define glMatrixMultTransposefEXT GLeeFuncPtr_glMatrixMultTransposefEXT #endif #ifndef GLEE_H_DEFINED_glMatrixMultTransposedEXT #define GLEE_H_DEFINED_glMatrixMultTransposedEXT typedef void (APIENTRYP GLEEPFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble * m); GLEE_EXTERN GLEEPFNGLMATRIXMULTTRANSPOSEDEXTPROC GLeeFuncPtr_glMatrixMultTransposedEXT; #define glMatrixMultTransposedEXT GLeeFuncPtr_glMatrixMultTransposedEXT #endif #ifndef GLEE_H_DEFINED_glTextureParameterfEXT #define GLEE_H_DEFINED_glTextureParameterfEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREPARAMETERFEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLTEXTUREPARAMETERFEXTPROC GLeeFuncPtr_glTextureParameterfEXT; #define glTextureParameterfEXT GLeeFuncPtr_glTextureParameterfEXT #endif #ifndef GLEE_H_DEFINED_glTextureParameterfvEXT #define GLEE_H_DEFINED_glTextureParameterfvEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLTEXTUREPARAMETERFVEXTPROC GLeeFuncPtr_glTextureParameterfvEXT; #define glTextureParameterfvEXT GLeeFuncPtr_glTextureParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glTextureParameteriEXT #define GLEE_H_DEFINED_glTextureParameteriEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREPARAMETERIEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLTEXTUREPARAMETERIEXTPROC GLeeFuncPtr_glTextureParameteriEXT; #define glTextureParameteriEXT GLeeFuncPtr_glTextureParameteriEXT #endif #ifndef GLEE_H_DEFINED_glTextureParameterivEXT #define GLEE_H_DEFINED_glTextureParameterivEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLTEXTUREPARAMETERIVEXTPROC GLeeFuncPtr_glTextureParameterivEXT; #define glTextureParameterivEXT GLeeFuncPtr_glTextureParameterivEXT #endif #ifndef GLEE_H_DEFINED_glTextureImage1DEXT #define GLEE_H_DEFINED_glTextureImage1DEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXTUREIMAGE1DEXTPROC GLeeFuncPtr_glTextureImage1DEXT; #define glTextureImage1DEXT GLeeFuncPtr_glTextureImage1DEXT #endif #ifndef GLEE_H_DEFINED_glTextureImage2DEXT #define GLEE_H_DEFINED_glTextureImage2DEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXTUREIMAGE2DEXTPROC GLeeFuncPtr_glTextureImage2DEXT; #define glTextureImage2DEXT GLeeFuncPtr_glTextureImage2DEXT #endif #ifndef GLEE_H_DEFINED_glTextureSubImage1DEXT #define GLEE_H_DEFINED_glTextureSubImage1DEXT typedef void (APIENTRYP GLEEPFNGLTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXTURESUBIMAGE1DEXTPROC GLeeFuncPtr_glTextureSubImage1DEXT; #define glTextureSubImage1DEXT GLeeFuncPtr_glTextureSubImage1DEXT #endif #ifndef GLEE_H_DEFINED_glTextureSubImage2DEXT #define GLEE_H_DEFINED_glTextureSubImage2DEXT typedef void (APIENTRYP GLEEPFNGLTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXTURESUBIMAGE2DEXTPROC GLeeFuncPtr_glTextureSubImage2DEXT; #define glTextureSubImage2DEXT GLeeFuncPtr_glTextureSubImage2DEXT #endif #ifndef GLEE_H_DEFINED_glCopyTextureImage1DEXT #define GLEE_H_DEFINED_glCopyTextureImage1DEXT typedef void (APIENTRYP GLEEPFNGLCOPYTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); GLEE_EXTERN GLEEPFNGLCOPYTEXTUREIMAGE1DEXTPROC GLeeFuncPtr_glCopyTextureImage1DEXT; #define glCopyTextureImage1DEXT GLeeFuncPtr_glCopyTextureImage1DEXT #endif #ifndef GLEE_H_DEFINED_glCopyTextureImage2DEXT #define GLEE_H_DEFINED_glCopyTextureImage2DEXT typedef void (APIENTRYP GLEEPFNGLCOPYTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); GLEE_EXTERN GLEEPFNGLCOPYTEXTUREIMAGE2DEXTPROC GLeeFuncPtr_glCopyTextureImage2DEXT; #define glCopyTextureImage2DEXT GLeeFuncPtr_glCopyTextureImage2DEXT #endif #ifndef GLEE_H_DEFINED_glCopyTextureSubImage1DEXT #define GLEE_H_DEFINED_glCopyTextureSubImage1DEXT typedef void (APIENTRYP GLEEPFNGLCOPYTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); GLEE_EXTERN GLEEPFNGLCOPYTEXTURESUBIMAGE1DEXTPROC GLeeFuncPtr_glCopyTextureSubImage1DEXT; #define glCopyTextureSubImage1DEXT GLeeFuncPtr_glCopyTextureSubImage1DEXT #endif #ifndef GLEE_H_DEFINED_glCopyTextureSubImage2DEXT #define GLEE_H_DEFINED_glCopyTextureSubImage2DEXT typedef void (APIENTRYP GLEEPFNGLCOPYTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLCOPYTEXTURESUBIMAGE2DEXTPROC GLeeFuncPtr_glCopyTextureSubImage2DEXT; #define glCopyTextureSubImage2DEXT GLeeFuncPtr_glCopyTextureSubImage2DEXT #endif #ifndef GLEE_H_DEFINED_glGetTextureImageEXT #define GLEE_H_DEFINED_glGetTextureImageEXT typedef void (APIENTRYP GLEEPFNGLGETTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels); GLEE_EXTERN GLEEPFNGLGETTEXTUREIMAGEEXTPROC GLeeFuncPtr_glGetTextureImageEXT; #define glGetTextureImageEXT GLeeFuncPtr_glGetTextureImageEXT #endif #ifndef GLEE_H_DEFINED_glGetTextureParameterfvEXT #define GLEE_H_DEFINED_glGetTextureParameterfvEXT typedef void (APIENTRYP GLEEPFNGLGETTEXTUREPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETTEXTUREPARAMETERFVEXTPROC GLeeFuncPtr_glGetTextureParameterfvEXT; #define glGetTextureParameterfvEXT GLeeFuncPtr_glGetTextureParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glGetTextureParameterivEXT #define GLEE_H_DEFINED_glGetTextureParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETTEXTUREPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETTEXTUREPARAMETERIVEXTPROC GLeeFuncPtr_glGetTextureParameterivEXT; #define glGetTextureParameterivEXT GLeeFuncPtr_glGetTextureParameterivEXT #endif #ifndef GLEE_H_DEFINED_glGetTextureLevelParameterfvEXT #define GLEE_H_DEFINED_glGetTextureLevelParameterfvEXT typedef void (APIENTRYP GLEEPFNGLGETTEXTURELEVELPARAMETERFVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETTEXTURELEVELPARAMETERFVEXTPROC GLeeFuncPtr_glGetTextureLevelParameterfvEXT; #define glGetTextureLevelParameterfvEXT GLeeFuncPtr_glGetTextureLevelParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glGetTextureLevelParameterivEXT #define GLEE_H_DEFINED_glGetTextureLevelParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETTEXTURELEVELPARAMETERIVEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETTEXTURELEVELPARAMETERIVEXTPROC GLeeFuncPtr_glGetTextureLevelParameterivEXT; #define glGetTextureLevelParameterivEXT GLeeFuncPtr_glGetTextureLevelParameterivEXT #endif #ifndef GLEE_H_DEFINED_glTextureImage3DEXT #define GLEE_H_DEFINED_glTextureImage3DEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXTUREIMAGE3DEXTPROC GLeeFuncPtr_glTextureImage3DEXT; #define glTextureImage3DEXT GLeeFuncPtr_glTextureImage3DEXT #endif #ifndef GLEE_H_DEFINED_glTextureSubImage3DEXT #define GLEE_H_DEFINED_glTextureSubImage3DEXT typedef void (APIENTRYP GLEEPFNGLTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLTEXTURESUBIMAGE3DEXTPROC GLeeFuncPtr_glTextureSubImage3DEXT; #define glTextureSubImage3DEXT GLeeFuncPtr_glTextureSubImage3DEXT #endif #ifndef GLEE_H_DEFINED_glCopyTextureSubImage3DEXT #define GLEE_H_DEFINED_glCopyTextureSubImage3DEXT typedef void (APIENTRYP GLEEPFNGLCOPYTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLCOPYTEXTURESUBIMAGE3DEXTPROC GLeeFuncPtr_glCopyTextureSubImage3DEXT; #define glCopyTextureSubImage3DEXT GLeeFuncPtr_glCopyTextureSubImage3DEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexParameterfEXT #define GLEE_H_DEFINED_glMultiTexParameterfEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXPARAMETERFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLMULTITEXPARAMETERFEXTPROC GLeeFuncPtr_glMultiTexParameterfEXT; #define glMultiTexParameterfEXT GLeeFuncPtr_glMultiTexParameterfEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexParameterfvEXT #define GLEE_H_DEFINED_glMultiTexParameterfvEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLMULTITEXPARAMETERFVEXTPROC GLeeFuncPtr_glMultiTexParameterfvEXT; #define glMultiTexParameterfvEXT GLeeFuncPtr_glMultiTexParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexParameteriEXT #define GLEE_H_DEFINED_glMultiTexParameteriEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXPARAMETERIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLMULTITEXPARAMETERIEXTPROC GLeeFuncPtr_glMultiTexParameteriEXT; #define glMultiTexParameteriEXT GLeeFuncPtr_glMultiTexParameteriEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexParameterivEXT #define GLEE_H_DEFINED_glMultiTexParameterivEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLMULTITEXPARAMETERIVEXTPROC GLeeFuncPtr_glMultiTexParameterivEXT; #define glMultiTexParameterivEXT GLeeFuncPtr_glMultiTexParameterivEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexImage1DEXT #define GLEE_H_DEFINED_glMultiTexImage1DEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLMULTITEXIMAGE1DEXTPROC GLeeFuncPtr_glMultiTexImage1DEXT; #define glMultiTexImage1DEXT GLeeFuncPtr_glMultiTexImage1DEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexImage2DEXT #define GLEE_H_DEFINED_glMultiTexImage2DEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLMULTITEXIMAGE2DEXTPROC GLeeFuncPtr_glMultiTexImage2DEXT; #define glMultiTexImage2DEXT GLeeFuncPtr_glMultiTexImage2DEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexSubImage1DEXT #define GLEE_H_DEFINED_glMultiTexSubImage1DEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLMULTITEXSUBIMAGE1DEXTPROC GLeeFuncPtr_glMultiTexSubImage1DEXT; #define glMultiTexSubImage1DEXT GLeeFuncPtr_glMultiTexSubImage1DEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexSubImage2DEXT #define GLEE_H_DEFINED_glMultiTexSubImage2DEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLMULTITEXSUBIMAGE2DEXTPROC GLeeFuncPtr_glMultiTexSubImage2DEXT; #define glMultiTexSubImage2DEXT GLeeFuncPtr_glMultiTexSubImage2DEXT #endif #ifndef GLEE_H_DEFINED_glCopyMultiTexImage1DEXT #define GLEE_H_DEFINED_glCopyMultiTexImage1DEXT typedef void (APIENTRYP GLEEPFNGLCOPYMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); GLEE_EXTERN GLEEPFNGLCOPYMULTITEXIMAGE1DEXTPROC GLeeFuncPtr_glCopyMultiTexImage1DEXT; #define glCopyMultiTexImage1DEXT GLeeFuncPtr_glCopyMultiTexImage1DEXT #endif #ifndef GLEE_H_DEFINED_glCopyMultiTexImage2DEXT #define GLEE_H_DEFINED_glCopyMultiTexImage2DEXT typedef void (APIENTRYP GLEEPFNGLCOPYMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); GLEE_EXTERN GLEEPFNGLCOPYMULTITEXIMAGE2DEXTPROC GLeeFuncPtr_glCopyMultiTexImage2DEXT; #define glCopyMultiTexImage2DEXT GLeeFuncPtr_glCopyMultiTexImage2DEXT #endif #ifndef GLEE_H_DEFINED_glCopyMultiTexSubImage1DEXT #define GLEE_H_DEFINED_glCopyMultiTexSubImage1DEXT typedef void (APIENTRYP GLEEPFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); GLEE_EXTERN GLEEPFNGLCOPYMULTITEXSUBIMAGE1DEXTPROC GLeeFuncPtr_glCopyMultiTexSubImage1DEXT; #define glCopyMultiTexSubImage1DEXT GLeeFuncPtr_glCopyMultiTexSubImage1DEXT #endif #ifndef GLEE_H_DEFINED_glCopyMultiTexSubImage2DEXT #define GLEE_H_DEFINED_glCopyMultiTexSubImage2DEXT typedef void (APIENTRYP GLEEPFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLCOPYMULTITEXSUBIMAGE2DEXTPROC GLeeFuncPtr_glCopyMultiTexSubImage2DEXT; #define glCopyMultiTexSubImage2DEXT GLeeFuncPtr_glCopyMultiTexSubImage2DEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexImageEXT #define GLEE_H_DEFINED_glGetMultiTexImageEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels); GLEE_EXTERN GLEEPFNGLGETMULTITEXIMAGEEXTPROC GLeeFuncPtr_glGetMultiTexImageEXT; #define glGetMultiTexImageEXT GLeeFuncPtr_glGetMultiTexImageEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexParameterfvEXT #define GLEE_H_DEFINED_glGetMultiTexParameterfvEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXPARAMETERFVEXTPROC GLeeFuncPtr_glGetMultiTexParameterfvEXT; #define glGetMultiTexParameterfvEXT GLeeFuncPtr_glGetMultiTexParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexParameterivEXT #define GLEE_H_DEFINED_glGetMultiTexParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXPARAMETERIVEXTPROC GLeeFuncPtr_glGetMultiTexParameterivEXT; #define glGetMultiTexParameterivEXT GLeeFuncPtr_glGetMultiTexParameterivEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexLevelParameterfvEXT #define GLEE_H_DEFINED_glGetMultiTexLevelParameterfvEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXLEVELPARAMETERFVEXTPROC GLeeFuncPtr_glGetMultiTexLevelParameterfvEXT; #define glGetMultiTexLevelParameterfvEXT GLeeFuncPtr_glGetMultiTexLevelParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexLevelParameterivEXT #define GLEE_H_DEFINED_glGetMultiTexLevelParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXLEVELPARAMETERIVEXTPROC GLeeFuncPtr_glGetMultiTexLevelParameterivEXT; #define glGetMultiTexLevelParameterivEXT GLeeFuncPtr_glGetMultiTexLevelParameterivEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexImage3DEXT #define GLEE_H_DEFINED_glMultiTexImage3DEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLMULTITEXIMAGE3DEXTPROC GLeeFuncPtr_glMultiTexImage3DEXT; #define glMultiTexImage3DEXT GLeeFuncPtr_glMultiTexImage3DEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexSubImage3DEXT #define GLEE_H_DEFINED_glMultiTexSubImage3DEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels); GLEE_EXTERN GLEEPFNGLMULTITEXSUBIMAGE3DEXTPROC GLeeFuncPtr_glMultiTexSubImage3DEXT; #define glMultiTexSubImage3DEXT GLeeFuncPtr_glMultiTexSubImage3DEXT #endif #ifndef GLEE_H_DEFINED_glCopyMultiTexSubImage3DEXT #define GLEE_H_DEFINED_glCopyMultiTexSubImage3DEXT typedef void (APIENTRYP GLEEPFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLCOPYMULTITEXSUBIMAGE3DEXTPROC GLeeFuncPtr_glCopyMultiTexSubImage3DEXT; #define glCopyMultiTexSubImage3DEXT GLeeFuncPtr_glCopyMultiTexSubImage3DEXT #endif #ifndef GLEE_H_DEFINED_glBindMultiTextureEXT #define GLEE_H_DEFINED_glBindMultiTextureEXT typedef void (APIENTRYP GLEEPFNGLBINDMULTITEXTUREEXTPROC) (GLenum texunit, GLenum target, GLuint texture); GLEE_EXTERN GLEEPFNGLBINDMULTITEXTUREEXTPROC GLeeFuncPtr_glBindMultiTextureEXT; #define glBindMultiTextureEXT GLeeFuncPtr_glBindMultiTextureEXT #endif #ifndef GLEE_H_DEFINED_glEnableClientStateIndexedEXT #define GLEE_H_DEFINED_glEnableClientStateIndexedEXT typedef void (APIENTRYP GLEEPFNGLENABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); GLEE_EXTERN GLEEPFNGLENABLECLIENTSTATEINDEXEDEXTPROC GLeeFuncPtr_glEnableClientStateIndexedEXT; #define glEnableClientStateIndexedEXT GLeeFuncPtr_glEnableClientStateIndexedEXT #endif #ifndef GLEE_H_DEFINED_glDisableClientStateIndexedEXT #define GLEE_H_DEFINED_glDisableClientStateIndexedEXT typedef void (APIENTRYP GLEEPFNGLDISABLECLIENTSTATEINDEXEDEXTPROC) (GLenum array, GLuint index); GLEE_EXTERN GLEEPFNGLDISABLECLIENTSTATEINDEXEDEXTPROC GLeeFuncPtr_glDisableClientStateIndexedEXT; #define glDisableClientStateIndexedEXT GLeeFuncPtr_glDisableClientStateIndexedEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexCoordPointerEXT #define GLEE_H_DEFINED_glMultiTexCoordPointerEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXCOORDPOINTEREXTPROC) (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLMULTITEXCOORDPOINTEREXTPROC GLeeFuncPtr_glMultiTexCoordPointerEXT; #define glMultiTexCoordPointerEXT GLeeFuncPtr_glMultiTexCoordPointerEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexEnvfEXT #define GLEE_H_DEFINED_glMultiTexEnvfEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXENVFEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLMULTITEXENVFEXTPROC GLeeFuncPtr_glMultiTexEnvfEXT; #define glMultiTexEnvfEXT GLeeFuncPtr_glMultiTexEnvfEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexEnvfvEXT #define GLEE_H_DEFINED_glMultiTexEnvfvEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLMULTITEXENVFVEXTPROC GLeeFuncPtr_glMultiTexEnvfvEXT; #define glMultiTexEnvfvEXT GLeeFuncPtr_glMultiTexEnvfvEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexEnviEXT #define GLEE_H_DEFINED_glMultiTexEnviEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXENVIEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLMULTITEXENVIEXTPROC GLeeFuncPtr_glMultiTexEnviEXT; #define glMultiTexEnviEXT GLeeFuncPtr_glMultiTexEnviEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexEnvivEXT #define GLEE_H_DEFINED_glMultiTexEnvivEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLMULTITEXENVIVEXTPROC GLeeFuncPtr_glMultiTexEnvivEXT; #define glMultiTexEnvivEXT GLeeFuncPtr_glMultiTexEnvivEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexGendEXT #define GLEE_H_DEFINED_glMultiTexGendEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXGENDEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble param); GLEE_EXTERN GLEEPFNGLMULTITEXGENDEXTPROC GLeeFuncPtr_glMultiTexGendEXT; #define glMultiTexGendEXT GLeeFuncPtr_glMultiTexGendEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexGendvEXT #define GLEE_H_DEFINED_glMultiTexGendvEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLdouble * params); GLEE_EXTERN GLEEPFNGLMULTITEXGENDVEXTPROC GLeeFuncPtr_glMultiTexGendvEXT; #define glMultiTexGendvEXT GLeeFuncPtr_glMultiTexGendvEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexGenfEXT #define GLEE_H_DEFINED_glMultiTexGenfEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXGENFEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat param); GLEE_EXTERN GLEEPFNGLMULTITEXGENFEXTPROC GLeeFuncPtr_glMultiTexGenfEXT; #define glMultiTexGenfEXT GLeeFuncPtr_glMultiTexGenfEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexGenfvEXT #define GLEE_H_DEFINED_glMultiTexGenfvEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLMULTITEXGENFVEXTPROC GLeeFuncPtr_glMultiTexGenfvEXT; #define glMultiTexGenfvEXT GLeeFuncPtr_glMultiTexGenfvEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexGeniEXT #define GLEE_H_DEFINED_glMultiTexGeniEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXGENIEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint param); GLEE_EXTERN GLEEPFNGLMULTITEXGENIEXTPROC GLeeFuncPtr_glMultiTexGeniEXT; #define glMultiTexGeniEXT GLeeFuncPtr_glMultiTexGeniEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexGenivEXT #define GLEE_H_DEFINED_glMultiTexGenivEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLMULTITEXGENIVEXTPROC GLeeFuncPtr_glMultiTexGenivEXT; #define glMultiTexGenivEXT GLeeFuncPtr_glMultiTexGenivEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexEnvfvEXT #define GLEE_H_DEFINED_glGetMultiTexEnvfvEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXENVFVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXENVFVEXTPROC GLeeFuncPtr_glGetMultiTexEnvfvEXT; #define glGetMultiTexEnvfvEXT GLeeFuncPtr_glGetMultiTexEnvfvEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexEnvivEXT #define GLEE_H_DEFINED_glGetMultiTexEnvivEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXENVIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXENVIVEXTPROC GLeeFuncPtr_glGetMultiTexEnvivEXT; #define glGetMultiTexEnvivEXT GLeeFuncPtr_glGetMultiTexEnvivEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexGendvEXT #define GLEE_H_DEFINED_glGetMultiTexGendvEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXGENDVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXGENDVEXTPROC GLeeFuncPtr_glGetMultiTexGendvEXT; #define glGetMultiTexGendvEXT GLeeFuncPtr_glGetMultiTexGendvEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexGenfvEXT #define GLEE_H_DEFINED_glGetMultiTexGenfvEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXGENFVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXGENFVEXTPROC GLeeFuncPtr_glGetMultiTexGenfvEXT; #define glGetMultiTexGenfvEXT GLeeFuncPtr_glGetMultiTexGenfvEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexGenivEXT #define GLEE_H_DEFINED_glGetMultiTexGenivEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXGENIVEXTPROC) (GLenum texunit, GLenum coord, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXGENIVEXTPROC GLeeFuncPtr_glGetMultiTexGenivEXT; #define glGetMultiTexGenivEXT GLeeFuncPtr_glGetMultiTexGenivEXT #endif #ifndef GLEE_H_DEFINED_glGetFloatIndexedvEXT #define GLEE_H_DEFINED_glGetFloatIndexedvEXT typedef void (APIENTRYP GLEEPFNGLGETFLOATINDEXEDVEXTPROC) (GLenum target, GLuint index, GLfloat * data); GLEE_EXTERN GLEEPFNGLGETFLOATINDEXEDVEXTPROC GLeeFuncPtr_glGetFloatIndexedvEXT; #define glGetFloatIndexedvEXT GLeeFuncPtr_glGetFloatIndexedvEXT #endif #ifndef GLEE_H_DEFINED_glGetDoubleIndexedvEXT #define GLEE_H_DEFINED_glGetDoubleIndexedvEXT typedef void (APIENTRYP GLEEPFNGLGETDOUBLEINDEXEDVEXTPROC) (GLenum target, GLuint index, GLdouble * data); GLEE_EXTERN GLEEPFNGLGETDOUBLEINDEXEDVEXTPROC GLeeFuncPtr_glGetDoubleIndexedvEXT; #define glGetDoubleIndexedvEXT GLeeFuncPtr_glGetDoubleIndexedvEXT #endif #ifndef GLEE_H_DEFINED_glGetPointerIndexedvEXT #define GLEE_H_DEFINED_glGetPointerIndexedvEXT typedef void (APIENTRYP GLEEPFNGLGETPOINTERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLvoid* * data); GLEE_EXTERN GLEEPFNGLGETPOINTERINDEXEDVEXTPROC GLeeFuncPtr_glGetPointerIndexedvEXT; #define glGetPointerIndexedvEXT GLeeFuncPtr_glGetPointerIndexedvEXT #endif #ifndef GLEE_H_DEFINED_glCompressedTextureImage3DEXT #define GLEE_H_DEFINED_glCompressedTextureImage3DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXTUREIMAGE3DEXTPROC GLeeFuncPtr_glCompressedTextureImage3DEXT; #define glCompressedTextureImage3DEXT GLeeFuncPtr_glCompressedTextureImage3DEXT #endif #ifndef GLEE_H_DEFINED_glCompressedTextureImage2DEXT #define GLEE_H_DEFINED_glCompressedTextureImage2DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXTUREIMAGE2DEXTPROC GLeeFuncPtr_glCompressedTextureImage2DEXT; #define glCompressedTextureImage2DEXT GLeeFuncPtr_glCompressedTextureImage2DEXT #endif #ifndef GLEE_H_DEFINED_glCompressedTextureImage1DEXT #define GLEE_H_DEFINED_glCompressedTextureImage1DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXTUREIMAGE1DEXTPROC GLeeFuncPtr_glCompressedTextureImage1DEXT; #define glCompressedTextureImage1DEXT GLeeFuncPtr_glCompressedTextureImage1DEXT #endif #ifndef GLEE_H_DEFINED_glCompressedTextureSubImage3DEXT #define GLEE_H_DEFINED_glCompressedTextureSubImage3DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE3DEXTPROC GLeeFuncPtr_glCompressedTextureSubImage3DEXT; #define glCompressedTextureSubImage3DEXT GLeeFuncPtr_glCompressedTextureSubImage3DEXT #endif #ifndef GLEE_H_DEFINED_glCompressedTextureSubImage2DEXT #define GLEE_H_DEFINED_glCompressedTextureSubImage2DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE2DEXTPROC GLeeFuncPtr_glCompressedTextureSubImage2DEXT; #define glCompressedTextureSubImage2DEXT GLeeFuncPtr_glCompressedTextureSubImage2DEXT #endif #ifndef GLEE_H_DEFINED_glCompressedTextureSubImage1DEXT #define GLEE_H_DEFINED_glCompressedTextureSubImage1DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC) (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDTEXTURESUBIMAGE1DEXTPROC GLeeFuncPtr_glCompressedTextureSubImage1DEXT; #define glCompressedTextureSubImage1DEXT GLeeFuncPtr_glCompressedTextureSubImage1DEXT #endif #ifndef GLEE_H_DEFINED_glGetCompressedTextureImageEXT #define GLEE_H_DEFINED_glGetCompressedTextureImageEXT typedef void (APIENTRYP GLEEPFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC) (GLuint texture, GLenum target, GLint lod, GLvoid * img); GLEE_EXTERN GLEEPFNGLGETCOMPRESSEDTEXTUREIMAGEEXTPROC GLeeFuncPtr_glGetCompressedTextureImageEXT; #define glGetCompressedTextureImageEXT GLeeFuncPtr_glGetCompressedTextureImageEXT #endif #ifndef GLEE_H_DEFINED_glCompressedMultiTexImage3DEXT #define GLEE_H_DEFINED_glCompressedMultiTexImage3DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDMULTITEXIMAGE3DEXTPROC GLeeFuncPtr_glCompressedMultiTexImage3DEXT; #define glCompressedMultiTexImage3DEXT GLeeFuncPtr_glCompressedMultiTexImage3DEXT #endif #ifndef GLEE_H_DEFINED_glCompressedMultiTexImage2DEXT #define GLEE_H_DEFINED_glCompressedMultiTexImage2DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDMULTITEXIMAGE2DEXTPROC GLeeFuncPtr_glCompressedMultiTexImage2DEXT; #define glCompressedMultiTexImage2DEXT GLeeFuncPtr_glCompressedMultiTexImage2DEXT #endif #ifndef GLEE_H_DEFINED_glCompressedMultiTexImage1DEXT #define GLEE_H_DEFINED_glCompressedMultiTexImage1DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDMULTITEXIMAGE1DEXTPROC GLeeFuncPtr_glCompressedMultiTexImage1DEXT; #define glCompressedMultiTexImage1DEXT GLeeFuncPtr_glCompressedMultiTexImage1DEXT #endif #ifndef GLEE_H_DEFINED_glCompressedMultiTexSubImage3DEXT #define GLEE_H_DEFINED_glCompressedMultiTexSubImage3DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE3DEXTPROC GLeeFuncPtr_glCompressedMultiTexSubImage3DEXT; #define glCompressedMultiTexSubImage3DEXT GLeeFuncPtr_glCompressedMultiTexSubImage3DEXT #endif #ifndef GLEE_H_DEFINED_glCompressedMultiTexSubImage2DEXT #define GLEE_H_DEFINED_glCompressedMultiTexSubImage2DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE2DEXTPROC GLeeFuncPtr_glCompressedMultiTexSubImage2DEXT; #define glCompressedMultiTexSubImage2DEXT GLeeFuncPtr_glCompressedMultiTexSubImage2DEXT #endif #ifndef GLEE_H_DEFINED_glCompressedMultiTexSubImage1DEXT #define GLEE_H_DEFINED_glCompressedMultiTexSubImage1DEXT typedef void (APIENTRYP GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC) (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * bits); GLEE_EXTERN GLEEPFNGLCOMPRESSEDMULTITEXSUBIMAGE1DEXTPROC GLeeFuncPtr_glCompressedMultiTexSubImage1DEXT; #define glCompressedMultiTexSubImage1DEXT GLeeFuncPtr_glCompressedMultiTexSubImage1DEXT #endif #ifndef GLEE_H_DEFINED_glGetCompressedMultiTexImageEXT #define GLEE_H_DEFINED_glGetCompressedMultiTexImageEXT typedef void (APIENTRYP GLEEPFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC) (GLenum texunit, GLenum target, GLint lod, GLvoid * img); GLEE_EXTERN GLEEPFNGLGETCOMPRESSEDMULTITEXIMAGEEXTPROC GLeeFuncPtr_glGetCompressedMultiTexImageEXT; #define glGetCompressedMultiTexImageEXT GLeeFuncPtr_glGetCompressedMultiTexImageEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramStringEXT #define GLEE_H_DEFINED_glNamedProgramStringEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid * string); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMSTRINGEXTPROC GLeeFuncPtr_glNamedProgramStringEXT; #define glNamedProgramStringEXT GLeeFuncPtr_glNamedProgramStringEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParameter4dEXT #define GLEE_H_DEFINED_glNamedProgramLocalParameter4dEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4DEXTPROC GLeeFuncPtr_glNamedProgramLocalParameter4dEXT; #define glNamedProgramLocalParameter4dEXT GLeeFuncPtr_glNamedProgramLocalParameter4dEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParameter4dvEXT #define GLEE_H_DEFINED_glNamedProgramLocalParameter4dvEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLdouble * params); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4DVEXTPROC GLeeFuncPtr_glNamedProgramLocalParameter4dvEXT; #define glNamedProgramLocalParameter4dvEXT GLeeFuncPtr_glNamedProgramLocalParameter4dvEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParameter4fEXT #define GLEE_H_DEFINED_glNamedProgramLocalParameter4fEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4FEXTPROC GLeeFuncPtr_glNamedProgramLocalParameter4fEXT; #define glNamedProgramLocalParameter4fEXT GLeeFuncPtr_glNamedProgramLocalParameter4fEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParameter4fvEXT #define GLEE_H_DEFINED_glNamedProgramLocalParameter4fvEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLfloat * params); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETER4FVEXTPROC GLeeFuncPtr_glNamedProgramLocalParameter4fvEXT; #define glNamedProgramLocalParameter4fvEXT GLeeFuncPtr_glNamedProgramLocalParameter4fvEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedProgramLocalParameterdvEXT #define GLEE_H_DEFINED_glGetNamedProgramLocalParameterdvEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC) (GLuint program, GLenum target, GLuint index, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERDVEXTPROC GLeeFuncPtr_glGetNamedProgramLocalParameterdvEXT; #define glGetNamedProgramLocalParameterdvEXT GLeeFuncPtr_glGetNamedProgramLocalParameterdvEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedProgramLocalParameterfvEXT #define GLEE_H_DEFINED_glGetNamedProgramLocalParameterfvEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC) (GLuint program, GLenum target, GLuint index, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERFVEXTPROC GLeeFuncPtr_glGetNamedProgramLocalParameterfvEXT; #define glGetNamedProgramLocalParameterfvEXT GLeeFuncPtr_glGetNamedProgramLocalParameterfvEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedProgramivEXT #define GLEE_H_DEFINED_glGetNamedProgramivEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDPROGRAMIVEXTPROC) (GLuint program, GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETNAMEDPROGRAMIVEXTPROC GLeeFuncPtr_glGetNamedProgramivEXT; #define glGetNamedProgramivEXT GLeeFuncPtr_glGetNamedProgramivEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedProgramStringEXT #define GLEE_H_DEFINED_glGetNamedProgramStringEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDPROGRAMSTRINGEXTPROC) (GLuint program, GLenum target, GLenum pname, GLvoid * string); GLEE_EXTERN GLEEPFNGLGETNAMEDPROGRAMSTRINGEXTPROC GLeeFuncPtr_glGetNamedProgramStringEXT; #define glGetNamedProgramStringEXT GLeeFuncPtr_glGetNamedProgramStringEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParameters4fvEXT #define GLEE_H_DEFINED_glNamedProgramLocalParameters4fvEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat * params); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERS4FVEXTPROC GLeeFuncPtr_glNamedProgramLocalParameters4fvEXT; #define glNamedProgramLocalParameters4fvEXT GLeeFuncPtr_glNamedProgramLocalParameters4fvEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParameterI4iEXT #define GLEE_H_DEFINED_glNamedProgramLocalParameterI4iEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC) (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4IEXTPROC GLeeFuncPtr_glNamedProgramLocalParameterI4iEXT; #define glNamedProgramLocalParameterI4iEXT GLeeFuncPtr_glNamedProgramLocalParameterI4iEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParameterI4ivEXT #define GLEE_H_DEFINED_glNamedProgramLocalParameterI4ivEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLint * params); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4IVEXTPROC GLeeFuncPtr_glNamedProgramLocalParameterI4ivEXT; #define glNamedProgramLocalParameterI4ivEXT GLeeFuncPtr_glNamedProgramLocalParameterI4ivEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParametersI4ivEXT #define GLEE_H_DEFINED_glNamedProgramLocalParametersI4ivEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint * params); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERSI4IVEXTPROC GLeeFuncPtr_glNamedProgramLocalParametersI4ivEXT; #define glNamedProgramLocalParametersI4ivEXT GLeeFuncPtr_glNamedProgramLocalParametersI4ivEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParameterI4uiEXT #define GLEE_H_DEFINED_glNamedProgramLocalParameterI4uiEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4UIEXTPROC GLeeFuncPtr_glNamedProgramLocalParameterI4uiEXT; #define glNamedProgramLocalParameterI4uiEXT GLeeFuncPtr_glNamedProgramLocalParameterI4uiEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParameterI4uivEXT #define GLEE_H_DEFINED_glNamedProgramLocalParameterI4uivEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, const GLuint * params); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERI4UIVEXTPROC GLeeFuncPtr_glNamedProgramLocalParameterI4uivEXT; #define glNamedProgramLocalParameterI4uivEXT GLeeFuncPtr_glNamedProgramLocalParameterI4uivEXT #endif #ifndef GLEE_H_DEFINED_glNamedProgramLocalParametersI4uivEXT #define GLEE_H_DEFINED_glNamedProgramLocalParametersI4uivEXT typedef void (APIENTRYP GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint * params); GLEE_EXTERN GLEEPFNGLNAMEDPROGRAMLOCALPARAMETERSI4UIVEXTPROC GLeeFuncPtr_glNamedProgramLocalParametersI4uivEXT; #define glNamedProgramLocalParametersI4uivEXT GLeeFuncPtr_glNamedProgramLocalParametersI4uivEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedProgramLocalParameterIivEXT #define GLEE_H_DEFINED_glGetNamedProgramLocalParameterIivEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLint * params); GLEE_EXTERN GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERIIVEXTPROC GLeeFuncPtr_glGetNamedProgramLocalParameterIivEXT; #define glGetNamedProgramLocalParameterIivEXT GLeeFuncPtr_glGetNamedProgramLocalParameterIivEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedProgramLocalParameterIuivEXT #define GLEE_H_DEFINED_glGetNamedProgramLocalParameterIuivEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC) (GLuint program, GLenum target, GLuint index, GLuint * params); GLEE_EXTERN GLEEPFNGLGETNAMEDPROGRAMLOCALPARAMETERIUIVEXTPROC GLeeFuncPtr_glGetNamedProgramLocalParameterIuivEXT; #define glGetNamedProgramLocalParameterIuivEXT GLeeFuncPtr_glGetNamedProgramLocalParameterIuivEXT #endif #ifndef GLEE_H_DEFINED_glTextureParameterIivEXT #define GLEE_H_DEFINED_glTextureParameterIivEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLTEXTUREPARAMETERIIVEXTPROC GLeeFuncPtr_glTextureParameterIivEXT; #define glTextureParameterIivEXT GLeeFuncPtr_glTextureParameterIivEXT #endif #ifndef GLEE_H_DEFINED_glTextureParameterIuivEXT #define GLEE_H_DEFINED_glTextureParameterIuivEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, const GLuint * params); GLEE_EXTERN GLEEPFNGLTEXTUREPARAMETERIUIVEXTPROC GLeeFuncPtr_glTextureParameterIuivEXT; #define glTextureParameterIuivEXT GLeeFuncPtr_glTextureParameterIuivEXT #endif #ifndef GLEE_H_DEFINED_glGetTextureParameterIivEXT #define GLEE_H_DEFINED_glGetTextureParameterIivEXT typedef void (APIENTRYP GLEEPFNGLGETTEXTUREPARAMETERIIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETTEXTUREPARAMETERIIVEXTPROC GLeeFuncPtr_glGetTextureParameterIivEXT; #define glGetTextureParameterIivEXT GLeeFuncPtr_glGetTextureParameterIivEXT #endif #ifndef GLEE_H_DEFINED_glGetTextureParameterIuivEXT #define GLEE_H_DEFINED_glGetTextureParameterIuivEXT typedef void (APIENTRYP GLEEPFNGLGETTEXTUREPARAMETERIUIVEXTPROC) (GLuint texture, GLenum target, GLenum pname, GLuint * params); GLEE_EXTERN GLEEPFNGLGETTEXTUREPARAMETERIUIVEXTPROC GLeeFuncPtr_glGetTextureParameterIuivEXT; #define glGetTextureParameterIuivEXT GLeeFuncPtr_glGetTextureParameterIuivEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexParameterIivEXT #define GLEE_H_DEFINED_glMultiTexParameterIivEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLMULTITEXPARAMETERIIVEXTPROC GLeeFuncPtr_glMultiTexParameterIivEXT; #define glMultiTexParameterIivEXT GLeeFuncPtr_glMultiTexParameterIivEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexParameterIuivEXT #define GLEE_H_DEFINED_glMultiTexParameterIuivEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, const GLuint * params); GLEE_EXTERN GLEEPFNGLMULTITEXPARAMETERIUIVEXTPROC GLeeFuncPtr_glMultiTexParameterIuivEXT; #define glMultiTexParameterIuivEXT GLeeFuncPtr_glMultiTexParameterIuivEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexParameterIivEXT #define GLEE_H_DEFINED_glGetMultiTexParameterIivEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXPARAMETERIIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXPARAMETERIIVEXTPROC GLeeFuncPtr_glGetMultiTexParameterIivEXT; #define glGetMultiTexParameterIivEXT GLeeFuncPtr_glGetMultiTexParameterIivEXT #endif #ifndef GLEE_H_DEFINED_glGetMultiTexParameterIuivEXT #define GLEE_H_DEFINED_glGetMultiTexParameterIuivEXT typedef void (APIENTRYP GLEEPFNGLGETMULTITEXPARAMETERIUIVEXTPROC) (GLenum texunit, GLenum target, GLenum pname, GLuint * params); GLEE_EXTERN GLEEPFNGLGETMULTITEXPARAMETERIUIVEXTPROC GLeeFuncPtr_glGetMultiTexParameterIuivEXT; #define glGetMultiTexParameterIuivEXT GLeeFuncPtr_glGetMultiTexParameterIuivEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform1fEXT #define GLEE_H_DEFINED_glProgramUniform1fEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1FEXTPROC GLeeFuncPtr_glProgramUniform1fEXT; #define glProgramUniform1fEXT GLeeFuncPtr_glProgramUniform1fEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform2fEXT #define GLEE_H_DEFINED_glProgramUniform2fEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2FEXTPROC GLeeFuncPtr_glProgramUniform2fEXT; #define glProgramUniform2fEXT GLeeFuncPtr_glProgramUniform2fEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform3fEXT #define GLEE_H_DEFINED_glProgramUniform3fEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3FEXTPROC GLeeFuncPtr_glProgramUniform3fEXT; #define glProgramUniform3fEXT GLeeFuncPtr_glProgramUniform3fEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform4fEXT #define GLEE_H_DEFINED_glProgramUniform4fEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4FEXTPROC GLeeFuncPtr_glProgramUniform4fEXT; #define glProgramUniform4fEXT GLeeFuncPtr_glProgramUniform4fEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform1iEXT #define GLEE_H_DEFINED_glProgramUniform1iEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1IEXTPROC GLeeFuncPtr_glProgramUniform1iEXT; #define glProgramUniform1iEXT GLeeFuncPtr_glProgramUniform1iEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform2iEXT #define GLEE_H_DEFINED_glProgramUniform2iEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2IEXTPROC GLeeFuncPtr_glProgramUniform2iEXT; #define glProgramUniform2iEXT GLeeFuncPtr_glProgramUniform2iEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform3iEXT #define GLEE_H_DEFINED_glProgramUniform3iEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3IEXTPROC GLeeFuncPtr_glProgramUniform3iEXT; #define glProgramUniform3iEXT GLeeFuncPtr_glProgramUniform3iEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform4iEXT #define GLEE_H_DEFINED_glProgramUniform4iEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4IEXTPROC GLeeFuncPtr_glProgramUniform4iEXT; #define glProgramUniform4iEXT GLeeFuncPtr_glProgramUniform4iEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform1fvEXT #define GLEE_H_DEFINED_glProgramUniform1fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1FVEXTPROC GLeeFuncPtr_glProgramUniform1fvEXT; #define glProgramUniform1fvEXT GLeeFuncPtr_glProgramUniform1fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform2fvEXT #define GLEE_H_DEFINED_glProgramUniform2fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2FVEXTPROC GLeeFuncPtr_glProgramUniform2fvEXT; #define glProgramUniform2fvEXT GLeeFuncPtr_glProgramUniform2fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform3fvEXT #define GLEE_H_DEFINED_glProgramUniform3fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3FVEXTPROC GLeeFuncPtr_glProgramUniform3fvEXT; #define glProgramUniform3fvEXT GLeeFuncPtr_glProgramUniform3fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform4fvEXT #define GLEE_H_DEFINED_glProgramUniform4fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4FVEXTPROC GLeeFuncPtr_glProgramUniform4fvEXT; #define glProgramUniform4fvEXT GLeeFuncPtr_glProgramUniform4fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform1ivEXT #define GLEE_H_DEFINED_glProgramUniform1ivEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1IVEXTPROC GLeeFuncPtr_glProgramUniform1ivEXT; #define glProgramUniform1ivEXT GLeeFuncPtr_glProgramUniform1ivEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform2ivEXT #define GLEE_H_DEFINED_glProgramUniform2ivEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2IVEXTPROC GLeeFuncPtr_glProgramUniform2ivEXT; #define glProgramUniform2ivEXT GLeeFuncPtr_glProgramUniform2ivEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform3ivEXT #define GLEE_H_DEFINED_glProgramUniform3ivEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3IVEXTPROC GLeeFuncPtr_glProgramUniform3ivEXT; #define glProgramUniform3ivEXT GLeeFuncPtr_glProgramUniform3ivEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform4ivEXT #define GLEE_H_DEFINED_glProgramUniform4ivEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4IVEXTPROC GLeeFuncPtr_glProgramUniform4ivEXT; #define glProgramUniform4ivEXT GLeeFuncPtr_glProgramUniform4ivEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2fvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix2fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2fvEXT; #define glProgramUniformMatrix2fvEXT GLeeFuncPtr_glProgramUniformMatrix2fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3fvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix3fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3fvEXT; #define glProgramUniformMatrix3fvEXT GLeeFuncPtr_glProgramUniformMatrix3fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4fvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix4fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4fvEXT; #define glProgramUniformMatrix4fvEXT GLeeFuncPtr_glProgramUniformMatrix4fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2x3fvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix2x3fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2x3fvEXT; #define glProgramUniformMatrix2x3fvEXT GLeeFuncPtr_glProgramUniformMatrix2x3fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3x2fvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix3x2fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3x2fvEXT; #define glProgramUniformMatrix3x2fvEXT GLeeFuncPtr_glProgramUniformMatrix3x2fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2x4fvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix2x4fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2x4fvEXT; #define glProgramUniformMatrix2x4fvEXT GLeeFuncPtr_glProgramUniformMatrix2x4fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4x2fvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix4x2fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4x2fvEXT; #define glProgramUniformMatrix4x2fvEXT GLeeFuncPtr_glProgramUniformMatrix4x2fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3x4fvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix3x4fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3x4fvEXT; #define glProgramUniformMatrix3x4fvEXT GLeeFuncPtr_glProgramUniformMatrix3x4fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4x3fvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix4x3fvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4x3fvEXT; #define glProgramUniformMatrix4x3fvEXT GLeeFuncPtr_glProgramUniformMatrix4x3fvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform1uiEXT #define GLEE_H_DEFINED_glProgramUniform1uiEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1UIEXTPROC GLeeFuncPtr_glProgramUniform1uiEXT; #define glProgramUniform1uiEXT GLeeFuncPtr_glProgramUniform1uiEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform2uiEXT #define GLEE_H_DEFINED_glProgramUniform2uiEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2UIEXTPROC GLeeFuncPtr_glProgramUniform2uiEXT; #define glProgramUniform2uiEXT GLeeFuncPtr_glProgramUniform2uiEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform3uiEXT #define GLEE_H_DEFINED_glProgramUniform3uiEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3UIEXTPROC GLeeFuncPtr_glProgramUniform3uiEXT; #define glProgramUniform3uiEXT GLeeFuncPtr_glProgramUniform3uiEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform4uiEXT #define GLEE_H_DEFINED_glProgramUniform4uiEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4UIEXTPROC GLeeFuncPtr_glProgramUniform4uiEXT; #define glProgramUniform4uiEXT GLeeFuncPtr_glProgramUniform4uiEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform1uivEXT #define GLEE_H_DEFINED_glProgramUniform1uivEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1UIVEXTPROC GLeeFuncPtr_glProgramUniform1uivEXT; #define glProgramUniform1uivEXT GLeeFuncPtr_glProgramUniform1uivEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform2uivEXT #define GLEE_H_DEFINED_glProgramUniform2uivEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2UIVEXTPROC GLeeFuncPtr_glProgramUniform2uivEXT; #define glProgramUniform2uivEXT GLeeFuncPtr_glProgramUniform2uivEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform3uivEXT #define GLEE_H_DEFINED_glProgramUniform3uivEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3UIVEXTPROC GLeeFuncPtr_glProgramUniform3uivEXT; #define glProgramUniform3uivEXT GLeeFuncPtr_glProgramUniform3uivEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform4uivEXT #define GLEE_H_DEFINED_glProgramUniform4uivEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4UIVEXTPROC GLeeFuncPtr_glProgramUniform4uivEXT; #define glProgramUniform4uivEXT GLeeFuncPtr_glProgramUniform4uivEXT #endif #ifndef GLEE_H_DEFINED_glNamedBufferDataEXT #define GLEE_H_DEFINED_glNamedBufferDataEXT typedef void (APIENTRYP GLEEPFNGLNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLsizeiptr size, const GLvoid * data, GLenum usage); GLEE_EXTERN GLEEPFNGLNAMEDBUFFERDATAEXTPROC GLeeFuncPtr_glNamedBufferDataEXT; #define glNamedBufferDataEXT GLeeFuncPtr_glNamedBufferDataEXT #endif #ifndef GLEE_H_DEFINED_glNamedBufferSubDataEXT #define GLEE_H_DEFINED_glNamedBufferSubDataEXT typedef void (APIENTRYP GLEEPFNGLNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid * data); GLEE_EXTERN GLEEPFNGLNAMEDBUFFERSUBDATAEXTPROC GLeeFuncPtr_glNamedBufferSubDataEXT; #define glNamedBufferSubDataEXT GLeeFuncPtr_glNamedBufferSubDataEXT #endif #ifndef GLEE_H_DEFINED_glMapNamedBufferEXT #define GLEE_H_DEFINED_glMapNamedBufferEXT typedef GLvoid* (APIENTRYP GLEEPFNGLMAPNAMEDBUFFEREXTPROC) (GLuint buffer, GLenum access); GLEE_EXTERN GLEEPFNGLMAPNAMEDBUFFEREXTPROC GLeeFuncPtr_glMapNamedBufferEXT; #define glMapNamedBufferEXT GLeeFuncPtr_glMapNamedBufferEXT #endif #ifndef GLEE_H_DEFINED_glUnmapNamedBufferEXT #define GLEE_H_DEFINED_glUnmapNamedBufferEXT typedef GLboolean (APIENTRYP GLEEPFNGLUNMAPNAMEDBUFFEREXTPROC) (GLuint buffer); GLEE_EXTERN GLEEPFNGLUNMAPNAMEDBUFFEREXTPROC GLeeFuncPtr_glUnmapNamedBufferEXT; #define glUnmapNamedBufferEXT GLeeFuncPtr_glUnmapNamedBufferEXT #endif #ifndef GLEE_H_DEFINED_glMapNamedBufferRangeEXT #define GLEE_H_DEFINED_glMapNamedBufferRangeEXT typedef GLvoid* (APIENTRYP GLEEPFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access); GLEE_EXTERN GLEEPFNGLMAPNAMEDBUFFERRANGEEXTPROC GLeeFuncPtr_glMapNamedBufferRangeEXT; #define glMapNamedBufferRangeEXT GLeeFuncPtr_glMapNamedBufferRangeEXT #endif #ifndef GLEE_H_DEFINED_glFlushMappedNamedBufferRangeEXT #define GLEE_H_DEFINED_glFlushMappedNamedBufferRangeEXT typedef void (APIENTRYP GLEEPFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); GLEE_EXTERN GLEEPFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC GLeeFuncPtr_glFlushMappedNamedBufferRangeEXT; #define glFlushMappedNamedBufferRangeEXT GLeeFuncPtr_glFlushMappedNamedBufferRangeEXT #endif #ifndef GLEE_H_DEFINED_glNamedCopyBufferSubDataEXT #define GLEE_H_DEFINED_glNamedCopyBufferSubDataEXT typedef void (APIENTRYP GLEEPFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); GLEE_EXTERN GLEEPFNGLNAMEDCOPYBUFFERSUBDATAEXTPROC GLeeFuncPtr_glNamedCopyBufferSubDataEXT; #define glNamedCopyBufferSubDataEXT GLeeFuncPtr_glNamedCopyBufferSubDataEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedBufferParameterivEXT #define GLEE_H_DEFINED_glGetNamedBufferParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC) (GLuint buffer, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETNAMEDBUFFERPARAMETERIVEXTPROC GLeeFuncPtr_glGetNamedBufferParameterivEXT; #define glGetNamedBufferParameterivEXT GLeeFuncPtr_glGetNamedBufferParameterivEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedBufferPointervEXT #define GLEE_H_DEFINED_glGetNamedBufferPointervEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDBUFFERPOINTERVEXTPROC) (GLuint buffer, GLenum pname, GLvoid* * params); GLEE_EXTERN GLEEPFNGLGETNAMEDBUFFERPOINTERVEXTPROC GLeeFuncPtr_glGetNamedBufferPointervEXT; #define glGetNamedBufferPointervEXT GLeeFuncPtr_glGetNamedBufferPointervEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedBufferSubDataEXT #define GLEE_H_DEFINED_glGetNamedBufferSubDataEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid * data); GLEE_EXTERN GLEEPFNGLGETNAMEDBUFFERSUBDATAEXTPROC GLeeFuncPtr_glGetNamedBufferSubDataEXT; #define glGetNamedBufferSubDataEXT GLeeFuncPtr_glGetNamedBufferSubDataEXT #endif #ifndef GLEE_H_DEFINED_glTextureBufferEXT #define GLEE_H_DEFINED_glTextureBufferEXT typedef void (APIENTRYP GLEEPFNGLTEXTUREBUFFEREXTPROC) (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer); GLEE_EXTERN GLEEPFNGLTEXTUREBUFFEREXTPROC GLeeFuncPtr_glTextureBufferEXT; #define glTextureBufferEXT GLeeFuncPtr_glTextureBufferEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexBufferEXT #define GLEE_H_DEFINED_glMultiTexBufferEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXBUFFEREXTPROC) (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer); GLEE_EXTERN GLEEPFNGLMULTITEXBUFFEREXTPROC GLeeFuncPtr_glMultiTexBufferEXT; #define glMultiTexBufferEXT GLeeFuncPtr_glMultiTexBufferEXT #endif #ifndef GLEE_H_DEFINED_glNamedRenderbufferStorageEXT #define GLEE_H_DEFINED_glNamedRenderbufferStorageEXT typedef void (APIENTRYP GLEEPFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLNAMEDRENDERBUFFERSTORAGEEXTPROC GLeeFuncPtr_glNamedRenderbufferStorageEXT; #define glNamedRenderbufferStorageEXT GLeeFuncPtr_glNamedRenderbufferStorageEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedRenderbufferParameterivEXT #define GLEE_H_DEFINED_glGetNamedRenderbufferParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC) (GLuint renderbuffer, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETNAMEDRENDERBUFFERPARAMETERIVEXTPROC GLeeFuncPtr_glGetNamedRenderbufferParameterivEXT; #define glGetNamedRenderbufferParameterivEXT GLeeFuncPtr_glGetNamedRenderbufferParameterivEXT #endif #ifndef GLEE_H_DEFINED_glCheckNamedFramebufferStatusEXT #define GLEE_H_DEFINED_glCheckNamedFramebufferStatusEXT typedef GLenum (APIENTRYP GLEEPFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC) (GLuint framebuffer, GLenum target); GLEE_EXTERN GLEEPFNGLCHECKNAMEDFRAMEBUFFERSTATUSEXTPROC GLeeFuncPtr_glCheckNamedFramebufferStatusEXT; #define glCheckNamedFramebufferStatusEXT GLeeFuncPtr_glCheckNamedFramebufferStatusEXT #endif #ifndef GLEE_H_DEFINED_glNamedFramebufferTexture1DEXT #define GLEE_H_DEFINED_glNamedFramebufferTexture1DEXT typedef void (APIENTRYP GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE1DEXTPROC GLeeFuncPtr_glNamedFramebufferTexture1DEXT; #define glNamedFramebufferTexture1DEXT GLeeFuncPtr_glNamedFramebufferTexture1DEXT #endif #ifndef GLEE_H_DEFINED_glNamedFramebufferTexture2DEXT #define GLEE_H_DEFINED_glNamedFramebufferTexture2DEXT typedef void (APIENTRYP GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE2DEXTPROC GLeeFuncPtr_glNamedFramebufferTexture2DEXT; #define glNamedFramebufferTexture2DEXT GLeeFuncPtr_glNamedFramebufferTexture2DEXT #endif #ifndef GLEE_H_DEFINED_glNamedFramebufferTexture3DEXT #define GLEE_H_DEFINED_glNamedFramebufferTexture3DEXT typedef void (APIENTRYP GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); GLEE_EXTERN GLEEPFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC GLeeFuncPtr_glNamedFramebufferTexture3DEXT; #define glNamedFramebufferTexture3DEXT GLeeFuncPtr_glNamedFramebufferTexture3DEXT #endif #ifndef GLEE_H_DEFINED_glNamedFramebufferRenderbufferEXT #define GLEE_H_DEFINED_glNamedFramebufferRenderbufferEXT typedef void (APIENTRYP GLEEPFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); GLEE_EXTERN GLEEPFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC GLeeFuncPtr_glNamedFramebufferRenderbufferEXT; #define glNamedFramebufferRenderbufferEXT GLeeFuncPtr_glNamedFramebufferRenderbufferEXT #endif #ifndef GLEE_H_DEFINED_glGetNamedFramebufferAttachmentParameterivEXT #define GLEE_H_DEFINED_glGetNamedFramebufferAttachmentParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC GLeeFuncPtr_glGetNamedFramebufferAttachmentParameterivEXT; #define glGetNamedFramebufferAttachmentParameterivEXT GLeeFuncPtr_glGetNamedFramebufferAttachmentParameterivEXT #endif #ifndef GLEE_H_DEFINED_glGenerateTextureMipmapEXT #define GLEE_H_DEFINED_glGenerateTextureMipmapEXT typedef void (APIENTRYP GLEEPFNGLGENERATETEXTUREMIPMAPEXTPROC) (GLuint texture, GLenum target); GLEE_EXTERN GLEEPFNGLGENERATETEXTUREMIPMAPEXTPROC GLeeFuncPtr_glGenerateTextureMipmapEXT; #define glGenerateTextureMipmapEXT GLeeFuncPtr_glGenerateTextureMipmapEXT #endif #ifndef GLEE_H_DEFINED_glGenerateMultiTexMipmapEXT #define GLEE_H_DEFINED_glGenerateMultiTexMipmapEXT typedef void (APIENTRYP GLEEPFNGLGENERATEMULTITEXMIPMAPEXTPROC) (GLenum texunit, GLenum target); GLEE_EXTERN GLEEPFNGLGENERATEMULTITEXMIPMAPEXTPROC GLeeFuncPtr_glGenerateMultiTexMipmapEXT; #define glGenerateMultiTexMipmapEXT GLeeFuncPtr_glGenerateMultiTexMipmapEXT #endif #ifndef GLEE_H_DEFINED_glFramebufferDrawBufferEXT #define GLEE_H_DEFINED_glFramebufferDrawBufferEXT typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERDRAWBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERDRAWBUFFEREXTPROC GLeeFuncPtr_glFramebufferDrawBufferEXT; #define glFramebufferDrawBufferEXT GLeeFuncPtr_glFramebufferDrawBufferEXT #endif #ifndef GLEE_H_DEFINED_glFramebufferDrawBuffersEXT #define GLEE_H_DEFINED_glFramebufferDrawBuffersEXT typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC) (GLuint framebuffer, GLsizei n, const GLenum * bufs); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERDRAWBUFFERSEXTPROC GLeeFuncPtr_glFramebufferDrawBuffersEXT; #define glFramebufferDrawBuffersEXT GLeeFuncPtr_glFramebufferDrawBuffersEXT #endif #ifndef GLEE_H_DEFINED_glFramebufferReadBufferEXT #define GLEE_H_DEFINED_glFramebufferReadBufferEXT typedef void (APIENTRYP GLEEPFNGLFRAMEBUFFERREADBUFFEREXTPROC) (GLuint framebuffer, GLenum mode); GLEE_EXTERN GLEEPFNGLFRAMEBUFFERREADBUFFEREXTPROC GLeeFuncPtr_glFramebufferReadBufferEXT; #define glFramebufferReadBufferEXT GLeeFuncPtr_glFramebufferReadBufferEXT #endif #ifndef GLEE_H_DEFINED_glGetFramebufferParameterivEXT #define GLEE_H_DEFINED_glGetFramebufferParameterivEXT typedef void (APIENTRYP GLEEPFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETFRAMEBUFFERPARAMETERIVEXTPROC GLeeFuncPtr_glGetFramebufferParameterivEXT; #define glGetFramebufferParameterivEXT GLeeFuncPtr_glGetFramebufferParameterivEXT #endif #ifndef GLEE_H_DEFINED_glNamedRenderbufferStorageMultisampleEXT #define GLEE_H_DEFINED_glNamedRenderbufferStorageMultisampleEXT typedef void (APIENTRYP GLEEPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC GLeeFuncPtr_glNamedRenderbufferStorageMultisampleEXT; #define glNamedRenderbufferStorageMultisampleEXT GLeeFuncPtr_glNamedRenderbufferStorageMultisampleEXT #endif #ifndef GLEE_H_DEFINED_glNamedRenderbufferStorageMultisampleCoverageEXT #define GLEE_H_DEFINED_glNamedRenderbufferStorageMultisampleCoverageEXT typedef void (APIENTRYP GLEEPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC) (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); GLEE_EXTERN GLEEPFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLECOVERAGEEXTPROC GLeeFuncPtr_glNamedRenderbufferStorageMultisampleCoverageEXT; #define glNamedRenderbufferStorageMultisampleCoverageEXT GLeeFuncPtr_glNamedRenderbufferStorageMultisampleCoverageEXT #endif #ifndef GLEE_H_DEFINED_glNamedFramebufferTextureEXT #define GLEE_H_DEFINED_glNamedFramebufferTextureEXT typedef void (APIENTRYP GLEEPFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLNAMEDFRAMEBUFFERTEXTUREEXTPROC GLeeFuncPtr_glNamedFramebufferTextureEXT; #define glNamedFramebufferTextureEXT GLeeFuncPtr_glNamedFramebufferTextureEXT #endif #ifndef GLEE_H_DEFINED_glNamedFramebufferTextureLayerEXT #define GLEE_H_DEFINED_glNamedFramebufferTextureLayerEXT typedef void (APIENTRYP GLEEPFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer); GLEE_EXTERN GLEEPFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC GLeeFuncPtr_glNamedFramebufferTextureLayerEXT; #define glNamedFramebufferTextureLayerEXT GLeeFuncPtr_glNamedFramebufferTextureLayerEXT #endif #ifndef GLEE_H_DEFINED_glNamedFramebufferTextureFaceEXT #define GLEE_H_DEFINED_glNamedFramebufferTextureFaceEXT typedef void (APIENTRYP GLEEPFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face); GLEE_EXTERN GLEEPFNGLNAMEDFRAMEBUFFERTEXTUREFACEEXTPROC GLeeFuncPtr_glNamedFramebufferTextureFaceEXT; #define glNamedFramebufferTextureFaceEXT GLeeFuncPtr_glNamedFramebufferTextureFaceEXT #endif #ifndef GLEE_H_DEFINED_glTextureRenderbufferEXT #define GLEE_H_DEFINED_glTextureRenderbufferEXT typedef void (APIENTRYP GLEEPFNGLTEXTURERENDERBUFFEREXTPROC) (GLuint texture, GLenum target, GLuint renderbuffer); GLEE_EXTERN GLEEPFNGLTEXTURERENDERBUFFEREXTPROC GLeeFuncPtr_glTextureRenderbufferEXT; #define glTextureRenderbufferEXT GLeeFuncPtr_glTextureRenderbufferEXT #endif #ifndef GLEE_H_DEFINED_glMultiTexRenderbufferEXT #define GLEE_H_DEFINED_glMultiTexRenderbufferEXT typedef void (APIENTRYP GLEEPFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenum target, GLuint renderbuffer); GLEE_EXTERN GLEEPFNGLMULTITEXRENDERBUFFEREXTPROC GLeeFuncPtr_glMultiTexRenderbufferEXT; #define glMultiTexRenderbufferEXT GLeeFuncPtr_glMultiTexRenderbufferEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform1dEXT #define GLEE_H_DEFINED_glProgramUniform1dEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1DEXTPROC GLeeFuncPtr_glProgramUniform1dEXT; #define glProgramUniform1dEXT GLeeFuncPtr_glProgramUniform1dEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform2dEXT #define GLEE_H_DEFINED_glProgramUniform2dEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2DEXTPROC GLeeFuncPtr_glProgramUniform2dEXT; #define glProgramUniform2dEXT GLeeFuncPtr_glProgramUniform2dEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform3dEXT #define GLEE_H_DEFINED_glProgramUniform3dEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3DEXTPROC GLeeFuncPtr_glProgramUniform3dEXT; #define glProgramUniform3dEXT GLeeFuncPtr_glProgramUniform3dEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform4dEXT #define GLEE_H_DEFINED_glProgramUniform4dEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4DEXTPROC GLeeFuncPtr_glProgramUniform4dEXT; #define glProgramUniform4dEXT GLeeFuncPtr_glProgramUniform4dEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform1dvEXT #define GLEE_H_DEFINED_glProgramUniform1dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1DVEXTPROC GLeeFuncPtr_glProgramUniform1dvEXT; #define glProgramUniform1dvEXT GLeeFuncPtr_glProgramUniform1dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform2dvEXT #define GLEE_H_DEFINED_glProgramUniform2dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2DVEXTPROC GLeeFuncPtr_glProgramUniform2dvEXT; #define glProgramUniform2dvEXT GLeeFuncPtr_glProgramUniform2dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform3dvEXT #define GLEE_H_DEFINED_glProgramUniform3dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3DVEXTPROC GLeeFuncPtr_glProgramUniform3dvEXT; #define glProgramUniform3dvEXT GLeeFuncPtr_glProgramUniform3dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniform4dvEXT #define GLEE_H_DEFINED_glProgramUniform4dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4DVEXTPROC GLeeFuncPtr_glProgramUniform4dvEXT; #define glProgramUniform4dvEXT GLeeFuncPtr_glProgramUniform4dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2dvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix2dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2dvEXT; #define glProgramUniformMatrix2dvEXT GLeeFuncPtr_glProgramUniformMatrix2dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3dvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix3dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3dvEXT; #define glProgramUniformMatrix3dvEXT GLeeFuncPtr_glProgramUniformMatrix3dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4dvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix4dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4dvEXT; #define glProgramUniformMatrix4dvEXT GLeeFuncPtr_glProgramUniformMatrix4dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2x3dvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix2x3dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2x3dvEXT; #define glProgramUniformMatrix2x3dvEXT GLeeFuncPtr_glProgramUniformMatrix2x3dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix2x4dvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix2x4dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix2x4dvEXT; #define glProgramUniformMatrix2x4dvEXT GLeeFuncPtr_glProgramUniformMatrix2x4dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3x2dvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix3x2dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3x2dvEXT; #define glProgramUniformMatrix3x2dvEXT GLeeFuncPtr_glProgramUniformMatrix3x2dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix3x4dvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix3x4dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix3x4dvEXT; #define glProgramUniformMatrix3x4dvEXT GLeeFuncPtr_glProgramUniformMatrix3x4dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4x2dvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix4x2dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4x2dvEXT; #define glProgramUniformMatrix4x2dvEXT GLeeFuncPtr_glProgramUniformMatrix4x2dvEXT #endif #ifndef GLEE_H_DEFINED_glProgramUniformMatrix4x3dvEXT #define GLEE_H_DEFINED_glProgramUniformMatrix4x3dvEXT typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC GLeeFuncPtr_glProgramUniformMatrix4x3dvEXT; #define glProgramUniformMatrix4x3dvEXT GLeeFuncPtr_glProgramUniformMatrix4x3dvEXT #endif #endif /* GL_EXT_vertex_array_bgra */ #ifndef GL_EXT_vertex_array_bgra #define GL_EXT_vertex_array_bgra 1 #define __GLEE_GL_EXT_vertex_array_bgra 1 /* Constants */ #endif /* GL_EXT_texture_swizzle */ #ifndef GL_EXT_texture_swizzle #define GL_EXT_texture_swizzle 1 #define __GLEE_GL_EXT_texture_swizzle 1 /* Constants */ #define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42 #define GL_TEXTURE_SWIZZLE_G_EXT 0x8E43 #define GL_TEXTURE_SWIZZLE_B_EXT 0x8E44 #define GL_TEXTURE_SWIZZLE_A_EXT 0x8E45 #define GL_TEXTURE_SWIZZLE_RGBA_EXT 0x8E46 #endif /* GL_NV_explicit_multisample */ #ifndef GL_NV_explicit_multisample #define GL_NV_explicit_multisample 1 #define __GLEE_GL_NV_explicit_multisample 1 /* Constants */ #define GL_SAMPLE_POSITION_NV 0x8E50 #define GL_SAMPLE_MASK_NV 0x8E51 #define GL_SAMPLE_MASK_VALUE_NV 0x8E52 #define GL_TEXTURE_BINDING_RENDERBUFFER_NV 0x8E53 #define GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV 0x8E54 #define GL_TEXTURE_RENDERBUFFER_NV 0x8E55 #define GL_SAMPLER_RENDERBUFFER_NV 0x8E56 #define GL_INT_SAMPLER_RENDERBUFFER_NV 0x8E57 #define GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV 0x8E58 #define GL_MAX_SAMPLE_MASK_WORDS_NV 0x8E59 #ifndef GLEE_H_DEFINED_glGetMultisamplefvNV #define GLEE_H_DEFINED_glGetMultisamplefvNV typedef void (APIENTRYP GLEEPFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat * val); GLEE_EXTERN GLEEPFNGLGETMULTISAMPLEFVNVPROC GLeeFuncPtr_glGetMultisamplefvNV; #define glGetMultisamplefvNV GLeeFuncPtr_glGetMultisamplefvNV #endif #ifndef GLEE_H_DEFINED_glSampleMaskIndexedNV #define GLEE_H_DEFINED_glSampleMaskIndexedNV typedef void (APIENTRYP GLEEPFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask); GLEE_EXTERN GLEEPFNGLSAMPLEMASKINDEXEDNVPROC GLeeFuncPtr_glSampleMaskIndexedNV; #define glSampleMaskIndexedNV GLeeFuncPtr_glSampleMaskIndexedNV #endif #ifndef GLEE_H_DEFINED_glTexRenderbufferNV #define GLEE_H_DEFINED_glTexRenderbufferNV typedef void (APIENTRYP GLEEPFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint renderbuffer); GLEE_EXTERN GLEEPFNGLTEXRENDERBUFFERNVPROC GLeeFuncPtr_glTexRenderbufferNV; #define glTexRenderbufferNV GLeeFuncPtr_glTexRenderbufferNV #endif #endif /* GL_NV_transform_feedback2 */ #ifndef GL_NV_transform_feedback2 #define GL_NV_transform_feedback2 1 #define __GLEE_GL_NV_transform_feedback2 1 /* Constants */ #define GL_TRANSFORM_FEEDBACK_NV 0x8E22 #define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV 0x8E23 #define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV 0x8E24 #define GL_TRANSFORM_FEEDBACK_BINDING_NV 0x8E25 #ifndef GLEE_H_DEFINED_glBindTransformFeedbackNV #define GLEE_H_DEFINED_glBindTransformFeedbackNV typedef void (APIENTRYP GLEEPFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id); GLEE_EXTERN GLEEPFNGLBINDTRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glBindTransformFeedbackNV; #define glBindTransformFeedbackNV GLeeFuncPtr_glBindTransformFeedbackNV #endif #ifndef GLEE_H_DEFINED_glDeleteTransformFeedbacksNV #define GLEE_H_DEFINED_glDeleteTransformFeedbacksNV typedef void (APIENTRYP GLEEPFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint * ids); GLEE_EXTERN GLEEPFNGLDELETETRANSFORMFEEDBACKSNVPROC GLeeFuncPtr_glDeleteTransformFeedbacksNV; #define glDeleteTransformFeedbacksNV GLeeFuncPtr_glDeleteTransformFeedbacksNV #endif #ifndef GLEE_H_DEFINED_glGenTransformFeedbacksNV #define GLEE_H_DEFINED_glGenTransformFeedbacksNV typedef void (APIENTRYP GLEEPFNGLGENTRANSFORMFEEDBACKSNVPROC) (GLsizei n, GLuint * ids); GLEE_EXTERN GLEEPFNGLGENTRANSFORMFEEDBACKSNVPROC GLeeFuncPtr_glGenTransformFeedbacksNV; #define glGenTransformFeedbacksNV GLeeFuncPtr_glGenTransformFeedbacksNV #endif #ifndef GLEE_H_DEFINED_glIsTransformFeedbackNV #define GLEE_H_DEFINED_glIsTransformFeedbackNV typedef GLboolean (APIENTRYP GLEEPFNGLISTRANSFORMFEEDBACKNVPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLISTRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glIsTransformFeedbackNV; #define glIsTransformFeedbackNV GLeeFuncPtr_glIsTransformFeedbackNV #endif #ifndef GLEE_H_DEFINED_glPauseTransformFeedbackNV #define GLEE_H_DEFINED_glPauseTransformFeedbackNV typedef void (APIENTRYP GLEEPFNGLPAUSETRANSFORMFEEDBACKNVPROC) (); GLEE_EXTERN GLEEPFNGLPAUSETRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glPauseTransformFeedbackNV; #define glPauseTransformFeedbackNV GLeeFuncPtr_glPauseTransformFeedbackNV #endif #ifndef GLEE_H_DEFINED_glResumeTransformFeedbackNV #define GLEE_H_DEFINED_glResumeTransformFeedbackNV typedef void (APIENTRYP GLEEPFNGLRESUMETRANSFORMFEEDBACKNVPROC) (); GLEE_EXTERN GLEEPFNGLRESUMETRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glResumeTransformFeedbackNV; #define glResumeTransformFeedbackNV GLeeFuncPtr_glResumeTransformFeedbackNV #endif #ifndef GLEE_H_DEFINED_glDrawTransformFeedbackNV #define GLEE_H_DEFINED_glDrawTransformFeedbackNV typedef void (APIENTRYP GLEEPFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint id); GLEE_EXTERN GLEEPFNGLDRAWTRANSFORMFEEDBACKNVPROC GLeeFuncPtr_glDrawTransformFeedbackNV; #define glDrawTransformFeedbackNV GLeeFuncPtr_glDrawTransformFeedbackNV #endif #endif /* GL_ATI_meminfo */ #ifndef GL_ATI_meminfo #define GL_ATI_meminfo 1 #define __GLEE_GL_ATI_meminfo 1 /* Constants */ #define GL_VBO_FREE_MEMORY_ATI 0x87FB #define GL_TEXTURE_FREE_MEMORY_ATI 0x87FC #define GL_RENDERBUFFER_FREE_MEMORY_ATI 0x87FD #endif /* GL_AMD_performance_monitor */ #ifndef GL_AMD_performance_monitor #define GL_AMD_performance_monitor 1 #define __GLEE_GL_AMD_performance_monitor 1 /* Constants */ #define GL_COUNTER_TYPE_AMD 0x8BC0 #define GL_COUNTER_RANGE_AMD 0x8BC1 #define GL_UNSIGNED_INT64_AMD 0x8BC2 #define GL_PERCENTAGE_AMD 0x8BC3 #define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 #define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 #define GL_PERFMON_RESULT_AMD 0x8BC6 #ifndef GLEE_H_DEFINED_glGetPerfMonitorGroupsAMD #define GLEE_H_DEFINED_glGetPerfMonitorGroupsAMD typedef void (APIENTRYP GLEEPFNGLGETPERFMONITORGROUPSAMDPROC) (GLint * numGroups, GLsizei groupsSize, GLuint * groups); GLEE_EXTERN GLEEPFNGLGETPERFMONITORGROUPSAMDPROC GLeeFuncPtr_glGetPerfMonitorGroupsAMD; #define glGetPerfMonitorGroupsAMD GLeeFuncPtr_glGetPerfMonitorGroupsAMD #endif #ifndef GLEE_H_DEFINED_glGetPerfMonitorCountersAMD #define GLEE_H_DEFINED_glGetPerfMonitorCountersAMD typedef void (APIENTRYP GLEEPFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint * numCounters, GLint * maxActiveCounters, GLsizei counterSize, GLuint * counters); GLEE_EXTERN GLEEPFNGLGETPERFMONITORCOUNTERSAMDPROC GLeeFuncPtr_glGetPerfMonitorCountersAMD; #define glGetPerfMonitorCountersAMD GLeeFuncPtr_glGetPerfMonitorCountersAMD #endif #ifndef GLEE_H_DEFINED_glGetPerfMonitorGroupStringAMD #define GLEE_H_DEFINED_glGetPerfMonitorGroupStringAMD typedef void (APIENTRYP GLEEPFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei * length, GLchar * groupString); GLEE_EXTERN GLEEPFNGLGETPERFMONITORGROUPSTRINGAMDPROC GLeeFuncPtr_glGetPerfMonitorGroupStringAMD; #define glGetPerfMonitorGroupStringAMD GLeeFuncPtr_glGetPerfMonitorGroupStringAMD #endif #ifndef GLEE_H_DEFINED_glGetPerfMonitorCounterStringAMD #define GLEE_H_DEFINED_glGetPerfMonitorCounterStringAMD typedef void (APIENTRYP GLEEPFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei * length, GLchar * counterString); GLEE_EXTERN GLEEPFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC GLeeFuncPtr_glGetPerfMonitorCounterStringAMD; #define glGetPerfMonitorCounterStringAMD GLeeFuncPtr_glGetPerfMonitorCounterStringAMD #endif #ifndef GLEE_H_DEFINED_glGetPerfMonitorCounterInfoAMD #define GLEE_H_DEFINED_glGetPerfMonitorCounterInfoAMD typedef void (APIENTRYP GLEEPFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid * data); GLEE_EXTERN GLEEPFNGLGETPERFMONITORCOUNTERINFOAMDPROC GLeeFuncPtr_glGetPerfMonitorCounterInfoAMD; #define glGetPerfMonitorCounterInfoAMD GLeeFuncPtr_glGetPerfMonitorCounterInfoAMD #endif #ifndef GLEE_H_DEFINED_glGenPerfMonitorsAMD #define GLEE_H_DEFINED_glGenPerfMonitorsAMD typedef void (APIENTRYP GLEEPFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint * monitors); GLEE_EXTERN GLEEPFNGLGENPERFMONITORSAMDPROC GLeeFuncPtr_glGenPerfMonitorsAMD; #define glGenPerfMonitorsAMD GLeeFuncPtr_glGenPerfMonitorsAMD #endif #ifndef GLEE_H_DEFINED_glDeletePerfMonitorsAMD #define GLEE_H_DEFINED_glDeletePerfMonitorsAMD typedef void (APIENTRYP GLEEPFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint * monitors); GLEE_EXTERN GLEEPFNGLDELETEPERFMONITORSAMDPROC GLeeFuncPtr_glDeletePerfMonitorsAMD; #define glDeletePerfMonitorsAMD GLeeFuncPtr_glDeletePerfMonitorsAMD #endif #ifndef GLEE_H_DEFINED_glSelectPerfMonitorCountersAMD #define GLEE_H_DEFINED_glSelectPerfMonitorCountersAMD typedef void (APIENTRYP GLEEPFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint * counterList); GLEE_EXTERN GLEEPFNGLSELECTPERFMONITORCOUNTERSAMDPROC GLeeFuncPtr_glSelectPerfMonitorCountersAMD; #define glSelectPerfMonitorCountersAMD GLeeFuncPtr_glSelectPerfMonitorCountersAMD #endif #ifndef GLEE_H_DEFINED_glBeginPerfMonitorAMD #define GLEE_H_DEFINED_glBeginPerfMonitorAMD typedef void (APIENTRYP GLEEPFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); GLEE_EXTERN GLEEPFNGLBEGINPERFMONITORAMDPROC GLeeFuncPtr_glBeginPerfMonitorAMD; #define glBeginPerfMonitorAMD GLeeFuncPtr_glBeginPerfMonitorAMD #endif #ifndef GLEE_H_DEFINED_glEndPerfMonitorAMD #define GLEE_H_DEFINED_glEndPerfMonitorAMD typedef void (APIENTRYP GLEEPFNGLENDPERFMONITORAMDPROC) (GLuint monitor); GLEE_EXTERN GLEEPFNGLENDPERFMONITORAMDPROC GLeeFuncPtr_glEndPerfMonitorAMD; #define glEndPerfMonitorAMD GLeeFuncPtr_glEndPerfMonitorAMD #endif #ifndef GLEE_H_DEFINED_glGetPerfMonitorCounterDataAMD #define GLEE_H_DEFINED_glGetPerfMonitorCounterDataAMD typedef void (APIENTRYP GLEEPFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint * data, GLint * bytesWritten); GLEE_EXTERN GLEEPFNGLGETPERFMONITORCOUNTERDATAAMDPROC GLeeFuncPtr_glGetPerfMonitorCounterDataAMD; #define glGetPerfMonitorCounterDataAMD GLeeFuncPtr_glGetPerfMonitorCounterDataAMD #endif #endif /* GL_AMD_texture_texture4 */ #ifndef GL_AMD_texture_texture4 #define GL_AMD_texture_texture4 1 #define __GLEE_GL_AMD_texture_texture4 1 /* Constants */ #endif /* GL_AMD_vertex_shader_tesselator */ #ifndef GL_AMD_vertex_shader_tesselator #define GL_AMD_vertex_shader_tesselator 1 #define __GLEE_GL_AMD_vertex_shader_tesselator 1 /* Constants */ #define GL_SAMPLER_BUFFER_AMD 0x9001 #define GL_INT_SAMPLER_BUFFER_AMD 0x9002 #define GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD 0x9003 #define GL_TESSELLATION_MODE_AMD 0x9004 #define GL_TESSELLATION_FACTOR_AMD 0x9005 #define GL_DISCRETE_AMD 0x9006 #define GL_CONTINUOUS_AMD 0x9007 #ifndef GLEE_H_DEFINED_glTessellationFactorAMD #define GLEE_H_DEFINED_glTessellationFactorAMD typedef void (APIENTRYP GLEEPFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor); GLEE_EXTERN GLEEPFNGLTESSELLATIONFACTORAMDPROC GLeeFuncPtr_glTessellationFactorAMD; #define glTessellationFactorAMD GLeeFuncPtr_glTessellationFactorAMD #endif #ifndef GLEE_H_DEFINED_glTessellationModeAMD #define GLEE_H_DEFINED_glTessellationModeAMD typedef void (APIENTRYP GLEEPFNGLTESSELLATIONMODEAMDPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLTESSELLATIONMODEAMDPROC GLeeFuncPtr_glTessellationModeAMD; #define glTessellationModeAMD GLeeFuncPtr_glTessellationModeAMD #endif #endif /* GL_EXT_provoking_vertex */ #ifndef GL_EXT_provoking_vertex #define GL_EXT_provoking_vertex 1 #define __GLEE_GL_EXT_provoking_vertex 1 /* Constants */ #define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT 0x8E4C #define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D #define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E #define GL_PROVOKING_VERTEX_EXT 0x8E4F #ifndef GLEE_H_DEFINED_glProvokingVertexEXT #define GLEE_H_DEFINED_glProvokingVertexEXT typedef void (APIENTRYP GLEEPFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode); GLEE_EXTERN GLEEPFNGLPROVOKINGVERTEXEXTPROC GLeeFuncPtr_glProvokingVertexEXT; #define glProvokingVertexEXT GLeeFuncPtr_glProvokingVertexEXT #endif #endif /* GL_EXT_texture_snorm */ #ifndef GL_EXT_texture_snorm #define GL_EXT_texture_snorm 1 #define __GLEE_GL_EXT_texture_snorm 1 /* Constants */ #define GL_ALPHA_SNORM 0x9010 #define GL_LUMINANCE_SNORM 0x9011 #define GL_LUMINANCE_ALPHA_SNORM 0x9012 #define GL_INTENSITY_SNORM 0x9013 #define GL_ALPHA8_SNORM 0x9014 #define GL_LUMINANCE8_SNORM 0x9015 #define GL_LUMINANCE8_ALPHA8_SNORM 0x9016 #define GL_INTENSITY8_SNORM 0x9017 #define GL_ALPHA16_SNORM 0x9018 #define GL_LUMINANCE16_SNORM 0x9019 #define GL_LUMINANCE16_ALPHA16_SNORM 0x901A #define GL_INTENSITY16_SNORM 0x901B #endif /* GL_AMD_draw_buffers_blend */ #ifndef GL_AMD_draw_buffers_blend #define GL_AMD_draw_buffers_blend 1 #define __GLEE_GL_AMD_draw_buffers_blend 1 /* Constants */ #ifndef GLEE_H_DEFINED_glBlendFuncIndexedAMD #define GLEE_H_DEFINED_glBlendFuncIndexedAMD typedef void (APIENTRYP GLEEPFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst); GLEE_EXTERN GLEEPFNGLBLENDFUNCINDEXEDAMDPROC GLeeFuncPtr_glBlendFuncIndexedAMD; #define glBlendFuncIndexedAMD GLeeFuncPtr_glBlendFuncIndexedAMD #endif #ifndef GLEE_H_DEFINED_glBlendFuncSeparateIndexedAMD #define GLEE_H_DEFINED_glBlendFuncSeparateIndexedAMD typedef void (APIENTRYP GLEEPFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); GLEE_EXTERN GLEEPFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC GLeeFuncPtr_glBlendFuncSeparateIndexedAMD; #define glBlendFuncSeparateIndexedAMD GLeeFuncPtr_glBlendFuncSeparateIndexedAMD #endif #ifndef GLEE_H_DEFINED_glBlendEquationIndexedAMD #define GLEE_H_DEFINED_glBlendEquationIndexedAMD typedef void (APIENTRYP GLEEPFNGLBLENDEQUATIONINDEXEDAMDPROC) (GLuint buf, GLenum mode); GLEE_EXTERN GLEEPFNGLBLENDEQUATIONINDEXEDAMDPROC GLeeFuncPtr_glBlendEquationIndexedAMD; #define glBlendEquationIndexedAMD GLeeFuncPtr_glBlendEquationIndexedAMD #endif #ifndef GLEE_H_DEFINED_glBlendEquationSeparateIndexedAMD #define GLEE_H_DEFINED_glBlendEquationSeparateIndexedAMD typedef void (APIENTRYP GLEEPFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); GLEE_EXTERN GLEEPFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC GLeeFuncPtr_glBlendEquationSeparateIndexedAMD; #define glBlendEquationSeparateIndexedAMD GLeeFuncPtr_glBlendEquationSeparateIndexedAMD #endif #endif /* GL_APPLE_texture_range */ #ifndef GL_APPLE_texture_range #define GL_APPLE_texture_range 1 #define __GLEE_GL_APPLE_texture_range 1 /* Constants */ #define GL_TEXTURE_RANGE_LENGTH_APPLE 0x85B7 #define GL_TEXTURE_RANGE_POINTER_APPLE 0x85B8 #define GL_TEXTURE_STORAGE_HINT_APPLE 0x85BC #define GL_STORAGE_PRIVATE_APPLE 0x85BD #ifndef GLEE_H_DEFINED_glTextureRangeAPPLE #define GLEE_H_DEFINED_glTextureRangeAPPLE typedef void (APIENTRYP GLEEPFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLTEXTURERANGEAPPLEPROC GLeeFuncPtr_glTextureRangeAPPLE; #define glTextureRangeAPPLE GLeeFuncPtr_glTextureRangeAPPLE #endif #ifndef GLEE_H_DEFINED_glGetTexParameterPointervAPPLE #define GLEE_H_DEFINED_glGetTexParameterPointervAPPLE typedef void (APIENTRYP GLEEPFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid* * params); GLEE_EXTERN GLEEPFNGLGETTEXPARAMETERPOINTERVAPPLEPROC GLeeFuncPtr_glGetTexParameterPointervAPPLE; #define glGetTexParameterPointervAPPLE GLeeFuncPtr_glGetTexParameterPointervAPPLE #endif #endif /* GL_APPLE_float_pixels */ #ifndef GL_APPLE_float_pixels #define GL_APPLE_float_pixels 1 #define __GLEE_GL_APPLE_float_pixels 1 /* Constants */ #define GL_HALF_APPLE 0x140B #define GL_RGBA_FLOAT32_APPLE 0x8814 #define GL_RGB_FLOAT32_APPLE 0x8815 #define GL_ALPHA_FLOAT32_APPLE 0x8816 #define GL_INTENSITY_FLOAT32_APPLE 0x8817 #define GL_LUMINANCE_FLOAT32_APPLE 0x8818 #define GL_LUMINANCE_ALPHA_FLOAT32_APPLE 0x8819 #define GL_RGBA_FLOAT16_APPLE 0x881A #define GL_RGB_FLOAT16_APPLE 0x881B #define GL_ALPHA_FLOAT16_APPLE 0x881C #define GL_INTENSITY_FLOAT16_APPLE 0x881D #define GL_LUMINANCE_FLOAT16_APPLE 0x881E #define GL_LUMINANCE_ALPHA_FLOAT16_APPLE 0x881F #define GL_COLOR_FLOAT_APPLE 0x8A0F #endif /* GL_APPLE_vertex_program_evaluators */ #ifndef GL_APPLE_vertex_program_evaluators #define GL_APPLE_vertex_program_evaluators 1 #define __GLEE_GL_APPLE_vertex_program_evaluators 1 /* Constants */ #define GL_VERTEX_ATTRIB_MAP1_APPLE 0x8A00 #define GL_VERTEX_ATTRIB_MAP2_APPLE 0x8A01 #define GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE 0x8A02 #define GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE 0x8A03 #define GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE 0x8A04 #define GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE 0x8A05 #define GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE 0x8A06 #define GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE 0x8A07 #define GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE 0x8A08 #define GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE 0x8A09 #ifndef GLEE_H_DEFINED_glEnableVertexAttribAPPLE #define GLEE_H_DEFINED_glEnableVertexAttribAPPLE typedef void (APIENTRYP GLEEPFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); GLEE_EXTERN GLEEPFNGLENABLEVERTEXATTRIBAPPLEPROC GLeeFuncPtr_glEnableVertexAttribAPPLE; #define glEnableVertexAttribAPPLE GLeeFuncPtr_glEnableVertexAttribAPPLE #endif #ifndef GLEE_H_DEFINED_glDisableVertexAttribAPPLE #define GLEE_H_DEFINED_glDisableVertexAttribAPPLE typedef void (APIENTRYP GLEEPFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname); GLEE_EXTERN GLEEPFNGLDISABLEVERTEXATTRIBAPPLEPROC GLeeFuncPtr_glDisableVertexAttribAPPLE; #define glDisableVertexAttribAPPLE GLeeFuncPtr_glDisableVertexAttribAPPLE #endif #ifndef GLEE_H_DEFINED_glIsVertexAttribEnabledAPPLE #define GLEE_H_DEFINED_glIsVertexAttribEnabledAPPLE typedef GLboolean (APIENTRYP GLEEPFNGLISVERTEXATTRIBENABLEDAPPLEPROC) (GLuint index, GLenum pname); GLEE_EXTERN GLEEPFNGLISVERTEXATTRIBENABLEDAPPLEPROC GLeeFuncPtr_glIsVertexAttribEnabledAPPLE; #define glIsVertexAttribEnabledAPPLE GLeeFuncPtr_glIsVertexAttribEnabledAPPLE #endif #ifndef GLEE_H_DEFINED_glMapVertexAttrib1dAPPLE #define GLEE_H_DEFINED_glMapVertexAttrib1dAPPLE typedef void (APIENTRYP GLEEPFNGLMAPVERTEXATTRIB1DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points); GLEE_EXTERN GLEEPFNGLMAPVERTEXATTRIB1DAPPLEPROC GLeeFuncPtr_glMapVertexAttrib1dAPPLE; #define glMapVertexAttrib1dAPPLE GLeeFuncPtr_glMapVertexAttrib1dAPPLE #endif #ifndef GLEE_H_DEFINED_glMapVertexAttrib1fAPPLE #define GLEE_H_DEFINED_glMapVertexAttrib1fAPPLE typedef void (APIENTRYP GLEEPFNGLMAPVERTEXATTRIB1FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points); GLEE_EXTERN GLEEPFNGLMAPVERTEXATTRIB1FAPPLEPROC GLeeFuncPtr_glMapVertexAttrib1fAPPLE; #define glMapVertexAttrib1fAPPLE GLeeFuncPtr_glMapVertexAttrib1fAPPLE #endif #ifndef GLEE_H_DEFINED_glMapVertexAttrib2dAPPLE #define GLEE_H_DEFINED_glMapVertexAttrib2dAPPLE typedef void (APIENTRYP GLEEPFNGLMAPVERTEXATTRIB2DAPPLEPROC) (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points); GLEE_EXTERN GLEEPFNGLMAPVERTEXATTRIB2DAPPLEPROC GLeeFuncPtr_glMapVertexAttrib2dAPPLE; #define glMapVertexAttrib2dAPPLE GLeeFuncPtr_glMapVertexAttrib2dAPPLE #endif #ifndef GLEE_H_DEFINED_glMapVertexAttrib2fAPPLE #define GLEE_H_DEFINED_glMapVertexAttrib2fAPPLE typedef void (APIENTRYP GLEEPFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points); GLEE_EXTERN GLEEPFNGLMAPVERTEXATTRIB2FAPPLEPROC GLeeFuncPtr_glMapVertexAttrib2fAPPLE; #define glMapVertexAttrib2fAPPLE GLeeFuncPtr_glMapVertexAttrib2fAPPLE #endif #endif /* GL_APPLE_aux_depth_stencil */ #ifndef GL_APPLE_aux_depth_stencil #define GL_APPLE_aux_depth_stencil 1 #define __GLEE_GL_APPLE_aux_depth_stencil 1 /* Constants */ #define GL_AUX_DEPTH_STENCIL_APPLE 0x8A14 #endif /* GL_APPLE_object_purgeable */ #ifndef GL_APPLE_object_purgeable #define GL_APPLE_object_purgeable 1 #define __GLEE_GL_APPLE_object_purgeable 1 /* Constants */ #define GL_BUFFER_OBJECT_APPLE 0x85B3 #define GL_RELEASED_APPLE 0x8A19 #define GL_VOLATILE_APPLE 0x8A1A #define GL_RETAINED_APPLE 0x8A1B #define GL_UNDEFINED_APPLE 0x8A1C #define GL_PURGEABLE_APPLE 0x8A1D #ifndef GLEE_H_DEFINED_glObjectPurgeableAPPLE #define GLEE_H_DEFINED_glObjectPurgeableAPPLE typedef GLenum (APIENTRYP GLEEPFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); GLEE_EXTERN GLEEPFNGLOBJECTPURGEABLEAPPLEPROC GLeeFuncPtr_glObjectPurgeableAPPLE; #define glObjectPurgeableAPPLE GLeeFuncPtr_glObjectPurgeableAPPLE #endif #ifndef GLEE_H_DEFINED_glObjectUnpurgeableAPPLE #define GLEE_H_DEFINED_glObjectUnpurgeableAPPLE typedef GLenum (APIENTRYP GLEEPFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option); GLEE_EXTERN GLEEPFNGLOBJECTUNPURGEABLEAPPLEPROC GLeeFuncPtr_glObjectUnpurgeableAPPLE; #define glObjectUnpurgeableAPPLE GLeeFuncPtr_glObjectUnpurgeableAPPLE #endif #ifndef GLEE_H_DEFINED_glGetObjectParameterivAPPLE #define GLEE_H_DEFINED_glGetObjectParameterivAPPLE typedef void (APIENTRYP GLEEPFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType, GLuint name, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETOBJECTPARAMETERIVAPPLEPROC GLeeFuncPtr_glGetObjectParameterivAPPLE; #define glGetObjectParameterivAPPLE GLeeFuncPtr_glGetObjectParameterivAPPLE #endif #endif /* GL_APPLE_row_bytes */ #ifndef GL_APPLE_row_bytes #define GL_APPLE_row_bytes 1 #define __GLEE_GL_APPLE_row_bytes 1 /* Constants */ #define GL_PACK_ROW_BYTES_APPLE 0x8A15 #define GL_UNPACK_ROW_BYTES_APPLE 0x8A16 #endif /* GL_APPLE_rgb_422 */ #ifndef GL_APPLE_rgb_422 #define GL_APPLE_rgb_422 1 #define __GLEE_GL_APPLE_rgb_422 1 /* Constants */ #define GL_RGB_422_APPLE 0x8A1F #endif /* GL_NV_video_capture */ #ifndef GL_NV_video_capture #define GL_NV_video_capture 1 #define __GLEE_GL_NV_video_capture 1 /* Constants */ #define GL_VIDEO_BUFFER_NV 0x9020 #define GL_VIDEO_BUFFER_BINDING_NV 0x9021 #define GL_FIELD_UPPER_NV 0x9022 #define GL_FIELD_LOWER_NV 0x9023 #define GL_NUM_VIDEO_CAPTURE_STREAMS_NV 0x9024 #define GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV 0x9025 #define GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV 0x9026 #define GL_LAST_VIDEO_CAPTURE_STATUS_NV 0x9027 #define GL_VIDEO_BUFFER_PITCH_NV 0x9028 #define GL_VIDEO_COLOR_CONVERSION_MATRIX_NV 0x9029 #define GL_VIDEO_COLOR_CONVERSION_MAX_NV 0x902A #define GL_VIDEO_COLOR_CONVERSION_MIN_NV 0x902B #define GL_VIDEO_COLOR_CONVERSION_OFFSET_NV 0x902C #define GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV 0x902D #define GL_PARTIAL_SUCCESS_NV 0x902E #define GL_SUCCESS_NV 0x902F #define GL_FAILURE_NV 0x9030 #define GL_YCBYCR8_422_NV 0x9031 #define GL_YCBAYCR8A_4224_NV 0x9032 #define GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV 0x9033 #define GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV 0x9034 #define GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV 0x9035 #define GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV 0x9036 #define GL_Z4Y12Z4CB12Z4CR12_444_NV 0x9037 #define GL_VIDEO_CAPTURE_FRAME_WIDTH_NV 0x9038 #define GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV 0x9039 #define GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV 0x903A #define GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV 0x903B #define GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV 0x903C #ifndef GLEE_H_DEFINED_glBeginVideoCaptureNV #define GLEE_H_DEFINED_glBeginVideoCaptureNV typedef void (APIENTRYP GLEEPFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot); GLEE_EXTERN GLEEPFNGLBEGINVIDEOCAPTURENVPROC GLeeFuncPtr_glBeginVideoCaptureNV; #define glBeginVideoCaptureNV GLeeFuncPtr_glBeginVideoCaptureNV #endif #ifndef GLEE_H_DEFINED_glBindVideoCaptureStreamBufferNV #define GLEE_H_DEFINED_glBindVideoCaptureStreamBufferNV typedef void (APIENTRYP GLEEPFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset); GLEE_EXTERN GLEEPFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC GLeeFuncPtr_glBindVideoCaptureStreamBufferNV; #define glBindVideoCaptureStreamBufferNV GLeeFuncPtr_glBindVideoCaptureStreamBufferNV #endif #ifndef GLEE_H_DEFINED_glBindVideoCaptureStreamTextureNV #define GLEE_H_DEFINED_glBindVideoCaptureStreamTextureNV typedef void (APIENTRYP GLEEPFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture); GLEE_EXTERN GLEEPFNGLBINDVIDEOCAPTURESTREAMTEXTURENVPROC GLeeFuncPtr_glBindVideoCaptureStreamTextureNV; #define glBindVideoCaptureStreamTextureNV GLeeFuncPtr_glBindVideoCaptureStreamTextureNV #endif #ifndef GLEE_H_DEFINED_glEndVideoCaptureNV #define GLEE_H_DEFINED_glEndVideoCaptureNV typedef void (APIENTRYP GLEEPFNGLENDVIDEOCAPTURENVPROC) (GLuint video_capture_slot); GLEE_EXTERN GLEEPFNGLENDVIDEOCAPTURENVPROC GLeeFuncPtr_glEndVideoCaptureNV; #define glEndVideoCaptureNV GLeeFuncPtr_glEndVideoCaptureNV #endif #ifndef GLEE_H_DEFINED_glGetVideoCaptureivNV #define GLEE_H_DEFINED_glGetVideoCaptureivNV typedef void (APIENTRYP GLEEPFNGLGETVIDEOCAPTUREIVNVPROC) (GLuint video_capture_slot, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETVIDEOCAPTUREIVNVPROC GLeeFuncPtr_glGetVideoCaptureivNV; #define glGetVideoCaptureivNV GLeeFuncPtr_glGetVideoCaptureivNV #endif #ifndef GLEE_H_DEFINED_glGetVideoCaptureStreamivNV #define GLEE_H_DEFINED_glGetVideoCaptureStreamivNV typedef void (APIENTRYP GLEEPFNGLGETVIDEOCAPTURESTREAMIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint * params); GLEE_EXTERN GLEEPFNGLGETVIDEOCAPTURESTREAMIVNVPROC GLeeFuncPtr_glGetVideoCaptureStreamivNV; #define glGetVideoCaptureStreamivNV GLeeFuncPtr_glGetVideoCaptureStreamivNV #endif #ifndef GLEE_H_DEFINED_glGetVideoCaptureStreamfvNV #define GLEE_H_DEFINED_glGetVideoCaptureStreamfvNV typedef void (APIENTRYP GLEEPFNGLGETVIDEOCAPTURESTREAMFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat * params); GLEE_EXTERN GLEEPFNGLGETVIDEOCAPTURESTREAMFVNVPROC GLeeFuncPtr_glGetVideoCaptureStreamfvNV; #define glGetVideoCaptureStreamfvNV GLeeFuncPtr_glGetVideoCaptureStreamfvNV #endif #ifndef GLEE_H_DEFINED_glGetVideoCaptureStreamdvNV #define GLEE_H_DEFINED_glGetVideoCaptureStreamdvNV typedef void (APIENTRYP GLEEPFNGLGETVIDEOCAPTURESTREAMDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETVIDEOCAPTURESTREAMDVNVPROC GLeeFuncPtr_glGetVideoCaptureStreamdvNV; #define glGetVideoCaptureStreamdvNV GLeeFuncPtr_glGetVideoCaptureStreamdvNV #endif #ifndef GLEE_H_DEFINED_glVideoCaptureNV #define GLEE_H_DEFINED_glVideoCaptureNV typedef GLenum (APIENTRYP GLEEPFNGLVIDEOCAPTURENVPROC) (GLuint video_capture_slot, GLuint * sequence_num, GLuint64EXT * capture_time); GLEE_EXTERN GLEEPFNGLVIDEOCAPTURENVPROC GLeeFuncPtr_glVideoCaptureNV; #define glVideoCaptureNV GLeeFuncPtr_glVideoCaptureNV #endif #ifndef GLEE_H_DEFINED_glVideoCaptureStreamParameterivNV #define GLEE_H_DEFINED_glVideoCaptureStreamParameterivNV typedef void (APIENTRYP GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint * params); GLEE_EXTERN GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERIVNVPROC GLeeFuncPtr_glVideoCaptureStreamParameterivNV; #define glVideoCaptureStreamParameterivNV GLeeFuncPtr_glVideoCaptureStreamParameterivNV #endif #ifndef GLEE_H_DEFINED_glVideoCaptureStreamParameterfvNV #define GLEE_H_DEFINED_glVideoCaptureStreamParameterfvNV typedef void (APIENTRYP GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat * params); GLEE_EXTERN GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERFVNVPROC GLeeFuncPtr_glVideoCaptureStreamParameterfvNV; #define glVideoCaptureStreamParameterfvNV GLeeFuncPtr_glVideoCaptureStreamParameterfvNV #endif #ifndef GLEE_H_DEFINED_glVideoCaptureStreamParameterdvNV #define GLEE_H_DEFINED_glVideoCaptureStreamParameterdvNV typedef void (APIENTRYP GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble * params); GLEE_EXTERN GLEEPFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC GLeeFuncPtr_glVideoCaptureStreamParameterdvNV; #define glVideoCaptureStreamParameterdvNV GLeeFuncPtr_glVideoCaptureStreamParameterdvNV #endif #endif /* GL_NV_copy_image */ #ifndef GL_NV_copy_image #define GL_NV_copy_image 1 #define __GLEE_GL_NV_copy_image 1 /* Constants */ #ifndef GLEE_H_DEFINED_glCopyImageSubDataNV #define GLEE_H_DEFINED_glCopyImageSubDataNV typedef void (APIENTRYP GLEEPFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); GLEE_EXTERN GLEEPFNGLCOPYIMAGESUBDATANVPROC GLeeFuncPtr_glCopyImageSubDataNV; #define glCopyImageSubDataNV GLeeFuncPtr_glCopyImageSubDataNV #endif #endif /* GL_EXT_separate_shader_objects */ #ifndef GL_EXT_separate_shader_objects #define GL_EXT_separate_shader_objects 1 #define __GLEE_GL_EXT_separate_shader_objects 1 /* Constants */ #define GL_ACTIVE_PROGRAM_EXT 0x8B8D #ifndef GLEE_H_DEFINED_glUseShaderProgramEXT #define GLEE_H_DEFINED_glUseShaderProgramEXT typedef void (APIENTRYP GLEEPFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program); GLEE_EXTERN GLEEPFNGLUSESHADERPROGRAMEXTPROC GLeeFuncPtr_glUseShaderProgramEXT; #define glUseShaderProgramEXT GLeeFuncPtr_glUseShaderProgramEXT #endif #ifndef GLEE_H_DEFINED_glActiveProgramEXT #define GLEE_H_DEFINED_glActiveProgramEXT typedef void (APIENTRYP GLEEPFNGLACTIVEPROGRAMEXTPROC) (GLuint program); GLEE_EXTERN GLEEPFNGLACTIVEPROGRAMEXTPROC GLeeFuncPtr_glActiveProgramEXT; #define glActiveProgramEXT GLeeFuncPtr_glActiveProgramEXT #endif #ifndef GLEE_H_DEFINED_glCreateShaderProgramEXT #define GLEE_H_DEFINED_glCreateShaderProgramEXT typedef GLuint (APIENTRYP GLEEPFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const GLchar * string); GLEE_EXTERN GLEEPFNGLCREATESHADERPROGRAMEXTPROC GLeeFuncPtr_glCreateShaderProgramEXT; #define glCreateShaderProgramEXT GLeeFuncPtr_glCreateShaderProgramEXT #endif #endif /* GL_NV_parameter_buffer_object2 */ #ifndef GL_NV_parameter_buffer_object2 #define GL_NV_parameter_buffer_object2 1 #define __GLEE_GL_NV_parameter_buffer_object2 1 /* Constants */ #endif /* GL_NV_shader_buffer_load */ #ifndef GL_NV_shader_buffer_load #define GL_NV_shader_buffer_load 1 #define __GLEE_GL_NV_shader_buffer_load 1 /* Constants */ #define GL_BUFFER_GPU_ADDRESS_NV 0x8F1D #define GL_GPU_ADDRESS_NV 0x8F34 #define GL_MAX_SHADER_BUFFER_ADDRESS_NV 0x8F35 #ifndef GLEE_H_DEFINED_glMakeBufferResidentNV #define GLEE_H_DEFINED_glMakeBufferResidentNV typedef void (APIENTRYP GLEEPFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access); GLEE_EXTERN GLEEPFNGLMAKEBUFFERRESIDENTNVPROC GLeeFuncPtr_glMakeBufferResidentNV; #define glMakeBufferResidentNV GLeeFuncPtr_glMakeBufferResidentNV #endif #ifndef GLEE_H_DEFINED_glMakeBufferNonResidentNV #define GLEE_H_DEFINED_glMakeBufferNonResidentNV typedef void (APIENTRYP GLEEPFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLMAKEBUFFERNONRESIDENTNVPROC GLeeFuncPtr_glMakeBufferNonResidentNV; #define glMakeBufferNonResidentNV GLeeFuncPtr_glMakeBufferNonResidentNV #endif #ifndef GLEE_H_DEFINED_glIsBufferResidentNV #define GLEE_H_DEFINED_glIsBufferResidentNV typedef GLboolean (APIENTRYP GLEEPFNGLISBUFFERRESIDENTNVPROC) (GLenum target); GLEE_EXTERN GLEEPFNGLISBUFFERRESIDENTNVPROC GLeeFuncPtr_glIsBufferResidentNV; #define glIsBufferResidentNV GLeeFuncPtr_glIsBufferResidentNV #endif #ifndef GLEE_H_DEFINED_glMakeNamedBufferResidentNV #define GLEE_H_DEFINED_glMakeNamedBufferResidentNV typedef void (APIENTRYP GLEEPFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access); GLEE_EXTERN GLEEPFNGLMAKENAMEDBUFFERRESIDENTNVPROC GLeeFuncPtr_glMakeNamedBufferResidentNV; #define glMakeNamedBufferResidentNV GLeeFuncPtr_glMakeNamedBufferResidentNV #endif #ifndef GLEE_H_DEFINED_glMakeNamedBufferNonResidentNV #define GLEE_H_DEFINED_glMakeNamedBufferNonResidentNV typedef void (APIENTRYP GLEEPFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer); GLEE_EXTERN GLEEPFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC GLeeFuncPtr_glMakeNamedBufferNonResidentNV; #define glMakeNamedBufferNonResidentNV GLeeFuncPtr_glMakeNamedBufferNonResidentNV #endif #ifndef GLEE_H_DEFINED_glIsNamedBufferResidentNV #define GLEE_H_DEFINED_glIsNamedBufferResidentNV typedef GLboolean (APIENTRYP GLEEPFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer); GLEE_EXTERN GLEEPFNGLISNAMEDBUFFERRESIDENTNVPROC GLeeFuncPtr_glIsNamedBufferResidentNV; #define glIsNamedBufferResidentNV GLeeFuncPtr_glIsNamedBufferResidentNV #endif #ifndef GLEE_H_DEFINED_glGetBufferParameterui64vNV #define GLEE_H_DEFINED_glGetBufferParameterui64vNV typedef void (APIENTRYP GLEEPFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT * params); GLEE_EXTERN GLEEPFNGLGETBUFFERPARAMETERUI64VNVPROC GLeeFuncPtr_glGetBufferParameterui64vNV; #define glGetBufferParameterui64vNV GLeeFuncPtr_glGetBufferParameterui64vNV #endif #ifndef GLEE_H_DEFINED_glGetNamedBufferParameterui64vNV #define GLEE_H_DEFINED_glGetNamedBufferParameterui64vNV typedef void (APIENTRYP GLEEPFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT * params); GLEE_EXTERN GLEEPFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC GLeeFuncPtr_glGetNamedBufferParameterui64vNV; #define glGetNamedBufferParameterui64vNV GLeeFuncPtr_glGetNamedBufferParameterui64vNV #endif #ifndef GLEE_H_DEFINED_glGetIntegerui64vNV #define GLEE_H_DEFINED_glGetIntegerui64vNV typedef void (APIENTRYP GLEEPFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT * result); GLEE_EXTERN GLEEPFNGLGETINTEGERUI64VNVPROC GLeeFuncPtr_glGetIntegerui64vNV; #define glGetIntegerui64vNV GLeeFuncPtr_glGetIntegerui64vNV #endif #ifndef GLEE_H_DEFINED_glUniformui64NV #define GLEE_H_DEFINED_glUniformui64NV typedef void (APIENTRYP GLEEPFNGLUNIFORMUI64NVPROC) (GLint location, GLuint64EXT value); GLEE_EXTERN GLEEPFNGLUNIFORMUI64NVPROC GLeeFuncPtr_glUniformui64NV; #define glUniformui64NV GLeeFuncPtr_glUniformui64NV #endif #ifndef GLEE_H_DEFINED_glUniformui64vNV #define GLEE_H_DEFINED_glUniformui64vNV typedef void (APIENTRYP GLEEPFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT * value); GLEE_EXTERN GLEEPFNGLUNIFORMUI64VNVPROC GLeeFuncPtr_glUniformui64vNV; #define glUniformui64vNV GLeeFuncPtr_glUniformui64vNV #endif #ifndef GLEE_H_DEFINED_glGetUniformui64vNV #define GLEE_H_DEFINED_glGetUniformui64vNV typedef void (APIENTRYP GLEEPFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT * params); GLEE_EXTERN GLEEPFNGLGETUNIFORMUI64VNVPROC GLeeFuncPtr_glGetUniformui64vNV; #define glGetUniformui64vNV GLeeFuncPtr_glGetUniformui64vNV #endif #ifndef GLEE_H_DEFINED_glProgramUniformui64NV #define GLEE_H_DEFINED_glProgramUniformui64NV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMUI64NVPROC) (GLuint program, GLint location, GLuint64EXT value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMUI64NVPROC GLeeFuncPtr_glProgramUniformui64NV; #define glProgramUniformui64NV GLeeFuncPtr_glProgramUniformui64NV #endif #ifndef GLEE_H_DEFINED_glProgramUniformui64vNV #define GLEE_H_DEFINED_glProgramUniformui64vNV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMUI64VNVPROC GLeeFuncPtr_glProgramUniformui64vNV; #define glProgramUniformui64vNV GLeeFuncPtr_glProgramUniformui64vNV #endif #endif /* GL_NV_vertex_buffer_unified_memory */ #ifndef GL_NV_vertex_buffer_unified_memory #define GL_NV_vertex_buffer_unified_memory 1 #define __GLEE_GL_NV_vertex_buffer_unified_memory 1 /* Constants */ #define GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV 0x8F1E #define GL_ELEMENT_ARRAY_UNIFIED_NV 0x8F1F #define GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV 0x8F20 #define GL_VERTEX_ARRAY_ADDRESS_NV 0x8F21 #define GL_NORMAL_ARRAY_ADDRESS_NV 0x8F22 #define GL_COLOR_ARRAY_ADDRESS_NV 0x8F23 #define GL_INDEX_ARRAY_ADDRESS_NV 0x8F24 #define GL_TEXTURE_COORD_ARRAY_ADDRESS_NV 0x8F25 #define GL_EDGE_FLAG_ARRAY_ADDRESS_NV 0x8F26 #define GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV 0x8F27 #define GL_FOG_COORD_ARRAY_ADDRESS_NV 0x8F28 #define GL_ELEMENT_ARRAY_ADDRESS_NV 0x8F29 #define GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV 0x8F2A #define GL_VERTEX_ARRAY_LENGTH_NV 0x8F2B #define GL_NORMAL_ARRAY_LENGTH_NV 0x8F2C #define GL_COLOR_ARRAY_LENGTH_NV 0x8F2D #define GL_INDEX_ARRAY_LENGTH_NV 0x8F2E #define GL_TEXTURE_COORD_ARRAY_LENGTH_NV 0x8F2F #define GL_EDGE_FLAG_ARRAY_LENGTH_NV 0x8F30 #define GL_SECONDARY_COLOR_ARRAY_LENGTH_NV 0x8F31 #define GL_FOG_COORD_ARRAY_LENGTH_NV 0x8F32 #define GL_ELEMENT_ARRAY_LENGTH_NV 0x8F33 #define GL_DRAW_INDIRECT_UNIFIED_NV 0x8F40 #define GL_DRAW_INDIRECT_ADDRESS_NV 0x8F41 #define GL_DRAW_INDIRECT_LENGTH_NV 0x8F42 #ifndef GLEE_H_DEFINED_glBufferAddressRangeNV #define GLEE_H_DEFINED_glBufferAddressRangeNV typedef void (APIENTRYP GLEEPFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length); GLEE_EXTERN GLEEPFNGLBUFFERADDRESSRANGENVPROC GLeeFuncPtr_glBufferAddressRangeNV; #define glBufferAddressRangeNV GLeeFuncPtr_glBufferAddressRangeNV #endif #ifndef GLEE_H_DEFINED_glVertexFormatNV #define GLEE_H_DEFINED_glVertexFormatNV typedef void (APIENTRYP GLEEPFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); GLEE_EXTERN GLEEPFNGLVERTEXFORMATNVPROC GLeeFuncPtr_glVertexFormatNV; #define glVertexFormatNV GLeeFuncPtr_glVertexFormatNV #endif #ifndef GLEE_H_DEFINED_glNormalFormatNV #define GLEE_H_DEFINED_glNormalFormatNV typedef void (APIENTRYP GLEEPFNGLNORMALFORMATNVPROC) (GLenum type, GLsizei stride); GLEE_EXTERN GLEEPFNGLNORMALFORMATNVPROC GLeeFuncPtr_glNormalFormatNV; #define glNormalFormatNV GLeeFuncPtr_glNormalFormatNV #endif #ifndef GLEE_H_DEFINED_glColorFormatNV #define GLEE_H_DEFINED_glColorFormatNV typedef void (APIENTRYP GLEEPFNGLCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); GLEE_EXTERN GLEEPFNGLCOLORFORMATNVPROC GLeeFuncPtr_glColorFormatNV; #define glColorFormatNV GLeeFuncPtr_glColorFormatNV #endif #ifndef GLEE_H_DEFINED_glIndexFormatNV #define GLEE_H_DEFINED_glIndexFormatNV typedef void (APIENTRYP GLEEPFNGLINDEXFORMATNVPROC) (GLenum type, GLsizei stride); GLEE_EXTERN GLEEPFNGLINDEXFORMATNVPROC GLeeFuncPtr_glIndexFormatNV; #define glIndexFormatNV GLeeFuncPtr_glIndexFormatNV #endif #ifndef GLEE_H_DEFINED_glTexCoordFormatNV #define GLEE_H_DEFINED_glTexCoordFormatNV typedef void (APIENTRYP GLEEPFNGLTEXCOORDFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); GLEE_EXTERN GLEEPFNGLTEXCOORDFORMATNVPROC GLeeFuncPtr_glTexCoordFormatNV; #define glTexCoordFormatNV GLeeFuncPtr_glTexCoordFormatNV #endif #ifndef GLEE_H_DEFINED_glEdgeFlagFormatNV #define GLEE_H_DEFINED_glEdgeFlagFormatNV typedef void (APIENTRYP GLEEPFNGLEDGEFLAGFORMATNVPROC) (GLsizei stride); GLEE_EXTERN GLEEPFNGLEDGEFLAGFORMATNVPROC GLeeFuncPtr_glEdgeFlagFormatNV; #define glEdgeFlagFormatNV GLeeFuncPtr_glEdgeFlagFormatNV #endif #ifndef GLEE_H_DEFINED_glSecondaryColorFormatNV #define GLEE_H_DEFINED_glSecondaryColorFormatNV typedef void (APIENTRYP GLEEPFNGLSECONDARYCOLORFORMATNVPROC) (GLint size, GLenum type, GLsizei stride); GLEE_EXTERN GLEEPFNGLSECONDARYCOLORFORMATNVPROC GLeeFuncPtr_glSecondaryColorFormatNV; #define glSecondaryColorFormatNV GLeeFuncPtr_glSecondaryColorFormatNV #endif #ifndef GLEE_H_DEFINED_glFogCoordFormatNV #define GLEE_H_DEFINED_glFogCoordFormatNV typedef void (APIENTRYP GLEEPFNGLFOGCOORDFORMATNVPROC) (GLenum type, GLsizei stride); GLEE_EXTERN GLEEPFNGLFOGCOORDFORMATNVPROC GLeeFuncPtr_glFogCoordFormatNV; #define glFogCoordFormatNV GLeeFuncPtr_glFogCoordFormatNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribFormatNV #define GLEE_H_DEFINED_glVertexAttribFormatNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBFORMATNVPROC GLeeFuncPtr_glVertexAttribFormatNV; #define glVertexAttribFormatNV GLeeFuncPtr_glVertexAttribFormatNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribIFormatNV #define GLEE_H_DEFINED_glVertexAttribIFormatNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBIFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBIFORMATNVPROC GLeeFuncPtr_glVertexAttribIFormatNV; #define glVertexAttribIFormatNV GLeeFuncPtr_glVertexAttribIFormatNV #endif #ifndef GLEE_H_DEFINED_glGetIntegerui64i_vNV #define GLEE_H_DEFINED_glGetIntegerui64i_vNV typedef void (APIENTRYP GLEEPFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT * result); GLEE_EXTERN GLEEPFNGLGETINTEGERUI64I_VNVPROC GLeeFuncPtr_glGetIntegerui64i_vNV; #define glGetIntegerui64i_vNV GLeeFuncPtr_glGetIntegerui64i_vNV #endif #endif /* GL_NV_texture_barrier */ #ifndef GL_NV_texture_barrier #define GL_NV_texture_barrier 1 #define __GLEE_GL_NV_texture_barrier 1 /* Constants */ #ifndef GLEE_H_DEFINED_glTextureBarrierNV #define GLEE_H_DEFINED_glTextureBarrierNV typedef void (APIENTRYP GLEEPFNGLTEXTUREBARRIERNVPROC) (); GLEE_EXTERN GLEEPFNGLTEXTUREBARRIERNVPROC GLeeFuncPtr_glTextureBarrierNV; #define glTextureBarrierNV GLeeFuncPtr_glTextureBarrierNV #endif #endif /* GL_AMD_shader_stencil_export */ #ifndef GL_AMD_shader_stencil_export #define GL_AMD_shader_stencil_export 1 #define __GLEE_GL_AMD_shader_stencil_export 1 /* Constants */ #endif /* GL_AMD_seamless_cubemap_per_texture */ #ifndef GL_AMD_seamless_cubemap_per_texture #define GL_AMD_seamless_cubemap_per_texture 1 #define __GLEE_GL_AMD_seamless_cubemap_per_texture 1 /* Constants */ #endif /* GL_AMD_conservative_depth */ #ifndef GL_AMD_conservative_depth #define GL_AMD_conservative_depth 1 #define __GLEE_GL_AMD_conservative_depth 1 /* Constants */ #endif /* GL_EXT_shader_image_load_store */ #ifndef GL_EXT_shader_image_load_store #define GL_EXT_shader_image_load_store 1 #define __GLEE_GL_EXT_shader_image_load_store 1 /* Constants */ #define GL_MAX_IMAGE_UNITS_EXT 0x8F38 #define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39 #define GL_IMAGE_BINDING_NAME_EXT 0x8F3A #define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B #define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C #define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D #define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E #define GL_IMAGE_1D_EXT 0x904C #define GL_IMAGE_2D_EXT 0x904D #define GL_IMAGE_3D_EXT 0x904E #define GL_IMAGE_2D_RECT_EXT 0x904F #define GL_IMAGE_CUBE_EXT 0x9050 #define GL_IMAGE_BUFFER_EXT 0x9051 #define GL_IMAGE_1D_ARRAY_EXT 0x9052 #define GL_IMAGE_2D_ARRAY_EXT 0x9053 #define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 #define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055 #define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056 #define GL_INT_IMAGE_1D_EXT 0x9057 #define GL_INT_IMAGE_2D_EXT 0x9058 #define GL_INT_IMAGE_3D_EXT 0x9059 #define GL_INT_IMAGE_2D_RECT_EXT 0x905A #define GL_INT_IMAGE_CUBE_EXT 0x905B #define GL_INT_IMAGE_BUFFER_EXT 0x905C #define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D #define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E #define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F #define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060 #define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061 #define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062 #define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063 #define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064 #define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065 #define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066 #define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 #define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068 #define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069 #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B #define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C #define GL_MAX_IMAGE_SAMPLES_EXT 0x906D #define GL_IMAGE_BINDING_FORMAT_EXT 0x906E #define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001 #define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002 #define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004 #define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008 #define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020 #define GL_COMMAND_BARRIER_BIT_EXT 0x00000040 #define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080 #define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100 #define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200 #define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400 #define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800 #define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000 #define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF #ifndef GLEE_H_DEFINED_glBindImageTextureEXT #define GLEE_H_DEFINED_glBindImageTextureEXT typedef void (APIENTRYP GLEEPFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format); GLEE_EXTERN GLEEPFNGLBINDIMAGETEXTUREEXTPROC GLeeFuncPtr_glBindImageTextureEXT; #define glBindImageTextureEXT GLeeFuncPtr_glBindImageTextureEXT #endif #ifndef GLEE_H_DEFINED_glMemoryBarrierEXT #define GLEE_H_DEFINED_glMemoryBarrierEXT typedef void (APIENTRYP GLEEPFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers); GLEE_EXTERN GLEEPFNGLMEMORYBARRIEREXTPROC GLeeFuncPtr_glMemoryBarrierEXT; #define glMemoryBarrierEXT GLeeFuncPtr_glMemoryBarrierEXT #endif #endif /* GL_EXT_vertex_attrib_64bit */ #ifndef GL_EXT_vertex_attrib_64bit #define GL_EXT_vertex_attrib_64bit 1 #define __GLEE_GL_EXT_vertex_attrib_64bit 1 /* Constants */ #define GL_DOUBLE_VEC2_EXT 0x8FFC #define GL_DOUBLE_VEC3_EXT 0x8FFD #define GL_DOUBLE_VEC4_EXT 0x8FFE #define GL_DOUBLE_MAT2_EXT 0x8F46 #define GL_DOUBLE_MAT3_EXT 0x8F47 #define GL_DOUBLE_MAT4_EXT 0x8F48 #define GL_DOUBLE_MAT2x3_EXT 0x8F49 #define GL_DOUBLE_MAT2x4_EXT 0x8F4A #define GL_DOUBLE_MAT3x2_EXT 0x8F4B #define GL_DOUBLE_MAT3x4_EXT 0x8F4C #define GL_DOUBLE_MAT4x2_EXT 0x8F4D #define GL_DOUBLE_MAT4x3_EXT 0x8F4E #ifndef GLEE_H_DEFINED_glVertexAttribL1dEXT #define GLEE_H_DEFINED_glVertexAttribL1dEXT typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL1DEXTPROC GLeeFuncPtr_glVertexAttribL1dEXT; #define glVertexAttribL1dEXT GLeeFuncPtr_glVertexAttribL1dEXT #endif #ifndef GLEE_H_DEFINED_glVertexAttribL2dEXT #define GLEE_H_DEFINED_glVertexAttribL2dEXT typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL2DEXTPROC GLeeFuncPtr_glVertexAttribL2dEXT; #define glVertexAttribL2dEXT GLeeFuncPtr_glVertexAttribL2dEXT #endif #ifndef GLEE_H_DEFINED_glVertexAttribL3dEXT #define GLEE_H_DEFINED_glVertexAttribL3dEXT typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL3DEXTPROC GLeeFuncPtr_glVertexAttribL3dEXT; #define glVertexAttribL3dEXT GLeeFuncPtr_glVertexAttribL3dEXT #endif #ifndef GLEE_H_DEFINED_glVertexAttribL4dEXT #define GLEE_H_DEFINED_glVertexAttribL4dEXT typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL4DEXTPROC GLeeFuncPtr_glVertexAttribL4dEXT; #define glVertexAttribL4dEXT GLeeFuncPtr_glVertexAttribL4dEXT #endif #ifndef GLEE_H_DEFINED_glVertexAttribL1dvEXT #define GLEE_H_DEFINED_glVertexAttribL1dvEXT typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL1DVEXTPROC GLeeFuncPtr_glVertexAttribL1dvEXT; #define glVertexAttribL1dvEXT GLeeFuncPtr_glVertexAttribL1dvEXT #endif #ifndef GLEE_H_DEFINED_glVertexAttribL2dvEXT #define GLEE_H_DEFINED_glVertexAttribL2dvEXT typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL2DVEXTPROC GLeeFuncPtr_glVertexAttribL2dvEXT; #define glVertexAttribL2dvEXT GLeeFuncPtr_glVertexAttribL2dvEXT #endif #ifndef GLEE_H_DEFINED_glVertexAttribL3dvEXT #define GLEE_H_DEFINED_glVertexAttribL3dvEXT typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL3DVEXTPROC GLeeFuncPtr_glVertexAttribL3dvEXT; #define glVertexAttribL3dvEXT GLeeFuncPtr_glVertexAttribL3dvEXT #endif #ifndef GLEE_H_DEFINED_glVertexAttribL4dvEXT #define GLEE_H_DEFINED_glVertexAttribL4dvEXT typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL4DVEXTPROC GLeeFuncPtr_glVertexAttribL4dvEXT; #define glVertexAttribL4dvEXT GLeeFuncPtr_glVertexAttribL4dvEXT #endif #ifndef GLEE_H_DEFINED_glVertexAttribLPointerEXT #define GLEE_H_DEFINED_glVertexAttribLPointerEXT typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBLPOINTEREXTPROC GLeeFuncPtr_glVertexAttribLPointerEXT; #define glVertexAttribLPointerEXT GLeeFuncPtr_glVertexAttribLPointerEXT #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribLdvEXT #define GLEE_H_DEFINED_glGetVertexAttribLdvEXT typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBLDVEXTPROC GLeeFuncPtr_glGetVertexAttribLdvEXT; #define glGetVertexAttribLdvEXT GLeeFuncPtr_glGetVertexAttribLdvEXT #endif #ifndef GLEE_H_DEFINED_glVertexArrayVertexAttribLOffsetEXT #define GLEE_H_DEFINED_glVertexArrayVertexAttribLOffsetEXT typedef void (APIENTRYP GLEEPFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset); GLEE_EXTERN GLEEPFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC GLeeFuncPtr_glVertexArrayVertexAttribLOffsetEXT; #define glVertexArrayVertexAttribLOffsetEXT GLeeFuncPtr_glVertexArrayVertexAttribLOffsetEXT #endif #endif /* GL_NV_gpu_program5 */ #ifndef GL_NV_gpu_program5 #define GL_NV_gpu_program5 1 #define __GLEE_GL_NV_gpu_program5 1 /* Constants */ #define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A #define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B #define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C #define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D #define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5E #define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV 0x8E5F #define GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV 0x8F44 #define GL_MAX_PROGRAM_SUBROUTINE_NUM_NV 0x8F45 #ifndef GLEE_H_DEFINED_glProgramSubroutineParametersuivNV #define GLEE_H_DEFINED_glProgramSubroutineParametersuivNV typedef void (APIENTRYP GLEEPFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC) (GLenum target, GLsizei count, const GLuint * params); GLEE_EXTERN GLEEPFNGLPROGRAMSUBROUTINEPARAMETERSUIVNVPROC GLeeFuncPtr_glProgramSubroutineParametersuivNV; #define glProgramSubroutineParametersuivNV GLeeFuncPtr_glProgramSubroutineParametersuivNV #endif #ifndef GLEE_H_DEFINED_glGetProgramSubroutineParameteruivNV #define GLEE_H_DEFINED_glGetProgramSubroutineParameteruivNV typedef void (APIENTRYP GLEEPFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC) (GLenum target, GLuint index, GLuint * param); GLEE_EXTERN GLEEPFNGLGETPROGRAMSUBROUTINEPARAMETERUIVNVPROC GLeeFuncPtr_glGetProgramSubroutineParameteruivNV; #define glGetProgramSubroutineParameteruivNV GLeeFuncPtr_glGetProgramSubroutineParameteruivNV #endif #endif /* GL_NV_gpu_shader5 */ #ifndef GL_NV_gpu_shader5 #define GL_NV_gpu_shader5 1 #define __GLEE_GL_NV_gpu_shader5 1 /* Constants */ #define GL_INT64_NV 0x140E #define GL_UNSIGNED_INT64_NV 0x140F #define GL_INT8_NV 0x8FE0 #define GL_INT8_VEC2_NV 0x8FE1 #define GL_INT8_VEC3_NV 0x8FE2 #define GL_INT8_VEC4_NV 0x8FE3 #define GL_INT16_NV 0x8FE4 #define GL_INT16_VEC2_NV 0x8FE5 #define GL_INT16_VEC3_NV 0x8FE6 #define GL_INT16_VEC4_NV 0x8FE7 #define GL_INT64_VEC2_NV 0x8FE9 #define GL_INT64_VEC3_NV 0x8FEA #define GL_INT64_VEC4_NV 0x8FEB #define GL_UNSIGNED_INT8_NV 0x8FEC #define GL_UNSIGNED_INT8_VEC2_NV 0x8FED #define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE #define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF #define GL_UNSIGNED_INT16_NV 0x8FF0 #define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 #define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 #define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 #define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5 #define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6 #define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7 #define GL_FLOAT16_NV 0x8FF8 #define GL_FLOAT16_VEC2_NV 0x8FF9 #define GL_FLOAT16_VEC3_NV 0x8FFA #define GL_FLOAT16_VEC4_NV 0x8FFB #ifndef GLEE_H_DEFINED_glUniform1i64NV #define GLEE_H_DEFINED_glUniform1i64NV typedef void (APIENTRYP GLEEPFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); GLEE_EXTERN GLEEPFNGLUNIFORM1I64NVPROC GLeeFuncPtr_glUniform1i64NV; #define glUniform1i64NV GLeeFuncPtr_glUniform1i64NV #endif #ifndef GLEE_H_DEFINED_glUniform2i64NV #define GLEE_H_DEFINED_glUniform2i64NV typedef void (APIENTRYP GLEEPFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); GLEE_EXTERN GLEEPFNGLUNIFORM2I64NVPROC GLeeFuncPtr_glUniform2i64NV; #define glUniform2i64NV GLeeFuncPtr_glUniform2i64NV #endif #ifndef GLEE_H_DEFINED_glUniform3i64NV #define GLEE_H_DEFINED_glUniform3i64NV typedef void (APIENTRYP GLEEPFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); GLEE_EXTERN GLEEPFNGLUNIFORM3I64NVPROC GLeeFuncPtr_glUniform3i64NV; #define glUniform3i64NV GLeeFuncPtr_glUniform3i64NV #endif #ifndef GLEE_H_DEFINED_glUniform4i64NV #define GLEE_H_DEFINED_glUniform4i64NV typedef void (APIENTRYP GLEEPFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); GLEE_EXTERN GLEEPFNGLUNIFORM4I64NVPROC GLeeFuncPtr_glUniform4i64NV; #define glUniform4i64NV GLeeFuncPtr_glUniform4i64NV #endif #ifndef GLEE_H_DEFINED_glUniform1i64vNV #define GLEE_H_DEFINED_glUniform1i64vNV typedef void (APIENTRYP GLEEPFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT * value); GLEE_EXTERN GLEEPFNGLUNIFORM1I64VNVPROC GLeeFuncPtr_glUniform1i64vNV; #define glUniform1i64vNV GLeeFuncPtr_glUniform1i64vNV #endif #ifndef GLEE_H_DEFINED_glUniform2i64vNV #define GLEE_H_DEFINED_glUniform2i64vNV typedef void (APIENTRYP GLEEPFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT * value); GLEE_EXTERN GLEEPFNGLUNIFORM2I64VNVPROC GLeeFuncPtr_glUniform2i64vNV; #define glUniform2i64vNV GLeeFuncPtr_glUniform2i64vNV #endif #ifndef GLEE_H_DEFINED_glUniform3i64vNV #define GLEE_H_DEFINED_glUniform3i64vNV typedef void (APIENTRYP GLEEPFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT * value); GLEE_EXTERN GLEEPFNGLUNIFORM3I64VNVPROC GLeeFuncPtr_glUniform3i64vNV; #define glUniform3i64vNV GLeeFuncPtr_glUniform3i64vNV #endif #ifndef GLEE_H_DEFINED_glUniform4i64vNV #define GLEE_H_DEFINED_glUniform4i64vNV typedef void (APIENTRYP GLEEPFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT * value); GLEE_EXTERN GLEEPFNGLUNIFORM4I64VNVPROC GLeeFuncPtr_glUniform4i64vNV; #define glUniform4i64vNV GLeeFuncPtr_glUniform4i64vNV #endif #ifndef GLEE_H_DEFINED_glUniform1ui64NV #define GLEE_H_DEFINED_glUniform1ui64NV typedef void (APIENTRYP GLEEPFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); GLEE_EXTERN GLEEPFNGLUNIFORM1UI64NVPROC GLeeFuncPtr_glUniform1ui64NV; #define glUniform1ui64NV GLeeFuncPtr_glUniform1ui64NV #endif #ifndef GLEE_H_DEFINED_glUniform2ui64NV #define GLEE_H_DEFINED_glUniform2ui64NV typedef void (APIENTRYP GLEEPFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); GLEE_EXTERN GLEEPFNGLUNIFORM2UI64NVPROC GLeeFuncPtr_glUniform2ui64NV; #define glUniform2ui64NV GLeeFuncPtr_glUniform2ui64NV #endif #ifndef GLEE_H_DEFINED_glUniform3ui64NV #define GLEE_H_DEFINED_glUniform3ui64NV typedef void (APIENTRYP GLEEPFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); GLEE_EXTERN GLEEPFNGLUNIFORM3UI64NVPROC GLeeFuncPtr_glUniform3ui64NV; #define glUniform3ui64NV GLeeFuncPtr_glUniform3ui64NV #endif #ifndef GLEE_H_DEFINED_glUniform4ui64NV #define GLEE_H_DEFINED_glUniform4ui64NV typedef void (APIENTRYP GLEEPFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); GLEE_EXTERN GLEEPFNGLUNIFORM4UI64NVPROC GLeeFuncPtr_glUniform4ui64NV; #define glUniform4ui64NV GLeeFuncPtr_glUniform4ui64NV #endif #ifndef GLEE_H_DEFINED_glUniform1ui64vNV #define GLEE_H_DEFINED_glUniform1ui64vNV typedef void (APIENTRYP GLEEPFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT * value); GLEE_EXTERN GLEEPFNGLUNIFORM1UI64VNVPROC GLeeFuncPtr_glUniform1ui64vNV; #define glUniform1ui64vNV GLeeFuncPtr_glUniform1ui64vNV #endif #ifndef GLEE_H_DEFINED_glUniform2ui64vNV #define GLEE_H_DEFINED_glUniform2ui64vNV typedef void (APIENTRYP GLEEPFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT * value); GLEE_EXTERN GLEEPFNGLUNIFORM2UI64VNVPROC GLeeFuncPtr_glUniform2ui64vNV; #define glUniform2ui64vNV GLeeFuncPtr_glUniform2ui64vNV #endif #ifndef GLEE_H_DEFINED_glUniform3ui64vNV #define GLEE_H_DEFINED_glUniform3ui64vNV typedef void (APIENTRYP GLEEPFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT * value); GLEE_EXTERN GLEEPFNGLUNIFORM3UI64VNVPROC GLeeFuncPtr_glUniform3ui64vNV; #define glUniform3ui64vNV GLeeFuncPtr_glUniform3ui64vNV #endif #ifndef GLEE_H_DEFINED_glUniform4ui64vNV #define GLEE_H_DEFINED_glUniform4ui64vNV typedef void (APIENTRYP GLEEPFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT * value); GLEE_EXTERN GLEEPFNGLUNIFORM4UI64VNVPROC GLeeFuncPtr_glUniform4ui64vNV; #define glUniform4ui64vNV GLeeFuncPtr_glUniform4ui64vNV #endif #ifndef GLEE_H_DEFINED_glGetUniformi64vNV #define GLEE_H_DEFINED_glGetUniformi64vNV typedef void (APIENTRYP GLEEPFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT * params); GLEE_EXTERN GLEEPFNGLGETUNIFORMI64VNVPROC GLeeFuncPtr_glGetUniformi64vNV; #define glGetUniformi64vNV GLeeFuncPtr_glGetUniformi64vNV #endif #ifndef GLEE_H_DEFINED_glProgramUniform1i64NV #define GLEE_H_DEFINED_glProgramUniform1i64NV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1I64NVPROC GLeeFuncPtr_glProgramUniform1i64NV; #define glProgramUniform1i64NV GLeeFuncPtr_glProgramUniform1i64NV #endif #ifndef GLEE_H_DEFINED_glProgramUniform2i64NV #define GLEE_H_DEFINED_glProgramUniform2i64NV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2I64NVPROC GLeeFuncPtr_glProgramUniform2i64NV; #define glProgramUniform2i64NV GLeeFuncPtr_glProgramUniform2i64NV #endif #ifndef GLEE_H_DEFINED_glProgramUniform3i64NV #define GLEE_H_DEFINED_glProgramUniform3i64NV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3I64NVPROC GLeeFuncPtr_glProgramUniform3i64NV; #define glProgramUniform3i64NV GLeeFuncPtr_glProgramUniform3i64NV #endif #ifndef GLEE_H_DEFINED_glProgramUniform4i64NV #define GLEE_H_DEFINED_glProgramUniform4i64NV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4I64NVPROC GLeeFuncPtr_glProgramUniform4i64NV; #define glProgramUniform4i64NV GLeeFuncPtr_glProgramUniform4i64NV #endif #ifndef GLEE_H_DEFINED_glProgramUniform1i64vNV #define GLEE_H_DEFINED_glProgramUniform1i64vNV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1I64VNVPROC GLeeFuncPtr_glProgramUniform1i64vNV; #define glProgramUniform1i64vNV GLeeFuncPtr_glProgramUniform1i64vNV #endif #ifndef GLEE_H_DEFINED_glProgramUniform2i64vNV #define GLEE_H_DEFINED_glProgramUniform2i64vNV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2I64VNVPROC GLeeFuncPtr_glProgramUniform2i64vNV; #define glProgramUniform2i64vNV GLeeFuncPtr_glProgramUniform2i64vNV #endif #ifndef GLEE_H_DEFINED_glProgramUniform3i64vNV #define GLEE_H_DEFINED_glProgramUniform3i64vNV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3I64VNVPROC GLeeFuncPtr_glProgramUniform3i64vNV; #define glProgramUniform3i64vNV GLeeFuncPtr_glProgramUniform3i64vNV #endif #ifndef GLEE_H_DEFINED_glProgramUniform4i64vNV #define GLEE_H_DEFINED_glProgramUniform4i64vNV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4I64VNVPROC GLeeFuncPtr_glProgramUniform4i64vNV; #define glProgramUniform4i64vNV GLeeFuncPtr_glProgramUniform4i64vNV #endif #ifndef GLEE_H_DEFINED_glProgramUniform1ui64NV #define GLEE_H_DEFINED_glProgramUniform1ui64NV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1UI64NVPROC GLeeFuncPtr_glProgramUniform1ui64NV; #define glProgramUniform1ui64NV GLeeFuncPtr_glProgramUniform1ui64NV #endif #ifndef GLEE_H_DEFINED_glProgramUniform2ui64NV #define GLEE_H_DEFINED_glProgramUniform2ui64NV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2UI64NVPROC GLeeFuncPtr_glProgramUniform2ui64NV; #define glProgramUniform2ui64NV GLeeFuncPtr_glProgramUniform2ui64NV #endif #ifndef GLEE_H_DEFINED_glProgramUniform3ui64NV #define GLEE_H_DEFINED_glProgramUniform3ui64NV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3UI64NVPROC GLeeFuncPtr_glProgramUniform3ui64NV; #define glProgramUniform3ui64NV GLeeFuncPtr_glProgramUniform3ui64NV #endif #ifndef GLEE_H_DEFINED_glProgramUniform4ui64NV #define GLEE_H_DEFINED_glProgramUniform4ui64NV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4UI64NVPROC GLeeFuncPtr_glProgramUniform4ui64NV; #define glProgramUniform4ui64NV GLeeFuncPtr_glProgramUniform4ui64NV #endif #ifndef GLEE_H_DEFINED_glProgramUniform1ui64vNV #define GLEE_H_DEFINED_glProgramUniform1ui64vNV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM1UI64VNVPROC GLeeFuncPtr_glProgramUniform1ui64vNV; #define glProgramUniform1ui64vNV GLeeFuncPtr_glProgramUniform1ui64vNV #endif #ifndef GLEE_H_DEFINED_glProgramUniform2ui64vNV #define GLEE_H_DEFINED_glProgramUniform2ui64vNV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM2UI64VNVPROC GLeeFuncPtr_glProgramUniform2ui64vNV; #define glProgramUniform2ui64vNV GLeeFuncPtr_glProgramUniform2ui64vNV #endif #ifndef GLEE_H_DEFINED_glProgramUniform3ui64vNV #define GLEE_H_DEFINED_glProgramUniform3ui64vNV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM3UI64VNVPROC GLeeFuncPtr_glProgramUniform3ui64vNV; #define glProgramUniform3ui64vNV GLeeFuncPtr_glProgramUniform3ui64vNV #endif #ifndef GLEE_H_DEFINED_glProgramUniform4ui64vNV #define GLEE_H_DEFINED_glProgramUniform4ui64vNV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT * value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORM4UI64VNVPROC GLeeFuncPtr_glProgramUniform4ui64vNV; #define glProgramUniform4ui64vNV GLeeFuncPtr_glProgramUniform4ui64vNV #endif #endif /* GL_NV_shader_buffer_store */ #ifndef GL_NV_shader_buffer_store #define GL_NV_shader_buffer_store 1 #define __GLEE_GL_NV_shader_buffer_store 1 /* Constants */ #define GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV 0x00000010 #endif /* GL_NV_tessellation_program5 */ #ifndef GL_NV_tessellation_program5 #define GL_NV_tessellation_program5 1 #define __GLEE_GL_NV_tessellation_program5 1 /* Constants */ #define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 #define GL_TESS_CONTROL_PROGRAM_NV 0x891E #define GL_TESS_EVALUATION_PROGRAM_NV 0x891F #define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74 #define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75 #endif /* GL_NV_vertex_attrib_integer_64bit */ #ifndef GL_NV_vertex_attrib_integer_64bit #define GL_NV_vertex_attrib_integer_64bit 1 #define __GLEE_GL_NV_vertex_attrib_integer_64bit 1 /* Constants */ #ifndef GLEE_H_DEFINED_glVertexAttribL1i64NV #define GLEE_H_DEFINED_glVertexAttribL1i64NV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL1I64NVPROC GLeeFuncPtr_glVertexAttribL1i64NV; #define glVertexAttribL1i64NV GLeeFuncPtr_glVertexAttribL1i64NV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL2i64NV #define GLEE_H_DEFINED_glVertexAttribL2i64NV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL2I64NVPROC GLeeFuncPtr_glVertexAttribL2i64NV; #define glVertexAttribL2i64NV GLeeFuncPtr_glVertexAttribL2i64NV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL3i64NV #define GLEE_H_DEFINED_glVertexAttribL3i64NV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL3I64NVPROC GLeeFuncPtr_glVertexAttribL3i64NV; #define glVertexAttribL3i64NV GLeeFuncPtr_glVertexAttribL3i64NV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL4i64NV #define GLEE_H_DEFINED_glVertexAttribL4i64NV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL4I64NVPROC GLeeFuncPtr_glVertexAttribL4i64NV; #define glVertexAttribL4i64NV GLeeFuncPtr_glVertexAttribL4i64NV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL1i64vNV #define GLEE_H_DEFINED_glVertexAttribL1i64vNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL1I64VNVPROC GLeeFuncPtr_glVertexAttribL1i64vNV; #define glVertexAttribL1i64vNV GLeeFuncPtr_glVertexAttribL1i64vNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL2i64vNV #define GLEE_H_DEFINED_glVertexAttribL2i64vNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL2I64VNVPROC GLeeFuncPtr_glVertexAttribL2i64vNV; #define glVertexAttribL2i64vNV GLeeFuncPtr_glVertexAttribL2i64vNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL3i64vNV #define GLEE_H_DEFINED_glVertexAttribL3i64vNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL3I64VNVPROC GLeeFuncPtr_glVertexAttribL3i64vNV; #define glVertexAttribL3i64vNV GLeeFuncPtr_glVertexAttribL3i64vNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL4i64vNV #define GLEE_H_DEFINED_glVertexAttribL4i64vNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL4I64VNVPROC GLeeFuncPtr_glVertexAttribL4i64vNV; #define glVertexAttribL4i64vNV GLeeFuncPtr_glVertexAttribL4i64vNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL1ui64NV #define GLEE_H_DEFINED_glVertexAttribL1ui64NV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL1UI64NVPROC GLeeFuncPtr_glVertexAttribL1ui64NV; #define glVertexAttribL1ui64NV GLeeFuncPtr_glVertexAttribL1ui64NV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL2ui64NV #define GLEE_H_DEFINED_glVertexAttribL2ui64NV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL2UI64NVPROC GLeeFuncPtr_glVertexAttribL2ui64NV; #define glVertexAttribL2ui64NV GLeeFuncPtr_glVertexAttribL2ui64NV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL3ui64NV #define GLEE_H_DEFINED_glVertexAttribL3ui64NV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL3UI64NVPROC GLeeFuncPtr_glVertexAttribL3ui64NV; #define glVertexAttribL3ui64NV GLeeFuncPtr_glVertexAttribL3ui64NV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL4ui64NV #define GLEE_H_DEFINED_glVertexAttribL4ui64NV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL4UI64NVPROC GLeeFuncPtr_glVertexAttribL4ui64NV; #define glVertexAttribL4ui64NV GLeeFuncPtr_glVertexAttribL4ui64NV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL1ui64vNV #define GLEE_H_DEFINED_glVertexAttribL1ui64vNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL1UI64VNVPROC GLeeFuncPtr_glVertexAttribL1ui64vNV; #define glVertexAttribL1ui64vNV GLeeFuncPtr_glVertexAttribL1ui64vNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL2ui64vNV #define GLEE_H_DEFINED_glVertexAttribL2ui64vNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL2UI64VNVPROC GLeeFuncPtr_glVertexAttribL2ui64vNV; #define glVertexAttribL2ui64vNV GLeeFuncPtr_glVertexAttribL2ui64vNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL3ui64vNV #define GLEE_H_DEFINED_glVertexAttribL3ui64vNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL3UI64VNVPROC GLeeFuncPtr_glVertexAttribL3ui64vNV; #define glVertexAttribL3ui64vNV GLeeFuncPtr_glVertexAttribL3ui64vNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribL4ui64vNV #define GLEE_H_DEFINED_glVertexAttribL4ui64vNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT * v); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBL4UI64VNVPROC GLeeFuncPtr_glVertexAttribL4ui64vNV; #define glVertexAttribL4ui64vNV GLeeFuncPtr_glVertexAttribL4ui64vNV #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribLi64vNV #define GLEE_H_DEFINED_glGetVertexAttribLi64vNV typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBLI64VNVPROC GLeeFuncPtr_glGetVertexAttribLi64vNV; #define glGetVertexAttribLi64vNV GLeeFuncPtr_glGetVertexAttribLi64vNV #endif #ifndef GLEE_H_DEFINED_glGetVertexAttribLui64vNV #define GLEE_H_DEFINED_glGetVertexAttribLui64vNV typedef void (APIENTRYP GLEEPFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT * params); GLEE_EXTERN GLEEPFNGLGETVERTEXATTRIBLUI64VNVPROC GLeeFuncPtr_glGetVertexAttribLui64vNV; #define glGetVertexAttribLui64vNV GLeeFuncPtr_glGetVertexAttribLui64vNV #endif #ifndef GLEE_H_DEFINED_glVertexAttribLFormatNV #define GLEE_H_DEFINED_glVertexAttribLFormatNV typedef void (APIENTRYP GLEEPFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride); GLEE_EXTERN GLEEPFNGLVERTEXATTRIBLFORMATNVPROC GLeeFuncPtr_glVertexAttribLFormatNV; #define glVertexAttribLFormatNV GLeeFuncPtr_glVertexAttribLFormatNV #endif #endif /* GL_NV_multisample_coverage */ #ifndef GL_NV_multisample_coverage #define GL_NV_multisample_coverage 1 #define __GLEE_GL_NV_multisample_coverage 1 /* Constants */ #define GL_COVERAGE_SAMPLES_NV 0x80A9 #define GL_COLOR_SAMPLES_NV 0x8E20 #endif /* GL_AMD_name_gen_delete */ #ifndef GL_AMD_name_gen_delete #define GL_AMD_name_gen_delete 1 #define __GLEE_GL_AMD_name_gen_delete 1 /* Constants */ #define GL_DATA_BUFFER_AMD 0x9151 #define GL_PERFORMANCE_MONITOR_AMD 0x9152 #define GL_QUERY_OBJECT_AMD 0x9153 #define GL_VERTEX_ARRAY_OBJECT_AMD 0x9154 #define GL_SAMPLER_OBJECT_AMD 0x9155 #ifndef GLEE_H_DEFINED_glGenNamesAMD #define GLEE_H_DEFINED_glGenNamesAMD typedef void (APIENTRYP GLEEPFNGLGENNAMESAMDPROC) (GLenum identifier, GLuint num, GLuint * names); GLEE_EXTERN GLEEPFNGLGENNAMESAMDPROC GLeeFuncPtr_glGenNamesAMD; #define glGenNamesAMD GLeeFuncPtr_glGenNamesAMD #endif #ifndef GLEE_H_DEFINED_glDeleteNamesAMD #define GLEE_H_DEFINED_glDeleteNamesAMD typedef void (APIENTRYP GLEEPFNGLDELETENAMESAMDPROC) (GLenum identifier, GLuint num, const GLuint * names); GLEE_EXTERN GLEEPFNGLDELETENAMESAMDPROC GLeeFuncPtr_glDeleteNamesAMD; #define glDeleteNamesAMD GLeeFuncPtr_glDeleteNamesAMD #endif #ifndef GLEE_H_DEFINED_glIsNameAMD #define GLEE_H_DEFINED_glIsNameAMD typedef GLboolean (APIENTRYP GLEEPFNGLISNAMEAMDPROC) (GLenum identifier, GLuint name); GLEE_EXTERN GLEEPFNGLISNAMEAMDPROC GLeeFuncPtr_glIsNameAMD; #define glIsNameAMD GLeeFuncPtr_glIsNameAMD #endif #endif /* GL_AMD_debug_output */ #ifndef GL_AMD_debug_output #define GL_AMD_debug_output 1 #define __GLEE_GL_AMD_debug_output 1 /* Constants */ #define GL_MAX_DEBUG_MESSAGE_LENGTH_AMD 0x9143 #define GL_MAX_DEBUG_LOGGED_MESSAGES_AMD 0x9144 #define GL_DEBUG_LOGGED_MESSAGES_AMD 0x9145 #define GL_DEBUG_SEVERITY_HIGH_AMD 0x9146 #define GL_DEBUG_SEVERITY_MEDIUM_AMD 0x9147 #define GL_DEBUG_SEVERITY_LOW_AMD 0x9148 #define GL_DEBUG_CATEGORY_API_ERROR_AMD 0x9149 #define GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD 0x914A #define GL_DEBUG_CATEGORY_DEPRECATION_AMD 0x914B #define GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD 0x914C #define GL_DEBUG_CATEGORY_PERFORMANCE_AMD 0x914D #define GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD 0x914E #define GL_DEBUG_CATEGORY_APPLICATION_AMD 0x914F #define GL_DEBUG_CATEGORY_OTHER_AMD 0x9150 #ifndef GLEE_H_DEFINED_glDebugMessageEnableAMD #define GLEE_H_DEFINED_glDebugMessageEnableAMD typedef void (APIENTRYP GLEEPFNGLDEBUGMESSAGEENABLEAMDPROC) (GLenum category, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); GLEE_EXTERN GLEEPFNGLDEBUGMESSAGEENABLEAMDPROC GLeeFuncPtr_glDebugMessageEnableAMD; #define glDebugMessageEnableAMD GLeeFuncPtr_glDebugMessageEnableAMD #endif #ifndef GLEE_H_DEFINED_glDebugMessageInsertAMD #define GLEE_H_DEFINED_glDebugMessageInsertAMD typedef void (APIENTRYP GLEEPFNGLDEBUGMESSAGEINSERTAMDPROC) (GLenum category, GLenum severity, GLuint id, GLsizei length, const GLchar * buf); GLEE_EXTERN GLEEPFNGLDEBUGMESSAGEINSERTAMDPROC GLeeFuncPtr_glDebugMessageInsertAMD; #define glDebugMessageInsertAMD GLeeFuncPtr_glDebugMessageInsertAMD #endif #ifndef GLEE_H_DEFINED_glDebugMessageCallbackAMD #define GLEE_H_DEFINED_glDebugMessageCallbackAMD typedef void (APIENTRYP GLEEPFNGLDEBUGMESSAGECALLBACKAMDPROC) (GLDEBUGPROCAMD callback, GLvoid * userParam); GLEE_EXTERN GLEEPFNGLDEBUGMESSAGECALLBACKAMDPROC GLeeFuncPtr_glDebugMessageCallbackAMD; #define glDebugMessageCallbackAMD GLeeFuncPtr_glDebugMessageCallbackAMD #endif #ifndef GLEE_H_DEFINED_glGetDebugMessageLogAMD #define GLEE_H_DEFINED_glGetDebugMessageLogAMD typedef GLuint (APIENTRYP GLEEPFNGLGETDEBUGMESSAGELOGAMDPROC) (GLuint count, GLsizei bufsize, GLenum * categories, GLuint * severities, GLuint * ids, GLsizei * lengths, GLchar * message); GLEE_EXTERN GLEEPFNGLGETDEBUGMESSAGELOGAMDPROC GLeeFuncPtr_glGetDebugMessageLogAMD; #define glGetDebugMessageLogAMD GLeeFuncPtr_glGetDebugMessageLogAMD #endif #endif /* GL_AMD_transform_feedback3_lines_triangles */ #ifndef GL_AMD_transform_feedback3_lines_triangles #define GL_AMD_transform_feedback3_lines_triangles 1 #define __GLEE_GL_AMD_transform_feedback3_lines_triangles 1 /* Constants */ #endif /* GL_AMD_depth_clamp_separate */ #ifndef GL_AMD_depth_clamp_separate #define GL_AMD_depth_clamp_separate 1 #define __GLEE_GL_AMD_depth_clamp_separate 1 /* Constants */ #define GL_DEPTH_CLAMP_NEAR_AMD 0x901E #define GL_DEPTH_CLAMP_FAR_AMD 0x901F #endif /* GL_EXT_texture_sRGB_decode */ #ifndef GL_EXT_texture_sRGB_decode #define GL_EXT_texture_sRGB_decode 1 #define __GLEE_GL_EXT_texture_sRGB_decode 1 /* Constants */ #define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 #define GL_DECODE_EXT 0x8A49 #define GL_SKIP_DECODE_EXT 0x8A4A #endif /* GL_NV_texture_multisample */ #ifndef GL_NV_texture_multisample #define GL_NV_texture_multisample 1 #define __GLEE_GL_NV_texture_multisample 1 /* Constants */ #define GL_TEXTURE_COVERAGE_SAMPLES_NV 0x9045 #define GL_TEXTURE_COLOR_SAMPLES_NV 0x9046 #ifndef GLEE_H_DEFINED_glTexImage2DMultisampleCoverageNV #define GLEE_H_DEFINED_glTexImage2DMultisampleCoverageNV typedef void (APIENTRYP GLEEPFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); GLEE_EXTERN GLEEPFNGLTEXIMAGE2DMULTISAMPLECOVERAGENVPROC GLeeFuncPtr_glTexImage2DMultisampleCoverageNV; #define glTexImage2DMultisampleCoverageNV GLeeFuncPtr_glTexImage2DMultisampleCoverageNV #endif #ifndef GLEE_H_DEFINED_glTexImage3DMultisampleCoverageNV #define GLEE_H_DEFINED_glTexImage3DMultisampleCoverageNV typedef void (APIENTRYP GLEEPFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); GLEE_EXTERN GLEEPFNGLTEXIMAGE3DMULTISAMPLECOVERAGENVPROC GLeeFuncPtr_glTexImage3DMultisampleCoverageNV; #define glTexImage3DMultisampleCoverageNV GLeeFuncPtr_glTexImage3DMultisampleCoverageNV #endif #ifndef GLEE_H_DEFINED_glTextureImage2DMultisampleNV #define GLEE_H_DEFINED_glTextureImage2DMultisampleNV typedef void (APIENTRYP GLEEPFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); GLEE_EXTERN GLEEPFNGLTEXTUREIMAGE2DMULTISAMPLENVPROC GLeeFuncPtr_glTextureImage2DMultisampleNV; #define glTextureImage2DMultisampleNV GLeeFuncPtr_glTextureImage2DMultisampleNV #endif #ifndef GLEE_H_DEFINED_glTextureImage3DMultisampleNV #define GLEE_H_DEFINED_glTextureImage3DMultisampleNV typedef void (APIENTRYP GLEEPFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC) (GLuint texture, GLenum target, GLsizei samples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); GLEE_EXTERN GLEEPFNGLTEXTUREIMAGE3DMULTISAMPLENVPROC GLeeFuncPtr_glTextureImage3DMultisampleNV; #define glTextureImage3DMultisampleNV GLeeFuncPtr_glTextureImage3DMultisampleNV #endif #ifndef GLEE_H_DEFINED_glTextureImage2DMultisampleCoverageNV #define GLEE_H_DEFINED_glTextureImage2DMultisampleCoverageNV typedef void (APIENTRYP GLEEPFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations); GLEE_EXTERN GLEEPFNGLTEXTUREIMAGE2DMULTISAMPLECOVERAGENVPROC GLeeFuncPtr_glTextureImage2DMultisampleCoverageNV; #define glTextureImage2DMultisampleCoverageNV GLeeFuncPtr_glTextureImage2DMultisampleCoverageNV #endif #ifndef GLEE_H_DEFINED_glTextureImage3DMultisampleCoverageNV #define GLEE_H_DEFINED_glTextureImage3DMultisampleCoverageNV typedef void (APIENTRYP GLEEPFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC) (GLuint texture, GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations); GLEE_EXTERN GLEEPFNGLTEXTUREIMAGE3DMULTISAMPLECOVERAGENVPROC GLeeFuncPtr_glTextureImage3DMultisampleCoverageNV; #define glTextureImage3DMultisampleCoverageNV GLeeFuncPtr_glTextureImage3DMultisampleCoverageNV #endif #endif /* GL_AMD_blend_minmax_factor */ #ifndef GL_AMD_blend_minmax_factor #define GL_AMD_blend_minmax_factor 1 #define __GLEE_GL_AMD_blend_minmax_factor 1 /* Constants */ #define GL_FACTOR_MIN_AMD 0x901C #define GL_FACTOR_MAX_AMD 0x901D #endif /* GL_AMD_sample_positions */ #ifndef GL_AMD_sample_positions #define GL_AMD_sample_positions 1 #define __GLEE_GL_AMD_sample_positions 1 /* Constants */ #define GL_SUBSAMPLE_DISTANCE_AMD 0x883F #ifndef GLEE_H_DEFINED_glSetMultisamplefvAMD #define GLEE_H_DEFINED_glSetMultisamplefvAMD typedef void (APIENTRYP GLEEPFNGLSETMULTISAMPLEFVAMDPROC) (GLenum pname, GLuint index, const GLfloat * val); GLEE_EXTERN GLEEPFNGLSETMULTISAMPLEFVAMDPROC GLeeFuncPtr_glSetMultisamplefvAMD; #define glSetMultisamplefvAMD GLeeFuncPtr_glSetMultisamplefvAMD #endif #endif /* GL_EXT_x11_sync_object */ #ifndef GL_EXT_x11_sync_object #define GL_EXT_x11_sync_object 1 #define __GLEE_GL_EXT_x11_sync_object 1 /* Constants */ #define GL_SYNC_X11_FENCE_EXT 0x90E1 #ifndef GLEE_H_DEFINED_glImportSyncEXT #define GLEE_H_DEFINED_glImportSyncEXT typedef GLsync (APIENTRYP GLEEPFNGLIMPORTSYNCEXTPROC) (GLenum external_sync_type, GLintptr external_sync, GLbitfield flags); GLEE_EXTERN GLEEPFNGLIMPORTSYNCEXTPROC GLeeFuncPtr_glImportSyncEXT; #define glImportSyncEXT GLeeFuncPtr_glImportSyncEXT #endif #endif /* GL_AMD_multi_draw_indirect */ #ifndef GL_AMD_multi_draw_indirect #define GL_AMD_multi_draw_indirect 1 #define __GLEE_GL_AMD_multi_draw_indirect 1 /* Constants */ #ifndef GLEE_H_DEFINED_glMultiDrawArraysIndirectAMD #define GLEE_H_DEFINED_glMultiDrawArraysIndirectAMD typedef void (APIENTRYP GLEEPFNGLMULTIDRAWARRAYSINDIRECTAMDPROC) (GLenum mode, const GLvoid * indirect, GLsizei primcount, GLsizei stride); GLEE_EXTERN GLEEPFNGLMULTIDRAWARRAYSINDIRECTAMDPROC GLeeFuncPtr_glMultiDrawArraysIndirectAMD; #define glMultiDrawArraysIndirectAMD GLeeFuncPtr_glMultiDrawArraysIndirectAMD #endif #ifndef GLEE_H_DEFINED_glMultiDrawElementsIndirectAMD #define GLEE_H_DEFINED_glMultiDrawElementsIndirectAMD typedef void (APIENTRYP GLEEPFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC) (GLenum mode, GLenum type, const GLvoid * indirect, GLsizei primcount, GLsizei stride); GLEE_EXTERN GLEEPFNGLMULTIDRAWELEMENTSINDIRECTAMDPROC GLeeFuncPtr_glMultiDrawElementsIndirectAMD; #define glMultiDrawElementsIndirectAMD GLeeFuncPtr_glMultiDrawElementsIndirectAMD #endif #endif /* GL_EXT_framebuffer_multisample_blit_scaled */ #ifndef GL_EXT_framebuffer_multisample_blit_scaled #define GL_EXT_framebuffer_multisample_blit_scaled 1 #define __GLEE_GL_EXT_framebuffer_multisample_blit_scaled 1 /* Constants */ #define GL_SCALED_RESOLVE_FASTEST_EXT 0x90BA #define GL_SCALED_RESOLVE_NICEST_EXT 0x90BB #endif /* GL_NV_path_rendering */ #ifndef GL_NV_path_rendering #define GL_NV_path_rendering 1 #define __GLEE_GL_NV_path_rendering 1 /* Constants */ #define GL_PATH_FORMAT_SVG_NV 0x9070 #define GL_PATH_FORMAT_PS_NV 0x9071 #define GL_STANDARD_FONT_NAME_NV 0x9072 #define GL_SYSTEM_FONT_NAME_NV 0x9073 #define GL_FILE_NAME_NV 0x9074 #define GL_PATH_STROKE_WIDTH_NV 0x9075 #define GL_PATH_END_CAPS_NV 0x9076 #define GL_PATH_INITIAL_END_CAP_NV 0x9077 #define GL_PATH_TERMINAL_END_CAP_NV 0x9078 #define GL_PATH_JOIN_STYLE_NV 0x9079 #define GL_PATH_MITER_LIMIT_NV 0x907A #define GL_PATH_DASH_CAPS_NV 0x907B #define GL_PATH_INITIAL_DASH_CAP_NV 0x907C #define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D #define GL_PATH_DASH_OFFSET_NV 0x907E #define GL_PATH_CLIENT_LENGTH_NV 0x907F #define GL_PATH_FILL_MODE_NV 0x9080 #define GL_PATH_FILL_MASK_NV 0x9081 #define GL_PATH_FILL_COVER_MODE_NV 0x9082 #define GL_PATH_STROKE_COVER_MODE_NV 0x9083 #define GL_PATH_STROKE_MASK_NV 0x9084 #define GL_COUNT_UP_NV 0x9088 #define GL_COUNT_DOWN_NV 0x9089 #define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A #define GL_CONVEX_HULL_NV 0x908B #define GL_BOUNDING_BOX_NV 0x908D #define GL_TRANSLATE_X_NV 0x908E #define GL_TRANSLATE_Y_NV 0x908F #define GL_TRANSLATE_2D_NV 0x9090 #define GL_TRANSLATE_3D_NV 0x9091 #define GL_AFFINE_2D_NV 0x9092 #define GL_AFFINE_3D_NV 0x9094 #define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 #define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 #define GL_UTF8_NV 0x909A #define GL_UTF16_NV 0x909B #define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C #define GL_PATH_COMMAND_COUNT_NV 0x909D #define GL_PATH_COORD_COUNT_NV 0x909E #define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F #define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 #define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 #define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 #define GL_SQUARE_NV 0x90A3 #define GL_ROUND_NV 0x90A4 #define GL_TRIANGULAR_NV 0x90A5 #define GL_BEVEL_NV 0x90A6 #define GL_MITER_REVERT_NV 0x90A7 #define GL_MITER_TRUNCATE_NV 0x90A8 #define GL_SKIP_MISSING_GLYPH_NV 0x90A9 #define GL_USE_MISSING_GLYPH_NV 0x90AA #define GL_PATH_ERROR_POSITION_NV 0x90AB #define GL_PATH_FOG_GEN_MODE_NV 0x90AC #define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD #define GL_ADJACENT_PAIRS_NV 0x90AE #define GL_FIRST_TO_REST_NV 0x90AF #define GL_PATH_GEN_MODE_NV 0x90B0 #define GL_PATH_GEN_COEFF_NV 0x90B1 #define GL_PATH_GEN_COLOR_FORMAT_NV 0x90B2 #define GL_PATH_GEN_COMPONENTS_NV 0x90B3 #define GL_PATH_STENCIL_FUNC_NV 0x90B7 #define GL_PATH_STENCIL_REF_NV 0x90B8 #define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 #define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD #define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE #define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF #define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 #define GL_MOVE_TO_RESETS_NV 0x90B5 #define GL_MOVE_TO_CONTINUES_NV 0x90B6 #define GL_CLOSE_PATH_NV 0x00 #define GL_MOVE_TO_NV 0x02 #define GL_RELATIVE_MOVE_TO_NV 0x03 #define GL_LINE_TO_NV 0x04 #define GL_RELATIVE_LINE_TO_NV 0x05 #define GL_HORIZONTAL_LINE_TO_NV 0x06 #define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 #define GL_VERTICAL_LINE_TO_NV 0x08 #define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 #define GL_QUADRATIC_CURVE_TO_NV 0x0A #define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B #define GL_CUBIC_CURVE_TO_NV 0x0C #define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D #define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E #define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F #define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 #define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 #define GL_SMALL_CCW_ARC_TO_NV 0x12 #define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 #define GL_SMALL_CW_ARC_TO_NV 0x14 #define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 #define GL_LARGE_CCW_ARC_TO_NV 0x16 #define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 #define GL_LARGE_CW_ARC_TO_NV 0x18 #define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 #define GL_RESTART_PATH_NV 0xF0 #define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 #define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 #define GL_RECT_NV 0xF6 #define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 #define GL_CIRCULAR_CW_ARC_TO_NV 0xFA #define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC #define GL_ARC_TO_NV 0xFE #define GL_RELATIVE_ARC_TO_NV 0xFF #define GL_BOLD_BIT_NV 0x01 #define GL_ITALIC_BIT_NV 0x02 #define GL_GLYPH_WIDTH_BIT_NV 0x01 #define GL_GLYPH_HEIGHT_BIT_NV 0x02 #define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 #define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 #define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 #define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 #define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 #define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 #define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 #define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 #define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 #define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 #define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 #define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 #define GL_FONT_ASCENDER_BIT_NV 0x00200000 #define GL_FONT_DESCENDER_BIT_NV 0x00400000 #define GL_FONT_HEIGHT_BIT_NV 0x00800000 #define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 #define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 #define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 #define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 #define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 #ifndef GLEE_H_DEFINED_glGenPathsNV #define GLEE_H_DEFINED_glGenPathsNV typedef GLuint (APIENTRYP GLEEPFNGLGENPATHSNVPROC) (GLsizei range); GLEE_EXTERN GLEEPFNGLGENPATHSNVPROC GLeeFuncPtr_glGenPathsNV; #define glGenPathsNV GLeeFuncPtr_glGenPathsNV #endif #ifndef GLEE_H_DEFINED_glDeletePathsNV #define GLEE_H_DEFINED_glDeletePathsNV typedef void (APIENTRYP GLEEPFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); GLEE_EXTERN GLEEPFNGLDELETEPATHSNVPROC GLeeFuncPtr_glDeletePathsNV; #define glDeletePathsNV GLeeFuncPtr_glDeletePathsNV #endif #ifndef GLEE_H_DEFINED_glIsPathNV #define GLEE_H_DEFINED_glIsPathNV typedef GLboolean (APIENTRYP GLEEPFNGLISPATHNVPROC) (GLuint path); GLEE_EXTERN GLEEPFNGLISPATHNVPROC GLeeFuncPtr_glIsPathNV; #define glIsPathNV GLeeFuncPtr_glIsPathNV #endif #ifndef GLEE_H_DEFINED_glPathCommandsNV #define GLEE_H_DEFINED_glPathCommandsNV typedef void (APIENTRYP GLEEPFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte * commands, GLsizei numCoords, GLenum coordType, const GLvoid * coords); GLEE_EXTERN GLEEPFNGLPATHCOMMANDSNVPROC GLeeFuncPtr_glPathCommandsNV; #define glPathCommandsNV GLeeFuncPtr_glPathCommandsNV #endif #ifndef GLEE_H_DEFINED_glPathCoordsNV #define GLEE_H_DEFINED_glPathCoordsNV typedef void (APIENTRYP GLEEPFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const GLvoid * coords); GLEE_EXTERN GLEEPFNGLPATHCOORDSNVPROC GLeeFuncPtr_glPathCoordsNV; #define glPathCoordsNV GLeeFuncPtr_glPathCoordsNV #endif #ifndef GLEE_H_DEFINED_glPathSubCommandsNV #define GLEE_H_DEFINED_glPathSubCommandsNV typedef void (APIENTRYP GLEEPFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte * commands, GLsizei numCoords, GLenum coordType, const GLvoid * coords); GLEE_EXTERN GLEEPFNGLPATHSUBCOMMANDSNVPROC GLeeFuncPtr_glPathSubCommandsNV; #define glPathSubCommandsNV GLeeFuncPtr_glPathSubCommandsNV #endif #ifndef GLEE_H_DEFINED_glPathSubCoordsNV #define GLEE_H_DEFINED_glPathSubCoordsNV typedef void (APIENTRYP GLEEPFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const GLvoid * coords); GLEE_EXTERN GLEEPFNGLPATHSUBCOORDSNVPROC GLeeFuncPtr_glPathSubCoordsNV; #define glPathSubCoordsNV GLeeFuncPtr_glPathSubCoordsNV #endif #ifndef GLEE_H_DEFINED_glPathStringNV #define GLEE_H_DEFINED_glPathStringNV typedef void (APIENTRYP GLEEPFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const GLvoid * pathString); GLEE_EXTERN GLEEPFNGLPATHSTRINGNVPROC GLeeFuncPtr_glPathStringNV; #define glPathStringNV GLeeFuncPtr_glPathStringNV #endif #ifndef GLEE_H_DEFINED_glPathGlyphsNV #define GLEE_H_DEFINED_glPathGlyphsNV typedef void (APIENTRYP GLEEPFNGLPATHGLYPHSNVPROC) (GLuint firstPathName, GLenum fontTarget, const GLvoid * fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const GLvoid * charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GLEE_EXTERN GLEEPFNGLPATHGLYPHSNVPROC GLeeFuncPtr_glPathGlyphsNV; #define glPathGlyphsNV GLeeFuncPtr_glPathGlyphsNV #endif #ifndef GLEE_H_DEFINED_glPathGlyphRangeNV #define GLEE_H_DEFINED_glPathGlyphRangeNV typedef void (APIENTRYP GLEEPFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const GLvoid * fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); GLEE_EXTERN GLEEPFNGLPATHGLYPHRANGENVPROC GLeeFuncPtr_glPathGlyphRangeNV; #define glPathGlyphRangeNV GLeeFuncPtr_glPathGlyphRangeNV #endif #ifndef GLEE_H_DEFINED_glWeightPathsNV #define GLEE_H_DEFINED_glWeightPathsNV typedef void (APIENTRYP GLEEPFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint * paths, const GLfloat * weights); GLEE_EXTERN GLEEPFNGLWEIGHTPATHSNVPROC GLeeFuncPtr_glWeightPathsNV; #define glWeightPathsNV GLeeFuncPtr_glWeightPathsNV #endif #ifndef GLEE_H_DEFINED_glCopyPathNV #define GLEE_H_DEFINED_glCopyPathNV typedef void (APIENTRYP GLEEPFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); GLEE_EXTERN GLEEPFNGLCOPYPATHNVPROC GLeeFuncPtr_glCopyPathNV; #define glCopyPathNV GLeeFuncPtr_glCopyPathNV #endif #ifndef GLEE_H_DEFINED_glInterpolatePathsNV #define GLEE_H_DEFINED_glInterpolatePathsNV typedef void (APIENTRYP GLEEPFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); GLEE_EXTERN GLEEPFNGLINTERPOLATEPATHSNVPROC GLeeFuncPtr_glInterpolatePathsNV; #define glInterpolatePathsNV GLeeFuncPtr_glInterpolatePathsNV #endif #ifndef GLEE_H_DEFINED_glTransformPathNV #define GLEE_H_DEFINED_glTransformPathNV typedef void (APIENTRYP GLEEPFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat * transformValues); GLEE_EXTERN GLEEPFNGLTRANSFORMPATHNVPROC GLeeFuncPtr_glTransformPathNV; #define glTransformPathNV GLeeFuncPtr_glTransformPathNV #endif #ifndef GLEE_H_DEFINED_glPathParameterivNV #define GLEE_H_DEFINED_glPathParameterivNV typedef void (APIENTRYP GLEEPFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint * value); GLEE_EXTERN GLEEPFNGLPATHPARAMETERIVNVPROC GLeeFuncPtr_glPathParameterivNV; #define glPathParameterivNV GLeeFuncPtr_glPathParameterivNV #endif #ifndef GLEE_H_DEFINED_glPathParameteriNV #define GLEE_H_DEFINED_glPathParameteriNV typedef void (APIENTRYP GLEEPFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); GLEE_EXTERN GLEEPFNGLPATHPARAMETERINVPROC GLeeFuncPtr_glPathParameteriNV; #define glPathParameteriNV GLeeFuncPtr_glPathParameteriNV #endif #ifndef GLEE_H_DEFINED_glPathParameterfvNV #define GLEE_H_DEFINED_glPathParameterfvNV typedef void (APIENTRYP GLEEPFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat * value); GLEE_EXTERN GLEEPFNGLPATHPARAMETERFVNVPROC GLeeFuncPtr_glPathParameterfvNV; #define glPathParameterfvNV GLeeFuncPtr_glPathParameterfvNV #endif #ifndef GLEE_H_DEFINED_glPathParameterfNV #define GLEE_H_DEFINED_glPathParameterfNV typedef void (APIENTRYP GLEEPFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); GLEE_EXTERN GLEEPFNGLPATHPARAMETERFNVPROC GLeeFuncPtr_glPathParameterfNV; #define glPathParameterfNV GLeeFuncPtr_glPathParameterfNV #endif #ifndef GLEE_H_DEFINED_glPathDashArrayNV #define GLEE_H_DEFINED_glPathDashArrayNV typedef void (APIENTRYP GLEEPFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat * dashArray); GLEE_EXTERN GLEEPFNGLPATHDASHARRAYNVPROC GLeeFuncPtr_glPathDashArrayNV; #define glPathDashArrayNV GLeeFuncPtr_glPathDashArrayNV #endif #ifndef GLEE_H_DEFINED_glPathStencilFuncNV #define GLEE_H_DEFINED_glPathStencilFuncNV typedef void (APIENTRYP GLEEPFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); GLEE_EXTERN GLEEPFNGLPATHSTENCILFUNCNVPROC GLeeFuncPtr_glPathStencilFuncNV; #define glPathStencilFuncNV GLeeFuncPtr_glPathStencilFuncNV #endif #ifndef GLEE_H_DEFINED_glPathStencilDepthOffsetNV #define GLEE_H_DEFINED_glPathStencilDepthOffsetNV typedef void (APIENTRYP GLEEPFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); GLEE_EXTERN GLEEPFNGLPATHSTENCILDEPTHOFFSETNVPROC GLeeFuncPtr_glPathStencilDepthOffsetNV; #define glPathStencilDepthOffsetNV GLeeFuncPtr_glPathStencilDepthOffsetNV #endif #ifndef GLEE_H_DEFINED_glStencilFillPathNV #define GLEE_H_DEFINED_glStencilFillPathNV typedef void (APIENTRYP GLEEPFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); GLEE_EXTERN GLEEPFNGLSTENCILFILLPATHNVPROC GLeeFuncPtr_glStencilFillPathNV; #define glStencilFillPathNV GLeeFuncPtr_glStencilFillPathNV #endif #ifndef GLEE_H_DEFINED_glStencilStrokePathNV #define GLEE_H_DEFINED_glStencilStrokePathNV typedef void (APIENTRYP GLEEPFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); GLEE_EXTERN GLEEPFNGLSTENCILSTROKEPATHNVPROC GLeeFuncPtr_glStencilStrokePathNV; #define glStencilStrokePathNV GLeeFuncPtr_glStencilStrokePathNV #endif #ifndef GLEE_H_DEFINED_glStencilFillPathInstancedNV #define GLEE_H_DEFINED_glStencilFillPathInstancedNV typedef void (APIENTRYP GLEEPFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat * transformValues); GLEE_EXTERN GLEEPFNGLSTENCILFILLPATHINSTANCEDNVPROC GLeeFuncPtr_glStencilFillPathInstancedNV; #define glStencilFillPathInstancedNV GLeeFuncPtr_glStencilFillPathInstancedNV #endif #ifndef GLEE_H_DEFINED_glStencilStrokePathInstancedNV #define GLEE_H_DEFINED_glStencilStrokePathInstancedNV typedef void (APIENTRYP GLEEPFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat * transformValues); GLEE_EXTERN GLEEPFNGLSTENCILSTROKEPATHINSTANCEDNVPROC GLeeFuncPtr_glStencilStrokePathInstancedNV; #define glStencilStrokePathInstancedNV GLeeFuncPtr_glStencilStrokePathInstancedNV #endif #ifndef GLEE_H_DEFINED_glPathCoverDepthFuncNV #define GLEE_H_DEFINED_glPathCoverDepthFuncNV typedef void (APIENTRYP GLEEPFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); GLEE_EXTERN GLEEPFNGLPATHCOVERDEPTHFUNCNVPROC GLeeFuncPtr_glPathCoverDepthFuncNV; #define glPathCoverDepthFuncNV GLeeFuncPtr_glPathCoverDepthFuncNV #endif #ifndef GLEE_H_DEFINED_glPathColorGenNV #define GLEE_H_DEFINED_glPathColorGenNV typedef void (APIENTRYP GLEEPFNGLPATHCOLORGENNVPROC) (GLenum color, GLenum genMode, GLenum colorFormat, const GLfloat * coeffs); GLEE_EXTERN GLEEPFNGLPATHCOLORGENNVPROC GLeeFuncPtr_glPathColorGenNV; #define glPathColorGenNV GLeeFuncPtr_glPathColorGenNV #endif #ifndef GLEE_H_DEFINED_glPathTexGenNV #define GLEE_H_DEFINED_glPathTexGenNV typedef void (APIENTRYP GLEEPFNGLPATHTEXGENNVPROC) (GLenum texCoordSet, GLenum genMode, GLint components, const GLfloat * coeffs); GLEE_EXTERN GLEEPFNGLPATHTEXGENNVPROC GLeeFuncPtr_glPathTexGenNV; #define glPathTexGenNV GLeeFuncPtr_glPathTexGenNV #endif #ifndef GLEE_H_DEFINED_glPathFogGenNV #define GLEE_H_DEFINED_glPathFogGenNV typedef void (APIENTRYP GLEEPFNGLPATHFOGGENNVPROC) (GLenum genMode); GLEE_EXTERN GLEEPFNGLPATHFOGGENNVPROC GLeeFuncPtr_glPathFogGenNV; #define glPathFogGenNV GLeeFuncPtr_glPathFogGenNV #endif #ifndef GLEE_H_DEFINED_glCoverFillPathNV #define GLEE_H_DEFINED_glCoverFillPathNV typedef void (APIENTRYP GLEEPFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); GLEE_EXTERN GLEEPFNGLCOVERFILLPATHNVPROC GLeeFuncPtr_glCoverFillPathNV; #define glCoverFillPathNV GLeeFuncPtr_glCoverFillPathNV #endif #ifndef GLEE_H_DEFINED_glCoverStrokePathNV #define GLEE_H_DEFINED_glCoverStrokePathNV typedef void (APIENTRYP GLEEPFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); GLEE_EXTERN GLEEPFNGLCOVERSTROKEPATHNVPROC GLeeFuncPtr_glCoverStrokePathNV; #define glCoverStrokePathNV GLeeFuncPtr_glCoverStrokePathNV #endif #ifndef GLEE_H_DEFINED_glCoverFillPathInstancedNV #define GLEE_H_DEFINED_glCoverFillPathInstancedNV typedef void (APIENTRYP GLEEPFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat * transformValues); GLEE_EXTERN GLEEPFNGLCOVERFILLPATHINSTANCEDNVPROC GLeeFuncPtr_glCoverFillPathInstancedNV; #define glCoverFillPathInstancedNV GLeeFuncPtr_glCoverFillPathInstancedNV #endif #ifndef GLEE_H_DEFINED_glCoverStrokePathInstancedNV #define GLEE_H_DEFINED_glCoverStrokePathInstancedNV typedef void (APIENTRYP GLEEPFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat * transformValues); GLEE_EXTERN GLEEPFNGLCOVERSTROKEPATHINSTANCEDNVPROC GLeeFuncPtr_glCoverStrokePathInstancedNV; #define glCoverStrokePathInstancedNV GLeeFuncPtr_glCoverStrokePathInstancedNV #endif #ifndef GLEE_H_DEFINED_glGetPathParameterivNV #define GLEE_H_DEFINED_glGetPathParameterivNV typedef void (APIENTRYP GLEEPFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint * value); GLEE_EXTERN GLEEPFNGLGETPATHPARAMETERIVNVPROC GLeeFuncPtr_glGetPathParameterivNV; #define glGetPathParameterivNV GLeeFuncPtr_glGetPathParameterivNV #endif #ifndef GLEE_H_DEFINED_glGetPathParameterfvNV #define GLEE_H_DEFINED_glGetPathParameterfvNV typedef void (APIENTRYP GLEEPFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat * value); GLEE_EXTERN GLEEPFNGLGETPATHPARAMETERFVNVPROC GLeeFuncPtr_glGetPathParameterfvNV; #define glGetPathParameterfvNV GLeeFuncPtr_glGetPathParameterfvNV #endif #ifndef GLEE_H_DEFINED_glGetPathCommandsNV #define GLEE_H_DEFINED_glGetPathCommandsNV typedef void (APIENTRYP GLEEPFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte * commands); GLEE_EXTERN GLEEPFNGLGETPATHCOMMANDSNVPROC GLeeFuncPtr_glGetPathCommandsNV; #define glGetPathCommandsNV GLeeFuncPtr_glGetPathCommandsNV #endif #ifndef GLEE_H_DEFINED_glGetPathCoordsNV #define GLEE_H_DEFINED_glGetPathCoordsNV typedef void (APIENTRYP GLEEPFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat * coords); GLEE_EXTERN GLEEPFNGLGETPATHCOORDSNVPROC GLeeFuncPtr_glGetPathCoordsNV; #define glGetPathCoordsNV GLeeFuncPtr_glGetPathCoordsNV #endif #ifndef GLEE_H_DEFINED_glGetPathDashArrayNV #define GLEE_H_DEFINED_glGetPathDashArrayNV typedef void (APIENTRYP GLEEPFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat * dashArray); GLEE_EXTERN GLEEPFNGLGETPATHDASHARRAYNVPROC GLeeFuncPtr_glGetPathDashArrayNV; #define glGetPathDashArrayNV GLeeFuncPtr_glGetPathDashArrayNV #endif #ifndef GLEE_H_DEFINED_glGetPathMetricsNV #define GLEE_H_DEFINED_glGetPathMetricsNV typedef void (APIENTRYP GLEEPFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLsizei stride, GLfloat * metrics); GLEE_EXTERN GLEEPFNGLGETPATHMETRICSNVPROC GLeeFuncPtr_glGetPathMetricsNV; #define glGetPathMetricsNV GLeeFuncPtr_glGetPathMetricsNV #endif #ifndef GLEE_H_DEFINED_glGetPathMetricRangeNV #define GLEE_H_DEFINED_glGetPathMetricRangeNV typedef void (APIENTRYP GLEEPFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat * metrics); GLEE_EXTERN GLEEPFNGLGETPATHMETRICRANGENVPROC GLeeFuncPtr_glGetPathMetricRangeNV; #define glGetPathMetricRangeNV GLeeFuncPtr_glGetPathMetricRangeNV #endif #ifndef GLEE_H_DEFINED_glGetPathSpacingNV #define GLEE_H_DEFINED_glGetPathSpacingNV typedef void (APIENTRYP GLEEPFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const GLvoid * paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat * returnedSpacing); GLEE_EXTERN GLEEPFNGLGETPATHSPACINGNVPROC GLeeFuncPtr_glGetPathSpacingNV; #define glGetPathSpacingNV GLeeFuncPtr_glGetPathSpacingNV #endif #ifndef GLEE_H_DEFINED_glGetPathColorGenivNV #define GLEE_H_DEFINED_glGetPathColorGenivNV typedef void (APIENTRYP GLEEPFNGLGETPATHCOLORGENIVNVPROC) (GLenum color, GLenum pname, GLint * value); GLEE_EXTERN GLEEPFNGLGETPATHCOLORGENIVNVPROC GLeeFuncPtr_glGetPathColorGenivNV; #define glGetPathColorGenivNV GLeeFuncPtr_glGetPathColorGenivNV #endif #ifndef GLEE_H_DEFINED_glGetPathColorGenfvNV #define GLEE_H_DEFINED_glGetPathColorGenfvNV typedef void (APIENTRYP GLEEPFNGLGETPATHCOLORGENFVNVPROC) (GLenum color, GLenum pname, GLfloat * value); GLEE_EXTERN GLEEPFNGLGETPATHCOLORGENFVNVPROC GLeeFuncPtr_glGetPathColorGenfvNV; #define glGetPathColorGenfvNV GLeeFuncPtr_glGetPathColorGenfvNV #endif #ifndef GLEE_H_DEFINED_glGetPathTexGenivNV #define GLEE_H_DEFINED_glGetPathTexGenivNV typedef void (APIENTRYP GLEEPFNGLGETPATHTEXGENIVNVPROC) (GLenum texCoordSet, GLenum pname, GLint * value); GLEE_EXTERN GLEEPFNGLGETPATHTEXGENIVNVPROC GLeeFuncPtr_glGetPathTexGenivNV; #define glGetPathTexGenivNV GLeeFuncPtr_glGetPathTexGenivNV #endif #ifndef GLEE_H_DEFINED_glGetPathTexGenfvNV #define GLEE_H_DEFINED_glGetPathTexGenfvNV typedef void (APIENTRYP GLEEPFNGLGETPATHTEXGENFVNVPROC) (GLenum texCoordSet, GLenum pname, GLfloat * value); GLEE_EXTERN GLEEPFNGLGETPATHTEXGENFVNVPROC GLeeFuncPtr_glGetPathTexGenfvNV; #define glGetPathTexGenfvNV GLeeFuncPtr_glGetPathTexGenfvNV #endif #ifndef GLEE_H_DEFINED_glIsPointInFillPathNV #define GLEE_H_DEFINED_glIsPointInFillPathNV typedef GLboolean (APIENTRYP GLEEPFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); GLEE_EXTERN GLEEPFNGLISPOINTINFILLPATHNVPROC GLeeFuncPtr_glIsPointInFillPathNV; #define glIsPointInFillPathNV GLeeFuncPtr_glIsPointInFillPathNV #endif #ifndef GLEE_H_DEFINED_glIsPointInStrokePathNV #define GLEE_H_DEFINED_glIsPointInStrokePathNV typedef GLboolean (APIENTRYP GLEEPFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); GLEE_EXTERN GLEEPFNGLISPOINTINSTROKEPATHNVPROC GLeeFuncPtr_glIsPointInStrokePathNV; #define glIsPointInStrokePathNV GLeeFuncPtr_glIsPointInStrokePathNV #endif #ifndef GLEE_H_DEFINED_glGetPathLengthNV #define GLEE_H_DEFINED_glGetPathLengthNV typedef GLfloat (APIENTRYP GLEEPFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); GLEE_EXTERN GLEEPFNGLGETPATHLENGTHNVPROC GLeeFuncPtr_glGetPathLengthNV; #define glGetPathLengthNV GLeeFuncPtr_glGetPathLengthNV #endif #ifndef GLEE_H_DEFINED_glPointAlongPathNV #define GLEE_H_DEFINED_glPointAlongPathNV typedef GLboolean (APIENTRYP GLEEPFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat * x, GLfloat * y, GLfloat * tangentX, GLfloat * tangentY); GLEE_EXTERN GLEEPFNGLPOINTALONGPATHNVPROC GLeeFuncPtr_glPointAlongPathNV; #define glPointAlongPathNV GLeeFuncPtr_glPointAlongPathNV #endif #endif /* GL_AMD_pinned_memory */ #ifndef GL_AMD_pinned_memory #define GL_AMD_pinned_memory 1 #define __GLEE_GL_AMD_pinned_memory 1 /* Constants */ #define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 #endif /* GL_AMD_stencil_operation_extended */ #ifndef GL_AMD_stencil_operation_extended #define GL_AMD_stencil_operation_extended 1 #define __GLEE_GL_AMD_stencil_operation_extended 1 /* Constants */ #define GL_SET_AMD 0x874A #define GL_REPLACE_VALUE_AMD 0x874B #define GL_STENCIL_OP_VALUE_AMD 0x874C #define GL_STENCIL_BACK_OP_VALUE_AMD 0x874D #ifndef GLEE_H_DEFINED_glStencilOpValueAMD #define GLEE_H_DEFINED_glStencilOpValueAMD typedef void (APIENTRYP GLEEPFNGLSTENCILOPVALUEAMDPROC) (GLenum face, GLuint value); GLEE_EXTERN GLEEPFNGLSTENCILOPVALUEAMDPROC GLeeFuncPtr_glStencilOpValueAMD; #define glStencilOpValueAMD GLeeFuncPtr_glStencilOpValueAMD #endif #endif /* GL_AMD_vertex_shader_viewport_index */ #ifndef GL_AMD_vertex_shader_viewport_index #define GL_AMD_vertex_shader_viewport_index 1 #define __GLEE_GL_AMD_vertex_shader_viewport_index 1 /* Constants */ #endif /* GL_AMD_vertex_shader_layer */ #ifndef GL_AMD_vertex_shader_layer #define GL_AMD_vertex_shader_layer 1 #define __GLEE_GL_AMD_vertex_shader_layer 1 /* Constants */ #endif /* GL_NV_bindless_texture */ #ifndef GL_NV_bindless_texture #define GL_NV_bindless_texture 1 #define __GLEE_GL_NV_bindless_texture 1 /* Constants */ #ifndef GLEE_H_DEFINED_glGetTextureHandleNV #define GLEE_H_DEFINED_glGetTextureHandleNV typedef GLuint64 (APIENTRYP GLEEPFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); GLEE_EXTERN GLEEPFNGLGETTEXTUREHANDLENVPROC GLeeFuncPtr_glGetTextureHandleNV; #define glGetTextureHandleNV GLeeFuncPtr_glGetTextureHandleNV #endif #ifndef GLEE_H_DEFINED_glGetTextureSamplerHandleNV #define GLEE_H_DEFINED_glGetTextureSamplerHandleNV typedef GLuint64 (APIENTRYP GLEEPFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); GLEE_EXTERN GLEEPFNGLGETTEXTURESAMPLERHANDLENVPROC GLeeFuncPtr_glGetTextureSamplerHandleNV; #define glGetTextureSamplerHandleNV GLeeFuncPtr_glGetTextureSamplerHandleNV #endif #ifndef GLEE_H_DEFINED_glMakeTextureHandleResidentNV #define GLEE_H_DEFINED_glMakeTextureHandleResidentNV typedef void (APIENTRYP GLEEPFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); GLEE_EXTERN GLEEPFNGLMAKETEXTUREHANDLERESIDENTNVPROC GLeeFuncPtr_glMakeTextureHandleResidentNV; #define glMakeTextureHandleResidentNV GLeeFuncPtr_glMakeTextureHandleResidentNV #endif #ifndef GLEE_H_DEFINED_glMakeTextureHandleNonResidentNV #define GLEE_H_DEFINED_glMakeTextureHandleNonResidentNV typedef void (APIENTRYP GLEEPFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); GLEE_EXTERN GLEEPFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC GLeeFuncPtr_glMakeTextureHandleNonResidentNV; #define glMakeTextureHandleNonResidentNV GLeeFuncPtr_glMakeTextureHandleNonResidentNV #endif #ifndef GLEE_H_DEFINED_glGetImageHandleNV #define GLEE_H_DEFINED_glGetImageHandleNV typedef GLuint64 (APIENTRYP GLEEPFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); GLEE_EXTERN GLEEPFNGLGETIMAGEHANDLENVPROC GLeeFuncPtr_glGetImageHandleNV; #define glGetImageHandleNV GLeeFuncPtr_glGetImageHandleNV #endif #ifndef GLEE_H_DEFINED_glMakeImageHandleResidentNV #define GLEE_H_DEFINED_glMakeImageHandleResidentNV typedef void (APIENTRYP GLEEPFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); GLEE_EXTERN GLEEPFNGLMAKEIMAGEHANDLERESIDENTNVPROC GLeeFuncPtr_glMakeImageHandleResidentNV; #define glMakeImageHandleResidentNV GLeeFuncPtr_glMakeImageHandleResidentNV #endif #ifndef GLEE_H_DEFINED_glMakeImageHandleNonResidentNV #define GLEE_H_DEFINED_glMakeImageHandleNonResidentNV typedef void (APIENTRYP GLEEPFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); GLEE_EXTERN GLEEPFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC GLeeFuncPtr_glMakeImageHandleNonResidentNV; #define glMakeImageHandleNonResidentNV GLeeFuncPtr_glMakeImageHandleNonResidentNV #endif #ifndef GLEE_H_DEFINED_glUniformHandleui64NV #define GLEE_H_DEFINED_glUniformHandleui64NV typedef void (APIENTRYP GLEEPFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); GLEE_EXTERN GLEEPFNGLUNIFORMHANDLEUI64NVPROC GLeeFuncPtr_glUniformHandleui64NV; #define glUniformHandleui64NV GLeeFuncPtr_glUniformHandleui64NV #endif #ifndef GLEE_H_DEFINED_glUniformHandleui64vNV #define GLEE_H_DEFINED_glUniformHandleui64vNV typedef void (APIENTRYP GLEEPFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 * value); GLEE_EXTERN GLEEPFNGLUNIFORMHANDLEUI64VNVPROC GLeeFuncPtr_glUniformHandleui64vNV; #define glUniformHandleui64vNV GLeeFuncPtr_glUniformHandleui64vNV #endif #ifndef GLEE_H_DEFINED_glProgramUniformHandleui64NV #define GLEE_H_DEFINED_glProgramUniformHandleui64NV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMHANDLEUI64NVPROC GLeeFuncPtr_glProgramUniformHandleui64NV; #define glProgramUniformHandleui64NV GLeeFuncPtr_glProgramUniformHandleui64NV #endif #ifndef GLEE_H_DEFINED_glProgramUniformHandleui64vNV #define GLEE_H_DEFINED_glProgramUniformHandleui64vNV typedef void (APIENTRYP GLEEPFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 * values); GLEE_EXTERN GLEEPFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC GLeeFuncPtr_glProgramUniformHandleui64vNV; #define glProgramUniformHandleui64vNV GLeeFuncPtr_glProgramUniformHandleui64vNV #endif #ifndef GLEE_H_DEFINED_glIsTextureHandleResidentNV #define GLEE_H_DEFINED_glIsTextureHandleResidentNV typedef GLboolean (APIENTRYP GLEEPFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); GLEE_EXTERN GLEEPFNGLISTEXTUREHANDLERESIDENTNVPROC GLeeFuncPtr_glIsTextureHandleResidentNV; #define glIsTextureHandleResidentNV GLeeFuncPtr_glIsTextureHandleResidentNV #endif #ifndef GLEE_H_DEFINED_glIsImageHandleResidentNV #define GLEE_H_DEFINED_glIsImageHandleResidentNV typedef GLboolean (APIENTRYP GLEEPFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); GLEE_EXTERN GLEEPFNGLISIMAGEHANDLERESIDENTNVPROC GLeeFuncPtr_glIsImageHandleResidentNV; #define glIsImageHandleResidentNV GLeeFuncPtr_glIsImageHandleResidentNV #endif #endif /* GL_NV_shader_atomic_float */ #ifndef GL_NV_shader_atomic_float #define GL_NV_shader_atomic_float 1 #define __GLEE_GL_NV_shader_atomic_float 1 /* Constants */ #endif /* GL_AMD_query_buffer_object */ #ifndef GL_AMD_query_buffer_object #define GL_AMD_query_buffer_object 1 #define __GLEE_GL_AMD_query_buffer_object 1 /* Constants */ #define GL_QUERY_BUFFER_AMD 0x9192 #define GL_QUERY_BUFFER_BINDING_AMD 0x9193 #define GL_QUERY_RESULT_NO_WAIT_AMD 0x9194 #endif /* GL_NV_compute_program5 */ #ifndef GL_NV_compute_program5 #define GL_NV_compute_program5 1 #define __GLEE_GL_NV_compute_program5 1 /* Constants */ #define GL_COMPUTE_PROGRAM_NV 0x90FB #define GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV 0x90FC #endif /* GL_NV_shader_storage_buffer_object */ #ifndef GL_NV_shader_storage_buffer_object #define GL_NV_shader_storage_buffer_object 1 #define __GLEE_GL_NV_shader_storage_buffer_object 1 /* Constants */ #endif /* GL_NV_shader_atomic_counters */ #ifndef GL_NV_shader_atomic_counters #define GL_NV_shader_atomic_counters 1 #define __GLEE_GL_NV_shader_atomic_counters 1 /* Constants */ #endif /* GL_NV_deep_texture3D */ #ifndef GL_NV_deep_texture3D #define GL_NV_deep_texture3D 1 #define __GLEE_GL_NV_deep_texture3D 1 /* Constants */ #define GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV 0x90D0 #define GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV 0x90D1 #endif /* GL_NVX_conditional_render */ #ifndef GL_NVX_conditional_render #define GL_NVX_conditional_render 1 #define __GLEE_GL_NVX_conditional_render 1 /* Constants */ #ifndef GLEE_H_DEFINED_glBeginConditionalRenderNVX #define GLEE_H_DEFINED_glBeginConditionalRenderNVX typedef void (APIENTRYP GLEEPFNGLBEGINCONDITIONALRENDERNVXPROC) (GLuint id); GLEE_EXTERN GLEEPFNGLBEGINCONDITIONALRENDERNVXPROC GLeeFuncPtr_glBeginConditionalRenderNVX; #define glBeginConditionalRenderNVX GLeeFuncPtr_glBeginConditionalRenderNVX #endif #ifndef GLEE_H_DEFINED_glEndConditionalRenderNVX #define GLEE_H_DEFINED_glEndConditionalRenderNVX typedef void (APIENTRYP GLEEPFNGLENDCONDITIONALRENDERNVXPROC) (); GLEE_EXTERN GLEEPFNGLENDCONDITIONALRENDERNVXPROC GLeeFuncPtr_glEndConditionalRenderNVX; #define glEndConditionalRenderNVX GLeeFuncPtr_glEndConditionalRenderNVX #endif #endif /* GL_AMD_sparse_texture */ #ifndef GL_AMD_sparse_texture #define GL_AMD_sparse_texture 1 #define __GLEE_GL_AMD_sparse_texture 1 /* Constants */ #define GL_VIRTUAL_PAGE_SIZE_X_AMD 0x9195 #define GL_VIRTUAL_PAGE_SIZE_Y_AMD 0x9196 #define GL_VIRTUAL_PAGE_SIZE_Z_AMD 0x9197 #define GL_MAX_SPARSE_TEXTURE_SIZE_AMD 0x9198 #define GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD 0x9199 #define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS 0x919A #define GL_MIN_SPARSE_LEVEL_AMD 0x919B #define GL_MIN_LOD_WARNING_AMD 0x919C #define GL_TEXTURE_STORAGE_SPARSE_BIT_AMD 0x00000001 #ifndef GLEE_H_DEFINED_glTexStorageSparseAMD #define GLEE_H_DEFINED_glTexStorageSparseAMD typedef void (APIENTRYP GLEEPFNGLTEXSTORAGESPARSEAMDPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); GLEE_EXTERN GLEEPFNGLTEXSTORAGESPARSEAMDPROC GLeeFuncPtr_glTexStorageSparseAMD; #define glTexStorageSparseAMD GLeeFuncPtr_glTexStorageSparseAMD #endif #ifndef GLEE_H_DEFINED_glTextureStorageSparseAMD #define GLEE_H_DEFINED_glTextureStorageSparseAMD typedef void (APIENTRYP GLEEPFNGLTEXTURESTORAGESPARSEAMDPROC) (GLuint texture, GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLsizei layers, GLbitfield flags); GLEE_EXTERN GLEEPFNGLTEXTURESTORAGESPARSEAMDPROC GLeeFuncPtr_glTextureStorageSparseAMD; #define glTextureStorageSparseAMD GLeeFuncPtr_glTextureStorageSparseAMD #endif #endif /* GL_AMD_shader_trinary_minmax */ #ifndef GL_AMD_shader_trinary_minmax #define GL_AMD_shader_trinary_minmax 1 #define __GLEE_GL_AMD_shader_trinary_minmax 1 /* Constants */ #endif /* GL_INTEL_map_texture */ #ifndef GL_INTEL_map_texture #define GL_INTEL_map_texture 1 #define __GLEE_GL_INTEL_map_texture 1 /* Constants */ #define GL_TEXTURE_MEMORY_LAYOUT_INTEL 0x83FF #define GL_LAYOUT_DEFAULT_INTEL #define GL_LAYOUT_LINEAR_INTEL #define GL_LAYOUT_LINEAR_CPU_CACHED_INTEL #ifndef GLEE_H_DEFINED_glSyncTextureINTEL #define GLEE_H_DEFINED_glSyncTextureINTEL typedef void (APIENTRYP GLEEPFNGLSYNCTEXTUREINTELPROC) (GLuint texture); GLEE_EXTERN GLEEPFNGLSYNCTEXTUREINTELPROC GLeeFuncPtr_glSyncTextureINTEL; #define glSyncTextureINTEL GLeeFuncPtr_glSyncTextureINTEL #endif #ifndef GLEE_H_DEFINED_glUnmapTexture2DINTEL #define GLEE_H_DEFINED_glUnmapTexture2DINTEL typedef void (APIENTRYP GLEEPFNGLUNMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level); GLEE_EXTERN GLEEPFNGLUNMAPTEXTURE2DINTELPROC GLeeFuncPtr_glUnmapTexture2DINTEL; #define glUnmapTexture2DINTEL GLeeFuncPtr_glUnmapTexture2DINTEL #endif #ifndef GLEE_H_DEFINED_glMapTexture2DINTEL #define GLEE_H_DEFINED_glMapTexture2DINTEL typedef GLvoid* (APIENTRYP GLEEPFNGLMAPTEXTURE2DINTELPROC) (GLuint texture, GLint level, GLbitfield access, const GLint * stride, const GLenum * layout); GLEE_EXTERN GLEEPFNGLMAPTEXTURE2DINTELPROC GLeeFuncPtr_glMapTexture2DINTEL; #define glMapTexture2DINTEL GLeeFuncPtr_glMapTexture2DINTEL #endif #endif /* GL_NV_draw_texture */ #ifndef GL_NV_draw_texture #define GL_NV_draw_texture 1 #define __GLEE_GL_NV_draw_texture 1 /* Constants */ #ifndef GLEE_H_DEFINED_glDrawTextureNV #define GLEE_H_DEFINED_glDrawTextureNV typedef void (APIENTRYP GLEEPFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); GLEE_EXTERN GLEEPFNGLDRAWTEXTURENVPROC GLeeFuncPtr_glDrawTextureNV; #define glDrawTextureNV GLeeFuncPtr_glDrawTextureNV #endif #endif /* GL_SGIX_texture_select */ #ifndef GL_SGIX_texture_select #define GL_SGIX_texture_select 1 #define __GLEE_GL_SGIX_texture_select 1 /* Constants */ #endif /* GL_INGR_blend_func_separate */ #ifndef GL_INGR_blend_func_separate #define GL_INGR_blend_func_separate 1 #define __GLEE_GL_INGR_blend_func_separate 1 /* Constants */ #ifndef GLEE_H_DEFINED_glBlendFuncSeparateINGR #define GLEE_H_DEFINED_glBlendFuncSeparateINGR typedef void (APIENTRYP GLEEPFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); GLEE_EXTERN GLEEPFNGLBLENDFUNCSEPARATEINGRPROC GLeeFuncPtr_glBlendFuncSeparateINGR; #define glBlendFuncSeparateINGR GLeeFuncPtr_glBlendFuncSeparateINGR #endif #endif /* GL_SGIX_depth_pass_instrument */ #ifndef GL_SGIX_depth_pass_instrument #define GL_SGIX_depth_pass_instrument 1 #define __GLEE_GL_SGIX_depth_pass_instrument 1 /* Constants */ #endif /* GL_SGIX_igloo_interface */ #ifndef GL_SGIX_igloo_interface #define GL_SGIX_igloo_interface 1 #define __GLEE_GL_SGIX_igloo_interface 1 /* Constants */ #ifndef GLEE_H_DEFINED_glIglooInterfaceSGIX #define GLEE_H_DEFINED_glIglooInterfaceSGIX typedef void (APIENTRYP GLEEPFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid * params); GLEE_EXTERN GLEEPFNGLIGLOOINTERFACESGIXPROC GLeeFuncPtr_glIglooInterfaceSGIX; #define glIglooInterfaceSGIX GLeeFuncPtr_glIglooInterfaceSGIX #endif #endif /* WGL */ #ifdef _WIN32 /* Extension querying variables */ GLEE_EXTERN GLboolean _GLEE_WGL_ARB_buffer_region; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_multisample; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_extensions_string; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_pixel_format; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_make_current_read; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_pbuffer; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_render_texture; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_pixel_format_float; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_framebuffer_sRGB; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_create_context; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_create_context_profile; GLEE_EXTERN GLboolean _GLEE_WGL_ARB_create_context_robustness; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_make_current_read; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_pixel_format; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_pbuffer; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_depth_float; GLEE_EXTERN GLboolean _GLEE_WGL_3DFX_multisample; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_multisample; GLEE_EXTERN GLboolean _GLEE_WGL_I3D_digital_video_control; GLEE_EXTERN GLboolean _GLEE_WGL_I3D_gamma; GLEE_EXTERN GLboolean _GLEE_WGL_I3D_genlock; GLEE_EXTERN GLboolean _GLEE_WGL_I3D_image_buffer; GLEE_EXTERN GLboolean _GLEE_WGL_I3D_swap_frame_lock; GLEE_EXTERN GLboolean _GLEE_WGL_NV_render_depth_texture; GLEE_EXTERN GLboolean _GLEE_WGL_NV_render_texture_rectangle; GLEE_EXTERN GLboolean _GLEE_WGL_ATI_pixel_format_float; GLEE_EXTERN GLboolean _GLEE_WGL_NV_float_buffer; GLEE_EXTERN GLboolean _GLEE_WGL_3DL_stereo_control; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_pixel_format_packed_float; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_framebuffer_sRGB; GLEE_EXTERN GLboolean _GLEE_WGL_NV_present_video; GLEE_EXTERN GLboolean _GLEE_WGL_NV_swap_group; GLEE_EXTERN GLboolean _GLEE_WGL_NV_gpu_affinity; GLEE_EXTERN GLboolean _GLEE_WGL_AMD_gpu_association; GLEE_EXTERN GLboolean _GLEE_WGL_NV_copy_image; GLEE_EXTERN GLboolean _GLEE_WGL_NV_multisample_coverage; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_create_context_es2_profile; GLEE_EXTERN GLboolean _GLEE_WGL_NV_DX_interop; GLEE_EXTERN GLboolean _GLEE_WGL_NV_DX_interop2; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_swap_control_tear; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_display_color_table; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_extensions_string; GLEE_EXTERN GLboolean _GLEE_WGL_EXT_swap_control; GLEE_EXTERN GLboolean _GLEE_WGL_NV_vertex_array_range; GLEE_EXTERN GLboolean _GLEE_WGL_OML_sync_control; GLEE_EXTERN GLboolean _GLEE_WGL_I3D_swap_frame_usage; GLEE_EXTERN GLboolean _GLEE_WGL_NV_video_output; /* Aliases for extension querying variables */ #define GLEE_WGL_ARB_buffer_region GLeeEnabled(&_GLEE_WGL_ARB_buffer_region) #define GLEE_WGL_ARB_multisample GLeeEnabled(&_GLEE_WGL_ARB_multisample) #define GLEE_WGL_ARB_extensions_string GLeeEnabled(&_GLEE_WGL_ARB_extensions_string) #define GLEE_WGL_ARB_pixel_format GLeeEnabled(&_GLEE_WGL_ARB_pixel_format) #define GLEE_WGL_ARB_make_current_read GLeeEnabled(&_GLEE_WGL_ARB_make_current_read) #define GLEE_WGL_ARB_pbuffer GLeeEnabled(&_GLEE_WGL_ARB_pbuffer) #define GLEE_WGL_ARB_render_texture GLeeEnabled(&_GLEE_WGL_ARB_render_texture) #define GLEE_WGL_ARB_pixel_format_float GLeeEnabled(&_GLEE_WGL_ARB_pixel_format_float) #define GLEE_WGL_ARB_framebuffer_sRGB GLeeEnabled(&_GLEE_WGL_ARB_framebuffer_sRGB) #define GLEE_WGL_ARB_create_context GLeeEnabled(&_GLEE_WGL_ARB_create_context) #define GLEE_WGL_ARB_create_context_profile GLeeEnabled(&_GLEE_WGL_ARB_create_context_profile) #define GLEE_WGL_ARB_create_context_robustness GLeeEnabled(&_GLEE_WGL_ARB_create_context_robustness) #define GLEE_WGL_EXT_make_current_read GLeeEnabled(&_GLEE_WGL_EXT_make_current_read) #define GLEE_WGL_EXT_pixel_format GLeeEnabled(&_GLEE_WGL_EXT_pixel_format) #define GLEE_WGL_EXT_pbuffer GLeeEnabled(&_GLEE_WGL_EXT_pbuffer) #define GLEE_WGL_EXT_depth_float GLeeEnabled(&_GLEE_WGL_EXT_depth_float) #define GLEE_WGL_3DFX_multisample GLeeEnabled(&_GLEE_WGL_3DFX_multisample) #define GLEE_WGL_EXT_multisample GLeeEnabled(&_GLEE_WGL_EXT_multisample) #define GLEE_WGL_I3D_digital_video_control GLeeEnabled(&_GLEE_WGL_I3D_digital_video_control) #define GLEE_WGL_I3D_gamma GLeeEnabled(&_GLEE_WGL_I3D_gamma) #define GLEE_WGL_I3D_genlock GLeeEnabled(&_GLEE_WGL_I3D_genlock) #define GLEE_WGL_I3D_image_buffer GLeeEnabled(&_GLEE_WGL_I3D_image_buffer) #define GLEE_WGL_I3D_swap_frame_lock GLeeEnabled(&_GLEE_WGL_I3D_swap_frame_lock) #define GLEE_WGL_NV_render_depth_texture GLeeEnabled(&_GLEE_WGL_NV_render_depth_texture) #define GLEE_WGL_NV_render_texture_rectangle GLeeEnabled(&_GLEE_WGL_NV_render_texture_rectangle) #define GLEE_WGL_ATI_pixel_format_float GLeeEnabled(&_GLEE_WGL_ATI_pixel_format_float) #define GLEE_WGL_NV_float_buffer GLeeEnabled(&_GLEE_WGL_NV_float_buffer) #define GLEE_WGL_3DL_stereo_control GLeeEnabled(&_GLEE_WGL_3DL_stereo_control) #define GLEE_WGL_EXT_pixel_format_packed_float GLeeEnabled(&_GLEE_WGL_EXT_pixel_format_packed_float) #define GLEE_WGL_EXT_framebuffer_sRGB GLeeEnabled(&_GLEE_WGL_EXT_framebuffer_sRGB) #define GLEE_WGL_NV_present_video GLeeEnabled(&_GLEE_WGL_NV_present_video) #define GLEE_WGL_NV_swap_group GLeeEnabled(&_GLEE_WGL_NV_swap_group) #define GLEE_WGL_NV_gpu_affinity GLeeEnabled(&_GLEE_WGL_NV_gpu_affinity) #define GLEE_WGL_AMD_gpu_association GLeeEnabled(&_GLEE_WGL_AMD_gpu_association) #define GLEE_WGL_NV_copy_image GLeeEnabled(&_GLEE_WGL_NV_copy_image) #define GLEE_WGL_NV_multisample_coverage GLeeEnabled(&_GLEE_WGL_NV_multisample_coverage) #define GLEE_WGL_EXT_create_context_es2_profile GLeeEnabled(&_GLEE_WGL_EXT_create_context_es2_profile) #define GLEE_WGL_NV_DX_interop GLeeEnabled(&_GLEE_WGL_NV_DX_interop) #define GLEE_WGL_NV_DX_interop2 GLeeEnabled(&_GLEE_WGL_NV_DX_interop2) #define GLEE_WGL_EXT_swap_control_tear GLeeEnabled(&_GLEE_WGL_EXT_swap_control_tear) #define GLEE_WGL_EXT_display_color_table GLeeEnabled(&_GLEE_WGL_EXT_display_color_table) #define GLEE_WGL_EXT_extensions_string GLeeEnabled(&_GLEE_WGL_EXT_extensions_string) #define GLEE_WGL_EXT_swap_control GLeeEnabled(&_GLEE_WGL_EXT_swap_control) #define GLEE_WGL_NV_vertex_array_range GLeeEnabled(&_GLEE_WGL_NV_vertex_array_range) #define GLEE_WGL_OML_sync_control GLeeEnabled(&_GLEE_WGL_OML_sync_control) #define GLEE_WGL_I3D_swap_frame_usage GLeeEnabled(&_GLEE_WGL_I3D_swap_frame_usage) #define GLEE_WGL_NV_video_output GLeeEnabled(&_GLEE_WGL_NV_video_output) /* WGL_ARB_buffer_region */ #ifndef WGL_ARB_buffer_region #define WGL_ARB_buffer_region 1 #define __GLEE_WGL_ARB_buffer_region 1 /* Constants */ #define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001 #define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002 #define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004 #define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008 #ifndef GLEE_H_DEFINED_wglCreateBufferRegionARB #define GLEE_H_DEFINED_wglCreateBufferRegionARB typedef HANDLE (APIENTRYP GLEEPFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType); GLEE_EXTERN GLEEPFNWGLCREATEBUFFERREGIONARBPROC GLeeFuncPtr_wglCreateBufferRegionARB; #define wglCreateBufferRegionARB GLeeFuncPtr_wglCreateBufferRegionARB #endif #ifndef GLEE_H_DEFINED_wglDeleteBufferRegionARB #define GLEE_H_DEFINED_wglDeleteBufferRegionARB typedef VOID (APIENTRYP GLEEPFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion); GLEE_EXTERN GLEEPFNWGLDELETEBUFFERREGIONARBPROC GLeeFuncPtr_wglDeleteBufferRegionARB; #define wglDeleteBufferRegionARB GLeeFuncPtr_wglDeleteBufferRegionARB #endif #ifndef GLEE_H_DEFINED_wglSaveBufferRegionARB #define GLEE_H_DEFINED_wglSaveBufferRegionARB typedef BOOL (APIENTRYP GLEEPFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height); GLEE_EXTERN GLEEPFNWGLSAVEBUFFERREGIONARBPROC GLeeFuncPtr_wglSaveBufferRegionARB; #define wglSaveBufferRegionARB GLeeFuncPtr_wglSaveBufferRegionARB #endif #ifndef GLEE_H_DEFINED_wglRestoreBufferRegionARB #define GLEE_H_DEFINED_wglRestoreBufferRegionARB typedef BOOL (APIENTRYP GLEEPFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc); GLEE_EXTERN GLEEPFNWGLRESTOREBUFFERREGIONARBPROC GLeeFuncPtr_wglRestoreBufferRegionARB; #define wglRestoreBufferRegionARB GLeeFuncPtr_wglRestoreBufferRegionARB #endif #endif /* WGL_ARB_multisample */ #ifndef WGL_ARB_multisample #define WGL_ARB_multisample 1 #define __GLEE_WGL_ARB_multisample 1 /* Constants */ #define WGL_SAMPLE_BUFFERS_ARB 0x2041 #define WGL_SAMPLES_ARB 0x2042 #endif /* WGL_ARB_extensions_string */ #ifndef WGL_ARB_extensions_string #define WGL_ARB_extensions_string 1 #define __GLEE_WGL_ARB_extensions_string 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglGetExtensionsStringARB #define GLEE_H_DEFINED_wglGetExtensionsStringARB typedef const char * (APIENTRYP GLEEPFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc); GLEE_EXTERN GLEEPFNWGLGETEXTENSIONSSTRINGARBPROC GLeeFuncPtr_wglGetExtensionsStringARB; #define wglGetExtensionsStringARB GLeeFuncPtr_wglGetExtensionsStringARB #endif #endif /* WGL_ARB_pixel_format */ #ifndef WGL_ARB_pixel_format #define WGL_ARB_pixel_format 1 #define __GLEE_WGL_ARB_pixel_format 1 /* Constants */ #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 #define WGL_DRAW_TO_WINDOW_ARB 0x2001 #define WGL_DRAW_TO_BITMAP_ARB 0x2002 #define WGL_ACCELERATION_ARB 0x2003 #define WGL_NEED_PALETTE_ARB 0x2004 #define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005 #define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006 #define WGL_SWAP_METHOD_ARB 0x2007 #define WGL_NUMBER_OVERLAYS_ARB 0x2008 #define WGL_NUMBER_UNDERLAYS_ARB 0x2009 #define WGL_TRANSPARENT_ARB 0x200A #define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037 #define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038 #define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039 #define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A #define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B #define WGL_SHARE_DEPTH_ARB 0x200C #define WGL_SHARE_STENCIL_ARB 0x200D #define WGL_SHARE_ACCUM_ARB 0x200E #define WGL_SUPPORT_GDI_ARB 0x200F #define WGL_SUPPORT_OPENGL_ARB 0x2010 #define WGL_DOUBLE_BUFFER_ARB 0x2011 #define WGL_STEREO_ARB 0x2012 #define WGL_PIXEL_TYPE_ARB 0x2013 #define WGL_COLOR_BITS_ARB 0x2014 #define WGL_RED_BITS_ARB 0x2015 #define WGL_RED_SHIFT_ARB 0x2016 #define WGL_GREEN_BITS_ARB 0x2017 #define WGL_GREEN_SHIFT_ARB 0x2018 #define WGL_BLUE_BITS_ARB 0x2019 #define WGL_BLUE_SHIFT_ARB 0x201A #define WGL_ALPHA_BITS_ARB 0x201B #define WGL_ALPHA_SHIFT_ARB 0x201C #define WGL_ACCUM_BITS_ARB 0x201D #define WGL_ACCUM_RED_BITS_ARB 0x201E #define WGL_ACCUM_GREEN_BITS_ARB 0x201F #define WGL_ACCUM_BLUE_BITS_ARB 0x2020 #define WGL_ACCUM_ALPHA_BITS_ARB 0x2021 #define WGL_DEPTH_BITS_ARB 0x2022 #define WGL_STENCIL_BITS_ARB 0x2023 #define WGL_AUX_BUFFERS_ARB 0x2024 #define WGL_NO_ACCELERATION_ARB 0x2025 #define WGL_GENERIC_ACCELERATION_ARB 0x2026 #define WGL_FULL_ACCELERATION_ARB 0x2027 #define WGL_SWAP_EXCHANGE_ARB 0x2028 #define WGL_SWAP_COPY_ARB 0x2029 #define WGL_SWAP_UNDEFINED_ARB 0x202A #define WGL_TYPE_RGBA_ARB 0x202B #define WGL_TYPE_COLORINDEX_ARB 0x202C #ifndef GLEE_H_DEFINED_wglGetPixelFormatAttribivARB #define GLEE_H_DEFINED_wglGetPixelFormatAttribivARB typedef BOOL (APIENTRYP GLEEPFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int * piAttributes, int * piValues); GLEE_EXTERN GLEEPFNWGLGETPIXELFORMATATTRIBIVARBPROC GLeeFuncPtr_wglGetPixelFormatAttribivARB; #define wglGetPixelFormatAttribivARB GLeeFuncPtr_wglGetPixelFormatAttribivARB #endif #ifndef GLEE_H_DEFINED_wglGetPixelFormatAttribfvARB #define GLEE_H_DEFINED_wglGetPixelFormatAttribfvARB typedef BOOL (APIENTRYP GLEEPFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int * piAttributes, FLOAT * pfValues); GLEE_EXTERN GLEEPFNWGLGETPIXELFORMATATTRIBFVARBPROC GLeeFuncPtr_wglGetPixelFormatAttribfvARB; #define wglGetPixelFormatAttribfvARB GLeeFuncPtr_wglGetPixelFormatAttribfvARB #endif #ifndef GLEE_H_DEFINED_wglChoosePixelFormatARB #define GLEE_H_DEFINED_wglChoosePixelFormatARB typedef BOOL (APIENTRYP GLEEPFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int * piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int * piFormats, UINT * nNumFormats); GLEE_EXTERN GLEEPFNWGLCHOOSEPIXELFORMATARBPROC GLeeFuncPtr_wglChoosePixelFormatARB; #define wglChoosePixelFormatARB GLeeFuncPtr_wglChoosePixelFormatARB #endif #endif /* WGL_ARB_make_current_read */ #ifndef WGL_ARB_make_current_read #define WGL_ARB_make_current_read 1 #define __GLEE_WGL_ARB_make_current_read 1 /* Constants */ #define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043 #define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 #ifndef GLEE_H_DEFINED_wglMakeContextCurrentARB #define GLEE_H_DEFINED_wglMakeContextCurrentARB typedef BOOL (APIENTRYP GLEEPFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); GLEE_EXTERN GLEEPFNWGLMAKECONTEXTCURRENTARBPROC GLeeFuncPtr_wglMakeContextCurrentARB; #define wglMakeContextCurrentARB GLeeFuncPtr_wglMakeContextCurrentARB #endif #ifndef GLEE_H_DEFINED_wglGetCurrentReadDCARB #define GLEE_H_DEFINED_wglGetCurrentReadDCARB typedef HDC (APIENTRYP GLEEPFNWGLGETCURRENTREADDCARBPROC) (); GLEE_EXTERN GLEEPFNWGLGETCURRENTREADDCARBPROC GLeeFuncPtr_wglGetCurrentReadDCARB; #define wglGetCurrentReadDCARB GLeeFuncPtr_wglGetCurrentReadDCARB #endif #endif /* WGL_ARB_pbuffer */ #ifndef WGL_ARB_pbuffer #define WGL_ARB_pbuffer 1 #define __GLEE_WGL_ARB_pbuffer 1 /* Constants */ #define WGL_DRAW_TO_PBUFFER_ARB 0x202D #define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E #define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F #define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030 #define WGL_PBUFFER_LARGEST_ARB 0x2033 #define WGL_PBUFFER_WIDTH_ARB 0x2034 #define WGL_PBUFFER_HEIGHT_ARB 0x2035 #define WGL_PBUFFER_LOST_ARB 0x2036 #ifndef GLEE_H_DEFINED_wglCreatePbufferARB #define GLEE_H_DEFINED_wglCreatePbufferARB typedef HPBUFFERARB (APIENTRYP GLEEPFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int * piAttribList); GLEE_EXTERN GLEEPFNWGLCREATEPBUFFERARBPROC GLeeFuncPtr_wglCreatePbufferARB; #define wglCreatePbufferARB GLeeFuncPtr_wglCreatePbufferARB #endif #ifndef GLEE_H_DEFINED_wglGetPbufferDCARB #define GLEE_H_DEFINED_wglGetPbufferDCARB typedef HDC (APIENTRYP GLEEPFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer); GLEE_EXTERN GLEEPFNWGLGETPBUFFERDCARBPROC GLeeFuncPtr_wglGetPbufferDCARB; #define wglGetPbufferDCARB GLeeFuncPtr_wglGetPbufferDCARB #endif #ifndef GLEE_H_DEFINED_wglReleasePbufferDCARB #define GLEE_H_DEFINED_wglReleasePbufferDCARB typedef int (APIENTRYP GLEEPFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC); GLEE_EXTERN GLEEPFNWGLRELEASEPBUFFERDCARBPROC GLeeFuncPtr_wglReleasePbufferDCARB; #define wglReleasePbufferDCARB GLeeFuncPtr_wglReleasePbufferDCARB #endif #ifndef GLEE_H_DEFINED_wglDestroyPbufferARB #define GLEE_H_DEFINED_wglDestroyPbufferARB typedef BOOL (APIENTRYP GLEEPFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer); GLEE_EXTERN GLEEPFNWGLDESTROYPBUFFERARBPROC GLeeFuncPtr_wglDestroyPbufferARB; #define wglDestroyPbufferARB GLeeFuncPtr_wglDestroyPbufferARB #endif #ifndef GLEE_H_DEFINED_wglQueryPbufferARB #define GLEE_H_DEFINED_wglQueryPbufferARB typedef BOOL (APIENTRYP GLEEPFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int * piValue); GLEE_EXTERN GLEEPFNWGLQUERYPBUFFERARBPROC GLeeFuncPtr_wglQueryPbufferARB; #define wglQueryPbufferARB GLeeFuncPtr_wglQueryPbufferARB #endif #endif /* WGL_ARB_render_texture */ #ifndef WGL_ARB_render_texture #define WGL_ARB_render_texture 1 #define __GLEE_WGL_ARB_render_texture 1 /* Constants */ #define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070 #define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071 #define WGL_TEXTURE_FORMAT_ARB 0x2072 #define WGL_TEXTURE_TARGET_ARB 0x2073 #define WGL_MIPMAP_TEXTURE_ARB 0x2074 #define WGL_TEXTURE_RGB_ARB 0x2075 #define WGL_TEXTURE_RGBA_ARB 0x2076 #define WGL_NO_TEXTURE_ARB 0x2077 #define WGL_TEXTURE_CUBE_MAP_ARB 0x2078 #define WGL_TEXTURE_1D_ARB 0x2079 #define WGL_TEXTURE_2D_ARB 0x207A #define WGL_MIPMAP_LEVEL_ARB 0x207B #define WGL_CUBE_MAP_FACE_ARB 0x207C #define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D #define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E #define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F #define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080 #define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081 #define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082 #define WGL_FRONT_LEFT_ARB 0x2083 #define WGL_FRONT_RIGHT_ARB 0x2084 #define WGL_BACK_LEFT_ARB 0x2085 #define WGL_BACK_RIGHT_ARB 0x2086 #define WGL_AUX0_ARB 0x2087 #define WGL_AUX1_ARB 0x2088 #define WGL_AUX2_ARB 0x2089 #define WGL_AUX3_ARB 0x208A #define WGL_AUX4_ARB 0x208B #define WGL_AUX5_ARB 0x208C #define WGL_AUX6_ARB 0x208D #define WGL_AUX7_ARB 0x208E #define WGL_AUX8_ARB 0x208F #define WGL_AUX9_ARB 0x2090 #ifndef GLEE_H_DEFINED_wglBindTexImageARB #define GLEE_H_DEFINED_wglBindTexImageARB typedef BOOL (APIENTRYP GLEEPFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); GLEE_EXTERN GLEEPFNWGLBINDTEXIMAGEARBPROC GLeeFuncPtr_wglBindTexImageARB; #define wglBindTexImageARB GLeeFuncPtr_wglBindTexImageARB #endif #ifndef GLEE_H_DEFINED_wglReleaseTexImageARB #define GLEE_H_DEFINED_wglReleaseTexImageARB typedef BOOL (APIENTRYP GLEEPFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer); GLEE_EXTERN GLEEPFNWGLRELEASETEXIMAGEARBPROC GLeeFuncPtr_wglReleaseTexImageARB; #define wglReleaseTexImageARB GLeeFuncPtr_wglReleaseTexImageARB #endif #ifndef GLEE_H_DEFINED_wglSetPbufferAttribARB #define GLEE_H_DEFINED_wglSetPbufferAttribARB typedef BOOL (APIENTRYP GLEEPFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int * piAttribList); GLEE_EXTERN GLEEPFNWGLSETPBUFFERATTRIBARBPROC GLeeFuncPtr_wglSetPbufferAttribARB; #define wglSetPbufferAttribARB GLeeFuncPtr_wglSetPbufferAttribARB #endif #endif /* WGL_ARB_pixel_format_float */ #ifndef WGL_ARB_pixel_format_float #define WGL_ARB_pixel_format_float 1 #define __GLEE_WGL_ARB_pixel_format_float 1 /* Constants */ #define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0 #endif /* WGL_ARB_framebuffer_sRGB */ #ifndef WGL_ARB_framebuffer_sRGB #define WGL_ARB_framebuffer_sRGB 1 #define __GLEE_WGL_ARB_framebuffer_sRGB 1 /* Constants */ #define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9 #endif /* WGL_ARB_create_context */ #ifndef WGL_ARB_create_context #define WGL_ARB_create_context 1 #define __GLEE_WGL_ARB_create_context 1 /* Constants */ #define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001 #define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 #define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091 #define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092 #define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093 #define WGL_CONTEXT_FLAGS_ARB 0x2094 #define ERROR_INVALID_VERSION_ARB 0x2095 #ifndef GLEE_H_DEFINED_wglCreateContextAttribsARB #define GLEE_H_DEFINED_wglCreateContextAttribsARB typedef HGLRC (APIENTRYP GLEEPFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int * attribList); GLEE_EXTERN GLEEPFNWGLCREATECONTEXTATTRIBSARBPROC GLeeFuncPtr_wglCreateContextAttribsARB; #define wglCreateContextAttribsARB GLeeFuncPtr_wglCreateContextAttribsARB #endif #endif /* WGL_ARB_create_context_profile */ #ifndef WGL_ARB_create_context_profile #define WGL_ARB_create_context_profile 1 #define __GLEE_WGL_ARB_create_context_profile 1 /* Constants */ #define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126 #define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 #define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 #define ERROR_INVALID_PROFILE_ARB 0x2096 #endif /* WGL_ARB_create_context_robustness */ #ifndef WGL_ARB_create_context_robustness #define WGL_ARB_create_context_robustness 1 #define __GLEE_WGL_ARB_create_context_robustness 1 /* Constants */ #define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 #define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252 #define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 #define WGL_NO_RESET_NOTIFICATION_ARB 0x8261 #endif /* WGL_EXT_make_current_read */ #ifndef WGL_EXT_make_current_read #define WGL_EXT_make_current_read 1 #define __GLEE_WGL_EXT_make_current_read 1 /* Constants */ #define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043 #ifndef GLEE_H_DEFINED_wglMakeContextCurrentEXT #define GLEE_H_DEFINED_wglMakeContextCurrentEXT typedef BOOL (APIENTRYP GLEEPFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc); GLEE_EXTERN GLEEPFNWGLMAKECONTEXTCURRENTEXTPROC GLeeFuncPtr_wglMakeContextCurrentEXT; #define wglMakeContextCurrentEXT GLeeFuncPtr_wglMakeContextCurrentEXT #endif #ifndef GLEE_H_DEFINED_wglGetCurrentReadDCEXT #define GLEE_H_DEFINED_wglGetCurrentReadDCEXT typedef HDC (APIENTRYP GLEEPFNWGLGETCURRENTREADDCEXTPROC) (); GLEE_EXTERN GLEEPFNWGLGETCURRENTREADDCEXTPROC GLeeFuncPtr_wglGetCurrentReadDCEXT; #define wglGetCurrentReadDCEXT GLeeFuncPtr_wglGetCurrentReadDCEXT #endif #endif /* WGL_EXT_pixel_format */ #ifndef WGL_EXT_pixel_format #define WGL_EXT_pixel_format 1 #define __GLEE_WGL_EXT_pixel_format 1 /* Constants */ #define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000 #define WGL_DRAW_TO_WINDOW_EXT 0x2001 #define WGL_DRAW_TO_BITMAP_EXT 0x2002 #define WGL_ACCELERATION_EXT 0x2003 #define WGL_NEED_PALETTE_EXT 0x2004 #define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005 #define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006 #define WGL_SWAP_METHOD_EXT 0x2007 #define WGL_NUMBER_OVERLAYS_EXT 0x2008 #define WGL_NUMBER_UNDERLAYS_EXT 0x2009 #define WGL_TRANSPARENT_EXT 0x200A #define WGL_TRANSPARENT_VALUE_EXT 0x200B #define WGL_SHARE_DEPTH_EXT 0x200C #define WGL_SHARE_STENCIL_EXT 0x200D #define WGL_SHARE_ACCUM_EXT 0x200E #define WGL_SUPPORT_GDI_EXT 0x200F #define WGL_SUPPORT_OPENGL_EXT 0x2010 #define WGL_DOUBLE_BUFFER_EXT 0x2011 #define WGL_STEREO_EXT 0x2012 #define WGL_PIXEL_TYPE_EXT 0x2013 #define WGL_COLOR_BITS_EXT 0x2014 #define WGL_RED_BITS_EXT 0x2015 #define WGL_RED_SHIFT_EXT 0x2016 #define WGL_GREEN_BITS_EXT 0x2017 #define WGL_GREEN_SHIFT_EXT 0x2018 #define WGL_BLUE_BITS_EXT 0x2019 #define WGL_BLUE_SHIFT_EXT 0x201A #define WGL_ALPHA_BITS_EXT 0x201B #define WGL_ALPHA_SHIFT_EXT 0x201C #define WGL_ACCUM_BITS_EXT 0x201D #define WGL_ACCUM_RED_BITS_EXT 0x201E #define WGL_ACCUM_GREEN_BITS_EXT 0x201F #define WGL_ACCUM_BLUE_BITS_EXT 0x2020 #define WGL_ACCUM_ALPHA_BITS_EXT 0x2021 #define WGL_DEPTH_BITS_EXT 0x2022 #define WGL_STENCIL_BITS_EXT 0x2023 #define WGL_AUX_BUFFERS_EXT 0x2024 #define WGL_NO_ACCELERATION_EXT 0x2025 #define WGL_GENERIC_ACCELERATION_EXT 0x2026 #define WGL_FULL_ACCELERATION_EXT 0x2027 #define WGL_SWAP_EXCHANGE_EXT 0x2028 #define WGL_SWAP_COPY_EXT 0x2029 #define WGL_SWAP_UNDEFINED_EXT 0x202A #define WGL_TYPE_RGBA_EXT 0x202B #define WGL_TYPE_COLORINDEX_EXT 0x202C #ifndef GLEE_H_DEFINED_wglGetPixelFormatAttribivEXT #define GLEE_H_DEFINED_wglGetPixelFormatAttribivEXT typedef BOOL (APIENTRYP GLEEPFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int * piAttributes, int * piValues); GLEE_EXTERN GLEEPFNWGLGETPIXELFORMATATTRIBIVEXTPROC GLeeFuncPtr_wglGetPixelFormatAttribivEXT; #define wglGetPixelFormatAttribivEXT GLeeFuncPtr_wglGetPixelFormatAttribivEXT #endif #ifndef GLEE_H_DEFINED_wglGetPixelFormatAttribfvEXT #define GLEE_H_DEFINED_wglGetPixelFormatAttribfvEXT typedef BOOL (APIENTRYP GLEEPFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int * piAttributes, FLOAT * pfValues); GLEE_EXTERN GLEEPFNWGLGETPIXELFORMATATTRIBFVEXTPROC GLeeFuncPtr_wglGetPixelFormatAttribfvEXT; #define wglGetPixelFormatAttribfvEXT GLeeFuncPtr_wglGetPixelFormatAttribfvEXT #endif #ifndef GLEE_H_DEFINED_wglChoosePixelFormatEXT #define GLEE_H_DEFINED_wglChoosePixelFormatEXT typedef BOOL (APIENTRYP GLEEPFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int * piAttribIList, const FLOAT * pfAttribFList, UINT nMaxFormats, int * piFormats, UINT * nNumFormats); GLEE_EXTERN GLEEPFNWGLCHOOSEPIXELFORMATEXTPROC GLeeFuncPtr_wglChoosePixelFormatEXT; #define wglChoosePixelFormatEXT GLeeFuncPtr_wglChoosePixelFormatEXT #endif #endif /* WGL_EXT_pbuffer */ #ifndef WGL_EXT_pbuffer #define WGL_EXT_pbuffer 1 #define __GLEE_WGL_EXT_pbuffer 1 /* Constants */ #define WGL_DRAW_TO_PBUFFER_EXT 0x202D #define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E #define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F #define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030 #define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031 #define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032 #define WGL_PBUFFER_LARGEST_EXT 0x2033 #define WGL_PBUFFER_WIDTH_EXT 0x2034 #define WGL_PBUFFER_HEIGHT_EXT 0x2035 #ifndef GLEE_H_DEFINED_wglCreatePbufferEXT #define GLEE_H_DEFINED_wglCreatePbufferEXT typedef HPBUFFEREXT (APIENTRYP GLEEPFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int * piAttribList); GLEE_EXTERN GLEEPFNWGLCREATEPBUFFEREXTPROC GLeeFuncPtr_wglCreatePbufferEXT; #define wglCreatePbufferEXT GLeeFuncPtr_wglCreatePbufferEXT #endif #ifndef GLEE_H_DEFINED_wglGetPbufferDCEXT #define GLEE_H_DEFINED_wglGetPbufferDCEXT typedef HDC (APIENTRYP GLEEPFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer); GLEE_EXTERN GLEEPFNWGLGETPBUFFERDCEXTPROC GLeeFuncPtr_wglGetPbufferDCEXT; #define wglGetPbufferDCEXT GLeeFuncPtr_wglGetPbufferDCEXT #endif #ifndef GLEE_H_DEFINED_wglReleasePbufferDCEXT #define GLEE_H_DEFINED_wglReleasePbufferDCEXT typedef int (APIENTRYP GLEEPFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC); GLEE_EXTERN GLEEPFNWGLRELEASEPBUFFERDCEXTPROC GLeeFuncPtr_wglReleasePbufferDCEXT; #define wglReleasePbufferDCEXT GLeeFuncPtr_wglReleasePbufferDCEXT #endif #ifndef GLEE_H_DEFINED_wglDestroyPbufferEXT #define GLEE_H_DEFINED_wglDestroyPbufferEXT typedef BOOL (APIENTRYP GLEEPFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer); GLEE_EXTERN GLEEPFNWGLDESTROYPBUFFEREXTPROC GLeeFuncPtr_wglDestroyPbufferEXT; #define wglDestroyPbufferEXT GLeeFuncPtr_wglDestroyPbufferEXT #endif #ifndef GLEE_H_DEFINED_wglQueryPbufferEXT #define GLEE_H_DEFINED_wglQueryPbufferEXT typedef BOOL (APIENTRYP GLEEPFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int * piValue); GLEE_EXTERN GLEEPFNWGLQUERYPBUFFEREXTPROC GLeeFuncPtr_wglQueryPbufferEXT; #define wglQueryPbufferEXT GLeeFuncPtr_wglQueryPbufferEXT #endif #endif /* WGL_EXT_depth_float */ #ifndef WGL_EXT_depth_float #define WGL_EXT_depth_float 1 #define __GLEE_WGL_EXT_depth_float 1 /* Constants */ #define WGL_DEPTH_FLOAT_EXT 0x2040 #endif /* WGL_3DFX_multisample */ #ifndef WGL_3DFX_multisample #define WGL_3DFX_multisample 1 #define __GLEE_WGL_3DFX_multisample 1 /* Constants */ #define WGL_SAMPLE_BUFFERS_3DFX 0x2060 #define WGL_SAMPLES_3DFX 0x2061 #endif /* WGL_EXT_multisample */ #ifndef WGL_EXT_multisample #define WGL_EXT_multisample 1 #define __GLEE_WGL_EXT_multisample 1 /* Constants */ #define WGL_SAMPLE_BUFFERS_EXT 0x2041 #define WGL_SAMPLES_EXT 0x2042 #endif /* WGL_I3D_digital_video_control */ #ifndef WGL_I3D_digital_video_control #define WGL_I3D_digital_video_control 1 #define __GLEE_WGL_I3D_digital_video_control 1 /* Constants */ #define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050 #define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051 #define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052 #define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053 #ifndef GLEE_H_DEFINED_wglGetDigitalVideoParametersI3D #define GLEE_H_DEFINED_wglGetDigitalVideoParametersI3D typedef BOOL (APIENTRYP GLEEPFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int * piValue); GLEE_EXTERN GLEEPFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC GLeeFuncPtr_wglGetDigitalVideoParametersI3D; #define wglGetDigitalVideoParametersI3D GLeeFuncPtr_wglGetDigitalVideoParametersI3D #endif #ifndef GLEE_H_DEFINED_wglSetDigitalVideoParametersI3D #define GLEE_H_DEFINED_wglSetDigitalVideoParametersI3D typedef BOOL (APIENTRYP GLEEPFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int * piValue); GLEE_EXTERN GLEEPFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC GLeeFuncPtr_wglSetDigitalVideoParametersI3D; #define wglSetDigitalVideoParametersI3D GLeeFuncPtr_wglSetDigitalVideoParametersI3D #endif #endif /* WGL_I3D_gamma */ #ifndef WGL_I3D_gamma #define WGL_I3D_gamma 1 #define __GLEE_WGL_I3D_gamma 1 /* Constants */ #define WGL_GAMMA_TABLE_SIZE_I3D 0x204E #define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F #ifndef GLEE_H_DEFINED_wglGetGammaTableParametersI3D #define GLEE_H_DEFINED_wglGetGammaTableParametersI3D typedef BOOL (APIENTRYP GLEEPFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int * piValue); GLEE_EXTERN GLEEPFNWGLGETGAMMATABLEPARAMETERSI3DPROC GLeeFuncPtr_wglGetGammaTableParametersI3D; #define wglGetGammaTableParametersI3D GLeeFuncPtr_wglGetGammaTableParametersI3D #endif #ifndef GLEE_H_DEFINED_wglSetGammaTableParametersI3D #define GLEE_H_DEFINED_wglSetGammaTableParametersI3D typedef BOOL (APIENTRYP GLEEPFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int * piValue); GLEE_EXTERN GLEEPFNWGLSETGAMMATABLEPARAMETERSI3DPROC GLeeFuncPtr_wglSetGammaTableParametersI3D; #define wglSetGammaTableParametersI3D GLeeFuncPtr_wglSetGammaTableParametersI3D #endif #ifndef GLEE_H_DEFINED_wglGetGammaTableI3D #define GLEE_H_DEFINED_wglGetGammaTableI3D typedef BOOL (APIENTRYP GLEEPFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT * puRed, USHORT * puGreen, USHORT * puBlue); GLEE_EXTERN GLEEPFNWGLGETGAMMATABLEI3DPROC GLeeFuncPtr_wglGetGammaTableI3D; #define wglGetGammaTableI3D GLeeFuncPtr_wglGetGammaTableI3D #endif #ifndef GLEE_H_DEFINED_wglSetGammaTableI3D #define GLEE_H_DEFINED_wglSetGammaTableI3D typedef BOOL (APIENTRYP GLEEPFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT * puRed, const USHORT * puGreen, const USHORT * puBlue); GLEE_EXTERN GLEEPFNWGLSETGAMMATABLEI3DPROC GLeeFuncPtr_wglSetGammaTableI3D; #define wglSetGammaTableI3D GLeeFuncPtr_wglSetGammaTableI3D #endif #endif /* WGL_I3D_genlock */ #ifndef WGL_I3D_genlock #define WGL_I3D_genlock 1 #define __GLEE_WGL_I3D_genlock 1 /* Constants */ #define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044 #define WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D 0x2045 #define WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D 0x2046 #define WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D 0x2047 #define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048 #define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049 #define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A #define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B #define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C #ifndef GLEE_H_DEFINED_wglEnableGenlockI3D #define GLEE_H_DEFINED_wglEnableGenlockI3D typedef BOOL (APIENTRYP GLEEPFNWGLENABLEGENLOCKI3DPROC) (HDC hDC); GLEE_EXTERN GLEEPFNWGLENABLEGENLOCKI3DPROC GLeeFuncPtr_wglEnableGenlockI3D; #define wglEnableGenlockI3D GLeeFuncPtr_wglEnableGenlockI3D #endif #ifndef GLEE_H_DEFINED_wglDisableGenlockI3D #define GLEE_H_DEFINED_wglDisableGenlockI3D typedef BOOL (APIENTRYP GLEEPFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC); GLEE_EXTERN GLEEPFNWGLDISABLEGENLOCKI3DPROC GLeeFuncPtr_wglDisableGenlockI3D; #define wglDisableGenlockI3D GLeeFuncPtr_wglDisableGenlockI3D #endif #ifndef GLEE_H_DEFINED_wglIsEnabledGenlockI3D #define GLEE_H_DEFINED_wglIsEnabledGenlockI3D typedef BOOL (APIENTRYP GLEEPFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL * pFlag); GLEE_EXTERN GLEEPFNWGLISENABLEDGENLOCKI3DPROC GLeeFuncPtr_wglIsEnabledGenlockI3D; #define wglIsEnabledGenlockI3D GLeeFuncPtr_wglIsEnabledGenlockI3D #endif #ifndef GLEE_H_DEFINED_wglGenlockSourceI3D #define GLEE_H_DEFINED_wglGenlockSourceI3D typedef BOOL (APIENTRYP GLEEPFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource); GLEE_EXTERN GLEEPFNWGLGENLOCKSOURCEI3DPROC GLeeFuncPtr_wglGenlockSourceI3D; #define wglGenlockSourceI3D GLeeFuncPtr_wglGenlockSourceI3D #endif #ifndef GLEE_H_DEFINED_wglGetGenlockSourceI3D #define GLEE_H_DEFINED_wglGetGenlockSourceI3D typedef BOOL (APIENTRYP GLEEPFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT * uSource); GLEE_EXTERN GLEEPFNWGLGETGENLOCKSOURCEI3DPROC GLeeFuncPtr_wglGetGenlockSourceI3D; #define wglGetGenlockSourceI3D GLeeFuncPtr_wglGetGenlockSourceI3D #endif #ifndef GLEE_H_DEFINED_wglGenlockSourceEdgeI3D #define GLEE_H_DEFINED_wglGenlockSourceEdgeI3D typedef BOOL (APIENTRYP GLEEPFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge); GLEE_EXTERN GLEEPFNWGLGENLOCKSOURCEEDGEI3DPROC GLeeFuncPtr_wglGenlockSourceEdgeI3D; #define wglGenlockSourceEdgeI3D GLeeFuncPtr_wglGenlockSourceEdgeI3D #endif #ifndef GLEE_H_DEFINED_wglGetGenlockSourceEdgeI3D #define GLEE_H_DEFINED_wglGetGenlockSourceEdgeI3D typedef BOOL (APIENTRYP GLEEPFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT * uEdge); GLEE_EXTERN GLEEPFNWGLGETGENLOCKSOURCEEDGEI3DPROC GLeeFuncPtr_wglGetGenlockSourceEdgeI3D; #define wglGetGenlockSourceEdgeI3D GLeeFuncPtr_wglGetGenlockSourceEdgeI3D #endif #ifndef GLEE_H_DEFINED_wglGenlockSampleRateI3D #define GLEE_H_DEFINED_wglGenlockSampleRateI3D typedef BOOL (APIENTRYP GLEEPFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate); GLEE_EXTERN GLEEPFNWGLGENLOCKSAMPLERATEI3DPROC GLeeFuncPtr_wglGenlockSampleRateI3D; #define wglGenlockSampleRateI3D GLeeFuncPtr_wglGenlockSampleRateI3D #endif #ifndef GLEE_H_DEFINED_wglGetGenlockSampleRateI3D #define GLEE_H_DEFINED_wglGetGenlockSampleRateI3D typedef BOOL (APIENTRYP GLEEPFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT * uRate); GLEE_EXTERN GLEEPFNWGLGETGENLOCKSAMPLERATEI3DPROC GLeeFuncPtr_wglGetGenlockSampleRateI3D; #define wglGetGenlockSampleRateI3D GLeeFuncPtr_wglGetGenlockSampleRateI3D #endif #ifndef GLEE_H_DEFINED_wglGenlockSourceDelayI3D #define GLEE_H_DEFINED_wglGenlockSourceDelayI3D typedef BOOL (APIENTRYP GLEEPFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay); GLEE_EXTERN GLEEPFNWGLGENLOCKSOURCEDELAYI3DPROC GLeeFuncPtr_wglGenlockSourceDelayI3D; #define wglGenlockSourceDelayI3D GLeeFuncPtr_wglGenlockSourceDelayI3D #endif #ifndef GLEE_H_DEFINED_wglGetGenlockSourceDelayI3D #define GLEE_H_DEFINED_wglGetGenlockSourceDelayI3D typedef BOOL (APIENTRYP GLEEPFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT * uDelay); GLEE_EXTERN GLEEPFNWGLGETGENLOCKSOURCEDELAYI3DPROC GLeeFuncPtr_wglGetGenlockSourceDelayI3D; #define wglGetGenlockSourceDelayI3D GLeeFuncPtr_wglGetGenlockSourceDelayI3D #endif #ifndef GLEE_H_DEFINED_wglQueryGenlockMaxSourceDelayI3D #define GLEE_H_DEFINED_wglQueryGenlockMaxSourceDelayI3D typedef BOOL (APIENTRYP GLEEPFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT * uMaxLineDelay, UINT * uMaxPixelDelay); GLEE_EXTERN GLEEPFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC GLeeFuncPtr_wglQueryGenlockMaxSourceDelayI3D; #define wglQueryGenlockMaxSourceDelayI3D GLeeFuncPtr_wglQueryGenlockMaxSourceDelayI3D #endif #endif /* WGL_I3D_image_buffer */ #ifndef WGL_I3D_image_buffer #define WGL_I3D_image_buffer 1 #define __GLEE_WGL_I3D_image_buffer 1 /* Constants */ #define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001 #define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002 #ifndef GLEE_H_DEFINED_wglCreateImageBufferI3D #define GLEE_H_DEFINED_wglCreateImageBufferI3D typedef LPVOID (APIENTRYP GLEEPFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags); GLEE_EXTERN GLEEPFNWGLCREATEIMAGEBUFFERI3DPROC GLeeFuncPtr_wglCreateImageBufferI3D; #define wglCreateImageBufferI3D GLeeFuncPtr_wglCreateImageBufferI3D #endif #ifndef GLEE_H_DEFINED_wglDestroyImageBufferI3D #define GLEE_H_DEFINED_wglDestroyImageBufferI3D typedef BOOL (APIENTRYP GLEEPFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress); GLEE_EXTERN GLEEPFNWGLDESTROYIMAGEBUFFERI3DPROC GLeeFuncPtr_wglDestroyImageBufferI3D; #define wglDestroyImageBufferI3D GLeeFuncPtr_wglDestroyImageBufferI3D #endif #ifndef GLEE_H_DEFINED_wglAssociateImageBufferEventsI3D #define GLEE_H_DEFINED_wglAssociateImageBufferEventsI3D typedef BOOL (APIENTRYP GLEEPFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE * pEvent, const LPVOID * pAddress, const DWORD * pSize, UINT count); GLEE_EXTERN GLEEPFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC GLeeFuncPtr_wglAssociateImageBufferEventsI3D; #define wglAssociateImageBufferEventsI3D GLeeFuncPtr_wglAssociateImageBufferEventsI3D #endif #ifndef GLEE_H_DEFINED_wglReleaseImageBufferEventsI3D #define GLEE_H_DEFINED_wglReleaseImageBufferEventsI3D typedef BOOL (APIENTRYP GLEEPFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID * pAddress, UINT count); GLEE_EXTERN GLEEPFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC GLeeFuncPtr_wglReleaseImageBufferEventsI3D; #define wglReleaseImageBufferEventsI3D GLeeFuncPtr_wglReleaseImageBufferEventsI3D #endif #endif /* WGL_I3D_swap_frame_lock */ #ifndef WGL_I3D_swap_frame_lock #define WGL_I3D_swap_frame_lock 1 #define __GLEE_WGL_I3D_swap_frame_lock 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglEnableFrameLockI3D #define GLEE_H_DEFINED_wglEnableFrameLockI3D typedef BOOL (APIENTRYP GLEEPFNWGLENABLEFRAMELOCKI3DPROC) (); GLEE_EXTERN GLEEPFNWGLENABLEFRAMELOCKI3DPROC GLeeFuncPtr_wglEnableFrameLockI3D; #define wglEnableFrameLockI3D GLeeFuncPtr_wglEnableFrameLockI3D #endif #ifndef GLEE_H_DEFINED_wglDisableFrameLockI3D #define GLEE_H_DEFINED_wglDisableFrameLockI3D typedef BOOL (APIENTRYP GLEEPFNWGLDISABLEFRAMELOCKI3DPROC) (); GLEE_EXTERN GLEEPFNWGLDISABLEFRAMELOCKI3DPROC GLeeFuncPtr_wglDisableFrameLockI3D; #define wglDisableFrameLockI3D GLeeFuncPtr_wglDisableFrameLockI3D #endif #ifndef GLEE_H_DEFINED_wglIsEnabledFrameLockI3D #define GLEE_H_DEFINED_wglIsEnabledFrameLockI3D typedef BOOL (APIENTRYP GLEEPFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL * pFlag); GLEE_EXTERN GLEEPFNWGLISENABLEDFRAMELOCKI3DPROC GLeeFuncPtr_wglIsEnabledFrameLockI3D; #define wglIsEnabledFrameLockI3D GLeeFuncPtr_wglIsEnabledFrameLockI3D #endif #ifndef GLEE_H_DEFINED_wglQueryFrameLockMasterI3D #define GLEE_H_DEFINED_wglQueryFrameLockMasterI3D typedef BOOL (APIENTRYP GLEEPFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL * pFlag); GLEE_EXTERN GLEEPFNWGLQUERYFRAMELOCKMASTERI3DPROC GLeeFuncPtr_wglQueryFrameLockMasterI3D; #define wglQueryFrameLockMasterI3D GLeeFuncPtr_wglQueryFrameLockMasterI3D #endif #endif /* WGL_NV_render_depth_texture */ #ifndef WGL_NV_render_depth_texture #define WGL_NV_render_depth_texture 1 #define __GLEE_WGL_NV_render_depth_texture 1 /* Constants */ #define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3 #define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4 #define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5 #define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6 #define WGL_DEPTH_COMPONENT_NV 0x20A7 #endif /* WGL_NV_render_texture_rectangle */ #ifndef WGL_NV_render_texture_rectangle #define WGL_NV_render_texture_rectangle 1 #define __GLEE_WGL_NV_render_texture_rectangle 1 /* Constants */ #define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0 #define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1 #define WGL_TEXTURE_RECTANGLE_NV 0x20A2 #endif /* WGL_ATI_pixel_format_float */ #ifndef WGL_ATI_pixel_format_float #define WGL_ATI_pixel_format_float 1 #define __GLEE_WGL_ATI_pixel_format_float 1 /* Constants */ #define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0 #endif /* WGL_NV_float_buffer */ #ifndef WGL_NV_float_buffer #define WGL_NV_float_buffer 1 #define __GLEE_WGL_NV_float_buffer 1 /* Constants */ #define WGL_FLOAT_COMPONENTS_NV 0x20B0 #define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1 #define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2 #define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3 #define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4 #define WGL_TEXTURE_FLOAT_R_NV 0x20B5 #define WGL_TEXTURE_FLOAT_RG_NV 0x20B6 #define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7 #define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8 #endif /* WGL_3DL_stereo_control */ #ifndef WGL_3DL_stereo_control #define WGL_3DL_stereo_control 1 #define __GLEE_WGL_3DL_stereo_control 1 /* Constants */ #define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055 #define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056 #define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057 #define WGL_STEREO_POLARITY_INVERT_3DL 0x2058 #ifndef GLEE_H_DEFINED_wglSetStereoEmitterState3DL #define GLEE_H_DEFINED_wglSetStereoEmitterState3DL typedef BOOL (APIENTRYP GLEEPFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState); GLEE_EXTERN GLEEPFNWGLSETSTEREOEMITTERSTATE3DLPROC GLeeFuncPtr_wglSetStereoEmitterState3DL; #define wglSetStereoEmitterState3DL GLeeFuncPtr_wglSetStereoEmitterState3DL #endif #endif /* WGL_EXT_pixel_format_packed_float */ #ifndef WGL_EXT_pixel_format_packed_float #define WGL_EXT_pixel_format_packed_float 1 #define __GLEE_WGL_EXT_pixel_format_packed_float 1 /* Constants */ #define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8 #endif /* WGL_EXT_framebuffer_sRGB */ #ifndef WGL_EXT_framebuffer_sRGB #define WGL_EXT_framebuffer_sRGB 1 #define __GLEE_WGL_EXT_framebuffer_sRGB 1 /* Constants */ #define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9 #endif /* WGL_NV_present_video */ #ifndef WGL_NV_present_video #define WGL_NV_present_video 1 #define __GLEE_WGL_NV_present_video 1 /* Constants */ #define WGL_NUM_VIDEO_SLOTS_NV 0x20F0 #ifndef GLEE_H_DEFINED_wglEnumerateVideoDevicesNV #define GLEE_H_DEFINED_wglEnumerateVideoDevicesNV typedef int (APIENTRYP GLEEPFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDC, HVIDEOOUTPUTDEVICENV * phDeviceList); GLEE_EXTERN GLEEPFNWGLENUMERATEVIDEODEVICESNVPROC GLeeFuncPtr_wglEnumerateVideoDevicesNV; #define wglEnumerateVideoDevicesNV GLeeFuncPtr_wglEnumerateVideoDevicesNV #endif #ifndef GLEE_H_DEFINED_wglBindVideoDeviceNV #define GLEE_H_DEFINED_wglBindVideoDeviceNV typedef BOOL (APIENTRYP GLEEPFNWGLBINDVIDEODEVICENVPROC) (HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int * piAttribList); GLEE_EXTERN GLEEPFNWGLBINDVIDEODEVICENVPROC GLeeFuncPtr_wglBindVideoDeviceNV; #define wglBindVideoDeviceNV GLeeFuncPtr_wglBindVideoDeviceNV #endif #ifndef GLEE_H_DEFINED_wglQueryCurrentContextNV #define GLEE_H_DEFINED_wglQueryCurrentContextNV typedef BOOL (APIENTRYP GLEEPFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int * piValue); GLEE_EXTERN GLEEPFNWGLQUERYCURRENTCONTEXTNVPROC GLeeFuncPtr_wglQueryCurrentContextNV; #define wglQueryCurrentContextNV GLeeFuncPtr_wglQueryCurrentContextNV #endif #endif /* WGL_NV_swap_group */ #ifndef WGL_NV_swap_group #define WGL_NV_swap_group 1 #define __GLEE_WGL_NV_swap_group 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglJoinSwapGroupNV #define GLEE_H_DEFINED_wglJoinSwapGroupNV typedef BOOL (APIENTRYP GLEEPFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group); GLEE_EXTERN GLEEPFNWGLJOINSWAPGROUPNVPROC GLeeFuncPtr_wglJoinSwapGroupNV; #define wglJoinSwapGroupNV GLeeFuncPtr_wglJoinSwapGroupNV #endif #ifndef GLEE_H_DEFINED_wglBindSwapBarrierNV #define GLEE_H_DEFINED_wglBindSwapBarrierNV typedef BOOL (APIENTRYP GLEEPFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier); GLEE_EXTERN GLEEPFNWGLBINDSWAPBARRIERNVPROC GLeeFuncPtr_wglBindSwapBarrierNV; #define wglBindSwapBarrierNV GLeeFuncPtr_wglBindSwapBarrierNV #endif #ifndef GLEE_H_DEFINED_wglQuerySwapGroupNV #define GLEE_H_DEFINED_wglQuerySwapGroupNV typedef BOOL (APIENTRYP GLEEPFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint * group, GLuint * barrier); GLEE_EXTERN GLEEPFNWGLQUERYSWAPGROUPNVPROC GLeeFuncPtr_wglQuerySwapGroupNV; #define wglQuerySwapGroupNV GLeeFuncPtr_wglQuerySwapGroupNV #endif #ifndef GLEE_H_DEFINED_wglQueryMaxSwapGroupsNV #define GLEE_H_DEFINED_wglQueryMaxSwapGroupsNV typedef BOOL (APIENTRYP GLEEPFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint * maxGroups, GLuint * maxBarriers); GLEE_EXTERN GLEEPFNWGLQUERYMAXSWAPGROUPSNVPROC GLeeFuncPtr_wglQueryMaxSwapGroupsNV; #define wglQueryMaxSwapGroupsNV GLeeFuncPtr_wglQueryMaxSwapGroupsNV #endif #ifndef GLEE_H_DEFINED_wglQueryFrameCountNV #define GLEE_H_DEFINED_wglQueryFrameCountNV typedef BOOL (APIENTRYP GLEEPFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint * count); GLEE_EXTERN GLEEPFNWGLQUERYFRAMECOUNTNVPROC GLeeFuncPtr_wglQueryFrameCountNV; #define wglQueryFrameCountNV GLeeFuncPtr_wglQueryFrameCountNV #endif #ifndef GLEE_H_DEFINED_wglResetFrameCountNV #define GLEE_H_DEFINED_wglResetFrameCountNV typedef BOOL (APIENTRYP GLEEPFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC); GLEE_EXTERN GLEEPFNWGLRESETFRAMECOUNTNVPROC GLeeFuncPtr_wglResetFrameCountNV; #define wglResetFrameCountNV GLeeFuncPtr_wglResetFrameCountNV #endif #endif /* WGL_NV_gpu_affinity */ #ifndef WGL_NV_gpu_affinity #define WGL_NV_gpu_affinity 1 #define __GLEE_WGL_NV_gpu_affinity 1 /* Constants */ #define WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0 #define WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1 #ifndef GLEE_H_DEFINED_wglEnumGpusNV #define GLEE_H_DEFINED_wglEnumGpusNV typedef BOOL (APIENTRYP GLEEPFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV * phGpu); GLEE_EXTERN GLEEPFNWGLENUMGPUSNVPROC GLeeFuncPtr_wglEnumGpusNV; #define wglEnumGpusNV GLeeFuncPtr_wglEnumGpusNV #endif #ifndef GLEE_H_DEFINED_wglEnumGpuDevicesNV #define GLEE_H_DEFINED_wglEnumGpuDevicesNV typedef BOOL (APIENTRYP GLEEPFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice); GLEE_EXTERN GLEEPFNWGLENUMGPUDEVICESNVPROC GLeeFuncPtr_wglEnumGpuDevicesNV; #define wglEnumGpuDevicesNV GLeeFuncPtr_wglEnumGpuDevicesNV #endif #ifndef GLEE_H_DEFINED_wglCreateAffinityDCNV #define GLEE_H_DEFINED_wglCreateAffinityDCNV typedef HDC (APIENTRYP GLEEPFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV * phGpuList); GLEE_EXTERN GLEEPFNWGLCREATEAFFINITYDCNVPROC GLeeFuncPtr_wglCreateAffinityDCNV; #define wglCreateAffinityDCNV GLeeFuncPtr_wglCreateAffinityDCNV #endif #ifndef GLEE_H_DEFINED_wglEnumGpusFromAffinityDCNV #define GLEE_H_DEFINED_wglEnumGpusFromAffinityDCNV typedef BOOL (APIENTRYP GLEEPFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV * hGpu); GLEE_EXTERN GLEEPFNWGLENUMGPUSFROMAFFINITYDCNVPROC GLeeFuncPtr_wglEnumGpusFromAffinityDCNV; #define wglEnumGpusFromAffinityDCNV GLeeFuncPtr_wglEnumGpusFromAffinityDCNV #endif #ifndef GLEE_H_DEFINED_wglDeleteDCNV #define GLEE_H_DEFINED_wglDeleteDCNV typedef BOOL (APIENTRYP GLEEPFNWGLDELETEDCNVPROC) (HDC hdc); GLEE_EXTERN GLEEPFNWGLDELETEDCNVPROC GLeeFuncPtr_wglDeleteDCNV; #define wglDeleteDCNV GLeeFuncPtr_wglDeleteDCNV #endif #endif /* WGL_AMD_gpu_association */ #ifndef WGL_AMD_gpu_association #define WGL_AMD_gpu_association 1 #define __GLEE_WGL_AMD_gpu_association 1 /* Constants */ #define WGL_GPU_VENDOR_AMD 0x1F00 #define WGL_GPU_RENDERER_STRING_AMD 0x1F01 #define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 #define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 #define WGL_GPU_RAM_AMD 0x21A3 #define WGL_GPU_CLOCK_AMD 0x21A4 #define WGL_GPU_NUM_PIPES_AMD 0x21A5 #define WGL_GPU_NUM_SIMD_AMD 0x21A6 #define WGL_GPU_NUM_RB_AMD 0x21A7 #define WGL_GPU_NUM_SPI_AMD 0x21A8 #ifndef GLEE_H_DEFINED_wglGetGPUIDsAMD #define GLEE_H_DEFINED_wglGetGPUIDsAMD typedef UINT (APIENTRYP GLEEPFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT * ids); GLEE_EXTERN GLEEPFNWGLGETGPUIDSAMDPROC GLeeFuncPtr_wglGetGPUIDsAMD; #define wglGetGPUIDsAMD GLeeFuncPtr_wglGetGPUIDsAMD #endif #ifndef GLEE_H_DEFINED_wglGetGPUInfoAMD #define GLEE_H_DEFINED_wglGetGPUInfoAMD typedef INT (APIENTRYP GLEEPFNWGLGETGPUINFOAMDPROC) (UINT id, int property, GLenum dataType, UINT size, void * data); GLEE_EXTERN GLEEPFNWGLGETGPUINFOAMDPROC GLeeFuncPtr_wglGetGPUInfoAMD; #define wglGetGPUInfoAMD GLeeFuncPtr_wglGetGPUInfoAMD #endif #ifndef GLEE_H_DEFINED_wglGetContextGPUIDAMD #define GLEE_H_DEFINED_wglGetContextGPUIDAMD typedef UINT (APIENTRYP GLEEPFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc); GLEE_EXTERN GLEEPFNWGLGETCONTEXTGPUIDAMDPROC GLeeFuncPtr_wglGetContextGPUIDAMD; #define wglGetContextGPUIDAMD GLeeFuncPtr_wglGetContextGPUIDAMD #endif #ifndef GLEE_H_DEFINED_wglCreateAssociatedContextAMD #define GLEE_H_DEFINED_wglCreateAssociatedContextAMD typedef HGLRC (APIENTRYP GLEEPFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id); GLEE_EXTERN GLEEPFNWGLCREATEASSOCIATEDCONTEXTAMDPROC GLeeFuncPtr_wglCreateAssociatedContextAMD; #define wglCreateAssociatedContextAMD GLeeFuncPtr_wglCreateAssociatedContextAMD #endif #ifndef GLEE_H_DEFINED_wglCreateAssociatedContextAttribsAMD #define GLEE_H_DEFINED_wglCreateAssociatedContextAttribsAMD typedef HGLRC (APIENTRYP GLEEPFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int * attribList); GLEE_EXTERN GLEEPFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC GLeeFuncPtr_wglCreateAssociatedContextAttribsAMD; #define wglCreateAssociatedContextAttribsAMD GLeeFuncPtr_wglCreateAssociatedContextAttribsAMD #endif #ifndef GLEE_H_DEFINED_wglDeleteAssociatedContextAMD #define GLEE_H_DEFINED_wglDeleteAssociatedContextAMD typedef BOOL (APIENTRYP GLEEPFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc); GLEE_EXTERN GLEEPFNWGLDELETEASSOCIATEDCONTEXTAMDPROC GLeeFuncPtr_wglDeleteAssociatedContextAMD; #define wglDeleteAssociatedContextAMD GLeeFuncPtr_wglDeleteAssociatedContextAMD #endif #ifndef GLEE_H_DEFINED_wglMakeAssociatedContextCurrentAMD #define GLEE_H_DEFINED_wglMakeAssociatedContextCurrentAMD typedef BOOL (APIENTRYP GLEEPFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc); GLEE_EXTERN GLEEPFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC GLeeFuncPtr_wglMakeAssociatedContextCurrentAMD; #define wglMakeAssociatedContextCurrentAMD GLeeFuncPtr_wglMakeAssociatedContextCurrentAMD #endif #ifndef GLEE_H_DEFINED_wglGetCurrentAssociatedContextAMD #define GLEE_H_DEFINED_wglGetCurrentAssociatedContextAMD typedef HGLRC (APIENTRYP GLEEPFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (); GLEE_EXTERN GLEEPFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC GLeeFuncPtr_wglGetCurrentAssociatedContextAMD; #define wglGetCurrentAssociatedContextAMD GLeeFuncPtr_wglGetCurrentAssociatedContextAMD #endif #ifndef GLEE_H_DEFINED_wglBlitContextFramebufferAMD #define GLEE_H_DEFINED_wglBlitContextFramebufferAMD typedef VOID (APIENTRYP GLEEPFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); GLEE_EXTERN GLEEPFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC GLeeFuncPtr_wglBlitContextFramebufferAMD; #define wglBlitContextFramebufferAMD GLeeFuncPtr_wglBlitContextFramebufferAMD #endif #endif /* WGL_NV_copy_image */ #ifndef WGL_NV_copy_image #define WGL_NV_copy_image 1 #define __GLEE_WGL_NV_copy_image 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglCopyImageSubDataNV #define GLEE_H_DEFINED_wglCopyImageSubDataNV typedef BOOL (APIENTRYP GLEEPFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); GLEE_EXTERN GLEEPFNWGLCOPYIMAGESUBDATANVPROC GLeeFuncPtr_wglCopyImageSubDataNV; #define wglCopyImageSubDataNV GLeeFuncPtr_wglCopyImageSubDataNV #endif #endif /* WGL_NV_multisample_coverage */ #ifndef WGL_NV_multisample_coverage #define WGL_NV_multisample_coverage 1 #define __GLEE_WGL_NV_multisample_coverage 1 /* Constants */ #define WGL_COVERAGE_SAMPLES_NV 0x2042 #define WGL_COLOR_SAMPLES_NV 0x20B9 #endif /* WGL_EXT_create_context_es2_profile */ #ifndef WGL_EXT_create_context_es2_profile #define WGL_EXT_create_context_es2_profile 1 #define __GLEE_WGL_EXT_create_context_es2_profile 1 /* Constants */ #define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 #endif /* WGL_NV_DX_interop */ #ifndef WGL_NV_DX_interop #define WGL_NV_DX_interop 1 #define __GLEE_WGL_NV_DX_interop 1 /* Constants */ #define WGL_ACCESS_READ_ONLY_NV 0x00000000 #define WGL_ACCESS_READ_WRITE_NV 0x00000001 #define WGL_ACCESS_WRITE_DISCARD_NV 0x00000002 #ifndef GLEE_H_DEFINED_wglDXSetResourceShareHandleNV #define GLEE_H_DEFINED_wglDXSetResourceShareHandleNV typedef BOOL (APIENTRYP GLEEPFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void * dxObject, HANDLE shareHandle); GLEE_EXTERN GLEEPFNWGLDXSETRESOURCESHAREHANDLENVPROC GLeeFuncPtr_wglDXSetResourceShareHandleNV; #define wglDXSetResourceShareHandleNV GLeeFuncPtr_wglDXSetResourceShareHandleNV #endif #ifndef GLEE_H_DEFINED_wglDXOpenDeviceNV #define GLEE_H_DEFINED_wglDXOpenDeviceNV typedef HANDLE (APIENTRYP GLEEPFNWGLDXOPENDEVICENVPROC) (void * dxDevice); GLEE_EXTERN GLEEPFNWGLDXOPENDEVICENVPROC GLeeFuncPtr_wglDXOpenDeviceNV; #define wglDXOpenDeviceNV GLeeFuncPtr_wglDXOpenDeviceNV #endif #ifndef GLEE_H_DEFINED_wglDXCloseDeviceNV #define GLEE_H_DEFINED_wglDXCloseDeviceNV typedef BOOL (APIENTRYP GLEEPFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice); GLEE_EXTERN GLEEPFNWGLDXCLOSEDEVICENVPROC GLeeFuncPtr_wglDXCloseDeviceNV; #define wglDXCloseDeviceNV GLeeFuncPtr_wglDXCloseDeviceNV #endif #ifndef GLEE_H_DEFINED_wglDXRegisterObjectNV #define GLEE_H_DEFINED_wglDXRegisterObjectNV typedef HANDLE (APIENTRYP GLEEPFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void * dxObject, GLuint name, GLenum type, GLenum access); GLEE_EXTERN GLEEPFNWGLDXREGISTEROBJECTNVPROC GLeeFuncPtr_wglDXRegisterObjectNV; #define wglDXRegisterObjectNV GLeeFuncPtr_wglDXRegisterObjectNV #endif #ifndef GLEE_H_DEFINED_wglDXUnregisterObjectNV #define GLEE_H_DEFINED_wglDXUnregisterObjectNV typedef BOOL (APIENTRYP GLEEPFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject); GLEE_EXTERN GLEEPFNWGLDXUNREGISTEROBJECTNVPROC GLeeFuncPtr_wglDXUnregisterObjectNV; #define wglDXUnregisterObjectNV GLeeFuncPtr_wglDXUnregisterObjectNV #endif #ifndef GLEE_H_DEFINED_wglDXObjectAccessNV #define GLEE_H_DEFINED_wglDXObjectAccessNV typedef BOOL (APIENTRYP GLEEPFNWGLDXOBJECTACCESSNVPROC) (HANDLE hObject, GLenum access); GLEE_EXTERN GLEEPFNWGLDXOBJECTACCESSNVPROC GLeeFuncPtr_wglDXObjectAccessNV; #define wglDXObjectAccessNV GLeeFuncPtr_wglDXObjectAccessNV #endif #ifndef GLEE_H_DEFINED_wglDXLockObjectsNV #define GLEE_H_DEFINED_wglDXLockObjectsNV typedef BOOL (APIENTRYP GLEEPFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE * hObjects); GLEE_EXTERN GLEEPFNWGLDXLOCKOBJECTSNVPROC GLeeFuncPtr_wglDXLockObjectsNV; #define wglDXLockObjectsNV GLeeFuncPtr_wglDXLockObjectsNV #endif #ifndef GLEE_H_DEFINED_wglDXUnlockObjectsNV #define GLEE_H_DEFINED_wglDXUnlockObjectsNV typedef BOOL (APIENTRYP GLEEPFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE * hObjects); GLEE_EXTERN GLEEPFNWGLDXUNLOCKOBJECTSNVPROC GLeeFuncPtr_wglDXUnlockObjectsNV; #define wglDXUnlockObjectsNV GLeeFuncPtr_wglDXUnlockObjectsNV #endif #endif /* WGL_NV_DX_interop2 */ #ifndef WGL_NV_DX_interop2 #define WGL_NV_DX_interop2 1 #define __GLEE_WGL_NV_DX_interop2 1 /* Constants */ #endif /* WGL_EXT_swap_control_tear */ #ifndef WGL_EXT_swap_control_tear #define WGL_EXT_swap_control_tear 1 #define __GLEE_WGL_EXT_swap_control_tear 1 /* Constants */ #endif /* WGL_EXT_display_color_table */ #ifndef WGL_EXT_display_color_table #define WGL_EXT_display_color_table 1 #define __GLEE_WGL_EXT_display_color_table 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglCreateDisplayColorTableEXT #define GLEE_H_DEFINED_wglCreateDisplayColorTableEXT typedef GLboolean (APIENTRYP GLEEPFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id); GLEE_EXTERN GLEEPFNWGLCREATEDISPLAYCOLORTABLEEXTPROC GLeeFuncPtr_wglCreateDisplayColorTableEXT; #define wglCreateDisplayColorTableEXT GLeeFuncPtr_wglCreateDisplayColorTableEXT #endif #ifndef GLEE_H_DEFINED_wglLoadDisplayColorTableEXT #define GLEE_H_DEFINED_wglLoadDisplayColorTableEXT typedef GLboolean (APIENTRYP GLEEPFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort * table, GLuint length); GLEE_EXTERN GLEEPFNWGLLOADDISPLAYCOLORTABLEEXTPROC GLeeFuncPtr_wglLoadDisplayColorTableEXT; #define wglLoadDisplayColorTableEXT GLeeFuncPtr_wglLoadDisplayColorTableEXT #endif #ifndef GLEE_H_DEFINED_wglBindDisplayColorTableEXT #define GLEE_H_DEFINED_wglBindDisplayColorTableEXT typedef GLboolean (APIENTRYP GLEEPFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id); GLEE_EXTERN GLEEPFNWGLBINDDISPLAYCOLORTABLEEXTPROC GLeeFuncPtr_wglBindDisplayColorTableEXT; #define wglBindDisplayColorTableEXT GLeeFuncPtr_wglBindDisplayColorTableEXT #endif #ifndef GLEE_H_DEFINED_wglDestroyDisplayColorTableEXT #define GLEE_H_DEFINED_wglDestroyDisplayColorTableEXT typedef VOID (APIENTRYP GLEEPFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id); GLEE_EXTERN GLEEPFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC GLeeFuncPtr_wglDestroyDisplayColorTableEXT; #define wglDestroyDisplayColorTableEXT GLeeFuncPtr_wglDestroyDisplayColorTableEXT #endif #endif /* WGL_EXT_extensions_string */ #ifndef WGL_EXT_extensions_string #define WGL_EXT_extensions_string 1 #define __GLEE_WGL_EXT_extensions_string 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglGetExtensionsStringEXT #define GLEE_H_DEFINED_wglGetExtensionsStringEXT typedef const char * (APIENTRYP GLEEPFNWGLGETEXTENSIONSSTRINGEXTPROC) (); GLEE_EXTERN GLEEPFNWGLGETEXTENSIONSSTRINGEXTPROC GLeeFuncPtr_wglGetExtensionsStringEXT; #define wglGetExtensionsStringEXT GLeeFuncPtr_wglGetExtensionsStringEXT #endif #endif /* WGL_EXT_swap_control */ #ifndef WGL_EXT_swap_control #define WGL_EXT_swap_control 1 #define __GLEE_WGL_EXT_swap_control 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglSwapIntervalEXT #define GLEE_H_DEFINED_wglSwapIntervalEXT typedef BOOL (APIENTRYP GLEEPFNWGLSWAPINTERVALEXTPROC) (int interval); GLEE_EXTERN GLEEPFNWGLSWAPINTERVALEXTPROC GLeeFuncPtr_wglSwapIntervalEXT; #define wglSwapIntervalEXT GLeeFuncPtr_wglSwapIntervalEXT #endif #ifndef GLEE_H_DEFINED_wglGetSwapIntervalEXT #define GLEE_H_DEFINED_wglGetSwapIntervalEXT typedef int (APIENTRYP GLEEPFNWGLGETSWAPINTERVALEXTPROC) (); GLEE_EXTERN GLEEPFNWGLGETSWAPINTERVALEXTPROC GLeeFuncPtr_wglGetSwapIntervalEXT; #define wglGetSwapIntervalEXT GLeeFuncPtr_wglGetSwapIntervalEXT #endif #endif /* WGL_NV_vertex_array_range */ #ifndef WGL_NV_vertex_array_range #define WGL_NV_vertex_array_range 1 #define __GLEE_WGL_NV_vertex_array_range 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglAllocateMemoryNV #define GLEE_H_DEFINED_wglAllocateMemoryNV typedef void* (APIENTRYP GLEEPFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); GLEE_EXTERN GLEEPFNWGLALLOCATEMEMORYNVPROC GLeeFuncPtr_wglAllocateMemoryNV; #define wglAllocateMemoryNV GLeeFuncPtr_wglAllocateMemoryNV #endif #ifndef GLEE_H_DEFINED_wglFreeMemoryNV #define GLEE_H_DEFINED_wglFreeMemoryNV typedef void (APIENTRYP GLEEPFNWGLFREEMEMORYNVPROC) (void * pointer); GLEE_EXTERN GLEEPFNWGLFREEMEMORYNVPROC GLeeFuncPtr_wglFreeMemoryNV; #define wglFreeMemoryNV GLeeFuncPtr_wglFreeMemoryNV #endif #endif /* WGL_OML_sync_control */ #ifndef WGL_OML_sync_control #define WGL_OML_sync_control 1 #define __GLEE_WGL_OML_sync_control 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglGetSyncValuesOML #define GLEE_H_DEFINED_wglGetSyncValuesOML typedef BOOL (APIENTRYP GLEEPFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64 * ust, INT64 * msc, INT64 * sbc); GLEE_EXTERN GLEEPFNWGLGETSYNCVALUESOMLPROC GLeeFuncPtr_wglGetSyncValuesOML; #define wglGetSyncValuesOML GLeeFuncPtr_wglGetSyncValuesOML #endif #ifndef GLEE_H_DEFINED_wglGetMscRateOML #define GLEE_H_DEFINED_wglGetMscRateOML typedef BOOL (APIENTRYP GLEEPFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32 * numerator, INT32 * denominator); GLEE_EXTERN GLEEPFNWGLGETMSCRATEOMLPROC GLeeFuncPtr_wglGetMscRateOML; #define wglGetMscRateOML GLeeFuncPtr_wglGetMscRateOML #endif #ifndef GLEE_H_DEFINED_wglSwapBuffersMscOML #define GLEE_H_DEFINED_wglSwapBuffersMscOML typedef INT64 (APIENTRYP GLEEPFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder); GLEE_EXTERN GLEEPFNWGLSWAPBUFFERSMSCOMLPROC GLeeFuncPtr_wglSwapBuffersMscOML; #define wglSwapBuffersMscOML GLeeFuncPtr_wglSwapBuffersMscOML #endif #ifndef GLEE_H_DEFINED_wglSwapLayerBuffersMscOML #define GLEE_H_DEFINED_wglSwapLayerBuffersMscOML typedef INT64 (APIENTRYP GLEEPFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder); GLEE_EXTERN GLEEPFNWGLSWAPLAYERBUFFERSMSCOMLPROC GLeeFuncPtr_wglSwapLayerBuffersMscOML; #define wglSwapLayerBuffersMscOML GLeeFuncPtr_wglSwapLayerBuffersMscOML #endif #ifndef GLEE_H_DEFINED_wglWaitForMscOML #define GLEE_H_DEFINED_wglWaitForMscOML typedef BOOL (APIENTRYP GLEEPFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 * ust, INT64 * msc, INT64 * sbc); GLEE_EXTERN GLEEPFNWGLWAITFORMSCOMLPROC GLeeFuncPtr_wglWaitForMscOML; #define wglWaitForMscOML GLeeFuncPtr_wglWaitForMscOML #endif #ifndef GLEE_H_DEFINED_wglWaitForSbcOML #define GLEE_H_DEFINED_wglWaitForSbcOML typedef BOOL (APIENTRYP GLEEPFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64 * ust, INT64 * msc, INT64 * sbc); GLEE_EXTERN GLEEPFNWGLWAITFORSBCOMLPROC GLeeFuncPtr_wglWaitForSbcOML; #define wglWaitForSbcOML GLeeFuncPtr_wglWaitForSbcOML #endif #endif /* WGL_I3D_swap_frame_usage */ #ifndef WGL_I3D_swap_frame_usage #define WGL_I3D_swap_frame_usage 1 #define __GLEE_WGL_I3D_swap_frame_usage 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglGetFrameUsageI3D #define GLEE_H_DEFINED_wglGetFrameUsageI3D typedef BOOL (APIENTRYP GLEEPFNWGLGETFRAMEUSAGEI3DPROC) (float * pUsage); GLEE_EXTERN GLEEPFNWGLGETFRAMEUSAGEI3DPROC GLeeFuncPtr_wglGetFrameUsageI3D; #define wglGetFrameUsageI3D GLeeFuncPtr_wglGetFrameUsageI3D #endif #ifndef GLEE_H_DEFINED_wglBeginFrameTrackingI3D #define GLEE_H_DEFINED_wglBeginFrameTrackingI3D typedef BOOL (APIENTRYP GLEEPFNWGLBEGINFRAMETRACKINGI3DPROC) (); GLEE_EXTERN GLEEPFNWGLBEGINFRAMETRACKINGI3DPROC GLeeFuncPtr_wglBeginFrameTrackingI3D; #define wglBeginFrameTrackingI3D GLeeFuncPtr_wglBeginFrameTrackingI3D #endif #ifndef GLEE_H_DEFINED_wglEndFrameTrackingI3D #define GLEE_H_DEFINED_wglEndFrameTrackingI3D typedef BOOL (APIENTRYP GLEEPFNWGLENDFRAMETRACKINGI3DPROC) (); GLEE_EXTERN GLEEPFNWGLENDFRAMETRACKINGI3DPROC GLeeFuncPtr_wglEndFrameTrackingI3D; #define wglEndFrameTrackingI3D GLeeFuncPtr_wglEndFrameTrackingI3D #endif #ifndef GLEE_H_DEFINED_wglQueryFrameTrackingI3D #define GLEE_H_DEFINED_wglQueryFrameTrackingI3D typedef BOOL (APIENTRYP GLEEPFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD * pFrameCount, DWORD * pMissedFrames, float * pLastMissedUsage); GLEE_EXTERN GLEEPFNWGLQUERYFRAMETRACKINGI3DPROC GLeeFuncPtr_wglQueryFrameTrackingI3D; #define wglQueryFrameTrackingI3D GLeeFuncPtr_wglQueryFrameTrackingI3D #endif #endif /* WGL_NV_video_output */ #ifndef WGL_NV_video_output #define WGL_NV_video_output 1 #define __GLEE_WGL_NV_video_output 1 /* Constants */ #ifndef GLEE_H_DEFINED_wglGetVideoDeviceNV #define GLEE_H_DEFINED_wglGetVideoDeviceNV typedef BOOL (APIENTRYP GLEEPFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV * hVideoDevice); GLEE_EXTERN GLEEPFNWGLGETVIDEODEVICENVPROC GLeeFuncPtr_wglGetVideoDeviceNV; #define wglGetVideoDeviceNV GLeeFuncPtr_wglGetVideoDeviceNV #endif #ifndef GLEE_H_DEFINED_wglReleaseVideoDeviceNV #define GLEE_H_DEFINED_wglReleaseVideoDeviceNV typedef BOOL (APIENTRYP GLEEPFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice); GLEE_EXTERN GLEEPFNWGLRELEASEVIDEODEVICENVPROC GLeeFuncPtr_wglReleaseVideoDeviceNV; #define wglReleaseVideoDeviceNV GLeeFuncPtr_wglReleaseVideoDeviceNV #endif #ifndef GLEE_H_DEFINED_wglBindVideoImageNV #define GLEE_H_DEFINED_wglBindVideoImageNV typedef BOOL (APIENTRYP GLEEPFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer); GLEE_EXTERN GLEEPFNWGLBINDVIDEOIMAGENVPROC GLeeFuncPtr_wglBindVideoImageNV; #define wglBindVideoImageNV GLeeFuncPtr_wglBindVideoImageNV #endif #ifndef GLEE_H_DEFINED_wglReleaseVideoImageNV #define GLEE_H_DEFINED_wglReleaseVideoImageNV typedef BOOL (APIENTRYP GLEEPFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer); GLEE_EXTERN GLEEPFNWGLRELEASEVIDEOIMAGENVPROC GLeeFuncPtr_wglReleaseVideoImageNV; #define wglReleaseVideoImageNV GLeeFuncPtr_wglReleaseVideoImageNV #endif #ifndef GLEE_H_DEFINED_wglSendPbufferToVideoNV #define GLEE_H_DEFINED_wglSendPbufferToVideoNV typedef BOOL (APIENTRYP GLEEPFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long * pulCounterPbuffer, BOOL bBlock); GLEE_EXTERN GLEEPFNWGLSENDPBUFFERTOVIDEONVPROC GLeeFuncPtr_wglSendPbufferToVideoNV; #define wglSendPbufferToVideoNV GLeeFuncPtr_wglSendPbufferToVideoNV #endif #ifndef GLEE_H_DEFINED_wglGetVideoInfoNV #define GLEE_H_DEFINED_wglGetVideoInfoNV typedef BOOL (APIENTRYP GLEEPFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long * pulCounterOutputPbuffer, unsigned long * pulCounterOutputVideo); GLEE_EXTERN GLEEPFNWGLGETVIDEOINFONVPROC GLeeFuncPtr_wglGetVideoInfoNV; #define wglGetVideoInfoNV GLeeFuncPtr_wglGetVideoInfoNV #endif #endif #elif defined(__APPLE__) || defined(__APPLE_CC__) #else /* GLX */ /* Extension querying variables */ GLEE_EXTERN GLboolean _GLEE_GLX_VERSION_1_3; GLEE_EXTERN GLboolean _GLEE_GLX_VERSION_1_4; GLEE_EXTERN GLboolean _GLEE_GLX_ARB_multisample; GLEE_EXTERN GLboolean _GLEE_GLX_ARB_vertex_buffer_object; GLEE_EXTERN GLboolean _GLEE_GLX_ARB_fbconfig_float; GLEE_EXTERN GLboolean _GLEE_GLX_ARB_framebuffer_sRGB; GLEE_EXTERN GLboolean _GLEE_GLX_ARB_create_context; GLEE_EXTERN GLboolean _GLEE_GLX_ARB_create_context_profile; GLEE_EXTERN GLboolean _GLEE_GLX_ARB_create_context_robustness; GLEE_EXTERN GLboolean _GLEE_GLX_SGIS_multisample; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_visual_info; GLEE_EXTERN GLboolean _GLEE_GLX_SGI_swap_control; GLEE_EXTERN GLboolean _GLEE_GLX_SGI_video_sync; GLEE_EXTERN GLboolean _GLEE_GLX_SGI_make_current_read; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_visual_rating; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_import_context; GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_fbconfig; GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_pbuffer; GLEE_EXTERN GLboolean _GLEE_GLX_SGI_cushion; GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_video_resize; GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_swap_group; GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_swap_barrier; GLEE_EXTERN GLboolean _GLEE_GLX_SGIS_blended_overlay; GLEE_EXTERN GLboolean _GLEE_GLX_SGIS_shared_multisample; GLEE_EXTERN GLboolean _GLEE_GLX_SUN_get_transparent_index; GLEE_EXTERN GLboolean _GLEE_GLX_3DFX_multisample; GLEE_EXTERN GLboolean _GLEE_GLX_MESA_copy_sub_buffer; GLEE_EXTERN GLboolean _GLEE_GLX_MESA_pixmap_colormap; GLEE_EXTERN GLboolean _GLEE_GLX_MESA_release_buffers; GLEE_EXTERN GLboolean _GLEE_GLX_MESA_set_3dfx_mode; GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_visual_select_group; GLEE_EXTERN GLboolean _GLEE_GLX_OML_swap_method; GLEE_EXTERN GLboolean _GLEE_GLX_OML_sync_control; GLEE_EXTERN GLboolean _GLEE_GLX_NV_float_buffer; GLEE_EXTERN GLboolean _GLEE_GLX_SGIX_hyperpipe; GLEE_EXTERN GLboolean _GLEE_GLX_MESA_agp_offset; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_fbconfig_packed_float; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_framebuffer_sRGB; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_texture_from_pixmap; GLEE_EXTERN GLboolean _GLEE_GLX_NV_present_video; GLEE_EXTERN GLboolean _GLEE_GLX_NV_video_out; GLEE_EXTERN GLboolean _GLEE_GLX_NV_swap_group; GLEE_EXTERN GLboolean _GLEE_GLX_NV_video_capture; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_swap_control; GLEE_EXTERN GLboolean _GLEE_GLX_NV_copy_image; GLEE_EXTERN GLboolean _GLEE_GLX_INTEL_swap_event; GLEE_EXTERN GLboolean _GLEE_GLX_NV_multisample_coverage; GLEE_EXTERN GLboolean _GLEE_GLX_AMD_gpu_association; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_create_context_es2_profile; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_create_context_es_profile; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_swap_control_tear; GLEE_EXTERN GLboolean _GLEE_GLX_EXT_buffer_age; GLEE_EXTERN GLboolean _GLEE_GLX_NV_video_output; /* Aliases for extension querying variables */ #define GLEE_GLX_VERSION_1_3 GLeeEnabled(&_GLEE_GLX_VERSION_1_3) #define GLEE_GLX_VERSION_1_4 GLeeEnabled(&_GLEE_GLX_VERSION_1_4) #define GLEE_GLX_ARB_multisample GLeeEnabled(&_GLEE_GLX_ARB_multisample) #define GLEE_GLX_ARB_vertex_buffer_object GLeeEnabled(&_GLEE_GLX_ARB_vertex_buffer_object) #define GLEE_GLX_ARB_fbconfig_float GLeeEnabled(&_GLEE_GLX_ARB_fbconfig_float) #define GLEE_GLX_ARB_framebuffer_sRGB GLeeEnabled(&_GLEE_GLX_ARB_framebuffer_sRGB) #define GLEE_GLX_ARB_create_context GLeeEnabled(&_GLEE_GLX_ARB_create_context) #define GLEE_GLX_ARB_create_context_profile GLeeEnabled(&_GLEE_GLX_ARB_create_context_profile) #define GLEE_GLX_ARB_create_context_robustness GLeeEnabled(&_GLEE_GLX_ARB_create_context_robustness) #define GLEE_GLX_SGIS_multisample GLeeEnabled(&_GLEE_GLX_SGIS_multisample) #define GLEE_GLX_EXT_visual_info GLeeEnabled(&_GLEE_GLX_EXT_visual_info) #define GLEE_GLX_SGI_swap_control GLeeEnabled(&_GLEE_GLX_SGI_swap_control) #define GLEE_GLX_SGI_video_sync GLeeEnabled(&_GLEE_GLX_SGI_video_sync) #define GLEE_GLX_SGI_make_current_read GLeeEnabled(&_GLEE_GLX_SGI_make_current_read) #define GLEE_GLX_EXT_visual_rating GLeeEnabled(&_GLEE_GLX_EXT_visual_rating) #define GLEE_GLX_EXT_import_context GLeeEnabled(&_GLEE_GLX_EXT_import_context) #define GLEE_GLX_SGIX_fbconfig GLeeEnabled(&_GLEE_GLX_SGIX_fbconfig) #define GLEE_GLX_SGIX_pbuffer GLeeEnabled(&_GLEE_GLX_SGIX_pbuffer) #define GLEE_GLX_SGI_cushion GLeeEnabled(&_GLEE_GLX_SGI_cushion) #define GLEE_GLX_SGIX_video_resize GLeeEnabled(&_GLEE_GLX_SGIX_video_resize) #define GLEE_GLX_SGIX_swap_group GLeeEnabled(&_GLEE_GLX_SGIX_swap_group) #define GLEE_GLX_SGIX_swap_barrier GLeeEnabled(&_GLEE_GLX_SGIX_swap_barrier) #define GLEE_GLX_SGIS_blended_overlay GLeeEnabled(&_GLEE_GLX_SGIS_blended_overlay) #define GLEE_GLX_SGIS_shared_multisample GLeeEnabled(&_GLEE_GLX_SGIS_shared_multisample) #define GLEE_GLX_SUN_get_transparent_index GLeeEnabled(&_GLEE_GLX_SUN_get_transparent_index) #define GLEE_GLX_3DFX_multisample GLeeEnabled(&_GLEE_GLX_3DFX_multisample) #define GLEE_GLX_MESA_copy_sub_buffer GLeeEnabled(&_GLEE_GLX_MESA_copy_sub_buffer) #define GLEE_GLX_MESA_pixmap_colormap GLeeEnabled(&_GLEE_GLX_MESA_pixmap_colormap) #define GLEE_GLX_MESA_release_buffers GLeeEnabled(&_GLEE_GLX_MESA_release_buffers) #define GLEE_GLX_MESA_set_3dfx_mode GLeeEnabled(&_GLEE_GLX_MESA_set_3dfx_mode) #define GLEE_GLX_SGIX_visual_select_group GLeeEnabled(&_GLEE_GLX_SGIX_visual_select_group) #define GLEE_GLX_OML_swap_method GLeeEnabled(&_GLEE_GLX_OML_swap_method) #define GLEE_GLX_OML_sync_control GLeeEnabled(&_GLEE_GLX_OML_sync_control) #define GLEE_GLX_NV_float_buffer GLeeEnabled(&_GLEE_GLX_NV_float_buffer) #define GLEE_GLX_SGIX_hyperpipe GLeeEnabled(&_GLEE_GLX_SGIX_hyperpipe) #define GLEE_GLX_MESA_agp_offset GLeeEnabled(&_GLEE_GLX_MESA_agp_offset) #define GLEE_GLX_EXT_fbconfig_packed_float GLeeEnabled(&_GLEE_GLX_EXT_fbconfig_packed_float) #define GLEE_GLX_EXT_framebuffer_sRGB GLeeEnabled(&_GLEE_GLX_EXT_framebuffer_sRGB) #define GLEE_GLX_EXT_texture_from_pixmap GLeeEnabled(&_GLEE_GLX_EXT_texture_from_pixmap) #define GLEE_GLX_NV_present_video GLeeEnabled(&_GLEE_GLX_NV_present_video) #define GLEE_GLX_NV_video_out GLeeEnabled(&_GLEE_GLX_NV_video_out) #define GLEE_GLX_NV_swap_group GLeeEnabled(&_GLEE_GLX_NV_swap_group) #define GLEE_GLX_NV_video_capture GLeeEnabled(&_GLEE_GLX_NV_video_capture) #define GLEE_GLX_EXT_swap_control GLeeEnabled(&_GLEE_GLX_EXT_swap_control) #define GLEE_GLX_NV_copy_image GLeeEnabled(&_GLEE_GLX_NV_copy_image) #define GLEE_GLX_INTEL_swap_event GLeeEnabled(&_GLEE_GLX_INTEL_swap_event) #define GLEE_GLX_NV_multisample_coverage GLeeEnabled(&_GLEE_GLX_NV_multisample_coverage) #define GLEE_GLX_AMD_gpu_association GLeeEnabled(&_GLEE_GLX_AMD_gpu_association) #define GLEE_GLX_EXT_create_context_es2_profile GLeeEnabled(&_GLEE_GLX_EXT_create_context_es2_profile) #define GLEE_GLX_EXT_create_context_es_profile GLeeEnabled(&_GLEE_GLX_EXT_create_context_es_profile) #define GLEE_GLX_EXT_swap_control_tear GLeeEnabled(&_GLEE_GLX_EXT_swap_control_tear) #define GLEE_GLX_EXT_buffer_age GLeeEnabled(&_GLEE_GLX_EXT_buffer_age) #define GLEE_GLX_NV_video_output GLeeEnabled(&_GLEE_GLX_NV_video_output) /* GLX_VERSION_1_3 */ #ifndef GLX_VERSION_1_3 #define GLX_VERSION_1_3 1 #define __GLEE_GLX_VERSION_1_3 1 /* Constants */ #define GLX_WINDOW_BIT 0x00000001 #define GLX_PIXMAP_BIT 0x00000002 #define GLX_PBUFFER_BIT 0x00000004 #define GLX_RGBA_BIT 0x00000001 #define GLX_COLOR_INDEX_BIT 0x00000002 #define GLX_PBUFFER_CLOBBER_MASK 0x08000000 #define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 #define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 #define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 #define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 #define GLX_AUX_BUFFERS_BIT 0x00000010 #define GLX_DEPTH_BUFFER_BIT 0x00000020 #define GLX_STENCIL_BUFFER_BIT 0x00000040 #define GLX_ACCUM_BUFFER_BIT 0x00000080 #define GLX_CONFIG_CAVEAT 0x20 #define GLX_X_VISUAL_TYPE 0x22 #define GLX_TRANSPARENT_TYPE 0x23 #define GLX_TRANSPARENT_INDEX_VALUE 0x24 #define GLX_TRANSPARENT_RED_VALUE 0x25 #define GLX_TRANSPARENT_GREEN_VALUE 0x26 #define GLX_TRANSPARENT_BLUE_VALUE 0x27 #define GLX_TRANSPARENT_ALPHA_VALUE 0x28 #define GLX_DONT_CARE 0xFFFFFFFF #define GLX_NONE 0x8000 #define GLX_SLOW_CONFIG 0x8001 #define GLX_TRUE_COLOR 0x8002 #define GLX_DIRECT_COLOR 0x8003 #define GLX_PSEUDO_COLOR 0x8004 #define GLX_STATIC_COLOR 0x8005 #define GLX_GRAY_SCALE 0x8006 #define GLX_STATIC_GRAY 0x8007 #define GLX_TRANSPARENT_RGB 0x8008 #define GLX_TRANSPARENT_INDEX 0x8009 #define GLX_VISUAL_ID 0x800B #define GLX_SCREEN 0x800C #define GLX_NON_CONFORMANT_CONFIG 0x800D #define GLX_DRAWABLE_TYPE 0x8010 #define GLX_RENDER_TYPE 0x8011 #define GLX_X_RENDERABLE 0x8012 #define GLX_FBCONFIG_ID 0x8013 #define GLX_RGBA_TYPE 0x8014 #define GLX_COLOR_INDEX_TYPE 0x8015 #define GLX_MAX_PBUFFER_WIDTH 0x8016 #define GLX_MAX_PBUFFER_HEIGHT 0x8017 #define GLX_MAX_PBUFFER_PIXELS 0x8018 #define GLX_PRESERVED_CONTENTS 0x801B #define GLX_LARGEST_PBUFFER 0x801C #define GLX_WIDTH 0x801D #define GLX_HEIGHT 0x801E #define GLX_EVENT_MASK 0x801F #define GLX_DAMAGED 0x8020 #define GLX_SAVED 0x8021 #define GLX_WINDOW 0x8022 #define GLX_PBUFFER 0x8023 #define GLX_PBUFFER_HEIGHT 0x8040 #define GLX_PBUFFER_WIDTH 0x8041 #ifndef GLEE_H_DEFINED_glXGetFBConfigs #define GLEE_H_DEFINED_glXGetFBConfigs typedef GLXFBConfig * (APIENTRYP GLEEPFNGLXGETFBCONFIGSPROC) (Display * dpy, int screen, int * nelements); GLEE_EXTERN GLEEPFNGLXGETFBCONFIGSPROC GLeeFuncPtr_glXGetFBConfigs; #define glXGetFBConfigs GLeeFuncPtr_glXGetFBConfigs #endif #ifndef GLEE_H_DEFINED_glXChooseFBConfig #define GLEE_H_DEFINED_glXChooseFBConfig typedef GLXFBConfig * (APIENTRYP GLEEPFNGLXCHOOSEFBCONFIGPROC) (Display * dpy, int screen, const int * attrib_list, int * nelements); GLEE_EXTERN GLEEPFNGLXCHOOSEFBCONFIGPROC GLeeFuncPtr_glXChooseFBConfig; #define glXChooseFBConfig GLeeFuncPtr_glXChooseFBConfig #endif #ifndef GLEE_H_DEFINED_glXGetFBConfigAttrib #define GLEE_H_DEFINED_glXGetFBConfigAttrib typedef int (APIENTRYP GLEEPFNGLXGETFBCONFIGATTRIBPROC) (Display * dpy, GLXFBConfig config, int attribute, int * value); GLEE_EXTERN GLEEPFNGLXGETFBCONFIGATTRIBPROC GLeeFuncPtr_glXGetFBConfigAttrib; #define glXGetFBConfigAttrib GLeeFuncPtr_glXGetFBConfigAttrib #endif #ifndef GLEE_H_DEFINED_glXGetVisualFromFBConfig #define GLEE_H_DEFINED_glXGetVisualFromFBConfig typedef XVisualInfo * (APIENTRYP GLEEPFNGLXGETVISUALFROMFBCONFIGPROC) (Display * dpy, GLXFBConfig config); GLEE_EXTERN GLEEPFNGLXGETVISUALFROMFBCONFIGPROC GLeeFuncPtr_glXGetVisualFromFBConfig; #define glXGetVisualFromFBConfig GLeeFuncPtr_glXGetVisualFromFBConfig #endif #ifndef GLEE_H_DEFINED_glXCreateWindow #define GLEE_H_DEFINED_glXCreateWindow typedef GLXWindow (APIENTRYP GLEEPFNGLXCREATEWINDOWPROC) (Display * dpy, GLXFBConfig config, Window win, const int * attrib_list); GLEE_EXTERN GLEEPFNGLXCREATEWINDOWPROC GLeeFuncPtr_glXCreateWindow; #define glXCreateWindow GLeeFuncPtr_glXCreateWindow #endif #ifndef GLEE_H_DEFINED_glXDestroyWindow #define GLEE_H_DEFINED_glXDestroyWindow typedef void (APIENTRYP GLEEPFNGLXDESTROYWINDOWPROC) (Display * dpy, GLXWindow win); GLEE_EXTERN GLEEPFNGLXDESTROYWINDOWPROC GLeeFuncPtr_glXDestroyWindow; #define glXDestroyWindow GLeeFuncPtr_glXDestroyWindow #endif #ifndef GLEE_H_DEFINED_glXCreatePixmap #define GLEE_H_DEFINED_glXCreatePixmap typedef GLXPixmap (APIENTRYP GLEEPFNGLXCREATEPIXMAPPROC) (Display * dpy, GLXFBConfig config, Pixmap pixmap, const int * attrib_list); GLEE_EXTERN GLEEPFNGLXCREATEPIXMAPPROC GLeeFuncPtr_glXCreatePixmap; #define glXCreatePixmap GLeeFuncPtr_glXCreatePixmap #endif #ifndef GLEE_H_DEFINED_glXDestroyPixmap #define GLEE_H_DEFINED_glXDestroyPixmap typedef void (APIENTRYP GLEEPFNGLXDESTROYPIXMAPPROC) (Display * dpy, GLXPixmap pixmap); GLEE_EXTERN GLEEPFNGLXDESTROYPIXMAPPROC GLeeFuncPtr_glXDestroyPixmap; #define glXDestroyPixmap GLeeFuncPtr_glXDestroyPixmap #endif #ifndef GLEE_H_DEFINED_glXCreatePbuffer #define GLEE_H_DEFINED_glXCreatePbuffer typedef GLXPbuffer (APIENTRYP GLEEPFNGLXCREATEPBUFFERPROC) (Display * dpy, GLXFBConfig config, const int * attrib_list); GLEE_EXTERN GLEEPFNGLXCREATEPBUFFERPROC GLeeFuncPtr_glXCreatePbuffer; #define glXCreatePbuffer GLeeFuncPtr_glXCreatePbuffer #endif #ifndef GLEE_H_DEFINED_glXDestroyPbuffer #define GLEE_H_DEFINED_glXDestroyPbuffer typedef void (APIENTRYP GLEEPFNGLXDESTROYPBUFFERPROC) (Display * dpy, GLXPbuffer pbuf); GLEE_EXTERN GLEEPFNGLXDESTROYPBUFFERPROC GLeeFuncPtr_glXDestroyPbuffer; #define glXDestroyPbuffer GLeeFuncPtr_glXDestroyPbuffer #endif #ifndef GLEE_H_DEFINED_glXQueryDrawable #define GLEE_H_DEFINED_glXQueryDrawable typedef void (APIENTRYP GLEEPFNGLXQUERYDRAWABLEPROC) (Display * dpy, GLXDrawable draw, int attribute, unsigned int * value); GLEE_EXTERN GLEEPFNGLXQUERYDRAWABLEPROC GLeeFuncPtr_glXQueryDrawable; #define glXQueryDrawable GLeeFuncPtr_glXQueryDrawable #endif #ifndef GLEE_H_DEFINED_glXCreateNewContext #define GLEE_H_DEFINED_glXCreateNewContext typedef GLXContext (APIENTRYP GLEEPFNGLXCREATENEWCONTEXTPROC) (Display * dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); GLEE_EXTERN GLEEPFNGLXCREATENEWCONTEXTPROC GLeeFuncPtr_glXCreateNewContext; #define glXCreateNewContext GLeeFuncPtr_glXCreateNewContext #endif #ifndef GLEE_H_DEFINED_glXMakeContextCurrent #define GLEE_H_DEFINED_glXMakeContextCurrent typedef Bool (APIENTRYP GLEEPFNGLXMAKECONTEXTCURRENTPROC) (Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); GLEE_EXTERN GLEEPFNGLXMAKECONTEXTCURRENTPROC GLeeFuncPtr_glXMakeContextCurrent; #define glXMakeContextCurrent GLeeFuncPtr_glXMakeContextCurrent #endif #ifndef GLEE_H_DEFINED_glXGetCurrentReadDrawable #define GLEE_H_DEFINED_glXGetCurrentReadDrawable typedef GLXDrawable (APIENTRYP GLEEPFNGLXGETCURRENTREADDRAWABLEPROC) (); GLEE_EXTERN GLEEPFNGLXGETCURRENTREADDRAWABLEPROC GLeeFuncPtr_glXGetCurrentReadDrawable; #define glXGetCurrentReadDrawable GLeeFuncPtr_glXGetCurrentReadDrawable #endif #ifndef GLEE_H_DEFINED_glXGetCurrentDisplay #define GLEE_H_DEFINED_glXGetCurrentDisplay typedef Display * (APIENTRYP GLEEPFNGLXGETCURRENTDISPLAYPROC) (); GLEE_EXTERN GLEEPFNGLXGETCURRENTDISPLAYPROC GLeeFuncPtr_glXGetCurrentDisplay; #define glXGetCurrentDisplay GLeeFuncPtr_glXGetCurrentDisplay #endif #ifndef GLEE_H_DEFINED_glXQueryContext #define GLEE_H_DEFINED_glXQueryContext typedef int (APIENTRYP GLEEPFNGLXQUERYCONTEXTPROC) (Display * dpy, GLXContext ctx, int attribute, int * value); GLEE_EXTERN GLEEPFNGLXQUERYCONTEXTPROC GLeeFuncPtr_glXQueryContext; #define glXQueryContext GLeeFuncPtr_glXQueryContext #endif #ifndef GLEE_H_DEFINED_glXSelectEvent #define GLEE_H_DEFINED_glXSelectEvent typedef void (APIENTRYP GLEEPFNGLXSELECTEVENTPROC) (Display * dpy, GLXDrawable draw, unsigned long event_mask); GLEE_EXTERN GLEEPFNGLXSELECTEVENTPROC GLeeFuncPtr_glXSelectEvent; #define glXSelectEvent GLeeFuncPtr_glXSelectEvent #endif #ifndef GLEE_H_DEFINED_glXGetSelectedEvent #define GLEE_H_DEFINED_glXGetSelectedEvent typedef void (APIENTRYP GLEEPFNGLXGETSELECTEDEVENTPROC) (Display * dpy, GLXDrawable draw, unsigned long * event_mask); GLEE_EXTERN GLEEPFNGLXGETSELECTEDEVENTPROC GLeeFuncPtr_glXGetSelectedEvent; #define glXGetSelectedEvent GLeeFuncPtr_glXGetSelectedEvent #endif #endif /* GLX_VERSION_1_4 */ #ifndef GLX_VERSION_1_4 #define GLX_VERSION_1_4 1 #define __GLEE_GLX_VERSION_1_4 1 /* Constants */ #define GLX_SAMPLE_BUFFERS 100000 #define GLX_SAMPLES 100001 #ifndef GLEE_H_DEFINED_glXGetProcAddress #define GLEE_H_DEFINED_glXGetProcAddress typedef __GLXextFuncPtr (APIENTRYP GLEEPFNGLXGETPROCADDRESSPROC) (const GLubyte * procName); GLEE_EXTERN GLEEPFNGLXGETPROCADDRESSPROC GLeeFuncPtr_glXGetProcAddress; #define glXGetProcAddress GLeeFuncPtr_glXGetProcAddress #endif #endif /* GLX_ARB_multisample */ #ifndef GLX_ARB_multisample #define GLX_ARB_multisample 1 #define __GLEE_GLX_ARB_multisample 1 /* Constants */ #define GLX_SAMPLE_BUFFERS_ARB 100000 #define GLX_SAMPLES_ARB 100001 #endif /* GLX_ARB_vertex_buffer_object */ #ifndef GLX_ARB_vertex_buffer_object #define GLX_ARB_vertex_buffer_object 1 #define __GLEE_GLX_ARB_vertex_buffer_object 1 /* Constants */ #define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095 #endif /* GLX_ARB_fbconfig_float */ #ifndef GLX_ARB_fbconfig_float #define GLX_ARB_fbconfig_float 1 #define __GLEE_GLX_ARB_fbconfig_float 1 /* Constants */ #define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9 #define GLX_RGBA_FLOAT_BIT_ARB 0x00000004 #endif /* GLX_ARB_framebuffer_sRGB */ #ifndef GLX_ARB_framebuffer_sRGB #define GLX_ARB_framebuffer_sRGB 1 #define __GLEE_GLX_ARB_framebuffer_sRGB 1 /* Constants */ #define GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20B2 #endif /* GLX_ARB_create_context */ #ifndef GLX_ARB_create_context #define GLX_ARB_create_context 1 #define __GLEE_GLX_ARB_create_context 1 /* Constants */ #define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001 #define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002 #define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 #define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 #define GLX_CONTEXT_FLAGS_ARB 0x2094 #ifndef GLEE_H_DEFINED_glXCreateContextAttribsARB #define GLEE_H_DEFINED_glXCreateContextAttribsARB typedef GLXContext (APIENTRYP GLEEPFNGLXCREATECONTEXTATTRIBSARBPROC) (Display * dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int * attrib_list); GLEE_EXTERN GLEEPFNGLXCREATECONTEXTATTRIBSARBPROC GLeeFuncPtr_glXCreateContextAttribsARB; #define glXCreateContextAttribsARB GLeeFuncPtr_glXCreateContextAttribsARB #endif #endif /* GLX_ARB_create_context_profile */ #ifndef GLX_ARB_create_context_profile #define GLX_ARB_create_context_profile 1 #define __GLEE_GLX_ARB_create_context_profile 1 /* Constants */ #define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 #define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 #define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 #endif /* GLX_ARB_create_context_robustness */ #ifndef GLX_ARB_create_context_robustness #define GLX_ARB_create_context_robustness 1 #define __GLEE_GLX_ARB_create_context_robustness 1 /* Constants */ #define GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004 #define GLX_LOSE_CONTEXT_ON_RESET_ARB 0x8252 #define GLX_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256 #define GLX_NO_RESET_NOTIFICATION_ARB 0x8261 #endif /* GLX_SGIS_multisample */ #ifndef GLX_SGIS_multisample #define GLX_SGIS_multisample 1 #define __GLEE_GLX_SGIS_multisample 1 /* Constants */ #define GLX_SAMPLE_BUFFERS_SGIS 100000 #define GLX_SAMPLES_SGIS 100001 #endif /* GLX_EXT_visual_info */ #ifndef GLX_EXT_visual_info #define GLX_EXT_visual_info 1 #define __GLEE_GLX_EXT_visual_info 1 /* Constants */ #define GLX_X_VISUAL_TYPE_EXT 0x22 #define GLX_TRANSPARENT_TYPE_EXT 0x23 #define GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24 #define GLX_TRANSPARENT_RED_VALUE_EXT 0x25 #define GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26 #define GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27 #define GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28 #define GLX_NONE_EXT 0x8000 #define GLX_TRUE_COLOR_EXT 0x8002 #define GLX_DIRECT_COLOR_EXT 0x8003 #define GLX_PSEUDO_COLOR_EXT 0x8004 #define GLX_STATIC_COLOR_EXT 0x8005 #define GLX_GRAY_SCALE_EXT 0x8006 #define GLX_STATIC_GRAY_EXT 0x8007 #define GLX_TRANSPARENT_RGB_EXT 0x8008 #define GLX_TRANSPARENT_INDEX_EXT 0x8009 #endif /* GLX_SGI_swap_control */ #ifndef GLX_SGI_swap_control #define GLX_SGI_swap_control 1 #define __GLEE_GLX_SGI_swap_control 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXSwapIntervalSGI #define GLEE_H_DEFINED_glXSwapIntervalSGI typedef int (APIENTRYP GLEEPFNGLXSWAPINTERVALSGIPROC) (int interval); GLEE_EXTERN GLEEPFNGLXSWAPINTERVALSGIPROC GLeeFuncPtr_glXSwapIntervalSGI; #define glXSwapIntervalSGI GLeeFuncPtr_glXSwapIntervalSGI #endif #endif /* GLX_SGI_video_sync */ #ifndef GLX_SGI_video_sync #define GLX_SGI_video_sync 1 #define __GLEE_GLX_SGI_video_sync 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXGetVideoSyncSGI #define GLEE_H_DEFINED_glXGetVideoSyncSGI typedef int (APIENTRYP GLEEPFNGLXGETVIDEOSYNCSGIPROC) (unsigned int * count); GLEE_EXTERN GLEEPFNGLXGETVIDEOSYNCSGIPROC GLeeFuncPtr_glXGetVideoSyncSGI; #define glXGetVideoSyncSGI GLeeFuncPtr_glXGetVideoSyncSGI #endif #ifndef GLEE_H_DEFINED_glXWaitVideoSyncSGI #define GLEE_H_DEFINED_glXWaitVideoSyncSGI typedef int (APIENTRYP GLEEPFNGLXWAITVIDEOSYNCSGIPROC) (int divisor, int remainder, unsigned int * count); GLEE_EXTERN GLEEPFNGLXWAITVIDEOSYNCSGIPROC GLeeFuncPtr_glXWaitVideoSyncSGI; #define glXWaitVideoSyncSGI GLeeFuncPtr_glXWaitVideoSyncSGI #endif #endif /* GLX_SGI_make_current_read */ #ifndef GLX_SGI_make_current_read #define GLX_SGI_make_current_read 1 #define __GLEE_GLX_SGI_make_current_read 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXMakeCurrentReadSGI #define GLEE_H_DEFINED_glXMakeCurrentReadSGI typedef Bool (APIENTRYP GLEEPFNGLXMAKECURRENTREADSGIPROC) (Display * dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); GLEE_EXTERN GLEEPFNGLXMAKECURRENTREADSGIPROC GLeeFuncPtr_glXMakeCurrentReadSGI; #define glXMakeCurrentReadSGI GLeeFuncPtr_glXMakeCurrentReadSGI #endif #ifndef GLEE_H_DEFINED_glXGetCurrentReadDrawableSGI #define GLEE_H_DEFINED_glXGetCurrentReadDrawableSGI typedef GLXDrawable (APIENTRYP GLEEPFNGLXGETCURRENTREADDRAWABLESGIPROC) (); GLEE_EXTERN GLEEPFNGLXGETCURRENTREADDRAWABLESGIPROC GLeeFuncPtr_glXGetCurrentReadDrawableSGI; #define glXGetCurrentReadDrawableSGI GLeeFuncPtr_glXGetCurrentReadDrawableSGI #endif #endif /* GLX_EXT_visual_rating */ #ifndef GLX_EXT_visual_rating #define GLX_EXT_visual_rating 1 #define __GLEE_GLX_EXT_visual_rating 1 /* Constants */ #define GLX_VISUAL_CAVEAT_EXT 0x20 #define GLX_SLOW_VISUAL_EXT 0x8001 #define GLX_NON_CONFORMANT_VISUAL_EXT 0x800D #endif /* GLX_EXT_import_context */ #ifndef GLX_EXT_import_context #define GLX_EXT_import_context 1 #define __GLEE_GLX_EXT_import_context 1 /* Constants */ #define GLX_SHARE_CONTEXT_EXT 0x800A #define GLX_VISUAL_ID_EXT 0x800B #define GLX_SCREEN_EXT 0x800C #ifndef GLEE_H_DEFINED_glXGetCurrentDisplayEXT #define GLEE_H_DEFINED_glXGetCurrentDisplayEXT typedef Display * (APIENTRYP GLEEPFNGLXGETCURRENTDISPLAYEXTPROC) (); GLEE_EXTERN GLEEPFNGLXGETCURRENTDISPLAYEXTPROC GLeeFuncPtr_glXGetCurrentDisplayEXT; #define glXGetCurrentDisplayEXT GLeeFuncPtr_glXGetCurrentDisplayEXT #endif #ifndef GLEE_H_DEFINED_glXQueryContextInfoEXT #define GLEE_H_DEFINED_glXQueryContextInfoEXT typedef int (APIENTRYP GLEEPFNGLXQUERYCONTEXTINFOEXTPROC) (Display * dpy, GLXContext context, int attribute, int * value); GLEE_EXTERN GLEEPFNGLXQUERYCONTEXTINFOEXTPROC GLeeFuncPtr_glXQueryContextInfoEXT; #define glXQueryContextInfoEXT GLeeFuncPtr_glXQueryContextInfoEXT #endif #ifndef GLEE_H_DEFINED_glXGetContextIDEXT #define GLEE_H_DEFINED_glXGetContextIDEXT typedef GLEE_GLXContextID (APIENTRYP GLEEPFNGLXGETCONTEXTIDEXTPROC) (const GLXContext context); GLEE_EXTERN GLEEPFNGLXGETCONTEXTIDEXTPROC GLeeFuncPtr_glXGetContextIDEXT; #define glXGetContextIDEXT GLeeFuncPtr_glXGetContextIDEXT #endif #ifndef GLEE_H_DEFINED_glXImportContextEXT #define GLEE_H_DEFINED_glXImportContextEXT typedef GLXContext (APIENTRYP GLEEPFNGLXIMPORTCONTEXTEXTPROC) (Display * dpy, GLEE_GLXContextID contextID); GLEE_EXTERN GLEEPFNGLXIMPORTCONTEXTEXTPROC GLeeFuncPtr_glXImportContextEXT; #define glXImportContextEXT GLeeFuncPtr_glXImportContextEXT #endif #ifndef GLEE_H_DEFINED_glXFreeContextEXT #define GLEE_H_DEFINED_glXFreeContextEXT typedef void (APIENTRYP GLEEPFNGLXFREECONTEXTEXTPROC) (Display * dpy, GLXContext context); GLEE_EXTERN GLEEPFNGLXFREECONTEXTEXTPROC GLeeFuncPtr_glXFreeContextEXT; #define glXFreeContextEXT GLeeFuncPtr_glXFreeContextEXT #endif #endif /* GLX_SGIX_fbconfig */ #ifndef GLX_SGIX_fbconfig #define GLX_SGIX_fbconfig 1 #define __GLEE_GLX_SGIX_fbconfig 1 /* Constants */ #define GLX_WINDOW_BIT_SGIX 0x00000001 #define GLX_PIXMAP_BIT_SGIX 0x00000002 #define GLX_RGBA_BIT_SGIX 0x00000001 #define GLX_COLOR_INDEX_BIT_SGIX 0x00000002 #define GLX_DRAWABLE_TYPE_SGIX 0x8010 #define GLX_RENDER_TYPE_SGIX 0x8011 #define GLX_X_RENDERABLE_SGIX 0x8012 #define GLX_FBCONFIG_ID_SGIX 0x8013 #define GLX_RGBA_TYPE_SGIX 0x8014 #define GLX_COLOR_INDEX_TYPE_SGIX 0x8015 #ifndef GLEE_H_DEFINED_glXGetFBConfigAttribSGIX #define GLEE_H_DEFINED_glXGetFBConfigAttribSGIX typedef int (APIENTRYP GLEEPFNGLXGETFBCONFIGATTRIBSGIXPROC) (Display * dpy, GLXFBConfigSGIX config, int attribute, int * value); GLEE_EXTERN GLEEPFNGLXGETFBCONFIGATTRIBSGIXPROC GLeeFuncPtr_glXGetFBConfigAttribSGIX; #define glXGetFBConfigAttribSGIX GLeeFuncPtr_glXGetFBConfigAttribSGIX #endif #ifndef GLEE_H_DEFINED_glXChooseFBConfigSGIX #define GLEE_H_DEFINED_glXChooseFBConfigSGIX typedef GLXFBConfigSGIX * (APIENTRYP GLEEPFNGLXCHOOSEFBCONFIGSGIXPROC) (Display * dpy, int screen, int * attrib_list, int * nelements); GLEE_EXTERN GLEEPFNGLXCHOOSEFBCONFIGSGIXPROC GLeeFuncPtr_glXChooseFBConfigSGIX; #define glXChooseFBConfigSGIX GLeeFuncPtr_glXChooseFBConfigSGIX #endif #ifndef GLEE_H_DEFINED_glXCreateGLXPixmapWithConfigSGIX #define GLEE_H_DEFINED_glXCreateGLXPixmapWithConfigSGIX typedef GLXPixmap (APIENTRYP GLEEPFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC) (Display * dpy, GLXFBConfigSGIX config, Pixmap pixmap); GLEE_EXTERN GLEEPFNGLXCREATEGLXPIXMAPWITHCONFIGSGIXPROC GLeeFuncPtr_glXCreateGLXPixmapWithConfigSGIX; #define glXCreateGLXPixmapWithConfigSGIX GLeeFuncPtr_glXCreateGLXPixmapWithConfigSGIX #endif #ifndef GLEE_H_DEFINED_glXCreateContextWithConfigSGIX #define GLEE_H_DEFINED_glXCreateContextWithConfigSGIX typedef GLXContext (APIENTRYP GLEEPFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) (Display * dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct); GLEE_EXTERN GLEEPFNGLXCREATECONTEXTWITHCONFIGSGIXPROC GLeeFuncPtr_glXCreateContextWithConfigSGIX; #define glXCreateContextWithConfigSGIX GLeeFuncPtr_glXCreateContextWithConfigSGIX #endif #ifndef GLEE_H_DEFINED_glXGetVisualFromFBConfigSGIX #define GLEE_H_DEFINED_glXGetVisualFromFBConfigSGIX typedef XVisualInfo * (APIENTRYP GLEEPFNGLXGETVISUALFROMFBCONFIGSGIXPROC) (Display * dpy, GLXFBConfigSGIX config); GLEE_EXTERN GLEEPFNGLXGETVISUALFROMFBCONFIGSGIXPROC GLeeFuncPtr_glXGetVisualFromFBConfigSGIX; #define glXGetVisualFromFBConfigSGIX GLeeFuncPtr_glXGetVisualFromFBConfigSGIX #endif #ifndef GLEE_H_DEFINED_glXGetFBConfigFromVisualSGIX #define GLEE_H_DEFINED_glXGetFBConfigFromVisualSGIX typedef GLXFBConfigSGIX (APIENTRYP GLEEPFNGLXGETFBCONFIGFROMVISUALSGIXPROC) (Display * dpy, XVisualInfo * vis); GLEE_EXTERN GLEEPFNGLXGETFBCONFIGFROMVISUALSGIXPROC GLeeFuncPtr_glXGetFBConfigFromVisualSGIX; #define glXGetFBConfigFromVisualSGIX GLeeFuncPtr_glXGetFBConfigFromVisualSGIX #endif #endif /* GLX_SGIX_pbuffer */ #ifndef GLX_SGIX_pbuffer #define GLX_SGIX_pbuffer 1 #define __GLEE_GLX_SGIX_pbuffer 1 /* Constants */ #define GLX_PBUFFER_BIT_SGIX 0x00000004 #define GLX_BUFFER_CLOBBER_MASK_SGIX 0x08000000 #define GLX_FRONT_LEFT_BUFFER_BIT_SGIX 0x00000001 #define GLX_FRONT_RIGHT_BUFFER_BIT_SGIX 0x00000002 #define GLX_BACK_LEFT_BUFFER_BIT_SGIX 0x00000004 #define GLX_BACK_RIGHT_BUFFER_BIT_SGIX 0x00000008 #define GLX_AUX_BUFFERS_BIT_SGIX 0x00000010 #define GLX_DEPTH_BUFFER_BIT_SGIX 0x00000020 #define GLX_STENCIL_BUFFER_BIT_SGIX 0x00000040 #define GLX_ACCUM_BUFFER_BIT_SGIX 0x00000080 #define GLX_SAMPLE_BUFFERS_BIT_SGIX 0x00000100 #define GLX_MAX_PBUFFER_WIDTH_SGIX 0x8016 #define GLX_MAX_PBUFFER_HEIGHT_SGIX 0x8017 #define GLX_MAX_PBUFFER_PIXELS_SGIX 0x8018 #define GLX_OPTIMAL_PBUFFER_WIDTH_SGIX 0x8019 #define GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX 0x801A #define GLX_PRESERVED_CONTENTS_SGIX 0x801B #define GLX_LARGEST_PBUFFER_SGIX 0x801C #define GLX_WIDTH_SGIX 0x801D #define GLX_HEIGHT_SGIX 0x801E #define GLX_EVENT_MASK_SGIX 0x801F #define GLX_DAMAGED_SGIX 0x8020 #define GLX_SAVED_SGIX 0x8021 #define GLX_WINDOW_SGIX 0x8022 #define GLX_PBUFFER_SGIX 0x8023 #ifndef GLEE_H_DEFINED_glXCreateGLXPbufferSGIX #define GLEE_H_DEFINED_glXCreateGLXPbufferSGIX typedef GLXPbufferSGIX (APIENTRYP GLEEPFNGLXCREATEGLXPBUFFERSGIXPROC) (Display * dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int * attrib_list); GLEE_EXTERN GLEEPFNGLXCREATEGLXPBUFFERSGIXPROC GLeeFuncPtr_glXCreateGLXPbufferSGIX; #define glXCreateGLXPbufferSGIX GLeeFuncPtr_glXCreateGLXPbufferSGIX #endif #ifndef GLEE_H_DEFINED_glXDestroyGLXPbufferSGIX #define GLEE_H_DEFINED_glXDestroyGLXPbufferSGIX typedef void (APIENTRYP GLEEPFNGLXDESTROYGLXPBUFFERSGIXPROC) (Display * dpy, GLXPbufferSGIX pbuf); GLEE_EXTERN GLEEPFNGLXDESTROYGLXPBUFFERSGIXPROC GLeeFuncPtr_glXDestroyGLXPbufferSGIX; #define glXDestroyGLXPbufferSGIX GLeeFuncPtr_glXDestroyGLXPbufferSGIX #endif #ifndef GLEE_H_DEFINED_glXQueryGLXPbufferSGIX #define GLEE_H_DEFINED_glXQueryGLXPbufferSGIX typedef int (APIENTRYP GLEEPFNGLXQUERYGLXPBUFFERSGIXPROC) (Display * dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int * value); GLEE_EXTERN GLEEPFNGLXQUERYGLXPBUFFERSGIXPROC GLeeFuncPtr_glXQueryGLXPbufferSGIX; #define glXQueryGLXPbufferSGIX GLeeFuncPtr_glXQueryGLXPbufferSGIX #endif #ifndef GLEE_H_DEFINED_glXSelectEventSGIX #define GLEE_H_DEFINED_glXSelectEventSGIX typedef void (APIENTRYP GLEEPFNGLXSELECTEVENTSGIXPROC) (Display * dpy, GLXDrawable drawable, unsigned long mask); GLEE_EXTERN GLEEPFNGLXSELECTEVENTSGIXPROC GLeeFuncPtr_glXSelectEventSGIX; #define glXSelectEventSGIX GLeeFuncPtr_glXSelectEventSGIX #endif #ifndef GLEE_H_DEFINED_glXGetSelectedEventSGIX #define GLEE_H_DEFINED_glXGetSelectedEventSGIX typedef void (APIENTRYP GLEEPFNGLXGETSELECTEDEVENTSGIXPROC) (Display * dpy, GLXDrawable drawable, unsigned long * mask); GLEE_EXTERN GLEEPFNGLXGETSELECTEDEVENTSGIXPROC GLeeFuncPtr_glXGetSelectedEventSGIX; #define glXGetSelectedEventSGIX GLeeFuncPtr_glXGetSelectedEventSGIX #endif #endif /* GLX_SGI_cushion */ #ifndef GLX_SGI_cushion #define GLX_SGI_cushion 1 #define __GLEE_GLX_SGI_cushion 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXCushionSGI #define GLEE_H_DEFINED_glXCushionSGI typedef void (APIENTRYP GLEEPFNGLXCUSHIONSGIPROC) (Display * dpy, Window window, float cushion); GLEE_EXTERN GLEEPFNGLXCUSHIONSGIPROC GLeeFuncPtr_glXCushionSGI; #define glXCushionSGI GLeeFuncPtr_glXCushionSGI #endif #endif /* GLX_SGIX_video_resize */ #ifndef GLX_SGIX_video_resize #define GLX_SGIX_video_resize 1 #define __GLEE_GLX_SGIX_video_resize 1 /* Constants */ #define GLX_SYNC_FRAME_SGIX 0x00000000 #define GLX_SYNC_SWAP_SGIX 0x00000001 #ifndef GLEE_H_DEFINED_glXBindChannelToWindowSGIX #define GLEE_H_DEFINED_glXBindChannelToWindowSGIX typedef int (APIENTRYP GLEEPFNGLXBINDCHANNELTOWINDOWSGIXPROC) (Display * display, int screen, int channel, Window window); GLEE_EXTERN GLEEPFNGLXBINDCHANNELTOWINDOWSGIXPROC GLeeFuncPtr_glXBindChannelToWindowSGIX; #define glXBindChannelToWindowSGIX GLeeFuncPtr_glXBindChannelToWindowSGIX #endif #ifndef GLEE_H_DEFINED_glXChannelRectSGIX #define GLEE_H_DEFINED_glXChannelRectSGIX typedef int (APIENTRYP GLEEPFNGLXCHANNELRECTSGIXPROC) (Display * display, int screen, int channel, int x, int y, int w, int h); GLEE_EXTERN GLEEPFNGLXCHANNELRECTSGIXPROC GLeeFuncPtr_glXChannelRectSGIX; #define glXChannelRectSGIX GLeeFuncPtr_glXChannelRectSGIX #endif #ifndef GLEE_H_DEFINED_glXQueryChannelRectSGIX #define GLEE_H_DEFINED_glXQueryChannelRectSGIX typedef int (APIENTRYP GLEEPFNGLXQUERYCHANNELRECTSGIXPROC) (Display * display, int screen, int channel, int * dx, int * dy, int * dw, int * dh); GLEE_EXTERN GLEEPFNGLXQUERYCHANNELRECTSGIXPROC GLeeFuncPtr_glXQueryChannelRectSGIX; #define glXQueryChannelRectSGIX GLeeFuncPtr_glXQueryChannelRectSGIX #endif #ifndef GLEE_H_DEFINED_glXQueryChannelDeltasSGIX #define GLEE_H_DEFINED_glXQueryChannelDeltasSGIX typedef int (APIENTRYP GLEEPFNGLXQUERYCHANNELDELTASSGIXPROC) (Display * display, int screen, int channel, int * x, int * y, int * w, int * h); GLEE_EXTERN GLEEPFNGLXQUERYCHANNELDELTASSGIXPROC GLeeFuncPtr_glXQueryChannelDeltasSGIX; #define glXQueryChannelDeltasSGIX GLeeFuncPtr_glXQueryChannelDeltasSGIX #endif #ifndef GLEE_H_DEFINED_glXChannelRectSyncSGIX #define GLEE_H_DEFINED_glXChannelRectSyncSGIX typedef int (APIENTRYP GLEEPFNGLXCHANNELRECTSYNCSGIXPROC) (Display * display, int screen, int channel, GLenum synctype); GLEE_EXTERN GLEEPFNGLXCHANNELRECTSYNCSGIXPROC GLeeFuncPtr_glXChannelRectSyncSGIX; #define glXChannelRectSyncSGIX GLeeFuncPtr_glXChannelRectSyncSGIX #endif #endif /* GLX_SGIX_swap_group */ #ifndef GLX_SGIX_swap_group #define GLX_SGIX_swap_group 1 #define __GLEE_GLX_SGIX_swap_group 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXJoinSwapGroupSGIX #define GLEE_H_DEFINED_glXJoinSwapGroupSGIX typedef void (APIENTRYP GLEEPFNGLXJOINSWAPGROUPSGIXPROC) (Display * dpy, GLXDrawable drawable, GLXDrawable member); GLEE_EXTERN GLEEPFNGLXJOINSWAPGROUPSGIXPROC GLeeFuncPtr_glXJoinSwapGroupSGIX; #define glXJoinSwapGroupSGIX GLeeFuncPtr_glXJoinSwapGroupSGIX #endif #endif /* GLX_SGIX_swap_barrier */ #ifndef GLX_SGIX_swap_barrier #define GLX_SGIX_swap_barrier 1 #define __GLEE_GLX_SGIX_swap_barrier 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXBindSwapBarrierSGIX #define GLEE_H_DEFINED_glXBindSwapBarrierSGIX typedef void (APIENTRYP GLEEPFNGLXBINDSWAPBARRIERSGIXPROC) (Display * dpy, GLXDrawable drawable, int barrier); GLEE_EXTERN GLEEPFNGLXBINDSWAPBARRIERSGIXPROC GLeeFuncPtr_glXBindSwapBarrierSGIX; #define glXBindSwapBarrierSGIX GLeeFuncPtr_glXBindSwapBarrierSGIX #endif #ifndef GLEE_H_DEFINED_glXQueryMaxSwapBarriersSGIX #define GLEE_H_DEFINED_glXQueryMaxSwapBarriersSGIX typedef Bool (APIENTRYP GLEEPFNGLXQUERYMAXSWAPBARRIERSSGIXPROC) (Display * dpy, int screen, int * max); GLEE_EXTERN GLEEPFNGLXQUERYMAXSWAPBARRIERSSGIXPROC GLeeFuncPtr_glXQueryMaxSwapBarriersSGIX; #define glXQueryMaxSwapBarriersSGIX GLeeFuncPtr_glXQueryMaxSwapBarriersSGIX #endif #endif /* GLX_SGIS_blended_overlay */ #ifndef GLX_SGIS_blended_overlay #define GLX_SGIS_blended_overlay 1 #define __GLEE_GLX_SGIS_blended_overlay 1 /* Constants */ #define GLX_BLENDED_RGBA_SGIS 0x8025 #endif /* GLX_SGIS_shared_multisample */ #ifndef GLX_SGIS_shared_multisample #define GLX_SGIS_shared_multisample 1 #define __GLEE_GLX_SGIS_shared_multisample 1 /* Constants */ #define GLX_MULTISAMPLE_SUB_RECT_WIDTH_SGIS 0x8026 #define GLX_MULTISAMPLE_SUB_RECT_HEIGHT_SGIS 0x8027 #endif /* GLX_SUN_get_transparent_index */ #ifndef GLX_SUN_get_transparent_index #define GLX_SUN_get_transparent_index 1 #define __GLEE_GLX_SUN_get_transparent_index 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXGetTransparentIndexSUN #define GLEE_H_DEFINED_glXGetTransparentIndexSUN typedef Status (APIENTRYP GLEEPFNGLXGETTRANSPARENTINDEXSUNPROC) (Display * dpy, Window overlay, Window underlay, long * pTransparentIndex); GLEE_EXTERN GLEEPFNGLXGETTRANSPARENTINDEXSUNPROC GLeeFuncPtr_glXGetTransparentIndexSUN; #define glXGetTransparentIndexSUN GLeeFuncPtr_glXGetTransparentIndexSUN #endif #endif /* GLX_3DFX_multisample */ #ifndef GLX_3DFX_multisample #define GLX_3DFX_multisample 1 #define __GLEE_GLX_3DFX_multisample 1 /* Constants */ #define GLX_SAMPLE_BUFFERS_3DFX 0x8050 #define GLX_SAMPLES_3DFX 0x8051 #endif /* GLX_MESA_copy_sub_buffer */ #ifndef GLX_MESA_copy_sub_buffer #define GLX_MESA_copy_sub_buffer 1 #define __GLEE_GLX_MESA_copy_sub_buffer 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXCopySubBufferMESA #define GLEE_H_DEFINED_glXCopySubBufferMESA typedef void (APIENTRYP GLEEPFNGLXCOPYSUBBUFFERMESAPROC) (Display * dpy, GLXDrawable drawable, int x, int y, int width, int height); GLEE_EXTERN GLEEPFNGLXCOPYSUBBUFFERMESAPROC GLeeFuncPtr_glXCopySubBufferMESA; #define glXCopySubBufferMESA GLeeFuncPtr_glXCopySubBufferMESA #endif #endif /* GLX_MESA_pixmap_colormap */ #ifndef GLX_MESA_pixmap_colormap #define GLX_MESA_pixmap_colormap 1 #define __GLEE_GLX_MESA_pixmap_colormap 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXCreateGLXPixmapMESA #define GLEE_H_DEFINED_glXCreateGLXPixmapMESA typedef GLXPixmap (APIENTRYP GLEEPFNGLXCREATEGLXPIXMAPMESAPROC) (Display * dpy, XVisualInfo * visual, Pixmap pixmap, Colormap cmap); GLEE_EXTERN GLEEPFNGLXCREATEGLXPIXMAPMESAPROC GLeeFuncPtr_glXCreateGLXPixmapMESA; #define glXCreateGLXPixmapMESA GLeeFuncPtr_glXCreateGLXPixmapMESA #endif #endif /* GLX_MESA_release_buffers */ #ifndef GLX_MESA_release_buffers #define GLX_MESA_release_buffers 1 #define __GLEE_GLX_MESA_release_buffers 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXReleaseBuffersMESA #define GLEE_H_DEFINED_glXReleaseBuffersMESA typedef Bool (APIENTRYP GLEEPFNGLXRELEASEBUFFERSMESAPROC) (Display * dpy, GLXDrawable drawable); GLEE_EXTERN GLEEPFNGLXRELEASEBUFFERSMESAPROC GLeeFuncPtr_glXReleaseBuffersMESA; #define glXReleaseBuffersMESA GLeeFuncPtr_glXReleaseBuffersMESA #endif #endif /* GLX_MESA_set_3dfx_mode */ #ifndef GLX_MESA_set_3dfx_mode #define GLX_MESA_set_3dfx_mode 1 #define __GLEE_GLX_MESA_set_3dfx_mode 1 /* Constants */ #define GLX_3DFX_WINDOW_MODE_MESA 0x1 #define GLX_3DFX_FULLSCREEN_MODE_MESA 0x2 #ifndef GLEE_H_DEFINED_glXSet3DfxModeMESA #define GLEE_H_DEFINED_glXSet3DfxModeMESA typedef Bool (APIENTRYP GLEEPFNGLXSET3DFXMODEMESAPROC) (int mode); GLEE_EXTERN GLEEPFNGLXSET3DFXMODEMESAPROC GLeeFuncPtr_glXSet3DfxModeMESA; #define glXSet3DfxModeMESA GLeeFuncPtr_glXSet3DfxModeMESA #endif #endif /* GLX_SGIX_visual_select_group */ #ifndef GLX_SGIX_visual_select_group #define GLX_SGIX_visual_select_group 1 #define __GLEE_GLX_SGIX_visual_select_group 1 /* Constants */ #define GLX_VISUAL_SELECT_GROUP_SGIX 0x8028 #endif /* GLX_OML_swap_method */ #ifndef GLX_OML_swap_method #define GLX_OML_swap_method 1 #define __GLEE_GLX_OML_swap_method 1 /* Constants */ #define GLX_SWAP_METHOD_OML 0x8060 #define GLX_SWAP_EXCHANGE_OML 0x8061 #define GLX_SWAP_COPY_OML 0x8062 #define GLX_SWAP_UNDEFINED_OML 0x8063 #endif /* GLX_OML_sync_control */ #ifndef GLX_OML_sync_control #define GLX_OML_sync_control 1 #define __GLEE_GLX_OML_sync_control 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXGetSyncValuesOML #define GLEE_H_DEFINED_glXGetSyncValuesOML typedef Bool (APIENTRYP GLEEPFNGLXGETSYNCVALUESOMLPROC) (Display * dpy, GLXDrawable drawable, int64_t * ust, int64_t * msc, int64_t * sbc); GLEE_EXTERN GLEEPFNGLXGETSYNCVALUESOMLPROC GLeeFuncPtr_glXGetSyncValuesOML; #define glXGetSyncValuesOML GLeeFuncPtr_glXGetSyncValuesOML #endif #ifndef GLEE_H_DEFINED_glXGetMscRateOML #define GLEE_H_DEFINED_glXGetMscRateOML typedef Bool (APIENTRYP GLEEPFNGLXGETMSCRATEOMLPROC) (Display * dpy, GLXDrawable drawable, int32_t * numerator, int32_t * denominator); GLEE_EXTERN GLEEPFNGLXGETMSCRATEOMLPROC GLeeFuncPtr_glXGetMscRateOML; #define glXGetMscRateOML GLeeFuncPtr_glXGetMscRateOML #endif #ifndef GLEE_H_DEFINED_glXSwapBuffersMscOML #define GLEE_H_DEFINED_glXSwapBuffersMscOML typedef int64_t (APIENTRYP GLEEPFNGLXSWAPBUFFERSMSCOMLPROC) (Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder); GLEE_EXTERN GLEEPFNGLXSWAPBUFFERSMSCOMLPROC GLeeFuncPtr_glXSwapBuffersMscOML; #define glXSwapBuffersMscOML GLeeFuncPtr_glXSwapBuffersMscOML #endif #ifndef GLEE_H_DEFINED_glXWaitForMscOML #define GLEE_H_DEFINED_glXWaitForMscOML typedef Bool (APIENTRYP GLEEPFNGLXWAITFORMSCOMLPROC) (Display * dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t * ust, int64_t * msc, int64_t * sbc); GLEE_EXTERN GLEEPFNGLXWAITFORMSCOMLPROC GLeeFuncPtr_glXWaitForMscOML; #define glXWaitForMscOML GLeeFuncPtr_glXWaitForMscOML #endif #ifndef GLEE_H_DEFINED_glXWaitForSbcOML #define GLEE_H_DEFINED_glXWaitForSbcOML typedef Bool (APIENTRYP GLEEPFNGLXWAITFORSBCOMLPROC) (Display * dpy, GLXDrawable drawable, int64_t target_sbc, int64_t * ust, int64_t * msc, int64_t * sbc); GLEE_EXTERN GLEEPFNGLXWAITFORSBCOMLPROC GLeeFuncPtr_glXWaitForSbcOML; #define glXWaitForSbcOML GLeeFuncPtr_glXWaitForSbcOML #endif #endif /* GLX_NV_float_buffer */ #ifndef GLX_NV_float_buffer #define GLX_NV_float_buffer 1 #define __GLEE_GLX_NV_float_buffer 1 /* Constants */ #define GLX_FLOAT_COMPONENTS_NV 0x20B0 #endif /* GLX_SGIX_hyperpipe */ #ifndef GLX_SGIX_hyperpipe #define GLX_SGIX_hyperpipe 1 #define __GLEE_GLX_SGIX_hyperpipe 1 /* Constants */ #define GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX 80 #define GLX_BAD_HYPERPIPE_CONFIG_SGIX 91 #define GLX_BAD_HYPERPIPE_SGIX 92 #define GLX_HYPERPIPE_DISPLAY_PIPE_SGIX 0x00000001 #define GLX_HYPERPIPE_RENDER_PIPE_SGIX 0x00000002 #define GLX_PIPE_RECT_SGIX 0x00000001 #define GLX_PIPE_RECT_LIMITS_SGIX 0x00000002 #define GLX_HYPERPIPE_STEREO_SGIX 0x00000003 #define GLX_HYPERPIPE_PIXEL_AVERAGE_SGIX 0x00000004 #define GLX_HYPERPIPE_ID_SGIX 0x8030 #ifndef GLEE_H_DEFINED_glXQueryHyperpipeNetworkSGIX #define GLEE_H_DEFINED_glXQueryHyperpipeNetworkSGIX typedef GLXHyperpipeNetworkSGIX * (APIENTRYP GLEEPFNGLXQUERYHYPERPIPENETWORKSGIXPROC) (Display * dpy, int * npipes); GLEE_EXTERN GLEEPFNGLXQUERYHYPERPIPENETWORKSGIXPROC GLeeFuncPtr_glXQueryHyperpipeNetworkSGIX; #define glXQueryHyperpipeNetworkSGIX GLeeFuncPtr_glXQueryHyperpipeNetworkSGIX #endif #ifndef GLEE_H_DEFINED_glXHyperpipeConfigSGIX #define GLEE_H_DEFINED_glXHyperpipeConfigSGIX typedef int (APIENTRYP GLEEPFNGLXHYPERPIPECONFIGSGIXPROC) (Display * dpy, int networkId, int npipes, GLXHyperpipeConfigSGIX * cfg, int * hpId); GLEE_EXTERN GLEEPFNGLXHYPERPIPECONFIGSGIXPROC GLeeFuncPtr_glXHyperpipeConfigSGIX; #define glXHyperpipeConfigSGIX GLeeFuncPtr_glXHyperpipeConfigSGIX #endif #ifndef GLEE_H_DEFINED_glXQueryHyperpipeConfigSGIX #define GLEE_H_DEFINED_glXQueryHyperpipeConfigSGIX typedef GLXHyperpipeConfigSGIX * (APIENTRYP GLEEPFNGLXQUERYHYPERPIPECONFIGSGIXPROC) (Display * dpy, int hpId, int * npipes); GLEE_EXTERN GLEEPFNGLXQUERYHYPERPIPECONFIGSGIXPROC GLeeFuncPtr_glXQueryHyperpipeConfigSGIX; #define glXQueryHyperpipeConfigSGIX GLeeFuncPtr_glXQueryHyperpipeConfigSGIX #endif #ifndef GLEE_H_DEFINED_glXDestroyHyperpipeConfigSGIX #define GLEE_H_DEFINED_glXDestroyHyperpipeConfigSGIX typedef int (APIENTRYP GLEEPFNGLXDESTROYHYPERPIPECONFIGSGIXPROC) (Display * dpy, int hpId); GLEE_EXTERN GLEEPFNGLXDESTROYHYPERPIPECONFIGSGIXPROC GLeeFuncPtr_glXDestroyHyperpipeConfigSGIX; #define glXDestroyHyperpipeConfigSGIX GLeeFuncPtr_glXDestroyHyperpipeConfigSGIX #endif #ifndef GLEE_H_DEFINED_glXBindHyperpipeSGIX #define GLEE_H_DEFINED_glXBindHyperpipeSGIX typedef int (APIENTRYP GLEEPFNGLXBINDHYPERPIPESGIXPROC) (Display * dpy, int hpId); GLEE_EXTERN GLEEPFNGLXBINDHYPERPIPESGIXPROC GLeeFuncPtr_glXBindHyperpipeSGIX; #define glXBindHyperpipeSGIX GLeeFuncPtr_glXBindHyperpipeSGIX #endif #ifndef GLEE_H_DEFINED_glXQueryHyperpipeBestAttribSGIX #define GLEE_H_DEFINED_glXQueryHyperpipeBestAttribSGIX typedef int (APIENTRYP GLEEPFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC) (Display * dpy, int timeSlice, int attrib, int size, void * attribList, void * returnAttribList); GLEE_EXTERN GLEEPFNGLXQUERYHYPERPIPEBESTATTRIBSGIXPROC GLeeFuncPtr_glXQueryHyperpipeBestAttribSGIX; #define glXQueryHyperpipeBestAttribSGIX GLeeFuncPtr_glXQueryHyperpipeBestAttribSGIX #endif #ifndef GLEE_H_DEFINED_glXHyperpipeAttribSGIX #define GLEE_H_DEFINED_glXHyperpipeAttribSGIX typedef int (APIENTRYP GLEEPFNGLXHYPERPIPEATTRIBSGIXPROC) (Display * dpy, int timeSlice, int attrib, int size, void * attribList); GLEE_EXTERN GLEEPFNGLXHYPERPIPEATTRIBSGIXPROC GLeeFuncPtr_glXHyperpipeAttribSGIX; #define glXHyperpipeAttribSGIX GLeeFuncPtr_glXHyperpipeAttribSGIX #endif #ifndef GLEE_H_DEFINED_glXQueryHyperpipeAttribSGIX #define GLEE_H_DEFINED_glXQueryHyperpipeAttribSGIX typedef int (APIENTRYP GLEEPFNGLXQUERYHYPERPIPEATTRIBSGIXPROC) (Display * dpy, int timeSlice, int attrib, int size, void * returnAttribList); GLEE_EXTERN GLEEPFNGLXQUERYHYPERPIPEATTRIBSGIXPROC GLeeFuncPtr_glXQueryHyperpipeAttribSGIX; #define glXQueryHyperpipeAttribSGIX GLeeFuncPtr_glXQueryHyperpipeAttribSGIX #endif #endif /* GLX_MESA_agp_offset */ #ifndef GLX_MESA_agp_offset #define GLX_MESA_agp_offset 1 #define __GLEE_GLX_MESA_agp_offset 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXGetAGPOffsetMESA #define GLEE_H_DEFINED_glXGetAGPOffsetMESA typedef unsigned int (APIENTRYP GLEEPFNGLXGETAGPOFFSETMESAPROC) (const void * pointer); GLEE_EXTERN GLEEPFNGLXGETAGPOFFSETMESAPROC GLeeFuncPtr_glXGetAGPOffsetMESA; #define glXGetAGPOffsetMESA GLeeFuncPtr_glXGetAGPOffsetMESA #endif #endif /* GLX_EXT_fbconfig_packed_float */ #ifndef GLX_EXT_fbconfig_packed_float #define GLX_EXT_fbconfig_packed_float 1 #define __GLEE_GLX_EXT_fbconfig_packed_float 1 /* Constants */ #define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 #define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 #endif /* GLX_EXT_framebuffer_sRGB */ #ifndef GLX_EXT_framebuffer_sRGB #define GLX_EXT_framebuffer_sRGB 1 #define __GLEE_GLX_EXT_framebuffer_sRGB 1 /* Constants */ #define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 #endif /* GLX_EXT_texture_from_pixmap */ #ifndef GLX_EXT_texture_from_pixmap #define GLX_EXT_texture_from_pixmap 1 #define __GLEE_GLX_EXT_texture_from_pixmap 1 /* Constants */ #define GLX_TEXTURE_1D_BIT_EXT 0x00000001 #define GLX_TEXTURE_2D_BIT_EXT 0x00000002 #define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 #define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 #define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 #define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 #define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 #define GLX_Y_INVERTED_EXT 0x20D4 #define GLX_TEXTURE_FORMAT_EXT 0x20D5 #define GLX_TEXTURE_TARGET_EXT 0x20D6 #define GLX_MIPMAP_TEXTURE_EXT 0x20D7 #define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 #define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 #define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA #define GLX_TEXTURE_1D_EXT 0x20DB #define GLX_TEXTURE_2D_EXT 0x20DC #define GLX_TEXTURE_RECTANGLE_EXT 0x20DD #define GLX_FRONT_LEFT_EXT 0x20DE #define GLX_FRONT_RIGHT_EXT 0x20DF #define GLX_BACK_LEFT_EXT 0x20E0 #define GLX_BACK_RIGHT_EXT 0x20E1 #define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT #define GLX_BACK_EXT GLX_BACK_LEFT_EXT #define GLX_AUX0_EXT 0x20E2 #define GLX_AUX1_EXT 0x20E3 #define GLX_AUX2_EXT 0x20E4 #define GLX_AUX3_EXT 0x20E5 #define GLX_AUX4_EXT 0x20E6 #define GLX_AUX5_EXT 0x20E7 #define GLX_AUX6_EXT 0x20E8 #define GLX_AUX7_EXT 0x20E9 #define GLX_AUX8_EXT 0x20EA #define GLX_AUX9_EXT 0x20EB #ifndef GLEE_H_DEFINED_glXBindTexImageEXT #define GLEE_H_DEFINED_glXBindTexImageEXT typedef void (APIENTRYP GLEEPFNGLXBINDTEXIMAGEEXTPROC) (Display * dpy, GLXDrawable drawable, int buffer, const int * attrib_list); GLEE_EXTERN GLEEPFNGLXBINDTEXIMAGEEXTPROC GLeeFuncPtr_glXBindTexImageEXT; #define glXBindTexImageEXT GLeeFuncPtr_glXBindTexImageEXT #endif #ifndef GLEE_H_DEFINED_glXReleaseTexImageEXT #define GLEE_H_DEFINED_glXReleaseTexImageEXT typedef void (APIENTRYP GLEEPFNGLXRELEASETEXIMAGEEXTPROC) (Display * dpy, GLXDrawable drawable, int buffer); GLEE_EXTERN GLEEPFNGLXRELEASETEXIMAGEEXTPROC GLeeFuncPtr_glXReleaseTexImageEXT; #define glXReleaseTexImageEXT GLeeFuncPtr_glXReleaseTexImageEXT #endif #endif /* GLX_NV_present_video */ #ifndef GLX_NV_present_video #define GLX_NV_present_video 1 #define __GLEE_GLX_NV_present_video 1 /* Constants */ #define GLX_NUM_VIDEO_SLOTS_NV 0x20F0 #ifndef GLEE_H_DEFINED_glXEnumerateVideoDevicesNV #define GLEE_H_DEFINED_glXEnumerateVideoDevicesNV typedef unsigned int * (APIENTRYP GLEEPFNGLXENUMERATEVIDEODEVICESNVPROC) (Display * dpy, int screen, int * nelements); GLEE_EXTERN GLEEPFNGLXENUMERATEVIDEODEVICESNVPROC GLeeFuncPtr_glXEnumerateVideoDevicesNV; #define glXEnumerateVideoDevicesNV GLeeFuncPtr_glXEnumerateVideoDevicesNV #endif #ifndef GLEE_H_DEFINED_glXBindVideoDeviceNV #define GLEE_H_DEFINED_glXBindVideoDeviceNV typedef int (APIENTRYP GLEEPFNGLXBINDVIDEODEVICENVPROC) (Display * dpy, unsigned int video_slot, unsigned int video_device, const int * attrib_list); GLEE_EXTERN GLEEPFNGLXBINDVIDEODEVICENVPROC GLeeFuncPtr_glXBindVideoDeviceNV; #define glXBindVideoDeviceNV GLeeFuncPtr_glXBindVideoDeviceNV #endif #endif /* GLX_NV_video_out */ #ifndef GLX_NV_video_out #define GLX_NV_video_out 1 #define __GLEE_GLX_NV_video_out 1 /* Constants */ #define GLX_VIDEO_OUT_COLOR_NV 0x20C3 #define GLX_VIDEO_OUT_ALPHA_NV 0x20C4 #define GLX_VIDEO_OUT_DEPTH_NV 0x20C5 #define GLX_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6 #define GLX_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7 #define GLX_VIDEO_OUT_FRAME_NV 0x20C8 #define GLX_VIDEO_OUT_FIELD_1_NV 0x20C9 #define GLX_VIDEO_OUT_FIELD_2_NV 0x20CA #define GLX_VIDEO_OUT_STACKED_FIELDS_1_2_NV 0x20CB #define GLX_VIDEO_OUT_STACKED_FIELDS_2_1_NV 0x20CC #endif /* GLX_NV_swap_group */ #ifndef GLX_NV_swap_group #define GLX_NV_swap_group 1 #define __GLEE_GLX_NV_swap_group 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXJoinSwapGroupNV #define GLEE_H_DEFINED_glXJoinSwapGroupNV typedef Bool (APIENTRYP GLEEPFNGLXJOINSWAPGROUPNVPROC) (Display * dpy, GLXDrawable drawable, GLuint group); GLEE_EXTERN GLEEPFNGLXJOINSWAPGROUPNVPROC GLeeFuncPtr_glXJoinSwapGroupNV; #define glXJoinSwapGroupNV GLeeFuncPtr_glXJoinSwapGroupNV #endif #ifndef GLEE_H_DEFINED_glXBindSwapBarrierNV #define GLEE_H_DEFINED_glXBindSwapBarrierNV typedef Bool (APIENTRYP GLEEPFNGLXBINDSWAPBARRIERNVPROC) (Display * dpy, GLuint group, GLuint barrier); GLEE_EXTERN GLEEPFNGLXBINDSWAPBARRIERNVPROC GLeeFuncPtr_glXBindSwapBarrierNV; #define glXBindSwapBarrierNV GLeeFuncPtr_glXBindSwapBarrierNV #endif #ifndef GLEE_H_DEFINED_glXQuerySwapGroupNV #define GLEE_H_DEFINED_glXQuerySwapGroupNV typedef Bool (APIENTRYP GLEEPFNGLXQUERYSWAPGROUPNVPROC) (Display * dpy, GLXDrawable drawable, GLuint * group, GLuint * barrier); GLEE_EXTERN GLEEPFNGLXQUERYSWAPGROUPNVPROC GLeeFuncPtr_glXQuerySwapGroupNV; #define glXQuerySwapGroupNV GLeeFuncPtr_glXQuerySwapGroupNV #endif #ifndef GLEE_H_DEFINED_glXQueryMaxSwapGroupsNV #define GLEE_H_DEFINED_glXQueryMaxSwapGroupsNV typedef Bool (APIENTRYP GLEEPFNGLXQUERYMAXSWAPGROUPSNVPROC) (Display * dpy, int screen, GLuint * maxGroups, GLuint * maxBarriers); GLEE_EXTERN GLEEPFNGLXQUERYMAXSWAPGROUPSNVPROC GLeeFuncPtr_glXQueryMaxSwapGroupsNV; #define glXQueryMaxSwapGroupsNV GLeeFuncPtr_glXQueryMaxSwapGroupsNV #endif #ifndef GLEE_H_DEFINED_glXQueryFrameCountNV #define GLEE_H_DEFINED_glXQueryFrameCountNV typedef Bool (APIENTRYP GLEEPFNGLXQUERYFRAMECOUNTNVPROC) (Display * dpy, int screen, GLuint * count); GLEE_EXTERN GLEEPFNGLXQUERYFRAMECOUNTNVPROC GLeeFuncPtr_glXQueryFrameCountNV; #define glXQueryFrameCountNV GLeeFuncPtr_glXQueryFrameCountNV #endif #ifndef GLEE_H_DEFINED_glXResetFrameCountNV #define GLEE_H_DEFINED_glXResetFrameCountNV typedef Bool (APIENTRYP GLEEPFNGLXRESETFRAMECOUNTNVPROC) (Display * dpy, int screen); GLEE_EXTERN GLEEPFNGLXRESETFRAMECOUNTNVPROC GLeeFuncPtr_glXResetFrameCountNV; #define glXResetFrameCountNV GLeeFuncPtr_glXResetFrameCountNV #endif #endif /* GLX_NV_video_capture */ #ifndef GLX_NV_video_capture #define GLX_NV_video_capture 1 #define __GLEE_GLX_NV_video_capture 1 /* Constants */ #define GLX_DEVICE_ID_NV 0x20CD #define GLX_UNIQUE_ID_NV 0x20CE #define GLX_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF #ifndef GLEE_H_DEFINED_glXBindVideoCaptureDeviceNV #define GLEE_H_DEFINED_glXBindVideoCaptureDeviceNV typedef int (APIENTRYP GLEEPFNGLXBINDVIDEOCAPTUREDEVICENVPROC) (Display * dpy, unsigned int video_capture_slot, GLXVideoCaptureDeviceNV device); GLEE_EXTERN GLEEPFNGLXBINDVIDEOCAPTUREDEVICENVPROC GLeeFuncPtr_glXBindVideoCaptureDeviceNV; #define glXBindVideoCaptureDeviceNV GLeeFuncPtr_glXBindVideoCaptureDeviceNV #endif #ifndef GLEE_H_DEFINED_glXEnumerateVideoCaptureDevicesNV #define GLEE_H_DEFINED_glXEnumerateVideoCaptureDevicesNV typedef GLXVideoCaptureDeviceNV * (APIENTRYP GLEEPFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC) (Display * dpy, int screen, int * nelements); GLEE_EXTERN GLEEPFNGLXENUMERATEVIDEOCAPTUREDEVICESNVPROC GLeeFuncPtr_glXEnumerateVideoCaptureDevicesNV; #define glXEnumerateVideoCaptureDevicesNV GLeeFuncPtr_glXEnumerateVideoCaptureDevicesNV #endif #ifndef GLEE_H_DEFINED_glXLockVideoCaptureDeviceNV #define GLEE_H_DEFINED_glXLockVideoCaptureDeviceNV typedef void (APIENTRYP GLEEPFNGLXLOCKVIDEOCAPTUREDEVICENVPROC) (Display * dpy, GLXVideoCaptureDeviceNV device); GLEE_EXTERN GLEEPFNGLXLOCKVIDEOCAPTUREDEVICENVPROC GLeeFuncPtr_glXLockVideoCaptureDeviceNV; #define glXLockVideoCaptureDeviceNV GLeeFuncPtr_glXLockVideoCaptureDeviceNV #endif #ifndef GLEE_H_DEFINED_glXQueryVideoCaptureDeviceNV #define GLEE_H_DEFINED_glXQueryVideoCaptureDeviceNV typedef int (APIENTRYP GLEEPFNGLXQUERYVIDEOCAPTUREDEVICENVPROC) (Display * dpy, GLXVideoCaptureDeviceNV device, int attribute, int * value); GLEE_EXTERN GLEEPFNGLXQUERYVIDEOCAPTUREDEVICENVPROC GLeeFuncPtr_glXQueryVideoCaptureDeviceNV; #define glXQueryVideoCaptureDeviceNV GLeeFuncPtr_glXQueryVideoCaptureDeviceNV #endif #ifndef GLEE_H_DEFINED_glXReleaseVideoCaptureDeviceNV #define GLEE_H_DEFINED_glXReleaseVideoCaptureDeviceNV typedef void (APIENTRYP GLEEPFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC) (Display * dpy, GLXVideoCaptureDeviceNV device); GLEE_EXTERN GLEEPFNGLXRELEASEVIDEOCAPTUREDEVICENVPROC GLeeFuncPtr_glXReleaseVideoCaptureDeviceNV; #define glXReleaseVideoCaptureDeviceNV GLeeFuncPtr_glXReleaseVideoCaptureDeviceNV #endif #endif /* GLX_EXT_swap_control */ #ifndef GLX_EXT_swap_control #define GLX_EXT_swap_control 1 #define __GLEE_GLX_EXT_swap_control 1 /* Constants */ #define GLX_SWAP_INTERVAL_EXT 0x20F1 #define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2 #ifndef GLEE_H_DEFINED_glXSwapIntervalEXT #define GLEE_H_DEFINED_glXSwapIntervalEXT typedef void (APIENTRYP GLEEPFNGLXSWAPINTERVALEXTPROC) (Display * dpy, GLXDrawable drawable, int interval); GLEE_EXTERN GLEEPFNGLXSWAPINTERVALEXTPROC GLeeFuncPtr_glXSwapIntervalEXT; #define glXSwapIntervalEXT GLeeFuncPtr_glXSwapIntervalEXT #endif #endif /* GLX_NV_copy_image */ #ifndef GLX_NV_copy_image #define GLX_NV_copy_image 1 #define __GLEE_GLX_NV_copy_image 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXCopyImageSubDataNV #define GLEE_H_DEFINED_glXCopyImageSubDataNV typedef void (APIENTRYP GLEEPFNGLXCOPYIMAGESUBDATANVPROC) (Display * dpy, GLXContext srcCtx, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLXContext dstCtx, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth); GLEE_EXTERN GLEEPFNGLXCOPYIMAGESUBDATANVPROC GLeeFuncPtr_glXCopyImageSubDataNV; #define glXCopyImageSubDataNV GLeeFuncPtr_glXCopyImageSubDataNV #endif #endif /* GLX_INTEL_swap_event */ #ifndef GLX_INTEL_swap_event #define GLX_INTEL_swap_event 1 #define __GLEE_GLX_INTEL_swap_event 1 /* Constants */ #define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000 #define GLX_EXCHANGE_COMPLETE_INTEL 0x8180 #define GLX_COPY_COMPLETE_INTEL 0x8181 #define GLX_FLIP_COMPLETE_INTEL 0x8182 #endif /* GLX_NV_multisample_coverage */ #ifndef GLX_NV_multisample_coverage #define GLX_NV_multisample_coverage 1 #define __GLEE_GLX_NV_multisample_coverage 1 /* Constants */ #define GLX_COVERAGE_SAMPLES_NV 100001 #define GLX_COLOR_SAMPLES_NV 0x20B3 #endif /* GLX_AMD_gpu_association */ #ifndef GLX_AMD_gpu_association #define GLX_AMD_gpu_association 1 #define __GLEE_GLX_AMD_gpu_association 1 /* Constants */ #define GLX_GPU_VENDOR_AMD 0x1F00 #define GLX_GPU_RENDERER_STRING_AMD 0x1F01 #define GLX_GPU_OPENGL_VERSION_STRING_AMD 0x1F02 #define GLX_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2 #define GLX_GPU_RAM_AMD 0x21A3 #define GLX_GPU_CLOCK_AMD 0x21A4 #define GLX_GPU_NUM_PIPES_AMD 0x21A5 #define GLX_GPU_NUM_SIMD_AMD 0x21A6 #define GLX_GPU_NUM_RB_AMD 0x21A7 #define GLX_GPU_NUM_SPI_AMD 0x21A8 #endif /* GLX_EXT_create_context_es2_profile */ #ifndef GLX_EXT_create_context_es2_profile #define GLX_EXT_create_context_es2_profile 1 #define __GLEE_GLX_EXT_create_context_es2_profile 1 /* Constants */ #define GLX_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004 #endif /* GLX_EXT_create_context_es_profile */ #ifndef GLX_EXT_create_context_es_profile #define GLX_EXT_create_context_es_profile 1 #define __GLEE_GLX_EXT_create_context_es_profile 1 /* Constants */ #define GLX_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004 #endif /* GLX_EXT_swap_control_tear */ #ifndef GLX_EXT_swap_control_tear #define GLX_EXT_swap_control_tear 1 #define __GLEE_GLX_EXT_swap_control_tear 1 /* Constants */ #define GLX_LATE_SWAPS_TEAR_EXT 0x20F3 #endif /* GLX_EXT_buffer_age */ #ifndef GLX_EXT_buffer_age #define GLX_EXT_buffer_age 1 #define __GLEE_GLX_EXT_buffer_age 1 /* Constants */ #define GLX_BACK_BUFFER_AGE_EXT 0x20F4 #endif /* GLX_NV_video_output */ #ifndef GLX_NV_video_output #define GLX_NV_video_output 1 #define __GLEE_GLX_NV_video_output 1 /* Constants */ #ifndef GLEE_H_DEFINED_glXGetVideoDeviceNV #define GLEE_H_DEFINED_glXGetVideoDeviceNV typedef int (APIENTRYP GLEEPFNGLXGETVIDEODEVICENVPROC) (Display * dpy, int screen, int numVideoDevices, GLXVideoDeviceNV * pVideoDevice); GLEE_EXTERN GLEEPFNGLXGETVIDEODEVICENVPROC GLeeFuncPtr_glXGetVideoDeviceNV; #define glXGetVideoDeviceNV GLeeFuncPtr_glXGetVideoDeviceNV #endif #ifndef GLEE_H_DEFINED_glXReleaseVideoDeviceNV #define GLEE_H_DEFINED_glXReleaseVideoDeviceNV typedef int (APIENTRYP GLEEPFNGLXRELEASEVIDEODEVICENVPROC) (Display * dpy, int screen, GLXVideoDeviceNV VideoDevice); GLEE_EXTERN GLEEPFNGLXRELEASEVIDEODEVICENVPROC GLeeFuncPtr_glXReleaseVideoDeviceNV; #define glXReleaseVideoDeviceNV GLeeFuncPtr_glXReleaseVideoDeviceNV #endif #ifndef GLEE_H_DEFINED_glXBindVideoImageNV #define GLEE_H_DEFINED_glXBindVideoImageNV typedef int (APIENTRYP GLEEPFNGLXBINDVIDEOIMAGENVPROC) (Display * dpy, GLXVideoDeviceNV VideoDevice, GLXPbuffer pbuf, int iVideoBuffer); GLEE_EXTERN GLEEPFNGLXBINDVIDEOIMAGENVPROC GLeeFuncPtr_glXBindVideoImageNV; #define glXBindVideoImageNV GLeeFuncPtr_glXBindVideoImageNV #endif #ifndef GLEE_H_DEFINED_glXReleaseVideoImageNV #define GLEE_H_DEFINED_glXReleaseVideoImageNV typedef int (APIENTRYP GLEEPFNGLXRELEASEVIDEOIMAGENVPROC) (Display * dpy, GLXPbuffer pbuf); GLEE_EXTERN GLEEPFNGLXRELEASEVIDEOIMAGENVPROC GLeeFuncPtr_glXReleaseVideoImageNV; #define glXReleaseVideoImageNV GLeeFuncPtr_glXReleaseVideoImageNV #endif #ifndef GLEE_H_DEFINED_glXSendPbufferToVideoNV #define GLEE_H_DEFINED_glXSendPbufferToVideoNV typedef int (APIENTRYP GLEEPFNGLXSENDPBUFFERTOVIDEONVPROC) (Display * dpy, GLXPbuffer pbuf, int iBufferType, unsigned long * pulCounterPbuffer, GLboolean bBlock); GLEE_EXTERN GLEEPFNGLXSENDPBUFFERTOVIDEONVPROC GLeeFuncPtr_glXSendPbufferToVideoNV; #define glXSendPbufferToVideoNV GLeeFuncPtr_glXSendPbufferToVideoNV #endif #ifndef GLEE_H_DEFINED_glXGetVideoInfoNV #define GLEE_H_DEFINED_glXGetVideoInfoNV typedef int (APIENTRYP GLEEPFNGLXGETVIDEOINFONVPROC) (Display * dpy, int screen, GLXVideoDeviceNV VideoDevice, unsigned long * pulCounterOutputPbuffer, unsigned long * pulCounterOutputVideo); GLEE_EXTERN GLEEPFNGLXGETVIDEOINFONVPROC GLeeFuncPtr_glXGetVideoInfoNV; #define glXGetVideoInfoNV GLeeFuncPtr_glXGetVideoInfoNV #endif #endif #endif /*end GLX */ /***************************************************************** * GLee functions *****************************************************************/ GLEE_EXTERN GLboolean GLeeInit( void ); GLEE_EXTERN GLint GLeeForceLink(const char * extensionName); GLEE_EXTERN const char * GLeeGetErrorString( void ); GLEE_EXTERN const char * GLeeGetExtStrGL( void ); GLEE_EXTERN GLboolean GLeeEnabled(GLboolean * extensionQueryingVariable); #ifdef _WIN32 GLEE_EXTERN const char * GLeeGetExtStrWGL( void ); #elif defined(__APPLE__) || defined(__APPLE_CC__) #else GLEE_EXTERN const char * GLeeGetExtStrGLX( void ); #endif #ifdef __cplusplus } /* end C linkage */ #endif #endif /* __glee_h_ defined */ love-0.9.1/src/modules/graphics/opengl/wrap_Texture.cpp0000644000000000000000000000652212316602166023214 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Texture.h" namespace love { namespace graphics { namespace opengl { Texture *luax_checktexture(lua_State *L, int idx) { return luax_checktype(L, idx, "Texture", GRAPHICS_TEXTURE_T); } int w_Texture_getWidth(lua_State *L) { Texture *t = luax_checktexture(L, 1); lua_pushnumber(L, t->getWidth()); return 1; } int w_Texture_getHeight(lua_State *L) { Texture *t = luax_checktexture(L, 1); lua_pushnumber(L, t->getHeight()); return 1; } int w_Texture_getDimensions(lua_State *L) { Texture *t = luax_checktexture(L, 1); lua_pushnumber(L, t->getWidth()); lua_pushnumber(L, t->getHeight()); return 2; } int w_Texture_setFilter(lua_State *L) { Texture *t = luax_checktexture(L, 1); Texture::Filter f = t->getFilter(); const char *minstr = luaL_checkstring(L, 2); const char *magstr = luaL_optstring(L, 3, minstr); if (!Texture::getConstant(minstr, f.min)) return luaL_error(L, "Invalid filter mode: %s", minstr); if (!Texture::getConstant(magstr, f.mag)) return luaL_error(L, "Invalid filter mode: %s", magstr); f.anisotropy = (float) luaL_optnumber(L, 4, 1.0); EXCEPT_GUARD(t->setFilter(f);) return 0; } int w_Texture_getFilter(lua_State *L) { Texture *t = luax_checktexture(L, 1); const Texture::Filter f = t->getFilter(); const char *minstr = nullptr; const char *magstr = nullptr; if (!Texture::getConstant(f.min, minstr)) return luaL_error(L, "Unknown filter mode."); if (!Texture::getConstant(f.mag, magstr)) return luaL_error(L, "Unknown filter mode."); lua_pushstring(L, minstr); lua_pushstring(L, magstr); lua_pushnumber(L, f.anisotropy); return 3; } int w_Texture_setWrap(lua_State *L) { Texture *t = luax_checktexture(L, 1); Texture::Wrap w; const char *sstr = luaL_checkstring(L, 2); const char *tstr = luaL_optstring(L, 3, sstr); if (!Texture::getConstant(sstr, w.s)) return luaL_error(L, "Invalid wrap mode: %s", sstr); if (!Texture::getConstant(tstr, w.t)) return luaL_error(L, "Invalid wrap mode, %s", tstr); t->setWrap(w); return 0; } int w_Texture_getWrap(lua_State *L) { Texture *t = luax_checktexture(L, 1); const Texture::Wrap w = t->getWrap(); const char *sstr = nullptr; const char *tstr = nullptr; if (!Texture::getConstant(w.s, sstr)) return luaL_error(L, "Unknown wrap mode."); if (!Texture::getConstant(w.t, tstr)) return luaL_error(L, "Unknown wrap mode."); lua_pushstring(L, sstr); lua_pushstring(L, tstr); return 2; } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/Image.cpp0000644000000000000000000003631112316602166021544 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Image.h" // STD #include // For memcpy #include // for min/max namespace love { namespace graphics { namespace opengl { float Image::maxMipmapSharpness = 0.0f; Texture::FilterMode Image::defaultMipmapFilter = Texture::FILTER_NONE; float Image::defaultMipmapSharpness = 0.0f; Image::Image(love::image::ImageData *data, Texture::Format format) : data(data) , cdata(nullptr) , paddedWidth(width) , paddedHeight(height) , texture(0) , mipmapSharpness(defaultMipmapSharpness) , mipmapsCreated(false) , compressed(false) , format(format) , usingDefaultTexture(false) { width = data->getWidth(); height = data->getHeight(); data->retain(); preload(); } Image::Image(love::image::CompressedData *cdata, Texture::Format format) : data(nullptr) , cdata(cdata) , paddedWidth(width) , paddedHeight(height) , texture(0) , mipmapSharpness(defaultMipmapSharpness) , mipmapsCreated(false) , compressed(true) , format(format) , usingDefaultTexture(false) { width = cdata->getWidth(0); height = cdata->getHeight(0); cdata->retain(); preload(); } Image::~Image() { if (data != nullptr) data->release(); if (cdata != nullptr) cdata->release(); unload(); } love::image::ImageData *Image::getImageData() const { return data; } love::image::CompressedData *Image::getCompressedData() const { return cdata; } void Image::draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { Matrix t; t.setTransformation(x, y, angle, sx, sy, ox, oy, kx, ky); drawv(t, vertices); } void Image::drawq(Quad *quad, float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { Matrix t; t.setTransformation(x, y, angle, sx, sy, ox, oy, kx, ky); drawv(t, quad->getVertices()); } void Image::predraw() { bind(); if (width != paddedWidth || height != paddedHeight) { // NPOT image padded to POT size, so the texcoords should be scaled. glMatrixMode(GL_TEXTURE); glPushMatrix(); glScalef(float(width) / float(paddedWidth), float(height) / float(paddedHeight), 0.0f); glMatrixMode(GL_MODELVIEW); } } void Image::postdraw() { if (width != paddedWidth || height != paddedHeight) { glMatrixMode(GL_TEXTURE); glPopMatrix(); glMatrixMode(GL_MODELVIEW); } } GLuint Image::getGLTexture() const { return texture; } void Image::uploadCompressedMipmaps() { if (!isCompressed() || !cdata || !hasCompressedTextureSupport(cdata->getFormat())) return; bind(); int count = cdata->getMipmapCount(); // We have to inform OpenGL if the image doesn't have all mipmap levels. if (GLEE_VERSION_1_2 || GLEE_SGIS_texture_lod) { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, count - 1); } else if (cdata->getWidth(count-1) > 1 || cdata->getHeight(count-1) > 1) { // Telling OpenGL to ignore certain levels isn't always supported. throw love::Exception("Cannot load mipmaps: " "compressed image does not have all required levels."); } for (int i = 1; i < count; i++) { glCompressedTexImage2DARB(GL_TEXTURE_2D, i, getCompressedFormat(cdata->getFormat()), cdata->getWidth(i), cdata->getHeight(i), 0, GLsizei(cdata->getSize(i)), cdata->getData(i)); } } void Image::createMipmaps() { // Only valid for Images created with ImageData. if (!data || isCompressed()) return; if (!hasMipmapSupport()) throw love::Exception("Mipmap filtering is not supported on this system."); // Some old drivers claim support for NPOT textures, but fail when creating // mipmaps. We can't detect which systems will do this, so we fail gracefully // for all NPOT images. int w = int(width), h = int(height); if (w != next_p2(w) || h != next_p2(h)) { throw love::Exception("Cannot create mipmaps: " "image does not have power of two dimensions."); } bind(); // Prevent other threads from changing the ImageData while we upload it. love::thread::Lock lock(data->getMutex()); if (hasNpot() && (GLEE_VERSION_3_0 || GLEE_ARB_framebuffer_object)) { if (gl.getVendor() == OpenGL::VENDOR_ATI_AMD) { // AMD/ATI drivers have several bugs when generating mipmaps, // re-uploading the entire base image seems to be required. uploadTexture(); // More bugs: http://www.opengl.org/wiki/Common_Mistakes#Automatic_mipmap_generation glEnable(GL_TEXTURE_2D); } glGenerateMipmap(GL_TEXTURE_2D); } else { glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, (GLsizei)width, (GLsizei)height, GL_RGBA, GL_UNSIGNED_BYTE, data->getData()); } } void Image::checkMipmapsCreated() { if (mipmapsCreated || filter.mipmap == FILTER_NONE || usingDefaultTexture) return; if (isCompressed() && cdata && hasCompressedTextureSupport(cdata->getFormat())) uploadCompressedMipmaps(); else if (data) createMipmaps(); else return; mipmapsCreated = true; } void Image::setFilter(const Texture::Filter &f) { filter = f; // We don't want filtering or (attempted) mipmaps on the default texture. if (usingDefaultTexture) { filter.mipmap = FILTER_NONE; filter.min = filter.mag = FILTER_NEAREST; } bind(); gl.setTextureFilter(filter); checkMipmapsCreated(); } void Image::setWrap(const Texture::Wrap &w) { wrap = w; bind(); gl.setTextureWrap(w); } void Image::setMipmapSharpness(float sharpness) { if (hasMipmapSharpnessSupport()) { // LOD bias has the range (-maxbias, maxbias) mipmapSharpness = std::min(std::max(sharpness, -maxMipmapSharpness + 0.01f), maxMipmapSharpness - 0.01f); bind(); // negative bias is sharper glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_LOD_BIAS, -mipmapSharpness); } else mipmapSharpness = 0.0f; } float Image::getMipmapSharpness() const { return mipmapSharpness; } void Image::bind() const { if (texture == 0) return; gl.bindTexture(texture); } void Image::preload() { memset(vertices, 255, sizeof(Vertex)*4); vertices[0].x = 0; vertices[0].y = 0; vertices[1].x = 0; vertices[1].y = (float) height; vertices[2].x = (float) width; vertices[2].y = (float) height; vertices[3].x = (float) width; vertices[3].y = 0; vertices[0].s = 0; vertices[0].t = 0; vertices[1].s = 0; vertices[1].t = 1; vertices[2].s = 1; vertices[2].t = 1; vertices[3].s = 1; vertices[3].t = 0; filter.mipmap = defaultMipmapFilter; } bool Image::load() { return loadVolatile(); } void Image::unload() { return unloadVolatile(); } bool Image::loadVolatile() { if (format == FORMAT_SRGB && !hasSRGBSupport()) throw love::Exception("sRGB images are not supported on this system."); if (isCompressed() && cdata && !hasCompressedTextureSupport(cdata->getFormat())) { const char *str; if (image::CompressedData::getConstant(cdata->getFormat(), str)) { throw love::Exception("Cannot create image: " "%s compressed images are not supported on this system.", str); } else throw love::Exception("cannot create image: format is not supported on this system."); } if (hasMipmapSharpnessSupport() && maxMipmapSharpness == 0.0f) glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS, &maxMipmapSharpness); glGenTextures(1, &texture); gl.bindTexture(texture); filter.anisotropy = gl.setTextureFilter(filter); gl.setTextureWrap(wrap); setMipmapSharpness(mipmapSharpness); paddedWidth = width; paddedHeight = height; if (!hasNpot()) { // NPOT textures will be padded to POT dimensions if necessary. paddedWidth = next_p2(width); paddedHeight = next_p2(height); } // Use a default texture if the size is too big for the system. if (paddedWidth > gl.getMaxTextureSize() || paddedHeight > gl.getMaxTextureSize()) { uploadDefaultTexture(); return true; } // Mutex lock will potentially cover texture loading and mipmap creation. love::thread::EmptyLock lock; if (data) lock.setLock(data->getMutex()); while (glGetError() != GL_NO_ERROR); // Clear errors. if (hasNpot() || (width == paddedWidth && height == paddedHeight)) uploadTexture(); else uploadTexturePadded(); GLenum glerr = glGetError(); if (glerr != GL_NO_ERROR) throw love::Exception("Cannot create image (error code 0x%x)", glerr); usingDefaultTexture = false; mipmapsCreated = false; checkMipmapsCreated(); return true; } void Image::uploadTexturePadded() { if (isCompressed() && cdata) { // Padded textures don't really work if they're compressed... throw love::Exception("Cannot create image: " "compressed NPOT images are not supported on this system."); } else if (data) { GLenum iformat = (format == FORMAT_SRGB) ? GL_SRGB8_ALPHA8 : GL_RGBA8; glTexImage2D(GL_TEXTURE_2D, 0, iformat, (GLsizei)paddedWidth, (GLsizei)paddedHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, (GLsizei)width, (GLsizei)height, GL_RGBA, GL_UNSIGNED_BYTE, data->getData()); } } void Image::uploadTexture() { if (isCompressed() && cdata) { GLenum format = getCompressedFormat(cdata->getFormat()); glCompressedTexImage2DARB(GL_TEXTURE_2D, 0, format, cdata->getWidth(0), cdata->getHeight(0), 0, GLsizei(cdata->getSize(0)), cdata->getData(0)); } else if (data) { GLenum iformat = (format == FORMAT_SRGB) ? GL_SRGB8_ALPHA8 : GL_RGBA8; glTexImage2D(GL_TEXTURE_2D, 0, iformat, (GLsizei)width, (GLsizei)height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data->getData()); } } void Image::unloadVolatile() { // Delete the hardware texture. if (texture != 0) { gl.deleteTexture(texture); texture = 0; } } bool Image::refresh() { // No effect if the texture hasn't been created yet. if (texture == 0) return false; if (usingDefaultTexture) { uploadDefaultTexture(); return true; } // We want this lock to potentially cover mipmap creation as well. love::thread::EmptyLock lock; bind(); if (data && !isCompressed()) lock.setLock(data->getMutex()); while (glGetError() != GL_NO_ERROR); // Clear errors. if (hasNpot() || (width == paddedWidth && height == paddedHeight)) uploadTexture(); else uploadTexturePadded(); if (glGetError() != GL_NO_ERROR) uploadDefaultTexture(); else usingDefaultTexture = false; mipmapsCreated = false; checkMipmapsCreated(); return true; } Texture::Format Image::getFormat() const { return format; } void Image::uploadDefaultTexture() { usingDefaultTexture = true; bind(); setFilter(filter); // A nice friendly checkerboard to signify invalid textures... GLubyte px[] = {0xFF,0xFF,0xFF,0xFF, 0xC0,0xC0,0xC0,0xFF, 0xC0,0xC0,0xC0,0xFF, 0xFF,0xFF,0xFF,0xFF}; glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, px); } void Image::drawv(const Matrix &t, const Vertex *v) { predraw(); glPushMatrix(); glMultMatrixf((const GLfloat *)t.getElements()); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer(2, GL_FLOAT, sizeof(Vertex), (GLvoid *)&v[0].x); glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), (GLvoid *)&v[0].s); gl.prepareDraw(); glDrawArrays(GL_QUADS, 0, 4); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); glPopMatrix(); postdraw(); } void Image::setDefaultMipmapSharpness(float sharpness) { defaultMipmapSharpness = sharpness; } float Image::getDefaultMipmapSharpness() { return defaultMipmapSharpness; } void Image::setDefaultMipmapFilter(Texture::FilterMode f) { defaultMipmapFilter = f; } Texture::FilterMode Image::getDefaultMipmapFilter() { return defaultMipmapFilter; } bool Image::isCompressed() const { return compressed; } GLenum Image::getCompressedFormat(image::CompressedData::Format cformat) const { bool srgb = format == FORMAT_SRGB; switch (cformat) { case image::CompressedData::FORMAT_DXT1: if (srgb) return GL_COMPRESSED_SRGB_S3TC_DXT1_EXT; else return GL_COMPRESSED_RGB_S3TC_DXT1_EXT; case image::CompressedData::FORMAT_DXT3: if (srgb) return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT; else return GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; case image::CompressedData::FORMAT_DXT5: if (srgb) return GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; else return GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; case image::CompressedData::FORMAT_BC4: return GL_COMPRESSED_RED_RGTC1; case image::CompressedData::FORMAT_BC4s: return GL_COMPRESSED_SIGNED_RED_RGTC1; case image::CompressedData::FORMAT_BC5: return GL_COMPRESSED_RG_RGTC2; case image::CompressedData::FORMAT_BC5s: return GL_COMPRESSED_SIGNED_RG_RGTC2; default: if (srgb) return GL_SRGB8_ALPHA8; else return GL_RGBA8; } } bool Image::hasNpot() { return GLEE_VERSION_2_0 || GLEE_ARB_texture_non_power_of_two; } bool Image::hasAnisotropicFilteringSupport() { return GLEE_EXT_texture_filter_anisotropic; } bool Image::hasMipmapSupport() { return GLEE_VERSION_1_4 || GLEE_SGIS_generate_mipmap; } bool Image::hasMipmapSharpnessSupport() { return GLEE_VERSION_1_4; } bool Image::hasCompressedTextureSupport() { return GLEE_VERSION_1_3 || GLEE_ARB_texture_compression; } bool Image::hasCompressedTextureSupport(image::CompressedData::Format format) { if (!hasCompressedTextureSupport()) return false; switch (format) { case image::CompressedData::FORMAT_DXT1: case image::CompressedData::FORMAT_DXT3: case image::CompressedData::FORMAT_DXT5: return GLEE_EXT_texture_compression_s3tc; case image::CompressedData::FORMAT_BC4: case image::CompressedData::FORMAT_BC4s: case image::CompressedData::FORMAT_BC5: case image::CompressedData::FORMAT_BC5s: return (GLEE_VERSION_3_0 || GLEE_ARB_texture_compression_rgtc || GLEE_EXT_texture_compression_rgtc); default: break; } return false; } bool Image::hasSRGBSupport() { return GLEE_VERSION_2_1 || GLEE_EXT_texture_sRGB; } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/Graphics.cpp0000644000000000000000000006754212316602166022274 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "common/config.h" #include "common/math.h" #include "common/Vector.h" #include "Graphics.h" #include "window/sdl/Window.h" #include "Polyline.h" // C++ #include #include #include #include // C #include namespace love { namespace graphics { namespace opengl { Graphics::Graphics() : currentFont(0) , lineStyle(LINE_SMOOTH) , lineWidth(1) , matrixLimit(0) , userMatrices(0) , colorMask() , width(0) , height(0) , created(false) , activeStencil(false) , savedState() { currentWindow = love::window::sdl::Window::createSingleton(); int w, h; love::window::WindowSettings wsettings; currentWindow->getWindow(w, h, wsettings); if (currentWindow->isCreated()) setMode(w, h, wsettings.sRGB); } Graphics::~Graphics() { if (currentFont != 0) currentFont->release(); currentWindow->release(); } const char *Graphics::getName() const { return "love.graphics.opengl"; } DisplayState Graphics::saveState() { DisplayState s; s.color = getColor(); s.backgroundColor = getBackgroundColor(); s.blendMode = getBlendMode(); //get line style s.lineStyle = lineStyle; //get the point size glGetFloatv(GL_POINT_SIZE, &s.pointSize); //get point style s.pointStyle = (glIsEnabled(GL_POINT_SMOOTH) == GL_TRUE) ? Graphics::POINT_SMOOTH : Graphics::POINT_ROUGH; //get scissor status s.scissor = (glIsEnabled(GL_SCISSOR_TEST) == GL_TRUE); //do we have scissor, if so, store the box if (s.scissor) s.scissorBox = gl.getScissor(); for (int i = 0; i < 4; i++) s.colorMask[i] = colorMask[i]; wireframe = isWireframe(); return s; } void Graphics::restoreState(const DisplayState &s) { setColor(s.color); setBackgroundColor(s.backgroundColor); setBlendMode(s.blendMode); setLineWidth(lineWidth); setLineStyle(s.lineStyle); setPointSize(s.pointSize); setPointStyle(s.pointStyle); if (s.scissor) setScissor(s.scissorBox.x, s.scissorBox.y, s.scissorBox.w, s.scissorBox.h); else setScissor(); setColorMask(s.colorMask[0], s.colorMask[1], s.colorMask[2], s.colorMask[3]); setWireframe(s.wireframe); } void Graphics::setViewportSize(int width, int height) { this->width = width; this->height = height; if (!isCreated()) return; // We want to affect the main screen, not any Canvas that's currently active // (not that any *should* be active when this is called.) Canvas *c = Canvas::current; Canvas::bindDefaultCanvas(); // Set the viewport to top-left corner. gl.setViewport(OpenGL::Viewport(0, 0, width, height)); // If a canvas was bound before this function was called, it needs to be // made aware of the new system viewport size. Canvas::systemViewport = gl.getViewport(); // Reset the projection matrix glMatrixMode(GL_PROJECTION); glLoadIdentity(); // Set up orthographic view (no depth) glOrtho(0.0, width, height, 0.0, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); // Restore the previously active Canvas. if (c != nullptr) c->startGrab(c->getAttachedCanvases()); } bool Graphics::setMode(int width, int height, bool &sRGB) { this->width = width; this->height = height; // Okay, setup OpenGL. gl.initContext(); created = true; setViewportSize(width, height); // Make sure antialiasing works when set elsewhere if (GLEE_VERSION_1_3 || GLEE_ARB_multisample) glEnable(GL_MULTISAMPLE); // Enable blending glEnable(GL_BLEND); // Enable all color component writes. setColorMask(true, true, true, true); // Enable line/point smoothing. setLineStyle(LINE_SMOOTH); glEnable(GL_POINT_SMOOTH); glHint(GL_POINT_SMOOTH_HINT, GL_NICEST); // Auto-generated mipmaps should be the best quality possible if (GLEE_VERSION_1_4 || GLEE_SGIS_generate_mipmap) glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST); // Enable textures glEnable(GL_TEXTURE_2D); gl.setTextureUnit(0); // Reset modelview matrix glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // Set pixel row alignment glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // Reload all volatile objects. if (!Volatile::loadAll()) std::cerr << "Could not reload all volatile objects." << std::endl; // Restore the display state. restoreState(savedState); pixel_size_stack.clear(); pixel_size_stack.reserve(5); pixel_size_stack.push_back(1); // Get the maximum number of matrices // subtract a few to give the engine some room. glGetIntegerv(GL_MAX_MODELVIEW_STACK_DEPTH, &matrixLimit); matrixLimit -= 5; // Set whether drawing converts input from linear -> sRGB colorspace. if (GLEE_VERSION_3_0 || GLEE_ARB_framebuffer_sRGB || GLEE_EXT_framebuffer_sRGB) { if (sRGB) glEnable(GL_FRAMEBUFFER_SRGB); else glDisable(GL_FRAMEBUFFER_SRGB); } else sRGB = false; Canvas::screenHasSRGB = sRGB; bool enabledebug = false; if (GLEE_VERSION_3_0) { // Enable OpenGL's debug output if a debug context has been created. GLint flags = 0; glGetIntegerv(GL_CONTEXT_FLAGS, &flags); enabledebug = (flags & GL_CONTEXT_FLAG_DEBUG_BIT) != 0; } setDebug(enabledebug); return true; } void Graphics::unSetMode() { if (!isCreated()) return; // Window re-creation may destroy the GL context, so we must save the state. savedState = saveState(); // Unload all volatile objects. These must be reloaded after the display // mode change. Volatile::unloadAll(); gl.deInitContext(); created = false; } static void APIENTRY debugCB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei /*len*/, const GLchar *msg, GLvoid* /*usr*/) { // Human-readable strings for the debug info. const char *sourceStr = OpenGL::debugSourceString(source); const char *typeStr = OpenGL::debugTypeString(type); const char *severityStr = OpenGL::debugSeverityString(severity); const char *fmt = "OpenGL: %s [source=%s, type=%s, severity=%s, id=%d]\n"; printf(fmt, msg, sourceStr, typeStr, severityStr, id); } void Graphics::setDebug(bool enable) { // Make sure debug output is supported. The AMD ext. is a bit different // so we don't make use of it, since AMD drivers now support KHR_debug. if (!(GLEE_VERSION_4_3 || GLEE_KHR_debug || GLEE_ARB_debug_output)) return; // Ugly hack to reduce code duplication. if (GLEE_ARB_debug_output && !(GLEE_VERSION_4_3 || GLEE_KHR_debug)) { glDebugMessageCallback = (GLEEPFNGLDEBUGMESSAGECALLBACKPROC) glDebugMessageCallbackARB; glDebugMessageControl = (GLEEPFNGLDEBUGMESSAGECONTROLPROC) glDebugMessageControlARB; } if (!enable) { // Disable the debug callback function. glDebugMessageCallback(nullptr, nullptr); // We can disable debug output entirely with KHR_debug. if (GLEE_VERSION_4_3 || GLEE_KHR_debug) glDisable(GL_DEBUG_OUTPUT); return; } // We don't want asynchronous debug output. glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); glDebugMessageCallback(debugCB, nullptr); // Initially, enable everything. glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, 0, GL_TRUE); // Disable messages about deprecated OpenGL functionality. glDebugMessageControl(GL_DEBUG_SOURCE_API, GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR, GL_DONT_CARE, 0, 0, GL_FALSE); glDebugMessageControl(GL_DEBUG_SOURCE_SHADER_COMPILER, GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR, GL_DONT_CARE, 0, 0, GL_FALSE); if (GLEE_VERSION_4_3 || GLEE_KHR_debug) glEnable(GL_DEBUG_OUTPUT); ::printf("OpenGL debug output enabled (LOVE_GRAPHICS_DEBUG=1)\n"); } void Graphics::reset() { DisplayState s; discardStencil(); Canvas::bindDefaultCanvas(); Shader::detach(); origin(); restoreState(s); } void Graphics::clear() { glClear(GL_COLOR_BUFFER_BIT); } void Graphics::present() { currentWindow->swapBuffers(); } int Graphics::getWidth() const { return width; } int Graphics::getHeight() const { return height; } bool Graphics::isCreated() const { return created; } void Graphics::setScissor(int x, int y, int width, int height) { glEnable(GL_SCISSOR_TEST); // OpenGL's reversed y-coordinate is compensated for in OpenGL::setScissor. gl.setScissor(OpenGL::Viewport(x, y, width, height)); } void Graphics::setScissor() { glDisable(GL_SCISSOR_TEST); } bool Graphics::getScissor(int &x, int &y, int &width, int &height) const { OpenGL::Viewport scissor = gl.getScissor(); x = scissor.x; y = scissor.y; width = scissor.w; height = scissor.h; return glIsEnabled(GL_SCISSOR_TEST) == GL_TRUE; } void Graphics::defineStencil() { // Make sure the active canvas has a stencil buffer. if (Canvas::current) Canvas::current->checkCreateStencil(); // Disable color writes but don't save the mask values. glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); glClear(GL_STENCIL_BUFFER_BIT); glEnable(GL_STENCIL_TEST); glStencilFunc(GL_ALWAYS, 1, 1); glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); activeStencil = true; } void Graphics::useStencil(bool invert) { glStencilFunc(GL_EQUAL, (GLint)(!invert), 1); // invert ? 0 : 1 glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP); setColorMask(colorMask[0], colorMask[1], colorMask[2], colorMask[3]); } void Graphics::discardStencil() { if (!activeStencil) return; setColorMask(colorMask[0], colorMask[1], colorMask[2], colorMask[3]); glDisable(GL_STENCIL_TEST); activeStencil = false; } Image *Graphics::newImage(love::image::ImageData *data, Texture::Format format) { // Create the image. Image *image = new Image(data, format); if (!isCreated()) return image; bool success = false; try { success = image->load(); } catch(love::Exception &) { image->release(); throw; } if (!success) { image->release(); return 0; } return image; } Image *Graphics::newImage(love::image::CompressedData *cdata, Texture::Format format) { // Create the image. Image *image = new Image(cdata, format); if (!isCreated()) return image; bool success = false; try { success = image->load(); } catch(love::Exception &) { image->release(); throw; } if (!success) { image->release(); return 0; } return image; } Quad *Graphics::newQuad(Quad::Viewport v, float sw, float sh) { return new Quad(v, sw, sh); } Font *Graphics::newFont(love::font::Rasterizer *r, const Texture::Filter &filter) { return new Font(r, filter); } SpriteBatch *Graphics::newSpriteBatch(Texture *texture, int size, int usage) { return new SpriteBatch(texture, size, usage); } ParticleSystem *Graphics::newParticleSystem(Texture *texture, int size) { return new ParticleSystem(texture, size); } Canvas *Graphics::newCanvas(int width, int height, Texture::Format format, int fsaa) { if (format == Texture::FORMAT_HDR && !Canvas::isHDRSupported()) throw Exception("HDR Canvases are not supported by your OpenGL implementation"); if (format == Texture::FORMAT_SRGB && !Canvas::isSRGBSupported()) throw Exception("sRGB Canvases are not supported by your OpenGL implementation"); if (width > gl.getMaxTextureSize()) throw Exception("Cannot create canvas: width of %d pixels is too large for this system.", width); else if (height > gl.getMaxTextureSize()) throw Exception("Cannot create canvas: height of %d pixels is too large for this system.", height); while (GL_NO_ERROR != glGetError()) /* clear opengl error flag */; Canvas *canvas = new Canvas(width, height, format, fsaa); GLenum err = canvas->getStatus(); // everything ok, return canvas (early out) if (err == GL_FRAMEBUFFER_COMPLETE) return canvas; // create error message std::stringstream error_string; error_string << "Cannot create canvas: "; switch (err) { case GL_FRAMEBUFFER_UNSUPPORTED: error_string << "Not supported by your OpenGL implementation."; break; // remaining error codes are highly unlikely: case GL_FRAMEBUFFER_UNDEFINED: case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: error_string << "Error in implementation. Possible fix: Make canvas width and height powers of two."; break; default: // my intel hda card wrongly returns 0 to glCheckFramebufferStatus() but sets // no error flag. I think it meant to return GL_FRAMEBUFFER_UNSUPPORTED, but who // knows. if (glGetError() == GL_NO_ERROR) error_string << "May not be supported by your OpenGL implementation."; // the remaining error is an indication of a serious fuckup since it should // only be returned if glCheckFramebufferStatus() was called with the wrong // arguments. else error_string << "Cannot create canvas: Aliens did it (OpenGL error code: " << glGetError() << ")"; } canvas->release(); throw Exception(error_string.str().c_str()); return NULL; // never reached } Shader *Graphics::newShader(const Shader::ShaderSources &sources) { return new Shader(sources); } Mesh *Graphics::newMesh(const std::vector &vertices, Mesh::DrawMode mode) { return new Mesh(vertices, mode); } Mesh *Graphics::newMesh(int vertexcount, Mesh::DrawMode mode) { return new Mesh(vertexcount, mode); } void Graphics::setColor(const Color &c) { gl.setColor(c); } Color Graphics::getColor() const { return gl.getColor(); } void Graphics::setBackgroundColor(const Color &c) { gl.setClearColor(c); } Color Graphics::getBackgroundColor() const { return gl.getClearColor(); } void Graphics::setFont(Font *font) { Object::AutoRelease fontrelease(currentFont); currentFont = font; if (font != 0) currentFont->retain(); } Font *Graphics::getFont() const { return currentFont; } void Graphics::setColorMask(bool r, bool g, bool b, bool a) { colorMask[0] = r; colorMask[1] = g; colorMask[2] = b; colorMask[3] = a; glColorMask((GLboolean) r, (GLboolean) g, (GLboolean) b, (GLboolean) a); } const bool *Graphics::getColorMask() const { return colorMask; } void Graphics::setBlendMode(Graphics::BlendMode mode) { OpenGL::BlendState state = {GL_ONE, GL_ONE, GL_ZERO, GL_ZERO, GL_FUNC_ADD}; switch (mode) { case BLEND_ALPHA: if (GLEE_VERSION_1_4 || GLEE_EXT_blend_func_separate) { state.srcRGB = GL_SRC_ALPHA; state.srcA = GL_ONE; state.dstRGB = state.dstA = GL_ONE_MINUS_SRC_ALPHA; } else { // Fallback for OpenGL implementations without support for separate blend functions. // This will most likely only be used for the Microsoft software renderer and // since it's still stuck with OpenGL 1.1, the only expected difference is a // different alpha value when reading back the default framebuffer (newScreenshot). state.srcRGB = state.srcA = GL_SRC_ALPHA; state.dstRGB = state.dstA = GL_ONE_MINUS_SRC_ALPHA; } break; case BLEND_MULTIPLICATIVE: state.srcRGB = state.srcA = GL_DST_COLOR; state.dstRGB = state.dstA = GL_ZERO; break; case BLEND_PREMULTIPLIED: state.srcRGB = state.srcA = GL_ONE; state.dstRGB = state.dstA = GL_ONE_MINUS_SRC_ALPHA; break; case BLEND_SUBTRACTIVE: state.func = GL_FUNC_REVERSE_SUBTRACT; case BLEND_ADDITIVE: state.srcRGB = state.srcA = GL_SRC_ALPHA; state.dstRGB = state.dstA = GL_ONE; break; case BLEND_SCREEN: state.srcRGB = state.srcA = GL_ONE; state.dstRGB = state.dstA = GL_ONE_MINUS_SRC_COLOR; break; case BLEND_REPLACE: default: state.srcRGB = state.srcA = GL_ONE; state.dstRGB = state.dstA = GL_ZERO; break; } gl.setBlendState(state); } Graphics::BlendMode Graphics::getBlendMode() const { OpenGL::BlendState state = gl.getBlendState(); if (state.func == GL_FUNC_REVERSE_SUBTRACT) // && src == GL_SRC_ALPHA && dst == GL_ONE return BLEND_SUBTRACTIVE; // Everything else has equation == GL_FUNC_ADD. else if (state.srcRGB == state.srcA && state.dstRGB == state.dstA) { if (state.srcRGB == GL_SRC_ALPHA && state.dstRGB == GL_ONE) return BLEND_ADDITIVE; else if (state.srcRGB == GL_SRC_ALPHA && state.dstRGB == GL_ONE_MINUS_SRC_ALPHA) return BLEND_ALPHA; // alpha blend mode fallback for very old OpenGL versions. else if (state.srcRGB == GL_DST_COLOR && state.dstRGB == GL_ZERO) return BLEND_MULTIPLICATIVE; else if (state.srcRGB == GL_ONE && state.dstRGB == GL_ONE_MINUS_SRC_ALPHA) return BLEND_PREMULTIPLIED; else if (state.srcRGB == GL_ONE && state.dstRGB == GL_ONE_MINUS_SRC_COLOR) return BLEND_SCREEN; else if (state.srcRGB == GL_ONE && state.dstRGB == GL_ZERO) return BLEND_REPLACE; } else if (state.srcRGB == GL_SRC_ALPHA && state.srcA == GL_ONE && state.dstRGB == GL_ONE_MINUS_SRC_ALPHA && state.dstA == GL_ONE_MINUS_SRC_ALPHA) return BLEND_ALPHA; throw Exception("Unknown blend mode"); } void Graphics::setDefaultFilter(const Texture::Filter &f) { Texture::setDefaultFilter(f); } const Texture::Filter &Graphics::getDefaultFilter() const { return Texture::getDefaultFilter(); } void Graphics::setDefaultMipmapFilter(Texture::FilterMode filter, float sharpness) { Image::setDefaultMipmapFilter(filter); Image::setDefaultMipmapSharpness(sharpness); } void Graphics::getDefaultMipmapFilter(Texture::FilterMode *filter, float *sharpness) const { *filter = Image::getDefaultMipmapFilter(); *sharpness = Image::getDefaultMipmapSharpness(); } void Graphics::setLineWidth(float width) { lineWidth = width; } void Graphics::setLineStyle(Graphics::LineStyle style) { lineStyle = style; } void Graphics::setLineJoin(Graphics::LineJoin join) { lineJoin = join; } float Graphics::getLineWidth() const { return lineWidth; } Graphics::LineStyle Graphics::getLineStyle() const { return lineStyle; } Graphics::LineJoin Graphics::getLineJoin() const { return lineJoin; } void Graphics::setPointSize(float size) { glPointSize((GLfloat)size); } void Graphics::setPointStyle(Graphics::PointStyle style) { if (style == POINT_SMOOTH) glEnable(GL_POINT_SMOOTH); else // love::POINT_ROUGH glDisable(GL_POINT_SMOOTH); } float Graphics::getPointSize() const { GLfloat size; glGetFloatv(GL_POINT_SIZE, &size); return (float)size; } Graphics::PointStyle Graphics::getPointStyle() const { if (glIsEnabled(GL_POINT_SMOOTH) == GL_TRUE) return POINT_SMOOTH; else return POINT_ROUGH; } void Graphics::setWireframe(bool enable) { wireframe = enable; glPolygonMode(GL_FRONT_AND_BACK, enable ? GL_LINE : GL_FILL); } bool Graphics::isWireframe() const { return wireframe; } void Graphics::print(const std::string &str, float x, float y , float angle, float sx, float sy, float ox, float oy, float kx, float ky) { if (currentFont != nullptr) currentFont->print(str, x, y, 0.0, angle, sx, sy, ox, oy, kx, ky); } void Graphics::printf(const std::string &str, float x, float y, float wrap, AlignMode align, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { if (currentFont == nullptr) return; if (wrap < 0.0f) throw love::Exception("Horizontal wrap limit cannot be negative."); using std::string; using std::vector; // wrappedlines indicates which lines were automatically wrapped. It's // guaranteed to have the same number of elements as lines_to_draw. vector wrappedlines; vector lines_to_draw = currentFont->getWrap(str, wrap, 0, &wrappedlines); glPushMatrix(); static Matrix t; t.setTransformation(ceilf(x), ceilf(y), angle, sx, sy, ox, oy, kx, ky); glMultMatrixf((const GLfloat *)t.getElements()); x = y = 0.0f; try { // now for the actual printing vector::const_iterator line_iter, line_end = lines_to_draw.end(); float extra_spacing = 0.0f; int num_spaces = 0; int i = 0; for (line_iter = lines_to_draw.begin(); line_iter != line_end; ++line_iter) { float width = static_cast(currentFont->getWidth(*line_iter)); switch (align) { case ALIGN_RIGHT: currentFont->print(*line_iter, ceilf(x + (wrap - width)), ceilf(y), 0.0f); break; case ALIGN_CENTER: currentFont->print(*line_iter, ceilf(x + (wrap - width) / 2), ceilf(y), 0.0f); break; case ALIGN_JUSTIFY: num_spaces = std::count(line_iter->begin(), line_iter->end(), ' '); if (wrappedlines[i] && num_spaces >= 1) extra_spacing = (wrap - width) / float(num_spaces); else extra_spacing = 0.0f; currentFont->print(*line_iter, ceilf(x), ceilf(y), extra_spacing); break; case ALIGN_LEFT: default: currentFont->print(*line_iter, ceilf(x), ceilf(y), 0.0f); break; } y += currentFont->getHeight() * currentFont->getLineHeight(); i++; } } catch (love::Exception &) { glPopMatrix(); throw; } glPopMatrix(); } /** * Primitives **/ void Graphics::point(float x, float y) { gl.prepareDraw(); gl.bindTexture(0); glBegin(GL_POINTS); glVertex2f(x, y); glEnd(); } void Graphics::polyline(const float *coords, size_t count) { if (lineJoin == LINE_JOIN_NONE) { NoneJoinPolyline line; line.render(coords, count, lineWidth * .5f, float(pixel_size_stack.back()), lineStyle == LINE_SMOOTH); line.draw(); } else if (lineJoin == LINE_JOIN_BEVEL) { BevelJoinPolyline line; line.render(coords, count, lineWidth * .5f, float(pixel_size_stack.back()), lineStyle == LINE_SMOOTH); line.draw(); } else // LINE_JOIN_MITER { MiterJoinPolyline line; line.render(coords, count, lineWidth * .5f, float(pixel_size_stack.back()), lineStyle == LINE_SMOOTH); line.draw(); } } void Graphics::rectangle(DrawMode mode, float x, float y, float w, float h) { float coords[] = {x,y, x,y+h, x+w,y+h, x+w,y, x,y}; polygon(mode, coords, 5 * 2); } void Graphics::circle(DrawMode mode, float x, float y, float radius, int points) { float two_pi = static_cast(LOVE_M_PI * 2); if (points <= 0) points = 1; float angle_shift = (two_pi / points); float phi = .0f; float *coords = new float[2 * (points + 1)]; for (int i = 0; i < points; ++i, phi += angle_shift) { coords[2*i] = x + radius * cosf(phi); coords[2*i+1] = y + radius * sinf(phi); } coords[2*points] = coords[0]; coords[2*points+1] = coords[1]; polygon(mode, coords, (points + 1) * 2); delete[] coords; } void Graphics::arc(DrawMode mode, float x, float y, float radius, float angle1, float angle2, int points) { // Nothing to display with no points or equal angles. (Or is there with line mode?) if (points <= 0 || angle1 == angle2) return; // Oh, you want to draw a circle? if (fabs(angle1 - angle2) >= 2.0f * (float) LOVE_M_PI) { circle(mode, x, y, radius, points); return; } float angle_shift = (angle2 - angle1) / points; // Bail on precision issues. if (angle_shift == 0.0) return; float phi = angle1; int num_coords = (points + 3) * 2; float *coords = new float[num_coords]; coords[0] = coords[num_coords - 2] = x; coords[1] = coords[num_coords - 1] = y; for (int i = 0; i <= points; ++i, phi += angle_shift) { coords[2 * (i+1)] = x + radius * cosf(phi); coords[2 * (i+1) + 1] = y + radius * sinf(phi); } // GL_POLYGON can only fill-draw convex polygons, so we need to do stuff manually here if (mode == DRAW_LINE) { polyline(coords, num_coords); // Artifacts at sharp angles if set to looping. } else { gl.prepareDraw(); gl.bindTexture(0); glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(2, GL_FLOAT, 0, (const GLvoid *) coords); glDrawArrays(GL_TRIANGLE_FAN, 0, points + 2); glDisableClientState(GL_VERTEX_ARRAY); } delete[] coords; } /// @param mode the draw mode /// @param coords the coordinate array /// @param count the number of coordinates/size of the array void Graphics::polygon(DrawMode mode, const float *coords, size_t count) { // coords is an array of a closed loop of vertices, i.e. // coords[count-2] = coords[0], coords[count-1] = coords[1] if (mode == DRAW_LINE) { polyline(coords, count); } else { gl.prepareDraw(); gl.bindTexture(0); glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(2, GL_FLOAT, 0, (const GLvoid *)coords); glDrawArrays(GL_POLYGON, 0, count/2-1); // opengl will close the polygon for us glDisableClientState(GL_VERTEX_ARRAY); } } love::image::ImageData *Graphics::newScreenshot(love::image::Image *image, bool copyAlpha) { // Temporarily unbind the currently active canvas (glReadPixels reads the // active framebuffer, not the main one.) Canvas *curcanvas = Canvas::current; if (curcanvas) Canvas::bindDefaultCanvas(); int w = getWidth(); int h = getHeight(); int row = 4*w; int size = row*h; GLubyte *pixels = 0; GLubyte *screenshot = 0; try { pixels = new GLubyte[size]; screenshot = new GLubyte[size]; } catch (std::exception &) { delete[] pixels; delete[] screenshot; if (curcanvas) curcanvas->startGrab(curcanvas->getAttachedCanvases()); throw love::Exception("Out of memory."); } glReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels); if (!copyAlpha) { // Replace alpha values with full opacity. for (int i = 3; i < size; i += 4) pixels[i] = 255; } // OpenGL sucks and reads pixels from the lower-left. Let's fix that. GLubyte *src = pixels - row, *dst = screenshot + size; for (int i = 0; i < h; ++i) memcpy(dst-=row, src+=row, row); delete[] pixels; love::image::ImageData *img = 0; try { // Tell the new ImageData that it owns the screenshot data, so we don't // need to delete it here. img = image->newImageData(w, h, (void *) screenshot, true); } catch (love::Exception &) { delete[] screenshot; if (curcanvas) curcanvas->startGrab(curcanvas->getAttachedCanvases()); throw; } // Re-bind the active canvas, if necessary. if (curcanvas) curcanvas->startGrab(curcanvas->getAttachedCanvases()); return img; } std::string Graphics::getRendererInfo(Graphics::RendererInfo infotype) const { const char *infostr = 0; switch (infotype) { case Graphics::RENDERER_INFO_NAME: default: infostr = "OpenGL"; break; case Graphics::RENDERER_INFO_VERSION: infostr = (const char *) glGetString(GL_VERSION); break; case Graphics::RENDERER_INFO_VENDOR: infostr = (const char *) glGetString(GL_VENDOR); break; case Graphics::RENDERER_INFO_DEVICE: infostr = (const char *) glGetString(GL_RENDERER); break; } if (!infostr) throw love::Exception("Cannot retrieve renderer information."); return std::string(infostr); } double Graphics::getSystemLimit(SystemLimit limittype) const { double limit = 0.0; switch (limittype) { case Graphics::LIMIT_POINT_SIZE: { GLfloat limits[2]; glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, limits); limit = limits[1]; } break; case Graphics::LIMIT_TEXTURE_SIZE: limit = (double) gl.getMaxTextureSize(); break; case Graphics::LIMIT_MULTI_CANVAS: limit = (double) gl.getMaxRenderTargets(); break; case Graphics::LIMIT_CANVAS_FSAA: if (GLEE_VERSION_3_0 || GLEE_ARB_framebuffer_object || GLEE_EXT_framebuffer_multisample) { GLint intlimit = 0; glGetIntegerv(GL_MAX_SAMPLES, &intlimit); limit = (double) intlimit; } break; default: break; } return limit; } void Graphics::push() { if (userMatrices == matrixLimit) throw Exception("Maximum stack depth reached. (More pushes than pops?)"); glPushMatrix(); ++userMatrices; pixel_size_stack.push_back(pixel_size_stack.back()); } void Graphics::pop() { if (userMatrices < 1) throw Exception("Minimum stack depth reached. (More pops than pushes?)"); glPopMatrix(); --userMatrices; pixel_size_stack.pop_back(); } void Graphics::rotate(float r) { glRotatef(LOVE_TODEG(r), 0, 0, 1); } void Graphics::scale(float x, float y) { glScalef(x, y, 1); pixel_size_stack.back() *= 2. / (fabs(x) + fabs(y)); } void Graphics::translate(float x, float y) { glTranslatef(x, y, 0); } void Graphics::shear(float kx, float ky) { Matrix t; t.setShear(kx, ky); glMultMatrixf((const GLfloat *)t.getElements()); } void Graphics::origin() { glLoadIdentity(); pixel_size_stack.back() = 1; } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/Canvas.cpp0000644000000000000000000006230412316602166021736 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "Canvas.h" #include "Image.h" #include "Graphics.h" #include "common/Matrix.h" #include "common/config.h" #include // For memcpy #include namespace love { namespace graphics { namespace opengl { // strategy for fbo creation, interchangable at runtime: // none, opengl >= 3.0, extensions struct FramebufferStrategy { virtual ~FramebufferStrategy() {} /// create a new framebuffer and texture /** * @param[out] framebuffer Framebuffer name * @param[in] texture Texture name * @return Creation status */ virtual GLenum createFBO(GLuint &, GLuint) { return GL_FRAMEBUFFER_UNSUPPORTED; } /// Create a stencil buffer and attach it to the active framebuffer object /** * @param[in] width Width of the stencil buffer * @param[in] height Height of the stencil buffer * @param[in] samples Number of samples to use * @param[out] stencil Name for stencil buffer * @return Whether the stencil buffer was successfully created **/ virtual bool createStencil(int, int, int, GLuint &) { return false; } /// Create a MSAA renderbuffer and attach it to the active FBO. /** * @param[in] width Width of the MSAA buffer * @param[in] height Height of the MSAA buffer * @param[inout] samples Number of samples to use * @param[in] internalformat The internal format to use for the buffer * @param[out] buffer Name for the MSAA buffer * @return Whether the MSAA buffer was successfully created and attached **/ virtual bool createMSAABuffer(int, int, int &, GLenum, GLuint &) { return false; } /// remove objects /** * @param[in] framebuffer Framebuffer name * @param[in] depth_stencil Name for packed depth and stencil buffer */ virtual void deleteFBO(GLuint, GLuint, GLuint) {} virtual void bindFBO(GLuint) {} /// attach additional canvases to the active framebuffer for rendering /** * @param[in] canvases List of canvases to attach **/ virtual void setAttachments(const std::vector &) {} /// stop using all additional attached canvases virtual void setAttachments() {} }; struct FramebufferStrategyGL3 : public FramebufferStrategy { virtual GLenum createFBO(GLuint &framebuffer, GLuint texture) { // get currently bound fbo to reset to it later GLint current_fbo; glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, ¤t_fbo); // create framebuffer glGenFramebuffers(1, &framebuffer); glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); if (texture != 0) { glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0); } // check status GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); // unbind framebuffer glBindFramebuffer(GL_FRAMEBUFFER, (GLuint) current_fbo); return status; } virtual bool createStencil(int width, int height, int samples, GLuint &stencil) { // create combined depth/stencil buffer glDeleteRenderbuffers(1, &stencil); glGenRenderbuffers(1, &stencil); glBindRenderbuffer(GL_RENDERBUFFER, stencil); if (samples > 1) glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GL_DEPTH_STENCIL, width, height); else glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_STENCIL, width, height); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, stencil); glBindRenderbuffer(GL_RENDERBUFFER, 0); // check status if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { glDeleteRenderbuffers(1, &stencil); stencil = 0; return false; } return true; } virtual bool createMSAABuffer(int width, int height, int &samples, GLenum internalformat, GLuint &buffer) { glGenRenderbuffers(1, &buffer); glBindRenderbuffer(GL_RENDERBUFFER, buffer); glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, internalformat, width, height); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, buffer); glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_SAMPLES, &samples); glBindRenderbuffer(GL_RENDERBUFFER, 0); if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { glDeleteRenderbuffers(1, &buffer); buffer = 0; return false; } return true; } virtual void deleteFBO(GLuint framebuffer, GLuint depth_stencil, GLuint msaa_buffer) { if (depth_stencil != 0) glDeleteRenderbuffers(1, &depth_stencil); if (msaa_buffer != 0) glDeleteRenderbuffers(1, &msaa_buffer); if (framebuffer != 0) glDeleteFramebuffers(1, &framebuffer); } virtual void bindFBO(GLuint framebuffer) { glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); } virtual void setAttachments() { // set a single render target glDrawBuffer(GL_COLOR_ATTACHMENT0); } virtual void setAttachments(const std::vector &canvases) { if (canvases.size() == 0) { setAttachments(); return; } std::vector drawbuffers; drawbuffers.push_back(GL_COLOR_ATTACHMENT0); // Attach the canvas textures to the currently bound framebuffer. for (size_t i = 0; i < canvases.size(); i++) { glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1 + i, GL_TEXTURE_2D, canvases[i]->getGLTexture(), 0); drawbuffers.push_back(GL_COLOR_ATTACHMENT1 + i); } // set up multiple render targets if (GLEE_VERSION_2_0) glDrawBuffers(drawbuffers.size(), &drawbuffers[0]); else if (GLEE_ARB_draw_buffers) glDrawBuffersARB(drawbuffers.size(), &drawbuffers[0]); } }; struct FramebufferStrategyPackedEXT : public FramebufferStrategy { virtual GLenum createFBO(GLuint &framebuffer, GLuint texture) { GLint current_fbo; glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING_EXT, ¤t_fbo); // create framebuffer glGenFramebuffersEXT(1, &framebuffer); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framebuffer); glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texture, 0); // check status GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); // unbind framebuffer glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, (GLuint) current_fbo); return status; } virtual bool createStencil(int width, int height, int samples, GLuint &stencil) { // create combined depth/stencil buffer glDeleteRenderbuffersEXT(1, &stencil); glGenRenderbuffersEXT(1, &stencil); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, stencil); if (samples > 1) { glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples, GL_DEPTH_STENCIL, width, height); } else { glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_STENCIL_EXT, width, height); } glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, stencil); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0); // check status if (glCheckFramebufferStatusEXT(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { glDeleteRenderbuffersEXT(1, &stencil); stencil = 0; return false; } return true; } virtual bool createMSAABuffer(int width, int height, int &samples, GLenum internalformat, GLuint &buffer) { if (!GLEE_EXT_framebuffer_multisample) return false; glGenRenderbuffersEXT(1, &buffer); glBindRenderbufferEXT(GL_RENDERBUFFER, buffer); glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples, internalformat, width, height); glFramebufferRenderbufferEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, buffer); glGetRenderbufferParameterivEXT(GL_RENDERBUFFER, GL_RENDERBUFFER_SAMPLES, &samples); glBindRenderbufferEXT(GL_RENDERBUFFER, 0); if (glCheckFramebufferStatusEXT(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { glDeleteRenderbuffersEXT(1, &buffer); buffer = 0; return false; } return true; } virtual void deleteFBO(GLuint framebuffer, GLuint depth_stencil, GLuint msaa_buffer) { if (depth_stencil != 0) glDeleteRenderbuffersEXT(1, &depth_stencil); if (msaa_buffer != 0) glDeleteRenderbuffersEXT(1, &msaa_buffer); if (framebuffer != 0) glDeleteFramebuffersEXT(1, &framebuffer); } virtual void bindFBO(GLuint framebuffer) { glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framebuffer); } virtual void setAttachments() { // set a single render target glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT); } virtual void setAttachments(const std::vector &canvases) { if (canvases.size() == 0) { setAttachments(); return; } std::vector drawbuffers; drawbuffers.push_back(GL_COLOR_ATTACHMENT0_EXT); // Attach the canvas textures to the currently bound framebuffer. for (size_t i = 0; i < canvases.size(); i++) { glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1_EXT + i, GL_TEXTURE_2D, canvases[i]->getGLTexture(), 0); drawbuffers.push_back(GL_COLOR_ATTACHMENT1_EXT + i); } // set up multiple render targets if (GLEE_VERSION_2_0) glDrawBuffers(drawbuffers.size(), &drawbuffers[0]); else if (GLEE_ARB_draw_buffers) glDrawBuffersARB(drawbuffers.size(), &drawbuffers[0]); } }; struct FramebufferStrategyEXT : public FramebufferStrategyPackedEXT { virtual bool createStencil(int width, int height, int samples, GLuint &stencil) { // create stencil buffer glDeleteRenderbuffersEXT(1, &stencil); glGenRenderbuffersEXT(1, &stencil); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, stencil); if (samples > 1) { glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER, samples, GL_STENCIL_INDEX, width, height); } else { glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_STENCIL_INDEX, width, height); } glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, stencil); glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0); // check status if (glCheckFramebufferStatusEXT(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { glDeleteRenderbuffersEXT(1, &stencil); stencil = 0; return false; } return true; } bool isSupported() { GLuint fb = 0, stencil = 0; GLenum status = createFBO(fb, 0); deleteFBO(fb, stencil, 0); return status == GL_FRAMEBUFFER_COMPLETE; } }; FramebufferStrategy *strategy = nullptr; FramebufferStrategy strategyNone; FramebufferStrategyGL3 strategyGL3; FramebufferStrategyPackedEXT strategyPackedEXT; FramebufferStrategyEXT strategyEXT; Canvas *Canvas::current = nullptr; OpenGL::Viewport Canvas::systemViewport = OpenGL::Viewport(); bool Canvas::screenHasSRGB = false; static void getStrategy() { if (!strategy) { if (GLEE_VERSION_3_0 || GLEE_ARB_framebuffer_object) strategy = &strategyGL3; else if (GLEE_EXT_framebuffer_object && GLEE_EXT_packed_depth_stencil) strategy = &strategyPackedEXT; else if (GLEE_EXT_framebuffer_object && strategyEXT.isSupported()) strategy = &strategyEXT; else strategy = &strategyNone; } } Canvas::Canvas(int width, int height, Texture::Format format, int fsaa) : fbo(0) , resolve_fbo(0) , texture(0) , fsaa_buffer(0) , depth_stencil(0) , format(format) , fsaa_samples(fsaa) , fsaa_dirty(false) { this->width = width; this->height = height; float w = static_cast(width); float h = static_cast(height); // world coordinates vertices[0].x = 0; vertices[0].y = 0; vertices[1].x = 0; vertices[1].y = h; vertices[2].x = w; vertices[2].y = h; vertices[3].x = w; vertices[3].y = 0; // texture coordinates vertices[0].s = 0; vertices[0].t = 0; vertices[1].s = 0; vertices[1].t = 1; vertices[2].s = 1; vertices[2].t = 1; vertices[3].s = 1; vertices[3].t = 0; getStrategy(); loadVolatile(); } Canvas::~Canvas() { // reset framebuffer if still using this one if (current == this) stopGrab(); unloadVolatile(); } bool Canvas::createFSAAFBO(GLenum internalformat) { // Create our FBO without a texture. status = strategy->createFBO(fbo, 0); GLuint previous = 0; if (current != this) { if (current != nullptr) previous = current->fbo; strategy->bindFBO(fbo); } // Create and attach the MSAA buffer for our FBO. if (strategy->createMSAABuffer(width, height, fsaa_samples, internalformat, fsaa_buffer)) status = GL_FRAMEBUFFER_COMPLETE; else status = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; // Create the FBO used for the MSAA resolve, and attach the texture. if (status == GL_FRAMEBUFFER_COMPLETE) status = strategy->createFBO(resolve_fbo, texture); if (status != GL_FRAMEBUFFER_COMPLETE) { // Clean up. strategy->deleteFBO(fbo, 0, fsaa_buffer); strategy->deleteFBO(resolve_fbo, 0, 0); fbo = fsaa_buffer = resolve_fbo = 0; fsaa_samples = 0; } if (current != this) strategy->bindFBO(previous); return status == GL_FRAMEBUFFER_COMPLETE; } bool Canvas::loadVolatile() { fbo = depth_stencil = texture = 0; resolve_fbo = fsaa_buffer = 0; status = GL_FRAMEBUFFER_COMPLETE; // glTexImage2D is guaranteed to error in this case. if (width > gl.getMaxTextureSize() || height > gl.getMaxTextureSize()) { status = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; return false; } glGenTextures(1, &texture); gl.bindTexture(texture); setFilter(filter); setWrap(wrap); GLint internalformat; GLenum textype; switch (format) { case Texture::FORMAT_HDR: internalformat = GL_RGBA16F; textype = GL_FLOAT; break; case Texture::FORMAT_SRGB: internalformat = GL_SRGB8_ALPHA8; textype = GL_UNSIGNED_BYTE; break; case Texture::FORMAT_NORMAL: default: internalformat = GL_RGBA8; textype = GL_UNSIGNED_BYTE; } while (glGetError() != GL_NO_ERROR) /* Clear the error buffer. */; glTexImage2D(GL_TEXTURE_2D, 0, internalformat, width, height, 0, GL_RGBA, textype, nullptr); if (glGetError() != GL_NO_ERROR) { status = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT; return false; } int max_samples = 0; if (GLEE_VERSION_3_0 || GLEE_ARB_framebuffer_object || GLEE_EXT_framebuffer_multisample) { glGetIntegerv(GL_MAX_SAMPLES, &max_samples); } if (fsaa_samples > max_samples) fsaa_samples = max_samples; // Try to create a FSAA FBO if requested. bool fsaasuccess = false; if (fsaa_samples > 1) fsaasuccess = createFSAAFBO(internalformat); // On failure (or no requested FSAA), fall back to a regular FBO. if (!fsaasuccess) status = strategy->createFBO(fbo, texture); if (status != GL_FRAMEBUFFER_COMPLETE) return false; clear(Color(0, 0, 0, 0)); fsaa_dirty = (fsaa_buffer != 0); return true; } void Canvas::unloadVolatile() { strategy->deleteFBO(fbo, depth_stencil, fsaa_buffer); strategy->deleteFBO(resolve_fbo, 0, 0); gl.deleteTexture(texture); fbo = depth_stencil = texture = 0; resolve_fbo = fsaa_buffer = 0; for (size_t i = 0; i < attachedCanvases.size(); i++) attachedCanvases[i]->release(); attachedCanvases.clear(); } void Canvas::drawv(const Matrix &t, const Vertex *v) { glPushMatrix(); glMultMatrixf((const GLfloat *)t.getElements()); predraw(); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer(2, GL_FLOAT, sizeof(Vertex), (GLvoid *)&v[0].x); glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), (GLvoid *)&v[0].s); gl.prepareDraw(); glDrawArrays(GL_QUADS, 0, 4); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); postdraw(); glPopMatrix(); } void Canvas::draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { static Matrix t; t.setTransformation(x, y, angle, sx, sy, ox, oy, kx, ky); drawv(t, vertices); } void Canvas::drawq(Quad *quad, float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { static Matrix t; t.setTransformation(x, y, angle, sx, sy, ox, oy, kx, ky); const Vertex *v = quad->getVertices(); drawv(t, v); } void Canvas::setFilter(const Texture::Filter &f) { filter = f; gl.bindTexture(texture); gl.setTextureFilter(filter); } void Canvas::setWrap(const Texture::Wrap &w) { wrap = w; gl.bindTexture(texture); gl.setTextureWrap(wrap); } GLuint Canvas::getGLTexture() const { return texture; } void Canvas::predraw() { // We need to make sure the texture is up-to-date by resolving the MSAA // buffer (which we render to when the canvas is active) to it. resolveMSAA(); gl.bindTexture(texture); } void Canvas::setupGrab() { // already grabbing if (current == this) return; // cleanup after previous Canvas if (current != nullptr) { systemViewport = current->systemViewport; current->stopGrab(true); } else systemViewport = gl.getViewport(); // indicate we are using this Canvas. current = this; // bind the framebuffer object. strategy->bindFBO(fbo); gl.setViewport(OpenGL::Viewport(0, 0, width, height)); // Reset the projection matrix glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); // Set up orthographic view (no depth) glOrtho(0.0, width, 0.0, height, -1.0, 1.0); // Switch back to modelview matrix glMatrixMode(GL_MODELVIEW); // Make sure the correct sRGB setting is used when drawing to the canvas. if (format == FORMAT_SRGB) glEnable(GL_FRAMEBUFFER_SRGB); else if (screenHasSRGB) glDisable(GL_FRAMEBUFFER_SRGB); if (fsaa_buffer != 0) fsaa_dirty = true; } void Canvas::startGrab(const std::vector &canvases) { // Whether the new canvas list is different from the old one. // A more thorough check is done below. bool canvaseschanged = canvases.size() != attachedCanvases.size(); if (canvases.size() > 0) { if (!isMultiCanvasSupported()) throw love::Exception("Multi-canvas rendering is not supported on this system."); if ((int) canvases.size() + 1 > gl.getMaxRenderTargets()) throw love::Exception("This system can't simultaniously render to %d canvases.", canvases.size()+1); if (fsaa_samples != 0) throw love::Exception("Multi-canvas rendering is not supported with FSAA."); } for (size_t i = 0; i < canvases.size(); i++) { if (canvases[i]->getWidth() != width || canvases[i]->getHeight() != height) throw love::Exception("All canvas arguments must have the same dimensions."); if (canvases[i]->getTextureFormat() != format) throw love::Exception("All canvas arguments must have the same texture format."); if (canvases[i]->getFSAA() != 0) throw love::Exception("Multi-canvas rendering is not supported with FSAA."); if (!canvaseschanged && canvases[i] != attachedCanvases[i]) canvaseschanged = true; } setupGrab(); // Don't attach anything if there's nothing to change. if (!canvaseschanged) return; // Attach the canvas textures to the active FBO and set up MRTs. strategy->setAttachments(canvases); for (size_t i = 0; i < canvases.size(); i++) canvases[i]->retain(); for (size_t i = 0; i < attachedCanvases.size(); i++) attachedCanvases[i]->release(); attachedCanvases = canvases; } void Canvas::startGrab() { setupGrab(); if (attachedCanvases.size() == 0) return; // make sure the FBO is only using a single canvas strategy->setAttachments(); // release any previously attached canvases for (size_t i = 0; i < attachedCanvases.size(); i++) attachedCanvases[i]->release(); attachedCanvases.clear(); } void Canvas::stopGrab(bool switchingToOtherCanvas) { // i am not grabbing. leave me alone if (current != this) return; glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); if (switchingToOtherCanvas) { if (format == FORMAT_SRGB) glDisable(GL_FRAMEBUFFER_SRGB); } else { // bind system framebuffer. strategy->bindFBO(0); current = nullptr; gl.setViewport(systemViewport); if (format == FORMAT_SRGB && !screenHasSRGB) glDisable(GL_FRAMEBUFFER_SRGB); else if (format != FORMAT_SRGB && screenHasSRGB) glEnable(GL_FRAMEBUFFER_SRGB); } } void Canvas::clear(Color c) { if (strategy == &strategyNone) return; GLuint previous = 0; if (current != this) { if (current != nullptr) previous = current->fbo; strategy->bindFBO(fbo); } GLfloat glcolor[] = {c.r/255.f, c.g/255.f, c.b/255.f, c.a/255.f}; // We don't need to worry about multiple FBO attachments or global clear // color state when OpenGL 3.0+ is supported. if (GLEE_VERSION_3_0) { glClearBufferfv(GL_COLOR, 0, glcolor); if (depth_stencil != 0) { GLint stencilvalue = 0; glClearBufferiv(GL_STENCIL, 0, &stencilvalue); } } else { // glClear will clear all active draw buffers, so we need to temporarily // detach any other canvases (when MRT is being used.) if (attachedCanvases.size() > 0) strategy->setAttachments(); // Don't use the state-shadowed gl.setClearColor because we want to save // the previous clear color. glClearColor(glcolor[0], glcolor[1], glcolor[2], glcolor[3]); glClear(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); if (attachedCanvases.size() > 0) strategy->setAttachments(attachedCanvases); // Restore the global clear color. gl.setClearColor(gl.getClearColor()); } if (current != this) strategy->bindFBO(previous); if (fsaa_buffer != 0) fsaa_dirty = true; } bool Canvas::checkCreateStencil() { // Do nothing if we've already created the stencil buffer. if (depth_stencil != 0) return true; if (current != this) strategy->bindFBO(fbo); bool success = strategy->createStencil(width, height, fsaa_samples, depth_stencil); if (current && current != this) strategy->bindFBO(current->fbo); else if (!current) strategy->bindFBO(0); return success; } love::image::ImageData *Canvas::getImageData(love::image::Image *image) { resolveMSAA(); int row = 4 * width; int size = row * height; GLubyte *pixels = new GLubyte[size]; // Our texture is attached to 'resolve_fbo' when we use MSAA. if (fsaa_samples > 1 && (GLEE_VERSION_3_0 || GLEE_ARB_framebuffer_object)) glBindFramebuffer(GL_READ_FRAMEBUFFER, resolve_fbo); else if (fsaa_samples > 1 && GLEE_EXT_framebuffer_multisample) glBindFramebufferEXT(GL_READ_FRAMEBUFFER, resolve_fbo); else strategy->bindFBO(fbo); glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixels); if (current) strategy->bindFBO(current->fbo); else strategy->bindFBO(0); // The new ImageData now owns the pixel data, so we don't delete it here. love::image::ImageData *img = image->newImageData(width, height, (void *)pixels, true); return img; } void Canvas::getPixel(unsigned char* pixel_rgba, int x, int y) { resolveMSAA(); // Our texture is attached to 'resolve_fbo' when we use MSAA. if (fsaa_samples > 1 && (GLEE_VERSION_3_0 || GLEE_ARB_framebuffer_object)) glBindFramebuffer(GL_READ_FRAMEBUFFER, resolve_fbo); else if (fsaa_samples > 1 && GLEE_EXT_framebuffer_multisample) glBindFramebufferEXT(GL_READ_FRAMEBUFFER, resolve_fbo); else if (current != this) strategy->bindFBO(fbo); glReadPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel_rgba); if (current && current != this) strategy->bindFBO(current->fbo); else if (!current) strategy->bindFBO(0); } bool Canvas::resolveMSAA() { if (resolve_fbo == 0 || fsaa_buffer == 0) return false; if (!fsaa_dirty) return true; GLuint previous = 0; if (current != nullptr) previous = current->fbo; // Do the MSAA resolve by blitting the MSAA renderbuffer to the texture. if (GLEE_VERSION_3_0 || GLEE_ARB_framebuffer_object) { glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, resolve_fbo); glBlitFramebuffer(0, 0, width, height, 0, 0, width, height, GL_COLOR_BUFFER_BIT, GL_NEAREST); } else if (GLEE_EXT_framebuffer_multisample && GLEE_EXT_framebuffer_blit) { glBindFramebufferEXT(GL_READ_FRAMEBUFFER, fbo); glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER, resolve_fbo); glBlitFramebufferEXT(0, 0, width, height, 0, 0, width, height, GL_COLOR_BUFFER_BIT, GL_NEAREST); } else return false; strategy->bindFBO(previous); if (current != this) fsaa_dirty = false; return true; } bool Canvas::isSupported() { getStrategy(); return (strategy != &strategyNone); } bool Canvas::isHDRSupported() { return GLEE_VERSION_3_0 || (isSupported() && GLEE_ARB_texture_float); } bool Canvas::isSRGBSupported() { if (GLEE_VERSION_3_0) return true; if (!isSupported()) return false; return (GLEE_ARB_framebuffer_sRGB || GLEE_EXT_framebuffer_sRGB) && GLEE_EXT_texture_sRGB; } bool Canvas::isMultiCanvasSupported() { // system must support at least 4 simultanious active canvases. return gl.getMaxRenderTargets() >= 4; } void Canvas::bindDefaultCanvas() { if (current != nullptr) current->stopGrab(); } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/wrap_Image.cpp0000644000000000000000000000657712316602166022610 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Image.h" namespace love { namespace graphics { namespace opengl { Image *luax_checkimage(lua_State *L, int idx) { return luax_checktype(L, idx, "Image", GRAPHICS_IMAGE_T); } int w_Image_setMipmapFilter(lua_State *L) { Image *t = luax_checkimage(L, 1); Texture::Filter f = t->getFilter(); if (lua_isnoneornil(L, 2)) f.mipmap = Texture::FILTER_NONE; // mipmapping is disabled if no argument is given else { const char *mipmapstr = luaL_checkstring(L, 2); if (!Texture::getConstant(mipmapstr, f.mipmap)) return luaL_error(L, "Invalid filter mode: %s", mipmapstr); } EXCEPT_GUARD(t->setFilter(f);) float sharpness = (float) luaL_optnumber(L, 3, 0); t->setMipmapSharpness(sharpness); return 0; } int w_Image_getMipmapFilter(lua_State *L) { Image *t = luax_checkimage(L, 1); const Texture::Filter &f = t->getFilter(); const char *mipmapstr; if (Texture::getConstant(f.mipmap, mipmapstr)) lua_pushstring(L, mipmapstr); else lua_pushnil(L); // only return a mipmap filter if mipmapping is enabled lua_pushnumber(L, t->getMipmapSharpness()); return 2; } int w_Image_isCompressed(lua_State *L) { Image *i = luax_checkimage(L, 1); luax_pushboolean(L, i->isCompressed()); return 1; } int w_Image_refresh(lua_State *L) { Image *i = luax_checkimage(L, 1); EXCEPT_GUARD(i->refresh();) return 0; } int w_Image_getData(lua_State *L) { Image *i = luax_checkimage(L, 1); if (i->isCompressed()) { love::image::CompressedData *t = i->getCompressedData(); if (t) { t->retain(); luax_pushtype(L, "CompressedData", IMAGE_COMPRESSED_DATA_T, t); } else lua_pushnil(L); } else { love::image::ImageData *t = i->getImageData(); if (t) { t->retain(); luax_pushtype(L, "ImageData", IMAGE_IMAGE_DATA_T, t); } else lua_pushnil(L); } return 1; } static const luaL_Reg functions[] = { // From wrap_Texture. { "getWidth", w_Texture_getWidth }, { "getHeight", w_Texture_getHeight }, { "getDimensions", w_Texture_getDimensions }, { "setFilter", w_Texture_setFilter }, { "getFilter", w_Texture_getFilter }, { "setWrap", w_Texture_setWrap }, { "getWrap", w_Texture_getWrap }, { "setMipmapFilter", w_Image_setMipmapFilter }, { "getMipmapFilter", w_Image_getMipmapFilter }, { "isCompressed", w_Image_isCompressed }, { "refresh", w_Image_refresh }, { "getData", w_Image_getData }, { 0, 0 } }; extern "C" int luaopen_image(lua_State *L) { return luax_register_type(L, "Image", functions); } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/Shader.cpp0000644000000000000000000004501212316602166021726 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "common/config.h" #include "Shader.h" #include "Canvas.h" // C++ #include namespace love { namespace graphics { namespace opengl { namespace { // temporarily attaches a shader program (for setting uniforms, etc) // reattaches the originally active program when destroyed struct TemporaryAttacher { TemporaryAttacher(Shader *shader) : curShader(shader) , prevShader(Shader::current) { curShader->attach(true); } ~TemporaryAttacher() { if (prevShader != nullptr) prevShader->attach(); else curShader->detach(); } Shader *curShader; Shader *prevShader; }; } // anonymous namespace Shader *Shader::current = nullptr; GLint Shader::maxTexUnits = 0; std::vector Shader::textureCounters; Shader::Shader(const ShaderSources &sources) : shaderSources(sources) , program(0) , builtinUniforms() , vertexAttributes() , lastCanvas((Canvas *) -1) , lastViewport() { if (shaderSources.empty()) throw love::Exception("Cannot create shader: no source code!"); if (maxTexUnits <= 0) { GLint maxtexunits; glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &maxtexunits); maxTexUnits = std::max(maxtexunits - 1, 0); } // initialize global texture id counters if needed if (textureCounters.size() < (size_t) maxTexUnits) textureCounters.resize(maxTexUnits, 0); // load shader source and create program object loadVolatile(); } Shader::~Shader() { if (current == this) detach(); for (auto it = boundRetainables.begin(); it != boundRetainables.end(); ++it) { it->second->release(); boundRetainables.erase(it); } unloadVolatile(); } GLuint Shader::compileCode(ShaderType type, const std::string &code) { GLenum glshadertype; const char *typestr; if (!typeNames.find(type, typestr)) typestr = ""; switch (type) { case TYPE_VERTEX: glshadertype = GL_VERTEX_SHADER; break; case TYPE_PIXEL: glshadertype = GL_FRAGMENT_SHADER; break; default: throw love::Exception("Cannot create shader object: unknown shader type."); break; } // clear existing errors while (glGetError() != GL_NO_ERROR); GLuint shaderid = glCreateShader(glshadertype); if (shaderid == 0) // oh no! { GLenum err = glGetError(); if (err == GL_INVALID_ENUM) throw love::Exception("Cannot create %s shader object: %s shaders not supported.", typestr, typestr); else throw love::Exception("Cannot create %s shader object.", typestr); } const char *src = code.c_str(); size_t srclen = code.length(); glShaderSource(shaderid, 1, (const GLchar **)&src, (GLint *)&srclen); glCompileShader(shaderid); // Get any warnings the shader compiler may have produced. GLint infologlen; glGetShaderiv(shaderid, GL_INFO_LOG_LENGTH, &infologlen); GLchar *infolog = new GLchar[infologlen + 1]; glGetShaderInfoLog(shaderid, infologlen, nullptr, infolog); // Save any warnings for later querying. if (infologlen > 0) shaderWarnings[type] = infolog; delete[] infolog; GLint status; glGetShaderiv(shaderid, GL_COMPILE_STATUS, &status); if (status == GL_FALSE) { throw love::Exception("Cannot compile %s shader code:\n%s", typestr, shaderWarnings[type].c_str()); } return shaderid; } void Shader::createProgram(const std::vector &shaderids) { program = glCreateProgram(); if (program == 0) throw love::Exception("Cannot create shader program object."); std::vector::const_iterator it; for (it = shaderids.begin(); it != shaderids.end(); ++it) glAttachShader(program, *it); // Bind generic vertex attribute indices to names in the shader. for (int i = 0; i < int(OpenGL::ATTRIB_MAX_ENUM); i++) { const char *name = nullptr; if (attribNames.find((OpenGL::VertexAttrib) i, name)) glBindAttribLocation(program, i, (const GLchar *) name); } glLinkProgram(program); // flag shaders for auto-deletion when the program object is deleted. for (it = shaderids.begin(); it != shaderids.end(); ++it) glDeleteShader(*it); GLint status; glGetProgramiv(program, GL_LINK_STATUS, &status); if (status == GL_FALSE) { std::string warnings = getProgramWarnings(); glDeleteProgram(program); program = 0; throw love::Exception("Cannot link shader program object:\n%s", warnings.c_str()); } } void Shader::mapActiveUniforms() { uniforms.clear(); GLint numuniforms; glGetProgramiv(program, GL_ACTIVE_UNIFORMS, &numuniforms); GLsizei bufsize; glGetProgramiv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH, (GLint *) &bufsize); if (bufsize <= 0) return; for (int i = 0; i < numuniforms; i++) { GLchar *cname = new GLchar[bufsize]; GLsizei namelength; Uniform u; glGetActiveUniform(program, (GLuint) i, bufsize, &namelength, &u.count, &u.type, cname); u.name = std::string(cname, (size_t) namelength); u.location = glGetUniformLocation(program, u.name.c_str()); u.baseType = getUniformBaseType(u.type); delete[] cname; // glGetActiveUniform appends "[0]" to the end of array uniform names... if (u.name.length() > 3) { size_t findpos = u.name.find("[0]"); if (findpos != std::string::npos && findpos == u.name.length() - 3) u.name.erase(u.name.length() - 3); } // If this is a built-in (LOVE-created) uniform, store the location. BuiltinExtern builtin; if (builtinNames.find(u.name.c_str(), builtin)) builtinUniforms[int(builtin)] = u.location; if (u.location != -1) uniforms[u.name] = u; } } bool Shader::loadVolatile() { // zero out active texture list activeTexUnits.clear(); activeTexUnits.insert(activeTexUnits.begin(), maxTexUnits, 0); // Built-in uniform locations default to -1 (nonexistant.) for (int i = 0; i < int(BUILTIN_MAX_ENUM); i++) builtinUniforms[i] = -1; std::vector shaderids; ShaderSources::const_iterator source; for (source = shaderSources.begin(); source != shaderSources.end(); ++source) { GLuint shaderid = compileCode(source->first, source->second); shaderids.push_back(shaderid); } if (shaderids.empty()) throw love::Exception("Cannot create shader: no valid source code!"); createProgram(shaderids); // Retreive all active uniform variables in this shader from OpenGL. mapActiveUniforms(); for (int i = 0; i < int(OpenGL::ATTRIB_MAX_ENUM); i++) { const char *name = nullptr; if (attribNames.find(OpenGL::VertexAttrib(i), name)) vertexAttributes[i] = glGetAttribLocation(program, name); else vertexAttributes[i] = -1; } if (current == this) { // make sure glUseProgram gets called. current = nullptr; attach(); } return true; } void Shader::unloadVolatile() { if (current == this) glUseProgram(0); if (program != 0) { glDeleteProgram(program); program = 0; } // decrement global texture id counters for texture units which had textures bound from this shader for (size_t i = 0; i < activeTexUnits.size(); ++i) { if (activeTexUnits[i] > 0) textureCounters[i] = std::max(textureCounters[i] - 1, 0); } // active texture list is probably invalid, clear it activeTexUnits.clear(); activeTexUnits.insert(activeTexUnits.begin(), maxTexUnits, 0); // same with uniform location list uniforms.clear(); // And the locations of any built-in uniform variables. for (int i = 0; i < int(BUILTIN_MAX_ENUM); i++) builtinUniforms[i] = -1; shaderWarnings.clear(); } std::string Shader::getProgramWarnings() const { GLint strlen, nullpos; glGetProgramiv(program, GL_INFO_LOG_LENGTH, &strlen); char *tempstr = new char[strlen+1]; // be extra sure that the error string will be 0-terminated memset(tempstr, '\0', strlen+1); glGetProgramInfoLog(program, strlen, &nullpos, tempstr); tempstr[nullpos] = '\0'; std::string warnings(tempstr); delete[] tempstr; return warnings; } std::string Shader::getWarnings() const { std::string warnings; const char *typestr; // Get the individual shader stage warnings std::map::const_iterator it; for (it = shaderWarnings.begin(); it != shaderWarnings.end(); ++it) { if (typeNames.find(it->first, typestr)) warnings += std::string(typestr) + std::string(" shader:\n") + it->second; } warnings += getProgramWarnings(); return warnings; } void Shader::attach(bool temporary) { if (current != this) { if (current != nullptr) current->release(); glUseProgram(program); current = this; current->retain(); } if (!temporary) { // make sure all sent textures are properly bound to their respective texture units // note: list potentially contains texture ids of deleted/invalid textures! for (size_t i = 0; i < activeTexUnits.size(); ++i) { if (activeTexUnits[i] > 0) gl.bindTextureToUnit(activeTexUnits[i], i + 1, false); } // We always want to use texture unit 0 for everyhing else. gl.setTextureUnit(0); } } void Shader::detach() { if (current != nullptr) glUseProgram(0); current = nullptr; } const Shader::Uniform &Shader::getUniform(const std::string &name) const { std::map::const_iterator it = uniforms.find(name); if (it == uniforms.end()) throw love::Exception("Variable '%s' does not exist.\n" "A common error is to define but not use the variable.", name.c_str()); return it->second; } int Shader::getUniformTypeSize(GLenum type) const { switch (type) { case GL_INT: case GL_FLOAT: case GL_BOOL: case GL_SAMPLER_1D: case GL_SAMPLER_2D: case GL_SAMPLER_3D: return 1; case GL_INT_VEC2: case GL_FLOAT_VEC2: case GL_FLOAT_MAT2: case GL_BOOL_VEC2: return 2; case GL_INT_VEC3: case GL_FLOAT_VEC3: case GL_FLOAT_MAT3: case GL_BOOL_VEC3: return 3; case GL_INT_VEC4: case GL_FLOAT_VEC4: case GL_FLOAT_MAT4: case GL_BOOL_VEC4: return 4; default: break; } return 1; } Shader::UniformType Shader::getUniformBaseType(GLenum type) const { switch (type) { case GL_INT: case GL_INT_VEC2: case GL_INT_VEC3: case GL_INT_VEC4: return UNIFORM_INT; case GL_FLOAT: case GL_FLOAT_VEC2: case GL_FLOAT_VEC3: case GL_FLOAT_VEC4: case GL_FLOAT_MAT2: case GL_FLOAT_MAT3: case GL_FLOAT_MAT4: return UNIFORM_FLOAT; case GL_BOOL: case GL_BOOL_VEC2: case GL_BOOL_VEC3: case GL_BOOL_VEC4: return UNIFORM_BOOL; case GL_SAMPLER_1D: case GL_SAMPLER_2D: case GL_SAMPLER_3D: return UNIFORM_SAMPLER; default: break; } return UNIFORM_UNKNOWN; } void Shader::checkSetUniformError(const Uniform &u, int size, int count, UniformType sendtype) const { if (!program) throw love::Exception("No active shader program."); int realsize = getUniformTypeSize(u.type); if (size != realsize) throw love::Exception("Value size of %d does not match variable size of %d.", size, realsize); if ((u.count == 1 && count > 1) || count < 0) throw love::Exception("Invalid number of values (expected %d, got %d).", u.count, count); if (u.baseType == UNIFORM_SAMPLER && sendtype != u.baseType) throw love::Exception("Cannot send a value of this type to an Image variable."); if ((sendtype == UNIFORM_FLOAT && u.baseType == UNIFORM_INT) || (sendtype == UNIFORM_INT && u.baseType == UNIFORM_FLOAT)) throw love::Exception("Cannot convert between float and int."); } void Shader::sendInt(const std::string &name, int size, const GLint *vec, int count) { TemporaryAttacher attacher(this); const Uniform &u = getUniform(name); checkSetUniformError(u, size, count, UNIFORM_INT); switch (size) { case 4: glUniform4iv(u.location, count, vec); break; case 3: glUniform3iv(u.location, count, vec); break; case 2: glUniform2iv(u.location, count, vec); break; case 1: default: glUniform1iv(u.location, count, vec); break; } } void Shader::sendFloat(const std::string &name, int size, const GLfloat *vec, int count) { TemporaryAttacher attacher(this); const Uniform &u = getUniform(name); checkSetUniformError(u, size, count, UNIFORM_FLOAT); switch (size) { case 4: glUniform4fv(u.location, count, vec); break; case 3: glUniform3fv(u.location, count, vec); break; case 2: glUniform2fv(u.location, count, vec); break; case 1: default: glUniform1fv(u.location, count, vec); break; } } void Shader::sendMatrix(const std::string &name, int size, const GLfloat *m, int count) { TemporaryAttacher attacher(this); if (size < 2 || size > 4) { throw love::Exception("Invalid matrix size: %dx%d " "(can only set 2x2, 3x3 or 4x4 matrices.)", size,size); } const Uniform &u = getUniform(name); checkSetUniformError(u, size, count, UNIFORM_FLOAT); switch (size) { case 4: glUniformMatrix4fv(u.location, count, GL_FALSE, m); break; case 3: glUniformMatrix3fv(u.location, count, GL_FALSE, m); break; case 2: default: glUniformMatrix2fv(u.location, count, GL_FALSE, m); break; } } void Shader::sendTexture(const std::string &name, Texture *texture) { GLuint gltex = texture->getGLTexture(); TemporaryAttacher attacher(this); int texunit = getTextureUnit(name); const Uniform &u = getUniform(name); checkSetUniformError(u, 1, 1, UNIFORM_SAMPLER); // bind texture to assigned texture unit and send uniform to shader program gl.bindTextureToUnit(gltex, texunit, false); glUniform1i(u.location, texunit); // reset texture unit gl.setTextureUnit(0); // increment global shader texture id counter for this texture unit, if we haven't already if (activeTexUnits[texunit-1] == 0) ++textureCounters[texunit-1]; // store texture id so it can be re-bound to the proper texture unit later activeTexUnits[texunit-1] = gltex; retainObject(name, texture); } void Shader::retainObject(const std::string &name, Object *object) { auto it = boundRetainables.find(name); if (it != boundRetainables.end()) it->second->release(); object->retain(); boundRetainables[name] = object; } int Shader::getTextureUnit(const std::string &name) { auto it = texUnitPool.find(name); if (it != texUnitPool.end()) return it->second; int texunit = 1; // prefer texture units which are unused by all other shaders auto freeunit_it = std::find(textureCounters.begin(), textureCounters.end(), 0); if (freeunit_it != textureCounters.end()) { // we don't want to use unit 0 texunit = std::distance(textureCounters.begin(), freeunit_it) + 1; } else { // no completely unused texture units exist, try to use next free slot in our own list auto nextunit_it = std::find(activeTexUnits.begin(), activeTexUnits.end(), 0); if (nextunit_it == activeTexUnits.end()) throw love::Exception("No more texture units available for shader."); // we don't want to use unit 0 texunit = std::distance(activeTexUnits.begin(), nextunit_it) + 1; } texUnitPool[name] = texunit; return texunit; } bool Shader::hasVertexAttrib(OpenGL::VertexAttrib attrib) const { return vertexAttributes[int(attrib)] != -1; } bool Shader::hasBuiltinExtern(BuiltinExtern builtin) const { return builtinUniforms[int(builtin)] != -1; } bool Shader::sendBuiltinFloat(BuiltinExtern builtin, int size, const GLfloat *vec, int count) { if (!hasBuiltinExtern(builtin)) return false; GLint location = builtinUniforms[int(builtin)]; TemporaryAttacher attacher(this); switch (size) { case 1: glUniform1fv(location, count, vec); break; case 2: glUniform2fv(location, count, vec); break; case 3: glUniform3fv(location, count, vec); break; case 4: glUniform4fv(location, count, vec); break; default: return false; } return true; } void Shader::checkSetScreenParams() { OpenGL::Viewport view = gl.getViewport(); if (view == lastViewport && lastCanvas == Canvas::current) return; // In the shader, we do pixcoord.y = gl_FragCoord.y * params.z + params.w. // This lets us flip pixcoord.y when needed, to be consistent (Canvases // have flipped y-values for pixel coordinates.) GLfloat params[] = { (GLfloat) view.w, (GLfloat) view.h, 0.0f, 0.0f, }; if (Canvas::current != nullptr) { // gl_FragCoord.y is flipped in Canvases, so we un-flip: // pixcoord.y = gl_FragCoord.y * -1.0 + height. params[2] = -1.0f; params[3] = (GLfloat) view.h; } else { // No flipping: pixcoord.y = gl_FragCoord.y * 1.0 + 0.0. params[2] = 1.0f; params[3] = 0.0f; } sendBuiltinFloat(BUILTIN_SCREEN_SIZE, 4, params, 1); lastCanvas = Canvas::current; lastViewport = view; } const std::map &Shader::getBoundRetainables() const { return boundRetainables; } std::string Shader::getGLSLVersion() { const char *tmp = nullptr; // GL_SHADING_LANGUAGE_VERSION isn't available in OpenGL < 2.0. if (GLEE_VERSION_2_0 || GLEE_ARB_shading_language_100) tmp = (const char *) glGetString(GL_SHADING_LANGUAGE_VERSION); if (tmp == nullptr) return "0.0"; // the version string always begins with a version number of the format // major_number.minor_number // or // major_number.minor_number.release_number // we can keep release_number, since it does not affect the check below. std::string versionstring(tmp); size_t minorendpos = versionstring.find(' '); return versionstring.substr(0, minorendpos); } bool Shader::isSupported() { return GLEE_VERSION_2_0 && getGLSLVersion() >= "1.2"; } StringMap::Entry Shader::typeNameEntries[] = { {"vertex", Shader::TYPE_VERTEX}, {"pixel", Shader::TYPE_PIXEL}, }; StringMap Shader::typeNames(Shader::typeNameEntries, sizeof(Shader::typeNameEntries)); StringMap::Entry Shader::attribNameEntries[] = { {"love_PseudoInstanceID", OpenGL::ATTRIB_PSEUDO_INSTANCE_ID}, }; StringMap Shader::attribNames(Shader::attribNameEntries, sizeof(Shader::attribNameEntries)); StringMap::Entry Shader::builtinNameEntries[] = { {"love_ScreenSize", Shader::BUILTIN_SCREEN_SIZE}, }; StringMap Shader::builtinNames(Shader::builtinNameEntries, sizeof(Shader::builtinNameEntries)); } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/wrap_Font.h0000644000000000000000000000323512316602166022125 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_WRAP_FONT_H #define LOVE_GRAPHICS_OPENGL_WRAP_FONT_H // LOVE #include "common/runtime.h" #include "Font.h" namespace love { namespace graphics { namespace opengl { Font *luax_checkfont(lua_State *L, int idx); int w_Font_getHeight(lua_State *L); int w_Font_getWidth(lua_State *L); int w_Font_getWrap(lua_State *L); int w_Font_setLineHeight(lua_State *L); int w_Font_getLineHeight(lua_State *L); int w_Font_setFilter(lua_State *L); int w_Font_getFilter(lua_State *L); int w_Font_getAscent(lua_State *L); int w_Font_getDescent(lua_State *L); int w_Font_getBaseline(lua_State *L); int w_Font_hasGlyphs(lua_State *L); extern "C" int luaopen_font(lua_State *L); } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_WRAP_FONT_H love-0.9.1/src/modules/graphics/opengl/Mesh.cpp0000644000000000000000000002523712316602166021423 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "Mesh.h" #include "common/Matrix.h" #include "common/Exception.h" // C++ #include namespace love { namespace graphics { namespace opengl { Mesh::Mesh(const std::vector &verts, Mesh::DrawMode mode) : vbo(nullptr) , vertex_count(0) , ibo(nullptr) , element_count(0) , element_data_type(getGLDataTypeFromMax(verts.size())) , instance_count(1) , draw_mode(mode) , range_min(-1) , range_max(-1) , texture(nullptr) , colors_enabled(false) { setVertices(verts); } Mesh::Mesh(int vertexcount, Mesh::DrawMode mode) : vbo(nullptr) , vertex_count(0) , ibo(nullptr) , element_count(0) , element_data_type(getGLDataTypeFromMax(vertexcount)) , draw_mode(mode) , range_min(-1) , range_max(-1) , texture(nullptr) , colors_enabled(false) { if (vertexcount < 1) throw love::Exception("Invalid number of vertices."); std::vector verts(vertexcount); // Default-initialized vertices should have a white opaque color. for (size_t i = 0; i < verts.size(); i++) { verts[i].r = 255; verts[i].g = 255; verts[i].b = 255; verts[i].a = 255; } setVertices(verts); } Mesh::~Mesh() { delete vbo; delete ibo; } void Mesh::setVertices(const std::vector &verts) { if (verts.size() == 0) throw love::Exception("At least one vertex is required."); size_t size = sizeof(Vertex) * verts.size(); if (vbo && size > vbo->getSize()) { delete vbo; vbo = nullptr; } if (!vbo) { // Full memory backing because we might access the data at any time. vbo = VertexBuffer::Create(size, GL_ARRAY_BUFFER, GL_DYNAMIC_DRAW, VertexBuffer::BACKING_FULL); } vertex_count = verts.size(); VertexBuffer::Bind vbo_bind(*vbo); VertexBuffer::Mapper vbo_mapper(*vbo); // Fill the buffer with the vertices. memcpy(vbo_mapper.get(), &verts[0], size); } const Vertex *Mesh::getVertices() const { if (vbo) { VertexBuffer::Bind vbo_bind(*vbo); return (Vertex *) vbo->map(); } return nullptr; } void Mesh::setVertex(size_t index, const Vertex &v) { if (index >= vertex_count) throw love::Exception("Invalid vertex index: %ld", index + 1); VertexBuffer::Bind vbo_bind(*vbo); // We unmap the vertex buffer in Mesh::draw. This lets us coalesce the // buffer transfer calls into just one. Vertex *vertices = (Vertex *) vbo->map(); vertices[index] = v; } Vertex Mesh::getVertex(size_t index) const { if (index >= vertex_count) throw love::Exception("Invalid vertex index: %ld", index + 1); VertexBuffer::Bind vbo_bind(*vbo); // We unmap the vertex buffer in Mesh::draw. Vertex *vertices = (Vertex *) vbo->map(); return vertices[index]; } size_t Mesh::getVertexCount() const { return vertex_count; } /** * Copies index data from a vector to a mapped index buffer. **/ template static void copyToIndexBuffer(const std::vector &indices, VertexBuffer::Mapper &buffermap, size_t maxval) { T *elems = (T *) buffermap.get(); for (size_t i = 0; i < indices.size(); i++) { if (indices[i] >= maxval) throw love::Exception("Invalid vertex map value: %d", indices[i] + 1); elems[i] = (T) indices[i]; } } void Mesh::setVertexMap(const std::vector &map) { GLenum datatype = getGLDataTypeFromMax(vertex_count); // Calculate the size in bytes of the index buffer data. size_t size = map.size(); switch (datatype) { case GL_UNSIGNED_BYTE: size *= sizeof(uint8); break; case GL_UNSIGNED_SHORT: size *= sizeof(uint16); break; case GL_UNSIGNED_INT: default: size *= sizeof(uint32); break; } if (ibo && size > ibo->getSize()) { delete ibo; ibo = nullptr; } if (!ibo && size > 0) { // Full memory backing because we might access the data at any time. ibo = VertexBuffer::Create(size, GL_ELEMENT_ARRAY_BUFFER, GL_DYNAMIC_DRAW, VertexBuffer::BACKING_FULL); } element_count = map.size(); if (!ibo || element_count == 0) return; VertexBuffer::Bind ibo_bind(*ibo); VertexBuffer::Mapper ibo_map(*ibo); // Fill the buffer with the index values from the vector. switch (datatype) { case GL_UNSIGNED_BYTE: copyToIndexBuffer(map, ibo_map, vertex_count); break; case GL_UNSIGNED_SHORT: copyToIndexBuffer(map, ibo_map, vertex_count); break; case GL_UNSIGNED_INT: default: copyToIndexBuffer(map, ibo_map, vertex_count); break; } element_data_type = datatype; } /** * Copies index data from a mapped buffer to a vector. **/ template static void copyFromIndexBuffer(void *buffer, std::vector &indices, size_t maxval) { T *elems = (T *) buffer; for (size_t i = 0; i < maxval; i++) indices.push_back((uint32) elems[i]); } void Mesh::getVertexMap(std::vector &map) const { if (!ibo || element_count == 0) return; map.clear(); map.reserve(element_count); VertexBuffer::Bind ibo_bind(*ibo); // We unmap the buffer in Mesh::draw and Mesh::setVertexMap. void *buffer = ibo->map(); // Fill the vector from the buffer. switch (element_data_type) { case GL_UNSIGNED_BYTE: copyFromIndexBuffer(buffer, map, vertex_count); break; case GL_UNSIGNED_SHORT: copyFromIndexBuffer(buffer, map, vertex_count); break; case GL_UNSIGNED_INT: default: copyFromIndexBuffer(buffer, map, vertex_count); break; } } size_t Mesh::getVertexMapCount() const { return element_count; } void Mesh::setInstanceCount(int count) { instance_count = std::max(count, 1); } int Mesh::getInstanceCount() const { return instance_count; } void Mesh::setTexture(Texture *tex) { tex->retain(); if (texture) texture->release(); texture = tex; } void Mesh::setTexture() { if (texture) texture->release(); texture = nullptr; } Texture *Mesh::getTexture() const { return texture; } void Mesh::setDrawMode(Mesh::DrawMode mode) { draw_mode = mode; } Mesh::DrawMode Mesh::getDrawMode() const { return draw_mode; } void Mesh::setDrawRange(int min, int max) { if (min < 0 || max < 0 || min > max) throw love::Exception("Invalid draw range."); range_min = min; range_max = max; } void Mesh::setDrawRange() { range_min = range_max = -1; } void Mesh::getDrawRange(int &min, int &max) const { min = range_min; max = range_max; } void Mesh::setVertexColors(bool enable) { colors_enabled = enable; } bool Mesh::hasVertexColors() const { return colors_enabled; } void Mesh::draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky) { const size_t pos_offset = offsetof(Vertex, x); const size_t tex_offset = offsetof(Vertex, s); const size_t color_offset = offsetof(Vertex, r); if (vertex_count == 0) return; if (texture) texture->predraw(); else gl.bindTexture(0); Matrix m; m.setTransformation(x, y, angle, sx, sy, ox, oy, kx, ky); glPushMatrix(); glMultMatrixf(m.getElements()); VertexBuffer::Bind vbo_bind(*vbo); // Make sure the VBO isn't mapped when we draw (sends data to GPU if needed.) vbo->unmap(); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer(2, GL_FLOAT, sizeof(Vertex), vbo->getPointer(pos_offset)); glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), vbo->getPointer(tex_offset)); if (hasVertexColors()) { // Per-vertex colors. glEnableClientState(GL_COLOR_ARRAY); glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Vertex), vbo->getPointer(color_offset)); } GLenum mode = getGLDrawMode(draw_mode); gl.prepareDraw(); if (ibo && element_count > 0) { // Use the custom vertex map (index buffer) to draw the vertices. VertexBuffer::Bind ibo_bind(*ibo); // Make sure the index buffer isn't mapped (sends data to GPU if needed.) ibo->unmap(); int max = element_count - 1; if (range_max >= 0) max = std::min(std::max(range_max, 0), (int) element_count - 1); int min = 0; if (range_min >= 0) min = std::min(std::max(range_min, 0), max); const void *indices = ibo->getPointer(min * sizeof(uint32)); GLenum type = element_data_type; if (instance_count > 1) gl.drawElementsInstanced(mode, max - min + 1, type, indices, instance_count); else glDrawElements(mode, max - min + 1, type, indices); } else { int max = vertex_count - 1; if (range_max >= 0) max = std::min(std::max(range_max, 0), (int) vertex_count - 1); int min = 0; if (range_min >= 0) min = std::min(std::max(range_min, 0), max); // Normal non-indexed drawing (no custom vertex map.) if (instance_count > 1) gl.drawArraysInstanced(mode, min, max - min + 1, instance_count); else glDrawArrays(mode, min, max - min + 1); } glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); if (hasVertexColors()) { glDisableClientState(GL_COLOR_ARRAY); // Using the color array leaves the GL constant color undefined. gl.setColor(gl.getColor()); } glPopMatrix(); if (texture) texture->postdraw(); } GLenum Mesh::getGLDrawMode(DrawMode mode) const { switch (mode) { case DRAW_MODE_FAN: return GL_TRIANGLE_FAN; case DRAW_MODE_STRIP: return GL_TRIANGLE_STRIP; case DRAW_MODE_TRIANGLES: return GL_TRIANGLES; case DRAW_MODE_POINTS: return GL_POINTS; default: break; } return GL_TRIANGLES; } GLenum Mesh::getGLDataTypeFromMax(size_t maxvalue) const { if (maxvalue > LOVE_UINT16_MAX) return GL_UNSIGNED_INT; else if (maxvalue > LOVE_UINT8_MAX) return GL_UNSIGNED_SHORT; else return GL_UNSIGNED_BYTE; } bool Mesh::getConstant(const char *in, Mesh::DrawMode &out) { return drawModes.find(in, out); } bool Mesh::getConstant(Mesh::DrawMode in, const char *&out) { return drawModes.find(in, out); } StringMap::Entry Mesh::drawModeEntries[] = { {"fan", Mesh::DRAW_MODE_FAN}, {"strip", Mesh::DRAW_MODE_STRIP}, {"triangles", Mesh::DRAW_MODE_TRIANGLES}, {"points", Mesh::DRAW_MODE_POINTS}, }; StringMap Mesh::drawModes(Mesh::drawModeEntries, sizeof(Mesh::drawModeEntries)); } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/wrap_Canvas.cpp0000644000000000000000000001003712316602166022763 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Canvas.h" namespace love { namespace graphics { namespace opengl { Canvas *luax_checkcanvas(lua_State *L, int idx) { return luax_checktype(L, idx, "Canvas", GRAPHICS_CANVAS_T); } int w_Canvas_renderTo(lua_State *L) { Canvas *canvas = luax_checkcanvas(L, 1); luaL_checktype(L, 2, LUA_TFUNCTION); // Save the current Canvas so we can restore it when we're done. Canvas *oldcanvas = Canvas::current; EXCEPT_GUARD(canvas->startGrab();) lua_settop(L, 2); // make sure the function is on top of the stack lua_call(L, 0, 0); if (oldcanvas != nullptr) oldcanvas->startGrab(oldcanvas->getAttachedCanvases()); else Canvas::bindDefaultCanvas(); return 0; } int w_Canvas_getImageData(lua_State *L) { Canvas *canvas = luax_checkcanvas(L, 1); love::image::Image *image = luax_getmodule(L, "image", MODULE_IMAGE_T); love::image::ImageData *img = canvas->getImageData(image); luax_pushtype(L, "ImageData", IMAGE_IMAGE_DATA_T, img); return 1; } int w_Canvas_getPixel(lua_State * L) { Canvas * canvas = luax_checkcanvas(L, 1); int x = luaL_checkint(L, 2); int y = luaL_checkint(L, 3); unsigned char c[4]; EXCEPT_GUARD(canvas->getPixel(c, x, y);) lua_pushnumber(L, c[0]); lua_pushnumber(L, c[1]); lua_pushnumber(L, c[2]); lua_pushnumber(L, c[3]); return 4; } int w_Canvas_clear(lua_State *L) { Canvas *canvas = luax_checkcanvas(L, 1); Color c; if (lua_isnoneornil(L, 2)) { c.set(0, 0, 0, 0); } else if (lua_istable(L, 2)) { for (int i = 1; i <= 4; i++) lua_rawgeti(L, 2, i); c.r = (unsigned char)luaL_checkinteger(L, -4); c.g = (unsigned char)luaL_checkinteger(L, -3); c.b = (unsigned char)luaL_checkinteger(L, -2); c.a = (unsigned char)luaL_optinteger(L, -1, 255); lua_pop(L, 4); } else { c.r = (unsigned char)luaL_checkinteger(L, 2); c.g = (unsigned char)luaL_checkinteger(L, 3); c.b = (unsigned char)luaL_checkinteger(L, 4); c.a = (unsigned char)luaL_optinteger(L, 5, 255); } canvas->clear(c); return 0; } int w_Canvas_getFormat(lua_State *L) { Canvas *canvas = luax_checkcanvas(L, 1); Texture::Format format = canvas->getTextureFormat(); const char *str; if (!Texture::getConstant(format, str)) return luaL_error(L, "Unknown texture format."); lua_pushstring(L, str); return 1; } int w_Canvas_getFSAA(lua_State *L) { Canvas *canvas = luax_checkcanvas(L, 1); lua_pushinteger(L, canvas->getFSAA()); return 1; } static const luaL_Reg functions[] = { // From wrap_Texture. { "getWidth", w_Texture_getWidth }, { "getHeight", w_Texture_getHeight }, { "getDimensions", w_Texture_getDimensions }, { "setFilter", w_Texture_setFilter }, { "getFilter", w_Texture_getFilter }, { "setWrap", w_Texture_setWrap }, { "getWrap", w_Texture_getWrap }, { "renderTo", w_Canvas_renderTo }, { "getImageData", w_Canvas_getImageData }, { "getPixel", w_Canvas_getPixel }, { "clear", w_Canvas_clear }, { "getFormat", w_Canvas_getFormat }, { "getFSAA", w_Canvas_getFSAA }, // Deprecated since 0.9.1. { "getType", w_Canvas_getFormat }, { 0, 0 } }; extern "C" int luaopen_canvas(lua_State *L) { return luax_register_type(L, "Canvas", functions); } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/wrap_ParticleSystem.cpp0000644000000000000000000004640612316602166024531 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_ParticleSystem.h" #include "common/Vector.h" #include "Image.h" #include "Canvas.h" #include "wrap_Texture.h" // C #include // C++ #include namespace love { namespace graphics { namespace opengl { ParticleSystem *luax_checkparticlesystem(lua_State *L, int idx) { return luax_checktype(L, idx, "ParticleSystem", GRAPHICS_PARTICLE_SYSTEM_T); } int w_ParticleSystem_clone(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); ParticleSystem *clone = nullptr; EXCEPT_GUARD(clone = t->clone();) luax_pushtype(L, "ParticleSystem", GRAPHICS_PARTICLE_SYSTEM_T, clone); return 1; } int w_ParticleSystem_setTexture(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); Texture *tex = luax_checktexture(L, 2); t->setTexture(tex); return 0; } int w_ParticleSystem_getTexture(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); Texture *tex = t->getTexture(); tex->retain(); // FIXME: big hack right here. if (typeid(*tex) == typeid(Image)) luax_pushtype(L, "Image", GRAPHICS_IMAGE_T, tex); else if (typeid(*tex) == typeid(Canvas)) luax_pushtype(L, "Canvas", GRAPHICS_CANVAS_T, tex); else { tex->release(); return luaL_error(L, "Unable to determine texture type."); } return 1; } int w_ParticleSystem_setBufferSize(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); lua_Number arg1 = luaL_checknumber(L, 2); if (arg1 < 1.0 || arg1 > ParticleSystem::MAX_PARTICLES) return luaL_error(L, "Invalid buffer size"); EXCEPT_GUARD(t->setBufferSize((uint32) arg1);) return 0; } int w_ParticleSystem_getBufferSize(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); lua_pushinteger(L, t->getBufferSize()); return 1; } int w_ParticleSystem_setInsertMode(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); ParticleSystem::InsertMode mode; const char *str = luaL_checkstring(L, 2); if (!ParticleSystem::getConstant(str, mode)) return luaL_error(L, "Invalid insert mode: '%s'", str); t->setInsertMode(mode); return 0; } int w_ParticleSystem_getInsertMode(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); ParticleSystem::InsertMode mode; mode = t->getInsertMode(); const char *str; if (!ParticleSystem::getConstant(mode, str)) return luaL_error(L, "Unknown insert mode"); lua_pushstring(L, str); return 1; } int w_ParticleSystem_setEmissionRate(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float) luaL_checknumber(L, 2); EXCEPT_GUARD(t->setEmissionRate(arg1);) return 0; } int w_ParticleSystem_getEmissionRate(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); lua_pushnumber(L, t->getEmissionRate()); return 1; } int w_ParticleSystem_setEmitterLifetime(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setEmitterLifetime(arg1); return 0; } int w_ParticleSystem_getEmitterLifetime(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); lua_pushnumber(L, t->getEmitterLifetime()); return 1; } int w_ParticleSystem_setParticleLifetime(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_optnumber(L, 3, arg1); t->setParticleLifetime(arg1, arg2); return 0; } int w_ParticleSystem_getParticleLifetime(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float min, max; t->getParticleLifetime(&min, &max); lua_pushnumber(L, min); lua_pushnumber(L, max); return 2; } int w_ParticleSystem_setPosition(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_checknumber(L, 3); t->setPosition(arg1, arg2); return 0; } int w_ParticleSystem_getPosition(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); love::Vector pos = t->getPosition(); lua_pushnumber(L, pos.getX()); lua_pushnumber(L, pos.getY()); return 2; } int w_ParticleSystem_moveTo(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_checknumber(L, 3); t->moveTo(arg1, arg2); return 0; } int w_ParticleSystem_setAreaSpread(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); ParticleSystem::AreaSpreadDistribution distribution = ParticleSystem::DISTRIBUTION_NONE; float x = 0.f, y = 0.f; const char *str = lua_isnoneornil(L, 2) ? 0 : luaL_checkstring(L, 2); if (str && !ParticleSystem::getConstant(str, distribution)) return luaL_error(L, "Invalid particle distribution: %s", str); if (distribution != ParticleSystem::DISTRIBUTION_NONE) { x = (float) luaL_checknumber(L, 3); y = (float) luaL_checknumber(L, 4); if (x < 0.0f || y < 0.0f) return luaL_error(L, "Invalid area spread parameters (must be >= 0)"); } t->setAreaSpread(distribution, x, y); return 0; } int w_ParticleSystem_getAreaSpread(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); ParticleSystem::AreaSpreadDistribution distribution = t-> getAreaSpreadDistribution(); const char *str; ParticleSystem::getConstant(distribution, str); const love::Vector &p = t->getAreaSpreadParameters(); lua_pushstring(L, str); lua_pushnumber(L, p.x); lua_pushnumber(L, p.y); return 3; } int w_ParticleSystem_setDirection(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setDirection(arg1); return 0; } int w_ParticleSystem_getDirection(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); lua_pushnumber(L, t->getDirection()); return 1; } int w_ParticleSystem_setSpread(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setSpread(arg1); return 0; } int w_ParticleSystem_getSpread(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); lua_pushnumber(L, t->getSpread()); return 1; } int w_ParticleSystem_setSpeed(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_optnumber(L, 3, arg1); t->setSpeed(arg1, arg2); return 0; } int w_ParticleSystem_getSpeed(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float min, max; t->getSpeed(&min, &max); lua_pushnumber(L, min); lua_pushnumber(L, max); return 2; } int w_ParticleSystem_setLinearAcceleration(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float xmin = (float) luaL_checknumber(L, 2); float ymin = (float) luaL_checknumber(L, 3); float xmax = (float) luaL_optnumber(L, 4, xmin); float ymax = (float) luaL_optnumber(L, 5, ymin); t->setLinearAcceleration(xmin, ymin, xmax, ymax); return 0; } int w_ParticleSystem_getLinearAcceleration(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); love::Vector min, max; t->getLinearAcceleration(&min, &max); lua_pushnumber(L, min.x); lua_pushnumber(L, min.y); lua_pushnumber(L, max.x); lua_pushnumber(L, max.y); return 4; } int w_ParticleSystem_setRadialAcceleration(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_optnumber(L, 3, arg1); t->setRadialAcceleration(arg1, arg2); return 0; } int w_ParticleSystem_getRadialAcceleration(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float min, max; t->getRadialAcceleration(&min, &max); lua_pushnumber(L, min); lua_pushnumber(L, max); return 2; } int w_ParticleSystem_setTangentialAcceleration(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_optnumber(L, 3, arg1); t->setTangentialAcceleration(arg1, arg2); return 0; } int w_ParticleSystem_getTangentialAcceleration(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float min, max; t->getTangentialAcceleration(&min, &max); lua_pushnumber(L, min); lua_pushnumber(L, max); return 2; } int w_ParticleSystem_setSizes(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); size_t nSizes = lua_gettop(L) - 1; if (nSizes > 8) return luaL_error(L, "At most eight (8) sizes may be used."); if (nSizes <= 1) { float size = luax_checkfloat(L, 2); t->setSize(size); } else { std::vector sizes(nSizes); for (size_t i = 0; i < nSizes; ++i) sizes[i] = luax_checkfloat(L, 1 + i + 1); t->setSizes(sizes); } return 0; } int w_ParticleSystem_getSizes(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); const std::vector &sizes = t->getSizes(); for (size_t i = 0; i < sizes.size(); i++) lua_pushnumber(L, sizes[i]); return sizes.size(); } int w_ParticleSystem_setSizeVariation(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); if (arg1 < 0.0f || arg1 > 1.0f) return luaL_error(L, "Size variation has to be between 0 and 1, inclusive."); t->setSizeVariation(arg1); return 0; } int w_ParticleSystem_getSizeVariation(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); lua_pushnumber(L, t->getSizeVariation()); return 1; } int w_ParticleSystem_setRotation(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_optnumber(L, 3, arg1); t->setRotation(arg1, arg2); return 0; } int w_ParticleSystem_getRotation(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float min, max; t->getRotation(&min, &max); lua_pushnumber(L, min); lua_pushnumber(L, max); return 2; } int w_ParticleSystem_setSpin(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); float arg2 = (float)luaL_optnumber(L, 3, arg1); t->setSpin(arg1, arg2); return 0; } int w_ParticleSystem_getSpin(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float start, end; t->getSpin(&start, &end); lua_pushnumber(L, start); lua_pushnumber(L, end); return 2; } int w_ParticleSystem_setSpinVariation(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float arg1 = (float)luaL_checknumber(L, 2); t->setSpinVariation(arg1); return 0; } int w_ParticleSystem_getSpinVariation(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); lua_pushnumber(L, t->getSpinVariation()); return 1; } int w_ParticleSystem_setOffset(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); t->setOffset(x, y); return 0; } int w_ParticleSystem_getOffset(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); love::Vector offset = t->getOffset(); lua_pushnumber(L, offset.getX()); lua_pushnumber(L, offset.getY()); return 2; } int w_ParticleSystem_setColors(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); if (lua_istable(L, 2)) // setColors({r,g,b,a}, {r,g,b,a}, ...) { size_t nColors = lua_gettop(L) - 1; if (nColors > 8) return luaL_error(L, "At most eight (8) colors may be used."); std::vector colors(nColors); for (size_t i = 0; i < nColors; i++) { luaL_checktype(L, i + 2, LUA_TTABLE); if (lua_objlen(L, i + 2) < 3) return luaL_argerror(L, i + 2, "expected 4 color components"); for (int j = 0; j < 4; j++) // push args[i+2][j+1] onto the stack lua_rawgeti(L, i + 2, j + 1); unsigned char r = (unsigned char) luaL_checkinteger(L, -4); unsigned char g = (unsigned char) luaL_checkinteger(L, -3); unsigned char b = (unsigned char) luaL_checkinteger(L, -2); unsigned char a = (unsigned char) luaL_optinteger(L, -1, 255); // pop the color components from the stack lua_pop(L, 4); colors[i] = Color(r, g, b, a); } t->setColor(colors); } else // setColors(r,g,b,a, r,g,b,a, ...) { int cargs = lua_gettop(L) - 1; size_t nColors = (cargs + 3) / 4; // nColors = ceil(color_args / 4) if (cargs != 3 && (cargs % 4 != 0 || cargs == 0)) return luaL_error(L, "Expected red, green, blue, and alpha. Only got %d of 4 components.", cargs % 4); if (nColors > 8) return luaL_error(L, "At most eight (8) colors may be used."); if (nColors == 1) { unsigned char r = (unsigned char) luaL_checkinteger(L, 2); unsigned char g = (unsigned char) luaL_checkinteger(L, 3); unsigned char b = (unsigned char) luaL_checkinteger(L, 4); unsigned char a = (unsigned char) luaL_optinteger(L, 5, 255); t->setColor(Color(r,g,b,a)); } else { std::vector colors(nColors); for (size_t i = 0; i < nColors; ++i) { unsigned char r = (unsigned char) luaL_checkinteger(L, 1 + i*4 + 1); unsigned char g = (unsigned char) luaL_checkinteger(L, 1 + i*4 + 2); unsigned char b = (unsigned char) luaL_checkinteger(L, 1 + i*4 + 3); unsigned char a = (unsigned char) luaL_checkinteger(L, 1 + i*4 + 4); colors[i] = Color(r,g,b,a); } t->setColor(colors); } } return 0; } int w_ParticleSystem_getColors(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); const std::vector &colors =t->getColor(); for (size_t i = 0; i < colors.size(); i++) { lua_createtable(L, 4, 0); lua_pushinteger(L, colors[i].r); lua_rawseti(L, -2, 1); lua_pushinteger(L, colors[i].g); lua_rawseti(L, -2, 2); lua_pushinteger(L, colors[i].b); lua_rawseti(L, -2, 3); lua_pushinteger(L, colors[i].a); lua_rawseti(L, -2, 4); } return colors.size(); } int w_ParticleSystem_setRelativeRotation(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); t->setRelativeRotation(luax_toboolean(L, 2)); return 0; } int w_ParticleSystem_hasRelativeRotation(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); luax_pushboolean(L, t->hasRelativeRotation()); return 1; } int w_ParticleSystem_getCount(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); lua_pushnumber(L, t->getCount()); return 1; } int w_ParticleSystem_start(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); t->start(); return 0; } int w_ParticleSystem_stop(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); t->stop(); return 0; } int w_ParticleSystem_pause(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); t->pause(); return 0; } int w_ParticleSystem_reset(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); t->reset(); return 0; } int w_ParticleSystem_emit(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); int num = luaL_checkint(L, 2); t->emit(num); return 0; } int w_ParticleSystem_isActive(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); luax_pushboolean(L, t->isActive()); return 1; } int w_ParticleSystem_isPaused(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); luax_pushboolean(L, t->isPaused()); return 1; } int w_ParticleSystem_isStopped(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); luax_pushboolean(L, t->isStopped()); return 1; } int w_ParticleSystem_update(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); float dt = (float)luaL_checknumber(L, 2); t->update(dt); return 0; } static const luaL_Reg functions[] = { { "clone", w_ParticleSystem_clone }, { "setTexture", w_ParticleSystem_setTexture }, { "getTexture", w_ParticleSystem_getTexture }, { "setBufferSize", w_ParticleSystem_setBufferSize }, { "getBufferSize", w_ParticleSystem_getBufferSize }, { "setInsertMode", w_ParticleSystem_setInsertMode }, { "getInsertMode", w_ParticleSystem_getInsertMode }, { "setEmissionRate", w_ParticleSystem_setEmissionRate }, { "getEmissionRate", w_ParticleSystem_getEmissionRate }, { "setEmitterLifetime", w_ParticleSystem_setEmitterLifetime }, { "getEmitterLifetime", w_ParticleSystem_getEmitterLifetime }, { "setParticleLifetime", w_ParticleSystem_setParticleLifetime }, { "getParticleLifetime", w_ParticleSystem_getParticleLifetime }, { "setPosition", w_ParticleSystem_setPosition }, { "getPosition", w_ParticleSystem_getPosition }, { "moveTo", w_ParticleSystem_moveTo }, { "setAreaSpread", w_ParticleSystem_setAreaSpread }, { "getAreaSpread", w_ParticleSystem_getAreaSpread }, { "setDirection", w_ParticleSystem_setDirection }, { "getDirection", w_ParticleSystem_getDirection }, { "setSpread", w_ParticleSystem_setSpread }, { "getSpread", w_ParticleSystem_getSpread }, { "setSpeed", w_ParticleSystem_setSpeed }, { "getSpeed", w_ParticleSystem_getSpeed }, { "setLinearAcceleration", w_ParticleSystem_setLinearAcceleration }, { "getLinearAcceleration", w_ParticleSystem_getLinearAcceleration }, { "setRadialAcceleration", w_ParticleSystem_setRadialAcceleration }, { "getRadialAcceleration", w_ParticleSystem_getRadialAcceleration }, { "setTangentialAcceleration", w_ParticleSystem_setTangentialAcceleration }, { "getTangentialAcceleration", w_ParticleSystem_getTangentialAcceleration }, { "setSizes", w_ParticleSystem_setSizes }, { "getSizes", w_ParticleSystem_getSizes }, { "setSizeVariation", w_ParticleSystem_setSizeVariation }, { "getSizeVariation", w_ParticleSystem_getSizeVariation }, { "setRotation", w_ParticleSystem_setRotation }, { "getRotation", w_ParticleSystem_getRotation }, { "setSpin", w_ParticleSystem_setSpin }, { "getSpin", w_ParticleSystem_getSpin }, { "setSpinVariation", w_ParticleSystem_setSpinVariation }, { "getSpinVariation", w_ParticleSystem_getSpinVariation }, { "setColors", w_ParticleSystem_setColors }, { "getColors", w_ParticleSystem_getColors }, { "setOffset", w_ParticleSystem_setOffset }, { "getOffset", w_ParticleSystem_getOffset }, { "setRelativeRotation", w_ParticleSystem_setRelativeRotation }, { "hasRelativeRotation", w_ParticleSystem_hasRelativeRotation }, { "getCount", w_ParticleSystem_getCount }, { "start", w_ParticleSystem_start }, { "stop", w_ParticleSystem_stop }, { "pause", w_ParticleSystem_pause }, { "reset", w_ParticleSystem_reset }, { "emit", w_ParticleSystem_emit }, { "isActive", w_ParticleSystem_isActive }, { "isPaused", w_ParticleSystem_isPaused }, { "isStopped", w_ParticleSystem_isStopped }, { "update", w_ParticleSystem_update }, // Deprecated since 0.9.1. { "setImage", w_ParticleSystem_setTexture }, { "getImage", w_ParticleSystem_getTexture }, { 0, 0 } }; extern "C" int luaopen_particlesystem(lua_State *L) { return luax_register_type(L, "ParticleSystem", functions); } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/Shader.h0000644000000000000000000001610112316602166021370 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_SHADER_H #define LOVE_GRAPHICS_SHADER_H // LOVE #include "common/Object.h" #include "common/StringMap.h" #include "OpenGL.h" #include "Texture.h" // STL #include #include #include namespace love { namespace graphics { namespace opengl { class Canvas; // A GLSL shader class Shader : public Object, public Volatile { public: // Pointer to currently active Shader. static Shader *current; enum ShaderType { TYPE_VERTEX, TYPE_PIXEL, TYPE_MAX_ENUM }; // Built-in extern (uniform) variables. enum BuiltinExtern { BUILTIN_SCREEN_SIZE, BUILTIN_MAX_ENUM }; // Type for a list of shader source codes in the form of sources[shadertype] = code typedef std::map ShaderSources; /** * Creates a new Shader using a list of source codes. * Sources must contain either vertex or pixel shader code, or both. **/ Shader(const ShaderSources &sources); virtual ~Shader(); // Implements Volatile virtual bool loadVolatile(); virtual void unloadVolatile(); /** * Binds this Shader's program to be used when rendering. * * @param temporary True if we just want to send values to the shader with no intention of rendering. **/ void attach(bool temporary = false); /** * Detach the currently bound Shader. * Causes the GPU rendering pipeline to use fixed functionality in place of shader programs. **/ static void detach(); /** * Returns any warnings this Shader may have generated. **/ std::string getWarnings() const; /** * Send at least one integer or int-vector value to this Shader as a uniform. * * @param name The name of the uniform variable in the source code. * @param size Number of elements in each vector to send. * A value of 1 indicates a single-component vector (an int). * @param vec Pointer to the integer or int-vector values. * @param count Number of integer or int-vector values. **/ void sendInt(const std::string &name, int size, const GLint *vec, int count); /** * Send at least one float or vector value to this Shader as a uniform. * * @param name The name of the uniform variable in the source code. * @param size Number of elements in each vector to send. * A value of 1 indicates a single-component vector (a float). * @param vec Pointer to the float or float-vector values. * @param count Number of float or float-vector values. **/ void sendFloat(const std::string &name, int size, const GLfloat *vec, int count); /** * Send at least one matrix to this Shader as a uniform. * * @param name The name of the uniform variable in the source code. * @param size Number of rows/columns in the matrix. * @param m Pointer to the first element of the first matrix. * @param count Number of matrices to send. **/ void sendMatrix(const std::string &name, int size, const GLfloat *m, int count); /** * Send a texture to this Shader as a uniform. * * @param name The name of the uniform variable in the source code. **/ void sendTexture(const std::string &name, Texture *texture); /** * Internal use only. **/ bool hasVertexAttrib(OpenGL::VertexAttrib attrib) const; bool hasBuiltinExtern(BuiltinExtern builtin) const; bool sendBuiltinFloat(BuiltinExtern builtin, int size, const GLfloat *m, int count); void checkSetScreenParams(); const std::map &getBoundRetainables() const; static std::string getGLSLVersion(); static bool isSupported(); private: // Types of potential uniform variables used in love's shaders. enum UniformType { UNIFORM_FLOAT, UNIFORM_INT, UNIFORM_BOOL, UNIFORM_SAMPLER, UNIFORM_UNKNOWN }; // Represents a single uniform/extern shader variable. struct Uniform { GLint location; GLint count; GLenum type; UniformType baseType; std::string name; }; // Map active uniform names to their locations. void mapActiveUniforms(); const Uniform &getUniform(const std::string &name) const; int getUniformTypeSize(GLenum type) const; UniformType getUniformBaseType(GLenum type) const; void checkSetUniformError(const Uniform &u, int size, int count, UniformType sendtype) const; GLuint compileCode(ShaderType type, const std::string &code); void createProgram(const std::vector &shaderids); int getTextureUnit(const std::string &name); void retainObject(const std::string &name, Object *object); // Get any warnings or errors generated only by the shader program object. std::string getProgramWarnings() const; // List of all shader code attached to this Shader ShaderSources shaderSources; // Shader compiler warning strings for individual shader stages. std::map shaderWarnings; // volatile GLuint program; // Location values for any built-in uniform variables. GLint builtinUniforms[BUILTIN_MAX_ENUM]; // Location values for any generic vertex attribute variables. GLint vertexAttributes[OpenGL::ATTRIB_MAX_ENUM]; // Uniform location buffer map std::map uniforms; // Texture unit pool for setting images std::map texUnitPool; // texUnitPool[name] = textureunit std::vector activeTexUnits; // activeTexUnits[textureunit-1] = textureid // Uniform name to retainable objects std::map boundRetainables; // Pointer to the active Canvas when the screen params were last checked. Canvas *lastCanvas; OpenGL::Viewport lastViewport; // Max GPU texture units available for sent images static GLint maxTexUnits; // Counts total number of textures bound to each texture unit in all shaders static std::vector textureCounters; static StringMap::Entry typeNameEntries[]; static StringMap typeNames; // Names for the generic vertex attributes used by love. static StringMap::Entry attribNameEntries[]; static StringMap attribNames; // Names for the built-in uniform variables. static StringMap::Entry builtinNameEntries[]; static StringMap builtinNames; }; } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_SHADER_H love-0.9.1/src/modules/graphics/opengl/ParticleSystem.h0000644000000000000000000004063612316602166023144 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_PARTICLE_SYSTEM_H #define LOVE_GRAPHICS_OPENGL_PARTICLE_SYSTEM_H // LOVE #include "common/int.h" #include "common/math.h" #include "common/Vector.h" #include "graphics/Drawable.h" #include "graphics/Color.h" #include "Texture.h" // STL #include namespace love { namespace graphics { namespace opengl { /** * A class for creating, moving and drawing particles. * A big thanks to bobthebloke.org **/ class ParticleSystem : public Drawable { public: /** * Type of distribution new particles are drawn from: None, uniform, normal. */ enum AreaSpreadDistribution { DISTRIBUTION_NONE, DISTRIBUTION_UNIFORM, DISTRIBUTION_NORMAL, DISTRIBUTION_MAX_ENUM }; /** * Insertion modes of new particles in the list: top, bottom, random. */ enum InsertMode { INSERT_MODE_TOP, INSERT_MODE_BOTTOM, INSERT_MODE_RANDOM, INSERT_MODE_MAX_ENUM }; /** * Maximum numbers of particles in a ParticleSystem. * This limit comes from the fact that a quad requires four vertices and the * OpenGL API where GLsizei is a signed int. **/ static const uint32 MAX_PARTICLES = LOVE_INT32_MAX / 4; /** * Creates a particle system with the specified buffer size and texture. **/ ParticleSystem(Texture *texture, uint32 buffer); ParticleSystem(const ParticleSystem &p); /** * Deletes any allocated memory. **/ virtual ~ParticleSystem(); /** * Creates an identical copy of this ParticleSystem. The clone does not * duplicate any existing particles from this ParticleSystem, just the * settable parameters. **/ ParticleSystem *clone(); /** * Sets the texture used in the particle system. * @param texture The new texture. **/ void setTexture(Texture *texture); /** * Returns the texture used when drawing the particle system. **/ Texture *getTexture() const; /** * Clears the current buffer and allocates the appropriate amount of space for the buffer. * @param size The new buffer size. **/ void setBufferSize(uint32 size); /** * Returns the total amount of particles this ParticleSystem can have active * at any given point in time. **/ uint32 getBufferSize() const; /** * Sets the insert mode for new particles. * @param mode The new insert mode. */ void setInsertMode(InsertMode mode); /** * Returns the current insert mode. */ InsertMode getInsertMode() const; /** * Sets the emission rate. * @param rate The amount of particles per second. **/ void setEmissionRate(float rate); /** * Returns the number of particles created per second. **/ float getEmissionRate() const; /** * Sets the lifetime of the particle emitter (-1 means eternal) * @param life The lifetime (in seconds). **/ void setEmitterLifetime(float life); /** * Returns the lifetime of the particle emitter. **/ float getEmitterLifetime() const; /** * Sets the life range of the particles. * @param min The minimum life. * @param max The maximum life (if 0, then becomes the same as minimum life). **/ void setParticleLifetime(float min, float max = 0); /** * Gets the lifetime of a particle. * @param[out] min The minimum life. * @param[out] max The maximum life. **/ void getParticleLifetime(float *min, float *max) const; /** * Sets the position of the center of the emitter. * Used to move the emitter without changing the position of already existing particles. * @param x The x-coordinate. * @param y The y-coordinate. **/ void setPosition(float x, float y); /** * Returns the position of the emitter. **/ const love::Vector &getPosition() const; /** * Moves the position of the center of the emitter. * When update is called, newly spawned particles will appear in a line * between the old emitter position and where the emitter was moved to, * resulting in a smoother-feeling particle system if moveTo is called * repeatedly. **/ void moveTo(float x, float y); /** * Sets the emission area spread parameters and distribution type. The interpretation of * the parameters depends on the distribution type: * * * None: Parameters are ignored. No area spread. * * Uniform: Parameters denote maximal (symmetric) displacement from emitter position. * * Normal: Parameters denote the standard deviation in x and y direction. x and y are assumed to be uncorrelated. * @param x First parameter. Interpretation depends on distribution type. * @param y Second parameter. Interpretation depends on distribution type. * @param distribution Distribution type **/ void setAreaSpread(AreaSpreadDistribution distribution, float x, float y); /** * Returns area spread distribution type. **/ AreaSpreadDistribution getAreaSpreadDistribution() const; /** * Returns area spread parameters. **/ const love::Vector &getAreaSpreadParameters() const; /** * Sets the direction of the particle emitter. * @param direction The direction (in degrees). **/ void setDirection(float direction); /** * Returns the direction of the particle emitter (in radians). **/ float getDirection() const; /** * Sets the spread of the particle emitter. * @param spread The spread (in radians). **/ void setSpread(float spread); /** * Returns the directional spread of the emitter (in radians). **/ float getSpread() const; /** * Sets the speed of the particles. * @param speed The speed. **/ void setSpeed(float speed); /** * Sets the speed of the particles. * @param min The minimum speed. * @param max The maximum speed. **/ void setSpeed(float min, float max); /** * Gets the speed of the particles. * @param[out] min The minimum speed. * @param[out] max The maximum speed. **/ void getSpeed(float *min, float *max) const; /** * Sets the linear acceleration (the acceleration along the x and y axes). * @param x The acceleration along the x-axis. * @param y The acceleration along the y-axis. **/ void setLinearAcceleration(float x, float y); /** * Sets the linear acceleration (the acceleration along the x and y axes). * @param xmin The minimum amount of acceleration along the x-axis. * @param ymin The minimum amount of acceleration along the y-axis. * @param xmax The maximum amount of acceleration along the x-axis. * @param ymax The maximum amount of acceleration along the y-axis. **/ void setLinearAcceleration(float xmin, float ymin, float xmax, float ymax); /** * Gets the linear acceleration of the particles. * @param[out] min The minimum acceleration. * @param[out] max The maximum acceleration. **/ void getLinearAcceleration(love::Vector *min, love::Vector *max) const; /** * Sets the radial acceleration (the acceleration towards the particle emitter). * @param acceleration The amount of acceleration. **/ void setRadialAcceleration(float acceleration); /** * Sets the radial acceleration (the acceleration towards the particle emitter). * @param min The minimum acceleration. * @param max The maximum acceleration. **/ void setRadialAcceleration(float min, float max); /** * Gets the radial acceleration. * @param[out] min The minimum amount of radial acceleration. * @param[out] max The maximum amount of radial acceleration. **/ void getRadialAcceleration(float *min, float *max) const; /** * Sets the tangential acceleration (the acceleration perpendicular to the particle's direction). * @param acceleration The amount of acceleration. **/ void setTangentialAcceleration(float acceleration); /** * Sets the tangential acceleration (the acceleration perpendicular to the particle's direction). * @param min The minimum acceleration. * @param max The maximum acceleration. **/ void setTangentialAcceleration(float min, float max); /** * Gets the tangential acceleration. * @param[out] min The minimum tangential acceleration. * @param[out] max The maximum tangential acceleration. **/ void getTangentialAcceleration(float *min, float *max) const; /** * Sets the size of the sprite (1.0 being the default size). * @param size The size of the sprite. **/ void setSize(float size); /** * Sets the sizes of the sprite upon creation and upon death (1.0 being the default size). * @param newSizes Array of sizes **/ void setSizes(const std::vector &newSizes); /** * Returns the sizes of the particle sprites. **/ const std::vector &getSizes() const; /** * Sets the amount of variation to the sprite's beginning size (0 being no variation and 1.0 a random size between start and end). * @param variation The amount of variation. **/ void setSizeVariation(float variation); /** * Returns the amount of initial size variation between particles. **/ float getSizeVariation() const; /** * Sets the amount of rotation a sprite starts out with. * @param rotation The amount of rotation. **/ void setRotation(float rotation); /** * Sets the amount of rotation a sprite starts out with (a random value between min and max). * @param min The minimum amount of rotation. * @param max The maximum amount of rotation. **/ void setRotation(float min, float max); /** * Gets the initial amount of rotation of a particle, in radians. * @param[out] min The minimum initial rotation. * @param[out] max The maximum initial rotation. **/ void getRotation(float *min, float *max) const; /** * Sets the spin of the sprite. * @param spin The spin of the sprite (in degrees). **/ void setSpin(float spin); /** * Sets the spin of the sprite upon particle creation and death. * @param start The spin of the sprite upon creation (in radians / second). * @param end The spin of the sprite upon death (in radians / second). **/ void setSpin(float start, float end); /** * Gets the amount of spin of a particle during its lifetime. * @param[out] start The initial spin, in radians / s. * @param[out] end The final spin, in radians / s. **/ void getSpin(float *start, float *end) const; /** * Sets the variation of the start spin (0 being no variation and 1 being a random spin between start and end). * @param variation The variation. **/ void setSpinVariation(float variation); /** * Returns the amount of variation of the start spin of a particle. **/ float getSpinVariation() const; /** * Sets the particles' offsets for rotation. * @param x The x offset. * @param y The y offset. **/ void setOffset(float x, float y); /** * Returns of the particle offset. **/ love::Vector getOffset() const; /** * Sets the color of the particles. * @param color The color. **/ void setColor(const Color &color); /** * Sets the color of the particles. * @param newColors Array of colors **/ void setColor(const std::vector &newColors); /** * Returns the color of the particles. **/ std::vector getColor() const; /** * sets whether particle angles & rotations are relative to their velocities. **/ void setRelativeRotation(bool enable); bool hasRelativeRotation() const; /** * Returns the amount of particles that are currently active in the system. **/ uint32 getCount() const; /** * Starts/resumes the particle emitter. **/ void start(); /** * Stops the particle emitter and resets. **/ void stop(); /** * Pauses the particle emitter. **/ void pause(); /** * Resets the particle emitter. **/ void reset(); /** * Instantly emits a number of particles. * @param num The number of particles to emit. **/ void emit(uint32 num); /** * Returns whether the particle emitter is active. **/ bool isActive() const; /** * Returns whether the particle emitter is paused. **/ bool isPaused() const; bool isStopped() const; /** * Returns whether the particle system is empty of particles or not. **/ bool isEmpty() const; /** * Returns whether the amount of particles has reached the buffer limit or not. **/ bool isFull() const; /** * Draws the particle emitter at the specified position. * @param x The x-coordinate. * @param y The y-coordinate. **/ virtual void draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky); /** * Updates the particle system. * @param dt Time since last update. **/ void update(float dt); static bool getConstant(const char *in, AreaSpreadDistribution &out); static bool getConstant(AreaSpreadDistribution in, const char *&out); static bool getConstant(const char *in, InsertMode &out); static bool getConstant(InsertMode in, const char *&out); protected: // Represents a single particle. struct Particle { Particle *prev; Particle *next; float lifetime; float life; float position[2]; float direction; // Particles gravitate towards this point. love::Vector origin; love::Vector speed; love::Vector linearAcceleration; float radialAcceleration; float tangentialAcceleration; float size; float sizeOffset; float sizeIntervalSize; float rotation; // Amount of rotation applied to the final angle. float angle; float spinStart; float spinEnd; Colorf color; }; // Pointer to the beginning of the allocated memory. Particle *pMem; // Pointer to a free particle. Particle *pFree; // Pointer to the start of the linked list. Particle *pHead; // Pointer to the end of the linked list. Particle *pTail; // array of transformed vertex data for all particles, for drawing Vertex *particleVerts; // The texture to be drawn. Texture *texture; // Whether the particle emitter is active. bool active; // Insert mode of new particles. InsertMode insertMode; // The maximum number of particles. uint32 maxParticles; // The number of active particles. uint32 activeParticles; // The emission rate (particles/sec). float emissionRate; // Used to determine when a particle should be emitted. float emitCounter; // The relative position of the particle emitter. love::Vector position; love::Vector prevPosition; // Emission area spread. AreaSpreadDistribution areaSpreadDistribution; love::Vector areaSpread; // The lifetime of the particle emitter (-1 means infinite) and the life it has left. float lifetime; float life; // The particle life. float particleLifeMin; float particleLifeMax; // The direction (and spread) the particles will be emitted in. Measured in radians. float direction; float spread; // The speed. float speedMin; float speedMax; // Acceleration along the x and y axes. love::Vector linearAccelerationMin; love::Vector linearAccelerationMax; // Acceleration towards the emitter's center float radialAccelerationMin; float radialAccelerationMax; // Acceleration perpendicular to the particle's direction. float tangentialAccelerationMin; float tangentialAccelerationMax; // Size. std::vector sizes; float sizeVariation; // Rotation float rotationMin; float rotationMax; // Spin. float spinStart; float spinEnd; float spinVariation; // Offsets float offsetX; float offsetY; // Color. std::vector colors; bool relativeRotation; void createBuffers(size_t size); void deleteBuffers(); void addParticle(float t); Particle *removeParticle(Particle *p); // Called by addParticle. void initParticle(Particle *p, float t); void insertTop(Particle *p); void insertBottom(Particle *p); void insertRandom(Particle *p); static StringMap::Entry distributionsEntries[]; static StringMap distributions; static StringMap::Entry insertModesEntries[]; static StringMap insertModes; }; } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_PARTICLE_SYSTEM_H love-0.9.1/src/modules/graphics/opengl/Mesh.h0000644000000000000000000001237712316602166021071 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_MESH_H #define LOVE_GRAPHICS_OPENGL_MESH_H // LOVE #include "common/config.h" #include "common/int.h" #include "common/math.h" #include "common/StringMap.h" #include "graphics/Drawable.h" #include "Texture.h" #include "VertexBuffer.h" // C++ #include namespace love { namespace graphics { namespace opengl { /** * Holds and draws arbitrary vertex geometry. * Each vertex in the Mesh has a position, texture coordinate, and color. **/ class Mesh : public Drawable { public: // How the Mesh's vertices are used when drawing. // http://escience.anu.edu.au/lecture/cg/surfaceModeling/image/surfaceModeling015.png enum DrawMode { DRAW_MODE_FAN, DRAW_MODE_STRIP, DRAW_MODE_TRIANGLES, DRAW_MODE_POINTS, DRAW_MODE_MAX_ENUM }; /** * Constructor. * @param verts The vertices to use in the Mesh. * @param mode The draw mode to use when drawing the Mesh. **/ Mesh(const std::vector &verts, DrawMode mode = DRAW_MODE_FAN); /** * Constructor. * Creates a Mesh with a certain number of default-initialized (hidden) * vertices. * @param vertexcount The number of vertices to use in the Mesh. * @param mode The draw mode to use when drawing the Mesh. **/ Mesh(int vertexcount, DrawMode mode = DRAW_MODE_FAN); virtual ~Mesh(); /** * Replaces all the vertices in the Mesh with a new set of vertices. **/ void setVertices(const std::vector &verts); /** * Gets all of the vertices in the Mesh as an array. **/ const Vertex *getVertices() const; /** * Sets an individual vertex in the Mesh. * @param index The index into the list of vertices to use. * @param v The new vertex. **/ void setVertex(size_t index, const Vertex &v); Vertex getVertex(size_t index) const; /** * Gets the total number of vertices in the Mesh. **/ size_t getVertexCount() const; /** * Sets the vertex map to use when drawing the Mesh. The vertex map * determines the order in which vertices are used by the draw mode. * A 0-element vector is equivalent to the default vertex map: * {0, 1, 2, 3, 4, ...} **/ void setVertexMap(const std::vector &map); /** * Fills the uint32 vector passed into the method with the previously set * vertex map (index buffer) values. **/ void getVertexMap(std::vector &map) const; /** * Gets the total number of elements in the vertex map array. **/ size_t getVertexMapCount() const; /** * Sets the number of instances of this Mesh to draw (uses hardware * instancing when possible.) * A custom vertex shader is necessary in order to introduce differences * in each instance. **/ void setInstanceCount(int count); int getInstanceCount() const; /** * Sets the texture used when drawing the Mesh. **/ void setTexture(Texture *texture); /** * Disables any texture from being used when drawing the Mesh. **/ void setTexture(); /** * Gets the texture used when drawing the Mesh. May return null if no * texture is set. **/ Texture *getTexture() const; /** * Sets the draw mode used when drawing the Mesh. **/ void setDrawMode(DrawMode mode); DrawMode getDrawMode() const; void setDrawRange(int min, int max); void setDrawRange(); void getDrawRange(int &min, int &max) const; /** * Sets whether per-vertex colors are enabled. If this is disabled, the * global color (love.graphics.setColor) will be used for the entire Mesh. **/ void setVertexColors(bool enable); bool hasVertexColors() const; // Implements Drawable. void draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky); static bool getConstant(const char *in, DrawMode &out); static bool getConstant(DrawMode in, const char *&out); private: GLenum getGLDrawMode(DrawMode mode) const; GLenum getGLDataTypeFromMax(size_t maxvalue) const; // Vertex buffer. VertexBuffer *vbo; size_t vertex_count; // Element (vertex index) buffer, for the vertex map. VertexBuffer *ibo; size_t element_count; GLenum element_data_type; int instance_count; DrawMode draw_mode; int range_min; int range_max; Texture *texture; // Whether the per-vertex colors are used when drawing. bool colors_enabled; static StringMap::Entry drawModeEntries[]; static StringMap drawModes; }; // Mesh } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_MESH_H love-0.9.1/src/modules/graphics/opengl/wrap_Graphics.cpp0000644000000000000000000010407412316602166023315 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Graphics.h" #include "OpenGL.h" #include "graphics/Texture.h" #include "image/ImageData.h" #include "font/Rasterizer.h" #include "scripts/graphics.lua.h" #include namespace love { namespace graphics { namespace opengl { static Graphics *instance = nullptr; int w_reset(lua_State *) { instance->reset(); return 0; } int w_clear(lua_State *) { instance->clear(); return 0; } int w_present(lua_State *) { instance->present(); return 0; } int w_isCreated(lua_State *L) { luax_pushboolean(L, instance->isCreated()); return 1; } int w_getWidth(lua_State *L) { lua_pushinteger(L, instance->getWidth()); return 1; } int w_getHeight(lua_State *L) { lua_pushinteger(L, instance->getHeight()); return 1; } int w_getDimensions(lua_State *L) { lua_pushinteger(L, instance->getWidth()); lua_pushinteger(L, instance->getHeight()); return 2; } int w_setScissor(lua_State *L) { int nargs = lua_gettop(L); if (nargs == 0 || (nargs == 4 && lua_isnil(L, 1) && lua_isnil(L, 2) && lua_isnil(L, 3) && lua_isnil(L, 4))) { instance->setScissor(); return 0; } int x = luaL_checkint(L, 1); int y = luaL_checkint(L, 2); int w = luaL_checkint(L, 3); int h = luaL_checkint(L, 4); if (w < 0 || h < 0) return luaL_error(L, "Can't set scissor with negative width and/or height."); instance->setScissor(x, y, w, h); return 0; } int w_getScissor(lua_State *L) { int x, y, w, h; if (!instance->getScissor(x, y, w, h)) return 0; lua_pushinteger(L, x); lua_pushinteger(L, y); lua_pushinteger(L, w); lua_pushinteger(L, h); return 4; } static int setStencil(lua_State *L, bool invert) { // no argument -> clear stencil if (lua_isnoneornil(L, 1)) { instance->discardStencil(); return 0; } luaL_checktype(L, 1, LUA_TFUNCTION); instance->defineStencil(); lua_call(L, lua_gettop(L) - 1, 0); // call stencil(...) instance->useStencil(invert); return 0; } int w_setStencil(lua_State *L) { return setStencil(L, false); } int w_setInvertedStencil(lua_State *L) { return setStencil(L, true); } int w_getMaxTextureSize(lua_State *L) { lua_pushinteger(L, instance->getSystemLimit(Graphics::LIMIT_TEXTURE_SIZE)); return 1; } int w_newImage(lua_State *L) { love::image::ImageData *data = nullptr; love::image::CompressedData *cdata = nullptr; Texture::Format format = Texture::FORMAT_NORMAL; const char *fstr = lua_isnoneornil(L, 2) ? nullptr : luaL_checkstring(L, 2); if (fstr != nullptr && !Texture::getConstant(fstr, format)) return luaL_error(L, "Invalid texture format: %s", fstr); if (format == Texture::FORMAT_HDR) // For now... return luaL_error(L, "HDR images are not supported."); // Convert to FileData, if necessary. if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T)) luax_convobj(L, 1, "filesystem", "newFileData"); // Convert to ImageData/CompressedData, if necessary. if (luax_istype(L, 1, FILESYSTEM_FILE_DATA_T)) { // Determine whether to convert to ImageData or CompressedData. luax_getfunction(L, "image", "isCompressed"); lua_pushvalue(L, 1); lua_call(L, 1, 1); bool compressed = luax_toboolean(L, -1); lua_pop(L, 1); if (compressed) luax_convobj(L, 1, "image", "newCompressedData"); else luax_convobj(L, 1, "image", "newImageData"); } if (luax_istype(L, 1, IMAGE_COMPRESSED_DATA_T)) cdata = luax_checktype(L, 1, "CompressedData", IMAGE_COMPRESSED_DATA_T); else data = luax_checktype(L, 1, "ImageData", IMAGE_IMAGE_DATA_T); if (!data && !cdata) return luaL_error(L, "Error creating image."); // Create the image. Image *image = nullptr; EXCEPT_GUARD( if (cdata) image = instance->newImage(cdata, format); else if (data) image = instance->newImage(data, format); ) if (image == nullptr) return luaL_error(L, "Could not load image."); // Push the type. luax_pushtype(L, "Image", GRAPHICS_IMAGE_T, image); return 1; } int w_newQuad(lua_State *L) { Quad::Viewport v; v.x = (float) luaL_checknumber(L, 1); v.y = (float) luaL_checknumber(L, 2); v.w = (float) luaL_checknumber(L, 3); v.h = (float) luaL_checknumber(L, 4); float sw = (float) luaL_checknumber(L, 5); float sh = (float) luaL_checknumber(L, 6); Quad *quad = instance->newQuad(v, sw, sh); luax_pushtype(L, "Quad", GRAPHICS_QUAD_T, quad); return 1; } int w_newFont(lua_State *L) { // Convert to FileData, if necessary. if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T)) luax_convobj(L, 1, "filesystem", "newFileData"); // Convert to Rasterizer, if necessary. if (luax_istype(L, 1, FILESYSTEM_FILE_DATA_T)) { int idxs[] = {1, 2}; luax_convobj(L, idxs, 2, "font", "newRasterizer"); } love::font::Rasterizer *rasterizer = luax_checktype(L, 1, "Rasterizer", FONT_RASTERIZER_T); Font *font = 0; EXCEPT_GUARD(font = instance->newFont(rasterizer, instance->getDefaultFilter());) if (font == 0) return luaL_error(L, "Could not load font."); // Push the type. luax_pushtype(L, "Font", GRAPHICS_FONT_T, font); return 1; } int w_newImageFont(lua_State *L) { // filter for glyphs Texture::Filter filter = instance->getDefaultFilter(); // Convert to ImageData if necessary. if (lua_isstring(L, 1) || luax_istype(L, 1, FILESYSTEM_FILE_T) || luax_istype(L, 1, FILESYSTEM_FILE_DATA_T)) luax_convobj(L, 1, "image", "newImageData"); else if (luax_istype(L, 1, GRAPHICS_IMAGE_T)) { Image *i = luax_checktype(L, 1, "Image", GRAPHICS_IMAGE_T); filter = i->getFilter(); love::image::ImageData *id = i->getImageData(); if (!id) return luaL_argerror(L, 1, "Image cannot be compressed."); luax_pushtype(L, "ImageData", IMAGE_IMAGE_DATA_T, id, false); lua_replace(L, 1); } // Convert to Rasterizer if necessary. if (luax_istype(L, 1, IMAGE_IMAGE_DATA_T)) { luaL_checkstring(L, 2); int idxs[] = {1, 2}; luax_convobj(L, idxs, 2, "font", "newRasterizer"); } love::font::Rasterizer *rasterizer = luax_checktype(L, 1, "Rasterizer", FONT_RASTERIZER_T); // Create the font. Font *font = instance->newFont(rasterizer, filter); if (font == 0) return luaL_error(L, "Could not load font."); // Push the type. luax_pushtype(L, "Font", GRAPHICS_FONT_T, font); return 1; } int w_newSpriteBatch(lua_State *L) { Texture *texture = luax_checktexture(L, 1); int size = luaL_optint(L, 2, 1000); SpriteBatch::UsageHint usage = SpriteBatch::USAGE_DYNAMIC; if (lua_gettop(L) > 2) { const char *usagestr = luaL_checkstring(L, 3); if (!SpriteBatch::getConstant(usagestr, usage)) return luaL_error(L, "Invalid SpriteBatch usage hint: %s", usagestr); } SpriteBatch *t = nullptr; EXCEPT_GUARD(t = instance->newSpriteBatch(texture, size, usage);) luax_pushtype(L, "SpriteBatch", GRAPHICS_SPRITE_BATCH_T, t); return 1; } int w_newParticleSystem(lua_State *L) { Texture *texture = luax_checktexture(L, 1); lua_Number size = luaL_optnumber(L, 2, 1000); ParticleSystem *t = 0; if (size < 1.0 || size > ParticleSystem::MAX_PARTICLES) return luaL_error(L, "Invalid ParticleSystem size"); EXCEPT_GUARD(t = instance->newParticleSystem(texture, int(size));) luax_pushtype(L, "ParticleSystem", GRAPHICS_PARTICLE_SYSTEM_T, t); return 1; } int w_newCanvas(lua_State *L) { // check if width and height are given. else default to screen dimensions. int width = luaL_optint(L, 1, instance->getWidth()); int height = luaL_optint(L, 2, instance->getHeight()); const char *str = luaL_optstring(L, 3, "normal"); int fsaa = luaL_optint(L, 4, 0); Texture::Format format; if (!Texture::getConstant(str, format)) return luaL_error(L, "Invalid texture format: %s", str); Canvas *canvas = nullptr; EXCEPT_GUARD(canvas = instance->newCanvas(width, height, format, fsaa);) if (canvas == nullptr) return luaL_error(L, "Canvas not created, but no error thrown. I don't even..."); luax_pushtype(L, "Canvas", GRAPHICS_CANVAS_T, canvas); return 1; } int w_newShader(lua_State *L) { if (!Shader::isSupported()) return luaL_error(L, "Sorry, your graphics card does not support shaders."); // clamp stack to 2 elements lua_settop(L, 2); // read any filepath arguments for (int i = 1; i <= 2; i++) { if (!lua_isstring(L, i)) continue; // call love.filesystem.isFile(arg_i) luax_getfunction(L, "filesystem", "isFile"); lua_pushvalue(L, i); lua_call(L, 1, 1); bool isFile = luax_toboolean(L, -1); lua_pop(L, 1); if (isFile) { luax_getfunction(L, "filesystem", "read"); lua_pushvalue(L, i); lua_call(L, 1, 1); lua_replace(L, i); } } bool has_arg1 = lua_isstring(L, 1); bool has_arg2 = lua_isstring(L, 2); // require at least one string argument if (!(has_arg1 || has_arg2)) luaL_checkstring(L, 1); luax_getfunction(L, "graphics", "_shaderCodeToGLSL"); // push vertexcode and pixelcode strings to the top of the stack lua_pushvalue(L, 1); lua_pushvalue(L, 2); // call effectCodeToGLSL, returned values will be at the top of the stack if (lua_pcall(L, 2, 2, 0) != 0) return luaL_error(L, "%s", lua_tostring(L, -1)); Shader::ShaderSources sources; // vertex shader code if (lua_isstring(L, -2)) { std::string vertexcode(luaL_checkstring(L, -2)); sources[Shader::TYPE_VERTEX] = vertexcode; } else if (has_arg1 && has_arg2) return luaL_error(L, "Could not parse vertex shader code (missing 'position' function?)"); // pixel shader code if (lua_isstring(L, -1)) { std::string pixelcode(luaL_checkstring(L, -1)); sources[Shader::TYPE_PIXEL] = pixelcode; } else if (has_arg1 && has_arg2) return luaL_error(L, "Could not parse pixel shader code (missing 'effect' function?)"); if (sources.empty()) { // Original args had source code, but effectCodeToGLSL couldn't translate it for (int i = 1; i <= 2; i++) { if (lua_isstring(L, i)) return luaL_argerror(L, i, "missing 'position' or 'effect' function?"); } } bool should_error = false; try { Shader *shader = instance->newShader(sources); luax_pushtype(L, "Shader", GRAPHICS_SHADER_T, shader); } catch (love::Exception &e) { luax_getfunction(L, "graphics", "_transformGLSLErrorMessages"); lua_pushstring(L, e.what()); // Function pushes the new error string onto the stack. lua_pcall(L, 1, 1, 0); should_error = true; } if (should_error) return lua_error(L); return 1; } int w_newMesh(lua_State *L) { // Check first argument: table of vertices or number of vertices. int ttype = lua_type(L, 1); if (ttype != LUA_TTABLE && ttype != LUA_TNUMBER) luaL_argerror(L, 1, "table or number expected"); // Second argument: optional texture. Texture *tex = nullptr; if (!lua_isnoneornil(L, 2)) tex = luax_checktexture(L, 2); // Third argument: optional draw mode. const char *str = 0; Mesh::DrawMode mode = Mesh::DRAW_MODE_FAN; str = lua_isnoneornil(L, 3) ? 0 : luaL_checkstring(L, 3); if (str && !Mesh::getConstant(str, mode)) return luaL_error(L, "Invalid mesh draw mode: %s", str); Mesh *t = nullptr; if (ttype == LUA_TTABLE) { size_t vertex_count = lua_objlen(L, 1); std::vector vertices; vertices.reserve(vertex_count); bool use_colors = false; // Get the vertices from the table. for (size_t i = 1; i <= vertex_count; i++) { lua_rawgeti(L, 1, i); if (lua_type(L, -1) != LUA_TTABLE) return luax_typerror(L, 1, "table of tables"); for (int j = 1; j <= 8; j++) lua_rawgeti(L, -j, j); Vertex v; v.x = (float) luaL_checknumber(L, -8); v.y = (float) luaL_checknumber(L, -7); v.s = (float) luaL_optnumber(L, -6, 0.0); v.t = (float) luaL_optnumber(L, -5, 0.0); v.r = (unsigned char) luaL_optinteger(L, -4, 255); v.g = (unsigned char) luaL_optinteger(L, -3, 255); v.b = (unsigned char) luaL_optinteger(L, -2, 255); v.a = (unsigned char) luaL_optinteger(L, -1, 255); // Enable per-vertex coloring if any color is not the default. if (!use_colors && (v.r != 255 || v.g != 255 || v.b != 255 || v.a != 255)) use_colors = true; lua_pop(L, 9); vertices.push_back(v); } EXCEPT_GUARD(t = instance->newMesh(vertices, mode);) t->setVertexColors(use_colors); } else { int count = luaL_checkint(L, 1); EXCEPT_GUARD(t = instance->newMesh(count, mode);) } if (tex) t->setTexture(tex); luax_pushtype(L, "Mesh", GRAPHICS_MESH_T, t); return 1; } int w_setColor(lua_State *L) { Color c; if (lua_istable(L, 1)) { for (int i = 1; i <= 4; i++) lua_rawgeti(L, 1, i); c.r = (unsigned char)luaL_checkint(L, -4); c.g = (unsigned char)luaL_checkint(L, -3); c.b = (unsigned char)luaL_checkint(L, -2); c.a = (unsigned char)luaL_optint(L, -1, 255); lua_pop(L, 4); } else { c.r = (unsigned char)luaL_checkint(L, 1); c.g = (unsigned char)luaL_checkint(L, 2); c.b = (unsigned char)luaL_checkint(L, 3); c.a = (unsigned char)luaL_optint(L, 4, 255); } instance->setColor(c); return 0; } int w_getColor(lua_State *L) { Color c = instance->getColor(); lua_pushinteger(L, c.r); lua_pushinteger(L, c.g); lua_pushinteger(L, c.b); lua_pushinteger(L, c.a); return 4; } int w_setBackgroundColor(lua_State *L) { Color c; if (lua_istable(L, 1)) { for (int i = 1; i <= 4; i++) lua_rawgeti(L, 1, i); c.r = (unsigned char)luaL_checkint(L, -4); c.g = (unsigned char)luaL_checkint(L, -3); c.b = (unsigned char)luaL_checkint(L, -2); c.a = (unsigned char)luaL_optint(L, -1, 255); lua_pop(L, 4); } else { c.r = (unsigned char)luaL_checkint(L, 1); c.g = (unsigned char)luaL_checkint(L, 2); c.b = (unsigned char)luaL_checkint(L, 3); c.a = (unsigned char)luaL_optint(L, 4, 255); } instance->setBackgroundColor(c); return 0; } int w_getBackgroundColor(lua_State *L) { Color c = instance->getBackgroundColor(); lua_pushinteger(L, c.r); lua_pushinteger(L, c.g); lua_pushinteger(L, c.b); lua_pushinteger(L, c.a); return 4; } int w_setFont(lua_State *L) { Font *font = luax_checktype(L, 1, "Font", GRAPHICS_FONT_T); instance->setFont(font); return 0; } int w_getFont(lua_State *L) { Font *f = instance->getFont(); if (f == 0) return 0; f->retain(); luax_pushtype(L, "Font", GRAPHICS_FONT_T, f); return 1; } int w_setColorMask(lua_State *L) { bool mask[4]; if (lua_gettop(L) <= 1 && lua_isnoneornil(L, 1)) { // Enable all color components if no argument is given. mask[0] = mask[1] = mask[2] = mask[3] = true; } else { for (int i = 0; i < 4; i++) mask[i] = luax_toboolean(L, i + 1); } // r, g, b, a instance->setColorMask(mask[0], mask[1], mask[2], mask[3]); return 0; } int w_getColorMask(lua_State *L) { const bool *mask = instance->getColorMask(); for (int i = 0; i < 4; i++) luax_pushboolean(L, mask[i]); return 4; } int w_setBlendMode(lua_State *L) { Graphics::BlendMode mode; const char *str = luaL_checkstring(L, 1); if (!Graphics::getConstant(str, mode)) return luaL_error(L, "Invalid blend mode: %s", str); EXCEPT_GUARD(instance->setBlendMode(mode);) return 0; } int w_getBlendMode(lua_State *L) { const char *str; Graphics::BlendMode mode; EXCEPT_GUARD(mode = instance->getBlendMode();) if (!Graphics::getConstant(mode, str)) return luaL_error(L, "Unknown blend mode"); lua_pushstring(L, str); return 1; } int w_setDefaultFilter(lua_State *L) { Texture::FilterMode min; Texture::FilterMode mag; const char *minstr = luaL_checkstring(L, 1); const char *magstr = luaL_optstring(L, 2, minstr); if (!Texture::getConstant(minstr, min)) return luaL_error(L, "Invalid filter mode: %s", minstr); if (!Texture::getConstant(magstr, mag)) return luaL_error(L, "Invalid filter mode: %s", magstr); float anisotropy = (float) luaL_optnumber(L, 3, 1.0); Texture::Filter f; f.min = min; f.mag = mag; f.anisotropy = anisotropy; instance->setDefaultFilter(f); return 0; } int w_getDefaultFilter(lua_State *L) { const Texture::Filter &f = instance->getDefaultFilter(); const char *minstr; const char *magstr; if (!Texture::getConstant(f.min, minstr)) return luaL_error(L, "Unknown minification filter mode"); if (!Texture::getConstant(f.mag, magstr)) return luaL_error(L, "Unknown magnification filter mode"); lua_pushstring(L, minstr); lua_pushstring(L, magstr); lua_pushnumber(L, f.anisotropy); return 3; } int w_setDefaultMipmapFilter(lua_State *L) { Texture::FilterMode filter = Texture::FILTER_NONE; if (!lua_isnoneornil(L, 1)) { const char *str = luaL_checkstring(L, 1); if (!Texture::getConstant(str, filter)) return luaL_error(L, "Invalid filter mode: %s", str); } float sharpness = (float) luaL_optnumber(L, 2, 0); instance->setDefaultMipmapFilter(filter, sharpness); return 0; } int w_getDefaultMipmapFilter(lua_State *L) { Texture::FilterMode filter; float sharpness; instance->getDefaultMipmapFilter(&filter, &sharpness); const char *str; if (Texture::getConstant(filter, str)) lua_pushstring(L, str); else lua_pushnil(L); lua_pushnumber(L, sharpness); return 2; } int w_setLineWidth(lua_State *L) { float width = (float)luaL_checknumber(L, 1); instance->setLineWidth(width); return 0; } int w_setLineStyle(lua_State *L) { Graphics::LineStyle style; const char *str = luaL_checkstring(L, 1); if (!Graphics::getConstant(str, style)) return luaL_error(L, "Invalid line style: %s", str); instance->setLineStyle(style); return 0; } int w_setLineJoin(lua_State *L) { Graphics::LineJoin join; const char *str = luaL_checkstring(L, 1); if (!Graphics::getConstant(str, join)) return luaL_error(L, "Invalid line join mode: %s", str); instance->setLineJoin(join); return 0; } int w_getLineWidth(lua_State *L) { lua_pushnumber(L, instance->getLineWidth()); return 1; } int w_getLineStyle(lua_State *L) { Graphics::LineStyle style = instance->getLineStyle(); const char *str; if (!Graphics::getConstant(style, str)) return luaL_error(L, "Unknown line style"); lua_pushstring(L, str); return 1; } int w_getLineJoin(lua_State *L) { Graphics::LineJoin join = instance->getLineJoin(); const char *str; if (!Graphics::getConstant(join, str)) return luaL_error(L, "Unknown line join"); lua_pushstring(L, str); return 1; } int w_setPointSize(lua_State *L) { float size = (float)luaL_checknumber(L, 1); instance->setPointSize(size); return 0; } int w_setPointStyle(lua_State *L) { Graphics::PointStyle style; const char *str = luaL_checkstring(L, 1); if (!Graphics::getConstant(str, style)) return luaL_error(L, "Invalid point style: %s", str); instance->setPointStyle(style); return 0; } int w_getPointSize(lua_State *L) { lua_pushnumber(L, instance->getPointSize()); return 1; } int w_getPointStyle(lua_State *L) { Graphics::PointStyle style = instance->getPointStyle(); const char *str; if (!Graphics::getConstant(style, str)) return luaL_error(L, "Unknown point style"); lua_pushstring(L, str); return 1; } int w_getMaxPointSize(lua_State *L) { lua_pushnumber(L, instance->getSystemLimit(Graphics::LIMIT_POINT_SIZE)); return 1; } int w_setWireframe(lua_State *L) { instance->setWireframe(luax_toboolean(L, 1)); return 0; } int w_isWireframe(lua_State *L) { luax_pushboolean(L, instance->isWireframe()); return 1; } int w_newScreenshot(lua_State *L) { love::image::Image *image = luax_getmodule(L, "image", MODULE_IMAGE_T); bool copyAlpha = luax_optboolean(L, 1, false); love::image::ImageData *i = 0; EXCEPT_GUARD(i = instance->newScreenshot(image, copyAlpha);) luax_pushtype(L, "ImageData", IMAGE_IMAGE_DATA_T, i); return 1; } int w_setCanvas(lua_State *L) { // discard stencil testing instance->discardStencil(); // called with none -> reset to default buffer if (lua_isnoneornil(L,1)) { Canvas::bindDefaultCanvas(); return 0; } bool is_table = lua_istable(L, 1); std::vector attachments; Canvas *canvas = 0; if (is_table) { // grab the first canvas in the array and attach the rest lua_rawgeti(L, 1, 1); canvas = luax_checkcanvas(L, -1); lua_pop(L, 1); for (size_t i = 2; i <= lua_objlen(L, 1); i++) { lua_rawgeti(L, 1, i); attachments.push_back(luax_checkcanvas(L, -1)); lua_pop(L, 1); } } else { canvas = luax_checkcanvas(L, 1); for (int i = 2; i <= lua_gettop(L); i++) attachments.push_back(luax_checkcanvas(L, i)); } EXCEPT_GUARD( if (attachments.size() > 0) canvas->startGrab(attachments); else canvas->startGrab(); ) return 0; } int w_getCanvas(lua_State *L) { Canvas *canvas = Canvas::current; int n = 1; if (canvas) { canvas->retain(); luax_pushtype(L, "Canvas", GRAPHICS_CANVAS_T, canvas); const std::vector &attachments = canvas->getAttachedCanvases(); for (size_t i = 0; i < attachments.size(); i++) { attachments[i]->retain(); luax_pushtype(L, "Canvas", GRAPHICS_CANVAS_T, attachments[i]); n++; } } else lua_pushnil(L); return n; } int w_setShader(lua_State *L) { if (lua_isnoneornil(L,1)) { Shader::detach(); return 0; } Shader *shader = luax_checkshader(L, 1); shader->attach(); return 0; } int w_getShader(lua_State *L) { Shader *shader = Shader::current; if (shader) { shader->retain(); luax_pushtype(L, "Shader", GRAPHICS_SHADER_T, shader); } else lua_pushnil(L); return 1; } int w_isSupported(lua_State *L) { bool supported = true; size_t len = lua_gettop(L); Graphics::Support support; for (unsigned int i = 1; i <= len; i++) { const char *str = luaL_checkstring(L, i); if (!Graphics::getConstant(str, support)) return luaL_error(L, "Invalid graphics feature: %s", str); switch (support) { case Graphics::SUPPORT_CANVAS: if (!Canvas::isSupported()) supported = false; break; case Graphics::SUPPORT_HDR_CANVAS: if (!Canvas::isHDRSupported()) supported = false; break; case Graphics::SUPPORT_MULTI_CANVAS: if (!Canvas::isMultiCanvasSupported()) supported = false; break; case Graphics::SUPPORT_SHADER: if (!Shader::isSupported()) supported = false; break; case Graphics::SUPPORT_NPOT: if (!Image::hasNpot()) supported = false; break; case Graphics::SUPPORT_SUBTRACTIVE: if (!((GLEE_VERSION_1_4 || GLEE_ARB_imaging) || (GLEE_EXT_blend_minmax && GLEE_EXT_blend_subtract))) supported = false; break; case Graphics::SUPPORT_MIPMAP: if (!Image::hasMipmapSupport()) supported = false; break; case Graphics::SUPPORT_DXT: if (!Image::hasCompressedTextureSupport(image::CompressedData::FORMAT_DXT5)) supported = false; break; case Graphics::SUPPORT_BC5: if (!Image::hasCompressedTextureSupport(image::CompressedData::FORMAT_BC5)) supported = false; break; case Graphics::SUPPORT_INSTANCING: if (!GLEE_ARB_draw_instanced) supported = false; break; case Graphics::SUPPORT_SRGB: if (!Canvas::isSRGBSupported()) supported = false; break; default: supported = false; } if (!supported) break; } lua_pushboolean(L, supported); return 1; } int w_getRendererInfo(lua_State *L) { std::string name, version, vendor, device; EXCEPT_GUARD(name = instance->getRendererInfo(Graphics::RENDERER_INFO_NAME);) EXCEPT_GUARD(version = instance->getRendererInfo(Graphics::RENDERER_INFO_VERSION);) EXCEPT_GUARD(vendor = instance->getRendererInfo(Graphics::RENDERER_INFO_VENDOR);) EXCEPT_GUARD(device = instance->getRendererInfo(Graphics::RENDERER_INFO_DEVICE);) luax_pushstring(L, name); luax_pushstring(L, version); luax_pushstring(L, vendor); luax_pushstring(L, device); return 4; } int w_getSystemLimit(lua_State *L) { const char *limitstr = luaL_checkstring(L, 1); Graphics::SystemLimit limittype; if (!Graphics::getConstant(limitstr, limittype)) return luaL_error(L, "Invalid system limit type: %s", limitstr); lua_pushnumber(L, instance->getSystemLimit(limittype)); return 1; } int w_draw(lua_State *L) { Drawable *drawable = nullptr; Texture *texture = nullptr; Quad *quad = nullptr; int startidx = 2; if (luax_istype(L, 2, GRAPHICS_QUAD_T)) { texture = luax_checktexture(L, 1); quad = luax_totype(L, 2, "Quad", GRAPHICS_QUAD_T); startidx = 3; } else if (lua_isnil(L, 2) && !lua_isnoneornil(L, 3)) { return luax_typerror(L, 2, "Quad"); } else { drawable = luax_checktype(L, 1, "Drawable", GRAPHICS_DRAWABLE_T); startidx = 2; } float x = (float) luaL_optnumber(L, startidx + 0, 0.0); float y = (float) luaL_optnumber(L, startidx + 1, 0.0); float a = (float) luaL_optnumber(L, startidx + 2, 0.0); float sx = (float) luaL_optnumber(L, startidx + 3, 1.0); float sy = (float) luaL_optnumber(L, startidx + 4, sx); float ox = (float) luaL_optnumber(L, startidx + 5, 0.0); float oy = (float) luaL_optnumber(L, startidx + 6, 0.0); float kx = (float) luaL_optnumber(L, startidx + 7, 0.0); float ky = (float) luaL_optnumber(L, startidx + 8, 0.0); if (texture && quad) texture->drawq(quad, x, y, a, sx, sy, ox, oy, kx, ky); else if (drawable) drawable->draw(x, y, a, sx, sy, ox, oy, kx, ky); return 0; } int w_print(lua_State *L) { std::string str = luax_checkstring(L, 1); float x = (float)luaL_optnumber(L, 2, 0.0); float y = (float)luaL_optnumber(L, 3, 0.0); float angle = (float)luaL_optnumber(L, 4, 0.0f); float sx = (float)luaL_optnumber(L, 5, 1.0f); float sy = (float)luaL_optnumber(L, 6, sx); float ox = (float)luaL_optnumber(L, 7, 0.0f); float oy = (float)luaL_optnumber(L, 8, 0.0f); float kx = (float)luaL_optnumber(L, 9, 0.0f); float ky = (float)luaL_optnumber(L, 10, 0.0f); EXCEPT_GUARD(instance->print(str, x, y, angle, sx, sy, ox, oy, kx,ky);) return 0; } int w_printf(lua_State *L) { std::string str = luax_checkstring(L, 1); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float wrap = (float)luaL_checknumber(L, 4); float angle = 0.0f; float sx = 1.0f, sy = 1.0f; float ox = 0.0f, oy = 0.0f; float kx = 0.0f, ky = 0.0f; Graphics::AlignMode align = Graphics::ALIGN_LEFT; if (lua_gettop(L) >= 5) { if (!lua_isnil(L, 5)) { const char *str = luaL_checkstring(L, 5); if (!Graphics::getConstant(str, align)) return luaL_error(L, "Incorrect alignment: %s", str); } angle = (float) luaL_optnumber(L, 6, 0.0f); sx = (float) luaL_optnumber(L, 7, 1.0f); sy = (float) luaL_optnumber(L, 8, sx); ox = (float) luaL_optnumber(L, 9, 0.0f); oy = (float) luaL_optnumber(L, 10, 0.0f); kx = (float) luaL_optnumber(L, 11, 0.0f); ky = (float) luaL_optnumber(L, 12, 0.0f); } EXCEPT_GUARD(instance->printf(str, x, y, wrap, align, angle, sx, sy, ox, oy, kx, ky);) return 0; } int w_point(lua_State *L) { float x = (float)luaL_checknumber(L, 1); float y = (float)luaL_checknumber(L, 2); instance->point(x, y); return 0; } int w_line(lua_State *L) { int args = lua_gettop(L); bool is_table = false; if (args == 1 && lua_istable(L, 1)) { args = lua_objlen(L, 1); is_table = true; } if (args % 2 != 0) return luaL_error(L, "Number of vertex components must be a multiple of two"); else if (args < 4) return luaL_error(L, "Need at least two vertices to draw a line"); float *coords = new float[args]; if (is_table) { for (int i = 0; i < args; ++i) { lua_rawgeti(L, 1, i + 1); coords[i] = luax_tofloat(L, -1); lua_pop(L, 1); } } else { for (int i = 0; i < args; ++i) coords[i] = luax_tofloat(L, i + 1); } instance->polyline(coords, args); delete[] coords; return 0; } int w_rectangle(lua_State *L) { Graphics::DrawMode mode; const char *str = luaL_checkstring(L, 1); if (!Graphics::getConstant(str, mode)) return luaL_error(L, "Incorrect draw mode %s", str); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float w = (float)luaL_checknumber(L, 4); float h = (float)luaL_checknumber(L, 5); instance->rectangle(mode, x, y, w, h); return 0; } int w_circle(lua_State *L) { Graphics::DrawMode mode; const char *str = luaL_checkstring(L, 1); if (!Graphics::getConstant(str, mode)) return luaL_error(L, "Incorrect draw mode %s", str); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float radius = (float)luaL_checknumber(L, 4); int points; if (lua_isnoneornil(L, 5)) points = radius > 10 ? (int)(radius) : 10; else points = luaL_checkint(L, 5); instance->circle(mode, x, y, radius, points); return 0; } int w_arc(lua_State *L) { Graphics::DrawMode mode; const char *str = luaL_checkstring(L, 1); if (!Graphics::getConstant(str, mode)) return luaL_error(L, "Incorrect draw mode %s", str); float x = (float)luaL_checknumber(L, 2); float y = (float)luaL_checknumber(L, 3); float radius = (float)luaL_checknumber(L, 4); float angle1 = (float)luaL_checknumber(L, 5); float angle2 = (float)luaL_checknumber(L, 6); int points; if (lua_isnoneornil(L, 7)) points = radius > 10 ? (int)(radius) : 10; else points = luaL_checkint(L, 7); instance->arc(mode, x, y, radius, angle1, angle2, points); return 0; } int w_polygon(lua_State *L) { int args = lua_gettop(L) - 1; Graphics::DrawMode mode; const char *str = luaL_checkstring(L, 1); if (!Graphics::getConstant(str, mode)) return luaL_error(L, "Invalid draw mode: %s", str); bool is_table = false; float *coords; if (args == 1 && lua_istable(L, 2)) { args = lua_objlen(L, 2); is_table = true; } if (args % 2 != 0) return luaL_error(L, "Number of vertex components must be a multiple of two"); else if (args < 6) return luaL_error(L, "Need at least three vertices to draw a polygon"); // fetch coords coords = new float[args + 2]; if (is_table) { for (int i = 0; i < args; ++i) { lua_rawgeti(L, 2, i + 1); coords[i] = luax_tofloat(L, -1); lua_pop(L, 1); } } else { for (int i = 0; i < args; ++i) coords[i] = luax_tofloat(L, i + 2); } // make a closed loop coords[args] = coords[0]; coords[args+1] = coords[1]; instance->polygon(mode, coords, args+2); delete[] coords; return 0; } int w_push(lua_State *L) { EXCEPT_GUARD(instance->push();) return 0; } int w_pop(lua_State *L) { EXCEPT_GUARD(instance->pop();) return 0; } int w_rotate(lua_State *L) { float angle = (float)luaL_checknumber(L, 1); instance->rotate(angle); return 0; } int w_scale(lua_State *L) { float sx = (float)luaL_optnumber(L, 1, 1.0f); float sy = (float)luaL_optnumber(L, 2, sx); instance->scale(sx, sy); return 0; } int w_translate(lua_State *L) { float x = (float)luaL_checknumber(L, 1); float y = (float)luaL_checknumber(L, 2); instance->translate(x, y); return 0; } int w_shear(lua_State *L) { float kx = (float)luaL_checknumber(L, 1); float ky = (float)luaL_checknumber(L, 2); instance->shear(kx, ky); return 0; } int w_origin(lua_State * /*L*/) { instance->origin(); return 0; } // List of functions to wrap. static const luaL_Reg functions[] = { { "reset", w_reset }, { "clear", w_clear }, { "present", w_present }, { "newImage", w_newImage }, { "newQuad", w_newQuad }, { "newFont", w_newFont }, { "newImageFont", w_newImageFont }, { "newSpriteBatch", w_newSpriteBatch }, { "newParticleSystem", w_newParticleSystem }, { "newCanvas", w_newCanvas }, { "newShader", w_newShader }, { "newMesh", w_newMesh }, { "setColor", w_setColor }, { "getColor", w_getColor }, { "setBackgroundColor", w_setBackgroundColor }, { "getBackgroundColor", w_getBackgroundColor }, { "setFont", w_setFont }, { "getFont", w_getFont }, { "setColorMask", w_setColorMask }, { "getColorMask", w_getColorMask }, { "setBlendMode", w_setBlendMode }, { "getBlendMode", w_getBlendMode }, { "setDefaultFilter", w_setDefaultFilter }, { "getDefaultFilter", w_getDefaultFilter }, { "setDefaultMipmapFilter", w_setDefaultMipmapFilter }, { "getDefaultMipmapFilter", w_getDefaultMipmapFilter }, { "setLineWidth", w_setLineWidth }, { "setLineStyle", w_setLineStyle }, { "setLineJoin", w_setLineJoin }, { "getLineWidth", w_getLineWidth }, { "getLineStyle", w_getLineStyle }, { "getLineJoin", w_getLineJoin }, { "setPointSize", w_setPointSize }, { "setPointStyle", w_setPointStyle }, { "getPointSize", w_getPointSize }, { "getPointStyle", w_getPointStyle }, { "setWireframe", w_setWireframe }, { "isWireframe", w_isWireframe }, { "newScreenshot", w_newScreenshot }, { "setCanvas", w_setCanvas }, { "getCanvas", w_getCanvas }, { "setShader", w_setShader }, { "getShader", w_getShader }, { "isSupported", w_isSupported }, { "getRendererInfo", w_getRendererInfo }, { "getSystemLimit", w_getSystemLimit }, { "draw", w_draw }, { "print", w_print }, { "printf", w_printf }, { "isCreated", w_isCreated }, { "getWidth", w_getWidth }, { "getHeight", w_getHeight }, { "getDimensions", w_getDimensions }, { "setScissor", w_setScissor }, { "getScissor", w_getScissor }, { "setStencil", w_setStencil }, { "setInvertedStencil", w_setInvertedStencil }, { "point", w_point }, { "line", w_line }, { "rectangle", w_rectangle }, { "circle", w_circle }, { "arc", w_arc }, { "polygon", w_polygon }, { "push", w_push }, { "pop", w_pop }, { "rotate", w_rotate }, { "scale", w_scale }, { "translate", w_translate }, { "shear", w_shear }, { "origin", w_origin }, // Deprecated since 0.9.1. { "getMaxImageSize", w_getMaxTextureSize }, { "getMaxPointSize", w_getMaxPointSize }, { 0, 0 } }; // Types for this module. static const lua_CFunction types[] = { luaopen_font, luaopen_image, luaopen_quad, luaopen_spritebatch, luaopen_particlesystem, luaopen_canvas, luaopen_shader, luaopen_mesh, 0 }; extern "C" int luaopen_love_graphics(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new Graphics();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "graphics"; w.flags = MODULE_GRAPHICS_T; w.functions = functions; w.types = types; int n = luax_register_module(L, w); if (luaL_loadbuffer(L, (const char *)graphics_lua, sizeof(graphics_lua), "graphics.lua") == 0) lua_call(L, 0, 0); return n; } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/Image.h0000644000000000000000000001244112316602166021207 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_IMAGE_H #define LOVE_GRAPHICS_OPENGL_IMAGE_H // LOVE #include "common/config.h" #include "common/Matrix.h" #include "common/Vector.h" #include "common/math.h" #include "image/ImageData.h" #include "image/CompressedData.h" #include "Texture.h" // OpenGL #include "OpenGL.h" namespace love { namespace graphics { namespace opengl { /** * A drawable image based on OpenGL-textures. This class takes ImageData * objects and create textures on the GPU for fast drawing. * * @author Anders Ruud **/ class Image : public Texture { public: /** * Creates a new Image. Not that anything is ready to use * before load is called. * * @param data The data from which to load the image. **/ Image(love::image::ImageData *data, Texture::Format format = Texture::FORMAT_NORMAL); /** * Creates a new Image with compressed image data. * * @param cdata The compressed data from which to load the image. **/ Image(love::image::CompressedData *cdata, Texture::Format format = Texture::FORMAT_NORMAL); /** * Destructor. Deletes the hardware texture and other resources. **/ virtual ~Image(); love::image::ImageData *getImageData() const; love::image::CompressedData *getCompressedData() const; /** * @copydoc Drawable::draw() **/ void draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky); /** * @copydoc Texture::drawq() **/ void drawq(Quad *quad, float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky); /** * Call before using this Image's texture to draw. Binds the texture, * globally scales texture coordinates if the Image has NPOT dimensions and * NPOT isn't supported, etc. **/ virtual void predraw(); virtual void postdraw(); virtual GLuint getGLTexture() const; virtual void setFilter(const Texture::Filter &f); virtual void setWrap(const Texture::Wrap &w); void setMipmapSharpness(float sharpness); float getMipmapSharpness() const; /** * Whether this Image is using a compressed texture (via CompressedData). **/ bool isCompressed() const; void bind() const; bool load(); void unload(); // Implements Volatile. bool loadVolatile(); void unloadVolatile(); /** * Re-uploads the ImageData or CompressedData associated with this Image to * the GPU, allowing situations where lovers modify an ImageData after image * creation from the ImageData, and apply the changes with Image:refresh(). **/ bool refresh(); Texture::Format getFormat() const; static void setDefaultMipmapSharpness(float sharpness); static float getDefaultMipmapSharpness(); static void setDefaultMipmapFilter(FilterMode f); static FilterMode getDefaultMipmapFilter(); static bool hasNpot(); static bool hasAnisotropicFilteringSupport(); static bool hasMipmapSupport(); static bool hasMipmapSharpnessSupport(); static bool hasCompressedTextureSupport(); static bool hasCompressedTextureSupport(image::CompressedData::Format format); static bool hasSRGBSupport(); private: void uploadDefaultTexture(); void drawv(const Matrix &t, const Vertex *v); // The ImageData from which the texture is created. May be null if // Compressed image data was used to create the texture. love::image::ImageData *data; // Or the Compressed Image Data from which the texture is created. May be // null if raw ImageData was used to create the texture. love::image::CompressedData *cdata; // Real dimensions of the texture, if it was auto-padded to POT size. int paddedWidth, paddedHeight; // OpenGL texture identifier. GLuint texture; // Mipmap texture LOD bias (sharpness) value. float mipmapSharpness; // True if mipmaps have been created for this Image. bool mipmapsCreated; // Whether this Image is using a compressed texture. bool compressed; // The format to interpret the texture's data as. Texture::Format format; // True if the image wasn't able to be properly created and it had to fall // back to a default texture. bool usingDefaultTexture; void preload(); void uploadTexturePadded(); void uploadTexture(); void uploadCompressedMipmaps(); void createMipmaps(); void checkMipmapsCreated(); static float maxMipmapSharpness; static FilterMode defaultMipmapFilter; static float defaultMipmapSharpness; GLenum getCompressedFormat(image::CompressedData::Format cformat) const; }; // Image } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_IMAGE_H love-0.9.1/src/modules/graphics/opengl/Texture.h0000644000000000000000000000323312316602166021624 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_TEXTURE_H #define LOVE_GRAPHICS_OPENGL_TEXTURE_H // LOVE #include "graphics/Texture.h" #include "graphics/Volatile.h" #include "OpenGL.h" namespace love { namespace graphics { namespace opengl { class Texture : public love::graphics::Texture, public Volatile { public: virtual ~Texture() {} /** * Gets the OpenGL id for this texture. **/ virtual GLuint getGLTexture() const = 0; /** * Any setup the texture might need to do before drawing, e.g. binding * the OpenGL texture for use. **/ virtual void predraw() {} /** * Any cleanup the texture might need to do directly after drawing. **/ virtual void postdraw() {} }; // Texture } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_TEXTURE_H love-0.9.1/src/modules/graphics/opengl/wrap_Canvas.h0000644000000000000000000000304012316602166022424 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_WRAP_CANVAS_H #define LOVE_GRAPHICS_OPENGL_WRAP_CANVAS_H // LOVE #include "common/runtime.h" #include "Canvas.h" #include "wrap_Texture.h" namespace love { namespace graphics { namespace opengl { //see Canvas.h Canvas *luax_checkcanvas(lua_State *L, int idx); int w_Canvas_renderTo(lua_State *L); int w_Canvas_getImageData(lua_State *L); int w_Canvas_getPixel(lua_State * L); int w_Canvas_clear(lua_State *L); int w_Canvas_getFormat(lua_State *L); int w_Canvas_getFSAA(lua_State *L); extern "C" int luaopen_canvas(lua_State *L); } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_WRAP_CANVAS_H love-0.9.1/src/modules/graphics/opengl/Font.h0000644000000000000000000001327412316602166021100 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_FONT_H #define LOVE_GRAPHICS_OPENGL_FONT_H // STD #include #include #include // LOVE #include "common/Object.h" #include "font/Rasterizer.h" #include "graphics/Texture.h" #include "graphics/Volatile.h" #include "OpenGL.h" namespace love { namespace graphics { namespace opengl { class Font : public Object, public Volatile { public: Font(love::font::Rasterizer *r, const Texture::Filter &filter = Texture::getDefaultFilter()); virtual ~Font(); /** * Prints the text at the designated position with rotation and scaling. * * @param text A string. * @param x The x-coordinate. * @param y The y-coordinate. * @param extra_spacing Additional spacing added to spaces (" "). * @param angle The amount of rotation. * @param sx Scale along the x axis. * @param sy Scale along the y axis. * @param ox The origin offset along the x-axis. * @param oy The origin offset along the y-axis. * @param kx Shear along the x axis. * @param ky Shear along the y axis. **/ void print(const std::string &text, float x, float y, float extra_spacing = 0.0f, float angle = 0.0f, float sx = 1.0f, float sy = 1.0f, float ox = 0.0f, float oy = 0.0f, float kx = 0.0f, float ky = 0.0f); /** * Returns the height of the font. **/ float getHeight() const; /** * Returns the width of the passed string. * * @param str A string of text. **/ int getWidth(const std::string &str); /** * Returns the width of the passed character. * * @param character A character. **/ int getWidth(char character); /** * Returns the maximal width of a wrapped string * and optionally the number of lines * * @param text The input text * @param wrap The number of pixels to wrap at * @param max_width Optional output of the maximum width * @param wrapped_lines Optional output indicating which lines were * auto-wrapped. Indices correspond to indices of the returned value. * Returns a vector with the lines. **/ std::vector getWrap(const std::string &text, float wrap, int *max_width = 0, std::vector *wrapped_lines = 0); /** * Sets the line height (which should be a number to multiply the font size by, * example: line height = 1.2 and size = 12 means that rendered line height = 12*1.2) * @param height The new line height. **/ void setLineHeight(float height); /** * Returns the line height. **/ float getLineHeight() const; /** * Sets the spacing modifier (changes the spacing between the characters the * same way that the line height does [multiplication]). * Note: The spacing must be set BEFORE the font is loaded to have any effect. * @param amount The amount of modification. **/ void setSpacing(float amount); /** * Returns the spacing modifier. **/ float getSpacing() const; void setFilter(const Texture::Filter &f); const Texture::Filter &getFilter(); // Implements Volatile. bool loadVolatile(); void unloadVolatile(); // Extra font metrics int getAscent() const; int getDescent() const; float getBaseline() const; bool hasGlyph(uint32 glyph) const; bool hasGlyphs(const std::string &text) const; private: enum FontType { FONT_TRUETYPE = 1, FONT_IMAGE, FONT_UNKNOWN }; struct GlyphVertex { float x, y; float s, t; }; struct Glyph { GLuint texture; int spacing; GlyphVertex vertices[4]; }; // used to determine when to change textures in the vertex array generated when printing text struct GlyphArrayDrawInfo { GLuint texture; int startvertex; int vertexcount; // used when sorting with std::sort // sorts by texture first (binding textures is expensive) and relative position in memory second bool operator < (const GlyphArrayDrawInfo &other) const { if (texture != other.texture) return texture < other.texture; else return startvertex < other.startvertex; } }; bool initializeTexture(GLenum format); void createTexture(); Glyph *addGlyph(uint32 glyph); Glyph *findGlyph(uint32 glyph); love::font::Rasterizer *rasterizer; int height; float lineHeight; float mSpacing; // modifies the spacing by multiplying it with this value int textureSizeIndex; int textureWidth; int textureHeight; // vector of packed textures std::vector textures; // maps glyphs to glyph texture information std::map glyphs; FontType type; Texture::Filter filter; int textureX, textureY; int rowHeight; bool useSpacesAsTab; static const int NUM_TEXTURE_SIZES = 7; static const int TEXTURE_WIDTHS[NUM_TEXTURE_SIZES]; static const int TEXTURE_HEIGHTS[NUM_TEXTURE_SIZES]; static const int TEXTURE_PADDING = 1; // This will be used if the Rasterizer doesn't have a tab character itself. static const int SPACES_PER_TAB = 4; }; // Font } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_FONT_H love-0.9.1/src/modules/graphics/opengl/wrap_Font.cpp0000644000000000000000000001042212316602166022454 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "wrap_Font.h" namespace love { namespace graphics { namespace opengl { Font *luax_checkfont(lua_State *L, int idx) { return luax_checktype(L, idx, "Font", GRAPHICS_FONT_T); } int w_Font_getHeight(lua_State *L) { Font *t = luax_checkfont(L, 1); lua_pushnumber(L, t->getHeight()); return 1; } int w_Font_getWidth(lua_State *L) { Font *t = luax_checkfont(L, 1); const char *str = luaL_checkstring(L, 2); EXCEPT_GUARD(lua_pushinteger(L, t->getWidth(str));) return 1; } int w_Font_getWrap(lua_State *L) { Font *t = luax_checkfont(L, 1); const char *str = luaL_checkstring(L, 2); float wrap = (float) luaL_checknumber(L, 3); int max_width = 0, numlines = 0; EXCEPT_GUARD( std::vector lines = t->getWrap(str, wrap, &max_width); numlines = lines.size(); ) lua_pushinteger(L, max_width); lua_pushinteger(L, numlines); return 2; } int w_Font_setLineHeight(lua_State *L) { Font *t = luax_checkfont(L, 1); float h = (float)luaL_checknumber(L, 2); t->setLineHeight(h); return 0; } int w_Font_getLineHeight(lua_State *L) { Font *t = luax_checkfont(L, 1); lua_pushnumber(L, t->getLineHeight()); return 1; } int w_Font_setFilter(lua_State *L) { Font *t = luax_checkfont(L, 1); Texture::Filter f = t->getFilter(); const char *minstr = luaL_checkstring(L, 2); const char *magstr = luaL_optstring(L, 3, minstr); if (!Texture::getConstant(minstr, f.min)) return luaL_error(L, "Invalid filter mode: %s", minstr); if (!Texture::getConstant(magstr, f.mag)) return luaL_error(L, "Invalid filter mode: %s", magstr); f.anisotropy = (float) luaL_optnumber(L, 4, 1.0); EXCEPT_GUARD(t->setFilter(f);) return 0; } int w_Font_getFilter(lua_State *L) { Font *t = luax_checkfont(L, 1); const Texture::Filter f = t->getFilter(); const char *minstr; const char *magstr; Texture::getConstant(f.min, minstr); Texture::getConstant(f.mag, magstr); lua_pushstring(L, minstr); lua_pushstring(L, magstr); lua_pushnumber(L, f.anisotropy); return 3; } int w_Font_getAscent(lua_State *L) { Font *t = luax_checkfont(L, 1); lua_pushnumber(L, t->getAscent()); return 1; } int w_Font_getDescent(lua_State *L) { Font *t = luax_checkfont(L, 1); lua_pushnumber(L, t->getDescent()); return 1; } int w_Font_getBaseline(lua_State *L) { Font *t = luax_checkfont(L, 1); lua_pushnumber(L, t->getBaseline()); return 1; } int w_Font_hasGlyphs(lua_State *L) { Font *t = luax_checkfont(L, 1); bool hasglyph = false; int count = lua_gettop(L) - 1; count = count < 1 ? 1 : count; EXCEPT_GUARD( for (int i = 2; i < count + 2; i++) { if (lua_type(L, i) == LUA_TSTRING) hasglyph = t->hasGlyphs(luax_checkstring(L, i)); else hasglyph = t->hasGlyph((uint32) luaL_checknumber(L, i)); if (!hasglyph) break; } ) luax_pushboolean(L, hasglyph); return 1; } static const luaL_Reg functions[] = { { "getHeight", w_Font_getHeight }, { "getWidth", w_Font_getWidth }, { "getWrap", w_Font_getWrap }, { "setLineHeight", w_Font_setLineHeight }, { "getLineHeight", w_Font_getLineHeight }, { "setFilter", w_Font_setFilter }, { "getFilter", w_Font_getFilter }, { "getAscent", w_Font_getAscent }, { "getDescent", w_Font_getDescent }, { "getBaseline", w_Font_getBaseline }, { "hasGlyphs", w_Font_hasGlyphs }, { 0, 0 } }; extern "C" int luaopen_font(lua_State *L) { return luax_register_type(L, "Font", functions); } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/Polyline.cpp0000644000000000000000000002461612316602166022322 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include // LOVE #include "Polyline.h" // OpenGL #include "OpenGL.h" // treat adjacent segments with angles between their directions <5 degree as straight static const float LINES_PARALLEL_EPS = 0.05f; namespace love { namespace graphics { namespace opengl { void Polyline::render(const float *coords, size_t count, size_t size_hint, float halfwidth, float pixel_size, bool draw_overdraw) { static std::vector anchors; anchors.clear(); anchors.reserve(size_hint); static std::vector normals; normals.clear(); normals.reserve(size_hint); // prepare vertex arrays if (draw_overdraw) halfwidth -= pixel_size * .3; // compute sleeve bool is_looping = (coords[0] == coords[count - 2]) && (coords[1] == coords[count - 1]); Vector s; if (!is_looping) // virtual starting point at second point mirrored on first point s = Vector(coords[2] - coords[0], coords[3] - coords[1]); else // virtual starting point at last vertex s = Vector(coords[0] - coords[count - 4], coords[1] - coords[count - 3]); float len_s = s.getLength(); Vector ns = s.getNormal(halfwidth / len_s); Vector q, r(coords[0], coords[1]); for (size_t i = 0; i + 3 < count; i += 2) { q = r; r = Vector(coords[i + 2], coords[i + 3]); renderEdge(anchors, normals, s, len_s, ns, q, r, halfwidth); } q = r; r = is_looping ? Vector(coords[2], coords[3]) : r + s; renderEdge(anchors, normals, s, len_s, ns, q, r, halfwidth); vertex_count = normals.size(); vertices = new Vector[vertex_count]; for (size_t i = 0; i < vertex_count; ++i) vertices[i] = anchors[i] + normals[i]; if (draw_overdraw) render_overdraw(normals, pixel_size, is_looping); } void NoneJoinPolyline::renderEdge(std::vector &anchors, std::vector &normals, Vector &s, float &len_s, Vector &ns, const Vector &q, const Vector &r, float hw) { anchors.push_back(q); anchors.push_back(q); normals.push_back(ns); normals.push_back(-ns); s = (r - q); len_s = s.getLength(); ns = s.getNormal(hw / len_s); anchors.push_back(q); anchors.push_back(q); normals.push_back(-ns); normals.push_back(ns); } /** Calculate line boundary points. * * Sketch: * * u1 * -------------+---...___ * | ```'''-- --- * p- - - - - - q- - . _ _ | w/2 * | ` ' ' r + * -------------+---...___ | w/2 * u2 ```'''-- --- * * u1 and u2 depend on four things: * - the half line width w/2 * - the previous line vertex p * - the current line vertex q * - the next line vertex r * * u1/u2 are the intersection points of the parallel lines to p-q and q-r, * i.e. the point where * * (q + w/2 * ns) + lambda * (q - p) = (q + w/2 * nt) + mu * (r - q) (u1) * (q - w/2 * ns) + lambda * (q - p) = (q - w/2 * nt) + mu * (r - q) (u2) * * with nt,nt being the normals on the segments s = p-q and t = q-r, * * ns = perp(s) / |s| * nt = perp(t) / |t|. * * Using the linear equation system (similar for u2) * * q + w/2 * ns + lambda * s - (q + w/2 * nt + mu * t) = 0 (u1) * <=> q-q + lambda * s - mu * t = (nt - ns) * w/2 * <=> lambda * s - mu * t = (nt - ns) * w/2 * * the intersection points can be efficiently calculated using Cramer's rule. */ void MiterJoinPolyline::renderEdge(std::vector &anchors, std::vector &normals, Vector &s, float &len_s, Vector &ns, const Vector &q, const Vector &r, float hw) { Vector t = (r - q); float len_t = t.getLength(); Vector nt = t.getNormal(hw / len_t); anchors.push_back(q); anchors.push_back(q); float det = s ^ t; if (fabs(det) / (len_s * len_t) < LINES_PARALLEL_EPS && s * t > 0) { // lines parallel, compute as u1 = q + ns * w/2, u2 = q - ns * w/2 normals.push_back(ns); normals.push_back(-ns); } else { // cramers rule float lambda = ((nt - ns) ^ t) / det; Vector d = ns + s * lambda; normals.push_back(d); normals.push_back(-d); } s = t; ns = nt; len_s = len_t; } /** Calculate line boundary points. * * Sketch: * * uh1___uh2 * .' '. * .' q '. * .' ' ' '. *.' ' .'. ' '. * ' .' ul'. ' * p .' '. r * * * ul can be found as above, uh1 and uh2 are much simpler: * * uh1 = q + ns * w/2, uh2 = q + nt * w/2 */ void BevelJoinPolyline::renderEdge(std::vector &anchors, std::vector &normals, Vector &s, float &len_s, Vector &ns, const Vector &q, const Vector &r, float hw) { Vector t = (r - q); float len_t = t.getLength(); float det = s ^ t; if (fabs(det) / (len_s * len_t) < LINES_PARALLEL_EPS && s * t > 0) { // lines parallel, compute as u1 = q + ns * w/2, u2 = q - ns * w/2 Vector n = t.getNormal(hw / len_t); anchors.push_back(q); anchors.push_back(q); normals.push_back(n); normals.push_back(-n); s = t; len_s = len_t; return; // early out } // cramers rule Vector nt= t.getNormal(hw / len_t); float lambda = ((nt - ns) ^ t) / det; Vector d = ns + s * lambda; anchors.push_back(q); anchors.push_back(q); anchors.push_back(q); anchors.push_back(q); if (det > 0) // 'left' turn -> intersection on the top { normals.push_back(d); normals.push_back(-ns); normals.push_back(d); normals.push_back(-nt); } else { normals.push_back(ns); normals.push_back(-d); normals.push_back(nt); normals.push_back(-d); } s = t; len_s = len_t; ns = nt; } void Polyline::render_overdraw(const std::vector &normals, float pixel_size, bool is_looping) { overdraw_vertex_count = 2 * vertex_count + (is_looping ? 0 : 2); overdraw = new Vector[overdraw_vertex_count]; // upper segment for (size_t i = 0; i + 1 < vertex_count; i += 2) { overdraw[i] = vertices[i]; overdraw[i+1] = vertices[i] + normals[i] * (pixel_size / normals[i].getLength()); } // lower segment for (size_t i = 0; i + 1 < vertex_count; i += 2) { size_t k = vertex_count - i - 1; overdraw[vertex_count + i] = vertices[k]; overdraw[vertex_count + i+1] = vertices[k] + normals[k] * (pixel_size / normals[i].getLength()); } // if not looping, the outer overdraw vertices need to be displaced // to cover the line endings, i.e.: // +- - - - //- - + +- - - - - //- - - + // +-------//-----+ : +-------//-----+ : // | core // line | --> : | core // line | : // +-----//-------+ : +-----//-------+ : // +- - //- - - - + +- - - //- - - - - + if (!is_looping) { // left edge Vector spacer = (overdraw[1] - overdraw[3]); spacer.normalize(pixel_size); overdraw[1] += spacer; overdraw[overdraw_vertex_count - 3] += spacer; // right edge spacer = (overdraw[vertex_count-1] - overdraw[vertex_count-3]); spacer.normalize(pixel_size); overdraw[vertex_count-1] += spacer; overdraw[vertex_count+1] += spacer; // we need to draw two more triangles to close the // overdraw at the line start. overdraw[overdraw_vertex_count-2] = overdraw[0]; overdraw[overdraw_vertex_count-1] = overdraw[1]; } } void NoneJoinPolyline::render_overdraw(const std::vector &/*normals*/, float pixel_size, bool /*is_looping*/) { overdraw_vertex_count = 4 * (vertex_count-2); // less than ideal overdraw = new Vector[overdraw_vertex_count]; for (size_t i = 2; i + 3 < vertex_count; i += 4) { Vector s = vertices[i] - vertices[i+3]; Vector t = vertices[i] - vertices[i+1]; s.normalize(pixel_size); t.normalize(pixel_size); const size_t k = 4 * (i - 2); overdraw[k ] = vertices[i]; overdraw[k+1] = vertices[i] + s + t; overdraw[k+2] = vertices[i+1] + s - t; overdraw[k+3] = vertices[i+1]; overdraw[k+4] = vertices[i+1]; overdraw[k+5] = vertices[i+1] + s - t; overdraw[k+6] = vertices[i+2] - s - t; overdraw[k+7] = vertices[i+2]; overdraw[k+8] = vertices[i+2]; overdraw[k+9] = vertices[i+2] - s - t; overdraw[k+10] = vertices[i+3] - s + t; overdraw[k+11] = vertices[i+3]; overdraw[k+12] = vertices[i+3]; overdraw[k+13] = vertices[i+3] - s + t; overdraw[k+14] = vertices[i] + s + t; overdraw[k+15] = vertices[i]; } } Polyline::~Polyline() { if (vertices) delete[] vertices; if (overdraw) delete[] overdraw; } void Polyline::draw() { gl.prepareDraw(); // draw the core line gl.bindTexture(0); glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(2, GL_FLOAT, 0, (const GLvoid *)vertices); glDrawArrays(draw_mode, 0, vertex_count); if (overdraw) { // prepare colors: Color c = gl.getColor(); Color *colors = new Color[overdraw_vertex_count]; fill_color_array(colors, c); glEnableClientState(GL_COLOR_ARRAY); glColorPointer(4, GL_UNSIGNED_BYTE, 0, colors); glVertexPointer(2, GL_FLOAT, 0, (const GLvoid *)overdraw); glDrawArrays(draw_mode, 0, overdraw_vertex_count); glDisableClientState(GL_COLOR_ARRAY); delete[] colors; gl.setColor(c); } glDisableClientState(GL_VERTEX_ARRAY); } void Polyline::fill_color_array(Color *colors, const Color &c) { for (size_t i = 0; i < overdraw_vertex_count; ++i) { colors[i] = c; // avoids branching. equiv to if (i%2 == 1) colors[i].a = 0; colors[i].a *= GLubyte((i+1) % 2); } } void NoneJoinPolyline::fill_color_array(Color *colors, const Color &c) { for (size_t i = 0; i < overdraw_vertex_count; ++i) { colors[i] = c; // if (i % 4 == 1 || i % 4 == 2) colors[i].a = 0 colors[i].a *= GLubyte((i+1) % 4 < 2); } } } // opengl } // graphics } // love love-0.9.1/src/modules/graphics/opengl/SpriteBatch.h0000644000000000000000000000757712316602166022413 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_SPRITE_BATCH_H #define LOVE_GRAPHICS_OPENGL_SPRITE_BATCH_H // C #include // LOVE #include "common/math.h" #include "common/Object.h" #include "common/Matrix.h" #include "common/StringMap.h" #include "graphics/Drawable.h" #include "graphics/Volatile.h" #include "graphics/Color.h" #include "graphics/Quad.h" namespace love { namespace graphics { namespace opengl { // Forward declarations. class Texture; class VertexBuffer; class VertexIndex; class SpriteBatch : public Drawable { public: enum UsageHint { USAGE_DYNAMIC = 1, USAGE_STATIC, USAGE_STREAM, USAGE_MAX_ENUM }; SpriteBatch(Texture *texture, int size, int usage); virtual ~SpriteBatch(); int add(float x, float y, float a, float sx, float sy, float ox, float oy, float kx, float ky, int index = -1); int addq(Quad *quad, float x, float y, float a, float sx, float sy, float ox, float oy, float kx, float ky, int index = -1); void clear(); void *lock(); void unlock(); void setTexture(Texture *newtexture); Texture *getTexture(); /** * Set the current color for this SpriteBatch. The sprites added * after this call will use this color. Note that global color * will not longer apply to the SpriteBatch if this is used. * * @param color The color to use for the following sprites. */ void setColor(const Color &color); /** * Disable per-sprite colors for this SpriteBatch. The next call to * draw will use the global color for all sprites. */ void setColor(); /** * Get the current color for this SpriteBatch. Returns NULL if no color is * set. **/ const Color *getColor() const; /** * Get the number of sprites currently in this SpriteBatch. **/ int getCount() const; /** * Sets the total number of sprites this SpriteBatch can hold. * Leaves existing sprite data intact when possible. **/ void setBufferSize(int newsize); /** * Get the total number of sprites this SpriteBatch can hold. **/ int getBufferSize() const; // Implements Drawable. void draw(float x, float y, float angle, float sx, float sy, float ox, float oy, float kx, float ky); static bool getConstant(const char *in, UsageHint &out); static bool getConstant(UsageHint in, const char *&out); private: void addv(const Vertex *v, int index); /** * Set the color for vertices. * * @param v The vertices to set the color for. Must be an array of * of size 4. * @param color The color to assign to each vertex. */ void setColorv(Vertex *v, const Color &color); Texture *texture; // Max number of sprites in the batch. int size; // The next free element. int next; // Current color. This color, if present, will be applied to the next // added sprite. Color *color; VertexBuffer *array_buf; VertexIndex *element_buf; static StringMap::Entry usageHintEntries[]; static StringMap usageHints; }; // SpriteBatch } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_SPRITE_BATCH_H love-0.9.1/src/modules/graphics/opengl/wrap_Mesh.h0000644000000000000000000000364412316602166022117 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_WRAP_MESH_H #define LOVE_GRAPHICS_OPENGL_WRAP_MESH_H // LOVE #include "common/runtime.h" #include "Mesh.h" namespace love { namespace graphics { namespace opengl { Mesh *luax_checkmesh(lua_State *L, int idx); int w_Mesh_setVertex(lua_State *L); int w_Mesh_getVertex(lua_State *L); int w_Mesh_setVertices(lua_State *L); int w_Mesh_getVertices(lua_State *L); int w_Mesh_getVertexCount(lua_State *L); int w_Mesh_setVertexMap(lua_State *L); int w_Mesh_getVertexMap(lua_State *L); int w_Mesh_setInstanceCount(lua_State *L); int w_Mesh_getInstanceCount(lua_State *L); int w_Mesh_setTexture(lua_State *L); int w_Mesh_getTexture(lua_State *L); int w_Mesh_setDrawMode(lua_State *L); int w_Mesh_getDrawMode(lua_State *L); int w_Mesh_setDrawRange(lua_State *L); int w_Mesh_getDrawRange(lua_State *L); int w_Mesh_setVertexColors(lua_State *L); int w_Mesh_hasVertexColors(lua_State *L); extern "C" int luaopen_mesh(lua_State *L); } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_WRAP_MESH_H love-0.9.1/src/modules/graphics/opengl/Polyline.h0000644000000000000000000001235612316602166021765 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_POLYLINE_H #define LOVE_GRAPHICS_OPENGL_POLYLINE_H #include // LOVE #include "common/Vector.h" // OpenGL #include "OpenGL.h" namespace love { namespace graphics { namespace opengl { /** * Abstract base class for a chain of segments. * @author Matthias Richter **/ class Polyline { public: Polyline(GLenum mode = GL_TRIANGLE_STRIP) : vertices(NULL) , overdraw(NULL) , vertex_count(0) , overdraw_vertex_count(0) , draw_mode(mode) {} virtual ~Polyline(); /** * @param vertices Vertices defining the core line segments * @param count Number of coordinates (= size of the array vertices) * @param size_hint Expected number of vertices of the rendering sleeve around the core line. * @param halfwidth linewidth / 2. * @param pixel_size Dimension of one pixel on the screen in world coordinates. * @param draw_overdraw Fake antialias the line. */ void render(const float *vertices, size_t count, size_t size_hint, float halfwidth, float pixel_size, bool draw_overdraw); /** Draws the line on the screen */ void draw(); protected: virtual void render_overdraw(const std::vector &normals, float pixel_size, bool is_looping); virtual void fill_color_array(Color *colors, const Color &c); /** Calculate line boundary points. * * @param[out] anchors Anchor points defining the core line. * @param[out] normals Normals defining the edge of the sleeve. * @param[in,out] s Direction of segment pq (updated to the segment qr). * @param[in,out] len_s Length of segment pq (updated to the segment qr). * @param[in,out] ns Normal on the segment pq (updated to the segment qr). * @param[in] q Current point on the line. * @param[in] r Next point on the line. * @param[in] hw Half line width (see Polyline.render()). */ virtual void renderEdge(std::vector &anchors, std::vector &normals, Vector &s, float &len_s, Vector &ns, const Vector &q, const Vector &r, float hw) = 0; Vector *vertices; Vector *overdraw; size_t vertex_count; size_t overdraw_vertex_count; GLenum draw_mode; }; // Polyline /** * A Polyline whose segments are not connected. * @author Matthias Richter */ class NoneJoinPolyline : public Polyline { public: NoneJoinPolyline() : Polyline(GL_QUADS) {} void render(const float *vertices, size_t count, float halfwidth, float pixel_size, bool draw_overdraw) { Polyline::render(vertices, count, 2 * count - 4, halfwidth, pixel_size, draw_overdraw); // discard the first and last two vertices. (these are redundant) for (size_t i = 0; i < vertex_count - 2; ++i) this->vertices[i] = this->vertices[i+2]; vertex_count -= 2; } protected: virtual void render_overdraw(const std::vector &normals, float pixel_size, bool is_looping); virtual void fill_color_array(Color *colors, const Color &c); virtual void renderEdge(std::vector &anchors, std::vector &normals, Vector &s, float &len_s, Vector &ns, const Vector &q, const Vector &r, float hw); }; /** * A Polyline whose segments are connected by a sharp edge. * @author Matthias Richter */ class MiterJoinPolyline : public Polyline { public: void render(const float *vertices, size_t count, float halfwidth, float pixel_size, bool draw_overdraw) { Polyline::render(vertices, count, count, halfwidth, pixel_size, draw_overdraw); } protected: virtual void renderEdge(std::vector &anchors, std::vector &normals, Vector &s, float &len_s, Vector &ns, const Vector &q, const Vector &r, float hw); }; /** * A Polyline whose segments are connected by a flat edge. * @author Matthias Richter */ class BevelJoinPolyline : public Polyline { public: void render(const float *vertices, size_t count, float halfwidth, float pixel_size, bool draw_overdraw) { Polyline::render(vertices, count, 2 * count - 4, halfwidth, pixel_size, draw_overdraw); } protected: virtual void renderEdge(std::vector &anchors, std::vector &normals, Vector &s, float &len_s, Vector &ns, const Vector &q, const Vector &r, float hw); }; } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_POLYLINE_H love-0.9.1/src/modules/graphics/opengl/wrap_ParticleSystem.h0000644000000000000000000001002112316602166024156 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_WRAP_PARTICLE_SYSTEM_H #define LOVE_GRAPHICS_OPENGL_WRAP_PARTICLE_SYSTEM_H // LOVE #include "common/runtime.h" #include "ParticleSystem.h" namespace love { namespace graphics { namespace opengl { ParticleSystem *luax_checkparticlesystem(lua_State *L, int idx); int w_ParticleSystem_clone(lua_State *L); int w_ParticleSystem_setTexture(lua_State *L); int w_ParticleSystem_getTexture(lua_State *L); int w_ParticleSystem_setBufferSize(lua_State *L); int w_ParticleSystem_getBufferSize(lua_State *L); int w_ParticleSystem_setInsertMode(lua_State *L); int w_ParticleSystem_getInsertMode(lua_State *L); int w_ParticleSystem_setEmissionRate(lua_State *L); int w_ParticleSystem_getEmissionRate(lua_State *L); int w_ParticleSystem_setEmitterLifetime(lua_State *L); int w_ParticleSystem_getEmitterLifetime(lua_State *L); int w_ParticleSystem_setParticleLifetime(lua_State *L); int w_ParticleSystem_getParticleLifetime(lua_State *L); int w_ParticleSystem_setPosition(lua_State *L); int w_ParticleSystem_getPosition(lua_State *L); int w_ParticleSystem_moveTo(lua_State *L); int w_ParticleSystem_setAreaSpread(lua_State *L); int w_ParticleSystem_getAreaSpread(lua_State *L); int w_ParticleSystem_setDirection(lua_State *L); int w_ParticleSystem_getDirection(lua_State *L); int w_ParticleSystem_setSpread(lua_State *L); int w_ParticleSystem_getSpread(lua_State *L); int w_ParticleSystem_setSpeed(lua_State *L); int w_ParticleSystem_getSpeed(lua_State *L); int w_ParticleSystem_setLinearAcceleration(lua_State *L); int w_ParticleSystem_getLinearAcceleration(lua_State *L); int w_ParticleSystem_setRadialAcceleration(lua_State *L); int w_ParticleSystem_getRadialAcceleration(lua_State *L); int w_ParticleSystem_setTangentialAcceleration(lua_State *L); int w_ParticleSystem_getTangentialAcceleration(lua_State *L); int w_ParticleSystem_setSizes(lua_State *L); int w_ParticleSystem_getSizes(lua_State *L); int w_ParticleSystem_setSizeVariation(lua_State *L); int w_ParticleSystem_getSizeVariation(lua_State *L); int w_ParticleSystem_setRotation(lua_State *L); int w_ParticleSystem_getRotation(lua_State *L); int w_ParticleSystem_setSpin(lua_State *L); int w_ParticleSystem_getSpin(lua_State *L); int w_ParticleSystem_setSpinVariation(lua_State *L); int w_ParticleSystem_getSpinVariation(lua_State *L); int w_ParticleSystem_setColors(lua_State *L); int w_ParticleSystem_getColors(lua_State *L); int w_ParticleSystem_setOffset(lua_State *L); int w_ParticleSystem_getOffset(lua_State *L); int w_ParticleSystem_setRelativeRotation(lua_State *L); int w_ParticleSystem_hasRelativeRotation(lua_State *L); int w_ParticleSystem_getCount(lua_State *L); int w_ParticleSystem_start(lua_State *L); int w_ParticleSystem_stop(lua_State *L); int w_ParticleSystem_pause(lua_State *L); int w_ParticleSystem_reset(lua_State *L); int w_ParticleSystem_emit(lua_State *L); int w_ParticleSystem_isActive(lua_State *L); int w_ParticleSystem_isPaused(lua_State *L); int w_ParticleSystem_isStopped(lua_State *L); int w_ParticleSystem_update(lua_State *L); extern "C" int luaopen_particlesystem(lua_State *L); } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_WRAP_PARTICLE_SYSTEM_H love-0.9.1/src/modules/graphics/opengl/wrap_Graphics.h0000644000000000000000000000733312316602166022762 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_GRAPHICS_OPENGL_WRAP_GRAPHICS_H #define LOVE_GRAPHICS_OPENGL_WRAP_GRAPHICS_H // LOVE #include "wrap_Font.h" #include "wrap_Image.h" #include "wrap_Quad.h" #include "wrap_SpriteBatch.h" #include "wrap_ParticleSystem.h" #include "wrap_Canvas.h" #include "wrap_Shader.h" #include "wrap_Mesh.h" #include "Graphics.h" namespace love { namespace graphics { namespace opengl { int w_reset(lua_State *L); int w_clear(lua_State *L); int w_present(lua_State *L); int w_isCreated(lua_State *L); int w_getWidth(lua_State *L); int w_getHeight(lua_State *L); int w_getDimensions(lua_State *L); int w_setScissor(lua_State *L); int w_getScissor(lua_State *L); int w_setStencil(lua_State *L); int w_setInvertedStencil(lua_State *L); int w_getMaxTextureSize(lua_State *L); int w_newImage(lua_State *L); int w_newQuad(lua_State *L); int w_newFont(lua_State *L); int w_newImageFont(lua_State *L); int w_newSpriteBatch(lua_State *L); int w_newParticleSystem(lua_State *L); int w_newCanvas(lua_State *L); // comments in function int w_newShader(lua_State *L); int w_newMesh(lua_State *L); int w_setColor(lua_State *L); int w_getColor(lua_State *L); int w_setBackgroundColor(lua_State *L); int w_getBackgroundColor(lua_State *L); int w_setFont(lua_State *L); int w_getFont(lua_State *L); int w_setColorMask(lua_State *L); int w_getColorMask(lua_State *L); int w_setBlendMode(lua_State *L); int w_getBlendMode(lua_State *L); int w_setDefaultFilter(lua_State *L); int w_getDefaultFilter(lua_State *L); int w_setDefaultMipmapFilter(lua_State *L); int w_getDefaultMipmapFilter(lua_State *L); int w_setLineWidth(lua_State *L); int w_setLineStyle(lua_State *L); int w_setLineJoin(lua_State *L); int w_getLineWidth(lua_State *L); int w_getLineStyle(lua_State *L); int w_getLineJoin(lua_State *L); int w_setPointSize(lua_State *L); int w_setPointStyle(lua_State *L); int w_getPointSize(lua_State *L); int w_getPointStyle(lua_State *L); int w_getMaxPointSize(lua_State *L); int w_setWireframe(lua_State *L); int w_isWireframe(lua_State *L); int w_newScreenshot(lua_State *L); int w_setCanvas(lua_State *L); int w_getCanvas(lua_State *L); int w_setShader(lua_State *L); int w_getShader(lua_State *L); int w_isSupported(lua_State *L); int w_getRendererInfo(lua_State *L); int w_getSystemLimit(lua_State *L); int w_draw(lua_State *L); int w_print(lua_State *L); int w_printf(lua_State *L); int w_point(lua_State *L); int w_line(lua_State *L); int w_rectangle(lua_State *L); int w_circle(lua_State *L); int w_arc(lua_State *L); int w_polygon(lua_State *L); int w_push(lua_State *L); int w_pop(lua_State *L); int w_rotate(lua_State *L); int w_scale(lua_State *L); int w_translate(lua_State *L); int w_shear(lua_State *L); int w_origin(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_graphics(lua_State *L); } // opengl } // graphics } // love #endif // LOVE_GRAPHICS_OPENGL_WRAP_GRAPHICS_H love-0.9.1/src/modules/window/0000755000000000000000000000000012316602463016235 5ustar00rootroot00000000000000love-0.9.1/src/modules/window/Window.cpp0000644000000000000000000000542112316602166020212 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "Window.h" namespace love { namespace window { Window *Window::singleton = nullptr; Window::~Window() { if (singleton == this) singleton = nullptr; } void Window::swapBuffers() { } WindowSettings::WindowSettings() : fullscreen(false) , fstype(Window::FULLSCREEN_TYPE_NORMAL) , vsync(true) , fsaa(0) , resizable(false) , minwidth(1) , minheight(1) , borderless(false) , centered(true) , display(0) , highdpi(false) , sRGB(false) { } bool Window::getConstant(const char *in, Window::FullscreenType &out) { return fullscreenTypes.find(in, out); } bool Window::getConstant(Window::FullscreenType in, const char *&out) { return fullscreenTypes.find(in, out); } bool Window::getConstant(const char *in, Window::Setting &out) { return settings.find(in, out); } bool Window::getConstant(Window::Setting in, const char *&out) { return settings.find(in, out); } StringMap::Entry Window::settingEntries[] = { {"fullscreen", SETTING_FULLSCREEN}, {"fullscreentype", SETTING_FULLSCREEN_TYPE}, {"vsync", SETTING_VSYNC}, {"fsaa", SETTING_FSAA}, {"resizable", SETTING_RESIZABLE}, {"minwidth", SETTING_MIN_WIDTH}, {"minheight", SETTING_MIN_HEIGHT}, {"borderless", SETTING_BORDERLESS}, {"centered", SETTING_CENTERED}, {"display", SETTING_DISPLAY}, {"highdpi", SETTING_HIGHDPI}, {"srgb", SETTING_SRGB}, }; StringMap Window::settings(Window::settingEntries, sizeof(Window::settingEntries)); StringMap::Entry Window::fullscreenTypeEntries[] = { {"normal", Window::FULLSCREEN_TYPE_NORMAL}, {"desktop", Window::FULLSCREEN_TYPE_DESKTOP}, }; StringMap Window::fullscreenTypes(Window::fullscreenTypeEntries, sizeof(Window::fullscreenTypeEntries)); } // window } // love love-0.9.1/src/modules/window/wrap_Window.h0000644000000000000000000000344712316602166020716 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_WINDOW_WRAP_WINDOW_H #define LOVE_WINDOW_WRAP_WINDOW_H #include "common/config.h" #include "common/runtime.h" namespace love { namespace window { int w_getDisplayCount(lua_State *L); int w_setMode(lua_State *L); int w_getMode(lua_State *L); int w_getFullscreenModes(lua_State *L); int w_setFullscreen(lua_State *L); int w_getFullscreen(lua_State *L); int w_isCreated(lua_State *L); int w_getWidth(lua_State *L); int w_getHeight(lua_State *L); int w_getDimensions(lua_State *L); int w_getDesktopDimensions(lua_State *L); int w_setIcon(lua_State *L); int w_getIcon(lua_State *L); int w_setTitle(lua_State *L); int w_getTitle(lua_State *L); int w_hasFocus(lua_State *L); int w_hasMouseFocus(lua_State *L); int w_isVisible(lua_State *L); int w_getPixelScale(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_window(lua_State *L); } // window } // love #endif // LOVE_WINDOW_WRAP_WINDOW_H love-0.9.1/src/modules/window/wrap_Window.cpp0000644000000000000000000002154112316602166021244 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "wrap_Window.h" #include "sdl/Window.h" namespace love { namespace window { static Window *instance = nullptr; int w_getDisplayCount(lua_State *L) { lua_pushinteger(L, instance->getDisplayCount()); return 1; } static const char *settingName(Window::Setting setting) { const char *name = nullptr; Window::getConstant(setting, name); return name; } int w_setMode(lua_State *L) { int w = luaL_checkint(L, 1); int h = luaL_checkint(L, 2); if (lua_isnoneornil(L, 3)) { luax_pushboolean(L, instance->setWindow(w, h, 0)); return 1; } luaL_checktype(L, 3, LUA_TTABLE); // We want to error for invalid / misspelled window attributes. lua_pushnil(L); while (lua_next(L, 3)) { if (lua_type(L, -2) != LUA_TSTRING) return luax_typerror(L, -2, "string"); const char *key = luaL_checkstring(L, -2); Window::Setting setting; if (!Window::getConstant(key, setting)) return luaL_error(L, "Invalid window setting: %s", key); lua_pop(L, 1); } WindowSettings settings; lua_getfield(L, 3, settingName(Window::SETTING_FULLSCREEN_TYPE)); if (!lua_isnoneornil(L, -1)) { const char *typestr = luaL_checkstring(L, -1); if (!Window::getConstant(typestr, settings.fstype)) return luaL_error(L, "Invalid fullscreen type: %s", typestr); } else { // Default to "normal" fullscreen. settings.fstype = Window::FULLSCREEN_TYPE_NORMAL; } lua_pop(L, 1); settings.fullscreen = luax_boolflag(L, 3, settingName(Window::SETTING_FULLSCREEN), false); settings.vsync = luax_boolflag(L, 3, settingName(Window::SETTING_VSYNC), true); settings.fsaa = luax_intflag(L, 3, settingName(Window::SETTING_FSAA), 0); settings.resizable = luax_boolflag(L, 3, settingName(Window::SETTING_RESIZABLE), false); settings.minwidth = luax_intflag(L, 3, settingName(Window::SETTING_MIN_WIDTH), 1); settings.minheight = luax_intflag(L, 3, settingName(Window::SETTING_MIN_HEIGHT), 1); settings.borderless = luax_boolflag(L, 3, settingName(Window::SETTING_BORDERLESS), false); settings.centered = luax_boolflag(L, 3, settingName(Window::SETTING_CENTERED), true); settings.display = luax_intflag(L, 3, settingName(Window::SETTING_DISPLAY), 1); settings.highdpi = luax_boolflag(L, 3, settingName(Window::SETTING_HIGHDPI), false); settings.sRGB = luax_boolflag(L, 3, settingName(Window::SETTING_SRGB), false); // Display index is 1-based in Lua and 0-based internally. settings.display--; EXCEPT_GUARD(luax_pushboolean(L, instance->setWindow(w, h, &settings));) return 1; } int w_getMode(lua_State *L) { int w, h; WindowSettings settings; instance->getWindow(w, h, settings); lua_pushnumber(L, w); lua_pushnumber(L, h); lua_newtable(L); const char *fstypestr = "normal"; Window::getConstant(settings.fstype, fstypestr); lua_pushstring(L, fstypestr); lua_setfield(L, -2, settingName(Window::SETTING_FULLSCREEN_TYPE)); luax_pushboolean(L, settings.fullscreen); lua_setfield(L, -2, settingName(Window::SETTING_FULLSCREEN)); luax_pushboolean(L, settings.vsync); lua_setfield(L, -2, settingName(Window::SETTING_VSYNC)); lua_pushinteger(L, settings.fsaa); lua_setfield(L, -2, settingName(Window::SETTING_FSAA)); luax_pushboolean(L, settings.resizable); lua_setfield(L, -2, settingName(Window::SETTING_RESIZABLE)); lua_pushinteger(L, settings.minwidth); lua_setfield(L, -2, settingName(Window::SETTING_MIN_WIDTH)); lua_pushinteger(L, settings.minheight); lua_setfield(L, -2, settingName(Window::SETTING_MIN_HEIGHT)); luax_pushboolean(L, settings.borderless); lua_setfield(L, -2, settingName(Window::SETTING_BORDERLESS)); luax_pushboolean(L, settings.centered); lua_setfield(L, -2, settingName(Window::SETTING_CENTERED)); // Display index is 0-based internally and 1-based in Lua. lua_pushinteger(L, settings.display + 1); lua_setfield(L, -2, settingName(Window::SETTING_DISPLAY)); luax_pushboolean(L, settings.highdpi); lua_setfield(L, -2, settingName(Window::SETTING_HIGHDPI)); luax_pushboolean(L, settings.sRGB); lua_setfield(L, -2, settingName(Window::SETTING_SRGB)); return 3; } int w_getFullscreenModes(lua_State *L) { int displayindex = luaL_optint(L, 1, 1) - 1; std::vector modes = instance->getFullscreenSizes(displayindex); lua_createtable(L, modes.size(), 0); for (size_t i = 0; i < modes.size(); i++) { lua_pushinteger(L, i+1); lua_createtable(L, 0, 2); // Inner table attribs. lua_pushinteger(L, modes[i].width); lua_setfield(L, -2, "width"); lua_pushinteger(L, modes[i].height); lua_setfield(L, -2, "height"); // Inner table attribs end. lua_settable(L, -3); } return 1; } int w_setFullscreen(lua_State *L) { bool fullscreen = luax_toboolean(L, 1); Window::FullscreenType fstype = Window::FULLSCREEN_TYPE_MAX_ENUM; const char *typestr = lua_isnoneornil(L, 2) ? 0 : luaL_checkstring(L, 2); if (typestr && !Window::getConstant(typestr, fstype)) return luaL_error(L, "Invalid fullscreen type: %s", typestr); bool success = false; if (fstype == Window::FULLSCREEN_TYPE_MAX_ENUM) success = instance->setFullscreen(fullscreen); else success = instance->setFullscreen(fullscreen, fstype); luax_pushboolean(L, success); return 1; } int w_getFullscreen(lua_State *L) { int w, h; WindowSettings settings; instance->getWindow(w, h, settings); const char *typestr; if (!Window::getConstant(settings.fstype, typestr)) luaL_error(L, "Unknown fullscreen type."); luax_pushboolean(L, settings.fullscreen); lua_pushstring(L, typestr); return 2; } int w_isCreated(lua_State *L) { luax_pushboolean(L, instance->isCreated()); return 1; } int w_getWidth(lua_State *L) { lua_pushinteger(L, instance->getWidth()); return 1; } int w_getHeight(lua_State *L) { lua_pushinteger(L, instance->getHeight()); return 1; } int w_getDimensions(lua_State *L) { lua_pushinteger(L, instance->getWidth()); lua_pushinteger(L, instance->getHeight()); return 2; } int w_getDesktopDimensions(lua_State *L) { int width = 0, height = 0; int displayindex = luaL_optint(L, 1, 1) - 1; instance->getDesktopDimensions(displayindex, width, height); lua_pushinteger(L, width); lua_pushinteger(L, height); return 2; } int w_setIcon(lua_State *L) { image::ImageData *i = luax_checktype(L, 1, "ImageData", IMAGE_IMAGE_DATA_T); luax_pushboolean(L, instance->setIcon(i)); return 1; } int w_getIcon(lua_State *L) { image::ImageData *i = instance->getIcon(); if (i) { i->retain(); luax_pushtype(L, "ImageData", IMAGE_IMAGE_DATA_T, i); } else lua_pushnil(L); return 1; } int w_setTitle(lua_State *L) { std::string title = luax_checkstring(L, 1); instance->setWindowTitle(title); return 0; } int w_getTitle(lua_State *L) { luax_pushstring(L, instance->getWindowTitle()); return 1; } int w_hasFocus(lua_State *L) { luax_pushboolean(L, instance->hasFocus()); return 1; } int w_hasMouseFocus(lua_State *L) { luax_pushboolean(L, instance->hasMouseFocus()); return 1; } int w_isVisible(lua_State *L) { luax_pushboolean(L, instance->isVisible()); return 1; } int w_getPixelScale(lua_State *L) { lua_pushnumber(L, instance->getPixelScale()); return 1; } static const luaL_Reg functions[] = { { "getDisplayCount", w_getDisplayCount }, { "setMode", w_setMode }, { "getMode", w_getMode }, { "getFullscreenModes", w_getFullscreenModes }, { "setFullscreen", w_setFullscreen }, { "getFullscreen", w_getFullscreen }, { "isCreated", w_isCreated }, { "getWidth", w_getWidth }, { "getHeight", w_getHeight }, { "getDimensions", w_getDimensions }, { "getDesktopDimensions", w_getDesktopDimensions }, { "setIcon", w_setIcon }, { "getIcon", w_getIcon }, { "setTitle", w_setTitle }, { "getTitle", w_getTitle }, { "hasFocus", w_hasFocus }, { "hasMouseFocus", w_hasMouseFocus }, { "isVisible", w_isVisible }, { "getPixelScale", w_getPixelScale }, { 0, 0 } }; extern "C" int luaopen_love_window(lua_State *L) { EXCEPT_GUARD(instance = sdl::Window::createSingleton();) WrappedModule w; w.module = instance; w.name = "window"; w.flags = MODULE_T; w.functions = functions; w.types = 0; return luax_register_module(L, w); } } // window } // love love-0.9.1/src/modules/window/Window.h0000644000000000000000000001053312316602166017657 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_WINDOW_WINDOW_H #define LOVE_WINDOW_WINDOW_H // LOVE #include "common/Module.h" #include "common/StringMap.h" #include "image/ImageData.h" // C++ #include #include namespace love { namespace window { // Forward-declared so it can be used in the class methods. We can't define the // whole thing here because it uses the Window::Type enum. struct WindowSettings; class Window : public Module { public: // Different window settings. enum Setting { SETTING_FULLSCREEN, SETTING_FULLSCREEN_TYPE, SETTING_VSYNC, SETTING_FSAA, SETTING_RESIZABLE, SETTING_MIN_WIDTH, SETTING_MIN_HEIGHT, SETTING_BORDERLESS, SETTING_CENTERED, SETTING_DISPLAY, SETTING_HIGHDPI, SETTING_SRGB, SETTING_MAX_ENUM }; enum FullscreenType { FULLSCREEN_TYPE_NORMAL, FULLSCREEN_TYPE_DESKTOP, FULLSCREEN_TYPE_MAX_ENUM }; struct WindowSize { int width; int height; }; virtual ~Window(); virtual bool setWindow(int width = 800, int height = 600, WindowSettings *settings = nullptr) = 0; virtual void getWindow(int &width, int &height, WindowSettings &settings) = 0; virtual bool setFullscreen(bool fullscreen, FullscreenType fstype) = 0; virtual bool setFullscreen(bool fullscreen) = 0; virtual bool onWindowResize(int width, int height) = 0; virtual int getDisplayCount() const = 0; virtual std::vector getFullscreenSizes(int displayindex) const = 0; virtual int getWidth() const = 0; virtual int getHeight() const = 0; virtual void getDesktopDimensions(int displayindex, int &width, int &height) const = 0; virtual bool isCreated() const = 0; virtual void setWindowTitle(const std::string &title) = 0; virtual const std::string &getWindowTitle() const = 0; virtual bool setIcon(love::image::ImageData *imgd) = 0; virtual love::image::ImageData *getIcon() = 0; // default no-op implementation virtual void swapBuffers(); virtual bool hasFocus() const = 0; virtual bool hasMouseFocus() const = 0; virtual bool isVisible() const = 0; virtual void setMouseVisible(bool visible) = 0; virtual bool getMouseVisible() const = 0; virtual void setMouseGrab(bool grab) = 0; virtual bool isMouseGrabbed() const = 0; virtual double getPixelScale() const = 0; virtual const void *getHandle() const = 0; //virtual static Window *createSingleton() = 0; //virtual static Window *getSingleton() = 0; // No virtual statics, of course, but you are supposed to implement these statics. static bool getConstant(const char *in, Setting &out); static bool getConstant(Setting in, const char *&out); static bool getConstant(const char *in, FullscreenType &out); static bool getConstant(FullscreenType in, const char *&out); protected: static Window *singleton; private: static StringMap::Entry settingEntries[]; static StringMap settings; static StringMap::Entry fullscreenTypeEntries[]; static StringMap fullscreenTypes; }; // Window struct WindowSettings { WindowSettings(); bool fullscreen; // = false Window::FullscreenType fstype; // = FULLSCREEN_TYPE_NORMAL bool vsync; // = true int fsaa; // = 0 bool resizable; // = false int minwidth; // = 1 int minheight; // = 1 bool borderless; // = false bool centered; // = true int display; // = 0 bool highdpi; // false bool sRGB; // false }; // WindowSettings } // window } // love #endif // LOVE_WINDOW_WINDOW_H love-0.9.1/src/modules/window/sdl/0000755000000000000000000000000012316602463017017 5ustar00rootroot00000000000000love-0.9.1/src/modules/window/sdl/Window.cpp0000644000000000000000000003761512316602166021006 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "common/config.h" #include "graphics/Graphics.h" #include "Window.h" // C++ #include #include #include namespace love { namespace window { namespace sdl { Window::Window() : windowTitle("") , created(false) , mouseGrabbed(false) , window(0) , context(0) { if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0) throw love::Exception("%s", SDL_GetError()); } Window::~Window() { if (curMode.icon) curMode.icon->release(); if (window) SDL_DestroyWindow(window); if (context) SDL_GL_DeleteContext(context); SDL_QuitSubSystem(SDL_INIT_VIDEO); } Window::_currentMode::_currentMode() : width(800) , height(600) , settings() , icon(0) { } bool Window::setWindow(int width, int height, WindowSettings *settings) { WindowSettings f; if (settings) f = *settings; f.minwidth = std::max(f.minwidth, 1); f.minheight = std::max(f.minheight, 1); f.display = std::min(std::max(f.display, 0), getDisplayCount() - 1); // Use the desktop resolution if a width or height of 0 is specified. if (width == 0 || height == 0) { SDL_DisplayMode mode = {}; SDL_GetDesktopDisplayMode(f.display, &mode); width = mode.w; height = mode.h; } Uint32 sdlflags = SDL_WINDOW_OPENGL; if (f.fullscreen) { if (f.fstype == FULLSCREEN_TYPE_DESKTOP) sdlflags |= SDL_WINDOW_FULLSCREEN_DESKTOP; else { sdlflags |= SDL_WINDOW_FULLSCREEN; // Fullscreen window creation will bug out if no mode can be used. SDL_DisplayMode mode = {0, width, height, 0, 0}; if (SDL_GetClosestDisplayMode(f.display, &mode, &mode) == 0) return false; } } if (f.resizable) sdlflags |= SDL_WINDOW_RESIZABLE; if (f.borderless) sdlflags |= SDL_WINDOW_BORDERLESS; // FIXME: disabled in Linux for runtime SDL 2.0.0 compatibility. #if SDL_VERSION_ATLEAST(2,0,1) && !defined(LOVE_LINUX) if (f.highdpi) sdlflags |= SDL_WINDOW_ALLOW_HIGHDPI; #endif graphics::Graphics *gfx = (graphics::Graphics *) Module::findInstance("love.graphics."); if (gfx != nullptr) gfx->unSetMode(); // Destroy and recreate the window if the dimensions or flags have changed. if (window) { int curdisplay = SDL_GetWindowDisplayIndex(window); Uint32 wflags = SDL_GetWindowFlags(window); Uint32 testflags = SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_RESIZABLE | SDL_WINDOW_BORDERLESS; // FIXME: disabled in Linux for runtime SDL 2.0.0 compatibility. #if SDL_VERSION_ATLEAST(2,0,1) && !defined(LOVE_LINUX) testflags |= SDL_WINDOW_ALLOW_HIGHDPI; #endif wflags &= testflags; if (sdlflags != wflags || width != curMode.width || height != curMode.height || f.display != curdisplay || f.fsaa != curMode.settings.fsaa) { SDL_DestroyWindow(window); window = 0; // The old window may have generated pending events which are no // longer relevant. Destroy them all! SDL_FlushEvent(SDL_WINDOWEVENT); } } int centeredpos = SDL_WINDOWPOS_CENTERED_DISPLAY(f.display); int uncenteredpos = SDL_WINDOWPOS_UNDEFINED_DISPLAY(f.display); if (!window) { created = false; // In Windows and Linux, some GL attributes are set on window creation. setWindowGLAttributes(f.fsaa, f.sRGB); const char *title = windowTitle.c_str(); int pos = f.centered ? centeredpos : uncenteredpos; window = SDL_CreateWindow(title, pos, pos, width, height, sdlflags); if (!window && f.fsaa > 0) { // FSAA might have caused the failure, disable it and try again. SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 0); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0); window = SDL_CreateWindow(title, pos, pos, width, height, sdlflags); f.fsaa = 0; } // Make sure the window keeps any previously set icon. if (window && curMode.icon) setIcon(curMode.icon); } if (!window) { std::cerr << "Could not set video mode: " << SDL_GetError() << std::endl; return false; } // Enforce minimum window dimensions. SDL_SetWindowMinimumSize(window, f.minwidth, f.minheight); if (f.centered && !f.fullscreen) SDL_SetWindowPosition(window, centeredpos, centeredpos); SDL_RaiseWindow(window); if (!setContext(f.fsaa, f.vsync, f.sRGB)) return false; created = true; updateSettings(f); if (gfx != nullptr) { int width = curMode.width; int height = curMode.height; // FIXME: disabled in Linux for runtime SDL 2.0.0 compatibility. #if SDL_VERSION_ATLEAST(2,0,1) && !defined(LOVE_LINUX) SDL_GL_GetDrawableSize(window, &width, &height); #endif gfx->setMode(width, height, curMode.settings.sRGB); } // Make sure the mouse keeps its previous grab setting. setMouseGrab(mouseGrabbed); return true; } bool Window::onWindowResize(int width, int height) { if (!window) return false; curMode.width = width; curMode.height = height; return true; } bool Window::setContext(int fsaa, bool vsync, bool sRGB) { // We would normally only need to recreate the context if FSAA changes or // SDL_GL_MakeCurrent is unsuccessful, but in Windows MakeCurrent can // sometimes claim success but the context will actually be trashed. if (context) { SDL_GL_DeleteContext(context); context = 0; } // Make sure the proper attributes are set. setWindowGLAttributes(fsaa, sRGB); context = SDL_GL_CreateContext(window); if (!context && fsaa > 0) { // FSAA might have caused the failure, disable it and try again. SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 0); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0); context = SDL_GL_CreateContext(window); } if (!context) { int flags = 0; SDL_GL_GetAttribute(SDL_GL_CONTEXT_FLAGS, &flags); if (flags & SDL_GL_CONTEXT_DEBUG_FLAG) { SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, 0); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, 0); context = SDL_GL_CreateContext(window); } } if (!context) { std::cerr << "Could not set video mode: " << SDL_GetError() << std::endl; return false; } // Set vertical synchronization. SDL_GL_SetSwapInterval(vsync ? 1 : 0); // Verify FSAA setting. int buffers; int samples; SDL_GL_GetAttribute(SDL_GL_MULTISAMPLEBUFFERS, &buffers); SDL_GL_GetAttribute(SDL_GL_MULTISAMPLESAMPLES, &samples); // Don't fail because of this, but issue a warning. if ((!buffers && fsaa) || (samples != fsaa)) { std::cerr << "Warning, FSAA setting failed! (Result: buffers: " << buffers << ", samples: " << samples << ")" << std::endl; fsaa = (buffers > 0) ? samples : 0; } curMode.settings.fsaa = fsaa; curMode.settings.vsync = SDL_GL_GetSwapInterval() != 0; return true; } void Window::setWindowGLAttributes(int fsaa, bool /* sRGB */) const { // Set GL window attributes. SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1); // FSAA. SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, (fsaa > 0) ? 1 : 0); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, (fsaa > 0) ? fsaa : 0); /* FIXME: Enable this code but make sure to try to re-create the window and * context with this disabled, if creation fails with it enabled. * We can leave this out for now because in practice the framebuffer will * already be sRGB-capable (on desktops at least.) #if SDL_VERSION_ATLEAST(2,0,1) SDL_GL_SetAttribute(SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, sRGB ? 1 : 0); #endif */ // Do we want a debug context? const char *debugenv = SDL_GetHint("LOVE_GRAPHICS_DEBUG"); if (debugenv && *debugenv == '1') { SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY); } else { SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, 0); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, 0); } } void Window::updateSettings(const WindowSettings &newsettings) { Uint32 wflags = SDL_GetWindowFlags(window); // Set the new display mode as the current display mode. SDL_GetWindowSize(window, &curMode.width, &curMode.height); if ((wflags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { curMode.settings.fullscreen = true; curMode.settings.fstype = FULLSCREEN_TYPE_DESKTOP; } else if ((wflags & SDL_WINDOW_FULLSCREEN) == SDL_WINDOW_FULLSCREEN) { curMode.settings.fullscreen = true; curMode.settings.fstype = FULLSCREEN_TYPE_NORMAL; } else { curMode.settings.fullscreen = false; curMode.settings.fstype = newsettings.fstype; } // The min width/height is set to 0 internally in SDL when in fullscreen. if (curMode.settings.fullscreen) { curMode.settings.minwidth = newsettings.minwidth; curMode.settings.minheight = newsettings.minheight; } else SDL_GetWindowMinimumSize(window, &curMode.settings.minwidth, &curMode.settings.minheight); curMode.settings.resizable = (wflags & SDL_WINDOW_RESIZABLE) != 0; curMode.settings.borderless = (wflags & SDL_WINDOW_BORDERLESS) != 0; curMode.settings.centered = newsettings.centered; curMode.settings.display = std::max(SDL_GetWindowDisplayIndex(window), 0); #if SDL_VERSION_ATLEAST(2,0,1) curMode.settings.highdpi = (wflags & SDL_WINDOW_ALLOW_HIGHDPI) != 0; #else curMode.settings.highdpi = false; #endif // Only minimize on focus loss if the window is in exclusive-fullscreen // mode. if (curMode.settings.fullscreen && curMode.settings.fstype == FULLSCREEN_TYPE_NORMAL) SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "1"); else SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0"); curMode.settings.sRGB = newsettings.sRGB; } void Window::getWindow(int &width, int &height, WindowSettings &settings) { // The window might have been modified (moved, resized, etc.) by the user. if (window) updateSettings(curMode.settings); width = curMode.width; height = curMode.height; settings = curMode.settings; } bool Window::setFullscreen(bool fullscreen, Window::FullscreenType fstype) { if (!window) return false; WindowSettings newsettings = curMode.settings; newsettings.fullscreen = fullscreen; newsettings.fstype = fstype; Uint32 sdlflags = 0; if (fullscreen) { if (fstype == FULLSCREEN_TYPE_DESKTOP) sdlflags = SDL_WINDOW_FULLSCREEN_DESKTOP; else { sdlflags = SDL_WINDOW_FULLSCREEN; SDL_DisplayMode mode = {}; mode.w = curMode.width; mode.h = curMode.height; SDL_GetClosestDisplayMode(SDL_GetWindowDisplayIndex(window), &mode, &mode); SDL_SetWindowDisplayMode(window, &mode); } } if (SDL_SetWindowFullscreen(window, sdlflags) == 0) { SDL_GL_MakeCurrent(window, context); updateSettings(newsettings); // Update the viewport size now instead of waiting for event polling. graphics::Graphics *gfx = (graphics::Graphics *) Module::findInstance("love.graphics."); if (gfx != nullptr) { int width = curMode.width; int height = curMode.height; // FIXME: disabled in Linux for runtime SDL 2.0.0 compatibility. #if SDL_VERSION_ATLEAST(2,0,1) && !defined(LOVE_LINUX) SDL_GL_GetDrawableSize(window, &width, &height); #endif gfx->setViewportSize(width, height); } return true; } return false; } bool Window::setFullscreen(bool fullscreen) { return setFullscreen(fullscreen, curMode.settings.fstype); } int Window::getDisplayCount() const { return SDL_GetNumVideoDisplays(); } typedef Window::WindowSize WindowSize; std::vector Window::getFullscreenSizes(int displayindex) const { std::vector sizes; SDL_DisplayMode mode = {}; std::vector::const_iterator it; for (int i = 0; i < SDL_GetNumDisplayModes(displayindex); i++) { SDL_GetDisplayMode(displayindex, i, &mode); // SDL2's display mode list has multiple entries for modes of the same // size with different bits per pixel, so we need to filter those out. bool alreadyhassize = false; for (it = sizes.begin(); it != sizes.end(); ++it) { if (it->width == mode.w && it->height == mode.h) { alreadyhassize = true; break; } } if (!alreadyhassize) { WindowSize w = {mode.w, mode.h}; sizes.push_back(w); } } return sizes; } int Window::getWidth() const { return curMode.width; } int Window::getHeight() const { return curMode.height; } void Window::getDesktopDimensions(int displayindex, int &width, int &height) const { if (displayindex >= 0 && displayindex < getDisplayCount()) { SDL_DisplayMode mode = {}; SDL_GetDesktopDisplayMode(displayindex, &mode); width = mode.w; height = mode.h; } else { width = 0; height = 0; } } bool Window::isCreated() const { return created; } void Window::setWindowTitle(const std::string &title) { windowTitle = title; if (window) SDL_SetWindowTitle(window, title.c_str()); } const std::string &Window::getWindowTitle() const { return windowTitle; } bool Window::setIcon(love::image::ImageData *imgd) { if (!imgd) return false; imgd->retain(); if (curMode.icon) curMode.icon->release(); curMode.icon = imgd; if (!window) return false; Uint32 rmask, gmask, bmask, amask; #ifdef LOVE_BIG_ENDIAN rmask = 0xFF000000; gmask = 0x00FF0000; bmask = 0x0000FF00; amask = 0x000000FF; #else rmask = 0x000000FF; gmask = 0x0000FF00; bmask = 0x00FF0000; amask = 0xFF000000; #endif int w = imgd->getWidth(); int h = imgd->getHeight(); int pitch = imgd->getWidth() * 4; SDL_Surface *sdlicon = 0; { // We don't want another thread modifying the ImageData mid-copy. love::thread::Lock lock(imgd->getMutex()); sdlicon = SDL_CreateRGBSurfaceFrom(imgd->getData(), w, h, 32, pitch, rmask, gmask, bmask, amask); } if (!sdlicon) return false; SDL_SetWindowIcon(window, sdlicon); SDL_FreeSurface(sdlicon); return true; } love::image::ImageData *Window::getIcon() { return curMode.icon; } void Window::swapBuffers() { SDL_GL_SwapWindow(window); } bool Window::hasFocus() const { return (window && SDL_GetKeyboardFocus() == window); } bool Window::hasMouseFocus() const { return (window && SDL_GetMouseFocus() == window); } bool Window::isVisible() const { return window && (SDL_GetWindowFlags(window) & SDL_WINDOW_SHOWN) != 0; } void Window::setMouseVisible(bool visible) { SDL_ShowCursor(visible ? SDL_ENABLE : SDL_DISABLE); } bool Window::getMouseVisible() const { return (SDL_ShowCursor(SDL_QUERY) == SDL_ENABLE); } void Window::setMouseGrab(bool grab) { mouseGrabbed = grab; if (window) SDL_SetWindowGrab(window, (SDL_bool) grab); } bool Window::isMouseGrabbed() const { if (window) return (bool) SDL_GetWindowGrab(window); else return mouseGrabbed; } double Window::getPixelScale() const { double scale = 1.0; // FIXME: disabled in Linux for runtime SDL 2.0.0 compatibility. #if SDL_VERSION_ATLEAST(2,0,1) && !defined(LOVE_LINUX) if (window) { int wheight; SDL_GetWindowSize(window, nullptr, &wheight); int dheight = wheight; SDL_GL_GetDrawableSize(window, nullptr, &dheight); scale = (double) dheight / wheight; } #endif return scale; } const void *Window::getHandle() const { return window; } love::window::Window *Window::createSingleton() { if (!singleton) singleton = new Window(); else singleton->retain(); return singleton; } love::window::Window *Window::getSingleton() { return singleton; } const char *Window::getName() const { return "love.window.sdl"; } } // sdl } // window } // love love-0.9.1/src/modules/window/sdl/Window.h0000644000000000000000000000554612316602166020451 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_WINDOW_SDL_WINDOW_H #define LOVE_WINDOW_SDL_WINDOW_H // LOVE #include "window/Window.h" // SDL #include namespace love { namespace window { namespace sdl { class Window : public love::window::Window { public: Window(); ~Window(); bool setWindow(int width = 800, int height = 600, WindowSettings *settings = nullptr); void getWindow(int &width, int &height, WindowSettings &settings); bool setFullscreen(bool fullscreen, FullscreenType fstype); bool setFullscreen(bool fullscreen); bool onWindowResize(int width, int height); int getDisplayCount() const; std::vector getFullscreenSizes(int displayindex) const; int getWidth() const; int getHeight() const; void getDesktopDimensions(int displayindex, int &width, int &height) const; bool isCreated() const; void setWindowTitle(const std::string &title); const std::string &getWindowTitle() const; bool setIcon(love::image::ImageData *imgd); love::image::ImageData *getIcon(); void swapBuffers(); bool hasFocus() const; bool hasMouseFocus() const; bool isVisible() const; void setMouseVisible(bool visible); bool getMouseVisible() const; void setMouseGrab(bool grab); bool isMouseGrabbed() const; double getPixelScale() const; const void *getHandle() const; static love::window::Window *createSingleton(); static love::window::Window *getSingleton(); const char *getName() const; private: bool setContext(int fsaa, bool vsync, bool sRGB); void setWindowGLAttributes(int fsaa, bool sRGB) const; // Update the saved window settings based on the window's actual state. void updateSettings(const WindowSettings &newsettings); std::string windowTitle; struct _currentMode { _currentMode(); int width; int height; WindowSettings settings; love::image::ImageData *icon; } curMode; bool created; bool mouseGrabbed; SDL_Window *window; SDL_GLContext context; }; // Window } // sdl } // window } // love #endif // LOVE_WINDOW_WINDOW_H love-0.9.1/src/modules/timer/0000755000000000000000000000000012316602463016046 5ustar00rootroot00000000000000love-0.9.1/src/modules/timer/wrap_Timer.cpp0000644000000000000000000000417112316602166020666 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "common/config.h" // LOVE #include "wrap_Timer.h" #include "sdl/Timer.h" namespace love { namespace timer { static Timer *instance = 0; int w_step(lua_State *) { instance->step(); return 0; } int w_getDelta(lua_State *L) { lua_pushnumber(L, instance->getDelta()); return 1; } int w_getFPS(lua_State *L) { lua_pushinteger(L, instance->getFPS()); return 1; } int w_getAverageDelta(lua_State *L) { lua_pushnumber(L, instance->getAverageDelta()); return 1; } int w_sleep(lua_State *L) { instance->sleep(luaL_checknumber(L, 1)); return 0; } int w_getTime(lua_State *L) { lua_pushnumber(L, instance->getTime()); return 1; } // List of functions to wrap. static const luaL_Reg functions[] = { { "step", w_step }, { "getDelta", w_getDelta }, { "getFPS", w_getFPS }, { "getAverageDelta", w_getAverageDelta }, { "sleep", w_sleep }, { "getTime", w_getTime }, { 0, 0 } }; extern "C" int luaopen_love_timer(lua_State *L) { if (instance == 0) { EXCEPT_GUARD(instance = new love::timer::sdl::Timer();) } else instance->retain(); WrappedModule w; w.module = instance; w.name = "timer"; w.flags = MODULE_T; w.functions = functions; w.types = 0; return luax_register_module(L, w); } } // timer } // love love-0.9.1/src/modules/timer/wrap_Timer.h0000644000000000000000000000254012316602166020331 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_TIMER_WRAP_TIMER_H #define LOVE_TIMER_WRAP_TIMER_H // LOVE #include "common/runtime.h" #include "Timer.h" namespace love { namespace timer { int w_step(lua_State *L); int w_getDelta(lua_State *L); int w_getFPS(lua_State *L); int w_getAverageDelta(lua_State *L); int w_sleep(lua_State *L); int w_getTime(lua_State *L); extern "C" LOVE_EXPORT int luaopen_love_timer(lua_State *L); } // timer } // love #endif // LOVE_TIMER_WRAP_TIMER_H love-0.9.1/src/modules/timer/Timer.h0000644000000000000000000000440712316602166017304 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_TIMER_TIMER_H #define LOVE_TIMER_TIMER_H // LOVE #include "common/Module.h" namespace love { namespace timer { class Timer : public Module { public: /** * Destructor. **/ virtual ~Timer() {} /** * Measures the time between this call and the previous call, * and updates internal values accordinly. **/ virtual void step() = 0; /** * Tries to sleep for the specified amount of time. The precision is * usually 1ms. * @param seconds The number of seconds to sleep for. **/ virtual void sleep(double seconds) const = 0; /** * Gets the time between the last two frames, assuming step is called * each frame. **/ virtual double getDelta() const = 0; /** * Gets the average FPS over the last second. Beucase the value is only updated * once per second, it does not look erratic when displayed on screen. * @return The "current" FPS. **/ virtual int getFPS() const = 0; /** * Gets the average delta time (seconds per frame) over the last second. **/ virtual double getAverageDelta() const = 0; /** * Gets the amount of time passed since an unspecified time. Useful for * profiling code or measuring intervals. The time is microsecond-precise, * and increases monotonically. * @return The time (in seconds) **/ virtual double getTime() const = 0; }; // Timer } // timer } // love #endif // LOVE_TIMER_TIMER_H love-0.9.1/src/modules/timer/sdl/0000755000000000000000000000000012316602463016630 5ustar00rootroot00000000000000love-0.9.1/src/modules/timer/sdl/Timer.cpp0000644000000000000000000000751012316602166020417 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ // LOVE #include "common/config.h" #include "Timer.h" #include "common/delay.h" #include "common/int.h" // SDL #include #if defined(LOVE_WINDOWS) #include #elif defined(LOVE_MACOSX) #include #include #elif defined(LOVE_LINUX) #include #include #include #endif namespace { #if defined(LOVE_LINUX) inline double getTimeOfDay() { timeval t; gettimeofday(&t, NULL); return (double) t.tv_sec + (double) t.tv_usec / 1000000.0; } #endif } namespace love { namespace timer { namespace sdl { Timer::Timer() : currTime(0) , prevFpsUpdate(0) , fps(0) , averageDelta(0) , fpsUpdateFrequency(1) , frames(0) , dt(0) , timerPeriod(getTimerPeriod()) { // Init the SDL timer system (needed for SDL_Delay.) if (SDL_InitSubSystem(SDL_INIT_TIMER) < 0) throw love::Exception("%s", SDL_GetError()); prevFpsUpdate = currTime = getTime(); } Timer::~Timer() { // Quit SDL timer. SDL_QuitSubSystem(SDL_INIT_TIMER); } const char *Timer::getName() const { return "love.timer.sdl"; } void Timer::step() { // Frames rendered frames++; // "Current" time is previous time by now. prevTime = currTime; // Get time from system. currTime = getTime(); // Convert to number of seconds. dt = currTime - prevTime; double timeSinceLast = currTime - prevFpsUpdate; // Update FPS? if (timeSinceLast > fpsUpdateFrequency) { fps = int((frames/timeSinceLast) + 0.5); averageDelta = timeSinceLast/frames; prevFpsUpdate = currTime; frames = 0; } } void Timer::sleep(double seconds) const { if (seconds > 0) delay((unsigned int)(seconds*1000)); } double Timer::getDelta() const { return dt; } int Timer::getFPS() const { return fps; } double Timer::getAverageDelta() const { return averageDelta; } double Timer::getTimerPeriod() { #if defined(LOVE_MACOSX) mach_timebase_info_data_t info; mach_timebase_info(&info); return (double) info.numer / (double) info.denom / 1000000000.0; #elif defined(LOVE_WINDOWS) LARGE_INTEGER temp; if (QueryPerformanceFrequency(&temp) != 0 && temp.QuadPart != 0) return 1.0 / (double) temp.QuadPart; #endif return 0; } double Timer::getTime() const { #if defined(LOVE_LINUX) double mt; // Check for POSIX timers and monotonic clocks. If not supported, use the gettimeofday fallback. #if _POSIX_TIMERS > 0 && defined(_POSIX_MONOTONIC_CLOCK) \ && (defined(CLOCK_MONOTONIC_RAW) || defined(CLOCK_MONOTONIC)) timespec t; #ifdef CLOCK_MONOTONIC_RAW clockid_t clk_id = CLOCK_MONOTONIC_RAW; #else clockid_t clk_id = CLOCK_MONOTONIC; #endif if (clock_gettime(clk_id, &t) == 0) mt = (double) t.tv_sec + (double) t.tv_nsec / 1000000000.0; else #endif mt = getTimeOfDay(); return mt; #elif defined(LOVE_MACOSX) return (double) mach_absolute_time() * timerPeriod; #elif defined(LOVE_WINDOWS) LARGE_INTEGER microTime; QueryPerformanceCounter(µTime); return (double) microTime.QuadPart * timerPeriod; #endif } } // sdl } // timer } // love love-0.9.1/src/modules/timer/sdl/Timer.h0000644000000000000000000000415412316602166020065 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_TIMER_SDL_TIMER_H #define LOVE_TIMER_SDL_TIMER_H // LOVE #include "timer/Timer.h" namespace love { namespace timer { namespace sdl { /** * An SDL timer module. Can keep track of time between certain function * calls, and provides access to a FPS metric which updates once each second. **/ class Timer : public love::timer::Timer { public: /** * Constructor. Initializes the SDL/timer subsystem. **/ Timer(); /** * Destructor. **/ virtual ~Timer(); const char *getName() const; void step(); void sleep(double seconds) const; double getDelta() const; int getFPS() const; double getAverageDelta() const; double getTime() const; private: // Frame delta vars. double currTime; double prevTime; double prevFpsUpdate; // Updated with a certain frequency. int fps; double averageDelta; // The frequency by which to update the FPS. double fpsUpdateFrequency; // Frames since last FPS update. int frames; // The current timestep. double dt; // The timer period (reciprocal of the frequency.) const double timerPeriod; // Returns the timer period on some platforms. static double getTimerPeriod(); }; // Timer } // sdl } // timer } // love #endif // LOVE_TIMER_SDL_TIMER_H love-0.9.1/src/libraries/0000755000000000000000000000000012316602462015231 5ustar00rootroot00000000000000love-0.9.1/src/libraries/utf8/0000755000000000000000000000000012316602463016120 5ustar00rootroot00000000000000love-0.9.1/src/libraries/utf8/utf8/0000755000000000000000000000000012316602463017006 5ustar00rootroot00000000000000love-0.9.1/src/libraries/utf8/utf8/unchecked.h0000644000000000000000000002131312316602166021110 0ustar00rootroot00000000000000// Copyright 2006 Nemanja Trifunovic /* Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef UTF8_FOR_CPP_UNCHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 #define UTF8_FOR_CPP_UNCHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 #include "core.h" namespace utf8 { namespace unchecked { template octet_iterator append(uint32_t cp, octet_iterator result) { if (cp < 0x80) // one octet *(result++) = static_cast(cp); else if (cp < 0x800) { // two octets *(result++) = static_cast((cp >> 6) | 0xc0); *(result++) = static_cast((cp & 0x3f) | 0x80); } else if (cp < 0x10000) { // three octets *(result++) = static_cast((cp >> 12) | 0xe0); *(result++) = static_cast(((cp >> 6) & 0x3f) | 0x80); *(result++) = static_cast((cp & 0x3f) | 0x80); } else { // four octets *(result++) = static_cast((cp >> 18) | 0xf0); *(result++) = static_cast(((cp >> 12) & 0x3f)| 0x80); *(result++) = static_cast(((cp >> 6) & 0x3f) | 0x80); *(result++) = static_cast((cp & 0x3f) | 0x80); } return result; } template uint32_t next(octet_iterator& it) { uint32_t cp = utf8::internal::mask8(*it); typename std::iterator_traits::difference_type length = utf8::internal::sequence_length(it); switch (length) { case 1: break; case 2: it++; cp = ((cp << 6) & 0x7ff) + ((*it) & 0x3f); break; case 3: ++it; cp = ((cp << 12) & 0xffff) + ((utf8::internal::mask8(*it) << 6) & 0xfff); ++it; cp += (*it) & 0x3f; break; case 4: ++it; cp = ((cp << 18) & 0x1fffff) + ((utf8::internal::mask8(*it) << 12) & 0x3ffff); ++it; cp += (utf8::internal::mask8(*it) << 6) & 0xfff; ++it; cp += (*it) & 0x3f; break; } ++it; return cp; } template uint32_t peek_next(octet_iterator it) { return utf8::unchecked::next(it); } template uint32_t prior(octet_iterator& it) { while (utf8::internal::is_trail(*(--it))) ; octet_iterator temp = it; return utf8::unchecked::next(temp); } // Deprecated in versions that include prior, but only for the sake of consistency (see utf8::previous) template inline uint32_t previous(octet_iterator& it) { return utf8::unchecked::prior(it); } template void advance (octet_iterator& it, distance_type n) { for (distance_type i = 0; i < n; ++i) utf8::unchecked::next(it); } template typename std::iterator_traits::difference_type distance (octet_iterator first, octet_iterator last) { typename std::iterator_traits::difference_type dist; for (dist = 0; first < last; ++dist) utf8::unchecked::next(first); return dist; } template octet_iterator utf16to8 (u16bit_iterator start, u16bit_iterator end, octet_iterator result) { while (start != end) { uint32_t cp = utf8::internal::mask16(*start++); // Take care of surrogate pairs first if (utf8::internal::is_lead_surrogate(cp)) { uint32_t trail_surrogate = utf8::internal::mask16(*start++); cp = (cp << 10) + trail_surrogate + internal::SURROGATE_OFFSET; } result = utf8::unchecked::append(cp, result); } return result; } template u16bit_iterator utf8to16 (octet_iterator start, octet_iterator end, u16bit_iterator result) { while (start < end) { uint32_t cp = utf8::unchecked::next(start); if (cp > 0xffff) { //make a surrogate pair *result++ = static_cast((cp >> 10) + internal::LEAD_OFFSET); *result++ = static_cast((cp & 0x3ff) + internal::TRAIL_SURROGATE_MIN); } else *result++ = static_cast(cp); } return result; } template octet_iterator utf32to8 (u32bit_iterator start, u32bit_iterator end, octet_iterator result) { while (start != end) result = utf8::unchecked::append(*(start++), result); return result; } template u32bit_iterator utf8to32 (octet_iterator start, octet_iterator end, u32bit_iterator result) { while (start < end) (*result++) = utf8::unchecked::next(start); return result; } // The iterator class template class iterator : public std::iterator { octet_iterator it; public: iterator () {} explicit iterator (const octet_iterator& octet_it): it(octet_it) {} // the default "big three" are OK octet_iterator base () const { return it; } uint32_t operator * () const { octet_iterator temp = it; return utf8::unchecked::next(temp); } bool operator == (const iterator& rhs) const { return (it == rhs.it); } bool operator != (const iterator& rhs) const { return !(operator == (rhs)); } iterator& operator ++ () { ::std::advance(it, utf8::internal::sequence_length(it)); return *this; } iterator operator ++ (int) { iterator temp = *this; ::std::advance(it, utf8::internal::sequence_length(it)); return temp; } iterator& operator -- () { utf8::unchecked::prior(it); return *this; } iterator operator -- (int) { iterator temp = *this; utf8::unchecked::prior(it); return temp; } }; // class iterator } // namespace utf8::unchecked } // namespace utf8 #endif // header guard love-0.9.1/src/libraries/utf8/utf8/core.h0000644000000000000000000002471112316602166020114 0ustar00rootroot00000000000000// Copyright 2006 Nemanja Trifunovic /* Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef UTF8_FOR_CPP_CORE_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 #define UTF8_FOR_CPP_CORE_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 #include namespace utf8 { // The typedefs for 8-bit, 16-bit and 32-bit unsigned integers // You may need to change them to match your system. // These typedefs have the same names as ones from cstdint, or boost/cstdint typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; // Helper code - not intended to be directly called by the library users. May be changed at any time namespace internal { // Unicode constants // Leading (high) surrogates: 0xd800 - 0xdbff // Trailing (low) surrogates: 0xdc00 - 0xdfff const uint16_t LEAD_SURROGATE_MIN = 0xd800u; const uint16_t LEAD_SURROGATE_MAX = 0xdbffu; const uint16_t TRAIL_SURROGATE_MIN = 0xdc00u; const uint16_t TRAIL_SURROGATE_MAX = 0xdfffu; const uint16_t LEAD_OFFSET = LEAD_SURROGATE_MIN - (0x10000 >> 10); const uint32_t SURROGATE_OFFSET = 0x10000u - (LEAD_SURROGATE_MIN << 10) - TRAIL_SURROGATE_MIN; // Maximum valid value for a Unicode code point const uint32_t CODE_POINT_MAX = 0x0010ffffu; template inline uint8_t mask8(octet_type oc) { return static_cast(0xff & oc); } template inline uint16_t mask16(u16_type oc) { return static_cast(0xffff & oc); } template inline bool is_trail(octet_type oc) { return ((utf8::internal::mask8(oc) >> 6) == 0x2); } template inline bool is_lead_surrogate(u16 cp) { return (cp >= LEAD_SURROGATE_MIN && cp <= LEAD_SURROGATE_MAX); } template inline bool is_trail_surrogate(u16 cp) { return (cp >= TRAIL_SURROGATE_MIN && cp <= TRAIL_SURROGATE_MAX); } template inline bool is_surrogate(u16 cp) { return (cp >= LEAD_SURROGATE_MIN && cp <= TRAIL_SURROGATE_MAX); } template inline bool is_code_point_valid(u32 cp) { return (cp <= CODE_POINT_MAX && !utf8::internal::is_surrogate(cp)); } template inline typename std::iterator_traits::difference_type sequence_length(octet_iterator lead_it) { uint8_t lead = utf8::internal::mask8(*lead_it); if (lead < 0x80) return 1; else if ((lead >> 5) == 0x6) return 2; else if ((lead >> 4) == 0xe) return 3; else if ((lead >> 3) == 0x1e) return 4; else return 0; } template inline bool is_overlong_sequence(uint32_t cp, octet_difference_type length) { if (cp < 0x80) { if (length != 1) return true; } else if (cp < 0x800) { if (length != 2) return true; } else if (cp < 0x10000) { if (length != 3) return true; } return false; } enum utf_error {UTF8_OK, NOT_ENOUGH_ROOM, INVALID_LEAD, INCOMPLETE_SEQUENCE, OVERLONG_SEQUENCE, INVALID_CODE_POINT}; /// Helper for get_sequence_x template utf_error increase_safely(octet_iterator& it, octet_iterator end) { if (++it == end) return NOT_ENOUGH_ROOM; if (!utf8::internal::is_trail(*it)) return INCOMPLETE_SEQUENCE; return UTF8_OK; } #define UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(IT, END) {utf_error ret = increase_safely(IT, END); if (ret != UTF8_OK) return ret;} /// get_sequence_x functions decode utf-8 sequences of the length x template utf_error get_sequence_1(octet_iterator& it, octet_iterator end, uint32_t& code_point) { if (it == end) return NOT_ENOUGH_ROOM; code_point = utf8::internal::mask8(*it); return UTF8_OK; } template utf_error get_sequence_2(octet_iterator& it, octet_iterator end, uint32_t& code_point) { if (it == end) return NOT_ENOUGH_ROOM; code_point = utf8::internal::mask8(*it); UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) code_point = ((code_point << 6) & 0x7ff) + ((*it) & 0x3f); return UTF8_OK; } template utf_error get_sequence_3(octet_iterator& it, octet_iterator end, uint32_t& code_point) { if (it == end) return NOT_ENOUGH_ROOM; code_point = utf8::internal::mask8(*it); UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) code_point = ((code_point << 12) & 0xffff) + ((utf8::internal::mask8(*it) << 6) & 0xfff); UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) code_point += (*it) & 0x3f; return UTF8_OK; } template utf_error get_sequence_4(octet_iterator& it, octet_iterator end, uint32_t& code_point) { if (it == end) return NOT_ENOUGH_ROOM; code_point = utf8::internal::mask8(*it); UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) code_point = ((code_point << 18) & 0x1fffff) + ((utf8::internal::mask8(*it) << 12) & 0x3ffff); UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) code_point += (utf8::internal::mask8(*it) << 6) & 0xfff; UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR(it, end) code_point += (*it) & 0x3f; return UTF8_OK; } #undef UTF8_CPP_INCREASE_AND_RETURN_ON_ERROR template utf_error validate_next(octet_iterator& it, octet_iterator end, uint32_t& code_point) { // Save the original value of it so we can go back in case of failure // Of course, it does not make much sense with i.e. stream iterators octet_iterator original_it = it; uint32_t cp = 0; // Determine the sequence length based on the lead octet typedef typename std::iterator_traits::difference_type octet_difference_type; const octet_difference_type length = utf8::internal::sequence_length(it); // Get trail octets and calculate the code point utf_error err = UTF8_OK; switch (length) { case 0: return INVALID_LEAD; case 1: err = utf8::internal::get_sequence_1(it, end, cp); break; case 2: err = utf8::internal::get_sequence_2(it, end, cp); break; case 3: err = utf8::internal::get_sequence_3(it, end, cp); break; case 4: err = utf8::internal::get_sequence_4(it, end, cp); break; } if (err == UTF8_OK) { // Decoding succeeded. Now, security checks... if (utf8::internal::is_code_point_valid(cp)) { if (!utf8::internal::is_overlong_sequence(cp, length)){ // Passed! Return here. code_point = cp; ++it; return UTF8_OK; } else err = OVERLONG_SEQUENCE; } else err = INVALID_CODE_POINT; } // Failure branch - restore the original value of the iterator it = original_it; return err; } template inline utf_error validate_next(octet_iterator& it, octet_iterator end) { uint32_t ignored; return utf8::internal::validate_next(it, end, ignored); } } // namespace internal /// The library API - functions intended to be called by the users // Byte order mark const uint8_t bom[] = {0xef, 0xbb, 0xbf}; template octet_iterator find_invalid(octet_iterator start, octet_iterator end) { octet_iterator result = start; while (result != end) { utf8::internal::utf_error err_code = utf8::internal::validate_next(result, end); if (err_code != internal::UTF8_OK) return result; } return result; } template inline bool is_valid(octet_iterator start, octet_iterator end) { return (utf8::find_invalid(start, end) == end); } template inline bool starts_with_bom (octet_iterator it, octet_iterator end) { return ( ((it != end) && (utf8::internal::mask8(*it++)) == bom[0]) && ((it != end) && (utf8::internal::mask8(*it++)) == bom[1]) && ((it != end) && (utf8::internal::mask8(*it)) == bom[2]) ); } //Deprecated in release 2.3 template inline bool is_bom (octet_iterator it) { return ( (utf8::internal::mask8(*it++)) == bom[0] && (utf8::internal::mask8(*it++)) == bom[1] && (utf8::internal::mask8(*it)) == bom[2] ); } } // namespace utf8 #endif // header guard love-0.9.1/src/libraries/utf8/utf8/checked.h0000644000000000000000000002761412316602166020557 0ustar00rootroot00000000000000// Copyright 2006 Nemanja Trifunovic /* Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef UTF8_FOR_CPP_CHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 #define UTF8_FOR_CPP_CHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731 #include "core.h" #include namespace utf8 { // Base for the exceptions that may be thrown from the library class exception : public ::std::exception { }; // Exceptions that may be thrown from the library functions. class invalid_code_point : public exception { uint32_t cp; public: invalid_code_point(uint32_t cp) : cp(cp) {} virtual const char* what() const throw() { return "Invalid code point"; } uint32_t code_point() const {return cp;} }; class invalid_utf8 : public exception { uint8_t u8; public: invalid_utf8 (uint8_t u) : u8(u) {} virtual const char* what() const throw() { return "Invalid UTF-8"; } uint8_t utf8_octet() const {return u8;} }; class invalid_utf16 : public exception { uint16_t u16; public: invalid_utf16 (uint16_t u) : u16(u) {} virtual const char* what() const throw() { return "Invalid UTF-16"; } uint16_t utf16_word() const {return u16;} }; class not_enough_room : public exception { public: virtual const char* what() const throw() { return "Not enough space"; } }; /// The library API - functions intended to be called by the users template octet_iterator append(uint32_t cp, octet_iterator result) { if (!utf8::internal::is_code_point_valid(cp)) throw invalid_code_point(cp); if (cp < 0x80) // one octet *(result++) = static_cast(cp); else if (cp < 0x800) { // two octets *(result++) = static_cast((cp >> 6) | 0xc0); *(result++) = static_cast((cp & 0x3f) | 0x80); } else if (cp < 0x10000) { // three octets *(result++) = static_cast((cp >> 12) | 0xe0); *(result++) = static_cast(((cp >> 6) & 0x3f) | 0x80); *(result++) = static_cast((cp & 0x3f) | 0x80); } else { // four octets *(result++) = static_cast((cp >> 18) | 0xf0); *(result++) = static_cast(((cp >> 12) & 0x3f) | 0x80); *(result++) = static_cast(((cp >> 6) & 0x3f) | 0x80); *(result++) = static_cast((cp & 0x3f) | 0x80); } return result; } template output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out, uint32_t replacement) { while (start != end) { octet_iterator sequence_start = start; internal::utf_error err_code = utf8::internal::validate_next(start, end); switch (err_code) { case internal::UTF8_OK : for (octet_iterator it = sequence_start; it != start; ++it) *out++ = *it; break; case internal::NOT_ENOUGH_ROOM: throw not_enough_room(); case internal::INVALID_LEAD: out = utf8::append (replacement, out); ++start; break; case internal::INCOMPLETE_SEQUENCE: case internal::OVERLONG_SEQUENCE: case internal::INVALID_CODE_POINT: out = utf8::append (replacement, out); ++start; // just one replacement mark for the sequence while (start != end && utf8::internal::is_trail(*start)) ++start; break; } } return out; } template inline output_iterator replace_invalid(octet_iterator start, octet_iterator end, output_iterator out) { static const uint32_t replacement_marker = utf8::internal::mask16(0xfffd); return utf8::replace_invalid(start, end, out, replacement_marker); } template uint32_t next(octet_iterator& it, octet_iterator end) { uint32_t cp = 0; internal::utf_error err_code = utf8::internal::validate_next(it, end, cp); switch (err_code) { case internal::UTF8_OK : break; case internal::NOT_ENOUGH_ROOM : throw not_enough_room(); case internal::INVALID_LEAD : case internal::INCOMPLETE_SEQUENCE : case internal::OVERLONG_SEQUENCE : throw invalid_utf8(*it); case internal::INVALID_CODE_POINT : throw invalid_code_point(cp); } return cp; } template uint32_t peek_next(octet_iterator it, octet_iterator end) { return utf8::next(it, end); } template uint32_t prior(octet_iterator& it, octet_iterator start) { // can't do much if it == start if (it == start) throw not_enough_room(); octet_iterator end = it; // Go back until we hit either a lead octet or start while (utf8::internal::is_trail(*(--it))) if (it == start) throw invalid_utf8(*it); // error - no lead byte in the sequence return utf8::peek_next(it, end); } /// Deprecated in versions that include "prior" template uint32_t previous(octet_iterator& it, octet_iterator pass_start) { octet_iterator end = it; while (utf8::internal::is_trail(*(--it))) if (it == pass_start) throw invalid_utf8(*it); // error - no lead byte in the sequence octet_iterator temp = it; return utf8::next(temp, end); } template void advance (octet_iterator& it, distance_type n, octet_iterator end) { for (distance_type i = 0; i < n; ++i) utf8::next(it, end); } template typename std::iterator_traits::difference_type distance (octet_iterator first, octet_iterator last) { typename std::iterator_traits::difference_type dist; for (dist = 0; first < last; ++dist) utf8::next(first, last); return dist; } template octet_iterator utf16to8 (u16bit_iterator start, u16bit_iterator end, octet_iterator result) { while (start != end) { uint32_t cp = utf8::internal::mask16(*start++); // Take care of surrogate pairs first if (utf8::internal::is_lead_surrogate(cp)) { if (start != end) { uint32_t trail_surrogate = utf8::internal::mask16(*start++); if (utf8::internal::is_trail_surrogate(trail_surrogate)) cp = (cp << 10) + trail_surrogate + internal::SURROGATE_OFFSET; else throw invalid_utf16(static_cast(trail_surrogate)); } else throw invalid_utf16(static_cast(cp)); } // Lone trail surrogate else if (utf8::internal::is_trail_surrogate(cp)) throw invalid_utf16(static_cast(cp)); result = utf8::append(cp, result); } return result; } template u16bit_iterator utf8to16 (octet_iterator start, octet_iterator end, u16bit_iterator result) { while (start != end) { uint32_t cp = utf8::next(start, end); if (cp > 0xffff) { //make a surrogate pair *result++ = static_cast((cp >> 10) + internal::LEAD_OFFSET); *result++ = static_cast((cp & 0x3ff) + internal::TRAIL_SURROGATE_MIN); } else *result++ = static_cast(cp); } return result; } template octet_iterator utf32to8 (u32bit_iterator start, u32bit_iterator end, octet_iterator result) { while (start != end) result = utf8::append(*(start++), result); return result; } template u32bit_iterator utf8to32 (octet_iterator start, octet_iterator end, u32bit_iterator result) { while (start != end) (*result++) = utf8::next(start, end); return result; } // The iterator class template class iterator : public std::iterator { octet_iterator it; octet_iterator range_start; octet_iterator range_end; public: iterator () {} explicit iterator (const octet_iterator& octet_it, const octet_iterator& range_start, const octet_iterator& range_end) : it(octet_it), range_start(range_start), range_end(range_end) { if (it < range_start || it > range_end) throw std::out_of_range("Invalid utf-8 iterator position"); } // the default "big three" are OK octet_iterator base () const { return it; } uint32_t operator * () const { octet_iterator temp = it; return utf8::next(temp, range_end); } bool operator == (const iterator& rhs) const { if (range_start != rhs.range_start || range_end != rhs.range_end) throw std::logic_error("Comparing utf-8 iterators defined with different ranges"); return (it == rhs.it); } bool operator != (const iterator& rhs) const { return !(operator == (rhs)); } iterator& operator ++ () { utf8::next(it, range_end); return *this; } iterator operator ++ (int) { iterator temp = *this; utf8::next(it, range_end); return temp; } iterator& operator -- () { utf8::prior(it, range_start); return *this; } iterator operator -- (int) { iterator temp = *this; utf8::prior(it, range_start); return temp; } }; // class iterator } // namespace utf8 #endif //header guard love-0.9.1/src/libraries/utf8/utf8.h0000644000000000000000000000302312316602166017155 0ustar00rootroot00000000000000// Copyright 2006 Nemanja Trifunovic /* Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef UTF8_FOR_CPP_2675DCD0_9480_4c0c_B92A_CC14C027B731 #define UTF8_FOR_CPP_2675DCD0_9480_4c0c_B92A_CC14C027B731 #include "utf8/checked.h" #include "utf8/unchecked.h" #endif // header guard love-0.9.1/src/libraries/Wuff/0000755000000000000000000000000012316602463016141 5ustar00rootroot00000000000000love-0.9.1/src/libraries/Wuff/wuff_convert.h0000644000000000000000000000311212316602166021016 0ustar00rootroot00000000000000#ifndef WUFF_CONVERT_H #define WUFF_CONVERT_H #define WUFF_CONV_FUNC(name) WUFF_INTERN_API void name(wuff_uint8 * dst, wuff_uint8 * src, size_t samples, wuff_uint8 offset, wuff_uint8 head, wuff_uint8 tail) WUFF_CONV_FUNC(wuff_int8_to_int8); WUFF_CONV_FUNC(wuff_int8_to_int16); WUFF_CONV_FUNC(wuff_int8_to_int24); WUFF_CONV_FUNC(wuff_int8_to_int32); WUFF_CONV_FUNC(wuff_int8_to_float32); WUFF_CONV_FUNC(wuff_int8_to_float64); WUFF_CONV_FUNC(wuff_int16_to_int8); WUFF_CONV_FUNC(wuff_int16_to_int16); WUFF_CONV_FUNC(wuff_int16_to_int24); WUFF_CONV_FUNC(wuff_int16_to_int32); WUFF_CONV_FUNC(wuff_int16_to_float32); WUFF_CONV_FUNC(wuff_int16_to_float64); WUFF_CONV_FUNC(wuff_int24_to_int8); WUFF_CONV_FUNC(wuff_int24_to_int16); WUFF_CONV_FUNC(wuff_int24_to_int24); WUFF_CONV_FUNC(wuff_int24_to_int32); WUFF_CONV_FUNC(wuff_int24_to_float32); WUFF_CONV_FUNC(wuff_int24_to_float64); WUFF_CONV_FUNC(wuff_int32_to_int8); WUFF_CONV_FUNC(wuff_int32_to_int16); WUFF_CONV_FUNC(wuff_int32_to_int24); WUFF_CONV_FUNC(wuff_int32_to_int32); WUFF_CONV_FUNC(wuff_int32_to_float32); WUFF_CONV_FUNC(wuff_int32_to_float64); WUFF_CONV_FUNC(wuff_float32_to_int8); WUFF_CONV_FUNC(wuff_float32_to_int16); WUFF_CONV_FUNC(wuff_float32_to_int24); WUFF_CONV_FUNC(wuff_float32_to_int32); WUFF_CONV_FUNC(wuff_float32_to_float32); WUFF_CONV_FUNC(wuff_float32_to_float64); WUFF_CONV_FUNC(wuff_float64_to_int8); WUFF_CONV_FUNC(wuff_float64_to_int16); WUFF_CONV_FUNC(wuff_float64_to_int24); WUFF_CONV_FUNC(wuff_float64_to_int32); WUFF_CONV_FUNC(wuff_float64_to_float32); WUFF_CONV_FUNC(wuff_float64_to_float64); #endif /* WUFF_CONVERT_H */ love-0.9.1/src/libraries/Wuff/wuff_memory.c0000644000000000000000000000043512316602166020646 0ustar00rootroot00000000000000#include #include "wuff_config.h" /* Default memory allocators. */ /* They can be overridden with custom functions at build time. */ #ifndef WUFF_MEMALLOC_OVERRIDE void * wuff_alloc(size_t size) { return malloc(size); } void wuff_free(void * mem) { free(mem); } #endif love-0.9.1/src/libraries/Wuff/wuff.h0000644000000000000000000002147212316602166017267 0ustar00rootroot00000000000000/* * Wuff - A very basic WAVE reader */ #ifndef WUFF_H #define WUFF_H #ifdef __cplusplus extern "C" { #endif #define WUFF_VERSION_MAJOR 0 #define WUFF_VERSION_MINOR 0 #define WUFF_VERSION_BUILD 0 #define WUFF_VERSION_REVISION 2 #ifndef WUFF_API_OVERRIDE #if defined(_WIN32) && defined(WUFF_DYNAMIC_LIB) #define WUFF_EXPORT __declspec(dllexport) #define WUFF_IMPORT __declspec(dllimport) #else #define WUFF_EXPORT #define WUFF_IMPORT #endif #endif #ifdef WUFF_BUILDING_CORE #define WUFF_API WUFF_EXPORT #else #define WUFF_API WUFF_IMPORT #endif #ifdef WUFF_FORCE_STDINT_H #include typedef uint8_t wuff_uint8; typedef int8_t wuff_sint8; typedef uint16_t wuff_uint16; typedef int16_t wuff_sint16; typedef uint32_t wuff_uint32; typedef int32_t wuff_sint32; #ifdef WUFF_NO_64BIT_TYPE typedef uint32_t wuff_uint64; typedef int32_t wuff_sint64; #else typedef uint64_t wuff_uint64; typedef int64_t wuff_sint64; #endif #elif _MSC_VER typedef unsigned __int8 wuff_uint8; typedef signed __int8 wuff_sint8; typedef unsigned __int16 wuff_uint16; typedef signed __int16 wuff_sint16; typedef unsigned __int32 wuff_uint32; typedef signed __int32 wuff_sint32; typedef unsigned __int64 wuff_uint64; typedef signed __int64 wuff_sint64; #else typedef unsigned char wuff_uint8; typedef signed char wuff_sint8; typedef unsigned short wuff_uint16; typedef signed short wuff_sint16; typedef unsigned int wuff_uint32; typedef signed int wuff_sint32; #ifdef WUFF_NO_64BIT_TYPE typedef unsigned long wuff_uint64; typedef signed long wuff_sint64; #else typedef unsigned long long wuff_uint64; typedef signed long long wuff_sint64; #endif #endif /** @file */ /** * Opaque structure used to identify the open Wuff streams. */ struct wuff_handle; /** * Callbacks that control the delivery of the data of the WAVE file. * * The return values of the functions indicate their status. A zero or positive * value means success and a negative value failure. The macros WUFF_SUCCESS and * WUFF_ERROR, or a value equal or below WUFF_USER_ERROR can be used. The error * value will be returned by the function called by the application. */ struct wuff_callback { /** * The read callback requests the linking application to write at least * 'size' bytes into the memory where 'buffer' is pointing to. The value * pointed to by 'size' must be update to the actual number of bytes * written. Zero will be interepreted as the end-of-file. * * @param userdata The userdata set with wuff_open. * @param buffer A pointer to the memory where the data can be written to. * @param size A pointer to the size of the buffer and the bytes written. */ wuff_sint32 (* read)(void * userdata, wuff_uint8 * buffer, size_t * size); /** * The seek callback requests the linking application to seek to a new byte * offset in the WAVE data. The next call to the read callback must then * write data starting from this position. The offset is always relative * to the beginning of the WAVE data. * * @param userdata The userdata set with wuff_open. * @param offset The new offset. */ wuff_sint32 (* seek)(void * userdata, wuff_uint64 offset); /** * The tell callback requests the linking application to write the current * byte position to the integer pointed to by 'offset'. * * @param userdata The userdata set with wuff_open. * @param offset A pointer to an integer where the current position can be written to. */ wuff_sint32 (* tell)(void * userdata, wuff_uint64 * offset); }; /** * Stream information structure. */ struct wuff_info { wuff_uint16 format; /**< The format of the stream. * See "Wuff raw sample formats" below. */ wuff_uint16 channels; /**< The number of channels in the stream. */ wuff_uint32 sample_rate; /**< The sample rate in hertz. */ wuff_uint16 bits_per_sample; /**< The number of bits per sample. */ wuff_uint64 length; /**< The length of the stream in samples. */ }; /** * Version information structure. */ struct wuff_version { wuff_uint16 major; wuff_uint16 minor; wuff_uint16 build; wuff_uint16 revision; }; /** * Opens a new Wuff stream. This will read from the callbacks immediately, make * sure they're ready. It will check if the WAVE file is supported. * * @param handle A pointer to pointer of a wuff_handle that will be * initialized if the function succeeds. * @param callback The callbacks for the data of the WAVE file. * @param userdata A void pointer that will be passed to the callbacks. * @return Returns a negative value if an error occured. */ WUFF_API wuff_sint32 wuff_open(struct wuff_handle ** handle, struct wuff_callback * callback, void * userdata); /** * Closes a Wuff stream. * * @param handle The Wuff stream handle. * @return Returns a negative value if an error occured. */ WUFF_API wuff_sint32 wuff_close(struct wuff_handle * handle); /** * Fills the wuff_info struct with information about the stream. * * @param handle The Wuff stream handle. * @param info A pointer to a wuff_info struct. * @return Returns a negative value if an error occured. */ WUFF_API wuff_sint32 wuff_stream_info(struct wuff_handle * handle, struct wuff_info * info); /** * Sets the output format of the decoder. A new format resets the decoder output * to the beginning of the current block (the sample of the first channel). * * @param handle The Wuff stream handle. * @param format The new output format. * @return Returns a negative value if an error occured. */ WUFF_API wuff_sint32 wuff_format(struct wuff_handle * handle, wuff_uint16 format); /** * Decodes samples to the passed memory location. The size_t pointer points to * the maximum number of bytes that can be written to the buffer. This count * will be adjusted to the number of bytes written to the buffer. * * @param handle The Wuff stream handle. * @param buffer The buffer to write to. * @param size The maximum number of bytes to write to the buffer. * @return Returns a negative value if an error occured. */ WUFF_API wuff_sint32 wuff_read(struct wuff_handle * handle, wuff_uint8 * buffer, size_t * size); /** * Seeks to a sample location. * The next call to wuff_read will return samples starting from this position. * * @param handle The Wuff stream handle. * @param offset The sample offset to seek to. * @return Returns a negative value if an error occured. */ WUFF_API wuff_sint32 wuff_seek(struct wuff_handle * handle, wuff_uint64 offset); /** * Sets the current position. * * @param handle The Wuff stream handle. * @param offset A pointer to a integer that will receive the sample offset. * @return Returns a negative value if an error occured. */ WUFF_API wuff_sint32 wuff_tell(struct wuff_handle * handle, wuff_uint64 * offset); /** * Copies the Wuff version of the binary into the struct. * For compile-time version information use the WUFF_VERSION_MAJOR, * WUFF_VERSION_MINOR, WUFF_VERSION_BUILD, and WUFF_VERSION_REVISION macros. * * @param version A pointer to a wuff_version struct that will receive the * version information. */ WUFF_API void wuff_version(struct wuff_version * version); /* Wuff raw sample formats. */ #define WUFF_FORMAT_PCM_U8 0 #define WUFF_FORMAT_PCM_S16 1 #define WUFF_FORMAT_PCM_S24 2 #define WUFF_FORMAT_PCM_S32 3 #define WUFF_FORMAT_IEEE_FLOAT_32 4 #define WUFF_FORMAT_IEEE_FLOAT_64 5 #define WUFF_FORMAT_MAX 6 /* Success and error return values for all functions. */ #define WUFF_STREAM_EOF 100 #define WUFF_SUCCESS 0 #define WUFF_ERROR -1 #define WUFF_INVALID_PARAM -2 #define WUFF_MEMALLOC_ERROR -3 #define WUFF_STREAM_NOT_RIFF -100 #define WUFF_STREAM_NOT_WAVE -101 #define WUFF_STREAM_INVALID -102 #define WUFF_STREAM_ZERO_CHANNELS -103 #define WUFF_STREAM_ZERO_SAMPLE_RATE -104 #define WUFF_STREAM_ZERO_BITS_PER_SAMPLE -105 #define WUFF_STREAM_FORMAT_CHUNK_MISSING -106 #define WUFF_STREAM_DATA_CHUNK_MISSING -107 #define WUFF_STREAM_CHUNK_NOT_FOUND -108 #define WUFF_FORMAT_UNSUPPORTED -200 #define WUFF_BUFFER_INVALID_SIZE -300 #define WUFF_BUFFER_INVALID_STREAM_POSITION -301 #define WUFF_USER_ERROR -10000 #ifdef __cplusplus } #endif #endif /* WUFF_H */ love-0.9.1/src/libraries/Wuff/wuff_internal.h0000644000000000000000000001173012316602166021157 0ustar00rootroot00000000000000#ifndef WUFF_INTERNAL_H #define WUFF_INTERNAL_H #define WUFF_BUFFER_MIN_SIZE 4096 #define WUFF_BUFFER_MAX_SIZE 2097152 #define WUFF_STREAM_MIN_SIZE 36 #define WUFF_HEADER_MIN_SIZE 16 #define WUFF_HEADER_FETCH_SIZE 80 #define WUFF_FORMAT_PCM 1 #define WUFF_FORMAT_IEEE_FLOAT 3 #define WUFF_FORMAT_EXTENSIBLE 0xFFFE #define WUFF_RIFF_CHUNK_ID wuff_get_chunk_id("RIFF") #define WUFF_WAVE_CHUNK_ID wuff_get_chunk_id("WAVE") #define WUFF_FORMAT_CHUNK_ID wuff_get_chunk_id("fmt ") #define WUFF_DATA_CHUNK_ID wuff_get_chunk_id("data") #define WUFF_STATUS_BAIL() if (wuff_status < 0) return wuff_status; static WUFF_INLINE wuff_uint32 wuff_get_uint32(wuff_uint8 * data) { return data[0] + (data[1] << 8) + (data[2] << 16) + (data[3] << 24); } static WUFF_INLINE wuff_uint16 wuff_get_uint16(wuff_uint8 * data) { return data[0] + (data[1] << 8); } struct wuff_chunk_header { wuff_uint32 id; wuff_uint32 size; }; static WUFF_INLINE wuff_uint32 wuff_get_chunk_id(const char txt[5]) { const wuff_uint8 * id = (wuff_uint8*) txt; wuff_uint32 int_id; wuff_uint8 * id_bytes = (wuff_uint8 *)&int_id; id_bytes[0] = id[0]; id_bytes[1] = id[1]; id_bytes[2] = id[2]; id_bytes[3] = id[3]; return int_id; } static WUFF_INLINE void wuff_copy_chunk_header_data(struct wuff_chunk_header * chunk, wuff_uint8 * data) { wuff_uint8 * id = (wuff_uint8 *)&chunk->id; id[0] = data[0]; id[1] = data[1]; id[2] = data[2]; id[3] = data[3]; chunk->size = wuff_get_uint32(data + 4); } struct wuff_stream_header { wuff_uint64 size; wuff_uint64 offset; wuff_uint16 format; wuff_uint16 channels; wuff_uint32 sample_rate; wuff_uint16 bits_per_sample; wuff_uint16 bytes_per_sample; size_t block_size; }; struct wuff_stream_data { wuff_uint64 size; wuff_uint64 offset; }; struct wuff_buffer { wuff_uint8 * data; wuff_uint64 bytes_left; size_t size; size_t offset; size_t end; }; struct wuff_output { wuff_uint16 format; size_t bytes_per_sample; size_t block_size; size_t block_offset; void (* function)(wuff_uint8 *, wuff_uint8 *, size_t, wuff_uint8, wuff_uint8, wuff_uint8); }; struct wuff_stream { wuff_uint64 size; wuff_uint64 length; wuff_uint16 format; wuff_uint64 position; struct wuff_stream_header header; struct wuff_stream_data data; }; struct wuff_handle { struct wuff_stream stream; struct wuff_buffer buffer; struct wuff_output output; struct wuff_callback * callback; void * userdata; }; /* Initializes the stream, allocates the buffer, and sets the output format. */ /* Expects a nulled wuff_handle and the callbacks set and ready. */ WUFF_INTERN_API wuff_sint32 wuff_setup(struct wuff_handle * handle); /* Cleans the stream up, frees the buffer and the wuff_handle. */ WUFF_INTERN_API wuff_sint32 wuff_cleanup(struct wuff_handle * handle); /* Called by wuff_setup. Initializes the stream by reading the data from the */ /* callbacks, searching for headers and stream information. */ WUFF_INTERN_API wuff_sint32 wuff_init_stream(struct wuff_handle * handle); /* Searches for a specific chunk id and stops before another if it's not 0. */ /* If the id in wuff_chunk_header is not 0, it will be checked too and if */ /* they match, then the function will return immediately. */ /* Expects offset to point to the file position of a chunk and */ /* wuff_chunk_header to have the size of this chunk. */ WUFF_INTERN_API wuff_sint32 wuff_search_chunk(struct wuff_handle * handle, struct wuff_chunk_header * chunk, wuff_uint64 * offset, wuff_uint32 id, wuff_uint32 stop_id); /* Sets the output struct of the stream to the new format. */ WUFF_INTERN_API wuff_sint32 wuff_set_output_format(struct wuff_handle * handle, wuff_uint16); /* Checks if the number of bits per samples is supported and writes the */ /* output identifier to the 16-bit integer. */ WUFF_INTERN_API wuff_sint32 wuff_check_bits(wuff_uint16 bits, wuff_uint16 * format); /* Calculates the number of samples that have to be requested from the buffer */ /* by also taking the truncated samples at the start and end into account. */ /* The return value is the number of samples needed. */ WUFF_INTERN_API size_t wuff_calculate_samples(size_t target_size, wuff_uint8 sample_size, wuff_uint8 * head, wuff_uint8 * tail); /* Allocates the buffer for the input stream. */ /* Expects the stream to be initialized, as format information is needed. */ WUFF_INTERN_API wuff_sint32 wuff_buffer_alloc(struct wuff_handle * handle); /* Fills the buffer with new data. */ WUFF_INTERN_API wuff_sint32 wuff_buffer_fill(struct wuff_handle * handle); /* Marks all bytes in the buffer as free. */ WUFF_INTERN_API wuff_sint32 wuff_buffer_clear(struct wuff_handle * handle); /* Requests samples and a pointer to them. */ /* The number of samples may be lower than requested. */ WUFF_INTERN_API wuff_sint32 wuff_buffer_request(struct wuff_handle * handle, wuff_uint8 ** buffer, size_t * samples); /* Releases the number of samples from the buffer. */ WUFF_INTERN_API wuff_sint32 wuff_buffer_release(struct wuff_handle * handle, size_t samples); #endif /* WUFF_INTERNAL_H */ love-0.9.1/src/libraries/Wuff/wuff_config.h0000644000000000000000000000167012316602166020612 0ustar00rootroot00000000000000#ifndef WUFF_CONFIG_H #define WUFF_CONFIG_H /* Defines that the internal code is being built. */ /* The wuff.h header uses this to change export and import macros. */ #define WUFF_BUILDING_CORE #ifndef WUFF_INLINE_OVERRIDE #ifdef __cplusplus #define WUFF_INLINE inline #else #ifdef _MSC_VER #define WUFF_INLINE __inline #elif __GNUC__ #define WUFF_INLINE __inline__ #else #define WUFF_INLINE #endif #endif #endif #ifndef WUFF_GCC_VISIBILITY_OVERRIDE #if __GNUC__ >= 4 #define WUFF_INTERN_API __attribute__((visibility("hidden"))) #else #define WUFF_INTERN_API #endif #endif #ifdef WUFF_MEMALLOC_OVERRIDE #ifdef __cplusplus extern "C" { #endif /* Define your own memory allocator. */ void * wuff_alloc(size_t size); void wuff_free(void * mem); #ifdef __cplusplus } #endif #else WUFF_INTERN_API void * wuff_alloc(size_t size); WUFF_INTERN_API void wuff_free(void * mem); #endif #endif /* WUFF_CONFIG_H */ love-0.9.1/src/libraries/Wuff/wuff_convert.c0000644000000000000000000003311312316602166021015 0ustar00rootroot00000000000000#include #include "wuff_config.h" #include "wuff.h" #include "wuff_convert.h" /* * int8 functions. */ WUFF_CONV_FUNC(wuff_int8_to_int8) { (void)offset; memcpy(dst, src, samples + head + tail); } WUFF_CONV_FUNC(wuff_int8_to_int16) { wuff_sint16 i16; size_t i; if (head != 0) { i16 = (src[0] - 128) << 8; memcpy(dst, (wuff_uint8 *)&i16 + offset, head); src += 1; dst += head; } for (i = 0; i < samples; i++) { i16 = (src[i] - 128) << 8; memcpy(dst + i * 2, &i16, 2); } if (tail != 0) { i16 = (src[samples] - 128) << 8; memcpy(dst + samples * 2, &i16, tail); } } WUFF_CONV_FUNC(wuff_int8_to_int24) { wuff_sint32 i24; size_t i; if (head != 0) { i24 = (src[0] - 128) << 24; memcpy(dst, (wuff_uint8 *)&i24 + 1 + offset, head); src += 1; dst += head; } for (i = 0; i < samples; i++) { i24 = (src[i] - 128) << 24; memcpy(dst + i * 3, (wuff_uint8 *)&i24 + 1, 3); } if (tail != 0) { i24 = (src[samples] - 128) << 24; memcpy(dst + samples * 3, (wuff_uint8 *)&i24 + 1, tail); } } WUFF_CONV_FUNC(wuff_int8_to_int32) { wuff_sint32 i32; size_t i; if (head != 0) { i32 = (src[0] - 128) << 24; memcpy(dst, (wuff_uint8 *)&i32 + offset, head); src += 1; dst += head; } for (i = 0; i < samples; i++) { i32 = (src[i] - 128) << 24; memcpy(dst + i * 4, &i32, 4); } if (tail != 0) { i32 = (src[samples] - 128) << 24; memcpy(dst + samples * 4, &i32, tail); } } WUFF_CONV_FUNC(wuff_int8_to_float32) { float f32; size_t i; if (head != 0) { f32 = (float)(src[0] - 128) / 128.0f; memcpy(dst, (wuff_uint8 *)&f32 + offset, head); src += 1; dst += head; } for (i = 0; i < samples; i++) { f32 = (float)(src[i] - 128) / 128.0f; memcpy(dst + i * 4, &f32, 4); } if (tail != 0) { f32 = (float)(src[samples] - 128) / 128.0f; memcpy(dst + samples * 4, &f32, tail); } } WUFF_CONV_FUNC(wuff_int8_to_float64) { double f64; size_t i; if (head != 0) { f64 = (double)(src[0] - 128) / 128.0; memcpy(dst, (wuff_uint8 *)&f64 + offset, head); src += 1; dst += head; } for (i = 0; i < samples; i++) { f64 = (double)(src[i] - 128) / 128.0; memcpy(dst + i * 8, &f64, 8); } if (tail != 0) { f64 = (double)(src[samples] - 128) / 128.0; memcpy(dst + samples * 8, &f64, tail); } } /* * int16 functions. */ WUFF_CONV_FUNC(wuff_int16_to_int8) { wuff_sint16 i16; size_t i; (void)offset; (void)head; (void)tail; for (i = 0; i < samples; i++) { memcpy(&i16, src + i * 2, 2); dst[i] = (i16 >> 8) + 128; } } WUFF_CONV_FUNC(wuff_int16_to_int16) { memcpy(dst, src + offset, samples * 2 + head + tail); } WUFF_CONV_FUNC(wuff_int16_to_int24) { wuff_sint16 i16; wuff_sint32 i24; size_t i; if (head != 0) { memcpy(&i16, src, 2); i24 = i16 << 16; memcpy(dst, (wuff_uint8 *)&i24 + 1 + offset, head); src += 2; dst += head; } for (i = 0; i < samples; i++) { memcpy(&i16, src + i * 2, 2); i24 = i16 << 16; memcpy(dst + i * 3, (wuff_uint8 *)&i24 + 1, 3); } if (tail != 0) { memcpy(&i16, src + samples * 2, 2); i24 = i16 << 16; memcpy(dst + samples * 3, (wuff_uint8 *)&i24 + 1, tail); } } WUFF_CONV_FUNC(wuff_int16_to_int32) { wuff_sint16 i16; wuff_sint32 i32; size_t i; if (head != 0) { memcpy(&i16, src, 2); i32 = i16 << 16; memcpy(dst, (wuff_uint8 *)&i32 + offset, head); src += 2; dst += head; } for (i = 0; i < samples; i++) { memcpy(&i16, src + i * 2, 2); i32 = i16 << 16; memcpy(dst + i * 4, &i32, 4); } if (tail != 0) { memcpy(&i16, src + samples * 2, 2); i32 = i16 << 16; memcpy(dst + samples * 4, &i32, tail); } } WUFF_CONV_FUNC(wuff_int16_to_float32) { wuff_sint16 i16; float f32; size_t i; if (head != 0) { memcpy(&i16, src, 2); f32 = (float)i16 / 32768.0f; memcpy(dst, (wuff_uint8 *)&f32 + offset, head); src += 2; dst += head; } for (i = 0; i < samples; i++) { memcpy(&i16, src + i * 2, 2); f32 = (float)i16 / 32768.0f; memcpy(dst + i * 4, &f32, 4); } if (tail != 0) { memcpy(&i16, src + samples * 2, 2); f32 = (float)i16 / 32768.0f; memcpy(dst + samples * 4, &f32, tail); } } WUFF_CONV_FUNC(wuff_int16_to_float64) { wuff_sint16 i16; double f64; size_t i; if (head != 0) { memcpy(&i16, src, 2); f64 = (double)i16 / 32768.0; memcpy(dst, (wuff_uint8 *)&f64 + offset, head); src += 2; dst += head; } for (i = 0; i < samples; i++) { memcpy(&i16, src + i * 2, 2); f64 = (double)i16 / 32768.0; memcpy(dst + i * 8, &f64, 8); } if (tail != 0) { memcpy(&i16, src + samples * 2, 2); f64 = (double)i16 / 32768.0; memcpy(dst + samples * 8, &f64, tail); } } /* * int24 functions. */ WUFF_CONV_FUNC(wuff_int24_to_int8) { wuff_sint32 i24 = 0; size_t i; (void)offset; (void)head; (void)tail; for (i = 0; i < samples; i++) { memcpy((wuff_uint8 *)&i24 + 1, src + i * 3, 3); dst[i] = (wuff_uint8)((i24 >> 16) + 128); } } WUFF_CONV_FUNC(wuff_int24_to_int16) { size_t i; if (head != 0) { memcpy(dst, src + 1 + offset, head); src += 3; dst += head; } for (i = 0; i < samples; i++) { memcpy(dst + i * 2, src + 1 + i * 3, 2); } if (tail != 0) { memcpy(dst + samples * 2, src + 1 + samples * 3, tail); } } WUFF_CONV_FUNC(wuff_int24_to_int24) { memcpy(dst, src + offset, samples * 3 + head + tail); } WUFF_CONV_FUNC(wuff_int24_to_int32) { wuff_sint32 i32 = 0; size_t i; if (head != 0) { memcpy((wuff_uint8 *)&i32 + 1, src, 3); memcpy(dst, (wuff_uint8 *)&i32 + offset, head); src += 3; dst += head; } for (i = 0; i < samples; i++) { memcpy((wuff_uint8 *)&i32 + 1, src + i * 3, 3); memcpy(dst + i * 4, &i32, 4); } if (tail != 0) { memcpy((wuff_uint8 *)&i32 + 1, src + samples * 3, 3); memcpy(dst + samples * 4, &i32, tail); } } WUFF_CONV_FUNC(wuff_int24_to_float32) { wuff_sint32 i24 = 0; float f32; size_t i; if (head != 0) { memcpy((wuff_uint8 *)&i24 + 1, src, 3); f32 = (float)((double)i24 / 2147483648.0); memcpy(dst, (wuff_uint8 *)&f32 + offset, head); src += 3; dst += head; } for (i = 0; i < samples; i++) { memcpy((wuff_uint8 *)&i24 + 1, src + i * 3, 3); f32 = (float)((double)i24 / 2147483648.0); memcpy(dst + i * 4, &f32, 4); } if (tail != 0) { memcpy((wuff_uint8 *)&i24 + 1, src + samples * 3, 3); f32 = (float)((double)i24 / 2147483648.0); memcpy(dst + samples * 4, &f32, tail); } } WUFF_CONV_FUNC(wuff_int24_to_float64) { wuff_sint32 i24 = 0; double f64; size_t i; if (head != 0) { memcpy((wuff_uint8 *)&i24 + 1, src, 3); f64 = (double)i24 / 2147483648.0; memcpy(dst, (wuff_uint8 *)&f64 + offset, head); src += 3; dst += head; } for (i = 0; i < samples; i++) { memcpy((wuff_uint8 *)&i24 + 1, src + i * 3, 3); f64 = (double)i24 / 2147483648.0; memcpy(dst + i * 8, &f64, 8); } if (tail != 0) { memcpy((wuff_uint8 *)&i24 + 1, src + samples * 3, 3); f64 = (double)i24 / 2147483648.0; memcpy(dst + samples * 8, &f64, tail); } } /* * int32 functions. */ WUFF_CONV_FUNC(wuff_int32_to_int8) { wuff_sint32 i32 = 0; size_t i; (void)offset; (void)head; (void)tail; for (i = 0; i < samples; i++) { memcpy(&i32, src + i * 4, 4); dst[i] = (i32 >> 24) + 128; } } WUFF_CONV_FUNC(wuff_int32_to_int16) { size_t i; if (head != 0) { memcpy(dst, src + 2 + offset, head); src += 4; dst += head; } for (i = 0; i < samples; i++) { memcpy(dst + i * 2, src + 2 + i * 4, 2); } if (tail != 0) { memcpy(dst + samples * 2, src + 2 + samples * 4, tail); } } WUFF_CONV_FUNC(wuff_int32_to_int24) { size_t i; if (head != 0) { memcpy(dst, src + 1 + offset, head); src += 4; dst += head; } for (i = 0; i < samples; i++) { memcpy(dst + i * 3, src + 1 + i * 4, 3); } if (tail != 0) { memcpy(dst + samples * 3, src + 1 + samples * 4, tail); } } WUFF_CONV_FUNC(wuff_int32_to_int32) { memcpy(dst, src + offset, samples * 4 + head + tail); } WUFF_CONV_FUNC(wuff_int32_to_float32) { wuff_sint32 i32; float f32; size_t i; if (head != 0) { memcpy(&i32, src, 4); f32 = (float)((double)i32 / 2147483648.0); memcpy(dst, (wuff_uint8 *)&f32 + offset, head); src += 4; dst += head; } for (i = 0; i < samples; i++) { memcpy(&i32, src + i * 4, 4); f32 = (float)((double)i32 / 2147483648.0); memcpy(dst + i * 4, &f32, 4); } if (tail != 0) { memcpy(&i32, src + samples * 4, 4); f32 = (float)((double)i32 / 2147483648.0); memcpy(dst + samples * 4, &f32, tail); } } WUFF_CONV_FUNC(wuff_int32_to_float64) { wuff_sint32 i32; double f64; size_t i; if (head != 0) { memcpy(&i32, src, 4); f64 = (double)i32 / 2147483648.0; memcpy(dst, (wuff_uint8 *)&f64 + offset, head); src += 4; dst += head; } for (i = 0; i < samples; i++) { memcpy(&i32, src + i * 4, 4); f64 = (double)i32 / 2147483648.0; memcpy(dst + i * 8, &f64, 8); } if (tail != 0) { memcpy(&i32, src + samples * 4, 4); f64 = (double)i32 / 2147483648.0; memcpy(dst + samples * 8, &f64, tail); } } /* * float32 functions. */ WUFF_CONV_FUNC(wuff_float32_to_int8) { float f32; size_t i; (void)offset; (void)head; (void)tail; for (i = 0; i < samples; i++) { memcpy(&f32, src + i * 4, 4); dst[i] = (wuff_uint8)((f32 * 127.5f) + 128.0f); } } WUFF_CONV_FUNC(wuff_float32_to_int16) { float f32; wuff_sint16 i16; size_t i; if (head != 0) { memcpy(&f32, src, 4); i16 = (wuff_sint16)(f32 * 32767.5f); memcpy(dst, (wuff_uint8 *)&i16 + offset, head); src += 4; dst += head; } for (i = 0; i < samples; i++) { memcpy(&f32, src + i * 4, 4); i16 = (wuff_sint16)(f32 * 32767.5f); memcpy(dst + i * 2, &i16, 2); } if (tail != 0) { memcpy(&f32, src + i * 4, 4); i16 = (wuff_sint16)(f32 * 32767.5f); memcpy(dst + i * 2, &i16, tail); } } WUFF_CONV_FUNC(wuff_float32_to_int24) { float f32; wuff_sint32 i24; size_t i; if (head != 0) { memcpy(&f32, src, 4); i24 = (wuff_sint32)((double)f32 * 2147483647.5); memcpy(dst, (wuff_uint8 *)&i24 + 1 + offset, head); src += 4; dst += head; } for (i = 0; i < samples; i++) { memcpy(&f32, src + i * 4, 4); i24 = (wuff_sint32)((double)f32 * 2147483647.5); memcpy(dst + i * 3, (wuff_uint8 *)&i24 + 1, 3); } if (tail != 0) { memcpy(&f32, src + samples * 4, 4); i24 = (wuff_sint32)((double)f32 * 2147483647.5); memcpy(dst + samples * 3, (wuff_uint8 *)&i24 + 1, tail); } } WUFF_CONV_FUNC(wuff_float32_to_int32) { float f32; wuff_sint32 i32; size_t i; if (head != 0) { memcpy(&f32, src, 4); i32 = (wuff_sint32)((double)f32 * 2147483647.5); memcpy(dst, (wuff_uint8 *)&i32 + offset, head); src += 4; dst += head; } for (i = 0; i < samples; i++) { memcpy(&f32, src + i * 4, 4); i32 = (wuff_sint32)((double)f32 * 2147483647.5); memcpy(dst + i * 4, &i32, 4); } if (tail != 0) { memcpy(&f32, src + samples * 4, 4); i32 = (wuff_sint32)((double)f32 * 2147483647.5); memcpy(dst + samples * 4, &i32, tail); } } WUFF_CONV_FUNC(wuff_float32_to_float32) { memcpy(dst, src + offset, samples * 4 + head + tail); } WUFF_CONV_FUNC(wuff_float32_to_float64) { float f32; double f64; size_t i; if (head != 0) { memcpy(&f32, src, 4); f64 = f32; memcpy(dst, (wuff_uint8 *)&f64 + offset, head); src += 4; dst += head; } for (i = 0; i < samples; i++) { memcpy(&f32, src + i * 4, 4); f64 = f32; memcpy(dst + i * 8, &f64, 8); } if (tail != 0) { memcpy(&f32, src + samples * 4, 4); f64 = f32; memcpy(dst + samples * 8, &f64, tail); } } /* * float64 functions. */ WUFF_CONV_FUNC(wuff_float64_to_int8) { double f64; size_t i; (void)offset; (void)head; (void)tail; for (i = 0; i < samples; i++) { memcpy(&f64, src + i * 8, 8); dst[i] = (wuff_uint8)((f64 * 127.5) + 128.0); } } WUFF_CONV_FUNC(wuff_float64_to_int16) { double f64; wuff_sint16 i16; size_t i; if (head != 0) { memcpy(&f64, src, 8); i16 = (wuff_sint16)(f64 * 32767.5); memcpy(dst, (wuff_uint8 *)&i16 + offset, head); src += 8; dst += head; } for (i = 0; i < samples; i++) { memcpy(&f64, src + i * 8, 8); i16 = (wuff_sint16)(f64 * 32767.5); memcpy(dst + i * 2, &i16, 2); } if (tail != 0) { memcpy(&f64, src + i * 8, 8); i16 = (wuff_sint16)(f64 * 32767.5); memcpy(dst + i * 2, &i16, tail); } } WUFF_CONV_FUNC(wuff_float64_to_int24) { double f64; wuff_sint32 i24; size_t i; if (head != 0) { memcpy(&f64, src, 8); i24 = (wuff_sint32)(f64 * 2147483647.5); memcpy(dst, (wuff_uint8 *)&i24 + 1 + offset, head); src += 8; dst += head; } for (i = 0; i < samples; i++) { memcpy(&f64, src + i * 8, 8); i24 = (wuff_sint32)(f64 * 2147483647.5); memcpy(dst + i * 3, (wuff_uint8 *)&i24 + 1, 3); } if (tail != 0) { memcpy(&f64, src + samples * 8, 8); i24 = (wuff_sint32)(f64 * 2147483647.5); memcpy(dst + samples * 3, (wuff_uint8 *)&i24 + 1, tail); } } WUFF_CONV_FUNC(wuff_float64_to_int32) { double f64; wuff_sint32 i32; size_t i; if (head != 0) { memcpy(&f64, src, 8); i32 = (wuff_sint32)(f64 * 2147483647.5); memcpy(dst, (wuff_uint8 *)&i32 + offset, head); src += 8; dst += head; } for (i = 0; i < samples; i++) { memcpy(&f64, src + i * 8, 8); i32 = (wuff_sint32)(f64 * 2147483647.5); memcpy(dst + i * 4, &i32, 4); } if (tail != 0) { memcpy(&f64, src + samples * 8, 8); i32 = (wuff_sint32)(f64 * 2147483647.5); memcpy(dst + samples * 4, &i32, tail); } } WUFF_CONV_FUNC(wuff_float64_to_float32) { double f64; float f32; size_t i; if (head != 0) { memcpy(&f64, src, 8); f32 = (float)f64; memcpy(dst, (wuff_uint8 *)&f32 + offset, head); src += 8; dst += head; } for (i = 0; i < samples; i++) { memcpy(&f64, src + i * 8, 8); f32 = (float)f64; memcpy(dst + i * 4, &f32, 4); } if (tail != 0) { memcpy(&f64, src + samples * 8, 8); f32 = (float)f64; memcpy(dst + samples * 4, &f32, tail); } } WUFF_CONV_FUNC(wuff_float64_to_float64) { memcpy(dst, src + offset, samples * 8 + head + tail); } love-0.9.1/src/libraries/Wuff/wuff.c0000644000000000000000000001243212316602166017256 0ustar00rootroot00000000000000#include #include "wuff_config.h" #include "wuff.h" #include "wuff_internal.h" wuff_sint32 wuff_open(struct wuff_handle ** handle_pointer, struct wuff_callback * callback, void * userdata) { struct wuff_handle * handle; wuff_sint32 wuff_status; if (handle_pointer == NULL || callback == NULL) return WUFF_INVALID_PARAM; handle = wuff_alloc(sizeof(struct wuff_handle)); if (handle == NULL) return WUFF_MEMALLOC_ERROR; memset(handle, 0, sizeof(struct wuff_handle)); handle->buffer.data = NULL; handle->callback = callback; handle->userdata = userdata; wuff_status = wuff_setup(handle); if (wuff_status < 0) { wuff_cleanup(handle); return wuff_status; } *handle_pointer = handle; return WUFF_SUCCESS; } wuff_sint32 wuff_close(struct wuff_handle * handle) { wuff_sint32 wuff_status; if (handle == NULL) return WUFF_INVALID_PARAM; wuff_status = wuff_cleanup(handle); WUFF_STATUS_BAIL() return WUFF_SUCCESS; } wuff_sint32 wuff_seek(struct wuff_handle * handle, wuff_uint64 offset) { wuff_sint32 wuff_status; wuff_uint64 seek_offset; if (handle == NULL) return WUFF_INVALID_PARAM; /* Clamp offset to stream length. */ offset = offset <= handle->stream.length ? offset : handle->stream.length; seek_offset = offset * handle->stream.header.block_size; wuff_status = handle->callback->seek(handle->userdata, handle->stream.data.offset + seek_offset); WUFF_STATUS_BAIL() handle->stream.position = offset; handle->output.block_offset = 0; /* A new position requires an empty buffer. */ wuff_status = wuff_buffer_clear(handle); WUFF_STATUS_BAIL() return WUFF_SUCCESS; } wuff_sint32 wuff_tell(struct wuff_handle * handle, wuff_uint64 * offset) { if (handle == NULL) return WUFF_INVALID_PARAM; *offset = handle->stream.position; return WUFF_SUCCESS; } wuff_sint32 wuff_stream_info(struct wuff_handle * handle, struct wuff_info * info) { if (handle == NULL || info == NULL) return WUFF_INVALID_PARAM; info->format = handle->stream.format; info->channels = handle->stream.header.channels; info->sample_rate = handle->stream.header.sample_rate; info->bits_per_sample = handle->stream.header.bits_per_sample; info->length = handle->stream.length; /* Think about adding channel mapping and perhaps other things. */ return WUFF_SUCCESS; } wuff_sint32 wuff_format(struct wuff_handle * handle, wuff_uint16 format) { wuff_sint32 wuff_status; if (handle == NULL) return WUFF_INVALID_PARAM; else if (format >= WUFF_FORMAT_MAX) return WUFF_FORMAT_UNSUPPORTED; /* A format change resets the position to the start of the block. */ wuff_status = wuff_seek(handle, handle->stream.position); WUFF_STATUS_BAIL() wuff_status = wuff_set_output_format(handle, format); WUFF_STATUS_BAIL() return WUFF_SUCCESS; } wuff_sint32 wuff_read(struct wuff_handle * handle, wuff_uint8 * out_buffer, size_t * out_size) { size_t current_offset; size_t r_samples, num_samples; wuff_uint8 head_offset, head, tail, sample_size; wuff_uint8 * in_buffer; wuff_sint32 wuff_status; if (handle == NULL || out_buffer == NULL || out_size == NULL) return WUFF_INVALID_PARAM; if (*out_size == 0) return WUFF_SUCCESS; sample_size = (wuff_uint8)handle->output.bytes_per_sample; /* Calculating the number of samples that fit into the application buffer. */ /* The first and last sample may be truncated. */ current_offset = handle->output.block_offset; head_offset = current_offset % sample_size; head = head_offset == 0 ? 0 : sample_size - head_offset; num_samples = wuff_calculate_samples(*out_size, sample_size, &head, &tail); /* Requesting the number of samples from the buffer. */ /* Calculate the new sample count if necessary and write the output. */ r_samples = num_samples; wuff_status = wuff_buffer_request(handle, &in_buffer, &r_samples); WUFF_STATUS_BAIL() else if (r_samples == 0) { /* Possible EOF. */ *out_size = 0; } else { if (r_samples == 1 && head != 0) { /* Only the first truncated sample fits. */ /* I really hope nobody will use small buffers like this. */ num_samples = 0; tail = 0; } else { /* At this point the first (possibly truncated) sample will be fully written. */ /* Subtract the first and last sample from the count if they're truncated. */ if (r_samples < num_samples) tail = 0; num_samples = r_samples - !!head - !!tail; } handle->output.function(out_buffer, in_buffer, num_samples, head_offset, head, tail); /* Report the number of bytes written. */ *out_size = num_samples * sample_size + head + tail; /* Adjust the block offset and sample position. */ current_offset += *out_size; if (current_offset >= handle->output.block_size) { handle->stream.position += current_offset / handle->output.block_size; handle->output.block_offset = current_offset % handle->output.block_size; } else { handle->output.block_offset = current_offset; } /* Release the fully processed samples from the buffer. */ wuff_status = wuff_buffer_release(handle, head_offset + head == sample_size ? num_samples + 1 : num_samples); WUFF_STATUS_BAIL() } return WUFF_SUCCESS; } void wuff_version(struct wuff_version * version) { if (version == NULL) return; version->major = WUFF_VERSION_MAJOR; version->minor = WUFF_VERSION_MINOR; version->build = WUFF_VERSION_BUILD; version->revision = WUFF_VERSION_REVISION; } love-0.9.1/src/libraries/Wuff/wuff_internal.c0000644000000000000000000003525212316602166021157 0ustar00rootroot00000000000000#include #include #include "wuff_config.h" #include "wuff.h" #include "wuff_internal.h" #include "wuff_convert.h" wuff_sint32 wuff_setup(struct wuff_handle * handle) { wuff_sint32 wuff_status; if (handle == NULL) return WUFF_INVALID_PARAM; wuff_status = wuff_init_stream(handle); WUFF_STATUS_BAIL() /* Allocating the buffer for the handle requires information from the stream. */ wuff_status = wuff_buffer_alloc(handle); WUFF_STATUS_BAIL() /* The output format defaults to the stream format. */ wuff_status = wuff_format(handle, handle->stream.format); WUFF_STATUS_BAIL() return WUFF_SUCCESS; } wuff_sint32 wuff_cleanup(struct wuff_handle * handle) { if (handle == NULL) return WUFF_INVALID_PARAM; if (handle->buffer.data != NULL) wuff_free(handle->buffer.data); wuff_free(handle); return WUFF_SUCCESS; } wuff_sint32 wuff_set_output_format(struct wuff_handle * handle, wuff_uint16 format) { wuff_uint16 bits; wuff_uint16 stream_format; if (handle == NULL) return WUFF_INVALID_PARAM; else if (format >= WUFF_FORMAT_MAX) return WUFF_FORMAT_UNSUPPORTED; stream_format = handle->stream.format; switch (format) { case WUFF_FORMAT_PCM_U8: bits = 8; switch (stream_format) { case WUFF_FORMAT_PCM_U8: handle->output.function = wuff_int8_to_int8; break; case WUFF_FORMAT_PCM_S16: handle->output.function = wuff_int16_to_int8; break; case WUFF_FORMAT_PCM_S24: handle->output.function = wuff_int24_to_int8; break; case WUFF_FORMAT_PCM_S32: handle->output.function = wuff_int32_to_int8; break; case WUFF_FORMAT_IEEE_FLOAT_32: handle->output.function = wuff_float32_to_int8; break; case WUFF_FORMAT_IEEE_FLOAT_64: handle->output.function = wuff_float64_to_int8; break; } break; case WUFF_FORMAT_PCM_S16: bits = 16; switch (stream_format) { case WUFF_FORMAT_PCM_U8: handle->output.function = wuff_int8_to_int16; break; case WUFF_FORMAT_PCM_S16: handle->output.function = wuff_int16_to_int16; break; case WUFF_FORMAT_PCM_S24: handle->output.function = wuff_int24_to_int16; break; case WUFF_FORMAT_PCM_S32: handle->output.function = wuff_int32_to_int16; break; case WUFF_FORMAT_IEEE_FLOAT_32: handle->output.function = wuff_float32_to_int16; break; case WUFF_FORMAT_IEEE_FLOAT_64: handle->output.function = wuff_float64_to_int16; break; } break; case WUFF_FORMAT_PCM_S24: bits = 24; switch (stream_format) { case WUFF_FORMAT_PCM_U8: handle->output.function = wuff_int8_to_int24; break; case WUFF_FORMAT_PCM_S16: handle->output.function = wuff_int16_to_int24; break; case WUFF_FORMAT_PCM_S24: handle->output.function = wuff_int24_to_int24; break; case WUFF_FORMAT_PCM_S32: handle->output.function = wuff_int32_to_int24; break; case WUFF_FORMAT_IEEE_FLOAT_32: handle->output.function = wuff_float32_to_int24; break; case WUFF_FORMAT_IEEE_FLOAT_64: handle->output.function = wuff_float64_to_int24; break; } break; case WUFF_FORMAT_PCM_S32: bits = 32; switch (stream_format) { case WUFF_FORMAT_PCM_U8: handle->output.function = wuff_int8_to_int32; break; case WUFF_FORMAT_PCM_S16: handle->output.function = wuff_int16_to_int32; break; case WUFF_FORMAT_PCM_S24: handle->output.function = wuff_int24_to_int32; break; case WUFF_FORMAT_PCM_S32: handle->output.function = wuff_int32_to_int32; break; case WUFF_FORMAT_IEEE_FLOAT_32: handle->output.function = wuff_float32_to_int32; break; case WUFF_FORMAT_IEEE_FLOAT_64: handle->output.function = wuff_float64_to_int32; break; } break; case WUFF_FORMAT_IEEE_FLOAT_32: bits = 32; switch (stream_format) { case WUFF_FORMAT_PCM_U8: handle->output.function = wuff_int8_to_float32; break; case WUFF_FORMAT_PCM_S16: handle->output.function = wuff_int16_to_float32; break; case WUFF_FORMAT_PCM_S24: handle->output.function = wuff_int24_to_float32; break; case WUFF_FORMAT_PCM_S32: handle->output.function = wuff_int32_to_float32; break; case WUFF_FORMAT_IEEE_FLOAT_32: handle->output.function = wuff_float32_to_float32; break; case WUFF_FORMAT_IEEE_FLOAT_64: handle->output.function = wuff_float64_to_float32; break; } break; case WUFF_FORMAT_IEEE_FLOAT_64: bits = 64; switch (stream_format) { case WUFF_FORMAT_PCM_U8: handle->output.function = wuff_int8_to_float64; break; case WUFF_FORMAT_PCM_S16: handle->output.function = wuff_int16_to_float64; break; case WUFF_FORMAT_PCM_S24: handle->output.function = wuff_int24_to_float64; break; case WUFF_FORMAT_PCM_S32: handle->output.function = wuff_int32_to_float64; break; case WUFF_FORMAT_IEEE_FLOAT_32: handle->output.function = wuff_float32_to_float64; break; case WUFF_FORMAT_IEEE_FLOAT_64: handle->output.function = wuff_float64_to_float64; break; } break; default: return WUFF_FORMAT_UNSUPPORTED; } handle->output.format = format; handle->output.bytes_per_sample = bits / 8; handle->output.block_size = handle->stream.header.channels * (bits / 8); return WUFF_SUCCESS; } wuff_sint32 wuff_check_bits(wuff_uint16 bits, wuff_uint16 * format) { if (*format == WUFF_FORMAT_PCM) { switch (bits) { case 8: *format = WUFF_FORMAT_PCM_U8; break; case 16: *format = WUFF_FORMAT_PCM_S16; break; case 24: *format = WUFF_FORMAT_PCM_S24; break; case 32: *format = WUFF_FORMAT_PCM_S32; break; default: return WUFF_FORMAT_UNSUPPORTED; } } else if (*format == WUFF_FORMAT_IEEE_FLOAT) { switch (bits) { case 32: *format = WUFF_FORMAT_IEEE_FLOAT_32; break; case 64: *format = WUFF_FORMAT_IEEE_FLOAT_64; break; default: return WUFF_FORMAT_UNSUPPORTED; } } else { return WUFF_FORMAT_UNSUPPORTED; } return WUFF_SUCCESS; } size_t wuff_calculate_samples(size_t target_size, wuff_uint8 sample_size, wuff_uint8 * head, wuff_uint8 * tail) { size_t samples = 0; if (*head != 0) { if (target_size <= *head) { *head = (wuff_uint8)target_size; *tail = 0; return 1; } target_size -= *head; ++samples; } samples = target_size / sample_size; *tail = target_size % sample_size; if (*tail != 0) ++samples; return samples; } wuff_sint32 wuff_init_stream(struct wuff_handle * handle) { /* Allocate some space on the stack. */ /* No need to do dynamic allocation for simple header probing. */ wuff_uint8 buffer[WUFF_HEADER_FETCH_SIZE]; size_t buffer_size = WUFF_HEADER_FETCH_SIZE; wuff_uint64 search_offset; struct wuff_chunk_header chunk; wuff_sint32 wuff_status; wuff_status = handle->callback->read(handle->userdata, buffer, &buffer_size); WUFF_STATUS_BAIL() else if (buffer_size < WUFF_STREAM_MIN_SIZE) return WUFF_STREAM_NOT_RIFF; /* Check for RIFF signature. */ wuff_copy_chunk_header_data(&chunk, buffer); if (chunk.id != WUFF_RIFF_CHUNK_ID) return WUFF_STREAM_NOT_RIFF; handle->stream.size = chunk.size; /* Check for WAVE format. */ wuff_copy_chunk_header_data(&chunk, buffer + 8); if (chunk.id != WUFF_WAVE_CHUNK_ID) return WUFF_STREAM_NOT_WAVE; /* Search fmt chunk. */ wuff_copy_chunk_header_data(&chunk, buffer + 12); search_offset = 12; if (chunk.id != WUFF_FORMAT_CHUNK_ID) { chunk.id = 0; /* The fmt chunk must appear before the data chunk. */ wuff_status = wuff_search_chunk(handle, &chunk, &search_offset, WUFF_FORMAT_CHUNK_ID, WUFF_DATA_CHUNK_ID); if (wuff_status == WUFF_STREAM_CHUNK_NOT_FOUND) return WUFF_STREAM_FORMAT_CHUNK_MISSING; else WUFF_STATUS_BAIL() /* In case the fmt chunk is not the first chunk, align it on the stack buffer as if it were. */ buffer_size = WUFF_HEADER_FETCH_SIZE - 20; wuff_status = handle->callback->read(handle->userdata, buffer + 20, &buffer_size); WUFF_STATUS_BAIL() /* EOF bail. */ else if (buffer_size < WUFF_HEADER_MIN_SIZE) return WUFF_STREAM_INVALID; } /* Extract header information. */ handle->stream.header.size = chunk.size; handle->stream.header.offset = search_offset + 8; handle->stream.header.format = wuff_get_uint16(buffer + 20); handle->stream.header.channels = wuff_get_uint16(buffer + 22); handle->stream.header.sample_rate = wuff_get_uint32(buffer + 24); handle->stream.header.bits_per_sample = wuff_get_uint16(buffer + 34); handle->stream.header.bytes_per_sample = handle->stream.header.bits_per_sample / 8; handle->stream.header.block_size = handle->stream.header.channels * handle->stream.header.bytes_per_sample; /* Bail on invalid streams. */ if (handle->stream.header.channels == 0) return WUFF_STREAM_ZERO_CHANNELS; else if (handle->stream.header.sample_rate == 0) return WUFF_STREAM_ZERO_SAMPLE_RATE; else if (handle->stream.header.bits_per_sample == 0) return WUFF_STREAM_ZERO_BITS_PER_SAMPLE; /* Grab the format from the extended header. */ if (handle->stream.header.size > WUFF_HEADER_MIN_SIZE && wuff_get_uint16(buffer + 36) == 22) { if (handle->stream.header.format == WUFF_FORMAT_EXTENSIBLE) handle->stream.header.format = wuff_get_uint16(buffer + 44); } /* The check if this format is actually supported. */ handle->stream.format = handle->stream.header.format; wuff_status = wuff_check_bits(handle->stream.header.bits_per_sample, &handle->stream.format); WUFF_STATUS_BAIL() /* The search for the data chunk begins. */ wuff_copy_chunk_header_data(&chunk, buffer + 20 + handle->stream.header.size); search_offset = handle->stream.header.offset + handle->stream.header.size; wuff_status = wuff_search_chunk(handle, &chunk, &search_offset, WUFF_DATA_CHUNK_ID, 0); if (wuff_status == WUFF_STREAM_CHUNK_NOT_FOUND) return WUFF_STREAM_DATA_CHUNK_MISSING; else WUFF_STATUS_BAIL() handle->stream.data.size = chunk.size; handle->stream.data.offset = search_offset + 8; handle->stream.length = handle->stream.data.size / handle->stream.header.channels / handle->stream.header.bytes_per_sample; handle->stream.position = 0; return WUFF_SUCCESS; } wuff_sint32 wuff_search_chunk(struct wuff_handle * handle, struct wuff_chunk_header * chunk, wuff_uint64 * offset, wuff_uint32 id, wuff_uint32 stop_id) { wuff_uint8 buffer[8]; wuff_uint64 search_offset; size_t buffer_size; wuff_sint32 wuff_status = 0; if (chunk->id != 0 && chunk->id == id) return WUFF_SUCCESS; /* Copy the current file position. */ search_offset = *offset; while (wuff_status >= 0) { search_offset += 8 + chunk->size; /* FIXME: Non-compliant RIFFs may not pad to WORD alignment. What now? */ if (search_offset & 1) search_offset++; wuff_status = handle->callback->seek(handle->userdata, search_offset); WUFF_STATUS_BAIL() /*else if (wuff_status == WUFF_CALLBACK_EOF) return WUFF_STREAM_CHUNK_NOT_FOUND;*/ buffer_size = 8; wuff_status = handle->callback->read(handle->userdata, buffer, &buffer_size); WUFF_STATUS_BAIL() wuff_copy_chunk_header_data(chunk, buffer); /* Bail if we're at the EOF or the stop id. */ if (buffer_size < 8 || (stop_id != 0 && chunk->id == stop_id)) return WUFF_STREAM_CHUNK_NOT_FOUND; else if (chunk->id == id) break; } /* Report chunk offset. */ *offset = search_offset; return WUFF_SUCCESS; } wuff_sint32 wuff_buffer_alloc(struct wuff_handle * handle) { wuff_sint32 wuff_status; if (handle == NULL) return WUFF_INVALID_PARAM; /* Try to allocate a buffer for 0.25 seconds, but clamp at some minimum and maximum value. */ handle->buffer.size = handle->stream.header.sample_rate * handle->stream.header.block_size / 4; if (handle->buffer.size < WUFF_BUFFER_MIN_SIZE) handle->buffer.size = WUFF_BUFFER_MIN_SIZE; else if (handle->buffer.size > WUFF_BUFFER_MAX_SIZE) handle->buffer.size = WUFF_BUFFER_MAX_SIZE; handle->buffer.data = wuff_alloc(handle->buffer.size); if (handle->buffer.data == NULL) return WUFF_MEMALLOC_ERROR; /* Just in case, let's null the offsets. */ wuff_status = wuff_buffer_clear(handle); WUFF_STATUS_BAIL() return WUFF_SUCCESS; } wuff_sint32 wuff_buffer_clear(struct wuff_handle * handle) { wuff_uint64 position; wuff_sint32 wuff_status; if (handle == NULL) return WUFF_INVALID_PARAM; wuff_status = handle->callback->tell(handle->userdata, &position); WUFF_STATUS_BAIL() if (position < handle->stream.data.offset || position > handle->stream.data.offset + handle->stream.data.size) return WUFF_BUFFER_INVALID_STREAM_POSITION; handle->buffer.bytes_left = handle->stream.data.size - (position - handle->stream.data.offset); handle->buffer.offset = 0; handle->buffer.end = 0; return WUFF_SUCCESS; } wuff_sint32 wuff_buffer_fill(struct wuff_handle * handle) { size_t bytes_in_buffer; size_t bytes_to_read; wuff_sint32 wuff_status; if (handle == NULL) return WUFF_INVALID_PARAM; /* Check if there are bytes in the buffer and move them to the start of the buffer. */ /* Probably not the most efficient way. Think on it some more! */ bytes_in_buffer = handle->buffer.end - handle->buffer.offset; if (bytes_in_buffer == handle->buffer.size) return WUFF_SUCCESS; else if (bytes_in_buffer > 0) memmove(handle->buffer.data, handle->buffer.data + handle->buffer.offset, bytes_in_buffer); bytes_to_read = handle->buffer.size - bytes_in_buffer; if (bytes_to_read > handle->buffer.bytes_left) bytes_to_read = (size_t)handle->buffer.bytes_left; wuff_status = handle->callback->read(handle->userdata, handle->buffer.data + bytes_in_buffer, &bytes_to_read); WUFF_STATUS_BAIL() handle->buffer.offset = 0; handle->buffer.end = bytes_in_buffer + bytes_to_read; handle->buffer.bytes_left -= bytes_to_read; return WUFF_SUCCESS; } wuff_sint32 wuff_buffer_release(struct wuff_handle * handle, size_t samples) { size_t size; if (handle == NULL) return WUFF_INVALID_PARAM; size = samples * handle->stream.header.bytes_per_sample; /* Check for an attempt to release more samples than the buffer could hold. */ /* "This should never happen." Let's throw an error anyway in case.*/ if (size > handle->buffer.end - handle->buffer.offset) return WUFF_BUFFER_INVALID_SIZE; handle->buffer.offset += size; return WUFF_SUCCESS; } wuff_sint32 wuff_buffer_request(struct wuff_handle * handle, wuff_uint8 ** buffer, size_t * samples) { size_t request_samples = *samples; size_t buffer_samples, size; size_t bps = handle->stream.header.bytes_per_sample; wuff_sint32 wuff_status; if (handle == NULL || buffer == NULL || samples == NULL) return WUFF_INVALID_PARAM; /* Fill the buffer some more if the requested size is bigger than the current data in the buffer. */ size = request_samples * bps; if (size > handle->buffer.end - handle->buffer.offset) { wuff_status = wuff_buffer_fill(handle); WUFF_STATUS_BAIL() } buffer_samples = (handle->buffer.end - handle->buffer.offset) / bps; /* Report sample count change. */ if (buffer_samples < request_samples) *samples = buffer_samples; /* Report sample buffer start. */ *buffer = handle->buffer.data + handle->buffer.offset; return WUFF_SUCCESS; } love-0.9.1/src/libraries/noise1234/0000755000000000000000000000000012316602463016661 5ustar00rootroot00000000000000love-0.9.1/src/libraries/noise1234/simplexnoise1234.cpp0000644000000000000000000004536412316602166022432 0ustar00rootroot00000000000000// SimplexNoise1234 // Copyright © 2003-2011, Stefan Gustavson // // Contact: stegu@itn.liu.se // // This library is public domain software, released by the author // into the public domain in February 2011. You may do anything // you like with it. You may even remove all attributions, // but of course I'd appreciate it if you kept my name somewhere. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // General Public License for more details. /** \file \brief Implements the SimplexNoise1234 class for producing Perlin simplex noise. \author Stefan Gustavson (stegu@itn.liu.se) */ /* * This implementation is "Simplex Noise" as presented by * Ken Perlin at a relatively obscure and not often cited course * session "Real-Time Shading" at Siggraph 2001 (before real * time shading actually took on), under the title "hardware noise". * The 3D function is numerically equivalent to his Java reference * code available in the PDF course notes, although I re-implemented * it from scratch to get more readable code. The 1D, 2D and 4D cases * were implemented from scratch by me from Ken Perlin's text. * * This is a highly reusable class. It has no dependencies * on any other file, apart from its own header file. */ #include "simplexnoise1234.h" #define FASTFLOOR(x) ( ((x)>0) ? ((int)x) : (((int)x)-1) ) //--------------------------------------------------------------------- // Static data /* * Permutation table. This is just a random jumble of all numbers 0-255, * repeated twice to avoid wrapping the index at 255 for each lookup. * This needs to be exactly the same for all instances on all platforms, * so it's easiest to just keep it as static explicit data. * This also removes the need for any initialisation of this class. * * Note that making this an int[] instead of a char[] might make the * code run faster on platforms with a high penalty for unaligned single * byte addressing. Intel x86 is generally single-byte-friendly, but * some other CPUs are faster with 4-aligned reads. * However, a char[] is smaller, which avoids cache trashing, and that * is probably the most important aspect on most architectures. * This array is accessed a *lot* by the noise functions. * A vector-valued noise over 3D accesses it 96 times, and a * float-valued 4D noise 64 times. We want this to fit in the cache! */ unsigned char SimplexNoise1234::perm[512] = {151,160,137,91,90,15, 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, 190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, 88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, 77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, 102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, 135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, 223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180, 151,160,137,91,90,15, 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, 190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, 88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, 77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, 102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, 135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, 223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180 }; //--------------------------------------------------------------------- /* * Helper functions to compute gradients-dot-residualvectors (1D to 4D) * Note that these generate gradients of more than unit length. To make * a close match with the value range of classic Perlin noise, the final * noise values need to be rescaled to fit nicely within [-1,1]. * (The simplex noise functions as such also have different scaling.) * Note also that these noise functions are the most practical and useful * signed version of Perlin noise. To return values according to the * RenderMan specification from the SL noise() and pnoise() functions, * the noise values need to be scaled and offset to [0,1], like this: * float SLnoise = (SimplexNoise1234::noise(x,y,z) + 1.0) * 0.5; */ float SimplexNoise1234::grad( int hash, float x ) { int h = hash & 15; float grad = 1.0f + (h & 7); // Gradient value 1.0, 2.0, ..., 8.0 if (h&8) grad = -grad; // Set a random sign for the gradient return ( grad * x ); // Multiply the gradient with the distance } float SimplexNoise1234::grad( int hash, float x, float y ) { int h = hash & 7; // Convert low 3 bits of hash code float u = h<4 ? x : y; // into 8 simple gradient directions, float v = h<4 ? y : x; // and compute the dot product with (x,y). return ((h&1)? -u : u) + ((h&2)? -2.0f*v : 2.0f*v); } float SimplexNoise1234::grad( int hash, float x, float y , float z ) { int h = hash & 15; // Convert low 4 bits of hash code into 12 simple float u = h<8 ? x : y; // gradient directions, and compute dot product. float v = h<4 ? y : h==12||h==14 ? x : z; // Fix repeats at h = 12 to 15 return ((h&1)? -u : u) + ((h&2)? -v : v); } float SimplexNoise1234::grad( int hash, float x, float y, float z, float t ) { int h = hash & 31; // Convert low 5 bits of hash code into 32 simple float u = h<24 ? x : y; // gradient directions, and compute dot product. float v = h<16 ? y : z; float w = h<8 ? z : t; return ((h&1)? -u : u) + ((h&2)? -v : v) + ((h&4)? -w : w); } // A lookup table to traverse the simplex around a given point in 4D. // Details can be found where this table is used, in the 4D noise method. /* TODO: This should not be required, backport it from Bill's GLSL code! */ static unsigned char simplex[64][4] = { {0,1,2,3},{0,1,3,2},{0,0,0,0},{0,2,3,1},{0,0,0,0},{0,0,0,0},{0,0,0,0},{1,2,3,0}, {0,2,1,3},{0,0,0,0},{0,3,1,2},{0,3,2,1},{0,0,0,0},{0,0,0,0},{0,0,0,0},{1,3,2,0}, {0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}, {1,2,0,3},{0,0,0,0},{1,3,0,2},{0,0,0,0},{0,0,0,0},{0,0,0,0},{2,3,0,1},{2,3,1,0}, {1,0,2,3},{1,0,3,2},{0,0,0,0},{0,0,0,0},{0,0,0,0},{2,0,3,1},{0,0,0,0},{2,1,3,0}, {0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}, {2,0,1,3},{0,0,0,0},{0,0,0,0},{0,0,0,0},{3,0,1,2},{3,0,2,1},{0,0,0,0},{3,1,2,0}, {2,1,0,3},{0,0,0,0},{0,0,0,0},{0,0,0,0},{3,1,0,2},{0,0,0,0},{3,2,0,1},{3,2,1,0}}; // 1D simplex noise float SimplexNoise1234::noise(float x) { int i0 = FASTFLOOR(x); int i1 = i0 + 1; float x0 = x - i0; float x1 = x0 - 1.0f; float n0, n1; float t0 = 1.0f - x0*x0; // if(t0 < 0.0f) t0 = 0.0f; t0 *= t0; n0 = t0 * t0 * grad(perm[i0 & 0xff], x0); float t1 = 1.0f - x1*x1; // if(t1 < 0.0f) t1 = 0.0f; t1 *= t1; n1 = t1 * t1 * grad(perm[i1 & 0xff], x1); // The maximum value of this noise is 8*(3/4)^4 = 2.53125 // A factor of 0.395 will scale to fit exactly within [-1,1] return 0.395f * (n0 + n1); } // 2D simplex noise float SimplexNoise1234::noise(float x, float y) { #define F2 0.366025403 // F2 = 0.5*(sqrt(3.0)-1.0) #define G2 0.211324865 // G2 = (3.0-Math.sqrt(3.0))/6.0 float n0, n1, n2; // Noise contributions from the three corners // Skew the input space to determine which simplex cell we're in float s = (x+y)*F2; // Hairy factor for 2D float xs = x + s; float ys = y + s; int i = FASTFLOOR(xs); int j = FASTFLOOR(ys); float t = (float)(i+j)*G2; float X0 = i-t; // Unskew the cell origin back to (x,y) space float Y0 = j-t; float x0 = x-X0; // The x,y distances from the cell origin float y0 = y-Y0; // For the 2D case, the simplex shape is an equilateral triangle. // Determine which simplex we are in. int i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords if(x0>y0) {i1=1; j1=0;} // lower triangle, XY order: (0,0)->(1,0)->(1,1) else {i1=0; j1=1;} // upper triangle, YX order: (0,0)->(0,1)->(1,1) // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where // c = (3-sqrt(3))/6 float x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords float y1 = y0 - j1 + G2; float x2 = x0 - 1.0f + 2.0f * G2; // Offsets for last corner in (x,y) unskewed coords float y2 = y0 - 1.0f + 2.0f * G2; // Wrap the integer indices at 256, to avoid indexing perm[] out of bounds int ii = i & 0xff; int jj = j & 0xff; // Calculate the contribution from the three corners float t0 = 0.5f - x0*x0-y0*y0; if(t0 < 0.0f) n0 = 0.0f; else { t0 *= t0; n0 = t0 * t0 * grad(perm[ii+perm[jj]], x0, y0); } float t1 = 0.5f - x1*x1-y1*y1; if(t1 < 0.0f) n1 = 0.0f; else { t1 *= t1; n1 = t1 * t1 * grad(perm[ii+i1+perm[jj+j1]], x1, y1); } float t2 = 0.5f - x2*x2-y2*y2; if(t2 < 0.0f) n2 = 0.0f; else { t2 *= t2; n2 = t2 * t2 * grad(perm[ii+1+perm[jj+1]], x2, y2); } // Add contributions from each corner to get the final noise value. // The result is scaled to return values in the interval [-1,1]. return 45.23f * (n0 + n1 + n2); // TODO: The scale factor is preliminary! } // 3D simplex noise float SimplexNoise1234::noise(float x, float y, float z) { // Simple skewing factors for the 3D case #define F3 0.333333333 #define G3 0.166666667 float n0, n1, n2, n3; // Noise contributions from the four corners // Skew the input space to determine which simplex cell we're in float s = (x+y+z)*F3; // Very nice and simple skew factor for 3D float xs = x+s; float ys = y+s; float zs = z+s; int i = FASTFLOOR(xs); int j = FASTFLOOR(ys); int k = FASTFLOOR(zs); float t = (float)(i+j+k)*G3; float X0 = i-t; // Unskew the cell origin back to (x,y,z) space float Y0 = j-t; float Z0 = k-t; float x0 = x-X0; // The x,y,z distances from the cell origin float y0 = y-Y0; float z0 = z-Z0; // For the 3D case, the simplex shape is a slightly irregular tetrahedron. // Determine which simplex we are in. int i1, j1, k1; // Offsets for second corner of simplex in (i,j,k) coords int i2, j2, k2; // Offsets for third corner of simplex in (i,j,k) coords /* This code would benefit from a backport from the GLSL version! */ if(x0>=y0) { if(y0>=z0) { i1=1; j1=0; k1=0; i2=1; j2=1; k2=0; } // X Y Z order else if(x0>=z0) { i1=1; j1=0; k1=0; i2=1; j2=0; k2=1; } // X Z Y order else { i1=0; j1=0; k1=1; i2=1; j2=0; k2=1; } // Z X Y order } else { // x0 y0) ? 32 : 0; int c2 = (x0 > z0) ? 16 : 0; int c3 = (y0 > z0) ? 8 : 0; int c4 = (x0 > w0) ? 4 : 0; int c5 = (y0 > w0) ? 2 : 0; int c6 = (z0 > w0) ? 1 : 0; int c = c1 + c2 + c3 + c4 + c5 + c6; int i1, j1, k1, l1; // The integer offsets for the second simplex corner int i2, j2, k2, l2; // The integer offsets for the third simplex corner int i3, j3, k3, l3; // The integer offsets for the fourth simplex corner // simplex[c] is a 4-vector with the numbers 0, 1, 2 and 3 in some order. // Many values of c will never occur, since e.g. x>y>z>w makes x=3 ? 1 : 0; j1 = simplex[c][1]>=3 ? 1 : 0; k1 = simplex[c][2]>=3 ? 1 : 0; l1 = simplex[c][3]>=3 ? 1 : 0; // The number 2 in the "simplex" array is at the second largest coordinate. i2 = simplex[c][0]>=2 ? 1 : 0; j2 = simplex[c][1]>=2 ? 1 : 0; k2 = simplex[c][2]>=2 ? 1 : 0; l2 = simplex[c][3]>=2 ? 1 : 0; // The number 1 in the "simplex" array is at the second smallest coordinate. i3 = simplex[c][0]>=1 ? 1 : 0; j3 = simplex[c][1]>=1 ? 1 : 0; k3 = simplex[c][2]>=1 ? 1 : 0; l3 = simplex[c][3]>=1 ? 1 : 0; // The fifth corner has all coordinate offsets = 1, so no need to look that up. float x1 = x0 - i1 + G4; // Offsets for second corner in (x,y,z,w) coords float y1 = y0 - j1 + G4; float z1 = z0 - k1 + G4; float w1 = w0 - l1 + G4; float x2 = x0 - i2 + 2.0f*G4; // Offsets for third corner in (x,y,z,w) coords float y2 = y0 - j2 + 2.0f*G4; float z2 = z0 - k2 + 2.0f*G4; float w2 = w0 - l2 + 2.0f*G4; float x3 = x0 - i3 + 3.0f*G4; // Offsets for fourth corner in (x,y,z,w) coords float y3 = y0 - j3 + 3.0f*G4; float z3 = z0 - k3 + 3.0f*G4; float w3 = w0 - l3 + 3.0f*G4; float x4 = x0 - 1.0f + 4.0f*G4; // Offsets for last corner in (x,y,z,w) coords float y4 = y0 - 1.0f + 4.0f*G4; float z4 = z0 - 1.0f + 4.0f*G4; float w4 = w0 - 1.0f + 4.0f*G4; // Wrap the integer indices at 256, to avoid indexing perm[] out of bounds int ii = i & 0xff; int jj = j & 0xff; int kk = k & 0xff; int ll = l & 0xff; // Calculate the contribution from the five corners float t0 = 0.6f - x0*x0 - y0*y0 - z0*z0 - w0*w0; if(t0 < 0.0f) n0 = 0.0f; else { t0 *= t0; n0 = t0 * t0 * grad(perm[ii+perm[jj+perm[kk+perm[ll]]]], x0, y0, z0, w0); } float t1 = 0.6f - x1*x1 - y1*y1 - z1*z1 - w1*w1; if(t1 < 0.0f) n1 = 0.0f; else { t1 *= t1; n1 = t1 * t1 * grad(perm[ii+i1+perm[jj+j1+perm[kk+k1+perm[ll+l1]]]], x1, y1, z1, w1); } float t2 = 0.6f - x2*x2 - y2*y2 - z2*z2 - w2*w2; if(t2 < 0.0f) n2 = 0.0f; else { t2 *= t2; n2 = t2 * t2 * grad(perm[ii+i2+perm[jj+j2+perm[kk+k2+perm[ll+l2]]]], x2, y2, z2, w2); } float t3 = 0.6f - x3*x3 - y3*y3 - z3*z3 - w3*w3; if(t3 < 0.0f) n3 = 0.0f; else { t3 *= t3; n3 = t3 * t3 * grad(perm[ii+i3+perm[jj+j3+perm[kk+k3+perm[ll+l3]]]], x3, y3, z3, w3); } float t4 = 0.6f - x4*x4 - y4*y4 - z4*z4 - w4*w4; if(t4 < 0.0f) n4 = 0.0f; else { t4 *= t4; n4 = t4 * t4 * grad(perm[ii+1+perm[jj+1+perm[kk+1+perm[ll+1]]]], x4, y4, z4, w4); } // Sum up and scale the result to cover the range [-1,1] return 27.3f * (n0 + n1 + n2 + n3 + n4); // TODO: The scale factor is preliminary! } //--------------------------------------------------------------------- love-0.9.1/src/libraries/noise1234/simplexnoise1234.h0000644000000000000000000000411512316602166022064 0ustar00rootroot00000000000000// SimplexNoise1234 // Copyright � 2003-2011, Stefan Gustavson // // Contact: stegu@itn.liu.se // // This library is public domain software, released by the author // into the public domain in February 2011. You may do anything // you like with it. You may even remove all attributions, // but of course I'd appreciate it if you kept my name somewhere. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // General Public License for more details. /** \file \brief Declares the SimplexNoise1234 class for producing Perlin simplex noise. \author Stefan Gustavson (stegu@itn.liu.se) */ /* * This is a clean, fast, modern and free Perlin Simplex noise class in C++. * Being a stand-alone class with no external dependencies, it is * highly reusable without source code modifications. * * * Note: * Replacing the "float" type with "double" can actually make this run faster * on some platforms. A templatized version of SimplexNoise1234 could be useful. */ class SimplexNoise1234 { public: SimplexNoise1234() {} ~SimplexNoise1234() {} /** 1D, 2D, 3D and 4D float Perlin noise */ static float noise( float x ); static float noise( float x, float y ); static float noise( float x, float y, float z ); static float noise( float x, float y, float z, float w ); /** 1D, 2D, 3D and 4D float Perlin noise, with a specified integer period */ static float pnoise( float x, int px ); static float pnoise( float x, float y, int px, int py ); static float pnoise( float x, float y, float z, int px, int py, int pz ); static float pnoise( float x, float y, float z, float w, int px, int py, int pz, int pw ); private: static unsigned char perm[]; static float grad( int hash, float x ); static float grad( int hash, float x, float y ); static float grad( int hash, float x, float y , float z ); static float grad( int hash, float x, float y, float z, float t ); }; love-0.9.1/src/libraries/Box2D/0000755000000000000000000000000012316602463016150 5ustar00rootroot00000000000000love-0.9.1/src/libraries/Box2D/Box2D.h0000755000000000000000000000461412316602166017247 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef BOX2D_H #define BOX2D_H /** \mainpage Box2D API Documentation \section intro_sec Getting Started For documentation please see http://box2d.org/documentation.html For discussion please visit http://box2d.org/forum */ // These include files constitute the main Box2D API #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif love-0.9.1/src/libraries/Box2D/Collision/0000755000000000000000000000000012316602463020103 5ustar00rootroot00000000000000love-0.9.1/src/libraries/Box2D/Collision/b2BroadPhase.cpp0000755000000000000000000000604112316602166023047 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include b2BroadPhase::b2BroadPhase() { m_proxyCount = 0; m_pairCapacity = 16; m_pairCount = 0; m_pairBuffer = (b2Pair*)b2Alloc(m_pairCapacity * sizeof(b2Pair)); m_moveCapacity = 16; m_moveCount = 0; m_moveBuffer = (int32*)b2Alloc(m_moveCapacity * sizeof(int32)); } b2BroadPhase::~b2BroadPhase() { b2Free(m_moveBuffer); b2Free(m_pairBuffer); } int32 b2BroadPhase::CreateProxy(const b2AABB& aabb, void* userData) { int32 proxyId = m_tree.CreateProxy(aabb, userData); ++m_proxyCount; BufferMove(proxyId); return proxyId; } void b2BroadPhase::DestroyProxy(int32 proxyId) { UnBufferMove(proxyId); --m_proxyCount; m_tree.DestroyProxy(proxyId); } void b2BroadPhase::MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement) { bool buffer = m_tree.MoveProxy(proxyId, aabb, displacement); if (buffer) { BufferMove(proxyId); } } void b2BroadPhase::TouchProxy(int32 proxyId) { BufferMove(proxyId); } void b2BroadPhase::BufferMove(int32 proxyId) { if (m_moveCount == m_moveCapacity) { int32* oldBuffer = m_moveBuffer; m_moveCapacity *= 2; m_moveBuffer = (int32*)b2Alloc(m_moveCapacity * sizeof(int32)); memcpy(m_moveBuffer, oldBuffer, m_moveCount * sizeof(int32)); b2Free(oldBuffer); } m_moveBuffer[m_moveCount] = proxyId; ++m_moveCount; } void b2BroadPhase::UnBufferMove(int32 proxyId) { for (int32 i = 0; i < m_moveCount; ++i) { if (m_moveBuffer[i] == proxyId) { m_moveBuffer[i] = e_nullProxy; } } } // This is called from b2DynamicTree::Query when we are gathering pairs. bool b2BroadPhase::QueryCallback(int32 proxyId) { // A proxy cannot form a pair with itself. if (proxyId == m_queryProxyId) { return true; } // Grow the pair buffer as needed. if (m_pairCount == m_pairCapacity) { b2Pair* oldBuffer = m_pairBuffer; m_pairCapacity *= 2; m_pairBuffer = (b2Pair*)b2Alloc(m_pairCapacity * sizeof(b2Pair)); memcpy(m_pairBuffer, oldBuffer, m_pairCount * sizeof(b2Pair)); b2Free(oldBuffer); } m_pairBuffer[m_pairCount].proxyIdA = b2Min(proxyId, m_queryProxyId); m_pairBuffer[m_pairCount].proxyIdB = b2Max(proxyId, m_queryProxyId); ++m_pairCount; return true; } love-0.9.1/src/libraries/Box2D/Collision/b2CollideEdge.cpp0000755000000000000000000003636512316602166023213 0ustar00rootroot00000000000000/* * Copyright (c) 2007-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include // Compute contact points for edge versus circle. // This accounts for edge connectivity. void b2CollideEdgeAndCircle(b2Manifold* manifold, const b2EdgeShape* edgeA, const b2Transform& xfA, const b2CircleShape* circleB, const b2Transform& xfB) { manifold->pointCount = 0; // Compute circle in frame of edge b2Vec2 Q = b2MulT(xfA, b2Mul(xfB, circleB->m_p)); b2Vec2 A = edgeA->m_vertex1, B = edgeA->m_vertex2; b2Vec2 e = B - A; // Barycentric coordinates float32 u = b2Dot(e, B - Q); float32 v = b2Dot(e, Q - A); float32 radius = edgeA->m_radius + circleB->m_radius; b2ContactFeature cf; cf.indexB = 0; cf.typeB = b2ContactFeature::e_vertex; // Region A if (v <= 0.0f) { b2Vec2 P = A; b2Vec2 d = Q - P; float32 dd = b2Dot(d, d); if (dd > radius * radius) { return; } // Is there an edge connected to A? if (edgeA->m_hasVertex0) { b2Vec2 A1 = edgeA->m_vertex0; b2Vec2 B1 = A; b2Vec2 e1 = B1 - A1; float32 u1 = b2Dot(e1, B1 - Q); // Is the circle in Region AB of the previous edge? if (u1 > 0.0f) { return; } } cf.indexA = 0; cf.typeA = b2ContactFeature::e_vertex; manifold->pointCount = 1; manifold->type = b2Manifold::e_circles; manifold->localNormal.SetZero(); manifold->localPoint = P; manifold->points[0].id.key = 0; manifold->points[0].id.cf = cf; manifold->points[0].localPoint = circleB->m_p; return; } // Region B if (u <= 0.0f) { b2Vec2 P = B; b2Vec2 d = Q - P; float32 dd = b2Dot(d, d); if (dd > radius * radius) { return; } // Is there an edge connected to B? if (edgeA->m_hasVertex3) { b2Vec2 B2 = edgeA->m_vertex3; b2Vec2 A2 = B; b2Vec2 e2 = B2 - A2; float32 v2 = b2Dot(e2, Q - A2); // Is the circle in Region AB of the next edge? if (v2 > 0.0f) { return; } } cf.indexA = 1; cf.typeA = b2ContactFeature::e_vertex; manifold->pointCount = 1; manifold->type = b2Manifold::e_circles; manifold->localNormal.SetZero(); manifold->localPoint = P; manifold->points[0].id.key = 0; manifold->points[0].id.cf = cf; manifold->points[0].localPoint = circleB->m_p; return; } // Region AB float32 den = b2Dot(e, e); b2Assert(den > 0.0f); b2Vec2 P = (1.0f / den) * (u * A + v * B); b2Vec2 d = Q - P; float32 dd = b2Dot(d, d); if (dd > radius * radius) { return; } b2Vec2 n(-e.y, e.x); if (b2Dot(n, Q - A) < 0.0f) { n.Set(-n.x, -n.y); } n.Normalize(); cf.indexA = 0; cf.typeA = b2ContactFeature::e_face; manifold->pointCount = 1; manifold->type = b2Manifold::e_faceA; manifold->localNormal = n; manifold->localPoint = A; manifold->points[0].id.key = 0; manifold->points[0].id.cf = cf; manifold->points[0].localPoint = circleB->m_p; } // This structure is used to keep track of the best separating axis. struct b2EPAxis { enum Type { e_unknown, e_edgeA, e_edgeB }; Type type; int32 index; float32 separation; }; // This holds polygon B expressed in frame A. struct b2TempPolygon { b2Vec2 vertices[b2_maxPolygonVertices]; b2Vec2 normals[b2_maxPolygonVertices]; int32 count; }; // Reference face used for clipping struct b2ReferenceFace { int32 i1, i2; b2Vec2 v1, v2; b2Vec2 normal; b2Vec2 sideNormal1; float32 sideOffset1; b2Vec2 sideNormal2; float32 sideOffset2; }; // This class collides and edge and a polygon, taking into account edge adjacency. struct b2EPCollider { void Collide(b2Manifold* manifold, const b2EdgeShape* edgeA, const b2Transform& xfA, const b2PolygonShape* polygonB, const b2Transform& xfB); b2EPAxis ComputeEdgeSeparation(); b2EPAxis ComputePolygonSeparation(); enum VertexType { e_isolated, e_concave, e_convex }; b2TempPolygon m_polygonB; b2Transform m_xf; b2Vec2 m_centroidB; b2Vec2 m_v0, m_v1, m_v2, m_v3; b2Vec2 m_normal0, m_normal1, m_normal2; b2Vec2 m_normal; VertexType m_type1, m_type2; b2Vec2 m_lowerLimit, m_upperLimit; float32 m_radius; bool m_front; }; // Algorithm: // 1. Classify v1 and v2 // 2. Classify polygon centroid as front or back // 3. Flip normal if necessary // 4. Initialize normal range to [-pi, pi] about face normal // 5. Adjust normal range according to adjacent edges // 6. Visit each separating axes, only accept axes within the range // 7. Return if _any_ axis indicates separation // 8. Clip void b2EPCollider::Collide(b2Manifold* manifold, const b2EdgeShape* edgeA, const b2Transform& xfA, const b2PolygonShape* polygonB, const b2Transform& xfB) { m_xf = b2MulT(xfA, xfB); m_centroidB = b2Mul(m_xf, polygonB->m_centroid); m_v0 = edgeA->m_vertex0; m_v1 = edgeA->m_vertex1; m_v2 = edgeA->m_vertex2; m_v3 = edgeA->m_vertex3; bool hasVertex0 = edgeA->m_hasVertex0; bool hasVertex3 = edgeA->m_hasVertex3; b2Vec2 edge1 = m_v2 - m_v1; edge1.Normalize(); m_normal1.Set(edge1.y, -edge1.x); float32 offset1 = b2Dot(m_normal1, m_centroidB - m_v1); float32 offset0 = 0.0f, offset2 = 0.0f; bool convex1 = false, convex2 = false; // Is there a preceding edge? if (hasVertex0) { b2Vec2 edge0 = m_v1 - m_v0; edge0.Normalize(); m_normal0.Set(edge0.y, -edge0.x); convex1 = b2Cross(edge0, edge1) >= 0.0f; offset0 = b2Dot(m_normal0, m_centroidB - m_v0); } // Is there a following edge? if (hasVertex3) { b2Vec2 edge2 = m_v3 - m_v2; edge2.Normalize(); m_normal2.Set(edge2.y, -edge2.x); convex2 = b2Cross(edge1, edge2) > 0.0f; offset2 = b2Dot(m_normal2, m_centroidB - m_v2); } // Determine front or back collision. Determine collision normal limits. if (hasVertex0 && hasVertex3) { if (convex1 && convex2) { m_front = offset0 >= 0.0f || offset1 >= 0.0f || offset2 >= 0.0f; if (m_front) { m_normal = m_normal1; m_lowerLimit = m_normal0; m_upperLimit = m_normal2; } else { m_normal = -m_normal1; m_lowerLimit = -m_normal1; m_upperLimit = -m_normal1; } } else if (convex1) { m_front = offset0 >= 0.0f || (offset1 >= 0.0f && offset2 >= 0.0f); if (m_front) { m_normal = m_normal1; m_lowerLimit = m_normal0; m_upperLimit = m_normal1; } else { m_normal = -m_normal1; m_lowerLimit = -m_normal2; m_upperLimit = -m_normal1; } } else if (convex2) { m_front = offset2 >= 0.0f || (offset0 >= 0.0f && offset1 >= 0.0f); if (m_front) { m_normal = m_normal1; m_lowerLimit = m_normal1; m_upperLimit = m_normal2; } else { m_normal = -m_normal1; m_lowerLimit = -m_normal1; m_upperLimit = -m_normal0; } } else { m_front = offset0 >= 0.0f && offset1 >= 0.0f && offset2 >= 0.0f; if (m_front) { m_normal = m_normal1; m_lowerLimit = m_normal1; m_upperLimit = m_normal1; } else { m_normal = -m_normal1; m_lowerLimit = -m_normal2; m_upperLimit = -m_normal0; } } } else if (hasVertex0) { if (convex1) { m_front = offset0 >= 0.0f || offset1 >= 0.0f; if (m_front) { m_normal = m_normal1; m_lowerLimit = m_normal0; m_upperLimit = -m_normal1; } else { m_normal = -m_normal1; m_lowerLimit = m_normal1; m_upperLimit = -m_normal1; } } else { m_front = offset0 >= 0.0f && offset1 >= 0.0f; if (m_front) { m_normal = m_normal1; m_lowerLimit = m_normal1; m_upperLimit = -m_normal1; } else { m_normal = -m_normal1; m_lowerLimit = m_normal1; m_upperLimit = -m_normal0; } } } else if (hasVertex3) { if (convex2) { m_front = offset1 >= 0.0f || offset2 >= 0.0f; if (m_front) { m_normal = m_normal1; m_lowerLimit = -m_normal1; m_upperLimit = m_normal2; } else { m_normal = -m_normal1; m_lowerLimit = -m_normal1; m_upperLimit = m_normal1; } } else { m_front = offset1 >= 0.0f && offset2 >= 0.0f; if (m_front) { m_normal = m_normal1; m_lowerLimit = -m_normal1; m_upperLimit = m_normal1; } else { m_normal = -m_normal1; m_lowerLimit = -m_normal2; m_upperLimit = m_normal1; } } } else { m_front = offset1 >= 0.0f; if (m_front) { m_normal = m_normal1; m_lowerLimit = -m_normal1; m_upperLimit = -m_normal1; } else { m_normal = -m_normal1; m_lowerLimit = m_normal1; m_upperLimit = m_normal1; } } // Get polygonB in frameA m_polygonB.count = polygonB->m_count; for (int32 i = 0; i < polygonB->m_count; ++i) { m_polygonB.vertices[i] = b2Mul(m_xf, polygonB->m_vertices[i]); m_polygonB.normals[i] = b2Mul(m_xf.q, polygonB->m_normals[i]); } m_radius = 2.0f * b2_polygonRadius; manifold->pointCount = 0; b2EPAxis edgeAxis = ComputeEdgeSeparation(); // If no valid normal can be found than this edge should not collide. if (edgeAxis.type == b2EPAxis::e_unknown) { return; } if (edgeAxis.separation > m_radius) { return; } b2EPAxis polygonAxis = ComputePolygonSeparation(); if (polygonAxis.type != b2EPAxis::e_unknown && polygonAxis.separation > m_radius) { return; } // Use hysteresis for jitter reduction. const float32 k_relativeTol = 0.98f; const float32 k_absoluteTol = 0.001f; b2EPAxis primaryAxis; if (polygonAxis.type == b2EPAxis::e_unknown) { primaryAxis = edgeAxis; } else if (polygonAxis.separation > k_relativeTol * edgeAxis.separation + k_absoluteTol) { primaryAxis = polygonAxis; } else { primaryAxis = edgeAxis; } b2ClipVertex ie[2]; b2ReferenceFace rf; if (primaryAxis.type == b2EPAxis::e_edgeA) { manifold->type = b2Manifold::e_faceA; // Search for the polygon normal that is most anti-parallel to the edge normal. int32 bestIndex = 0; float32 bestValue = b2Dot(m_normal, m_polygonB.normals[0]); for (int32 i = 1; i < m_polygonB.count; ++i) { float32 value = b2Dot(m_normal, m_polygonB.normals[i]); if (value < bestValue) { bestValue = value; bestIndex = i; } } int32 i1 = bestIndex; int32 i2 = i1 + 1 < m_polygonB.count ? i1 + 1 : 0; ie[0].v = m_polygonB.vertices[i1]; ie[0].id.cf.indexA = 0; ie[0].id.cf.indexB = static_cast(i1); ie[0].id.cf.typeA = b2ContactFeature::e_face; ie[0].id.cf.typeB = b2ContactFeature::e_vertex; ie[1].v = m_polygonB.vertices[i2]; ie[1].id.cf.indexA = 0; ie[1].id.cf.indexB = static_cast(i2); ie[1].id.cf.typeA = b2ContactFeature::e_face; ie[1].id.cf.typeB = b2ContactFeature::e_vertex; if (m_front) { rf.i1 = 0; rf.i2 = 1; rf.v1 = m_v1; rf.v2 = m_v2; rf.normal = m_normal1; } else { rf.i1 = 1; rf.i2 = 0; rf.v1 = m_v2; rf.v2 = m_v1; rf.normal = -m_normal1; } } else { manifold->type = b2Manifold::e_faceB; ie[0].v = m_v1; ie[0].id.cf.indexA = 0; ie[0].id.cf.indexB = static_cast(primaryAxis.index); ie[0].id.cf.typeA = b2ContactFeature::e_vertex; ie[0].id.cf.typeB = b2ContactFeature::e_face; ie[1].v = m_v2; ie[1].id.cf.indexA = 0; ie[1].id.cf.indexB = static_cast(primaryAxis.index); ie[1].id.cf.typeA = b2ContactFeature::e_vertex; ie[1].id.cf.typeB = b2ContactFeature::e_face; rf.i1 = primaryAxis.index; rf.i2 = rf.i1 + 1 < m_polygonB.count ? rf.i1 + 1 : 0; rf.v1 = m_polygonB.vertices[rf.i1]; rf.v2 = m_polygonB.vertices[rf.i2]; rf.normal = m_polygonB.normals[rf.i1]; } rf.sideNormal1.Set(rf.normal.y, -rf.normal.x); rf.sideNormal2 = -rf.sideNormal1; rf.sideOffset1 = b2Dot(rf.sideNormal1, rf.v1); rf.sideOffset2 = b2Dot(rf.sideNormal2, rf.v2); // Clip incident edge against extruded edge1 side edges. b2ClipVertex clipPoints1[2]; b2ClipVertex clipPoints2[2]; int32 np; // Clip to box side 1 np = b2ClipSegmentToLine(clipPoints1, ie, rf.sideNormal1, rf.sideOffset1, rf.i1); if (np < b2_maxManifoldPoints) { return; } // Clip to negative box side 1 np = b2ClipSegmentToLine(clipPoints2, clipPoints1, rf.sideNormal2, rf.sideOffset2, rf.i2); if (np < b2_maxManifoldPoints) { return; } // Now clipPoints2 contains the clipped points. if (primaryAxis.type == b2EPAxis::e_edgeA) { manifold->localNormal = rf.normal; manifold->localPoint = rf.v1; } else { manifold->localNormal = polygonB->m_normals[rf.i1]; manifold->localPoint = polygonB->m_vertices[rf.i1]; } int32 pointCount = 0; for (int32 i = 0; i < b2_maxManifoldPoints; ++i) { float32 separation; separation = b2Dot(rf.normal, clipPoints2[i].v - rf.v1); if (separation <= m_radius) { b2ManifoldPoint* cp = manifold->points + pointCount; if (primaryAxis.type == b2EPAxis::e_edgeA) { cp->localPoint = b2MulT(m_xf, clipPoints2[i].v); cp->id = clipPoints2[i].id; } else { cp->localPoint = clipPoints2[i].v; cp->id.cf.typeA = clipPoints2[i].id.cf.typeB; cp->id.cf.typeB = clipPoints2[i].id.cf.typeA; cp->id.cf.indexA = clipPoints2[i].id.cf.indexB; cp->id.cf.indexB = clipPoints2[i].id.cf.indexA; } ++pointCount; } } manifold->pointCount = pointCount; } b2EPAxis b2EPCollider::ComputeEdgeSeparation() { b2EPAxis axis; axis.type = b2EPAxis::e_edgeA; axis.index = m_front ? 0 : 1; axis.separation = FLT_MAX; for (int32 i = 0; i < m_polygonB.count; ++i) { float32 s = b2Dot(m_normal, m_polygonB.vertices[i] - m_v1); if (s < axis.separation) { axis.separation = s; } } return axis; } b2EPAxis b2EPCollider::ComputePolygonSeparation() { b2EPAxis axis; axis.type = b2EPAxis::e_unknown; axis.index = -1; axis.separation = -FLT_MAX; b2Vec2 perp(-m_normal.y, m_normal.x); for (int32 i = 0; i < m_polygonB.count; ++i) { b2Vec2 n = -m_polygonB.normals[i]; float32 s1 = b2Dot(n, m_polygonB.vertices[i] - m_v1); float32 s2 = b2Dot(n, m_polygonB.vertices[i] - m_v2); float32 s = b2Min(s1, s2); if (s > m_radius) { // No collision axis.type = b2EPAxis::e_edgeB; axis.index = i; axis.separation = s; return axis; } // Adjacency if (b2Dot(n, perp) >= 0.0f) { if (b2Dot(n - m_upperLimit, m_normal) < -b2_angularSlop) { continue; } } else { if (b2Dot(n - m_lowerLimit, m_normal) < -b2_angularSlop) { continue; } } if (s > axis.separation) { axis.type = b2EPAxis::e_edgeB; axis.index = i; axis.separation = s; } } return axis; } void b2CollideEdgeAndPolygon( b2Manifold* manifold, const b2EdgeShape* edgeA, const b2Transform& xfA, const b2PolygonShape* polygonB, const b2Transform& xfB) { b2EPCollider collider; collider.Collide(manifold, edgeA, xfA, polygonB, xfB); } love-0.9.1/src/libraries/Box2D/Collision/b2DynamicTree.cpp0000755000000000000000000004074612316602166023255 0ustar00rootroot00000000000000/* * Copyright (c) 2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include b2DynamicTree::b2DynamicTree() { m_root = b2_nullNode; m_nodeCapacity = 16; m_nodeCount = 0; m_nodes = (b2TreeNode*)b2Alloc(m_nodeCapacity * sizeof(b2TreeNode)); memset(m_nodes, 0, m_nodeCapacity * sizeof(b2TreeNode)); // Build a linked list for the free list. for (int32 i = 0; i < m_nodeCapacity - 1; ++i) { m_nodes[i].next = i + 1; m_nodes[i].height = -1; } m_nodes[m_nodeCapacity-1].next = b2_nullNode; m_nodes[m_nodeCapacity-1].height = -1; m_freeList = 0; m_path = 0; m_insertionCount = 0; } b2DynamicTree::~b2DynamicTree() { // This frees the entire tree in one shot. b2Free(m_nodes); } // Allocate a node from the pool. Grow the pool if necessary. int32 b2DynamicTree::AllocateNode() { // Expand the node pool as needed. if (m_freeList == b2_nullNode) { b2Assert(m_nodeCount == m_nodeCapacity); // The free list is empty. Rebuild a bigger pool. b2TreeNode* oldNodes = m_nodes; m_nodeCapacity *= 2; m_nodes = (b2TreeNode*)b2Alloc(m_nodeCapacity * sizeof(b2TreeNode)); memcpy(m_nodes, oldNodes, m_nodeCount * sizeof(b2TreeNode)); b2Free(oldNodes); // Build a linked list for the free list. The parent // pointer becomes the "next" pointer. for (int32 i = m_nodeCount; i < m_nodeCapacity - 1; ++i) { m_nodes[i].next = i + 1; m_nodes[i].height = -1; } m_nodes[m_nodeCapacity-1].next = b2_nullNode; m_nodes[m_nodeCapacity-1].height = -1; m_freeList = m_nodeCount; } // Peel a node off the free list. int32 nodeId = m_freeList; m_freeList = m_nodes[nodeId].next; m_nodes[nodeId].parent = b2_nullNode; m_nodes[nodeId].child1 = b2_nullNode; m_nodes[nodeId].child2 = b2_nullNode; m_nodes[nodeId].height = 0; m_nodes[nodeId].userData = NULL; ++m_nodeCount; return nodeId; } // Return a node to the pool. void b2DynamicTree::FreeNode(int32 nodeId) { b2Assert(0 <= nodeId && nodeId < m_nodeCapacity); b2Assert(0 < m_nodeCount); m_nodes[nodeId].next = m_freeList; m_nodes[nodeId].height = -1; m_freeList = nodeId; --m_nodeCount; } // Create a proxy in the tree as a leaf node. We return the index // of the node instead of a pointer so that we can grow // the node pool. int32 b2DynamicTree::CreateProxy(const b2AABB& aabb, void* userData) { int32 proxyId = AllocateNode(); // Fatten the aabb. b2Vec2 r(b2_aabbExtension, b2_aabbExtension); m_nodes[proxyId].aabb.lowerBound = aabb.lowerBound - r; m_nodes[proxyId].aabb.upperBound = aabb.upperBound + r; m_nodes[proxyId].userData = userData; m_nodes[proxyId].height = 0; InsertLeaf(proxyId); return proxyId; } void b2DynamicTree::DestroyProxy(int32 proxyId) { b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); b2Assert(m_nodes[proxyId].IsLeaf()); RemoveLeaf(proxyId); FreeNode(proxyId); } bool b2DynamicTree::MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement) { b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); b2Assert(m_nodes[proxyId].IsLeaf()); if (m_nodes[proxyId].aabb.Contains(aabb)) { return false; } RemoveLeaf(proxyId); // Extend AABB. b2AABB b = aabb; b2Vec2 r(b2_aabbExtension, b2_aabbExtension); b.lowerBound = b.lowerBound - r; b.upperBound = b.upperBound + r; // Predict AABB displacement. b2Vec2 d = b2_aabbMultiplier * displacement; if (d.x < 0.0f) { b.lowerBound.x += d.x; } else { b.upperBound.x += d.x; } if (d.y < 0.0f) { b.lowerBound.y += d.y; } else { b.upperBound.y += d.y; } m_nodes[proxyId].aabb = b; InsertLeaf(proxyId); return true; } void b2DynamicTree::InsertLeaf(int32 leaf) { ++m_insertionCount; if (m_root == b2_nullNode) { m_root = leaf; m_nodes[m_root].parent = b2_nullNode; return; } // Find the best sibling for this node b2AABB leafAABB = m_nodes[leaf].aabb; int32 index = m_root; while (m_nodes[index].IsLeaf() == false) { int32 child1 = m_nodes[index].child1; int32 child2 = m_nodes[index].child2; float32 area = m_nodes[index].aabb.GetPerimeter(); b2AABB combinedAABB; combinedAABB.Combine(m_nodes[index].aabb, leafAABB); float32 combinedArea = combinedAABB.GetPerimeter(); // Cost of creating a new parent for this node and the new leaf float32 cost = 2.0f * combinedArea; // Minimum cost of pushing the leaf further down the tree float32 inheritanceCost = 2.0f * (combinedArea - area); // Cost of descending into child1 float32 cost1; if (m_nodes[child1].IsLeaf()) { b2AABB aabb; aabb.Combine(leafAABB, m_nodes[child1].aabb); cost1 = aabb.GetPerimeter() + inheritanceCost; } else { b2AABB aabb; aabb.Combine(leafAABB, m_nodes[child1].aabb); float32 oldArea = m_nodes[child1].aabb.GetPerimeter(); float32 newArea = aabb.GetPerimeter(); cost1 = (newArea - oldArea) + inheritanceCost; } // Cost of descending into child2 float32 cost2; if (m_nodes[child2].IsLeaf()) { b2AABB aabb; aabb.Combine(leafAABB, m_nodes[child2].aabb); cost2 = aabb.GetPerimeter() + inheritanceCost; } else { b2AABB aabb; aabb.Combine(leafAABB, m_nodes[child2].aabb); float32 oldArea = m_nodes[child2].aabb.GetPerimeter(); float32 newArea = aabb.GetPerimeter(); cost2 = newArea - oldArea + inheritanceCost; } // Descend according to the minimum cost. if (cost < cost1 && cost < cost2) { break; } // Descend if (cost1 < cost2) { index = child1; } else { index = child2; } } int32 sibling = index; // Create a new parent. int32 oldParent = m_nodes[sibling].parent; int32 newParent = AllocateNode(); m_nodes[newParent].parent = oldParent; m_nodes[newParent].userData = NULL; m_nodes[newParent].aabb.Combine(leafAABB, m_nodes[sibling].aabb); m_nodes[newParent].height = m_nodes[sibling].height + 1; if (oldParent != b2_nullNode) { // The sibling was not the root. if (m_nodes[oldParent].child1 == sibling) { m_nodes[oldParent].child1 = newParent; } else { m_nodes[oldParent].child2 = newParent; } m_nodes[newParent].child1 = sibling; m_nodes[newParent].child2 = leaf; m_nodes[sibling].parent = newParent; m_nodes[leaf].parent = newParent; } else { // The sibling was the root. m_nodes[newParent].child1 = sibling; m_nodes[newParent].child2 = leaf; m_nodes[sibling].parent = newParent; m_nodes[leaf].parent = newParent; m_root = newParent; } // Walk back up the tree fixing heights and AABBs index = m_nodes[leaf].parent; while (index != b2_nullNode) { index = Balance(index); int32 child1 = m_nodes[index].child1; int32 child2 = m_nodes[index].child2; b2Assert(child1 != b2_nullNode); b2Assert(child2 != b2_nullNode); m_nodes[index].height = 1 + b2Max(m_nodes[child1].height, m_nodes[child2].height); m_nodes[index].aabb.Combine(m_nodes[child1].aabb, m_nodes[child2].aabb); index = m_nodes[index].parent; } //Validate(); } void b2DynamicTree::RemoveLeaf(int32 leaf) { if (leaf == m_root) { m_root = b2_nullNode; return; } int32 parent = m_nodes[leaf].parent; int32 grandParent = m_nodes[parent].parent; int32 sibling; if (m_nodes[parent].child1 == leaf) { sibling = m_nodes[parent].child2; } else { sibling = m_nodes[parent].child1; } if (grandParent != b2_nullNode) { // Destroy parent and connect sibling to grandParent. if (m_nodes[grandParent].child1 == parent) { m_nodes[grandParent].child1 = sibling; } else { m_nodes[grandParent].child2 = sibling; } m_nodes[sibling].parent = grandParent; FreeNode(parent); // Adjust ancestor bounds. int32 index = grandParent; while (index != b2_nullNode) { index = Balance(index); int32 child1 = m_nodes[index].child1; int32 child2 = m_nodes[index].child2; m_nodes[index].aabb.Combine(m_nodes[child1].aabb, m_nodes[child2].aabb); m_nodes[index].height = 1 + b2Max(m_nodes[child1].height, m_nodes[child2].height); index = m_nodes[index].parent; } } else { m_root = sibling; m_nodes[sibling].parent = b2_nullNode; FreeNode(parent); } //Validate(); } // Perform a left or right rotation if node A is imbalanced. // Returns the new root index. int32 b2DynamicTree::Balance(int32 iA) { b2Assert(iA != b2_nullNode); b2TreeNode* A = m_nodes + iA; if (A->IsLeaf() || A->height < 2) { return iA; } int32 iB = A->child1; int32 iC = A->child2; b2Assert(0 <= iB && iB < m_nodeCapacity); b2Assert(0 <= iC && iC < m_nodeCapacity); b2TreeNode* B = m_nodes + iB; b2TreeNode* C = m_nodes + iC; int32 balance = C->height - B->height; // Rotate C up if (balance > 1) { int32 iF = C->child1; int32 iG = C->child2; b2TreeNode* F = m_nodes + iF; b2TreeNode* G = m_nodes + iG; b2Assert(0 <= iF && iF < m_nodeCapacity); b2Assert(0 <= iG && iG < m_nodeCapacity); // Swap A and C C->child1 = iA; C->parent = A->parent; A->parent = iC; // A's old parent should point to C if (C->parent != b2_nullNode) { if (m_nodes[C->parent].child1 == iA) { m_nodes[C->parent].child1 = iC; } else { b2Assert(m_nodes[C->parent].child2 == iA); m_nodes[C->parent].child2 = iC; } } else { m_root = iC; } // Rotate if (F->height > G->height) { C->child2 = iF; A->child2 = iG; G->parent = iA; A->aabb.Combine(B->aabb, G->aabb); C->aabb.Combine(A->aabb, F->aabb); A->height = 1 + b2Max(B->height, G->height); C->height = 1 + b2Max(A->height, F->height); } else { C->child2 = iG; A->child2 = iF; F->parent = iA; A->aabb.Combine(B->aabb, F->aabb); C->aabb.Combine(A->aabb, G->aabb); A->height = 1 + b2Max(B->height, F->height); C->height = 1 + b2Max(A->height, G->height); } return iC; } // Rotate B up if (balance < -1) { int32 iD = B->child1; int32 iE = B->child2; b2TreeNode* D = m_nodes + iD; b2TreeNode* E = m_nodes + iE; b2Assert(0 <= iD && iD < m_nodeCapacity); b2Assert(0 <= iE && iE < m_nodeCapacity); // Swap A and B B->child1 = iA; B->parent = A->parent; A->parent = iB; // A's old parent should point to B if (B->parent != b2_nullNode) { if (m_nodes[B->parent].child1 == iA) { m_nodes[B->parent].child1 = iB; } else { b2Assert(m_nodes[B->parent].child2 == iA); m_nodes[B->parent].child2 = iB; } } else { m_root = iB; } // Rotate if (D->height > E->height) { B->child2 = iD; A->child1 = iE; E->parent = iA; A->aabb.Combine(C->aabb, E->aabb); B->aabb.Combine(A->aabb, D->aabb); A->height = 1 + b2Max(C->height, E->height); B->height = 1 + b2Max(A->height, D->height); } else { B->child2 = iE; A->child1 = iD; D->parent = iA; A->aabb.Combine(C->aabb, D->aabb); B->aabb.Combine(A->aabb, E->aabb); A->height = 1 + b2Max(C->height, D->height); B->height = 1 + b2Max(A->height, E->height); } return iB; } return iA; } int32 b2DynamicTree::GetHeight() const { if (m_root == b2_nullNode) { return 0; } return m_nodes[m_root].height; } // float32 b2DynamicTree::GetAreaRatio() const { if (m_root == b2_nullNode) { return 0.0f; } const b2TreeNode* root = m_nodes + m_root; float32 rootArea = root->aabb.GetPerimeter(); float32 totalArea = 0.0f; for (int32 i = 0; i < m_nodeCapacity; ++i) { const b2TreeNode* node = m_nodes + i; if (node->height < 0) { // Free node in pool continue; } totalArea += node->aabb.GetPerimeter(); } return totalArea / rootArea; } // Compute the height of a sub-tree. int32 b2DynamicTree::ComputeHeight(int32 nodeId) const { b2Assert(0 <= nodeId && nodeId < m_nodeCapacity); b2TreeNode* node = m_nodes + nodeId; if (node->IsLeaf()) { return 0; } int32 height1 = ComputeHeight(node->child1); int32 height2 = ComputeHeight(node->child2); return 1 + b2Max(height1, height2); } int32 b2DynamicTree::ComputeHeight() const { int32 height = ComputeHeight(m_root); return height; } void b2DynamicTree::ValidateStructure(int32 index) const { if (index == b2_nullNode) { return; } if (index == m_root) { b2Assert(m_nodes[index].parent == b2_nullNode); } const b2TreeNode* node = m_nodes + index; int32 child1 = node->child1; int32 child2 = node->child2; if (node->IsLeaf()) { b2Assert(child1 == b2_nullNode); b2Assert(child2 == b2_nullNode); b2Assert(node->height == 0); return; } b2Assert(0 <= child1 && child1 < m_nodeCapacity); b2Assert(0 <= child2 && child2 < m_nodeCapacity); b2Assert(m_nodes[child1].parent == index); b2Assert(m_nodes[child2].parent == index); ValidateStructure(child1); ValidateStructure(child2); } void b2DynamicTree::ValidateMetrics(int32 index) const { if (index == b2_nullNode) { return; } const b2TreeNode* node = m_nodes + index; int32 child1 = node->child1; int32 child2 = node->child2; if (node->IsLeaf()) { b2Assert(child1 == b2_nullNode); b2Assert(child2 == b2_nullNode); b2Assert(node->height == 0); return; } b2Assert(0 <= child1 && child1 < m_nodeCapacity); b2Assert(0 <= child2 && child2 < m_nodeCapacity); int32 height1 = m_nodes[child1].height; int32 height2 = m_nodes[child2].height; int32 height; height = 1 + b2Max(height1, height2); b2Assert(node->height == height); b2AABB aabb; aabb.Combine(m_nodes[child1].aabb, m_nodes[child2].aabb); b2Assert(aabb.lowerBound == node->aabb.lowerBound); b2Assert(aabb.upperBound == node->aabb.upperBound); ValidateMetrics(child1); ValidateMetrics(child2); } void b2DynamicTree::Validate() const { ValidateStructure(m_root); ValidateMetrics(m_root); int32 freeCount = 0; int32 freeIndex = m_freeList; while (freeIndex != b2_nullNode) { b2Assert(0 <= freeIndex && freeIndex < m_nodeCapacity); freeIndex = m_nodes[freeIndex].next; ++freeCount; } b2Assert(GetHeight() == ComputeHeight()); b2Assert(m_nodeCount + freeCount == m_nodeCapacity); } int32 b2DynamicTree::GetMaxBalance() const { int32 maxBalance = 0; for (int32 i = 0; i < m_nodeCapacity; ++i) { const b2TreeNode* node = m_nodes + i; if (node->height <= 1) { continue; } b2Assert(node->IsLeaf() == false); int32 child1 = node->child1; int32 child2 = node->child2; int32 balance = b2Abs(m_nodes[child2].height - m_nodes[child1].height); maxBalance = b2Max(maxBalance, balance); } return maxBalance; } void b2DynamicTree::RebuildBottomUp() { int32* nodes = (int32*)b2Alloc(m_nodeCount * sizeof(int32)); int32 count = 0; // Build array of leaves. Free the rest. for (int32 i = 0; i < m_nodeCapacity; ++i) { if (m_nodes[i].height < 0) { // free node in pool continue; } if (m_nodes[i].IsLeaf()) { m_nodes[i].parent = b2_nullNode; nodes[count] = i; ++count; } else { FreeNode(i); } } while (count > 1) { float32 minCost = b2_maxFloat; int32 iMin = -1, jMin = -1; for (int32 i = 0; i < count; ++i) { b2AABB aabbi = m_nodes[nodes[i]].aabb; for (int32 j = i + 1; j < count; ++j) { b2AABB aabbj = m_nodes[nodes[j]].aabb; b2AABB b; b.Combine(aabbi, aabbj); float32 cost = b.GetPerimeter(); if (cost < minCost) { iMin = i; jMin = j; minCost = cost; } } } int32 index1 = nodes[iMin]; int32 index2 = nodes[jMin]; b2TreeNode* child1 = m_nodes + index1; b2TreeNode* child2 = m_nodes + index2; int32 parentIndex = AllocateNode(); b2TreeNode* parent = m_nodes + parentIndex; parent->child1 = index1; parent->child2 = index2; parent->height = 1 + b2Max(child1->height, child2->height); parent->aabb.Combine(child1->aabb, child2->aabb); parent->parent = b2_nullNode; child1->parent = parentIndex; child2->parent = parentIndex; nodes[jMin] = nodes[count-1]; nodes[iMin] = parentIndex; --count; } m_root = nodes[0]; b2Free(nodes); Validate(); } void b2DynamicTree::ShiftOrigin(const b2Vec2& newOrigin) { // Build array of leaves. Free the rest. for (int32 i = 0; i < m_nodeCapacity; ++i) { m_nodes[i].aabb.lowerBound -= newOrigin; m_nodes[i].aabb.upperBound -= newOrigin; } } love-0.9.1/src/libraries/Box2D/Collision/b2TimeOfImpact.h0000755000000000000000000000350712316602166023031 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_TIME_OF_IMPACT_H #define B2_TIME_OF_IMPACT_H #include #include /// Input parameters for b2TimeOfImpact struct b2TOIInput { b2DistanceProxy proxyA; b2DistanceProxy proxyB; b2Sweep sweepA; b2Sweep sweepB; float32 tMax; // defines sweep interval [0, tMax] }; // Output parameters for b2TimeOfImpact. struct b2TOIOutput { enum State { e_unknown, e_failed, e_overlapped, e_touching, e_separated }; State state; float32 t; }; /// Compute the upper bound on time before two shapes penetrate. Time is represented as /// a fraction between [0,tMax]. This uses a swept separating axis and may miss some intermediate, /// non-tunneling collision. If you change the time interval, you should call this function /// again. /// Note: use b2Distance to compute the contact point and normal at the time of impact. void b2TimeOfImpact(b2TOIOutput* output, const b2TOIInput* input); #endif love-0.9.1/src/libraries/Box2D/Collision/b2BroadPhase.h0000755000000000000000000001545412316602166022524 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_BROAD_PHASE_H #define B2_BROAD_PHASE_H #include #include #include #include struct b2Pair { int32 proxyIdA; int32 proxyIdB; }; /// The broad-phase is used for computing pairs and performing volume queries and ray casts. /// This broad-phase does not persist pairs. Instead, this reports potentially new pairs. /// It is up to the client to consume the new pairs and to track subsequent overlap. class b2BroadPhase { public: enum { e_nullProxy = -1 }; b2BroadPhase(); ~b2BroadPhase(); /// Create a proxy with an initial AABB. Pairs are not reported until /// UpdatePairs is called. int32 CreateProxy(const b2AABB& aabb, void* userData); /// Destroy a proxy. It is up to the client to remove any pairs. void DestroyProxy(int32 proxyId); /// Call MoveProxy as many times as you like, then when you are done /// call UpdatePairs to finalized the proxy pairs (for your time step). void MoveProxy(int32 proxyId, const b2AABB& aabb, const b2Vec2& displacement); /// Call to trigger a re-processing of it's pairs on the next call to UpdatePairs. void TouchProxy(int32 proxyId); /// Get the fat AABB for a proxy. const b2AABB& GetFatAABB(int32 proxyId) const; /// Get user data from a proxy. Returns NULL if the id is invalid. void* GetUserData(int32 proxyId) const; /// Test overlap of fat AABBs. bool TestOverlap(int32 proxyIdA, int32 proxyIdB) const; /// Get the number of proxies. int32 GetProxyCount() const; /// Update the pairs. This results in pair callbacks. This can only add pairs. template void UpdatePairs(T* callback); /// Query an AABB for overlapping proxies. The callback class /// is called for each proxy that overlaps the supplied AABB. template void Query(T* callback, const b2AABB& aabb) const; /// Ray-cast against the proxies in the tree. This relies on the callback /// to perform a exact ray-cast in the case were the proxy contains a shape. /// The callback also performs the any collision filtering. This has performance /// roughly equal to k * log(n), where k is the number of collisions and n is the /// number of proxies in the tree. /// @param input the ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1). /// @param callback a callback class that is called for each proxy that is hit by the ray. template void RayCast(T* callback, const b2RayCastInput& input) const; /// Get the height of the embedded tree. int32 GetTreeHeight() const; /// Get the balance of the embedded tree. int32 GetTreeBalance() const; /// Get the quality metric of the embedded tree. float32 GetTreeQuality() const; /// Shift the world origin. Useful for large worlds. /// The shift formula is: position -= newOrigin /// @param newOrigin the new origin with respect to the old origin void ShiftOrigin(const b2Vec2& newOrigin); private: friend class b2DynamicTree; void BufferMove(int32 proxyId); void UnBufferMove(int32 proxyId); bool QueryCallback(int32 proxyId); b2DynamicTree m_tree; int32 m_proxyCount; int32* m_moveBuffer; int32 m_moveCapacity; int32 m_moveCount; b2Pair* m_pairBuffer; int32 m_pairCapacity; int32 m_pairCount; int32 m_queryProxyId; }; /// This is used to sort pairs. inline bool b2PairLessThan(const b2Pair& pair1, const b2Pair& pair2) { if (pair1.proxyIdA < pair2.proxyIdA) { return true; } if (pair1.proxyIdA == pair2.proxyIdA) { return pair1.proxyIdB < pair2.proxyIdB; } return false; } inline void* b2BroadPhase::GetUserData(int32 proxyId) const { return m_tree.GetUserData(proxyId); } inline bool b2BroadPhase::TestOverlap(int32 proxyIdA, int32 proxyIdB) const { const b2AABB& aabbA = m_tree.GetFatAABB(proxyIdA); const b2AABB& aabbB = m_tree.GetFatAABB(proxyIdB); return b2TestOverlap(aabbA, aabbB); } inline const b2AABB& b2BroadPhase::GetFatAABB(int32 proxyId) const { return m_tree.GetFatAABB(proxyId); } inline int32 b2BroadPhase::GetProxyCount() const { return m_proxyCount; } inline int32 b2BroadPhase::GetTreeHeight() const { return m_tree.GetHeight(); } inline int32 b2BroadPhase::GetTreeBalance() const { return m_tree.GetMaxBalance(); } inline float32 b2BroadPhase::GetTreeQuality() const { return m_tree.GetAreaRatio(); } template void b2BroadPhase::UpdatePairs(T* callback) { // Reset pair buffer m_pairCount = 0; // Perform tree queries for all moving proxies. for (int32 i = 0; i < m_moveCount; ++i) { m_queryProxyId = m_moveBuffer[i]; if (m_queryProxyId == e_nullProxy) { continue; } // We have to query the tree with the fat AABB so that // we don't fail to create a pair that may touch later. const b2AABB& fatAABB = m_tree.GetFatAABB(m_queryProxyId); // Query tree, create pairs and add them pair buffer. m_tree.Query(this, fatAABB); } // Reset move buffer m_moveCount = 0; // Sort the pair buffer to expose duplicates. std::sort(m_pairBuffer, m_pairBuffer + m_pairCount, b2PairLessThan); // Send the pairs back to the client. int32 i = 0; while (i < m_pairCount) { b2Pair* primaryPair = m_pairBuffer + i; void* userDataA = m_tree.GetUserData(primaryPair->proxyIdA); void* userDataB = m_tree.GetUserData(primaryPair->proxyIdB); callback->AddPair(userDataA, userDataB); ++i; // Skip any duplicate pairs. while (i < m_pairCount) { b2Pair* pair = m_pairBuffer + i; if (pair->proxyIdA != primaryPair->proxyIdA || pair->proxyIdB != primaryPair->proxyIdB) { break; } ++i; } } // Try to keep the tree balanced. //m_tree.Rebalance(4); } template inline void b2BroadPhase::Query(T* callback, const b2AABB& aabb) const { m_tree.Query(callback, aabb); } template inline void b2BroadPhase::RayCast(T* callback, const b2RayCastInput& input) const { m_tree.RayCast(callback, input); } inline void b2BroadPhase::ShiftOrigin(const b2Vec2& newOrigin) { m_tree.ShiftOrigin(newOrigin); } #endif love-0.9.1/src/libraries/Box2D/Collision/b2CollideCircle.cpp0000755000000000000000000001040212316602166023530 0ustar00rootroot00000000000000/* * Copyright (c) 2007-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include void b2CollideCircles( b2Manifold* manifold, const b2CircleShape* circleA, const b2Transform& xfA, const b2CircleShape* circleB, const b2Transform& xfB) { manifold->pointCount = 0; b2Vec2 pA = b2Mul(xfA, circleA->m_p); b2Vec2 pB = b2Mul(xfB, circleB->m_p); b2Vec2 d = pB - pA; float32 distSqr = b2Dot(d, d); float32 rA = circleA->m_radius, rB = circleB->m_radius; float32 radius = rA + rB; if (distSqr > radius * radius) { return; } manifold->type = b2Manifold::e_circles; manifold->localPoint = circleA->m_p; manifold->localNormal.SetZero(); manifold->pointCount = 1; manifold->points[0].localPoint = circleB->m_p; manifold->points[0].id.key = 0; } void b2CollidePolygonAndCircle( b2Manifold* manifold, const b2PolygonShape* polygonA, const b2Transform& xfA, const b2CircleShape* circleB, const b2Transform& xfB) { manifold->pointCount = 0; // Compute circle position in the frame of the polygon. b2Vec2 c = b2Mul(xfB, circleB->m_p); b2Vec2 cLocal = b2MulT(xfA, c); // Find the min separating edge. int32 normalIndex = 0; float32 separation = -b2_maxFloat; float32 radius = polygonA->m_radius + circleB->m_radius; int32 vertexCount = polygonA->m_count; const b2Vec2* vertices = polygonA->m_vertices; const b2Vec2* normals = polygonA->m_normals; for (int32 i = 0; i < vertexCount; ++i) { float32 s = b2Dot(normals[i], cLocal - vertices[i]); if (s > radius) { // Early out. return; } if (s > separation) { separation = s; normalIndex = i; } } // Vertices that subtend the incident face. int32 vertIndex1 = normalIndex; int32 vertIndex2 = vertIndex1 + 1 < vertexCount ? vertIndex1 + 1 : 0; b2Vec2 v1 = vertices[vertIndex1]; b2Vec2 v2 = vertices[vertIndex2]; // If the center is inside the polygon ... if (separation < b2_epsilon) { manifold->pointCount = 1; manifold->type = b2Manifold::e_faceA; manifold->localNormal = normals[normalIndex]; manifold->localPoint = 0.5f * (v1 + v2); manifold->points[0].localPoint = circleB->m_p; manifold->points[0].id.key = 0; return; } // Compute barycentric coordinates float32 u1 = b2Dot(cLocal - v1, v2 - v1); float32 u2 = b2Dot(cLocal - v2, v1 - v2); if (u1 <= 0.0f) { if (b2DistanceSquared(cLocal, v1) > radius * radius) { return; } manifold->pointCount = 1; manifold->type = b2Manifold::e_faceA; manifold->localNormal = cLocal - v1; manifold->localNormal.Normalize(); manifold->localPoint = v1; manifold->points[0].localPoint = circleB->m_p; manifold->points[0].id.key = 0; } else if (u2 <= 0.0f) { if (b2DistanceSquared(cLocal, v2) > radius * radius) { return; } manifold->pointCount = 1; manifold->type = b2Manifold::e_faceA; manifold->localNormal = cLocal - v2; manifold->localNormal.Normalize(); manifold->localPoint = v2; manifold->points[0].localPoint = circleB->m_p; manifold->points[0].id.key = 0; } else { b2Vec2 faceCenter = 0.5f * (v1 + v2); float32 separation = b2Dot(cLocal - faceCenter, normals[vertIndex1]); if (separation > radius) { return; } manifold->pointCount = 1; manifold->type = b2Manifold::e_faceA; manifold->localNormal = normals[vertIndex1]; manifold->localPoint = faceCenter; manifold->points[0].localPoint = circleB->m_p; manifold->points[0].id.key = 0; } } love-0.9.1/src/libraries/Box2D/Collision/b2Distance.h0000755000000000000000000000730112316602166022236 0ustar00rootroot00000000000000 /* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_DISTANCE_H #define B2_DISTANCE_H #include class b2Shape; /// A distance proxy is used by the GJK algorithm. /// It encapsulates any shape. struct b2DistanceProxy { b2DistanceProxy() : m_vertices(NULL), m_count(0), m_radius(0.0f) {} /// Initialize the proxy using the given shape. The shape /// must remain in scope while the proxy is in use. void Set(const b2Shape* shape, int32 index); /// Get the supporting vertex index in the given direction. int32 GetSupport(const b2Vec2& d) const; /// Get the supporting vertex in the given direction. const b2Vec2& GetSupportVertex(const b2Vec2& d) const; /// Get the vertex count. int32 GetVertexCount() const; /// Get a vertex by index. Used by b2Distance. const b2Vec2& GetVertex(int32 index) const; b2Vec2 m_buffer[2]; const b2Vec2* m_vertices; int32 m_count; float32 m_radius; }; /// Used to warm start b2Distance. /// Set count to zero on first call. struct b2SimplexCache { float32 metric; ///< length or area uint16 count; uint8 indexA[3]; ///< vertices on shape A uint8 indexB[3]; ///< vertices on shape B }; /// Input for b2Distance. /// You have to option to use the shape radii /// in the computation. Even struct b2DistanceInput { b2DistanceProxy proxyA; b2DistanceProxy proxyB; b2Transform transformA; b2Transform transformB; bool useRadii; }; /// Output for b2Distance. struct b2DistanceOutput { b2Vec2 pointA; ///< closest point on shapeA b2Vec2 pointB; ///< closest point on shapeB float32 distance; int32 iterations; ///< number of GJK iterations used }; /// Compute the closest points between two shapes. Supports any combination of: /// b2CircleShape, b2PolygonShape, b2EdgeShape. The simplex cache is input/output. /// On the first call set b2SimplexCache.count to zero. void b2Distance(b2DistanceOutput* output, b2SimplexCache* cache, const b2DistanceInput* input); ////////////////////////////////////////////////////////////////////////// inline int32 b2DistanceProxy::GetVertexCount() const { return m_count; } inline const b2Vec2& b2DistanceProxy::GetVertex(int32 index) const { b2Assert(0 <= index && index < m_count); return m_vertices[index]; } inline int32 b2DistanceProxy::GetSupport(const b2Vec2& d) const { int32 bestIndex = 0; float32 bestValue = b2Dot(m_vertices[0], d); for (int32 i = 1; i < m_count; ++i) { float32 value = b2Dot(m_vertices[i], d); if (value > bestValue) { bestIndex = i; bestValue = value; } } return bestIndex; } inline const b2Vec2& b2DistanceProxy::GetSupportVertex(const b2Vec2& d) const { int32 bestIndex = 0; float32 bestValue = b2Dot(m_vertices[0], d); for (int32 i = 1; i < m_count; ++i) { float32 value = b2Dot(m_vertices[i], d); if (value > bestValue) { bestIndex = i; bestValue = value; } } return m_vertices[bestIndex]; } #endif love-0.9.1/src/libraries/Box2D/Collision/b2Collision.h0000755000000000000000000002155612316602166022447 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_COLLISION_H #define B2_COLLISION_H #include #include /// @file /// Structures and functions used for computing contact points, distance /// queries, and TOI queries. class b2Shape; class b2CircleShape; class b2EdgeShape; class b2PolygonShape; const uint8 b2_nullFeature = UCHAR_MAX; /// The features that intersect to form the contact point /// This must be 4 bytes or less. struct b2ContactFeature { enum Type { e_vertex = 0, e_face = 1 }; uint8 indexA; ///< Feature index on shapeA uint8 indexB; ///< Feature index on shapeB uint8 typeA; ///< The feature type on shapeA uint8 typeB; ///< The feature type on shapeB }; /// Contact ids to facilitate warm starting. union b2ContactID { b2ContactFeature cf; uint32 key; ///< Used to quickly compare contact ids. }; /// A manifold point is a contact point belonging to a contact /// manifold. It holds details related to the geometry and dynamics /// of the contact points. /// The local point usage depends on the manifold type: /// -e_circles: the local center of circleB /// -e_faceA: the local center of cirlceB or the clip point of polygonB /// -e_faceB: the clip point of polygonA /// This structure is stored across time steps, so we keep it small. /// Note: the impulses are used for internal caching and may not /// provide reliable contact forces, especially for high speed collisions. struct b2ManifoldPoint { b2Vec2 localPoint; ///< usage depends on manifold type float32 normalImpulse; ///< the non-penetration impulse float32 tangentImpulse; ///< the friction impulse b2ContactID id; ///< uniquely identifies a contact point between two shapes }; /// A manifold for two touching convex shapes. /// Box2D supports multiple types of contact: /// - clip point versus plane with radius /// - point versus point with radius (circles) /// The local point usage depends on the manifold type: /// -e_circles: the local center of circleA /// -e_faceA: the center of faceA /// -e_faceB: the center of faceB /// Similarly the local normal usage: /// -e_circles: not used /// -e_faceA: the normal on polygonA /// -e_faceB: the normal on polygonB /// We store contacts in this way so that position correction can /// account for movement, which is critical for continuous physics. /// All contact scenarios must be expressed in one of these types. /// This structure is stored across time steps, so we keep it small. struct b2Manifold { enum Type { e_circles, e_faceA, e_faceB }; b2ManifoldPoint points[b2_maxManifoldPoints]; ///< the points of contact b2Vec2 localNormal; ///< not use for Type::e_points b2Vec2 localPoint; ///< usage depends on manifold type Type type; int32 pointCount; ///< the number of manifold points }; /// This is used to compute the current state of a contact manifold. struct b2WorldManifold { /// Evaluate the manifold with supplied transforms. This assumes /// modest motion from the original state. This does not change the /// point count, impulses, etc. The radii must come from the shapes /// that generated the manifold. void Initialize(const b2Manifold* manifold, const b2Transform& xfA, float32 radiusA, const b2Transform& xfB, float32 radiusB); b2Vec2 normal; ///< world vector pointing from A to B b2Vec2 points[b2_maxManifoldPoints]; ///< world contact point (point of intersection) float32 separations[b2_maxManifoldPoints]; ///< a negative value indicates overlap, in meters }; /// This is used for determining the state of contact points. enum b2PointState { b2_nullState, ///< point does not exist b2_addState, ///< point was added in the update b2_persistState, ///< point persisted across the update b2_removeState ///< point was removed in the update }; /// Compute the point states given two manifolds. The states pertain to the transition from manifold1 /// to manifold2. So state1 is either persist or remove while state2 is either add or persist. void b2GetPointStates(b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints], const b2Manifold* manifold1, const b2Manifold* manifold2); /// Used for computing contact manifolds. struct b2ClipVertex { b2Vec2 v; b2ContactID id; }; /// Ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1). struct b2RayCastInput { b2Vec2 p1, p2; float32 maxFraction; }; /// Ray-cast output data. The ray hits at p1 + fraction * (p2 - p1), where p1 and p2 /// come from b2RayCastInput. struct b2RayCastOutput { b2Vec2 normal; float32 fraction; }; /// An axis aligned bounding box. struct b2AABB { /// Verify that the bounds are sorted. bool IsValid() const; /// Get the center of the AABB. b2Vec2 GetCenter() const { return 0.5f * (lowerBound + upperBound); } /// Get the extents of the AABB (half-widths). b2Vec2 GetExtents() const { return 0.5f * (upperBound - lowerBound); } /// Get the perimeter length float32 GetPerimeter() const { float32 wx = upperBound.x - lowerBound.x; float32 wy = upperBound.y - lowerBound.y; return 2.0f * (wx + wy); } /// Combine an AABB into this one. void Combine(const b2AABB& aabb) { lowerBound = b2Min(lowerBound, aabb.lowerBound); upperBound = b2Max(upperBound, aabb.upperBound); } /// Combine two AABBs into this one. void Combine(const b2AABB& aabb1, const b2AABB& aabb2) { lowerBound = b2Min(aabb1.lowerBound, aabb2.lowerBound); upperBound = b2Max(aabb1.upperBound, aabb2.upperBound); } /// Does this aabb contain the provided AABB. bool Contains(const b2AABB& aabb) const { bool result = true; result = result && lowerBound.x <= aabb.lowerBound.x; result = result && lowerBound.y <= aabb.lowerBound.y; result = result && aabb.upperBound.x <= upperBound.x; result = result && aabb.upperBound.y <= upperBound.y; return result; } bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input) const; b2Vec2 lowerBound; ///< the lower vertex b2Vec2 upperBound; ///< the upper vertex }; /// Compute the collision manifold between two circles. void b2CollideCircles(b2Manifold* manifold, const b2CircleShape* circleA, const b2Transform& xfA, const b2CircleShape* circleB, const b2Transform& xfB); /// Compute the collision manifold between a polygon and a circle. void b2CollidePolygonAndCircle(b2Manifold* manifold, const b2PolygonShape* polygonA, const b2Transform& xfA, const b2CircleShape* circleB, const b2Transform& xfB); /// Compute the collision manifold between two polygons. void b2CollidePolygons(b2Manifold* manifold, const b2PolygonShape* polygonA, const b2Transform& xfA, const b2PolygonShape* polygonB, const b2Transform& xfB); /// Compute the collision manifold between an edge and a circle. void b2CollideEdgeAndCircle(b2Manifold* manifold, const b2EdgeShape* polygonA, const b2Transform& xfA, const b2CircleShape* circleB, const b2Transform& xfB); /// Compute the collision manifold between an edge and a circle. void b2CollideEdgeAndPolygon(b2Manifold* manifold, const b2EdgeShape* edgeA, const b2Transform& xfA, const b2PolygonShape* circleB, const b2Transform& xfB); /// Clipping for contact manifolds. int32 b2ClipSegmentToLine(b2ClipVertex vOut[2], const b2ClipVertex vIn[2], const b2Vec2& normal, float32 offset, int32 vertexIndexA); /// Determine if two generic shapes overlap. bool b2TestOverlap( const b2Shape* shapeA, int32 indexA, const b2Shape* shapeB, int32 indexB, const b2Transform& xfA, const b2Transform& xfB); // ---------------- Inline Functions ------------------------------------------ inline bool b2AABB::IsValid() const { b2Vec2 d = upperBound - lowerBound; bool valid = d.x >= 0.0f && d.y >= 0.0f; valid = valid && lowerBound.IsValid() && upperBound.IsValid(); return valid; } inline bool b2TestOverlap(const b2AABB& a, const b2AABB& b) { b2Vec2 d1, d2; d1 = b.lowerBound - a.upperBound; d2 = a.lowerBound - b.upperBound; if (d1.x > 0.0f || d1.y > 0.0f) return false; if (d2.x > 0.0f || d2.y > 0.0f) return false; return true; } #endif love-0.9.1/src/libraries/Box2D/Collision/b2Collision.cpp0000755000000000000000000001443312316602166022776 0ustar00rootroot00000000000000/* * Copyright (c) 2007-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include void b2WorldManifold::Initialize(const b2Manifold* manifold, const b2Transform& xfA, float32 radiusA, const b2Transform& xfB, float32 radiusB) { if (manifold->pointCount == 0) { return; } switch (manifold->type) { case b2Manifold::e_circles: { normal.Set(1.0f, 0.0f); b2Vec2 pointA = b2Mul(xfA, manifold->localPoint); b2Vec2 pointB = b2Mul(xfB, manifold->points[0].localPoint); if (b2DistanceSquared(pointA, pointB) > b2_epsilon * b2_epsilon) { normal = pointB - pointA; normal.Normalize(); } b2Vec2 cA = pointA + radiusA * normal; b2Vec2 cB = pointB - radiusB * normal; points[0] = 0.5f * (cA + cB); separations[0] = b2Dot(cB - cA, normal); } break; case b2Manifold::e_faceA: { normal = b2Mul(xfA.q, manifold->localNormal); b2Vec2 planePoint = b2Mul(xfA, manifold->localPoint); for (int32 i = 0; i < manifold->pointCount; ++i) { b2Vec2 clipPoint = b2Mul(xfB, manifold->points[i].localPoint); b2Vec2 cA = clipPoint + (radiusA - b2Dot(clipPoint - planePoint, normal)) * normal; b2Vec2 cB = clipPoint - radiusB * normal; points[i] = 0.5f * (cA + cB); separations[i] = b2Dot(cB - cA, normal); } } break; case b2Manifold::e_faceB: { normal = b2Mul(xfB.q, manifold->localNormal); b2Vec2 planePoint = b2Mul(xfB, manifold->localPoint); for (int32 i = 0; i < manifold->pointCount; ++i) { b2Vec2 clipPoint = b2Mul(xfA, manifold->points[i].localPoint); b2Vec2 cB = clipPoint + (radiusB - b2Dot(clipPoint - planePoint, normal)) * normal; b2Vec2 cA = clipPoint - radiusA * normal; points[i] = 0.5f * (cA + cB); separations[i] = b2Dot(cA - cB, normal); } // Ensure normal points from A to B. normal = -normal; } break; } } void b2GetPointStates(b2PointState state1[b2_maxManifoldPoints], b2PointState state2[b2_maxManifoldPoints], const b2Manifold* manifold1, const b2Manifold* manifold2) { for (int32 i = 0; i < b2_maxManifoldPoints; ++i) { state1[i] = b2_nullState; state2[i] = b2_nullState; } // Detect persists and removes. for (int32 i = 0; i < manifold1->pointCount; ++i) { b2ContactID id = manifold1->points[i].id; state1[i] = b2_removeState; for (int32 j = 0; j < manifold2->pointCount; ++j) { if (manifold2->points[j].id.key == id.key) { state1[i] = b2_persistState; break; } } } // Detect persists and adds. for (int32 i = 0; i < manifold2->pointCount; ++i) { b2ContactID id = manifold2->points[i].id; state2[i] = b2_addState; for (int32 j = 0; j < manifold1->pointCount; ++j) { if (manifold1->points[j].id.key == id.key) { state2[i] = b2_persistState; break; } } } } // From Real-time Collision Detection, p179. bool b2AABB::RayCast(b2RayCastOutput* output, const b2RayCastInput& input) const { float32 tmin = -b2_maxFloat; float32 tmax = b2_maxFloat; b2Vec2 p = input.p1; b2Vec2 d = input.p2 - input.p1; b2Vec2 absD = b2Abs(d); b2Vec2 normal; for (int32 i = 0; i < 2; ++i) { if (absD(i) < b2_epsilon) { // Parallel. if (p(i) < lowerBound(i) || upperBound(i) < p(i)) { return false; } } else { float32 inv_d = 1.0f / d(i); float32 t1 = (lowerBound(i) - p(i)) * inv_d; float32 t2 = (upperBound(i) - p(i)) * inv_d; // Sign of the normal vector. float32 s = -1.0f; if (t1 > t2) { b2Swap(t1, t2); s = 1.0f; } // Push the min up if (t1 > tmin) { normal.SetZero(); normal(i) = s; tmin = t1; } // Pull the max down tmax = b2Min(tmax, t2); if (tmin > tmax) { return false; } } } // Does the ray start inside the box? // Does the ray intersect beyond the max fraction? if (tmin < 0.0f || input.maxFraction < tmin) { return false; } // Intersection. output->fraction = tmin; output->normal = normal; return true; } // Sutherland-Hodgman clipping. int32 b2ClipSegmentToLine(b2ClipVertex vOut[2], const b2ClipVertex vIn[2], const b2Vec2& normal, float32 offset, int32 vertexIndexA) { // Start with no output points int32 numOut = 0; // Calculate the distance of end points to the line float32 distance0 = b2Dot(normal, vIn[0].v) - offset; float32 distance1 = b2Dot(normal, vIn[1].v) - offset; // If the points are behind the plane if (distance0 <= 0.0f) vOut[numOut++] = vIn[0]; if (distance1 <= 0.0f) vOut[numOut++] = vIn[1]; // If the points are on different sides of the plane if (distance0 * distance1 < 0.0f) { // Find intersection point of edge and plane float32 interp = distance0 / (distance0 - distance1); vOut[numOut].v = vIn[0].v + interp * (vIn[1].v - vIn[0].v); // VertexA is hitting edgeB. vOut[numOut].id.cf.indexA = static_cast(vertexIndexA); vOut[numOut].id.cf.indexB = vIn[0].id.cf.indexB; vOut[numOut].id.cf.typeA = b2ContactFeature::e_vertex; vOut[numOut].id.cf.typeB = b2ContactFeature::e_face; ++numOut; } return numOut; } bool b2TestOverlap( const b2Shape* shapeA, int32 indexA, const b2Shape* shapeB, int32 indexB, const b2Transform& xfA, const b2Transform& xfB) { b2DistanceInput input; input.proxyA.Set(shapeA, indexA); input.proxyB.Set(shapeB, indexB); input.transformA = xfA; input.transformB = xfB; input.useRadii = true; b2SimplexCache cache; cache.count = 0; b2DistanceOutput output; b2Distance(&output, &cache, &input); return output.distance < 10.0f * b2_epsilon; } love-0.9.1/src/libraries/Box2D/Collision/b2TimeOfImpact.cpp0000755000000000000000000002664612316602166023375 0ustar00rootroot00000000000000/* * Copyright (c) 2007-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include #include float32 b2_toiTime, b2_toiMaxTime; int32 b2_toiCalls, b2_toiIters, b2_toiMaxIters; int32 b2_toiRootIters, b2_toiMaxRootIters; // struct b2SeparationFunction { enum Type { e_points, e_faceA, e_faceB }; // TODO_ERIN might not need to return the separation float32 Initialize(const b2SimplexCache* cache, const b2DistanceProxy* proxyA, const b2Sweep& sweepA, const b2DistanceProxy* proxyB, const b2Sweep& sweepB, float32 t1) { m_proxyA = proxyA; m_proxyB = proxyB; int32 count = cache->count; b2Assert(0 < count && count < 3); m_sweepA = sweepA; m_sweepB = sweepB; b2Transform xfA, xfB; m_sweepA.GetTransform(&xfA, t1); m_sweepB.GetTransform(&xfB, t1); if (count == 1) { m_type = e_points; b2Vec2 localPointA = m_proxyA->GetVertex(cache->indexA[0]); b2Vec2 localPointB = m_proxyB->GetVertex(cache->indexB[0]); b2Vec2 pointA = b2Mul(xfA, localPointA); b2Vec2 pointB = b2Mul(xfB, localPointB); m_axis = pointB - pointA; float32 s = m_axis.Normalize(); return s; } else if (cache->indexA[0] == cache->indexA[1]) { // Two points on B and one on A. m_type = e_faceB; b2Vec2 localPointB1 = proxyB->GetVertex(cache->indexB[0]); b2Vec2 localPointB2 = proxyB->GetVertex(cache->indexB[1]); m_axis = b2Cross(localPointB2 - localPointB1, 1.0f); m_axis.Normalize(); b2Vec2 normal = b2Mul(xfB.q, m_axis); m_localPoint = 0.5f * (localPointB1 + localPointB2); b2Vec2 pointB = b2Mul(xfB, m_localPoint); b2Vec2 localPointA = proxyA->GetVertex(cache->indexA[0]); b2Vec2 pointA = b2Mul(xfA, localPointA); float32 s = b2Dot(pointA - pointB, normal); if (s < 0.0f) { m_axis = -m_axis; s = -s; } return s; } else { // Two points on A and one or two points on B. m_type = e_faceA; b2Vec2 localPointA1 = m_proxyA->GetVertex(cache->indexA[0]); b2Vec2 localPointA2 = m_proxyA->GetVertex(cache->indexA[1]); m_axis = b2Cross(localPointA2 - localPointA1, 1.0f); m_axis.Normalize(); b2Vec2 normal = b2Mul(xfA.q, m_axis); m_localPoint = 0.5f * (localPointA1 + localPointA2); b2Vec2 pointA = b2Mul(xfA, m_localPoint); b2Vec2 localPointB = m_proxyB->GetVertex(cache->indexB[0]); b2Vec2 pointB = b2Mul(xfB, localPointB); float32 s = b2Dot(pointB - pointA, normal); if (s < 0.0f) { m_axis = -m_axis; s = -s; } return s; } } // float32 FindMinSeparation(int32* indexA, int32* indexB, float32 t) const { b2Transform xfA, xfB; m_sweepA.GetTransform(&xfA, t); m_sweepB.GetTransform(&xfB, t); switch (m_type) { case e_points: { b2Vec2 axisA = b2MulT(xfA.q, m_axis); b2Vec2 axisB = b2MulT(xfB.q, -m_axis); *indexA = m_proxyA->GetSupport(axisA); *indexB = m_proxyB->GetSupport(axisB); b2Vec2 localPointA = m_proxyA->GetVertex(*indexA); b2Vec2 localPointB = m_proxyB->GetVertex(*indexB); b2Vec2 pointA = b2Mul(xfA, localPointA); b2Vec2 pointB = b2Mul(xfB, localPointB); float32 separation = b2Dot(pointB - pointA, m_axis); return separation; } case e_faceA: { b2Vec2 normal = b2Mul(xfA.q, m_axis); b2Vec2 pointA = b2Mul(xfA, m_localPoint); b2Vec2 axisB = b2MulT(xfB.q, -normal); *indexA = -1; *indexB = m_proxyB->GetSupport(axisB); b2Vec2 localPointB = m_proxyB->GetVertex(*indexB); b2Vec2 pointB = b2Mul(xfB, localPointB); float32 separation = b2Dot(pointB - pointA, normal); return separation; } case e_faceB: { b2Vec2 normal = b2Mul(xfB.q, m_axis); b2Vec2 pointB = b2Mul(xfB, m_localPoint); b2Vec2 axisA = b2MulT(xfA.q, -normal); *indexB = -1; *indexA = m_proxyA->GetSupport(axisA); b2Vec2 localPointA = m_proxyA->GetVertex(*indexA); b2Vec2 pointA = b2Mul(xfA, localPointA); float32 separation = b2Dot(pointA - pointB, normal); return separation; } default: b2Assert(false); *indexA = -1; *indexB = -1; return 0.0f; } } // float32 Evaluate(int32 indexA, int32 indexB, float32 t) const { b2Transform xfA, xfB; m_sweepA.GetTransform(&xfA, t); m_sweepB.GetTransform(&xfB, t); switch (m_type) { case e_points: { b2Vec2 localPointA = m_proxyA->GetVertex(indexA); b2Vec2 localPointB = m_proxyB->GetVertex(indexB); b2Vec2 pointA = b2Mul(xfA, localPointA); b2Vec2 pointB = b2Mul(xfB, localPointB); float32 separation = b2Dot(pointB - pointA, m_axis); return separation; } case e_faceA: { b2Vec2 normal = b2Mul(xfA.q, m_axis); b2Vec2 pointA = b2Mul(xfA, m_localPoint); b2Vec2 localPointB = m_proxyB->GetVertex(indexB); b2Vec2 pointB = b2Mul(xfB, localPointB); float32 separation = b2Dot(pointB - pointA, normal); return separation; } case e_faceB: { b2Vec2 normal = b2Mul(xfB.q, m_axis); b2Vec2 pointB = b2Mul(xfB, m_localPoint); b2Vec2 localPointA = m_proxyA->GetVertex(indexA); b2Vec2 pointA = b2Mul(xfA, localPointA); float32 separation = b2Dot(pointA - pointB, normal); return separation; } default: b2Assert(false); return 0.0f; } } const b2DistanceProxy* m_proxyA; const b2DistanceProxy* m_proxyB; b2Sweep m_sweepA, m_sweepB; Type m_type; b2Vec2 m_localPoint; b2Vec2 m_axis; }; // CCD via the local separating axis method. This seeks progression // by computing the largest time at which separation is maintained. void b2TimeOfImpact(b2TOIOutput* output, const b2TOIInput* input) { b2Timer timer; ++b2_toiCalls; output->state = b2TOIOutput::e_unknown; output->t = input->tMax; const b2DistanceProxy* proxyA = &input->proxyA; const b2DistanceProxy* proxyB = &input->proxyB; b2Sweep sweepA = input->sweepA; b2Sweep sweepB = input->sweepB; // Large rotations can make the root finder fail, so we normalize the // sweep angles. sweepA.Normalize(); sweepB.Normalize(); float32 tMax = input->tMax; float32 totalRadius = proxyA->m_radius + proxyB->m_radius; float32 target = b2Max(b2_linearSlop, totalRadius - 3.0f * b2_linearSlop); float32 tolerance = 0.25f * b2_linearSlop; b2Assert(target > tolerance); float32 t1 = 0.0f; const int32 k_maxIterations = 20; // TODO_ERIN b2Settings int32 iter = 0; // Prepare input for distance query. b2SimplexCache cache; cache.count = 0; b2DistanceInput distanceInput; distanceInput.proxyA = input->proxyA; distanceInput.proxyB = input->proxyB; distanceInput.useRadii = false; // The outer loop progressively attempts to compute new separating axes. // This loop terminates when an axis is repeated (no progress is made). for(;;) { b2Transform xfA, xfB; sweepA.GetTransform(&xfA, t1); sweepB.GetTransform(&xfB, t1); // Get the distance between shapes. We can also use the results // to get a separating axis. distanceInput.transformA = xfA; distanceInput.transformB = xfB; b2DistanceOutput distanceOutput; b2Distance(&distanceOutput, &cache, &distanceInput); // If the shapes are overlapped, we give up on continuous collision. if (distanceOutput.distance <= 0.0f) { // Failure! output->state = b2TOIOutput::e_overlapped; output->t = 0.0f; break; } if (distanceOutput.distance < target + tolerance) { // Victory! output->state = b2TOIOutput::e_touching; output->t = t1; break; } // Initialize the separating axis. b2SeparationFunction fcn; fcn.Initialize(&cache, proxyA, sweepA, proxyB, sweepB, t1); #if 0 // Dump the curve seen by the root finder { const int32 N = 100; float32 dx = 1.0f / N; float32 xs[N+1]; float32 fs[N+1]; float32 x = 0.0f; for (int32 i = 0; i <= N; ++i) { sweepA.GetTransform(&xfA, x); sweepB.GetTransform(&xfB, x); float32 f = fcn.Evaluate(xfA, xfB) - target; printf("%g %g\n", x, f); xs[i] = x; fs[i] = f; x += dx; } } #endif // Compute the TOI on the separating axis. We do this by successively // resolving the deepest point. This loop is bounded by the number of vertices. bool done = false; float32 t2 = tMax; int32 pushBackIter = 0; for (;;) { // Find the deepest point at t2. Store the witness point indices. int32 indexA, indexB; float32 s2 = fcn.FindMinSeparation(&indexA, &indexB, t2); // Is the final configuration separated? if (s2 > target + tolerance) { // Victory! output->state = b2TOIOutput::e_separated; output->t = tMax; done = true; break; } // Has the separation reached tolerance? if (s2 > target - tolerance) { // Advance the sweeps t1 = t2; break; } // Compute the initial separation of the witness points. float32 s1 = fcn.Evaluate(indexA, indexB, t1); // Check for initial overlap. This might happen if the root finder // runs out of iterations. if (s1 < target - tolerance) { output->state = b2TOIOutput::e_failed; output->t = t1; done = true; break; } // Check for touching if (s1 <= target + tolerance) { // Victory! t1 should hold the TOI (could be 0.0). output->state = b2TOIOutput::e_touching; output->t = t1; done = true; break; } // Compute 1D root of: f(x) - target = 0 int32 rootIterCount = 0; float32 a1 = t1, a2 = t2; for (;;) { // Use a mix of the secant rule and bisection. float32 t; if (rootIterCount & 1) { // Secant rule to improve convergence. t = a1 + (target - s1) * (a2 - a1) / (s2 - s1); } else { // Bisection to guarantee progress. t = 0.5f * (a1 + a2); } ++rootIterCount; ++b2_toiRootIters; float32 s = fcn.Evaluate(indexA, indexB, t); if (b2Abs(s - target) < tolerance) { // t2 holds a tentative value for t1 t2 = t; break; } // Ensure we continue to bracket the root. if (s > target) { a1 = t; s1 = s; } else { a2 = t; s2 = s; } if (rootIterCount == 50) { break; } } b2_toiMaxRootIters = b2Max(b2_toiMaxRootIters, rootIterCount); ++pushBackIter; if (pushBackIter == b2_maxPolygonVertices) { break; } } ++iter; ++b2_toiIters; if (done) { break; } if (iter == k_maxIterations) { // Root finder got stuck. Semi-victory. output->state = b2TOIOutput::e_failed; output->t = t1; break; } } b2_toiMaxIters = b2Max(b2_toiMaxIters, iter); float32 time = timer.GetMilliseconds(); b2_toiMaxTime = b2Max(b2_toiMaxTime, time); b2_toiTime += time; } love-0.9.1/src/libraries/Box2D/Collision/b2CollidePolygon.cpp0000755000000000000000000001464212316602166023770 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include // Find the max separation between poly1 and poly2 using edge normals from poly1. static float32 b2FindMaxSeparation(int32* edgeIndex, const b2PolygonShape* poly1, const b2Transform& xf1, const b2PolygonShape* poly2, const b2Transform& xf2) { int32 count1 = poly1->m_count; int32 count2 = poly2->m_count; const b2Vec2* n1s = poly1->m_normals; const b2Vec2* v1s = poly1->m_vertices; const b2Vec2* v2s = poly2->m_vertices; b2Transform xf = b2MulT(xf2, xf1); int32 bestIndex = 0; float32 maxSeparation = -b2_maxFloat; for (int32 i = 0; i < count1; ++i) { // Get poly1 normal in frame2. b2Vec2 n = b2Mul(xf.q, n1s[i]); b2Vec2 v1 = b2Mul(xf, v1s[i]); // Find deepest point for normal i. float32 si = b2_maxFloat; for (int32 j = 0; j < count2; ++j) { float32 sij = b2Dot(n, v2s[j] - v1); if (sij < si) { si = sij; } } if (si > maxSeparation) { maxSeparation = si; bestIndex = i; } } *edgeIndex = bestIndex; return maxSeparation; } static void b2FindIncidentEdge(b2ClipVertex c[2], const b2PolygonShape* poly1, const b2Transform& xf1, int32 edge1, const b2PolygonShape* poly2, const b2Transform& xf2) { const b2Vec2* normals1 = poly1->m_normals; int32 count2 = poly2->m_count; const b2Vec2* vertices2 = poly2->m_vertices; const b2Vec2* normals2 = poly2->m_normals; b2Assert(0 <= edge1 && edge1 < poly1->m_count); // Get the normal of the reference edge in poly2's frame. b2Vec2 normal1 = b2MulT(xf2.q, b2Mul(xf1.q, normals1[edge1])); // Find the incident edge on poly2. int32 index = 0; float32 minDot = b2_maxFloat; for (int32 i = 0; i < count2; ++i) { float32 dot = b2Dot(normal1, normals2[i]); if (dot < minDot) { minDot = dot; index = i; } } // Build the clip vertices for the incident edge. int32 i1 = index; int32 i2 = i1 + 1 < count2 ? i1 + 1 : 0; c[0].v = b2Mul(xf2, vertices2[i1]); c[0].id.cf.indexA = (uint8)edge1; c[0].id.cf.indexB = (uint8)i1; c[0].id.cf.typeA = b2ContactFeature::e_face; c[0].id.cf.typeB = b2ContactFeature::e_vertex; c[1].v = b2Mul(xf2, vertices2[i2]); c[1].id.cf.indexA = (uint8)edge1; c[1].id.cf.indexB = (uint8)i2; c[1].id.cf.typeA = b2ContactFeature::e_face; c[1].id.cf.typeB = b2ContactFeature::e_vertex; } // Find edge normal of max separation on A - return if separating axis is found // Find edge normal of max separation on B - return if separation axis is found // Choose reference edge as min(minA, minB) // Find incident edge // Clip // The normal points from 1 to 2 void b2CollidePolygons(b2Manifold* manifold, const b2PolygonShape* polyA, const b2Transform& xfA, const b2PolygonShape* polyB, const b2Transform& xfB) { manifold->pointCount = 0; float32 totalRadius = polyA->m_radius + polyB->m_radius; int32 edgeA = 0; float32 separationA = b2FindMaxSeparation(&edgeA, polyA, xfA, polyB, xfB); if (separationA > totalRadius) return; int32 edgeB = 0; float32 separationB = b2FindMaxSeparation(&edgeB, polyB, xfB, polyA, xfA); if (separationB > totalRadius) return; const b2PolygonShape* poly1; // reference polygon const b2PolygonShape* poly2; // incident polygon b2Transform xf1, xf2; int32 edge1; // reference edge uint8 flip; const float32 k_tol = 0.1f * b2_linearSlop; if (separationB > separationA + k_tol) { poly1 = polyB; poly2 = polyA; xf1 = xfB; xf2 = xfA; edge1 = edgeB; manifold->type = b2Manifold::e_faceB; flip = 1; } else { poly1 = polyA; poly2 = polyB; xf1 = xfA; xf2 = xfB; edge1 = edgeA; manifold->type = b2Manifold::e_faceA; flip = 0; } b2ClipVertex incidentEdge[2]; b2FindIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2); int32 count1 = poly1->m_count; const b2Vec2* vertices1 = poly1->m_vertices; int32 iv1 = edge1; int32 iv2 = edge1 + 1 < count1 ? edge1 + 1 : 0; b2Vec2 v11 = vertices1[iv1]; b2Vec2 v12 = vertices1[iv2]; b2Vec2 localTangent = v12 - v11; localTangent.Normalize(); b2Vec2 localNormal = b2Cross(localTangent, 1.0f); b2Vec2 planePoint = 0.5f * (v11 + v12); b2Vec2 tangent = b2Mul(xf1.q, localTangent); b2Vec2 normal = b2Cross(tangent, 1.0f); v11 = b2Mul(xf1, v11); v12 = b2Mul(xf1, v12); // Face offset. float32 frontOffset = b2Dot(normal, v11); // Side offsets, extended by polytope skin thickness. float32 sideOffset1 = -b2Dot(tangent, v11) + totalRadius; float32 sideOffset2 = b2Dot(tangent, v12) + totalRadius; // Clip incident edge against extruded edge1 side edges. b2ClipVertex clipPoints1[2]; b2ClipVertex clipPoints2[2]; int np; // Clip to box side 1 np = b2ClipSegmentToLine(clipPoints1, incidentEdge, -tangent, sideOffset1, iv1); if (np < 2) return; // Clip to negative box side 1 np = b2ClipSegmentToLine(clipPoints2, clipPoints1, tangent, sideOffset2, iv2); if (np < 2) { return; } // Now clipPoints2 contains the clipped points. manifold->localNormal = localNormal; manifold->localPoint = planePoint; int32 pointCount = 0; for (int32 i = 0; i < b2_maxManifoldPoints; ++i) { float32 separation = b2Dot(normal, clipPoints2[i].v) - frontOffset; if (separation <= totalRadius) { b2ManifoldPoint* cp = manifold->points + pointCount; cp->localPoint = b2MulT(xf2, clipPoints2[i].v); cp->id = clipPoints2[i].id; if (flip) { // Swap features b2ContactFeature cf = cp->id.cf; cp->id.cf.indexA = cf.indexB; cp->id.cf.indexB = cf.indexA; cp->id.cf.typeA = cf.typeB; cp->id.cf.typeB = cf.typeA; } ++pointCount; } } manifold->pointCount = pointCount; } love-0.9.1/src/libraries/Box2D/Collision/b2Distance.cpp0000755000000000000000000003163212316602166022575 0ustar00rootroot00000000000000/* * Copyright (c) 2007-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include // GJK using Voronoi regions (Christer Ericson) and Barycentric coordinates. int32 b2_gjkCalls, b2_gjkIters, b2_gjkMaxIters; void b2DistanceProxy::Set(const b2Shape* shape, int32 index) { switch (shape->GetType()) { case b2Shape::e_circle: { const b2CircleShape* circle = static_cast(shape); m_vertices = &circle->m_p; m_count = 1; m_radius = circle->m_radius; } break; case b2Shape::e_polygon: { const b2PolygonShape* polygon = static_cast(shape); m_vertices = polygon->m_vertices; m_count = polygon->m_count; m_radius = polygon->m_radius; } break; case b2Shape::e_chain: { const b2ChainShape* chain = static_cast(shape); b2Assert(0 <= index && index < chain->m_count); m_buffer[0] = chain->m_vertices[index]; if (index + 1 < chain->m_count) { m_buffer[1] = chain->m_vertices[index + 1]; } else { m_buffer[1] = chain->m_vertices[0]; } m_vertices = m_buffer; m_count = 2; m_radius = chain->m_radius; } break; case b2Shape::e_edge: { const b2EdgeShape* edge = static_cast(shape); m_vertices = &edge->m_vertex1; m_count = 2; m_radius = edge->m_radius; } break; default: b2Assert(false); } } struct b2SimplexVertex { b2Vec2 wA; // support point in proxyA b2Vec2 wB; // support point in proxyB b2Vec2 w; // wB - wA float32 a; // barycentric coordinate for closest point int32 indexA; // wA index int32 indexB; // wB index }; struct b2Simplex { void ReadCache( const b2SimplexCache* cache, const b2DistanceProxy* proxyA, const b2Transform& transformA, const b2DistanceProxy* proxyB, const b2Transform& transformB) { b2Assert(cache->count <= 3); // Copy data from cache. m_count = cache->count; b2SimplexVertex* vertices = &m_v1; for (int32 i = 0; i < m_count; ++i) { b2SimplexVertex* v = vertices + i; v->indexA = cache->indexA[i]; v->indexB = cache->indexB[i]; b2Vec2 wALocal = proxyA->GetVertex(v->indexA); b2Vec2 wBLocal = proxyB->GetVertex(v->indexB); v->wA = b2Mul(transformA, wALocal); v->wB = b2Mul(transformB, wBLocal); v->w = v->wB - v->wA; v->a = 0.0f; } // Compute the new simplex metric, if it is substantially different than // old metric then flush the simplex. if (m_count > 1) { float32 metric1 = cache->metric; float32 metric2 = GetMetric(); if (metric2 < 0.5f * metric1 || 2.0f * metric1 < metric2 || metric2 < b2_epsilon) { // Reset the simplex. m_count = 0; } } // If the cache is empty or invalid ... if (m_count == 0) { b2SimplexVertex* v = vertices + 0; v->indexA = 0; v->indexB = 0; b2Vec2 wALocal = proxyA->GetVertex(0); b2Vec2 wBLocal = proxyB->GetVertex(0); v->wA = b2Mul(transformA, wALocal); v->wB = b2Mul(transformB, wBLocal); v->w = v->wB - v->wA; v->a = 1.0f; m_count = 1; } } void WriteCache(b2SimplexCache* cache) const { cache->metric = GetMetric(); cache->count = uint16(m_count); const b2SimplexVertex* vertices = &m_v1; for (int32 i = 0; i < m_count; ++i) { cache->indexA[i] = uint8(vertices[i].indexA); cache->indexB[i] = uint8(vertices[i].indexB); } } b2Vec2 GetSearchDirection() const { switch (m_count) { case 1: return -m_v1.w; case 2: { b2Vec2 e12 = m_v2.w - m_v1.w; float32 sgn = b2Cross(e12, -m_v1.w); if (sgn > 0.0f) { // Origin is left of e12. return b2Cross(1.0f, e12); } else { // Origin is right of e12. return b2Cross(e12, 1.0f); } } default: b2Assert(false); return b2Vec2_zero; } } b2Vec2 GetClosestPoint() const { switch (m_count) { case 0: b2Assert(false); return b2Vec2_zero; case 1: return m_v1.w; case 2: return m_v1.a * m_v1.w + m_v2.a * m_v2.w; case 3: return b2Vec2_zero; default: b2Assert(false); return b2Vec2_zero; } } void GetWitnessPoints(b2Vec2* pA, b2Vec2* pB) const { switch (m_count) { case 0: b2Assert(false); break; case 1: *pA = m_v1.wA; *pB = m_v1.wB; break; case 2: *pA = m_v1.a * m_v1.wA + m_v2.a * m_v2.wA; *pB = m_v1.a * m_v1.wB + m_v2.a * m_v2.wB; break; case 3: *pA = m_v1.a * m_v1.wA + m_v2.a * m_v2.wA + m_v3.a * m_v3.wA; *pB = *pA; break; default: b2Assert(false); break; } } float32 GetMetric() const { switch (m_count) { case 0: b2Assert(false); return 0.0f; case 1: return 0.0f; case 2: return b2Distance(m_v1.w, m_v2.w); case 3: return b2Cross(m_v2.w - m_v1.w, m_v3.w - m_v1.w); default: b2Assert(false); return 0.0f; } } void Solve2(); void Solve3(); b2SimplexVertex m_v1, m_v2, m_v3; int32 m_count; }; // Solve a line segment using barycentric coordinates. // // p = a1 * w1 + a2 * w2 // a1 + a2 = 1 // // The vector from the origin to the closest point on the line is // perpendicular to the line. // e12 = w2 - w1 // dot(p, e) = 0 // a1 * dot(w1, e) + a2 * dot(w2, e) = 0 // // 2-by-2 linear system // [1 1 ][a1] = [1] // [w1.e12 w2.e12][a2] = [0] // // Define // d12_1 = dot(w2, e12) // d12_2 = -dot(w1, e12) // d12 = d12_1 + d12_2 // // Solution // a1 = d12_1 / d12 // a2 = d12_2 / d12 void b2Simplex::Solve2() { b2Vec2 w1 = m_v1.w; b2Vec2 w2 = m_v2.w; b2Vec2 e12 = w2 - w1; // w1 region float32 d12_2 = -b2Dot(w1, e12); if (d12_2 <= 0.0f) { // a2 <= 0, so we clamp it to 0 m_v1.a = 1.0f; m_count = 1; return; } // w2 region float32 d12_1 = b2Dot(w2, e12); if (d12_1 <= 0.0f) { // a1 <= 0, so we clamp it to 0 m_v2.a = 1.0f; m_count = 1; m_v1 = m_v2; return; } // Must be in e12 region. float32 inv_d12 = 1.0f / (d12_1 + d12_2); m_v1.a = d12_1 * inv_d12; m_v2.a = d12_2 * inv_d12; m_count = 2; } // Possible regions: // - points[2] // - edge points[0]-points[2] // - edge points[1]-points[2] // - inside the triangle void b2Simplex::Solve3() { b2Vec2 w1 = m_v1.w; b2Vec2 w2 = m_v2.w; b2Vec2 w3 = m_v3.w; // Edge12 // [1 1 ][a1] = [1] // [w1.e12 w2.e12][a2] = [0] // a3 = 0 b2Vec2 e12 = w2 - w1; float32 w1e12 = b2Dot(w1, e12); float32 w2e12 = b2Dot(w2, e12); float32 d12_1 = w2e12; float32 d12_2 = -w1e12; // Edge13 // [1 1 ][a1] = [1] // [w1.e13 w3.e13][a3] = [0] // a2 = 0 b2Vec2 e13 = w3 - w1; float32 w1e13 = b2Dot(w1, e13); float32 w3e13 = b2Dot(w3, e13); float32 d13_1 = w3e13; float32 d13_2 = -w1e13; // Edge23 // [1 1 ][a2] = [1] // [w2.e23 w3.e23][a3] = [0] // a1 = 0 b2Vec2 e23 = w3 - w2; float32 w2e23 = b2Dot(w2, e23); float32 w3e23 = b2Dot(w3, e23); float32 d23_1 = w3e23; float32 d23_2 = -w2e23; // Triangle123 float32 n123 = b2Cross(e12, e13); float32 d123_1 = n123 * b2Cross(w2, w3); float32 d123_2 = n123 * b2Cross(w3, w1); float32 d123_3 = n123 * b2Cross(w1, w2); // w1 region if (d12_2 <= 0.0f && d13_2 <= 0.0f) { m_v1.a = 1.0f; m_count = 1; return; } // e12 if (d12_1 > 0.0f && d12_2 > 0.0f && d123_3 <= 0.0f) { float32 inv_d12 = 1.0f / (d12_1 + d12_2); m_v1.a = d12_1 * inv_d12; m_v2.a = d12_2 * inv_d12; m_count = 2; return; } // e13 if (d13_1 > 0.0f && d13_2 > 0.0f && d123_2 <= 0.0f) { float32 inv_d13 = 1.0f / (d13_1 + d13_2); m_v1.a = d13_1 * inv_d13; m_v3.a = d13_2 * inv_d13; m_count = 2; m_v2 = m_v3; return; } // w2 region if (d12_1 <= 0.0f && d23_2 <= 0.0f) { m_v2.a = 1.0f; m_count = 1; m_v1 = m_v2; return; } // w3 region if (d13_1 <= 0.0f && d23_1 <= 0.0f) { m_v3.a = 1.0f; m_count = 1; m_v1 = m_v3; return; } // e23 if (d23_1 > 0.0f && d23_2 > 0.0f && d123_1 <= 0.0f) { float32 inv_d23 = 1.0f / (d23_1 + d23_2); m_v2.a = d23_1 * inv_d23; m_v3.a = d23_2 * inv_d23; m_count = 2; m_v1 = m_v3; return; } // Must be in triangle123 float32 inv_d123 = 1.0f / (d123_1 + d123_2 + d123_3); m_v1.a = d123_1 * inv_d123; m_v2.a = d123_2 * inv_d123; m_v3.a = d123_3 * inv_d123; m_count = 3; } void b2Distance(b2DistanceOutput* output, b2SimplexCache* cache, const b2DistanceInput* input) { ++b2_gjkCalls; const b2DistanceProxy* proxyA = &input->proxyA; const b2DistanceProxy* proxyB = &input->proxyB; b2Transform transformA = input->transformA; b2Transform transformB = input->transformB; // Initialize the simplex. b2Simplex simplex; simplex.ReadCache(cache, proxyA, transformA, proxyB, transformB); // Get simplex vertices as an array. b2SimplexVertex* vertices = &simplex.m_v1; const int32 k_maxIters = 20; // These store the vertices of the last simplex so that we // can check for duplicates and prevent cycling. int32 saveA[3], saveB[3]; int32 saveCount = 0; float32 distanceSqr1 = b2_maxFloat; float32 distanceSqr2 = distanceSqr1; // Main iteration loop. int32 iter = 0; while (iter < k_maxIters) { // Copy simplex so we can identify duplicates. saveCount = simplex.m_count; for (int32 i = 0; i < saveCount; ++i) { saveA[i] = vertices[i].indexA; saveB[i] = vertices[i].indexB; } switch (simplex.m_count) { case 1: break; case 2: simplex.Solve2(); break; case 3: simplex.Solve3(); break; default: b2Assert(false); } // If we have 3 points, then the origin is in the corresponding triangle. if (simplex.m_count == 3) { break; } // Compute closest point. b2Vec2 p = simplex.GetClosestPoint(); distanceSqr2 = p.LengthSquared(); // Ensure progress if (distanceSqr2 >= distanceSqr1) { //break; } distanceSqr1 = distanceSqr2; // Get search direction. b2Vec2 d = simplex.GetSearchDirection(); // Ensure the search direction is numerically fit. if (d.LengthSquared() < b2_epsilon * b2_epsilon) { // The origin is probably contained by a line segment // or triangle. Thus the shapes are overlapped. // We can't return zero here even though there may be overlap. // In case the simplex is a point, segment, or triangle it is difficult // to determine if the origin is contained in the CSO or very close to it. break; } // Compute a tentative new simplex vertex using support points. b2SimplexVertex* vertex = vertices + simplex.m_count; vertex->indexA = proxyA->GetSupport(b2MulT(transformA.q, -d)); vertex->wA = b2Mul(transformA, proxyA->GetVertex(vertex->indexA)); b2Vec2 wBLocal; vertex->indexB = proxyB->GetSupport(b2MulT(transformB.q, d)); vertex->wB = b2Mul(transformB, proxyB->GetVertex(vertex->indexB)); vertex->w = vertex->wB - vertex->wA; // Iteration count is equated to the number of support point calls. ++iter; ++b2_gjkIters; // Check for duplicate support points. This is the main termination criteria. bool duplicate = false; for (int32 i = 0; i < saveCount; ++i) { if (vertex->indexA == saveA[i] && vertex->indexB == saveB[i]) { duplicate = true; break; } } // If we found a duplicate support point we must exit to avoid cycling. if (duplicate) { break; } // New vertex is ok and needed. ++simplex.m_count; } b2_gjkMaxIters = b2Max(b2_gjkMaxIters, iter); // Prepare output. simplex.GetWitnessPoints(&output->pointA, &output->pointB); output->distance = b2Distance(output->pointA, output->pointB); output->iterations = iter; // Cache the simplex. simplex.WriteCache(cache); // Apply radii if requested. if (input->useRadii) { float32 rA = proxyA->m_radius; float32 rB = proxyB->m_radius; if (output->distance > rA + rB && output->distance > b2_epsilon) { // Shapes are still no overlapped. // Move the witness points to the outer surface. output->distance -= rA + rB; b2Vec2 normal = output->pointB - output->pointA; normal.Normalize(); output->pointA += rA * normal; output->pointB -= rB * normal; } else { // Shapes are overlapped when radii are considered. // Move the witness points to the middle. b2Vec2 p = 0.5f * (output->pointA + output->pointB); output->pointA = p; output->pointB = p; output->distance = 0.0f; } } } love-0.9.1/src/libraries/Box2D/Collision/b2DynamicTree.h0000755000000000000000000001677612316602166022730 0ustar00rootroot00000000000000/* * Copyright (c) 2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_DYNAMIC_TREE_H #define B2_DYNAMIC_TREE_H #include #include #define b2_nullNode (-1) /// A node in the dynamic tree. The client does not interact with this directly. struct b2TreeNode { bool IsLeaf() const { return child1 == b2_nullNode; } /// Enlarged AABB b2AABB aabb; void* userData; union { int32 parent; int32 next; }; int32 child1; int32 child2; // leaf = 0, free node = -1 int32 height; }; /// A dynamic AABB tree broad-phase, inspired by Nathanael Presson's btDbvt. /// A dynamic tree arranges data in a binary tree to accelerate /// queries such as volume queries and ray casts. Leafs are proxies /// with an AABB. In the tree we expand the proxy AABB by b2_fatAABBFactor /// so that the proxy AABB is bigger than the client object. This allows the client /// object to move by small amounts without triggering a tree update. /// /// Nodes are pooled and relocatable, so we use node indices rather than pointers. class b2DynamicTree { public: /// Constructing the tree initializes the node pool. b2DynamicTree(); /// Destroy the tree, freeing the node pool. ~b2DynamicTree(); /// Create a proxy. Provide a tight fitting AABB and a userData pointer. int32 CreateProxy(const b2AABB& aabb, void* userData); /// Destroy a proxy. This asserts if the id is invalid. void DestroyProxy(int32 proxyId); /// Move a proxy with a swepted AABB. If the proxy has moved outside of its fattened AABB, /// then the proxy is removed from the tree and re-inserted. Otherwise /// the function returns immediately. /// @return true if the proxy was re-inserted. bool MoveProxy(int32 proxyId, const b2AABB& aabb1, const b2Vec2& displacement); /// Get proxy user data. /// @return the proxy user data or 0 if the id is invalid. void* GetUserData(int32 proxyId) const; /// Get the fat AABB for a proxy. const b2AABB& GetFatAABB(int32 proxyId) const; /// Query an AABB for overlapping proxies. The callback class /// is called for each proxy that overlaps the supplied AABB. template void Query(T* callback, const b2AABB& aabb) const; /// Ray-cast against the proxies in the tree. This relies on the callback /// to perform a exact ray-cast in the case were the proxy contains a shape. /// The callback also performs the any collision filtering. This has performance /// roughly equal to k * log(n), where k is the number of collisions and n is the /// number of proxies in the tree. /// @param input the ray-cast input data. The ray extends from p1 to p1 + maxFraction * (p2 - p1). /// @param callback a callback class that is called for each proxy that is hit by the ray. template void RayCast(T* callback, const b2RayCastInput& input) const; /// Validate this tree. For testing. void Validate() const; /// Compute the height of the binary tree in O(N) time. Should not be /// called often. int32 GetHeight() const; /// Get the maximum balance of an node in the tree. The balance is the difference /// in height of the two children of a node. int32 GetMaxBalance() const; /// Get the ratio of the sum of the node areas to the root area. float32 GetAreaRatio() const; /// Build an optimal tree. Very expensive. For testing. void RebuildBottomUp(); /// Shift the world origin. Useful for large worlds. /// The shift formula is: position -= newOrigin /// @param newOrigin the new origin with respect to the old origin void ShiftOrigin(const b2Vec2& newOrigin); private: int32 AllocateNode(); void FreeNode(int32 node); void InsertLeaf(int32 node); void RemoveLeaf(int32 node); int32 Balance(int32 index); int32 ComputeHeight() const; int32 ComputeHeight(int32 nodeId) const; void ValidateStructure(int32 index) const; void ValidateMetrics(int32 index) const; int32 m_root; b2TreeNode* m_nodes; int32 m_nodeCount; int32 m_nodeCapacity; int32 m_freeList; /// This is used to incrementally traverse the tree for re-balancing. uint32 m_path; int32 m_insertionCount; }; inline void* b2DynamicTree::GetUserData(int32 proxyId) const { b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); return m_nodes[proxyId].userData; } inline const b2AABB& b2DynamicTree::GetFatAABB(int32 proxyId) const { b2Assert(0 <= proxyId && proxyId < m_nodeCapacity); return m_nodes[proxyId].aabb; } template inline void b2DynamicTree::Query(T* callback, const b2AABB& aabb) const { b2GrowableStack stack; stack.Push(m_root); while (stack.GetCount() > 0) { int32 nodeId = stack.Pop(); if (nodeId == b2_nullNode) { continue; } const b2TreeNode* node = m_nodes + nodeId; if (b2TestOverlap(node->aabb, aabb)) { if (node->IsLeaf()) { bool proceed = callback->QueryCallback(nodeId); if (proceed == false) { return; } } else { stack.Push(node->child1); stack.Push(node->child2); } } } } template inline void b2DynamicTree::RayCast(T* callback, const b2RayCastInput& input) const { b2Vec2 p1 = input.p1; b2Vec2 p2 = input.p2; b2Vec2 r = p2 - p1; b2Assert(r.LengthSquared() > 0.0f); r.Normalize(); // v is perpendicular to the segment. b2Vec2 v = b2Cross(1.0f, r); b2Vec2 abs_v = b2Abs(v); // Separating axis for segment (Gino, p80). // |dot(v, p1 - c)| > dot(|v|, h) float32 maxFraction = input.maxFraction; // Build a bounding box for the segment. b2AABB segmentAABB; { b2Vec2 t = p1 + maxFraction * (p2 - p1); segmentAABB.lowerBound = b2Min(p1, t); segmentAABB.upperBound = b2Max(p1, t); } b2GrowableStack stack; stack.Push(m_root); while (stack.GetCount() > 0) { int32 nodeId = stack.Pop(); if (nodeId == b2_nullNode) { continue; } const b2TreeNode* node = m_nodes + nodeId; if (b2TestOverlap(node->aabb, segmentAABB) == false) { continue; } // Separating axis for segment (Gino, p80). // |dot(v, p1 - c)| > dot(|v|, h) b2Vec2 c = node->aabb.GetCenter(); b2Vec2 h = node->aabb.GetExtents(); float32 separation = b2Abs(b2Dot(v, p1 - c)) - b2Dot(abs_v, h); if (separation > 0.0f) { continue; } if (node->IsLeaf()) { b2RayCastInput subInput; subInput.p1 = input.p1; subInput.p2 = input.p2; subInput.maxFraction = maxFraction; float32 value = callback->RayCastCallback(subInput, nodeId); if (value == 0.0f) { // The client has terminated the ray cast. return; } if (value > 0.0f) { // Update segment bounding box. maxFraction = value; b2Vec2 t = p1 + maxFraction * (p2 - p1); segmentAABB.lowerBound = b2Min(p1, t); segmentAABB.upperBound = b2Max(p1, t); } } else { stack.Push(node->child1); stack.Push(node->child2); } } } #endif love-0.9.1/src/libraries/Box2D/Collision/Shapes/0000755000000000000000000000000012316602463021326 5ustar00rootroot00000000000000love-0.9.1/src/libraries/Box2D/Collision/Shapes/b2CircleShape.h0000755000000000000000000000474712316602166024124 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_CIRCLE_SHAPE_H #define B2_CIRCLE_SHAPE_H #include /// A circle shape. class b2CircleShape : public b2Shape { public: b2CircleShape(); /// Implement b2Shape. b2Shape* Clone(b2BlockAllocator* allocator) const; /// @see b2Shape::GetChildCount int32 GetChildCount() const; /// Implement b2Shape. bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; /// Implement b2Shape. bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform, int32 childIndex) const; /// @see b2Shape::ComputeAABB void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const; /// @see b2Shape::ComputeMass void ComputeMass(b2MassData* massData, float32 density) const; /// Get the supporting vertex index in the given direction. int32 GetSupport(const b2Vec2& d) const; /// Get the supporting vertex in the given direction. const b2Vec2& GetSupportVertex(const b2Vec2& d) const; /// Get the vertex count. int32 GetVertexCount() const { return 1; } /// Get a vertex by index. Used by b2Distance. const b2Vec2& GetVertex(int32 index) const; /// Position b2Vec2 m_p; }; inline b2CircleShape::b2CircleShape() { m_type = e_circle; m_radius = 0.0f; m_p.SetZero(); } inline int32 b2CircleShape::GetSupport(const b2Vec2 &d) const { B2_NOT_USED(d); return 0; } inline const b2Vec2& b2CircleShape::GetSupportVertex(const b2Vec2 &d) const { B2_NOT_USED(d); return m_p; } inline const b2Vec2& b2CircleShape::GetVertex(int32 index) const { B2_NOT_USED(index); b2Assert(index == 0); return m_p; } #endif love-0.9.1/src/libraries/Box2D/Collision/Shapes/b2ChainShape.cpp0000755000000000000000000001142712316602166024271 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include b2ChainShape::~b2ChainShape() { b2Free(m_vertices); m_vertices = NULL; m_count = 0; } void b2ChainShape::CreateLoop(const b2Vec2* vertices, int32 count) { b2Assert(m_vertices == NULL && m_count == 0); b2Assert(count >= 3); for (int32 i = 1; i < count; ++i) { b2Vec2 v1 = vertices[i-1]; b2Vec2 v2 = vertices[i]; // If the code crashes here, it means your vertices are too close together. b2Assert(b2DistanceSquared(v1, v2) > b2_linearSlop * b2_linearSlop); } m_count = count + 1; m_vertices = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2)); memcpy(m_vertices, vertices, count * sizeof(b2Vec2)); m_vertices[count] = m_vertices[0]; m_prevVertex = m_vertices[m_count - 2]; m_nextVertex = m_vertices[1]; m_hasPrevVertex = true; m_hasNextVertex = true; } void b2ChainShape::CreateChain(const b2Vec2* vertices, int32 count) { b2Assert(m_vertices == NULL && m_count == 0); b2Assert(count >= 2); for (int32 i = 1; i < count; ++i) { b2Vec2 v1 = vertices[i-1]; b2Vec2 v2 = vertices[i]; // If the code crashes here, it means your vertices are too close together. b2Assert(b2DistanceSquared(v1, v2) > b2_linearSlop * b2_linearSlop); } m_count = count; m_vertices = (b2Vec2*)b2Alloc(count * sizeof(b2Vec2)); memcpy(m_vertices, vertices, m_count * sizeof(b2Vec2)); m_hasPrevVertex = false; m_hasNextVertex = false; m_prevVertex.SetZero(); m_nextVertex.SetZero(); } void b2ChainShape::SetPrevVertex(const b2Vec2& prevVertex) { m_prevVertex = prevVertex; m_hasPrevVertex = true; } void b2ChainShape::SetNextVertex(const b2Vec2& nextVertex) { m_nextVertex = nextVertex; m_hasNextVertex = true; } b2Shape* b2ChainShape::Clone(b2BlockAllocator* allocator) const { void* mem = allocator->Allocate(sizeof(b2ChainShape)); b2ChainShape* clone = new (mem) b2ChainShape; clone->CreateChain(m_vertices, m_count); clone->m_prevVertex = m_prevVertex; clone->m_nextVertex = m_nextVertex; clone->m_hasPrevVertex = m_hasPrevVertex; clone->m_hasNextVertex = m_hasNextVertex; return clone; } int32 b2ChainShape::GetChildCount() const { // edge count = vertex count - 1 return m_count - 1; } void b2ChainShape::GetChildEdge(b2EdgeShape* edge, int32 index) const { b2Assert(0 <= index && index < m_count - 1); edge->m_type = b2Shape::e_edge; edge->m_radius = m_radius; edge->m_vertex1 = m_vertices[index + 0]; edge->m_vertex2 = m_vertices[index + 1]; if (index > 0) { edge->m_vertex0 = m_vertices[index - 1]; edge->m_hasVertex0 = true; } else { edge->m_vertex0 = m_prevVertex; edge->m_hasVertex0 = m_hasPrevVertex; } if (index < m_count - 2) { edge->m_vertex3 = m_vertices[index + 2]; edge->m_hasVertex3 = true; } else { edge->m_vertex3 = m_nextVertex; edge->m_hasVertex3 = m_hasNextVertex; } } bool b2ChainShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const { B2_NOT_USED(xf); B2_NOT_USED(p); return false; } bool b2ChainShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& xf, int32 childIndex) const { b2Assert(childIndex < m_count); b2EdgeShape edgeShape; int32 i1 = childIndex; int32 i2 = childIndex + 1; if (i2 == m_count) { i2 = 0; } edgeShape.m_vertex1 = m_vertices[i1]; edgeShape.m_vertex2 = m_vertices[i2]; return edgeShape.RayCast(output, input, xf, 0); } void b2ChainShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const { b2Assert(childIndex < m_count); int32 i1 = childIndex; int32 i2 = childIndex + 1; if (i2 == m_count) { i2 = 0; } b2Vec2 v1 = b2Mul(xf, m_vertices[i1]); b2Vec2 v2 = b2Mul(xf, m_vertices[i2]); aabb->lowerBound = b2Min(v1, v2); aabb->upperBound = b2Max(v1, v2); } void b2ChainShape::ComputeMass(b2MassData* massData, float32 density) const { B2_NOT_USED(density); massData->mass = 0.0f; massData->center.SetZero(); massData->I = 0.0f; } love-0.9.1/src/libraries/Box2D/Collision/Shapes/b2PolygonShape.cpp0000755000000000000000000002447412316602166024704 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include b2Shape* b2PolygonShape::Clone(b2BlockAllocator* allocator) const { void* mem = allocator->Allocate(sizeof(b2PolygonShape)); b2PolygonShape* clone = new (mem) b2PolygonShape; *clone = *this; return clone; } void b2PolygonShape::SetAsBox(float32 hx, float32 hy) { m_count = 4; m_vertices[0].Set(-hx, -hy); m_vertices[1].Set( hx, -hy); m_vertices[2].Set( hx, hy); m_vertices[3].Set(-hx, hy); m_normals[0].Set(0.0f, -1.0f); m_normals[1].Set(1.0f, 0.0f); m_normals[2].Set(0.0f, 1.0f); m_normals[3].Set(-1.0f, 0.0f); m_centroid.SetZero(); } void b2PolygonShape::SetAsBox(float32 hx, float32 hy, const b2Vec2& center, float32 angle) { m_count = 4; m_vertices[0].Set(-hx, -hy); m_vertices[1].Set( hx, -hy); m_vertices[2].Set( hx, hy); m_vertices[3].Set(-hx, hy); m_normals[0].Set(0.0f, -1.0f); m_normals[1].Set(1.0f, 0.0f); m_normals[2].Set(0.0f, 1.0f); m_normals[3].Set(-1.0f, 0.0f); m_centroid = center; b2Transform xf; xf.p = center; xf.q.Set(angle); // Transform vertices and normals. for (int32 i = 0; i < m_count; ++i) { m_vertices[i] = b2Mul(xf, m_vertices[i]); m_normals[i] = b2Mul(xf.q, m_normals[i]); } } int32 b2PolygonShape::GetChildCount() const { return 1; } static b2Vec2 ComputeCentroid(const b2Vec2* vs, int32 count) { b2Assert(count >= 3); b2Vec2 c; c.Set(0.0f, 0.0f); float32 area = 0.0f; // pRef is the reference point for forming triangles. // It's location doesn't change the result (except for rounding error). b2Vec2 pRef(0.0f, 0.0f); #if 0 // This code would put the reference point inside the polygon. for (int32 i = 0; i < count; ++i) { pRef += vs[i]; } pRef *= 1.0f / count; #endif const float32 inv3 = 1.0f / 3.0f; for (int32 i = 0; i < count; ++i) { // Triangle vertices. b2Vec2 p1 = pRef; b2Vec2 p2 = vs[i]; b2Vec2 p3 = i + 1 < count ? vs[i+1] : vs[0]; b2Vec2 e1 = p2 - p1; b2Vec2 e2 = p3 - p1; float32 D = b2Cross(e1, e2); float32 triangleArea = 0.5f * D; area += triangleArea; // Area weighted centroid c += triangleArea * inv3 * (p1 + p2 + p3); } // Centroid b2Assert(area > b2_epsilon); c *= 1.0f / area; return c; } void b2PolygonShape::Set(const b2Vec2* vertices, int32 count) { b2Assert(3 <= count && count <= b2_maxPolygonVertices); if (count < 3) { SetAsBox(1.0f, 1.0f); return; } int32 n = b2Min(count, b2_maxPolygonVertices); // Perform welding and copy vertices into local buffer. b2Vec2 ps[b2_maxPolygonVertices]; int32 tempCount = 0; for (int32 i = 0; i < n; ++i) { b2Vec2 v = vertices[i]; bool unique = true; for (int32 j = 0; j < tempCount; ++j) { if (b2DistanceSquared(v, ps[j]) < 0.5f * b2_linearSlop) { unique = false; break; } } if (unique) { ps[tempCount++] = v; } } n = tempCount; if (n < 3) { // Polygon is degenerate. b2Assert(false); SetAsBox(1.0f, 1.0f); return; } // Create the convex hull using the Gift wrapping algorithm // http://en.wikipedia.org/wiki/Gift_wrapping_algorithm // Find the right most point on the hull int32 i0 = 0; float32 x0 = ps[0].x; for (int32 i = 1; i < n; ++i) { float32 x = ps[i].x; if (x > x0 || (x == x0 && ps[i].y < ps[i0].y)) { i0 = i; x0 = x; } } int32 hull[b2_maxPolygonVertices]; int32 m = 0; int32 ih = i0; for (;;) { hull[m] = ih; int32 ie = 0; for (int32 j = 1; j < n; ++j) { if (ie == ih) { ie = j; continue; } b2Vec2 r = ps[ie] - ps[hull[m]]; b2Vec2 v = ps[j] - ps[hull[m]]; float32 c = b2Cross(r, v); if (c < 0.0f) { ie = j; } // Collinearity check if (c == 0.0f && v.LengthSquared() > r.LengthSquared()) { ie = j; } } ++m; ih = ie; if (ie == i0) { break; } } m_count = m; // Copy vertices. for (int32 i = 0; i < m; ++i) { m_vertices[i] = ps[hull[i]]; } // Compute normals. Ensure the edges have non-zero length. for (int32 i = 0; i < m; ++i) { int32 i1 = i; int32 i2 = i + 1 < m ? i + 1 : 0; b2Vec2 edge = m_vertices[i2] - m_vertices[i1]; b2Assert(edge.LengthSquared() > b2_epsilon * b2_epsilon); m_normals[i] = b2Cross(edge, 1.0f); m_normals[i].Normalize(); } // Compute the polygon centroid. m_centroid = ComputeCentroid(m_vertices, m); } bool b2PolygonShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const { b2Vec2 pLocal = b2MulT(xf.q, p - xf.p); for (int32 i = 0; i < m_count; ++i) { float32 dot = b2Dot(m_normals[i], pLocal - m_vertices[i]); if (dot > 0.0f) { return false; } } return true; } bool b2PolygonShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& xf, int32 childIndex) const { B2_NOT_USED(childIndex); // Put the ray into the polygon's frame of reference. b2Vec2 p1 = b2MulT(xf.q, input.p1 - xf.p); b2Vec2 p2 = b2MulT(xf.q, input.p2 - xf.p); b2Vec2 d = p2 - p1; float32 lower = 0.0f, upper = input.maxFraction; int32 index = -1; for (int32 i = 0; i < m_count; ++i) { // p = p1 + a * d // dot(normal, p - v) = 0 // dot(normal, p1 - v) + a * dot(normal, d) = 0 float32 numerator = b2Dot(m_normals[i], m_vertices[i] - p1); float32 denominator = b2Dot(m_normals[i], d); if (denominator == 0.0f) { if (numerator < 0.0f) { return false; } } else { // Note: we want this predicate without division: // lower < numerator / denominator, where denominator < 0 // Since denominator < 0, we have to flip the inequality: // lower < numerator / denominator <==> denominator * lower > numerator. if (denominator < 0.0f && numerator < lower * denominator) { // Increase lower. // The segment enters this half-space. lower = numerator / denominator; index = i; } else if (denominator > 0.0f && numerator < upper * denominator) { // Decrease upper. // The segment exits this half-space. upper = numerator / denominator; } } // The use of epsilon here causes the assert on lower to trip // in some cases. Apparently the use of epsilon was to make edge // shapes work, but now those are handled separately. //if (upper < lower - b2_epsilon) if (upper < lower) { return false; } } b2Assert(0.0f <= lower && lower <= input.maxFraction); if (index >= 0) { output->fraction = lower; output->normal = b2Mul(xf.q, m_normals[index]); return true; } return false; } void b2PolygonShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const { B2_NOT_USED(childIndex); b2Vec2 lower = b2Mul(xf, m_vertices[0]); b2Vec2 upper = lower; for (int32 i = 1; i < m_count; ++i) { b2Vec2 v = b2Mul(xf, m_vertices[i]); lower = b2Min(lower, v); upper = b2Max(upper, v); } b2Vec2 r(m_radius, m_radius); aabb->lowerBound = lower - r; aabb->upperBound = upper + r; } void b2PolygonShape::ComputeMass(b2MassData* massData, float32 density) const { // Polygon mass, centroid, and inertia. // Let rho be the polygon density in mass per unit area. // Then: // mass = rho * int(dA) // centroid.x = (1/mass) * rho * int(x * dA) // centroid.y = (1/mass) * rho * int(y * dA) // I = rho * int((x*x + y*y) * dA) // // We can compute these integrals by summing all the integrals // for each triangle of the polygon. To evaluate the integral // for a single triangle, we make a change of variables to // the (u,v) coordinates of the triangle: // x = x0 + e1x * u + e2x * v // y = y0 + e1y * u + e2y * v // where 0 <= u && 0 <= v && u + v <= 1. // // We integrate u from [0,1-v] and then v from [0,1]. // We also need to use the Jacobian of the transformation: // D = cross(e1, e2) // // Simplification: triangle centroid = (1/3) * (p1 + p2 + p3) // // The rest of the derivation is handled by computer algebra. b2Assert(m_count >= 3); b2Vec2 center; center.Set(0.0f, 0.0f); float32 area = 0.0f; float32 I = 0.0f; // s is the reference point for forming triangles. // It's location doesn't change the result (except for rounding error). b2Vec2 s(0.0f, 0.0f); // This code would put the reference point inside the polygon. for (int32 i = 0; i < m_count; ++i) { s += m_vertices[i]; } s *= 1.0f / m_count; const float32 k_inv3 = 1.0f / 3.0f; for (int32 i = 0; i < m_count; ++i) { // Triangle vertices. b2Vec2 e1 = m_vertices[i] - s; b2Vec2 e2 = i + 1 < m_count ? m_vertices[i+1] - s : m_vertices[0] - s; float32 D = b2Cross(e1, e2); float32 triangleArea = 0.5f * D; area += triangleArea; // Area weighted centroid center += triangleArea * k_inv3 * (e1 + e2); float32 ex1 = e1.x, ey1 = e1.y; float32 ex2 = e2.x, ey2 = e2.y; float32 intx2 = ex1*ex1 + ex2*ex1 + ex2*ex2; float32 inty2 = ey1*ey1 + ey2*ey1 + ey2*ey2; I += (0.25f * k_inv3 * D) * (intx2 + inty2); } // Total mass massData->mass = density * area; // Center of mass b2Assert(area > b2_epsilon); center *= 1.0f / area; massData->center = center + s; // Inertia tensor relative to the local origin (point s). massData->I = density * I; // Shift to center of mass then to original body origin. massData->I += massData->mass * (b2Dot(massData->center, massData->center) - b2Dot(center, center)); } bool b2PolygonShape::Validate() const { for (int32 i = 0; i < m_count; ++i) { int32 i1 = i; int32 i2 = i < m_count - 1 ? i1 + 1 : 0; b2Vec2 p = m_vertices[i1]; b2Vec2 e = m_vertices[i2] - p; for (int32 j = 0; j < m_count; ++j) { if (j == i1 || j == i2) { continue; } b2Vec2 v = m_vertices[j] - p; float32 c = b2Cross(e, v); if (c < 0.0f) { return false; } } } return true; } love-0.9.1/src/libraries/Box2D/Collision/Shapes/b2EdgeShape.h0000755000000000000000000000445512316602166023563 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_EDGE_SHAPE_H #define B2_EDGE_SHAPE_H #include /// A line segment (edge) shape. These can be connected in chains or loops /// to other edge shapes. The connectivity information is used to ensure /// correct contact normals. class b2EdgeShape : public b2Shape { public: b2EdgeShape(); /// Set this as an isolated edge. void Set(const b2Vec2& v1, const b2Vec2& v2); /// Implement b2Shape. b2Shape* Clone(b2BlockAllocator* allocator) const; /// @see b2Shape::GetChildCount int32 GetChildCount() const; /// @see b2Shape::TestPoint bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; /// Implement b2Shape. bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform, int32 childIndex) const; /// @see b2Shape::ComputeAABB void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const; /// @see b2Shape::ComputeMass void ComputeMass(b2MassData* massData, float32 density) const; /// These are the edge vertices b2Vec2 m_vertex1, m_vertex2; /// Optional adjacent vertices. These are used for smooth collision. b2Vec2 m_vertex0, m_vertex3; bool m_hasVertex0, m_hasVertex3; }; inline b2EdgeShape::b2EdgeShape() { m_type = e_edge; m_radius = b2_polygonRadius; m_vertex0.x = 0.0f; m_vertex0.y = 0.0f; m_vertex3.x = 0.0f; m_vertex3.y = 0.0f; m_hasVertex0 = false; m_hasVertex3 = false; } #endif love-0.9.1/src/libraries/Box2D/Collision/Shapes/b2Shape.h0000755000000000000000000000665112316602166022776 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_SHAPE_H #define B2_SHAPE_H #include #include #include /// This holds the mass data computed for a shape. struct b2MassData { /// The mass of the shape, usually in kilograms. float32 mass; /// The position of the shape's centroid relative to the shape's origin. b2Vec2 center; /// The rotational inertia of the shape about the local origin. float32 I; }; /// A shape is used for collision detection. You can create a shape however you like. /// Shapes used for simulation in b2World are created automatically when a b2Fixture /// is created. Shapes may encapsulate a one or more child shapes. class b2Shape { public: enum Type { e_circle = 0, e_edge = 1, e_polygon = 2, e_chain = 3, e_typeCount = 4 }; virtual ~b2Shape() {} /// Clone the concrete shape using the provided allocator. virtual b2Shape* Clone(b2BlockAllocator* allocator) const = 0; /// Get the type of this shape. You can use this to down cast to the concrete shape. /// @return the shape type. Type GetType() const; /// Get the number of child primitives. virtual int32 GetChildCount() const = 0; /// Test a point for containment in this shape. This only works for convex shapes. /// @param xf the shape world transform. /// @param p a point in world coordinates. virtual bool TestPoint(const b2Transform& xf, const b2Vec2& p) const = 0; /// Cast a ray against a child shape. /// @param output the ray-cast results. /// @param input the ray-cast input parameters. /// @param transform the transform to be applied to the shape. /// @param childIndex the child shape index virtual bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform, int32 childIndex) const = 0; /// Given a transform, compute the associated axis aligned bounding box for a child shape. /// @param aabb returns the axis aligned box. /// @param xf the world transform of the shape. /// @param childIndex the child shape virtual void ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const = 0; /// Compute the mass properties of this shape using its dimensions and density. /// The inertia tensor is computed about the local origin. /// @param massData returns the mass data for this shape. /// @param density the density in kilograms per meter squared. virtual void ComputeMass(b2MassData* massData, float32 density) const = 0; Type m_type; float32 m_radius; }; inline b2Shape::Type b2Shape::GetType() const { return m_type; } #endif love-0.9.1/src/libraries/Box2D/Collision/Shapes/b2EdgeShape.cpp0000755000000000000000000000637312316602166024117 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include void b2EdgeShape::Set(const b2Vec2& v1, const b2Vec2& v2) { m_vertex1 = v1; m_vertex2 = v2; m_hasVertex0 = false; m_hasVertex3 = false; } b2Shape* b2EdgeShape::Clone(b2BlockAllocator* allocator) const { void* mem = allocator->Allocate(sizeof(b2EdgeShape)); b2EdgeShape* clone = new (mem) b2EdgeShape; *clone = *this; return clone; } int32 b2EdgeShape::GetChildCount() const { return 1; } bool b2EdgeShape::TestPoint(const b2Transform& xf, const b2Vec2& p) const { B2_NOT_USED(xf); B2_NOT_USED(p); return false; } // p = p1 + t * d // v = v1 + s * e // p1 + t * d = v1 + s * e // s * e - t * d = p1 - v1 bool b2EdgeShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& xf, int32 childIndex) const { B2_NOT_USED(childIndex); // Put the ray into the edge's frame of reference. b2Vec2 p1 = b2MulT(xf.q, input.p1 - xf.p); b2Vec2 p2 = b2MulT(xf.q, input.p2 - xf.p); b2Vec2 d = p2 - p1; b2Vec2 v1 = m_vertex1; b2Vec2 v2 = m_vertex2; b2Vec2 e = v2 - v1; b2Vec2 normal(e.y, -e.x); normal.Normalize(); // q = p1 + t * d // dot(normal, q - v1) = 0 // dot(normal, p1 - v1) + t * dot(normal, d) = 0 float32 numerator = b2Dot(normal, v1 - p1); float32 denominator = b2Dot(normal, d); if (denominator == 0.0f) { return false; } float32 t = numerator / denominator; if (t < 0.0f || input.maxFraction < t) { return false; } b2Vec2 q = p1 + t * d; // q = v1 + s * r // s = dot(q - v1, r) / dot(r, r) b2Vec2 r = v2 - v1; float32 rr = b2Dot(r, r); if (rr == 0.0f) { return false; } float32 s = b2Dot(q - v1, r) / rr; if (s < 0.0f || 1.0f < s) { return false; } output->fraction = t; if (numerator > 0.0f) { output->normal = -b2Mul(xf.q, normal); } else { output->normal = b2Mul(xf.q, normal); } return true; } void b2EdgeShape::ComputeAABB(b2AABB* aabb, const b2Transform& xf, int32 childIndex) const { B2_NOT_USED(childIndex); b2Vec2 v1 = b2Mul(xf, m_vertex1); b2Vec2 v2 = b2Mul(xf, m_vertex2); b2Vec2 lower = b2Min(v1, v2); b2Vec2 upper = b2Max(v1, v2); b2Vec2 r(m_radius, m_radius); aabb->lowerBound = lower - r; aabb->upperBound = upper + r; } void b2EdgeShape::ComputeMass(b2MassData* massData, float32 density) const { B2_NOT_USED(density); massData->mass = 0.0f; massData->center = 0.5f * (m_vertex1 + m_vertex2); massData->I = 0.0f; } love-0.9.1/src/libraries/Box2D/Collision/Shapes/b2ChainShape.h0000755000000000000000000000654012316602166023736 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_CHAIN_SHAPE_H #define B2_CHAIN_SHAPE_H #include class b2EdgeShape; /// A chain shape is a free form sequence of line segments. /// The chain has two-sided collision, so you can use inside and outside collision. /// Therefore, you may use any winding order. /// Since there may be many vertices, they are allocated using b2Alloc. /// Connectivity information is used to create smooth collisions. /// WARNING: The chain will not collide properly if there are self-intersections. class b2ChainShape : public b2Shape { public: b2ChainShape(); /// The destructor frees the vertices using b2Free. ~b2ChainShape(); /// Create a loop. This automatically adjusts connectivity. /// @param vertices an array of vertices, these are copied /// @param count the vertex count void CreateLoop(const b2Vec2* vertices, int32 count); /// Create a chain with isolated end vertices. /// @param vertices an array of vertices, these are copied /// @param count the vertex count void CreateChain(const b2Vec2* vertices, int32 count); /// Establish connectivity to a vertex that precedes the first vertex. /// Don't call this for loops. void SetPrevVertex(const b2Vec2& prevVertex); /// Establish connectivity to a vertex that follows the last vertex. /// Don't call this for loops. void SetNextVertex(const b2Vec2& nextVertex); /// Implement b2Shape. Vertices are cloned using b2Alloc. b2Shape* Clone(b2BlockAllocator* allocator) const; /// @see b2Shape::GetChildCount int32 GetChildCount() const; /// Get a child edge. void GetChildEdge(b2EdgeShape* edge, int32 index) const; /// This always return false. /// @see b2Shape::TestPoint bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; /// Implement b2Shape. bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform, int32 childIndex) const; /// @see b2Shape::ComputeAABB void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const; /// Chains have zero mass. /// @see b2Shape::ComputeMass void ComputeMass(b2MassData* massData, float32 density) const; /// The vertices. Owned by this class. b2Vec2* m_vertices; /// The vertex count. int32 m_count; b2Vec2 m_prevVertex, m_nextVertex; bool m_hasPrevVertex, m_hasNextVertex; }; inline b2ChainShape::b2ChainShape() { m_type = e_chain; m_radius = b2_polygonRadius; m_vertices = NULL; m_count = 0; m_hasPrevVertex = false; m_hasNextVertex = false; } #endif love-0.9.1/src/libraries/Box2D/Collision/Shapes/b2PolygonShape.h0000755000000000000000000000663312316602166024346 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_POLYGON_SHAPE_H #define B2_POLYGON_SHAPE_H #include /// A convex polygon. It is assumed that the interior of the polygon is to /// the left of each edge. /// Polygons have a maximum number of vertices equal to b2_maxPolygonVertices. /// In most cases you should not need many vertices for a convex polygon. class b2PolygonShape : public b2Shape { public: b2PolygonShape(); /// Implement b2Shape. b2Shape* Clone(b2BlockAllocator* allocator) const; /// @see b2Shape::GetChildCount int32 GetChildCount() const; /// Create a convex hull from the given array of local points. /// The count must be in the range [3, b2_maxPolygonVertices]. /// @warning the points may be re-ordered, even if they form a convex polygon /// @warning collinear points are handled but not removed. Collinear points /// may lead to poor stacking behavior. void Set(const b2Vec2* points, int32 count); /// Build vertices to represent an axis-aligned box centered on the local origin. /// @param hx the half-width. /// @param hy the half-height. void SetAsBox(float32 hx, float32 hy); /// Build vertices to represent an oriented box. /// @param hx the half-width. /// @param hy the half-height. /// @param center the center of the box in local coordinates. /// @param angle the rotation of the box in local coordinates. void SetAsBox(float32 hx, float32 hy, const b2Vec2& center, float32 angle); /// @see b2Shape::TestPoint bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; /// Implement b2Shape. bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform, int32 childIndex) const; /// @see b2Shape::ComputeAABB void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const; /// @see b2Shape::ComputeMass void ComputeMass(b2MassData* massData, float32 density) const; /// Get the vertex count. int32 GetVertexCount() const { return m_count; } /// Get a vertex by index. const b2Vec2& GetVertex(int32 index) const; /// Validate convexity. This is a very time consuming operation. /// @returns true if valid bool Validate() const; b2Vec2 m_centroid; b2Vec2 m_vertices[b2_maxPolygonVertices]; b2Vec2 m_normals[b2_maxPolygonVertices]; int32 m_count; }; inline b2PolygonShape::b2PolygonShape() { m_type = e_polygon; m_radius = b2_polygonRadius; m_count = 0; m_centroid.SetZero(); } inline const b2Vec2& b2PolygonShape::GetVertex(int32 index) const { b2Assert(0 <= index && index < m_count); return m_vertices[index]; } #endif love-0.9.1/src/libraries/Box2D/Collision/Shapes/b2CircleShape.cpp0000755000000000000000000000576212316602166024455 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include b2Shape* b2CircleShape::Clone(b2BlockAllocator* allocator) const { void* mem = allocator->Allocate(sizeof(b2CircleShape)); b2CircleShape* clone = new (mem) b2CircleShape; *clone = *this; return clone; } int32 b2CircleShape::GetChildCount() const { return 1; } bool b2CircleShape::TestPoint(const b2Transform& transform, const b2Vec2& p) const { b2Vec2 center = transform.p + b2Mul(transform.q, m_p); b2Vec2 d = p - center; return b2Dot(d, d) <= m_radius * m_radius; } // Collision Detection in Interactive 3D Environments by Gino van den Bergen // From Section 3.1.2 // x = s + a * r // norm(x) = radius bool b2CircleShape::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, const b2Transform& transform, int32 childIndex) const { B2_NOT_USED(childIndex); b2Vec2 position = transform.p + b2Mul(transform.q, m_p); b2Vec2 s = input.p1 - position; float32 b = b2Dot(s, s) - m_radius * m_radius; // Solve quadratic equation. b2Vec2 r = input.p2 - input.p1; float32 c = b2Dot(s, r); float32 rr = b2Dot(r, r); float32 sigma = c * c - rr * b; // Check for negative discriminant and short segment. if (sigma < 0.0f || rr < b2_epsilon) { return false; } // Find the point of intersection of the line with the circle. float32 a = -(c + b2Sqrt(sigma)); // Is the intersection point on the segment? if (0.0f <= a && a <= input.maxFraction * rr) { a /= rr; output->fraction = a; output->normal = s + a * r; output->normal.Normalize(); return true; } return false; } void b2CircleShape::ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const { B2_NOT_USED(childIndex); b2Vec2 p = transform.p + b2Mul(transform.q, m_p); aabb->lowerBound.Set(p.x - m_radius, p.y - m_radius); aabb->upperBound.Set(p.x + m_radius, p.y + m_radius); } void b2CircleShape::ComputeMass(b2MassData* massData, float32 density) const { massData->mass = density * b2_pi * m_radius * m_radius; massData->center = m_p; // inertia about the local origin massData->I = massData->mass * (0.5f * m_radius * m_radius + b2Dot(m_p, m_p)); } love-0.9.1/src/libraries/Box2D/Common/0000755000000000000000000000000012316602463017400 5ustar00rootroot00000000000000love-0.9.1/src/libraries/Box2D/Common/b2GrowableStack.h0000755000000000000000000000361712316602166022537 0ustar00rootroot00000000000000/* * Copyright (c) 2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_GROWABLE_STACK_H #define B2_GROWABLE_STACK_H #include #include /// This is a growable LIFO stack with an initial capacity of N. /// If the stack size exceeds the initial capacity, the heap is used /// to increase the size of the stack. template class b2GrowableStack { public: b2GrowableStack() { m_stack = m_array; m_count = 0; m_capacity = N; } ~b2GrowableStack() { if (m_stack != m_array) { b2Free(m_stack); m_stack = NULL; } } void Push(const T& element) { if (m_count == m_capacity) { T* old = m_stack; m_capacity *= 2; m_stack = (T*)b2Alloc(m_capacity * sizeof(T)); memcpy(m_stack, old, m_count * sizeof(T)); if (old != m_array) { b2Free(old); } } m_stack[m_count] = element; ++m_count; } T Pop() { b2Assert(m_count > 0); --m_count; return m_stack[m_count]; } int32 GetCount() { return m_count; } private: T* m_stack; T m_array[N]; int32 m_count; int32 m_capacity; }; #endif love-0.9.1/src/libraries/Box2D/Common/b2StackAllocator.cpp0000755000000000000000000000400112316602166023234 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include b2StackAllocator::b2StackAllocator() { m_index = 0; m_allocation = 0; m_maxAllocation = 0; m_entryCount = 0; } b2StackAllocator::~b2StackAllocator() { b2Assert(m_index == 0); b2Assert(m_entryCount == 0); } void* b2StackAllocator::Allocate(int32 size) { b2Assert(m_entryCount < b2_maxStackEntries); b2StackEntry* entry = m_entries + m_entryCount; entry->size = size; if (m_index + size > b2_stackSize) { entry->data = (char*)b2Alloc(size); entry->usedMalloc = true; } else { entry->data = m_data + m_index; entry->usedMalloc = false; m_index += size; } m_allocation += size; m_maxAllocation = b2Max(m_maxAllocation, m_allocation); ++m_entryCount; return entry->data; } void b2StackAllocator::Free(void* p) { b2Assert(m_entryCount > 0); b2StackEntry* entry = m_entries + m_entryCount - 1; b2Assert(p == entry->data); if (entry->usedMalloc) { b2Free(p); } else { m_index -= entry->size; } m_allocation -= entry->size; --m_entryCount; p = NULL; } int32 b2StackAllocator::GetMaxAllocation() const { return m_maxAllocation; } love-0.9.1/src/libraries/Box2D/Common/b2StackAllocator.h0000755000000000000000000000321012316602166022702 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_STACK_ALLOCATOR_H #define B2_STACK_ALLOCATOR_H #include const int32 b2_stackSize = 100 * 1024; // 100k const int32 b2_maxStackEntries = 32; struct b2StackEntry { char* data; int32 size; bool usedMalloc; }; // This is a stack allocator used for fast per step allocations. // You must nest allocate/free pairs. The code will assert // if you try to interleave multiple allocate/free pairs. class b2StackAllocator { public: b2StackAllocator(); ~b2StackAllocator(); void* Allocate(int32 size); void Free(void* p); int32 GetMaxAllocation() const; private: char m_data[b2_stackSize]; int32 m_index; int32 m_allocation; int32 m_maxAllocation; b2StackEntry m_entries[b2_maxStackEntries]; int32 m_entryCount; }; #endif love-0.9.1/src/libraries/Box2D/Common/b2Draw.cpp0000755000000000000000000000230112316602166021224 0ustar00rootroot00000000000000/* * Copyright (c) 2011 Erin Catto http://box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include b2Draw::b2Draw() { m_drawFlags = 0; } void b2Draw::SetFlags(uint32 flags) { m_drawFlags = flags; } uint32 b2Draw::GetFlags() const { return m_drawFlags; } void b2Draw::AppendFlags(uint32 flags) { m_drawFlags |= flags; } void b2Draw::ClearFlags(uint32 flags) { m_drawFlags &= ~flags; } love-0.9.1/src/libraries/Box2D/Common/b2Timer.h0000755000000000000000000000265212316602166021065 0ustar00rootroot00000000000000/* * Copyright (c) 2011 Erin Catto http://box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_TIMER_H #define B2_TIMER_H #include /// Timer for profiling. This has platform specific code and may /// not work on every platform. class b2Timer { public: /// Constructor b2Timer(); /// Reset the timer. void Reset(); /// Get the time since construction or the last reset. float32 GetMilliseconds() const; private: #if defined(_WIN32) float64 m_start; static float64 s_invFrequency; #elif defined(__linux__) || defined (__APPLE__) unsigned long m_start_sec; unsigned long m_start_usec; #endif }; #endif love-0.9.1/src/libraries/Box2D/Common/b2Settings.h0000755000000000000000000001235512316602166021606 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_SETTINGS_H #define B2_SETTINGS_H #include #include #include void loveAssert(bool test, const char *teststr); #define B2_NOT_USED(x) ((void)(x)) //#define b2Assert(A) assert(A) #define b2Assert(A) loveAssert((A), #A) typedef signed char int8; typedef signed short int16; typedef signed int int32; typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned int uint32; typedef float float32; typedef double float64; #define b2_maxFloat FLT_MAX #define b2_epsilon FLT_EPSILON #define b2_pi 3.14159265359f /// @file /// Global tuning constants based on meters-kilograms-seconds (MKS) units. /// // Collision /// The maximum number of contact points between two convex shapes. Do /// not change this value. #define b2_maxManifoldPoints 2 /// The maximum number of vertices on a convex polygon. You cannot increase /// this too much because b2BlockAllocator has a maximum object size. #define b2_maxPolygonVertices 8 /// This is used to fatten AABBs in the dynamic tree. This allows proxies /// to move by a small amount without triggering a tree adjustment. /// This is in meters. #define b2_aabbExtension 0.1f /// This is used to fatten AABBs in the dynamic tree. This is used to predict /// the future position based on the current displacement. /// This is a dimensionless multiplier. #define b2_aabbMultiplier 2.0f /// A small length used as a collision and constraint tolerance. Usually it is /// chosen to be numerically significant, but visually insignificant. #define b2_linearSlop 0.005f /// A small angle used as a collision and constraint tolerance. Usually it is /// chosen to be numerically significant, but visually insignificant. #define b2_angularSlop (2.0f / 180.0f * b2_pi) /// The radius of the polygon/edge shape skin. This should not be modified. Making /// this smaller means polygons will have an insufficient buffer for continuous collision. /// Making it larger may create artifacts for vertex collision. #define b2_polygonRadius (2.0f * b2_linearSlop) /// Maximum number of sub-steps per contact in continuous physics simulation. #define b2_maxSubSteps 8 // Dynamics /// Maximum number of contacts to be handled to solve a TOI impact. #define b2_maxTOIContacts 32 /// A velocity threshold for elastic collisions. Any collision with a relative linear /// velocity below this threshold will be treated as inelastic. #define b2_velocityThreshold 1.0f /// The maximum linear position correction used when solving constraints. This helps to /// prevent overshoot. #define b2_maxLinearCorrection 0.2f /// The maximum angular position correction used when solving constraints. This helps to /// prevent overshoot. #define b2_maxAngularCorrection (8.0f / 180.0f * b2_pi) /// The maximum linear velocity of a body. This limit is very large and is used /// to prevent numerical problems. You shouldn't need to adjust this. #define b2_maxTranslation 2.0f #define b2_maxTranslationSquared (b2_maxTranslation * b2_maxTranslation) /// The maximum angular velocity of a body. This limit is very large and is used /// to prevent numerical problems. You shouldn't need to adjust this. #define b2_maxRotation (0.5f * b2_pi) #define b2_maxRotationSquared (b2_maxRotation * b2_maxRotation) /// This scale factor controls how fast overlap is resolved. Ideally this would be 1 so /// that overlap is removed in one time step. However using values close to 1 often lead /// to overshoot. #define b2_baumgarte 0.2f #define b2_toiBaugarte 0.75f // Sleep /// The time that a body must be still before it will go to sleep. #define b2_timeToSleep 0.5f /// A body cannot sleep if its linear velocity is above this tolerance. #define b2_linearSleepTolerance 0.01f /// A body cannot sleep if its angular velocity is above this tolerance. #define b2_angularSleepTolerance (2.0f / 180.0f * b2_pi) // Memory Allocation /// Implement this function to use your own memory allocator. void* b2Alloc(int32 size); /// If you implement b2Alloc, you should also implement this function. void b2Free(void* mem); /// Logging function. void b2Log(const char* string, ...); /// Version numbering scheme. /// See http://en.wikipedia.org/wiki/Software_versioning struct b2Version { int32 major; ///< significant changes int32 minor; ///< incremental changes int32 revision; ///< bug fixes }; /// Current version. extern b2Version b2_version; #endif love-0.9.1/src/libraries/Box2D/Common/b2BlockAllocator.cpp0000755000000000000000000001137512316602166023235 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include int32 b2BlockAllocator::s_blockSizes[b2_blockSizes] = { 16, // 0 32, // 1 64, // 2 96, // 3 128, // 4 160, // 5 192, // 6 224, // 7 256, // 8 320, // 9 384, // 10 448, // 11 512, // 12 640, // 13 }; uint8 b2BlockAllocator::s_blockSizeLookup[b2_maxBlockSize + 1]; bool b2BlockAllocator::s_blockSizeLookupInitialized; struct b2Chunk { int32 blockSize; b2Block* blocks; }; struct b2Block { b2Block* next; }; b2BlockAllocator::b2BlockAllocator() { b2Assert(b2_blockSizes < UCHAR_MAX); m_chunkSpace = b2_chunkArrayIncrement; m_chunkCount = 0; m_chunks = (b2Chunk*)b2Alloc(m_chunkSpace * sizeof(b2Chunk)); memset(m_chunks, 0, m_chunkSpace * sizeof(b2Chunk)); memset(m_freeLists, 0, sizeof(m_freeLists)); if (s_blockSizeLookupInitialized == false) { int32 j = 0; for (int32 i = 1; i <= b2_maxBlockSize; ++i) { b2Assert(j < b2_blockSizes); if (i <= s_blockSizes[j]) { s_blockSizeLookup[i] = (uint8)j; } else { ++j; s_blockSizeLookup[i] = (uint8)j; } } s_blockSizeLookupInitialized = true; } } b2BlockAllocator::~b2BlockAllocator() { for (int32 i = 0; i < m_chunkCount; ++i) { b2Free(m_chunks[i].blocks); } b2Free(m_chunks); } void* b2BlockAllocator::Allocate(int32 size) { if (size == 0) return NULL; b2Assert(0 < size); if (size > b2_maxBlockSize) { return b2Alloc(size); } int32 index = s_blockSizeLookup[size]; b2Assert(0 <= index && index < b2_blockSizes); if (m_freeLists[index]) { b2Block* block = m_freeLists[index]; m_freeLists[index] = block->next; return block; } else { if (m_chunkCount == m_chunkSpace) { b2Chunk* oldChunks = m_chunks; m_chunkSpace += b2_chunkArrayIncrement; m_chunks = (b2Chunk*)b2Alloc(m_chunkSpace * sizeof(b2Chunk)); memcpy(m_chunks, oldChunks, m_chunkCount * sizeof(b2Chunk)); memset(m_chunks + m_chunkCount, 0, b2_chunkArrayIncrement * sizeof(b2Chunk)); b2Free(oldChunks); } b2Chunk* chunk = m_chunks + m_chunkCount; chunk->blocks = (b2Block*)b2Alloc(b2_chunkSize); #if defined(_DEBUG) memset(chunk->blocks, 0xcd, b2_chunkSize); #endif int32 blockSize = s_blockSizes[index]; chunk->blockSize = blockSize; int32 blockCount = b2_chunkSize / blockSize; b2Assert(blockCount * blockSize <= b2_chunkSize); for (int32 i = 0; i < blockCount - 1; ++i) { b2Block* block = (b2Block*)((int8*)chunk->blocks + blockSize * i); b2Block* next = (b2Block*)((int8*)chunk->blocks + blockSize * (i + 1)); block->next = next; } b2Block* last = (b2Block*)((int8*)chunk->blocks + blockSize * (blockCount - 1)); last->next = NULL; m_freeLists[index] = chunk->blocks->next; ++m_chunkCount; return chunk->blocks; } } void b2BlockAllocator::Free(void* p, int32 size) { if (size == 0) { return; } b2Assert(0 < size); if (size > b2_maxBlockSize) { b2Free(p); return; } int32 index = s_blockSizeLookup[size]; b2Assert(0 <= index && index < b2_blockSizes); #ifdef _DEBUG // Verify the memory address and size is valid. int32 blockSize = s_blockSizes[index]; bool found = false; for (int32 i = 0; i < m_chunkCount; ++i) { b2Chunk* chunk = m_chunks + i; if (chunk->blockSize != blockSize) { b2Assert( (int8*)p + blockSize <= (int8*)chunk->blocks || (int8*)chunk->blocks + b2_chunkSize <= (int8*)p); } else { if ((int8*)chunk->blocks <= (int8*)p && (int8*)p + blockSize <= (int8*)chunk->blocks + b2_chunkSize) { found = true; } } } b2Assert(found); memset(p, 0xfd, blockSize); #endif b2Block* block = (b2Block*)p; block->next = m_freeLists[index]; m_freeLists[index] = block; } void b2BlockAllocator::Clear() { for (int32 i = 0; i < m_chunkCount; ++i) { b2Free(m_chunks[i].blocks); } m_chunkCount = 0; memset(m_chunks, 0, m_chunkSpace * sizeof(b2Chunk)); memset(m_freeLists, 0, sizeof(m_freeLists)); } love-0.9.1/src/libraries/Box2D/Common/b2Math.cpp0000755000000000000000000000524112316602166021226 0ustar00rootroot00000000000000/* * Copyright (c) 2007-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include const b2Vec2 b2Vec2_zero(0.0f, 0.0f); /// Solve A * x = b, where b is a column vector. This is more efficient /// than computing the inverse in one-shot cases. b2Vec3 b2Mat33::Solve33(const b2Vec3& b) const { float32 det = b2Dot(ex, b2Cross(ey, ez)); if (det != 0.0f) { det = 1.0f / det; } b2Vec3 x; x.x = det * b2Dot(b, b2Cross(ey, ez)); x.y = det * b2Dot(ex, b2Cross(b, ez)); x.z = det * b2Dot(ex, b2Cross(ey, b)); return x; } /// Solve A * x = b, where b is a column vector. This is more efficient /// than computing the inverse in one-shot cases. b2Vec2 b2Mat33::Solve22(const b2Vec2& b) const { float32 a11 = ex.x, a12 = ey.x, a21 = ex.y, a22 = ey.y; float32 det = a11 * a22 - a12 * a21; if (det != 0.0f) { det = 1.0f / det; } b2Vec2 x; x.x = det * (a22 * b.x - a12 * b.y); x.y = det * (a11 * b.y - a21 * b.x); return x; } /// void b2Mat33::GetInverse22(b2Mat33* M) const { float32 a = ex.x, b = ey.x, c = ex.y, d = ey.y; float32 det = a * d - b * c; if (det != 0.0f) { det = 1.0f / det; } M->ex.x = det * d; M->ey.x = -det * b; M->ex.z = 0.0f; M->ex.y = -det * c; M->ey.y = det * a; M->ey.z = 0.0f; M->ez.x = 0.0f; M->ez.y = 0.0f; M->ez.z = 0.0f; } /// Returns the zero matrix if singular. void b2Mat33::GetSymInverse33(b2Mat33* M) const { float32 det = b2Dot(ex, b2Cross(ey, ez)); if (det != 0.0f) { det = 1.0f / det; } float32 a11 = ex.x, a12 = ey.x, a13 = ez.x; float32 a22 = ey.y, a23 = ez.y; float32 a33 = ez.z; M->ex.x = det * (a22 * a33 - a23 * a23); M->ex.y = det * (a13 * a23 - a12 * a33); M->ex.z = det * (a12 * a23 - a13 * a22); M->ey.x = M->ex.y; M->ey.y = det * (a11 * a33 - a13 * a13); M->ey.z = det * (a13 * a12 - a11 * a23); M->ez.x = M->ex.z; M->ez.y = M->ey.z; M->ez.z = det * (a11 * a22 - a12 * a12); } love-0.9.1/src/libraries/Box2D/Common/b2Draw.h0000755000000000000000000000535212316602166020702 0ustar00rootroot00000000000000/* * Copyright (c) 2011 Erin Catto http://box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_DRAW_H #define B2_DRAW_H #include /// Color for debug drawing. Each value has the range [0,1]. struct b2Color { b2Color() {} b2Color(float32 r, float32 g, float32 b) : r(r), g(g), b(b) {} void Set(float32 ri, float32 gi, float32 bi) { r = ri; g = gi; b = bi; } float32 r, g, b; }; /// Implement and register this class with a b2World to provide debug drawing of physics /// entities in your game. class b2Draw { public: b2Draw(); virtual ~b2Draw() {} enum { e_shapeBit = 0x0001, ///< draw shapes e_jointBit = 0x0002, ///< draw joint connections e_aabbBit = 0x0004, ///< draw axis aligned bounding boxes e_pairBit = 0x0008, ///< draw broad-phase pairs e_centerOfMassBit = 0x0010 ///< draw center of mass frame }; /// Set the drawing flags. void SetFlags(uint32 flags); /// Get the drawing flags. uint32 GetFlags() const; /// Append flags to the current flags. void AppendFlags(uint32 flags); /// Clear flags from the current flags. void ClearFlags(uint32 flags); /// Draw a closed polygon provided in CCW order. virtual void DrawPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color) = 0; /// Draw a solid closed polygon provided in CCW order. virtual void DrawSolidPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color) = 0; /// Draw a circle. virtual void DrawCircle(const b2Vec2& center, float32 radius, const b2Color& color) = 0; /// Draw a solid circle. virtual void DrawSolidCircle(const b2Vec2& center, float32 radius, const b2Vec2& axis, const b2Color& color) = 0; /// Draw a line segment. virtual void DrawSegment(const b2Vec2& p1, const b2Vec2& p2, const b2Color& color) = 0; /// Draw a transform. Choose your own length scale. /// @param xf a transform. virtual void DrawTransform(const b2Transform& xf) = 0; protected: uint32 m_drawFlags; }; #endif love-0.9.1/src/libraries/Box2D/Common/b2Math.h0000755000000000000000000004006012316602166020671 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_MATH_H #define B2_MATH_H #include #include #include /// This function is used to ensure that a floating point number is not a NaN or infinity. inline bool b2IsValid(float32 x) { int32 ix = *reinterpret_cast(&x); return (ix & 0x7f800000) != 0x7f800000; } /// This is a approximate yet fast inverse square-root. inline float32 b2InvSqrt(float32 x) { union { float32 x; int32 i; } convert; convert.x = x; float32 xhalf = 0.5f * x; convert.i = 0x5f3759df - (convert.i >> 1); x = convert.x; x = x * (1.5f - xhalf * x * x); return x; } #define b2Sqrt(x) sqrtf(x) #define b2Atan2(y, x) atan2f(y, x) /// A 2D column vector. struct b2Vec2 { /// Default constructor does nothing (for performance). b2Vec2() {} /// Construct using coordinates. b2Vec2(float32 x, float32 y) : x(x), y(y) {} /// Set this vector to all zeros. void SetZero() { x = 0.0f; y = 0.0f; } /// Set this vector to some specified coordinates. void Set(float32 x_, float32 y_) { x = x_; y = y_; } /// Negate this vector. b2Vec2 operator -() const { b2Vec2 v; v.Set(-x, -y); return v; } /// Read from and indexed element. float32 operator () (int32 i) const { return (&x)[i]; } /// Write to an indexed element. float32& operator () (int32 i) { return (&x)[i]; } /// Add a vector to this vector. void operator += (const b2Vec2& v) { x += v.x; y += v.y; } /// Subtract a vector from this vector. void operator -= (const b2Vec2& v) { x -= v.x; y -= v.y; } /// Multiply this vector by a scalar. void operator *= (float32 a) { x *= a; y *= a; } /// Get the length of this vector (the norm). float32 Length() const { return b2Sqrt(x * x + y * y); } /// Get the length squared. For performance, use this instead of /// b2Vec2::Length (if possible). float32 LengthSquared() const { return x * x + y * y; } /// Convert this vector into a unit vector. Returns the length. float32 Normalize() { float32 length = Length(); if (length < b2_epsilon) { return 0.0f; } float32 invLength = 1.0f / length; x *= invLength; y *= invLength; return length; } /// Does this vector contain finite coordinates? bool IsValid() const { return b2IsValid(x) && b2IsValid(y); } /// Get the skew vector such that dot(skew_vec, other) == cross(vec, other) b2Vec2 Skew() const { return b2Vec2(-y, x); } float32 x, y; }; /// A 2D column vector with 3 elements. struct b2Vec3 { /// Default constructor does nothing (for performance). b2Vec3() {} /// Construct using coordinates. b2Vec3(float32 x, float32 y, float32 z) : x(x), y(y), z(z) {} /// Set this vector to all zeros. void SetZero() { x = 0.0f; y = 0.0f; z = 0.0f; } /// Set this vector to some specified coordinates. void Set(float32 x_, float32 y_, float32 z_) { x = x_; y = y_; z = z_; } /// Negate this vector. b2Vec3 operator -() const { b2Vec3 v; v.Set(-x, -y, -z); return v; } /// Add a vector to this vector. void operator += (const b2Vec3& v) { x += v.x; y += v.y; z += v.z; } /// Subtract a vector from this vector. void operator -= (const b2Vec3& v) { x -= v.x; y -= v.y; z -= v.z; } /// Multiply this vector by a scalar. void operator *= (float32 s) { x *= s; y *= s; z *= s; } float32 x, y, z; }; /// A 2-by-2 matrix. Stored in column-major order. struct b2Mat22 { /// The default constructor does nothing (for performance). b2Mat22() {} /// Construct this matrix using columns. b2Mat22(const b2Vec2& c1, const b2Vec2& c2) { ex = c1; ey = c2; } /// Construct this matrix using scalars. b2Mat22(float32 a11, float32 a12, float32 a21, float32 a22) { ex.x = a11; ex.y = a21; ey.x = a12; ey.y = a22; } /// Initialize this matrix using columns. void Set(const b2Vec2& c1, const b2Vec2& c2) { ex = c1; ey = c2; } /// Set this to the identity matrix. void SetIdentity() { ex.x = 1.0f; ey.x = 0.0f; ex.y = 0.0f; ey.y = 1.0f; } /// Set this matrix to all zeros. void SetZero() { ex.x = 0.0f; ey.x = 0.0f; ex.y = 0.0f; ey.y = 0.0f; } b2Mat22 GetInverse() const { float32 a = ex.x, b = ey.x, c = ex.y, d = ey.y; b2Mat22 B; float32 det = a * d - b * c; if (det != 0.0f) { det = 1.0f / det; } B.ex.x = det * d; B.ey.x = -det * b; B.ex.y = -det * c; B.ey.y = det * a; return B; } /// Solve A * x = b, where b is a column vector. This is more efficient /// than computing the inverse in one-shot cases. b2Vec2 Solve(const b2Vec2& b) const { float32 a11 = ex.x, a12 = ey.x, a21 = ex.y, a22 = ey.y; float32 det = a11 * a22 - a12 * a21; if (det != 0.0f) { det = 1.0f / det; } b2Vec2 x; x.x = det * (a22 * b.x - a12 * b.y); x.y = det * (a11 * b.y - a21 * b.x); return x; } b2Vec2 ex, ey; }; /// A 3-by-3 matrix. Stored in column-major order. struct b2Mat33 { /// The default constructor does nothing (for performance). b2Mat33() {} /// Construct this matrix using columns. b2Mat33(const b2Vec3& c1, const b2Vec3& c2, const b2Vec3& c3) { ex = c1; ey = c2; ez = c3; } /// Set this matrix to all zeros. void SetZero() { ex.SetZero(); ey.SetZero(); ez.SetZero(); } /// Solve A * x = b, where b is a column vector. This is more efficient /// than computing the inverse in one-shot cases. b2Vec3 Solve33(const b2Vec3& b) const; /// Solve A * x = b, where b is a column vector. This is more efficient /// than computing the inverse in one-shot cases. Solve only the upper /// 2-by-2 matrix equation. b2Vec2 Solve22(const b2Vec2& b) const; /// Get the inverse of this matrix as a 2-by-2. /// Returns the zero matrix if singular. void GetInverse22(b2Mat33* M) const; /// Get the symmetric inverse of this matrix as a 3-by-3. /// Returns the zero matrix if singular. void GetSymInverse33(b2Mat33* M) const; b2Vec3 ex, ey, ez; }; /// Rotation struct b2Rot { b2Rot() {} /// Initialize from an angle in radians explicit b2Rot(float32 angle) { /// TODO_ERIN optimize s = sinf(angle); c = cosf(angle); } /// Set using an angle in radians. void Set(float32 angle) { /// TODO_ERIN optimize s = sinf(angle); c = cosf(angle); } /// Set to the identity rotation void SetIdentity() { s = 0.0f; c = 1.0f; } /// Get the angle in radians float32 GetAngle() const { return b2Atan2(s, c); } /// Get the x-axis b2Vec2 GetXAxis() const { return b2Vec2(c, s); } /// Get the u-axis b2Vec2 GetYAxis() const { return b2Vec2(-s, c); } /// Sine and cosine float32 s, c; }; /// A transform contains translation and rotation. It is used to represent /// the position and orientation of rigid frames. struct b2Transform { /// The default constructor does nothing. b2Transform() {} /// Initialize using a position vector and a rotation. b2Transform(const b2Vec2& position, const b2Rot& rotation) : p(position), q(rotation) {} /// Set this to the identity transform. void SetIdentity() { p.SetZero(); q.SetIdentity(); } /// Set this based on the position and angle. void Set(const b2Vec2& position, float32 angle) { p = position; q.Set(angle); } b2Vec2 p; b2Rot q; }; /// This describes the motion of a body/shape for TOI computation. /// Shapes are defined with respect to the body origin, which may /// no coincide with the center of mass. However, to support dynamics /// we must interpolate the center of mass position. struct b2Sweep { /// Get the interpolated transform at a specific time. /// @param beta is a factor in [0,1], where 0 indicates alpha0. void GetTransform(b2Transform* xfb, float32 beta) const; /// Advance the sweep forward, yielding a new initial state. /// @param alpha the new initial time. void Advance(float32 alpha); /// Normalize the angles. void Normalize(); b2Vec2 localCenter; ///< local center of mass position b2Vec2 c0, c; ///< center world positions float32 a0, a; ///< world angles /// Fraction of the current time step in the range [0,1] /// c0 and a0 are the positions at alpha0. float32 alpha0; }; /// Useful constant extern const b2Vec2 b2Vec2_zero; /// Perform the dot product on two vectors. inline float32 b2Dot(const b2Vec2& a, const b2Vec2& b) { return a.x * b.x + a.y * b.y; } /// Perform the cross product on two vectors. In 2D this produces a scalar. inline float32 b2Cross(const b2Vec2& a, const b2Vec2& b) { return a.x * b.y - a.y * b.x; } /// Perform the cross product on a vector and a scalar. In 2D this produces /// a vector. inline b2Vec2 b2Cross(const b2Vec2& a, float32 s) { return b2Vec2(s * a.y, -s * a.x); } /// Perform the cross product on a scalar and a vector. In 2D this produces /// a vector. inline b2Vec2 b2Cross(float32 s, const b2Vec2& a) { return b2Vec2(-s * a.y, s * a.x); } /// Multiply a matrix times a vector. If a rotation matrix is provided, /// then this transforms the vector from one frame to another. inline b2Vec2 b2Mul(const b2Mat22& A, const b2Vec2& v) { return b2Vec2(A.ex.x * v.x + A.ey.x * v.y, A.ex.y * v.x + A.ey.y * v.y); } /// Multiply a matrix transpose times a vector. If a rotation matrix is provided, /// then this transforms the vector from one frame to another (inverse transform). inline b2Vec2 b2MulT(const b2Mat22& A, const b2Vec2& v) { return b2Vec2(b2Dot(v, A.ex), b2Dot(v, A.ey)); } /// Add two vectors component-wise. inline b2Vec2 operator + (const b2Vec2& a, const b2Vec2& b) { return b2Vec2(a.x + b.x, a.y + b.y); } /// Subtract two vectors component-wise. inline b2Vec2 operator - (const b2Vec2& a, const b2Vec2& b) { return b2Vec2(a.x - b.x, a.y - b.y); } inline b2Vec2 operator * (float32 s, const b2Vec2& a) { return b2Vec2(s * a.x, s * a.y); } inline bool operator == (const b2Vec2& a, const b2Vec2& b) { return a.x == b.x && a.y == b.y; } inline float32 b2Distance(const b2Vec2& a, const b2Vec2& b) { b2Vec2 c = a - b; return c.Length(); } inline float32 b2DistanceSquared(const b2Vec2& a, const b2Vec2& b) { b2Vec2 c = a - b; return b2Dot(c, c); } inline b2Vec3 operator * (float32 s, const b2Vec3& a) { return b2Vec3(s * a.x, s * a.y, s * a.z); } /// Add two vectors component-wise. inline b2Vec3 operator + (const b2Vec3& a, const b2Vec3& b) { return b2Vec3(a.x + b.x, a.y + b.y, a.z + b.z); } /// Subtract two vectors component-wise. inline b2Vec3 operator - (const b2Vec3& a, const b2Vec3& b) { return b2Vec3(a.x - b.x, a.y - b.y, a.z - b.z); } /// Perform the dot product on two vectors. inline float32 b2Dot(const b2Vec3& a, const b2Vec3& b) { return a.x * b.x + a.y * b.y + a.z * b.z; } /// Perform the cross product on two vectors. inline b2Vec3 b2Cross(const b2Vec3& a, const b2Vec3& b) { return b2Vec3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x); } inline b2Mat22 operator + (const b2Mat22& A, const b2Mat22& B) { return b2Mat22(A.ex + B.ex, A.ey + B.ey); } // A * B inline b2Mat22 b2Mul(const b2Mat22& A, const b2Mat22& B) { return b2Mat22(b2Mul(A, B.ex), b2Mul(A, B.ey)); } // A^T * B inline b2Mat22 b2MulT(const b2Mat22& A, const b2Mat22& B) { b2Vec2 c1(b2Dot(A.ex, B.ex), b2Dot(A.ey, B.ex)); b2Vec2 c2(b2Dot(A.ex, B.ey), b2Dot(A.ey, B.ey)); return b2Mat22(c1, c2); } /// Multiply a matrix times a vector. inline b2Vec3 b2Mul(const b2Mat33& A, const b2Vec3& v) { return v.x * A.ex + v.y * A.ey + v.z * A.ez; } /// Multiply a matrix times a vector. inline b2Vec2 b2Mul22(const b2Mat33& A, const b2Vec2& v) { return b2Vec2(A.ex.x * v.x + A.ey.x * v.y, A.ex.y * v.x + A.ey.y * v.y); } /// Multiply two rotations: q * r inline b2Rot b2Mul(const b2Rot& q, const b2Rot& r) { // [qc -qs] * [rc -rs] = [qc*rc-qs*rs -qc*rs-qs*rc] // [qs qc] [rs rc] [qs*rc+qc*rs -qs*rs+qc*rc] // s = qs * rc + qc * rs // c = qc * rc - qs * rs b2Rot qr; qr.s = q.s * r.c + q.c * r.s; qr.c = q.c * r.c - q.s * r.s; return qr; } /// Transpose multiply two rotations: qT * r inline b2Rot b2MulT(const b2Rot& q, const b2Rot& r) { // [ qc qs] * [rc -rs] = [qc*rc+qs*rs -qc*rs+qs*rc] // [-qs qc] [rs rc] [-qs*rc+qc*rs qs*rs+qc*rc] // s = qc * rs - qs * rc // c = qc * rc + qs * rs b2Rot qr; qr.s = q.c * r.s - q.s * r.c; qr.c = q.c * r.c + q.s * r.s; return qr; } /// Rotate a vector inline b2Vec2 b2Mul(const b2Rot& q, const b2Vec2& v) { return b2Vec2(q.c * v.x - q.s * v.y, q.s * v.x + q.c * v.y); } /// Inverse rotate a vector inline b2Vec2 b2MulT(const b2Rot& q, const b2Vec2& v) { return b2Vec2(q.c * v.x + q.s * v.y, -q.s * v.x + q.c * v.y); } inline b2Vec2 b2Mul(const b2Transform& T, const b2Vec2& v) { float32 x = (T.q.c * v.x - T.q.s * v.y) + T.p.x; float32 y = (T.q.s * v.x + T.q.c * v.y) + T.p.y; return b2Vec2(x, y); } inline b2Vec2 b2MulT(const b2Transform& T, const b2Vec2& v) { float32 px = v.x - T.p.x; float32 py = v.y - T.p.y; float32 x = (T.q.c * px + T.q.s * py); float32 y = (-T.q.s * px + T.q.c * py); return b2Vec2(x, y); } // v2 = A.q.Rot(B.q.Rot(v1) + B.p) + A.p // = (A.q * B.q).Rot(v1) + A.q.Rot(B.p) + A.p inline b2Transform b2Mul(const b2Transform& A, const b2Transform& B) { b2Transform C; C.q = b2Mul(A.q, B.q); C.p = b2Mul(A.q, B.p) + A.p; return C; } // v2 = A.q' * (B.q * v1 + B.p - A.p) // = A.q' * B.q * v1 + A.q' * (B.p - A.p) inline b2Transform b2MulT(const b2Transform& A, const b2Transform& B) { b2Transform C; C.q = b2MulT(A.q, B.q); C.p = b2MulT(A.q, B.p - A.p); return C; } template inline T b2Abs(T a) { return a > T(0) ? a : -a; } inline b2Vec2 b2Abs(const b2Vec2& a) { return b2Vec2(b2Abs(a.x), b2Abs(a.y)); } inline b2Mat22 b2Abs(const b2Mat22& A) { return b2Mat22(b2Abs(A.ex), b2Abs(A.ey)); } template inline T b2Min(T a, T b) { return a < b ? a : b; } inline b2Vec2 b2Min(const b2Vec2& a, const b2Vec2& b) { return b2Vec2(b2Min(a.x, b.x), b2Min(a.y, b.y)); } template inline T b2Max(T a, T b) { return a > b ? a : b; } inline b2Vec2 b2Max(const b2Vec2& a, const b2Vec2& b) { return b2Vec2(b2Max(a.x, b.x), b2Max(a.y, b.y)); } template inline T b2Clamp(T a, T low, T high) { return b2Max(low, b2Min(a, high)); } inline b2Vec2 b2Clamp(const b2Vec2& a, const b2Vec2& low, const b2Vec2& high) { return b2Max(low, b2Min(a, high)); } template inline void b2Swap(T& a, T& b) { T tmp = a; a = b; b = tmp; } /// "Next Largest Power of 2 /// Given a binary integer value x, the next largest power of 2 can be computed by a SWAR algorithm /// that recursively "folds" the upper bits into the lower bits. This process yields a bit vector with /// the same most significant 1 as x, but all 1's below it. Adding 1 to that value yields the next /// largest power of 2. For a 32-bit value:" inline uint32 b2NextPowerOfTwo(uint32 x) { x |= (x >> 1); x |= (x >> 2); x |= (x >> 4); x |= (x >> 8); x |= (x >> 16); return x + 1; } inline bool b2IsPowerOfTwo(uint32 x) { bool result = x > 0 && (x & (x - 1)) == 0; return result; } inline void b2Sweep::GetTransform(b2Transform* xf, float32 beta) const { xf->p = (1.0f - beta) * c0 + beta * c; float32 angle = (1.0f - beta) * a0 + beta * a; xf->q.Set(angle); // Shift to origin xf->p -= b2Mul(xf->q, localCenter); } inline void b2Sweep::Advance(float32 alpha) { b2Assert(alpha0 < 1.0f); float32 beta = (alpha - alpha0) / (1.0f - alpha0); c0 += beta * (c - c0); a0 += beta * (a - a0); alpha0 = alpha; } /// Normalize an angle in radians to be between -pi and pi inline void b2Sweep::Normalize() { float32 twoPi = 2.0f * b2_pi; float32 d = twoPi * floorf(a0 / twoPi); a0 -= d; a -= d; } #endif love-0.9.1/src/libraries/Box2D/Common/b2Settings.cpp0000755000000000000000000000275512316602166022144 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include "common/Exception.h" b2Version b2_version = {2, 3, 0}; // Memory allocators. Modify these to use your own allocator. void* b2Alloc(int32 size) { return malloc(size); } void b2Free(void* mem) { free(mem); } // You can modify this to use your logging facility. void b2Log(const char* string, ...) { va_list args; va_start(args, string); vprintf(string, args); va_end(args); } void loveAssert(bool test, const char *teststr) { if (!test) throw love::Exception("Box2D assertion failed: %s", teststr); } love-0.9.1/src/libraries/Box2D/Common/b2Timer.cpp0000755000000000000000000000436612316602166021424 0ustar00rootroot00000000000000/* * Copyright (c) 2011 Erin Catto http://box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #if defined(_WIN32) float64 b2Timer::s_invFrequency = 0.0f; #define WIN32_LEAN_AND_MEAN #include b2Timer::b2Timer() { LARGE_INTEGER largeInteger; if (s_invFrequency == 0.0f) { QueryPerformanceFrequency(&largeInteger); s_invFrequency = float64(largeInteger.QuadPart); if (s_invFrequency > 0.0f) { s_invFrequency = 1000.0f / s_invFrequency; } } QueryPerformanceCounter(&largeInteger); m_start = float64(largeInteger.QuadPart); } void b2Timer::Reset() { LARGE_INTEGER largeInteger; QueryPerformanceCounter(&largeInteger); m_start = float64(largeInteger.QuadPart); } float32 b2Timer::GetMilliseconds() const { LARGE_INTEGER largeInteger; QueryPerformanceCounter(&largeInteger); float64 count = float64(largeInteger.QuadPart); float32 ms = float32(s_invFrequency * (count - m_start)); return ms; } #elif defined(__linux__) || defined (__APPLE__) #include b2Timer::b2Timer() { Reset(); } void b2Timer::Reset() { timeval t; gettimeofday(&t, 0); m_start_sec = t.tv_sec; m_start_usec = t.tv_usec; } float32 b2Timer::GetMilliseconds() const { timeval t; gettimeofday(&t, 0); return 1000.0f * (t.tv_sec - m_start_sec) + 0.001f * (t.tv_usec - m_start_usec); } #else b2Timer::b2Timer() { } void b2Timer::Reset() { } float32 b2Timer::GetMilliseconds() const { return 0.0f; } #endif love-0.9.1/src/libraries/Box2D/Common/b2BlockAllocator.h0000755000000000000000000000364412316602166022702 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_BLOCK_ALLOCATOR_H #define B2_BLOCK_ALLOCATOR_H #include const int32 b2_chunkSize = 16 * 1024; const int32 b2_maxBlockSize = 640; const int32 b2_blockSizes = 14; const int32 b2_chunkArrayIncrement = 128; struct b2Block; struct b2Chunk; /// This is a small object allocator used for allocating small /// objects that persist for more than one time step. /// See: http://www.codeproject.com/useritems/Small_Block_Allocator.asp class b2BlockAllocator { public: b2BlockAllocator(); ~b2BlockAllocator(); /// Allocate memory. This will use b2Alloc if the size is larger than b2_maxBlockSize. void* Allocate(int32 size); /// Free memory. This will use b2Free if the size is larger than b2_maxBlockSize. void Free(void* p, int32 size); void Clear(); private: b2Chunk* m_chunks; int32 m_chunkCount; int32 m_chunkSpace; b2Block* m_freeLists[b2_blockSizes]; static int32 s_blockSizes[b2_blockSizes]; static uint8 s_blockSizeLookup[b2_maxBlockSize + 1]; static bool s_blockSizeLookupInitialized; }; #endif love-0.9.1/src/libraries/Box2D/Rope/0000755000000000000000000000000012316602463017055 5ustar00rootroot00000000000000love-0.9.1/src/libraries/Box2D/Rope/b2Rope.cpp0000755000000000000000000001145012316602166020716 0ustar00rootroot00000000000000/* * Copyright (c) 2011 Erin Catto http://box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include b2Rope::b2Rope() { m_count = 0; m_ps = NULL; m_p0s = NULL; m_vs = NULL; m_ims = NULL; m_Ls = NULL; m_as = NULL; m_gravity.SetZero(); m_k2 = 1.0f; m_k3 = 0.1f; } b2Rope::~b2Rope() { b2Free(m_ps); b2Free(m_p0s); b2Free(m_vs); b2Free(m_ims); b2Free(m_Ls); b2Free(m_as); } void b2Rope::Initialize(const b2RopeDef* def) { b2Assert(def->count >= 3); m_count = def->count; m_ps = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2)); m_p0s = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2)); m_vs = (b2Vec2*)b2Alloc(m_count * sizeof(b2Vec2)); m_ims = (float32*)b2Alloc(m_count * sizeof(float32)); for (int32 i = 0; i < m_count; ++i) { m_ps[i] = def->vertices[i]; m_p0s[i] = def->vertices[i]; m_vs[i].SetZero(); float32 m = def->masses[i]; if (m > 0.0f) { m_ims[i] = 1.0f / m; } else { m_ims[i] = 0.0f; } } int32 count2 = m_count - 1; int32 count3 = m_count - 2; m_Ls = (float32*)b2Alloc(count2 * sizeof(float32)); m_as = (float32*)b2Alloc(count3 * sizeof(float32)); for (int32 i = 0; i < count2; ++i) { b2Vec2 p1 = m_ps[i]; b2Vec2 p2 = m_ps[i+1]; m_Ls[i] = b2Distance(p1, p2); } for (int32 i = 0; i < count3; ++i) { b2Vec2 p1 = m_ps[i]; b2Vec2 p2 = m_ps[i + 1]; b2Vec2 p3 = m_ps[i + 2]; b2Vec2 d1 = p2 - p1; b2Vec2 d2 = p3 - p2; float32 a = b2Cross(d1, d2); float32 b = b2Dot(d1, d2); m_as[i] = b2Atan2(a, b); } m_gravity = def->gravity; m_damping = def->damping; m_k2 = def->k2; m_k3 = def->k3; } void b2Rope::Step(float32 h, int32 iterations) { if (h == 0.0) { return; } float32 d = expf(- h * m_damping); for (int32 i = 0; i < m_count; ++i) { m_p0s[i] = m_ps[i]; if (m_ims[i] > 0.0f) { m_vs[i] += h * m_gravity; } m_vs[i] *= d; m_ps[i] += h * m_vs[i]; } for (int32 i = 0; i < iterations; ++i) { SolveC2(); SolveC3(); SolveC2(); } float32 inv_h = 1.0f / h; for (int32 i = 0; i < m_count; ++i) { m_vs[i] = inv_h * (m_ps[i] - m_p0s[i]); } } void b2Rope::SolveC2() { int32 count2 = m_count - 1; for (int32 i = 0; i < count2; ++i) { b2Vec2 p1 = m_ps[i]; b2Vec2 p2 = m_ps[i + 1]; b2Vec2 d = p2 - p1; float32 L = d.Normalize(); float32 im1 = m_ims[i]; float32 im2 = m_ims[i + 1]; if (im1 + im2 == 0.0f) { continue; } float32 s1 = im1 / (im1 + im2); float32 s2 = im2 / (im1 + im2); p1 -= m_k2 * s1 * (m_Ls[i] - L) * d; p2 += m_k2 * s2 * (m_Ls[i] - L) * d; m_ps[i] = p1; m_ps[i + 1] = p2; } } void b2Rope::SetAngle(float32 angle) { int32 count3 = m_count - 2; for (int32 i = 0; i < count3; ++i) { m_as[i] = angle; } } void b2Rope::SolveC3() { int32 count3 = m_count - 2; for (int32 i = 0; i < count3; ++i) { b2Vec2 p1 = m_ps[i]; b2Vec2 p2 = m_ps[i + 1]; b2Vec2 p3 = m_ps[i + 2]; float32 m1 = m_ims[i]; float32 m2 = m_ims[i + 1]; float32 m3 = m_ims[i + 2]; b2Vec2 d1 = p2 - p1; b2Vec2 d2 = p3 - p2; float32 L1sqr = d1.LengthSquared(); float32 L2sqr = d2.LengthSquared(); if (L1sqr * L2sqr == 0.0f) { continue; } float32 a = b2Cross(d1, d2); float32 b = b2Dot(d1, d2); float32 angle = b2Atan2(a, b); b2Vec2 Jd1 = (-1.0f / L1sqr) * d1.Skew(); b2Vec2 Jd2 = (1.0f / L2sqr) * d2.Skew(); b2Vec2 J1 = -Jd1; b2Vec2 J2 = Jd1 - Jd2; b2Vec2 J3 = Jd2; float32 mass = m1 * b2Dot(J1, J1) + m2 * b2Dot(J2, J2) + m3 * b2Dot(J3, J3); if (mass == 0.0f) { continue; } mass = 1.0f / mass; float32 C = angle - m_as[i]; while (C > b2_pi) { angle -= 2 * b2_pi; C = angle - m_as[i]; } while (C < -b2_pi) { angle += 2.0f * b2_pi; C = angle - m_as[i]; } float32 impulse = - m_k3 * mass * C; p1 += (m1 * impulse) * J1; p2 += (m2 * impulse) * J2; p3 += (m3 * impulse) * J3; m_ps[i] = p1; m_ps[i + 1] = p2; m_ps[i + 2] = p3; } } void b2Rope::Draw(b2Draw* draw) const { b2Color c(0.4f, 0.5f, 0.7f); for (int32 i = 0; i < m_count - 1; ++i) { draw->DrawSegment(m_ps[i], m_ps[i+1], c); } } love-0.9.1/src/libraries/Box2D/Rope/b2Rope.h0000755000000000000000000000366512316602166020374 0ustar00rootroot00000000000000/* * Copyright (c) 2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_ROPE_H #define B2_ROPE_H #include class b2Draw; /// struct b2RopeDef { b2RopeDef() { vertices = NULL; count = 0; masses = NULL; gravity.SetZero(); damping = 0.1f; k2 = 0.9f; k3 = 0.1f; } /// b2Vec2* vertices; /// int32 count; /// float32* masses; /// b2Vec2 gravity; /// float32 damping; /// Stretching stiffness float32 k2; /// Bending stiffness. Values above 0.5 can make the simulation blow up. float32 k3; }; /// class b2Rope { public: b2Rope(); ~b2Rope(); /// void Initialize(const b2RopeDef* def); /// void Step(float32 timeStep, int32 iterations); /// int32 GetVertexCount() const { return m_count; } /// const b2Vec2* GetVertices() const { return m_ps; } /// void Draw(b2Draw* draw) const; /// void SetAngle(float32 angle); private: void SolveC2(); void SolveC3(); int32 m_count; b2Vec2* m_ps; b2Vec2* m_p0s; b2Vec2* m_vs; float32* m_ims; float32* m_Ls; float32* m_as; b2Vec2 m_gravity; float32 m_damping; float32 m_k2; float32 m_k3; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/0000755000000000000000000000000012316602463017717 5ustar00rootroot00000000000000love-0.9.1/src/libraries/Box2D/Dynamics/Joints/0000755000000000000000000000000012316602463021165 5ustar00rootroot00000000000000love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2Joint.cpp0000755000000000000000000001235712316602166023213 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2007 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include b2Joint* b2Joint::Create(const b2JointDef* def, b2BlockAllocator* allocator) { b2Joint* joint = NULL; switch (def->type) { case e_distanceJoint: { void* mem = allocator->Allocate(sizeof(b2DistanceJoint)); joint = new (mem) b2DistanceJoint(static_cast(def)); } break; case e_mouseJoint: { void* mem = allocator->Allocate(sizeof(b2MouseJoint)); joint = new (mem) b2MouseJoint(static_cast(def)); } break; case e_prismaticJoint: { void* mem = allocator->Allocate(sizeof(b2PrismaticJoint)); joint = new (mem) b2PrismaticJoint(static_cast(def)); } break; case e_revoluteJoint: { void* mem = allocator->Allocate(sizeof(b2RevoluteJoint)); joint = new (mem) b2RevoluteJoint(static_cast(def)); } break; case e_pulleyJoint: { void* mem = allocator->Allocate(sizeof(b2PulleyJoint)); joint = new (mem) b2PulleyJoint(static_cast(def)); } break; case e_gearJoint: { void* mem = allocator->Allocate(sizeof(b2GearJoint)); joint = new (mem) b2GearJoint(static_cast(def)); } break; case e_wheelJoint: { void* mem = allocator->Allocate(sizeof(b2WheelJoint)); joint = new (mem) b2WheelJoint(static_cast(def)); } break; case e_weldJoint: { void* mem = allocator->Allocate(sizeof(b2WeldJoint)); joint = new (mem) b2WeldJoint(static_cast(def)); } break; case e_frictionJoint: { void* mem = allocator->Allocate(sizeof(b2FrictionJoint)); joint = new (mem) b2FrictionJoint(static_cast(def)); } break; case e_ropeJoint: { void* mem = allocator->Allocate(sizeof(b2RopeJoint)); joint = new (mem) b2RopeJoint(static_cast(def)); } break; case e_motorJoint: { void* mem = allocator->Allocate(sizeof(b2MotorJoint)); joint = new (mem) b2MotorJoint(static_cast(def)); } break; default: b2Assert(false); break; } return joint; } void b2Joint::Destroy(b2Joint* joint, b2BlockAllocator* allocator) { joint->~b2Joint(); switch (joint->m_type) { case e_distanceJoint: allocator->Free(joint, sizeof(b2DistanceJoint)); break; case e_mouseJoint: allocator->Free(joint, sizeof(b2MouseJoint)); break; case e_prismaticJoint: allocator->Free(joint, sizeof(b2PrismaticJoint)); break; case e_revoluteJoint: allocator->Free(joint, sizeof(b2RevoluteJoint)); break; case e_pulleyJoint: allocator->Free(joint, sizeof(b2PulleyJoint)); break; case e_gearJoint: allocator->Free(joint, sizeof(b2GearJoint)); break; case e_wheelJoint: allocator->Free(joint, sizeof(b2WheelJoint)); break; case e_weldJoint: allocator->Free(joint, sizeof(b2WeldJoint)); break; case e_frictionJoint: allocator->Free(joint, sizeof(b2FrictionJoint)); break; case e_ropeJoint: allocator->Free(joint, sizeof(b2RopeJoint)); break; case e_motorJoint: allocator->Free(joint, sizeof(b2MotorJoint)); break; default: b2Assert(false); break; } } b2Joint::b2Joint(const b2JointDef* def) { b2Assert(def->bodyA != def->bodyB); m_type = def->type; m_prev = NULL; m_next = NULL; m_bodyA = def->bodyA; m_bodyB = def->bodyB; m_index = 0; m_collideConnected = def->collideConnected; m_islandFlag = false; m_userData = def->userData; m_edgeA.joint = NULL; m_edgeA.other = NULL; m_edgeA.prev = NULL; m_edgeA.next = NULL; m_edgeB.joint = NULL; m_edgeB.other = NULL; m_edgeB.prev = NULL; m_edgeB.next = NULL; } bool b2Joint::IsActive() const { return m_bodyA->IsActive() && m_bodyB->IsActive(); } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2PulleyJoint.cpp0000755000000000000000000002115412316602166024401 0ustar00rootroot00000000000000/* * Copyright (c) 2007 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include // Pulley: // length1 = norm(p1 - s1) // length2 = norm(p2 - s2) // C0 = (length1 + ratio * length2)_initial // C = C0 - (length1 + ratio * length2) // u1 = (p1 - s1) / norm(p1 - s1) // u2 = (p2 - s2) / norm(p2 - s2) // Cdot = -dot(u1, v1 + cross(w1, r1)) - ratio * dot(u2, v2 + cross(w2, r2)) // J = -[u1 cross(r1, u1) ratio * u2 ratio * cross(r2, u2)] // K = J * invM * JT // = invMass1 + invI1 * cross(r1, u1)^2 + ratio^2 * (invMass2 + invI2 * cross(r2, u2)^2) void b2PulleyJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& groundA, const b2Vec2& groundB, const b2Vec2& anchorA, const b2Vec2& anchorB, float32 r) { bodyA = bA; bodyB = bB; groundAnchorA = groundA; groundAnchorB = groundB; localAnchorA = bodyA->GetLocalPoint(anchorA); localAnchorB = bodyB->GetLocalPoint(anchorB); b2Vec2 dA = anchorA - groundA; lengthA = dA.Length(); b2Vec2 dB = anchorB - groundB; lengthB = dB.Length(); ratio = r; b2Assert(ratio > b2_epsilon); } b2PulleyJoint::b2PulleyJoint(const b2PulleyJointDef* def) : b2Joint(def) { m_groundAnchorA = def->groundAnchorA; m_groundAnchorB = def->groundAnchorB; m_localAnchorA = def->localAnchorA; m_localAnchorB = def->localAnchorB; m_lengthA = def->lengthA; m_lengthB = def->lengthB; b2Assert(def->ratio != 0.0f); m_ratio = def->ratio; m_constant = def->lengthA + m_ratio * def->lengthB; m_impulse = 0.0f; } void b2PulleyJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexA = m_bodyA->m_islandIndex; m_indexB = m_bodyB->m_islandIndex; m_localCenterA = m_bodyA->m_sweep.localCenter; m_localCenterB = m_bodyB->m_sweep.localCenter; m_invMassA = m_bodyA->m_invMass; m_invMassB = m_bodyB->m_invMass; m_invIA = m_bodyA->m_invI; m_invIB = m_bodyB->m_invI; b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Rot qA(aA), qB(aB); m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); // Get the pulley axes. m_uA = cA + m_rA - m_groundAnchorA; m_uB = cB + m_rB - m_groundAnchorB; float32 lengthA = m_uA.Length(); float32 lengthB = m_uB.Length(); if (lengthA > 10.0f * b2_linearSlop) { m_uA *= 1.0f / lengthA; } else { m_uA.SetZero(); } if (lengthB > 10.0f * b2_linearSlop) { m_uB *= 1.0f / lengthB; } else { m_uB.SetZero(); } // Compute effective mass. float32 ruA = b2Cross(m_rA, m_uA); float32 ruB = b2Cross(m_rB, m_uB); float32 mA = m_invMassA + m_invIA * ruA * ruA; float32 mB = m_invMassB + m_invIB * ruB * ruB; m_mass = mA + m_ratio * m_ratio * mB; if (m_mass > 0.0f) { m_mass = 1.0f / m_mass; } if (data.step.warmStarting) { // Scale impulses to support variable time steps. m_impulse *= data.step.dtRatio; // Warm starting. b2Vec2 PA = -(m_impulse) * m_uA; b2Vec2 PB = (-m_ratio * m_impulse) * m_uB; vA += m_invMassA * PA; wA += m_invIA * b2Cross(m_rA, PA); vB += m_invMassB * PB; wB += m_invIB * b2Cross(m_rB, PB); } else { m_impulse = 0.0f; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } void b2PulleyJoint::SolveVelocityConstraints(const b2SolverData& data) { b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Vec2 vpA = vA + b2Cross(wA, m_rA); b2Vec2 vpB = vB + b2Cross(wB, m_rB); float32 Cdot = -b2Dot(m_uA, vpA) - m_ratio * b2Dot(m_uB, vpB); float32 impulse = -m_mass * Cdot; m_impulse += impulse; b2Vec2 PA = -impulse * m_uA; b2Vec2 PB = -m_ratio * impulse * m_uB; vA += m_invMassA * PA; wA += m_invIA * b2Cross(m_rA, PA); vB += m_invMassB * PB; wB += m_invIB * b2Cross(m_rB, PB); data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } bool b2PulleyJoint::SolvePositionConstraints(const b2SolverData& data) { b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Rot qA(aA), qB(aB); b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); // Get the pulley axes. b2Vec2 uA = cA + rA - m_groundAnchorA; b2Vec2 uB = cB + rB - m_groundAnchorB; float32 lengthA = uA.Length(); float32 lengthB = uB.Length(); if (lengthA > 10.0f * b2_linearSlop) { uA *= 1.0f / lengthA; } else { uA.SetZero(); } if (lengthB > 10.0f * b2_linearSlop) { uB *= 1.0f / lengthB; } else { uB.SetZero(); } // Compute effective mass. float32 ruA = b2Cross(rA, uA); float32 ruB = b2Cross(rB, uB); float32 mA = m_invMassA + m_invIA * ruA * ruA; float32 mB = m_invMassB + m_invIB * ruB * ruB; float32 mass = mA + m_ratio * m_ratio * mB; if (mass > 0.0f) { mass = 1.0f / mass; } float32 C = m_constant - lengthA - m_ratio * lengthB; float32 linearError = b2Abs(C); float32 impulse = -mass * C; b2Vec2 PA = -impulse * uA; b2Vec2 PB = -m_ratio * impulse * uB; cA += m_invMassA * PA; aA += m_invIA * b2Cross(rA, PA); cB += m_invMassB * PB; aB += m_invIB * b2Cross(rB, PB); data.positions[m_indexA].c = cA; data.positions[m_indexA].a = aA; data.positions[m_indexB].c = cB; data.positions[m_indexB].a = aB; return linearError < b2_linearSlop; } b2Vec2 b2PulleyJoint::GetAnchorA() const { return m_bodyA->GetWorldPoint(m_localAnchorA); } b2Vec2 b2PulleyJoint::GetAnchorB() const { return m_bodyB->GetWorldPoint(m_localAnchorB); } b2Vec2 b2PulleyJoint::GetReactionForce(float32 inv_dt) const { b2Vec2 P = m_impulse * m_uB; return inv_dt * P; } float32 b2PulleyJoint::GetReactionTorque(float32 inv_dt) const { B2_NOT_USED(inv_dt); return 0.0f; } b2Vec2 b2PulleyJoint::GetGroundAnchorA() const { return m_groundAnchorA; } b2Vec2 b2PulleyJoint::GetGroundAnchorB() const { return m_groundAnchorB; } float32 b2PulleyJoint::GetLengthA() const { return m_lengthA; } float32 b2PulleyJoint::GetLengthB() const { return m_lengthB; } float32 b2PulleyJoint::GetRatio() const { return m_ratio; } float32 b2PulleyJoint::GetCurrentLengthA() const { b2Vec2 p = m_bodyA->GetWorldPoint(m_localAnchorA); b2Vec2 s = m_groundAnchorA; b2Vec2 d = p - s; return d.Length(); } float32 b2PulleyJoint::GetCurrentLengthB() const { b2Vec2 p = m_bodyB->GetWorldPoint(m_localAnchorB); b2Vec2 s = m_groundAnchorB; b2Vec2 d = p - s; return d.Length(); } void b2PulleyJoint::Dump() { int32 indexA = m_bodyA->m_islandIndex; int32 indexB = m_bodyB->m_islandIndex; b2Log(" b2PulleyJointDef jd;\n"); b2Log(" jd.bodyA = bodies[%d];\n", indexA); b2Log(" jd.bodyB = bodies[%d];\n", indexB); b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); b2Log(" jd.groundAnchorA.Set(%.15lef, %.15lef);\n", m_groundAnchorA.x, m_groundAnchorA.y); b2Log(" jd.groundAnchorB.Set(%.15lef, %.15lef);\n", m_groundAnchorB.x, m_groundAnchorB.y); b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); b2Log(" jd.lengthA = %.15lef;\n", m_lengthA); b2Log(" jd.lengthB = %.15lef;\n", m_lengthB); b2Log(" jd.ratio = %.15lef;\n", m_ratio); b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); } void b2PulleyJoint::ShiftOrigin(const b2Vec2& newOrigin) { m_groundAnchorA -= newOrigin; m_groundAnchorB -= newOrigin; } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2RopeJoint.cpp0000755000000000000000000001433212316602166024034 0ustar00rootroot00000000000000/* * Copyright (c) 2007-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include // Limit: // C = norm(pB - pA) - L // u = (pB - pA) / norm(pB - pA) // Cdot = dot(u, vB + cross(wB, rB) - vA - cross(wA, rA)) // J = [-u -cross(rA, u) u cross(rB, u)] // K = J * invM * JT // = invMassA + invIA * cross(rA, u)^2 + invMassB + invIB * cross(rB, u)^2 b2RopeJoint::b2RopeJoint(const b2RopeJointDef* def) : b2Joint(def) { m_localAnchorA = def->localAnchorA; m_localAnchorB = def->localAnchorB; m_maxLength = def->maxLength; m_mass = 0.0f; m_impulse = 0.0f; m_state = e_inactiveLimit; m_length = 0.0f; } void b2RopeJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexA = m_bodyA->m_islandIndex; m_indexB = m_bodyB->m_islandIndex; m_localCenterA = m_bodyA->m_sweep.localCenter; m_localCenterB = m_bodyB->m_sweep.localCenter; m_invMassA = m_bodyA->m_invMass; m_invMassB = m_bodyB->m_invMass; m_invIA = m_bodyA->m_invI; m_invIB = m_bodyB->m_invI; b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Rot qA(aA), qB(aB); m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); m_u = cB + m_rB - cA - m_rA; m_length = m_u.Length(); float32 C = m_length - m_maxLength; if (C > 0.0f) { m_state = e_atUpperLimit; } else { m_state = e_inactiveLimit; } if (m_length > b2_linearSlop) { m_u *= 1.0f / m_length; } else { m_u.SetZero(); m_mass = 0.0f; m_impulse = 0.0f; return; } // Compute effective mass. float32 crA = b2Cross(m_rA, m_u); float32 crB = b2Cross(m_rB, m_u); float32 invMass = m_invMassA + m_invIA * crA * crA + m_invMassB + m_invIB * crB * crB; m_mass = invMass != 0.0f ? 1.0f / invMass : 0.0f; if (data.step.warmStarting) { // Scale the impulse to support a variable time step. m_impulse *= data.step.dtRatio; b2Vec2 P = m_impulse * m_u; vA -= m_invMassA * P; wA -= m_invIA * b2Cross(m_rA, P); vB += m_invMassB * P; wB += m_invIB * b2Cross(m_rB, P); } else { m_impulse = 0.0f; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } void b2RopeJoint::SolveVelocityConstraints(const b2SolverData& data) { b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; // Cdot = dot(u, v + cross(w, r)) b2Vec2 vpA = vA + b2Cross(wA, m_rA); b2Vec2 vpB = vB + b2Cross(wB, m_rB); float32 C = m_length - m_maxLength; float32 Cdot = b2Dot(m_u, vpB - vpA); // Predictive constraint. if (C < 0.0f) { Cdot += data.step.inv_dt * C; } float32 impulse = -m_mass * Cdot; float32 oldImpulse = m_impulse; m_impulse = b2Min(0.0f, m_impulse + impulse); impulse = m_impulse - oldImpulse; b2Vec2 P = impulse * m_u; vA -= m_invMassA * P; wA -= m_invIA * b2Cross(m_rA, P); vB += m_invMassB * P; wB += m_invIB * b2Cross(m_rB, P); data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } bool b2RopeJoint::SolvePositionConstraints(const b2SolverData& data) { b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Rot qA(aA), qB(aB); b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); b2Vec2 u = cB + rB - cA - rA; float32 length = u.Normalize(); float32 C = length - m_maxLength; C = b2Clamp(C, 0.0f, b2_maxLinearCorrection); float32 impulse = -m_mass * C; b2Vec2 P = impulse * u; cA -= m_invMassA * P; aA -= m_invIA * b2Cross(rA, P); cB += m_invMassB * P; aB += m_invIB * b2Cross(rB, P); data.positions[m_indexA].c = cA; data.positions[m_indexA].a = aA; data.positions[m_indexB].c = cB; data.positions[m_indexB].a = aB; return length - m_maxLength < b2_linearSlop; } b2Vec2 b2RopeJoint::GetAnchorA() const { return m_bodyA->GetWorldPoint(m_localAnchorA); } b2Vec2 b2RopeJoint::GetAnchorB() const { return m_bodyB->GetWorldPoint(m_localAnchorB); } b2Vec2 b2RopeJoint::GetReactionForce(float32 inv_dt) const { b2Vec2 F = (inv_dt * m_impulse) * m_u; return F; } float32 b2RopeJoint::GetReactionTorque(float32 inv_dt) const { B2_NOT_USED(inv_dt); return 0.0f; } float32 b2RopeJoint::GetMaxLength() const { return m_maxLength; } b2LimitState b2RopeJoint::GetLimitState() const { return m_state; } void b2RopeJoint::Dump() { int32 indexA = m_bodyA->m_islandIndex; int32 indexB = m_bodyB->m_islandIndex; b2Log(" b2RopeJointDef jd;\n"); b2Log(" jd.bodyA = bodies[%d];\n", indexA); b2Log(" jd.bodyB = bodies[%d];\n", indexB); b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); b2Log(" jd.maxLength = %.15lef;\n", m_maxLength); b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2PulleyJoint.h0000755000000000000000000001053112316602166024043 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_PULLEY_JOINT_H #define B2_PULLEY_JOINT_H #include const float32 b2_minPulleyLength = 2.0f; /// Pulley joint definition. This requires two ground anchors, /// two dynamic body anchor points, and a pulley ratio. struct b2PulleyJointDef : public b2JointDef { b2PulleyJointDef() { type = e_pulleyJoint; groundAnchorA.Set(-1.0f, 1.0f); groundAnchorB.Set(1.0f, 1.0f); localAnchorA.Set(-1.0f, 0.0f); localAnchorB.Set(1.0f, 0.0f); lengthA = 0.0f; lengthB = 0.0f; ratio = 1.0f; collideConnected = true; } /// Initialize the bodies, anchors, lengths, max lengths, and ratio using the world anchors. void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& groundAnchorA, const b2Vec2& groundAnchorB, const b2Vec2& anchorA, const b2Vec2& anchorB, float32 ratio); /// The first ground anchor in world coordinates. This point never moves. b2Vec2 groundAnchorA; /// The second ground anchor in world coordinates. This point never moves. b2Vec2 groundAnchorB; /// The local anchor point relative to bodyA's origin. b2Vec2 localAnchorA; /// The local anchor point relative to bodyB's origin. b2Vec2 localAnchorB; /// The a reference length for the segment attached to bodyA. float32 lengthA; /// The a reference length for the segment attached to bodyB. float32 lengthB; /// The pulley ratio, used to simulate a block-and-tackle. float32 ratio; }; /// The pulley joint is connected to two bodies and two fixed ground points. /// The pulley supports a ratio such that: /// length1 + ratio * length2 <= constant /// Yes, the force transmitted is scaled by the ratio. /// Warning: the pulley joint can get a bit squirrelly by itself. They often /// work better when combined with prismatic joints. You should also cover the /// the anchor points with static shapes to prevent one side from going to /// zero length. class b2PulleyJoint : public b2Joint { public: b2Vec2 GetAnchorA() const; b2Vec2 GetAnchorB() const; b2Vec2 GetReactionForce(float32 inv_dt) const; float32 GetReactionTorque(float32 inv_dt) const; /// Get the first ground anchor. b2Vec2 GetGroundAnchorA() const; /// Get the second ground anchor. b2Vec2 GetGroundAnchorB() const; /// Get the current length of the segment attached to bodyA. float32 GetLengthA() const; /// Get the current length of the segment attached to bodyB. float32 GetLengthB() const; /// Get the pulley ratio. float32 GetRatio() const; /// Get the current length of the segment attached to bodyA. float32 GetCurrentLengthA() const; /// Get the current length of the segment attached to bodyB. float32 GetCurrentLengthB() const; /// Dump joint to dmLog void Dump(); /// Implement b2Joint::ShiftOrigin void ShiftOrigin(const b2Vec2& newOrigin); protected: friend class b2Joint; b2PulleyJoint(const b2PulleyJointDef* data); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); b2Vec2 m_groundAnchorA; b2Vec2 m_groundAnchorB; float32 m_lengthA; float32 m_lengthB; // Solver shared b2Vec2 m_localAnchorA; b2Vec2 m_localAnchorB; float32 m_constant; float32 m_ratio; float32 m_impulse; // Solver temp int32 m_indexA; int32 m_indexB; b2Vec2 m_uA; b2Vec2 m_uB; b2Vec2 m_rA; b2Vec2 m_rB; b2Vec2 m_localCenterA; b2Vec2 m_localCenterB; float32 m_invMassA; float32 m_invMassB; float32 m_invIA; float32 m_invIB; float32 m_mass; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2MotorJoint.cpp0000755000000000000000000001762712316602166024241 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2012 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include // Point-to-point constraint // Cdot = v2 - v1 // = v2 + cross(w2, r2) - v1 - cross(w1, r1) // J = [-I -r1_skew I r2_skew ] // Identity used: // w k % (rx i + ry j) = w * (-ry i + rx j) // Angle constraint // Cdot = w2 - w1 // J = [0 0 -1 0 0 1] // K = invI1 + invI2 void b2MotorJointDef::Initialize(b2Body* bA, b2Body* bB) { bodyA = bA; bodyB = bB; b2Vec2 xB = bodyB->GetPosition(); linearOffset = bodyA->GetLocalPoint(xB); float32 angleA = bodyA->GetAngle(); float32 angleB = bodyB->GetAngle(); angularOffset = angleB - angleA; } b2MotorJoint::b2MotorJoint(const b2MotorJointDef* def) : b2Joint(def) { m_linearOffset = def->linearOffset; m_angularOffset = def->angularOffset; m_linearImpulse.SetZero(); m_angularImpulse = 0.0f; m_maxForce = def->maxForce; m_maxTorque = def->maxTorque; m_correctionFactor = def->correctionFactor; } void b2MotorJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexA = m_bodyA->m_islandIndex; m_indexB = m_bodyB->m_islandIndex; m_localCenterA = m_bodyA->m_sweep.localCenter; m_localCenterB = m_bodyB->m_sweep.localCenter; m_invMassA = m_bodyA->m_invMass; m_invMassB = m_bodyB->m_invMass; m_invIA = m_bodyA->m_invI; m_invIB = m_bodyB->m_invI; b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Rot qA(aA), qB(aB); // Compute the effective mass matrix. m_rA = b2Mul(qA, -m_localCenterA); m_rB = b2Mul(qB, -m_localCenterB); // J = [-I -r1_skew I r2_skew] // [ 0 -1 0 1] // r_skew = [-ry; rx] // Matlab // K = [ mA+r1y^2*iA+mB+r2y^2*iB, -r1y*iA*r1x-r2y*iB*r2x, -r1y*iA-r2y*iB] // [ -r1y*iA*r1x-r2y*iB*r2x, mA+r1x^2*iA+mB+r2x^2*iB, r1x*iA+r2x*iB] // [ -r1y*iA-r2y*iB, r1x*iA+r2x*iB, iA+iB] float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; b2Mat22 K; K.ex.x = mA + mB + iA * m_rA.y * m_rA.y + iB * m_rB.y * m_rB.y; K.ex.y = -iA * m_rA.x * m_rA.y - iB * m_rB.x * m_rB.y; K.ey.x = K.ex.y; K.ey.y = mA + mB + iA * m_rA.x * m_rA.x + iB * m_rB.x * m_rB.x; m_linearMass = K.GetInverse(); m_angularMass = iA + iB; if (m_angularMass > 0.0f) { m_angularMass = 1.0f / m_angularMass; } m_linearError = cB + m_rB - cA - m_rA - b2Mul(qA, m_linearOffset); m_angularError = aB - aA - m_angularOffset; if (data.step.warmStarting) { // Scale impulses to support a variable time step. m_linearImpulse *= data.step.dtRatio; m_angularImpulse *= data.step.dtRatio; b2Vec2 P(m_linearImpulse.x, m_linearImpulse.y); vA -= mA * P; wA -= iA * (b2Cross(m_rA, P) + m_angularImpulse); vB += mB * P; wB += iB * (b2Cross(m_rB, P) + m_angularImpulse); } else { m_linearImpulse.SetZero(); m_angularImpulse = 0.0f; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } void b2MotorJoint::SolveVelocityConstraints(const b2SolverData& data) { b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; float32 h = data.step.dt; float32 inv_h = data.step.inv_dt; // Solve angular friction { float32 Cdot = wB - wA + inv_h * m_correctionFactor * m_angularError; float32 impulse = -m_angularMass * Cdot; float32 oldImpulse = m_angularImpulse; float32 maxImpulse = h * m_maxTorque; m_angularImpulse = b2Clamp(m_angularImpulse + impulse, -maxImpulse, maxImpulse); impulse = m_angularImpulse - oldImpulse; wA -= iA * impulse; wB += iB * impulse; } // Solve linear friction { b2Vec2 Cdot = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA) + inv_h * m_correctionFactor * m_linearError; b2Vec2 impulse = -b2Mul(m_linearMass, Cdot); b2Vec2 oldImpulse = m_linearImpulse; m_linearImpulse += impulse; float32 maxImpulse = h * m_maxForce; if (m_linearImpulse.LengthSquared() > maxImpulse * maxImpulse) { m_linearImpulse.Normalize(); m_linearImpulse *= maxImpulse; } impulse = m_linearImpulse - oldImpulse; vA -= mA * impulse; wA -= iA * b2Cross(m_rA, impulse); vB += mB * impulse; wB += iB * b2Cross(m_rB, impulse); } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } bool b2MotorJoint::SolvePositionConstraints(const b2SolverData& data) { B2_NOT_USED(data); return true; } b2Vec2 b2MotorJoint::GetAnchorA() const { return m_bodyA->GetPosition(); } b2Vec2 b2MotorJoint::GetAnchorB() const { return m_bodyB->GetPosition(); } b2Vec2 b2MotorJoint::GetReactionForce(float32 inv_dt) const { return inv_dt * m_linearImpulse; } float32 b2MotorJoint::GetReactionTorque(float32 inv_dt) const { return inv_dt * m_angularImpulse; } void b2MotorJoint::SetMaxForce(float32 force) { b2Assert(b2IsValid(force) && force >= 0.0f); m_maxForce = force; } float32 b2MotorJoint::GetMaxForce() const { return m_maxForce; } void b2MotorJoint::SetMaxTorque(float32 torque) { b2Assert(b2IsValid(torque) && torque >= 0.0f); m_maxTorque = torque; } float32 b2MotorJoint::GetMaxTorque() const { return m_maxTorque; } void b2MotorJoint::SetCorrectionFactor(float32 factor) { b2Assert(b2IsValid(factor) && 0.0f <= factor && factor <= 1.0f); m_correctionFactor = factor; } float32 b2MotorJoint::GetCorrectionFactor() const { return m_correctionFactor; } void b2MotorJoint::SetLinearOffset(const b2Vec2& linearOffset) { if (linearOffset.x != m_linearOffset.x || linearOffset.y != m_linearOffset.y) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_linearOffset = linearOffset; } } const b2Vec2& b2MotorJoint::GetLinearOffset() const { return m_linearOffset; } void b2MotorJoint::SetAngularOffset(float32 angularOffset) { if (angularOffset != m_angularOffset) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_angularOffset = angularOffset; } } float32 b2MotorJoint::GetAngularOffset() const { return m_angularOffset; } void b2MotorJoint::Dump() { int32 indexA = m_bodyA->m_islandIndex; int32 indexB = m_bodyB->m_islandIndex; b2Log(" b2MotorJointDef jd;\n"); b2Log(" jd.bodyA = bodies[%d];\n", indexA); b2Log(" jd.bodyB = bodies[%d];\n", indexB); b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); b2Log(" jd.linearOffset.Set(%.15lef, %.15lef);\n", m_linearOffset.x, m_linearOffset.y); b2Log(" jd.angularOffset = %.15lef;\n", m_angularOffset); b2Log(" jd.maxForce = %.15lef;\n", m_maxForce); b2Log(" jd.maxTorque = %.15lef;\n", m_maxTorque); b2Log(" jd.correctionFactor = %.15lef;\n", m_correctionFactor); b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2FrictionJoint.cpp0000755000000000000000000001535512316602166024712 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include // Point-to-point constraint // Cdot = v2 - v1 // = v2 + cross(w2, r2) - v1 - cross(w1, r1) // J = [-I -r1_skew I r2_skew ] // Identity used: // w k % (rx i + ry j) = w * (-ry i + rx j) // Angle constraint // Cdot = w2 - w1 // J = [0 0 -1 0 0 1] // K = invI1 + invI2 void b2FrictionJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& anchor) { bodyA = bA; bodyB = bB; localAnchorA = bodyA->GetLocalPoint(anchor); localAnchorB = bodyB->GetLocalPoint(anchor); } b2FrictionJoint::b2FrictionJoint(const b2FrictionJointDef* def) : b2Joint(def) { m_localAnchorA = def->localAnchorA; m_localAnchorB = def->localAnchorB; m_linearImpulse.SetZero(); m_angularImpulse = 0.0f; m_maxForce = def->maxForce; m_maxTorque = def->maxTorque; } void b2FrictionJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexA = m_bodyA->m_islandIndex; m_indexB = m_bodyB->m_islandIndex; m_localCenterA = m_bodyA->m_sweep.localCenter; m_localCenterB = m_bodyB->m_sweep.localCenter; m_invMassA = m_bodyA->m_invMass; m_invMassB = m_bodyB->m_invMass; m_invIA = m_bodyA->m_invI; m_invIB = m_bodyB->m_invI; float32 aA = data.positions[m_indexA].a; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Rot qA(aA), qB(aB); // Compute the effective mass matrix. m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); // J = [-I -r1_skew I r2_skew] // [ 0 -1 0 1] // r_skew = [-ry; rx] // Matlab // K = [ mA+r1y^2*iA+mB+r2y^2*iB, -r1y*iA*r1x-r2y*iB*r2x, -r1y*iA-r2y*iB] // [ -r1y*iA*r1x-r2y*iB*r2x, mA+r1x^2*iA+mB+r2x^2*iB, r1x*iA+r2x*iB] // [ -r1y*iA-r2y*iB, r1x*iA+r2x*iB, iA+iB] float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; b2Mat22 K; K.ex.x = mA + mB + iA * m_rA.y * m_rA.y + iB * m_rB.y * m_rB.y; K.ex.y = -iA * m_rA.x * m_rA.y - iB * m_rB.x * m_rB.y; K.ey.x = K.ex.y; K.ey.y = mA + mB + iA * m_rA.x * m_rA.x + iB * m_rB.x * m_rB.x; m_linearMass = K.GetInverse(); m_angularMass = iA + iB; if (m_angularMass > 0.0f) { m_angularMass = 1.0f / m_angularMass; } if (data.step.warmStarting) { // Scale impulses to support a variable time step. m_linearImpulse *= data.step.dtRatio; m_angularImpulse *= data.step.dtRatio; b2Vec2 P(m_linearImpulse.x, m_linearImpulse.y); vA -= mA * P; wA -= iA * (b2Cross(m_rA, P) + m_angularImpulse); vB += mB * P; wB += iB * (b2Cross(m_rB, P) + m_angularImpulse); } else { m_linearImpulse.SetZero(); m_angularImpulse = 0.0f; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } void b2FrictionJoint::SolveVelocityConstraints(const b2SolverData& data) { b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; float32 h = data.step.dt; // Solve angular friction { float32 Cdot = wB - wA; float32 impulse = -m_angularMass * Cdot; float32 oldImpulse = m_angularImpulse; float32 maxImpulse = h * m_maxTorque; m_angularImpulse = b2Clamp(m_angularImpulse + impulse, -maxImpulse, maxImpulse); impulse = m_angularImpulse - oldImpulse; wA -= iA * impulse; wB += iB * impulse; } // Solve linear friction { b2Vec2 Cdot = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA); b2Vec2 impulse = -b2Mul(m_linearMass, Cdot); b2Vec2 oldImpulse = m_linearImpulse; m_linearImpulse += impulse; float32 maxImpulse = h * m_maxForce; if (m_linearImpulse.LengthSquared() > maxImpulse * maxImpulse) { m_linearImpulse.Normalize(); m_linearImpulse *= maxImpulse; } impulse = m_linearImpulse - oldImpulse; vA -= mA * impulse; wA -= iA * b2Cross(m_rA, impulse); vB += mB * impulse; wB += iB * b2Cross(m_rB, impulse); } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } bool b2FrictionJoint::SolvePositionConstraints(const b2SolverData& data) { B2_NOT_USED(data); return true; } b2Vec2 b2FrictionJoint::GetAnchorA() const { return m_bodyA->GetWorldPoint(m_localAnchorA); } b2Vec2 b2FrictionJoint::GetAnchorB() const { return m_bodyB->GetWorldPoint(m_localAnchorB); } b2Vec2 b2FrictionJoint::GetReactionForce(float32 inv_dt) const { return inv_dt * m_linearImpulse; } float32 b2FrictionJoint::GetReactionTorque(float32 inv_dt) const { return inv_dt * m_angularImpulse; } void b2FrictionJoint::SetMaxForce(float32 force) { b2Assert(b2IsValid(force) && force >= 0.0f); m_maxForce = force; } float32 b2FrictionJoint::GetMaxForce() const { return m_maxForce; } void b2FrictionJoint::SetMaxTorque(float32 torque) { b2Assert(b2IsValid(torque) && torque >= 0.0f); m_maxTorque = torque; } float32 b2FrictionJoint::GetMaxTorque() const { return m_maxTorque; } void b2FrictionJoint::Dump() { int32 indexA = m_bodyA->m_islandIndex; int32 indexB = m_bodyB->m_islandIndex; b2Log(" b2FrictionJointDef jd;\n"); b2Log(" jd.bodyA = bodies[%d];\n", indexA); b2Log(" jd.bodyB = bodies[%d];\n", indexB); b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); b2Log(" jd.maxForce = %.15lef;\n", m_maxForce); b2Log(" jd.maxTorque = %.15lef;\n", m_maxTorque); b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2FrictionJoint.h0000755000000000000000000000633112316602166024351 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2007 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_FRICTION_JOINT_H #define B2_FRICTION_JOINT_H #include /// Friction joint definition. struct b2FrictionJointDef : public b2JointDef { b2FrictionJointDef() { type = e_frictionJoint; localAnchorA.SetZero(); localAnchorB.SetZero(); maxForce = 0.0f; maxTorque = 0.0f; } /// Initialize the bodies, anchors, axis, and reference angle using the world /// anchor and world axis. void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchor); /// The local anchor point relative to bodyA's origin. b2Vec2 localAnchorA; /// The local anchor point relative to bodyB's origin. b2Vec2 localAnchorB; /// The maximum friction force in N. float32 maxForce; /// The maximum friction torque in N-m. float32 maxTorque; }; /// Friction joint. This is used for top-down friction. /// It provides 2D translational friction and angular friction. class b2FrictionJoint : public b2Joint { public: b2Vec2 GetAnchorA() const; b2Vec2 GetAnchorB() const; b2Vec2 GetReactionForce(float32 inv_dt) const; float32 GetReactionTorque(float32 inv_dt) const; /// The local anchor point relative to bodyA's origin. const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } /// The local anchor point relative to bodyB's origin. const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } /// Set the maximum friction force in N. void SetMaxForce(float32 force); /// Get the maximum friction force in N. float32 GetMaxForce() const; /// Set the maximum friction torque in N*m. void SetMaxTorque(float32 torque); /// Get the maximum friction torque in N*m. float32 GetMaxTorque() const; /// Dump joint to dmLog void Dump(); protected: friend class b2Joint; b2FrictionJoint(const b2FrictionJointDef* def); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); b2Vec2 m_localAnchorA; b2Vec2 m_localAnchorB; // Solver shared b2Vec2 m_linearImpulse; float32 m_angularImpulse; float32 m_maxForce; float32 m_maxTorque; // Solver temp int32 m_indexA; int32 m_indexB; b2Vec2 m_rA; b2Vec2 m_rB; b2Vec2 m_localCenterA; b2Vec2 m_localCenterB; float32 m_invMassA; float32 m_invMassB; float32 m_invIA; float32 m_invIB; b2Mat22 m_linearMass; float32 m_angularMass; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2GearJoint.cpp0000755000000000000000000002652012316602166024007 0ustar00rootroot00000000000000/* * Copyright (c) 2007-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include // Gear Joint: // C0 = (coordinate1 + ratio * coordinate2)_initial // C = (coordinate1 + ratio * coordinate2) - C0 = 0 // J = [J1 ratio * J2] // K = J * invM * JT // = J1 * invM1 * J1T + ratio * ratio * J2 * invM2 * J2T // // Revolute: // coordinate = rotation // Cdot = angularVelocity // J = [0 0 1] // K = J * invM * JT = invI // // Prismatic: // coordinate = dot(p - pg, ug) // Cdot = dot(v + cross(w, r), ug) // J = [ug cross(r, ug)] // K = J * invM * JT = invMass + invI * cross(r, ug)^2 b2GearJoint::b2GearJoint(const b2GearJointDef* def) : b2Joint(def) { m_joint1 = def->joint1; m_joint2 = def->joint2; m_typeA = m_joint1->GetType(); m_typeB = m_joint2->GetType(); b2Assert(m_typeA == e_revoluteJoint || m_typeA == e_prismaticJoint); b2Assert(m_typeB == e_revoluteJoint || m_typeB == e_prismaticJoint); float32 coordinateA, coordinateB; // TODO_ERIN there might be some problem with the joint edges in b2Joint. m_bodyC = m_joint1->GetBodyA(); m_bodyA = m_joint1->GetBodyB(); // Get geometry of joint1 b2Transform xfA = m_bodyA->m_xf; float32 aA = m_bodyA->m_sweep.a; b2Transform xfC = m_bodyC->m_xf; float32 aC = m_bodyC->m_sweep.a; if (m_typeA == e_revoluteJoint) { b2RevoluteJoint* revolute = (b2RevoluteJoint*)def->joint1; m_localAnchorC = revolute->m_localAnchorA; m_localAnchorA = revolute->m_localAnchorB; m_referenceAngleA = revolute->m_referenceAngle; m_localAxisC.SetZero(); coordinateA = aA - aC - m_referenceAngleA; } else { b2PrismaticJoint* prismatic = (b2PrismaticJoint*)def->joint1; m_localAnchorC = prismatic->m_localAnchorA; m_localAnchorA = prismatic->m_localAnchorB; m_referenceAngleA = prismatic->m_referenceAngle; m_localAxisC = prismatic->m_localXAxisA; b2Vec2 pC = m_localAnchorC; b2Vec2 pA = b2MulT(xfC.q, b2Mul(xfA.q, m_localAnchorA) + (xfA.p - xfC.p)); coordinateA = b2Dot(pA - pC, m_localAxisC); } m_bodyD = m_joint2->GetBodyA(); m_bodyB = m_joint2->GetBodyB(); // Get geometry of joint2 b2Transform xfB = m_bodyB->m_xf; float32 aB = m_bodyB->m_sweep.a; b2Transform xfD = m_bodyD->m_xf; float32 aD = m_bodyD->m_sweep.a; if (m_typeB == e_revoluteJoint) { b2RevoluteJoint* revolute = (b2RevoluteJoint*)def->joint2; m_localAnchorD = revolute->m_localAnchorA; m_localAnchorB = revolute->m_localAnchorB; m_referenceAngleB = revolute->m_referenceAngle; m_localAxisD.SetZero(); coordinateB = aB - aD - m_referenceAngleB; } else { b2PrismaticJoint* prismatic = (b2PrismaticJoint*)def->joint2; m_localAnchorD = prismatic->m_localAnchorA; m_localAnchorB = prismatic->m_localAnchorB; m_referenceAngleB = prismatic->m_referenceAngle; m_localAxisD = prismatic->m_localXAxisA; b2Vec2 pD = m_localAnchorD; b2Vec2 pB = b2MulT(xfD.q, b2Mul(xfB.q, m_localAnchorB) + (xfB.p - xfD.p)); coordinateB = b2Dot(pB - pD, m_localAxisD); } m_ratio = def->ratio; m_constant = coordinateA + m_ratio * coordinateB; m_impulse = 0.0f; } void b2GearJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexA = m_bodyA->m_islandIndex; m_indexB = m_bodyB->m_islandIndex; m_indexC = m_bodyC->m_islandIndex; m_indexD = m_bodyD->m_islandIndex; m_lcA = m_bodyA->m_sweep.localCenter; m_lcB = m_bodyB->m_sweep.localCenter; m_lcC = m_bodyC->m_sweep.localCenter; m_lcD = m_bodyD->m_sweep.localCenter; m_mA = m_bodyA->m_invMass; m_mB = m_bodyB->m_invMass; m_mC = m_bodyC->m_invMass; m_mD = m_bodyD->m_invMass; m_iA = m_bodyA->m_invI; m_iB = m_bodyB->m_invI; m_iC = m_bodyC->m_invI; m_iD = m_bodyD->m_invI; float32 aA = data.positions[m_indexA].a; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; float32 aC = data.positions[m_indexC].a; b2Vec2 vC = data.velocities[m_indexC].v; float32 wC = data.velocities[m_indexC].w; float32 aD = data.positions[m_indexD].a; b2Vec2 vD = data.velocities[m_indexD].v; float32 wD = data.velocities[m_indexD].w; b2Rot qA(aA), qB(aB), qC(aC), qD(aD); m_mass = 0.0f; if (m_typeA == e_revoluteJoint) { m_JvAC.SetZero(); m_JwA = 1.0f; m_JwC = 1.0f; m_mass += m_iA + m_iC; } else { b2Vec2 u = b2Mul(qC, m_localAxisC); b2Vec2 rC = b2Mul(qC, m_localAnchorC - m_lcC); b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_lcA); m_JvAC = u; m_JwC = b2Cross(rC, u); m_JwA = b2Cross(rA, u); m_mass += m_mC + m_mA + m_iC * m_JwC * m_JwC + m_iA * m_JwA * m_JwA; } if (m_typeB == e_revoluteJoint) { m_JvBD.SetZero(); m_JwB = m_ratio; m_JwD = m_ratio; m_mass += m_ratio * m_ratio * (m_iB + m_iD); } else { b2Vec2 u = b2Mul(qD, m_localAxisD); b2Vec2 rD = b2Mul(qD, m_localAnchorD - m_lcD); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_lcB); m_JvBD = m_ratio * u; m_JwD = m_ratio * b2Cross(rD, u); m_JwB = m_ratio * b2Cross(rB, u); m_mass += m_ratio * m_ratio * (m_mD + m_mB) + m_iD * m_JwD * m_JwD + m_iB * m_JwB * m_JwB; } // Compute effective mass. m_mass = m_mass > 0.0f ? 1.0f / m_mass : 0.0f; if (data.step.warmStarting) { vA += (m_mA * m_impulse) * m_JvAC; wA += m_iA * m_impulse * m_JwA; vB += (m_mB * m_impulse) * m_JvBD; wB += m_iB * m_impulse * m_JwB; vC -= (m_mC * m_impulse) * m_JvAC; wC -= m_iC * m_impulse * m_JwC; vD -= (m_mD * m_impulse) * m_JvBD; wD -= m_iD * m_impulse * m_JwD; } else { m_impulse = 0.0f; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; data.velocities[m_indexC].v = vC; data.velocities[m_indexC].w = wC; data.velocities[m_indexD].v = vD; data.velocities[m_indexD].w = wD; } void b2GearJoint::SolveVelocityConstraints(const b2SolverData& data) { b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Vec2 vC = data.velocities[m_indexC].v; float32 wC = data.velocities[m_indexC].w; b2Vec2 vD = data.velocities[m_indexD].v; float32 wD = data.velocities[m_indexD].w; float32 Cdot = b2Dot(m_JvAC, vA - vC) + b2Dot(m_JvBD, vB - vD); Cdot += (m_JwA * wA - m_JwC * wC) + (m_JwB * wB - m_JwD * wD); float32 impulse = -m_mass * Cdot; m_impulse += impulse; vA += (m_mA * impulse) * m_JvAC; wA += m_iA * impulse * m_JwA; vB += (m_mB * impulse) * m_JvBD; wB += m_iB * impulse * m_JwB; vC -= (m_mC * impulse) * m_JvAC; wC -= m_iC * impulse * m_JwC; vD -= (m_mD * impulse) * m_JvBD; wD -= m_iD * impulse * m_JwD; data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; data.velocities[m_indexC].v = vC; data.velocities[m_indexC].w = wC; data.velocities[m_indexD].v = vD; data.velocities[m_indexD].w = wD; } bool b2GearJoint::SolvePositionConstraints(const b2SolverData& data) { b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Vec2 cC = data.positions[m_indexC].c; float32 aC = data.positions[m_indexC].a; b2Vec2 cD = data.positions[m_indexD].c; float32 aD = data.positions[m_indexD].a; b2Rot qA(aA), qB(aB), qC(aC), qD(aD); float32 linearError = 0.0f; float32 coordinateA, coordinateB; b2Vec2 JvAC, JvBD; float32 JwA, JwB, JwC, JwD; float32 mass = 0.0f; if (m_typeA == e_revoluteJoint) { JvAC.SetZero(); JwA = 1.0f; JwC = 1.0f; mass += m_iA + m_iC; coordinateA = aA - aC - m_referenceAngleA; } else { b2Vec2 u = b2Mul(qC, m_localAxisC); b2Vec2 rC = b2Mul(qC, m_localAnchorC - m_lcC); b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_lcA); JvAC = u; JwC = b2Cross(rC, u); JwA = b2Cross(rA, u); mass += m_mC + m_mA + m_iC * JwC * JwC + m_iA * JwA * JwA; b2Vec2 pC = m_localAnchorC - m_lcC; b2Vec2 pA = b2MulT(qC, rA + (cA - cC)); coordinateA = b2Dot(pA - pC, m_localAxisC); } if (m_typeB == e_revoluteJoint) { JvBD.SetZero(); JwB = m_ratio; JwD = m_ratio; mass += m_ratio * m_ratio * (m_iB + m_iD); coordinateB = aB - aD - m_referenceAngleB; } else { b2Vec2 u = b2Mul(qD, m_localAxisD); b2Vec2 rD = b2Mul(qD, m_localAnchorD - m_lcD); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_lcB); JvBD = m_ratio * u; JwD = m_ratio * b2Cross(rD, u); JwB = m_ratio * b2Cross(rB, u); mass += m_ratio * m_ratio * (m_mD + m_mB) + m_iD * JwD * JwD + m_iB * JwB * JwB; b2Vec2 pD = m_localAnchorD - m_lcD; b2Vec2 pB = b2MulT(qD, rB + (cB - cD)); coordinateB = b2Dot(pB - pD, m_localAxisD); } float32 C = (coordinateA + m_ratio * coordinateB) - m_constant; float32 impulse = 0.0f; if (mass > 0.0f) { impulse = -C / mass; } cA += m_mA * impulse * JvAC; aA += m_iA * impulse * JwA; cB += m_mB * impulse * JvBD; aB += m_iB * impulse * JwB; cC -= m_mC * impulse * JvAC; aC -= m_iC * impulse * JwC; cD -= m_mD * impulse * JvBD; aD -= m_iD * impulse * JwD; data.positions[m_indexA].c = cA; data.positions[m_indexA].a = aA; data.positions[m_indexB].c = cB; data.positions[m_indexB].a = aB; data.positions[m_indexC].c = cC; data.positions[m_indexC].a = aC; data.positions[m_indexD].c = cD; data.positions[m_indexD].a = aD; // TODO_ERIN not implemented return linearError < b2_linearSlop; } b2Vec2 b2GearJoint::GetAnchorA() const { return m_bodyA->GetWorldPoint(m_localAnchorA); } b2Vec2 b2GearJoint::GetAnchorB() const { return m_bodyB->GetWorldPoint(m_localAnchorB); } b2Vec2 b2GearJoint::GetReactionForce(float32 inv_dt) const { b2Vec2 P = m_impulse * m_JvAC; return inv_dt * P; } float32 b2GearJoint::GetReactionTorque(float32 inv_dt) const { float32 L = m_impulse * m_JwA; return inv_dt * L; } void b2GearJoint::SetRatio(float32 ratio) { b2Assert(b2IsValid(ratio)); m_ratio = ratio; } float32 b2GearJoint::GetRatio() const { return m_ratio; } void b2GearJoint::Dump() { int32 indexA = m_bodyA->m_islandIndex; int32 indexB = m_bodyB->m_islandIndex; int32 index1 = m_joint1->m_index; int32 index2 = m_joint2->m_index; b2Log(" b2GearJointDef jd;\n"); b2Log(" jd.bodyA = bodies[%d];\n", indexA); b2Log(" jd.bodyB = bodies[%d];\n", indexB); b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); b2Log(" jd.joint1 = joints[%d];\n", index1); b2Log(" jd.joint2 = joints[%d];\n", index2); b2Log(" jd.ratio = %.15lef;\n", m_ratio); b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2MouseJoint.h0000755000000000000000000000715112316602166023665 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2007 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_MOUSE_JOINT_H #define B2_MOUSE_JOINT_H #include /// Mouse joint definition. This requires a world target point, /// tuning parameters, and the time step. struct b2MouseJointDef : public b2JointDef { b2MouseJointDef() { type = e_mouseJoint; target.Set(0.0f, 0.0f); maxForce = 0.0f; frequencyHz = 5.0f; dampingRatio = 0.7f; } /// The initial world target point. This is assumed /// to coincide with the body anchor initially. b2Vec2 target; /// The maximum constraint force that can be exerted /// to move the candidate body. Usually you will express /// as some multiple of the weight (multiplier * mass * gravity). float32 maxForce; /// The response speed. float32 frequencyHz; /// The damping ratio. 0 = no damping, 1 = critical damping. float32 dampingRatio; }; /// A mouse joint is used to make a point on a body track a /// specified world point. This a soft constraint with a maximum /// force. This allows the constraint to stretch and without /// applying huge forces. /// NOTE: this joint is not documented in the manual because it was /// developed to be used in the testbed. If you want to learn how to /// use the mouse joint, look at the testbed. class b2MouseJoint : public b2Joint { public: /// Implements b2Joint. b2Vec2 GetAnchorA() const; /// Implements b2Joint. b2Vec2 GetAnchorB() const; /// Implements b2Joint. b2Vec2 GetReactionForce(float32 inv_dt) const; /// Implements b2Joint. float32 GetReactionTorque(float32 inv_dt) const; /// Use this to update the target point. void SetTarget(const b2Vec2& target); const b2Vec2& GetTarget() const; /// Set/get the maximum force in Newtons. void SetMaxForce(float32 force); float32 GetMaxForce() const; /// Set/get the frequency in Hertz. void SetFrequency(float32 hz); float32 GetFrequency() const; /// Set/get the damping ratio (dimensionless). void SetDampingRatio(float32 ratio); float32 GetDampingRatio() const; /// The mouse joint does not support dumping. void Dump() { b2Log("Mouse joint dumping is not supported.\n"); } /// Implement b2Joint::ShiftOrigin void ShiftOrigin(const b2Vec2& newOrigin); protected: friend class b2Joint; b2MouseJoint(const b2MouseJointDef* def); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); b2Vec2 m_localAnchorB; b2Vec2 m_targetA; float32 m_frequencyHz; float32 m_dampingRatio; float32 m_beta; // Solver shared b2Vec2 m_impulse; float32 m_maxForce; float32 m_gamma; // Solver temp int32 m_indexA; int32 m_indexB; b2Vec2 m_rB; b2Vec2 m_localCenterB; float32 m_invMassB; float32 m_invIB; b2Mat22 m_mass; b2Vec2 m_C; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2WeldJoint.cpp0000755000000000000000000002074512316602166024027 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include // Point-to-point constraint // C = p2 - p1 // Cdot = v2 - v1 // = v2 + cross(w2, r2) - v1 - cross(w1, r1) // J = [-I -r1_skew I r2_skew ] // Identity used: // w k % (rx i + ry j) = w * (-ry i + rx j) // Angle constraint // C = angle2 - angle1 - referenceAngle // Cdot = w2 - w1 // J = [0 0 -1 0 0 1] // K = invI1 + invI2 void b2WeldJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& anchor) { bodyA = bA; bodyB = bB; localAnchorA = bodyA->GetLocalPoint(anchor); localAnchorB = bodyB->GetLocalPoint(anchor); referenceAngle = bodyB->GetAngle() - bodyA->GetAngle(); } b2WeldJoint::b2WeldJoint(const b2WeldJointDef* def) : b2Joint(def) { m_localAnchorA = def->localAnchorA; m_localAnchorB = def->localAnchorB; m_referenceAngle = def->referenceAngle; m_frequencyHz = def->frequencyHz; m_dampingRatio = def->dampingRatio; m_impulse.SetZero(); } void b2WeldJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexA = m_bodyA->m_islandIndex; m_indexB = m_bodyB->m_islandIndex; m_localCenterA = m_bodyA->m_sweep.localCenter; m_localCenterB = m_bodyB->m_sweep.localCenter; m_invMassA = m_bodyA->m_invMass; m_invMassB = m_bodyB->m_invMass; m_invIA = m_bodyA->m_invI; m_invIB = m_bodyB->m_invI; float32 aA = data.positions[m_indexA].a; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Rot qA(aA), qB(aB); m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); // J = [-I -r1_skew I r2_skew] // [ 0 -1 0 1] // r_skew = [-ry; rx] // Matlab // K = [ mA+r1y^2*iA+mB+r2y^2*iB, -r1y*iA*r1x-r2y*iB*r2x, -r1y*iA-r2y*iB] // [ -r1y*iA*r1x-r2y*iB*r2x, mA+r1x^2*iA+mB+r2x^2*iB, r1x*iA+r2x*iB] // [ -r1y*iA-r2y*iB, r1x*iA+r2x*iB, iA+iB] float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; b2Mat33 K; K.ex.x = mA + mB + m_rA.y * m_rA.y * iA + m_rB.y * m_rB.y * iB; K.ey.x = -m_rA.y * m_rA.x * iA - m_rB.y * m_rB.x * iB; K.ez.x = -m_rA.y * iA - m_rB.y * iB; K.ex.y = K.ey.x; K.ey.y = mA + mB + m_rA.x * m_rA.x * iA + m_rB.x * m_rB.x * iB; K.ez.y = m_rA.x * iA + m_rB.x * iB; K.ex.z = K.ez.x; K.ey.z = K.ez.y; K.ez.z = iA + iB; if (m_frequencyHz > 0.0f) { K.GetInverse22(&m_mass); float32 invM = iA + iB; float32 m = invM > 0.0f ? 1.0f / invM : 0.0f; float32 C = aB - aA - m_referenceAngle; // Frequency float32 omega = 2.0f * b2_pi * m_frequencyHz; // Damping coefficient float32 d = 2.0f * m * m_dampingRatio * omega; // Spring stiffness float32 k = m * omega * omega; // magic formulas float32 h = data.step.dt; m_gamma = h * (d + h * k); m_gamma = m_gamma != 0.0f ? 1.0f / m_gamma : 0.0f; m_bias = C * h * k * m_gamma; invM += m_gamma; m_mass.ez.z = invM != 0.0f ? 1.0f / invM : 0.0f; } else { K.GetSymInverse33(&m_mass); m_gamma = 0.0f; m_bias = 0.0f; } if (data.step.warmStarting) { // Scale impulses to support a variable time step. m_impulse *= data.step.dtRatio; b2Vec2 P(m_impulse.x, m_impulse.y); vA -= mA * P; wA -= iA * (b2Cross(m_rA, P) + m_impulse.z); vB += mB * P; wB += iB * (b2Cross(m_rB, P) + m_impulse.z); } else { m_impulse.SetZero(); } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } void b2WeldJoint::SolveVelocityConstraints(const b2SolverData& data) { b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; if (m_frequencyHz > 0.0f) { float32 Cdot2 = wB - wA; float32 impulse2 = -m_mass.ez.z * (Cdot2 + m_bias + m_gamma * m_impulse.z); m_impulse.z += impulse2; wA -= iA * impulse2; wB += iB * impulse2; b2Vec2 Cdot1 = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA); b2Vec2 impulse1 = -b2Mul22(m_mass, Cdot1); m_impulse.x += impulse1.x; m_impulse.y += impulse1.y; b2Vec2 P = impulse1; vA -= mA * P; wA -= iA * b2Cross(m_rA, P); vB += mB * P; wB += iB * b2Cross(m_rB, P); } else { b2Vec2 Cdot1 = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA); float32 Cdot2 = wB - wA; b2Vec3 Cdot(Cdot1.x, Cdot1.y, Cdot2); b2Vec3 impulse = -b2Mul(m_mass, Cdot); m_impulse += impulse; b2Vec2 P(impulse.x, impulse.y); vA -= mA * P; wA -= iA * (b2Cross(m_rA, P) + impulse.z); vB += mB * P; wB += iB * (b2Cross(m_rB, P) + impulse.z); } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } bool b2WeldJoint::SolvePositionConstraints(const b2SolverData& data) { b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Rot qA(aA), qB(aB); float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); float32 positionError, angularError; b2Mat33 K; K.ex.x = mA + mB + rA.y * rA.y * iA + rB.y * rB.y * iB; K.ey.x = -rA.y * rA.x * iA - rB.y * rB.x * iB; K.ez.x = -rA.y * iA - rB.y * iB; K.ex.y = K.ey.x; K.ey.y = mA + mB + rA.x * rA.x * iA + rB.x * rB.x * iB; K.ez.y = rA.x * iA + rB.x * iB; K.ex.z = K.ez.x; K.ey.z = K.ez.y; K.ez.z = iA + iB; if (m_frequencyHz > 0.0f) { b2Vec2 C1 = cB + rB - cA - rA; positionError = C1.Length(); angularError = 0.0f; b2Vec2 P = -K.Solve22(C1); cA -= mA * P; aA -= iA * b2Cross(rA, P); cB += mB * P; aB += iB * b2Cross(rB, P); } else { b2Vec2 C1 = cB + rB - cA - rA; float32 C2 = aB - aA - m_referenceAngle; positionError = C1.Length(); angularError = b2Abs(C2); b2Vec3 C(C1.x, C1.y, C2); b2Vec3 impulse = -K.Solve33(C); b2Vec2 P(impulse.x, impulse.y); cA -= mA * P; aA -= iA * (b2Cross(rA, P) + impulse.z); cB += mB * P; aB += iB * (b2Cross(rB, P) + impulse.z); } data.positions[m_indexA].c = cA; data.positions[m_indexA].a = aA; data.positions[m_indexB].c = cB; data.positions[m_indexB].a = aB; return positionError <= b2_linearSlop && angularError <= b2_angularSlop; } b2Vec2 b2WeldJoint::GetAnchorA() const { return m_bodyA->GetWorldPoint(m_localAnchorA); } b2Vec2 b2WeldJoint::GetAnchorB() const { return m_bodyB->GetWorldPoint(m_localAnchorB); } b2Vec2 b2WeldJoint::GetReactionForce(float32 inv_dt) const { b2Vec2 P(m_impulse.x, m_impulse.y); return inv_dt * P; } float32 b2WeldJoint::GetReactionTorque(float32 inv_dt) const { return inv_dt * m_impulse.z; } void b2WeldJoint::Dump() { int32 indexA = m_bodyA->m_islandIndex; int32 indexB = m_bodyB->m_islandIndex; b2Log(" b2WeldJointDef jd;\n"); b2Log(" jd.bodyA = bodies[%d];\n", indexA); b2Log(" jd.bodyB = bodies[%d];\n", indexB); b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); b2Log(" jd.referenceAngle = %.15lef;\n", m_referenceAngle); b2Log(" jd.frequencyHz = %.15lef;\n", m_frequencyHz); b2Log(" jd.dampingRatio = %.15lef;\n", m_dampingRatio); b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp0000755000000000000000000004072112316602166025063 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include // Linear constraint (point-to-line) // d = p2 - p1 = x2 + r2 - x1 - r1 // C = dot(perp, d) // Cdot = dot(d, cross(w1, perp)) + dot(perp, v2 + cross(w2, r2) - v1 - cross(w1, r1)) // = -dot(perp, v1) - dot(cross(d + r1, perp), w1) + dot(perp, v2) + dot(cross(r2, perp), v2) // J = [-perp, -cross(d + r1, perp), perp, cross(r2,perp)] // // Angular constraint // C = a2 - a1 + a_initial // Cdot = w2 - w1 // J = [0 0 -1 0 0 1] // // K = J * invM * JT // // J = [-a -s1 a s2] // [0 -1 0 1] // a = perp // s1 = cross(d + r1, a) = cross(p2 - x1, a) // s2 = cross(r2, a) = cross(p2 - x2, a) // Motor/Limit linear constraint // C = dot(ax1, d) // Cdot = = -dot(ax1, v1) - dot(cross(d + r1, ax1), w1) + dot(ax1, v2) + dot(cross(r2, ax1), v2) // J = [-ax1 -cross(d+r1,ax1) ax1 cross(r2,ax1)] // Block Solver // We develop a block solver that includes the joint limit. This makes the limit stiff (inelastic) even // when the mass has poor distribution (leading to large torques about the joint anchor points). // // The Jacobian has 3 rows: // J = [-uT -s1 uT s2] // linear // [0 -1 0 1] // angular // [-vT -a1 vT a2] // limit // // u = perp // v = axis // s1 = cross(d + r1, u), s2 = cross(r2, u) // a1 = cross(d + r1, v), a2 = cross(r2, v) // M * (v2 - v1) = JT * df // J * v2 = bias // // v2 = v1 + invM * JT * df // J * (v1 + invM * JT * df) = bias // K * df = bias - J * v1 = -Cdot // K = J * invM * JT // Cdot = J * v1 - bias // // Now solve for f2. // df = f2 - f1 // K * (f2 - f1) = -Cdot // f2 = invK * (-Cdot) + f1 // // Clamp accumulated limit impulse. // lower: f2(3) = max(f2(3), 0) // upper: f2(3) = min(f2(3), 0) // // Solve for correct f2(1:2) // K(1:2, 1:2) * f2(1:2) = -Cdot(1:2) - K(1:2,3) * f2(3) + K(1:2,1:3) * f1 // = -Cdot(1:2) - K(1:2,3) * f2(3) + K(1:2,1:2) * f1(1:2) + K(1:2,3) * f1(3) // K(1:2, 1:2) * f2(1:2) = -Cdot(1:2) - K(1:2,3) * (f2(3) - f1(3)) + K(1:2,1:2) * f1(1:2) // f2(1:2) = invK(1:2,1:2) * (-Cdot(1:2) - K(1:2,3) * (f2(3) - f1(3))) + f1(1:2) // // Now compute impulse to be applied: // df = f2 - f1 void b2PrismaticJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& anchor, const b2Vec2& axis) { bodyA = bA; bodyB = bB; localAnchorA = bodyA->GetLocalPoint(anchor); localAnchorB = bodyB->GetLocalPoint(anchor); localAxisA = bodyA->GetLocalVector(axis); referenceAngle = bodyB->GetAngle() - bodyA->GetAngle(); } b2PrismaticJoint::b2PrismaticJoint(const b2PrismaticJointDef* def) : b2Joint(def) { m_localAnchorA = def->localAnchorA; m_localAnchorB = def->localAnchorB; m_localXAxisA = def->localAxisA; m_localXAxisA.Normalize(); m_localYAxisA = b2Cross(1.0f, m_localXAxisA); m_referenceAngle = def->referenceAngle; m_impulse.SetZero(); m_motorMass = 0.0f; m_motorImpulse = 0.0f; m_lowerTranslation = def->lowerTranslation; m_upperTranslation = def->upperTranslation; m_maxMotorForce = def->maxMotorForce; m_motorSpeed = def->motorSpeed; m_enableLimit = def->enableLimit; m_enableMotor = def->enableMotor; m_limitState = e_inactiveLimit; m_axis.SetZero(); m_perp.SetZero(); } void b2PrismaticJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexA = m_bodyA->m_islandIndex; m_indexB = m_bodyB->m_islandIndex; m_localCenterA = m_bodyA->m_sweep.localCenter; m_localCenterB = m_bodyB->m_sweep.localCenter; m_invMassA = m_bodyA->m_invMass; m_invMassB = m_bodyB->m_invMass; m_invIA = m_bodyA->m_invI; m_invIB = m_bodyB->m_invI; b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Rot qA(aA), qB(aB); // Compute the effective masses. b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); b2Vec2 d = (cB - cA) + rB - rA; float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; // Compute motor Jacobian and effective mass. { m_axis = b2Mul(qA, m_localXAxisA); m_a1 = b2Cross(d + rA, m_axis); m_a2 = b2Cross(rB, m_axis); m_motorMass = mA + mB + iA * m_a1 * m_a1 + iB * m_a2 * m_a2; if (m_motorMass > 0.0f) { m_motorMass = 1.0f / m_motorMass; } } // Prismatic constraint. { m_perp = b2Mul(qA, m_localYAxisA); m_s1 = b2Cross(d + rA, m_perp); m_s2 = b2Cross(rB, m_perp); float32 k11 = mA + mB + iA * m_s1 * m_s1 + iB * m_s2 * m_s2; float32 k12 = iA * m_s1 + iB * m_s2; float32 k13 = iA * m_s1 * m_a1 + iB * m_s2 * m_a2; float32 k22 = iA + iB; if (k22 == 0.0f) { // For bodies with fixed rotation. k22 = 1.0f; } float32 k23 = iA * m_a1 + iB * m_a2; float32 k33 = mA + mB + iA * m_a1 * m_a1 + iB * m_a2 * m_a2; m_K.ex.Set(k11, k12, k13); m_K.ey.Set(k12, k22, k23); m_K.ez.Set(k13, k23, k33); } // Compute motor and limit terms. if (m_enableLimit) { float32 jointTranslation = b2Dot(m_axis, d); if (b2Abs(m_upperTranslation - m_lowerTranslation) < 2.0f * b2_linearSlop) { m_limitState = e_equalLimits; } else if (jointTranslation <= m_lowerTranslation) { if (m_limitState != e_atLowerLimit) { m_limitState = e_atLowerLimit; m_impulse.z = 0.0f; } } else if (jointTranslation >= m_upperTranslation) { if (m_limitState != e_atUpperLimit) { m_limitState = e_atUpperLimit; m_impulse.z = 0.0f; } } else { m_limitState = e_inactiveLimit; m_impulse.z = 0.0f; } } else { m_limitState = e_inactiveLimit; m_impulse.z = 0.0f; } if (m_enableMotor == false) { m_motorImpulse = 0.0f; } if (data.step.warmStarting) { // Account for variable time step. m_impulse *= data.step.dtRatio; m_motorImpulse *= data.step.dtRatio; b2Vec2 P = m_impulse.x * m_perp + (m_motorImpulse + m_impulse.z) * m_axis; float32 LA = m_impulse.x * m_s1 + m_impulse.y + (m_motorImpulse + m_impulse.z) * m_a1; float32 LB = m_impulse.x * m_s2 + m_impulse.y + (m_motorImpulse + m_impulse.z) * m_a2; vA -= mA * P; wA -= iA * LA; vB += mB * P; wB += iB * LB; } else { m_impulse.SetZero(); m_motorImpulse = 0.0f; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } void b2PrismaticJoint::SolveVelocityConstraints(const b2SolverData& data) { b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; // Solve linear motor constraint. if (m_enableMotor && m_limitState != e_equalLimits) { float32 Cdot = b2Dot(m_axis, vB - vA) + m_a2 * wB - m_a1 * wA; float32 impulse = m_motorMass * (m_motorSpeed - Cdot); float32 oldImpulse = m_motorImpulse; float32 maxImpulse = data.step.dt * m_maxMotorForce; m_motorImpulse = b2Clamp(m_motorImpulse + impulse, -maxImpulse, maxImpulse); impulse = m_motorImpulse - oldImpulse; b2Vec2 P = impulse * m_axis; float32 LA = impulse * m_a1; float32 LB = impulse * m_a2; vA -= mA * P; wA -= iA * LA; vB += mB * P; wB += iB * LB; } b2Vec2 Cdot1; Cdot1.x = b2Dot(m_perp, vB - vA) + m_s2 * wB - m_s1 * wA; Cdot1.y = wB - wA; if (m_enableLimit && m_limitState != e_inactiveLimit) { // Solve prismatic and limit constraint in block form. float32 Cdot2; Cdot2 = b2Dot(m_axis, vB - vA) + m_a2 * wB - m_a1 * wA; b2Vec3 Cdot(Cdot1.x, Cdot1.y, Cdot2); b2Vec3 f1 = m_impulse; b2Vec3 df = m_K.Solve33(-Cdot); m_impulse += df; if (m_limitState == e_atLowerLimit) { m_impulse.z = b2Max(m_impulse.z, 0.0f); } else if (m_limitState == e_atUpperLimit) { m_impulse.z = b2Min(m_impulse.z, 0.0f); } // f2(1:2) = invK(1:2,1:2) * (-Cdot(1:2) - K(1:2,3) * (f2(3) - f1(3))) + f1(1:2) b2Vec2 b = -Cdot1 - (m_impulse.z - f1.z) * b2Vec2(m_K.ez.x, m_K.ez.y); b2Vec2 f2r = m_K.Solve22(b) + b2Vec2(f1.x, f1.y); m_impulse.x = f2r.x; m_impulse.y = f2r.y; df = m_impulse - f1; b2Vec2 P = df.x * m_perp + df.z * m_axis; float32 LA = df.x * m_s1 + df.y + df.z * m_a1; float32 LB = df.x * m_s2 + df.y + df.z * m_a2; vA -= mA * P; wA -= iA * LA; vB += mB * P; wB += iB * LB; } else { // Limit is inactive, just solve the prismatic constraint in block form. b2Vec2 df = m_K.Solve22(-Cdot1); m_impulse.x += df.x; m_impulse.y += df.y; b2Vec2 P = df.x * m_perp; float32 LA = df.x * m_s1 + df.y; float32 LB = df.x * m_s2 + df.y; vA -= mA * P; wA -= iA * LA; vB += mB * P; wB += iB * LB; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } bool b2PrismaticJoint::SolvePositionConstraints(const b2SolverData& data) { b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Rot qA(aA), qB(aB); float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; // Compute fresh Jacobians b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); b2Vec2 d = cB + rB - cA - rA; b2Vec2 axis = b2Mul(qA, m_localXAxisA); float32 a1 = b2Cross(d + rA, axis); float32 a2 = b2Cross(rB, axis); b2Vec2 perp = b2Mul(qA, m_localYAxisA); float32 s1 = b2Cross(d + rA, perp); float32 s2 = b2Cross(rB, perp); b2Vec3 impulse; b2Vec2 C1; C1.x = b2Dot(perp, d); C1.y = aB - aA - m_referenceAngle; float32 linearError = b2Abs(C1.x); float32 angularError = b2Abs(C1.y); bool active = false; float32 C2 = 0.0f; if (m_enableLimit) { float32 translation = b2Dot(axis, d); if (b2Abs(m_upperTranslation - m_lowerTranslation) < 2.0f * b2_linearSlop) { // Prevent large angular corrections C2 = b2Clamp(translation, -b2_maxLinearCorrection, b2_maxLinearCorrection); linearError = b2Max(linearError, b2Abs(translation)); active = true; } else if (translation <= m_lowerTranslation) { // Prevent large linear corrections and allow some slop. C2 = b2Clamp(translation - m_lowerTranslation + b2_linearSlop, -b2_maxLinearCorrection, 0.0f); linearError = b2Max(linearError, m_lowerTranslation - translation); active = true; } else if (translation >= m_upperTranslation) { // Prevent large linear corrections and allow some slop. C2 = b2Clamp(translation - m_upperTranslation - b2_linearSlop, 0.0f, b2_maxLinearCorrection); linearError = b2Max(linearError, translation - m_upperTranslation); active = true; } } if (active) { float32 k11 = mA + mB + iA * s1 * s1 + iB * s2 * s2; float32 k12 = iA * s1 + iB * s2; float32 k13 = iA * s1 * a1 + iB * s2 * a2; float32 k22 = iA + iB; if (k22 == 0.0f) { // For fixed rotation k22 = 1.0f; } float32 k23 = iA * a1 + iB * a2; float32 k33 = mA + mB + iA * a1 * a1 + iB * a2 * a2; b2Mat33 K; K.ex.Set(k11, k12, k13); K.ey.Set(k12, k22, k23); K.ez.Set(k13, k23, k33); b2Vec3 C; C.x = C1.x; C.y = C1.y; C.z = C2; impulse = K.Solve33(-C); } else { float32 k11 = mA + mB + iA * s1 * s1 + iB * s2 * s2; float32 k12 = iA * s1 + iB * s2; float32 k22 = iA + iB; if (k22 == 0.0f) { k22 = 1.0f; } b2Mat22 K; K.ex.Set(k11, k12); K.ey.Set(k12, k22); b2Vec2 impulse1 = K.Solve(-C1); impulse.x = impulse1.x; impulse.y = impulse1.y; impulse.z = 0.0f; } b2Vec2 P = impulse.x * perp + impulse.z * axis; float32 LA = impulse.x * s1 + impulse.y + impulse.z * a1; float32 LB = impulse.x * s2 + impulse.y + impulse.z * a2; cA -= mA * P; aA -= iA * LA; cB += mB * P; aB += iB * LB; data.positions[m_indexA].c = cA; data.positions[m_indexA].a = aA; data.positions[m_indexB].c = cB; data.positions[m_indexB].a = aB; return linearError <= b2_linearSlop && angularError <= b2_angularSlop; } b2Vec2 b2PrismaticJoint::GetAnchorA() const { return m_bodyA->GetWorldPoint(m_localAnchorA); } b2Vec2 b2PrismaticJoint::GetAnchorB() const { return m_bodyB->GetWorldPoint(m_localAnchorB); } b2Vec2 b2PrismaticJoint::GetReactionForce(float32 inv_dt) const { return inv_dt * (m_impulse.x * m_perp + (m_motorImpulse + m_impulse.z) * m_axis); } float32 b2PrismaticJoint::GetReactionTorque(float32 inv_dt) const { return inv_dt * m_impulse.y; } float32 b2PrismaticJoint::GetJointTranslation() const { b2Vec2 pA = m_bodyA->GetWorldPoint(m_localAnchorA); b2Vec2 pB = m_bodyB->GetWorldPoint(m_localAnchorB); b2Vec2 d = pB - pA; b2Vec2 axis = m_bodyA->GetWorldVector(m_localXAxisA); float32 translation = b2Dot(d, axis); return translation; } float32 b2PrismaticJoint::GetJointSpeed() const { b2Body* bA = m_bodyA; b2Body* bB = m_bodyB; b2Vec2 rA = b2Mul(bA->m_xf.q, m_localAnchorA - bA->m_sweep.localCenter); b2Vec2 rB = b2Mul(bB->m_xf.q, m_localAnchorB - bB->m_sweep.localCenter); b2Vec2 p1 = bA->m_sweep.c + rA; b2Vec2 p2 = bB->m_sweep.c + rB; b2Vec2 d = p2 - p1; b2Vec2 axis = b2Mul(bA->m_xf.q, m_localXAxisA); b2Vec2 vA = bA->m_linearVelocity; b2Vec2 vB = bB->m_linearVelocity; float32 wA = bA->m_angularVelocity; float32 wB = bB->m_angularVelocity; float32 speed = b2Dot(d, b2Cross(wA, axis)) + b2Dot(axis, vB + b2Cross(wB, rB) - vA - b2Cross(wA, rA)); return speed; } bool b2PrismaticJoint::IsLimitEnabled() const { return m_enableLimit; } void b2PrismaticJoint::EnableLimit(bool flag) { if (flag != m_enableLimit) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_enableLimit = flag; m_impulse.z = 0.0f; } } float32 b2PrismaticJoint::GetLowerLimit() const { return m_lowerTranslation; } float32 b2PrismaticJoint::GetUpperLimit() const { return m_upperTranslation; } void b2PrismaticJoint::SetLimits(float32 lower, float32 upper) { b2Assert(lower <= upper); if (lower != m_lowerTranslation || upper != m_upperTranslation) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_lowerTranslation = lower; m_upperTranslation = upper; m_impulse.z = 0.0f; } } bool b2PrismaticJoint::IsMotorEnabled() const { return m_enableMotor; } void b2PrismaticJoint::EnableMotor(bool flag) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_enableMotor = flag; } void b2PrismaticJoint::SetMotorSpeed(float32 speed) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_motorSpeed = speed; } void b2PrismaticJoint::SetMaxMotorForce(float32 force) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_maxMotorForce = force; } float32 b2PrismaticJoint::GetMotorForce(float32 inv_dt) const { return inv_dt * m_motorImpulse; } void b2PrismaticJoint::Dump() { int32 indexA = m_bodyA->m_islandIndex; int32 indexB = m_bodyB->m_islandIndex; b2Log(" b2PrismaticJointDef jd;\n"); b2Log(" jd.bodyA = bodies[%d];\n", indexA); b2Log(" jd.bodyB = bodies[%d];\n", indexB); b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); b2Log(" jd.localAxisA.Set(%.15lef, %.15lef);\n", m_localXAxisA.x, m_localXAxisA.y); b2Log(" jd.referenceAngle = %.15lef;\n", m_referenceAngle); b2Log(" jd.enableLimit = bool(%d);\n", m_enableLimit); b2Log(" jd.lowerTranslation = %.15lef;\n", m_lowerTranslation); b2Log(" jd.upperTranslation = %.15lef;\n", m_upperTranslation); b2Log(" jd.enableMotor = bool(%d);\n", m_enableMotor); b2Log(" jd.motorSpeed = %.15lef;\n", m_motorSpeed); b2Log(" jd.maxMotorForce = %.15lef;\n", m_maxMotorForce); b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.h0000755000000000000000000001341512316602166024530 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_PRISMATIC_JOINT_H #define B2_PRISMATIC_JOINT_H #include /// Prismatic joint definition. This requires defining a line of /// motion using an axis and an anchor point. The definition uses local /// anchor points and a local axis so that the initial configuration /// can violate the constraint slightly. The joint translation is zero /// when the local anchor points coincide in world space. Using local /// anchors and a local axis helps when saving and loading a game. struct b2PrismaticJointDef : public b2JointDef { b2PrismaticJointDef() { type = e_prismaticJoint; localAnchorA.SetZero(); localAnchorB.SetZero(); localAxisA.Set(1.0f, 0.0f); referenceAngle = 0.0f; enableLimit = false; lowerTranslation = 0.0f; upperTranslation = 0.0f; enableMotor = false; maxMotorForce = 0.0f; motorSpeed = 0.0f; } /// Initialize the bodies, anchors, axis, and reference angle using the world /// anchor and unit world axis. void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchor, const b2Vec2& axis); /// The local anchor point relative to bodyA's origin. b2Vec2 localAnchorA; /// The local anchor point relative to bodyB's origin. b2Vec2 localAnchorB; /// The local translation unit axis in bodyA. b2Vec2 localAxisA; /// The constrained angle between the bodies: bodyB_angle - bodyA_angle. float32 referenceAngle; /// Enable/disable the joint limit. bool enableLimit; /// The lower translation limit, usually in meters. float32 lowerTranslation; /// The upper translation limit, usually in meters. float32 upperTranslation; /// Enable/disable the joint motor. bool enableMotor; /// The maximum motor torque, usually in N-m. float32 maxMotorForce; /// The desired motor speed in radians per second. float32 motorSpeed; }; /// A prismatic joint. This joint provides one degree of freedom: translation /// along an axis fixed in bodyA. Relative rotation is prevented. You can /// use a joint limit to restrict the range of motion and a joint motor to /// drive the motion or to model joint friction. class b2PrismaticJoint : public b2Joint { public: b2Vec2 GetAnchorA() const; b2Vec2 GetAnchorB() const; b2Vec2 GetReactionForce(float32 inv_dt) const; float32 GetReactionTorque(float32 inv_dt) const; /// The local anchor point relative to bodyA's origin. const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } /// The local anchor point relative to bodyB's origin. const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } /// The local joint axis relative to bodyA. const b2Vec2& GetLocalAxisA() const { return m_localXAxisA; } /// Get the reference angle. float32 GetReferenceAngle() const { return m_referenceAngle; } /// Get the current joint translation, usually in meters. float32 GetJointTranslation() const; /// Get the current joint translation speed, usually in meters per second. float32 GetJointSpeed() const; /// Is the joint limit enabled? bool IsLimitEnabled() const; /// Enable/disable the joint limit. void EnableLimit(bool flag); /// Get the lower joint limit, usually in meters. float32 GetLowerLimit() const; /// Get the upper joint limit, usually in meters. float32 GetUpperLimit() const; /// Set the joint limits, usually in meters. void SetLimits(float32 lower, float32 upper); /// Is the joint motor enabled? bool IsMotorEnabled() const; /// Enable/disable the joint motor. void EnableMotor(bool flag); /// Set the motor speed, usually in meters per second. void SetMotorSpeed(float32 speed); /// Get the motor speed, usually in meters per second. float32 GetMotorSpeed() const; /// Set the maximum motor force, usually in N. void SetMaxMotorForce(float32 force); float32 GetMaxMotorForce() const { return m_maxMotorForce; } /// Get the current motor force given the inverse time step, usually in N. float32 GetMotorForce(float32 inv_dt) const; /// Dump to b2Log void Dump(); protected: friend class b2Joint; friend class b2GearJoint; b2PrismaticJoint(const b2PrismaticJointDef* def); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); // Solver shared b2Vec2 m_localAnchorA; b2Vec2 m_localAnchorB; b2Vec2 m_localXAxisA; b2Vec2 m_localYAxisA; float32 m_referenceAngle; b2Vec3 m_impulse; float32 m_motorImpulse; float32 m_lowerTranslation; float32 m_upperTranslation; float32 m_maxMotorForce; float32 m_motorSpeed; bool m_enableLimit; bool m_enableMotor; b2LimitState m_limitState; // Solver temp int32 m_indexA; int32 m_indexB; b2Vec2 m_localCenterA; b2Vec2 m_localCenterB; float32 m_invMassA; float32 m_invMassB; float32 m_invIA; float32 m_invIB; b2Vec2 m_axis, m_perp; float32 m_s1, m_s2; float32 m_a1, m_a2; b2Mat33 m_K; float32 m_motorMass; }; inline float32 b2PrismaticJoint::GetMotorSpeed() const { return m_motorSpeed; } #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2GearJoint.h0000755000000000000000000000660712316602166023460 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_GEAR_JOINT_H #define B2_GEAR_JOINT_H #include /// Gear joint definition. This definition requires two existing /// revolute or prismatic joints (any combination will work). struct b2GearJointDef : public b2JointDef { b2GearJointDef() { type = e_gearJoint; joint1 = NULL; joint2 = NULL; ratio = 1.0f; } /// The first revolute/prismatic joint attached to the gear joint. b2Joint* joint1; /// The second revolute/prismatic joint attached to the gear joint. b2Joint* joint2; /// The gear ratio. /// @see b2GearJoint for explanation. float32 ratio; }; /// A gear joint is used to connect two joints together. Either joint /// can be a revolute or prismatic joint. You specify a gear ratio /// to bind the motions together: /// coordinate1 + ratio * coordinate2 = constant /// The ratio can be negative or positive. If one joint is a revolute joint /// and the other joint is a prismatic joint, then the ratio will have units /// of length or units of 1/length. /// @warning You have to manually destroy the gear joint if joint1 or joint2 /// is destroyed. class b2GearJoint : public b2Joint { public: b2Vec2 GetAnchorA() const; b2Vec2 GetAnchorB() const; b2Vec2 GetReactionForce(float32 inv_dt) const; float32 GetReactionTorque(float32 inv_dt) const; /// Get the first joint. b2Joint* GetJoint1() { return m_joint1; } /// Get the second joint. b2Joint* GetJoint2() { return m_joint2; } /// Set/Get the gear ratio. void SetRatio(float32 ratio); float32 GetRatio() const; /// Dump joint to dmLog void Dump(); protected: friend class b2Joint; b2GearJoint(const b2GearJointDef* data); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); b2Joint* m_joint1; b2Joint* m_joint2; b2JointType m_typeA; b2JointType m_typeB; // Body A is connected to body C // Body B is connected to body D b2Body* m_bodyC; b2Body* m_bodyD; // Solver shared b2Vec2 m_localAnchorA; b2Vec2 m_localAnchorB; b2Vec2 m_localAnchorC; b2Vec2 m_localAnchorD; b2Vec2 m_localAxisC; b2Vec2 m_localAxisD; float32 m_referenceAngleA; float32 m_referenceAngleB; float32 m_constant; float32 m_ratio; float32 m_impulse; // Solver temp int32 m_indexA, m_indexB, m_indexC, m_indexD; b2Vec2 m_lcA, m_lcB, m_lcC, m_lcD; float32 m_mA, m_mB, m_mC, m_mD; float32 m_iA, m_iB, m_iC, m_iD; b2Vec2 m_JvAC, m_JvBD; float32 m_JwA, m_JwB, m_JwC, m_JwD; float32 m_mass; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2DistanceJoint.h0000755000000000000000000001075312316602166024331 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2007 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_DISTANCE_JOINT_H #define B2_DISTANCE_JOINT_H #include /// Distance joint definition. This requires defining an /// anchor point on both bodies and the non-zero length of the /// distance joint. The definition uses local anchor points /// so that the initial configuration can violate the constraint /// slightly. This helps when saving and loading a game. /// @warning Do not use a zero or short length. struct b2DistanceJointDef : public b2JointDef { b2DistanceJointDef() { type = e_distanceJoint; localAnchorA.Set(0.0f, 0.0f); localAnchorB.Set(0.0f, 0.0f); length = 1.0f; frequencyHz = 0.0f; dampingRatio = 0.0f; } /// Initialize the bodies, anchors, and length using the world /// anchors. void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchorA, const b2Vec2& anchorB); /// The local anchor point relative to bodyA's origin. b2Vec2 localAnchorA; /// The local anchor point relative to bodyB's origin. b2Vec2 localAnchorB; /// The natural length between the anchor points. float32 length; /// The mass-spring-damper frequency in Hertz. A value of 0 /// disables softness. float32 frequencyHz; /// The damping ratio. 0 = no damping, 1 = critical damping. float32 dampingRatio; }; /// A distance joint constrains two points on two bodies /// to remain at a fixed distance from each other. You can view /// this as a massless, rigid rod. class b2DistanceJoint : public b2Joint { public: b2Vec2 GetAnchorA() const; b2Vec2 GetAnchorB() const; /// Get the reaction force given the inverse time step. /// Unit is N. b2Vec2 GetReactionForce(float32 inv_dt) const; /// Get the reaction torque given the inverse time step. /// Unit is N*m. This is always zero for a distance joint. float32 GetReactionTorque(float32 inv_dt) const; /// The local anchor point relative to bodyA's origin. const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } /// The local anchor point relative to bodyB's origin. const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } /// Set/get the natural length. /// Manipulating the length can lead to non-physical behavior when the frequency is zero. void SetLength(float32 length); float32 GetLength() const; /// Set/get frequency in Hz. void SetFrequency(float32 hz); float32 GetFrequency() const; /// Set/get damping ratio. void SetDampingRatio(float32 ratio); float32 GetDampingRatio() const; /// Dump joint to dmLog void Dump(); protected: friend class b2Joint; b2DistanceJoint(const b2DistanceJointDef* data); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); float32 m_frequencyHz; float32 m_dampingRatio; float32 m_bias; // Solver shared b2Vec2 m_localAnchorA; b2Vec2 m_localAnchorB; float32 m_gamma; float32 m_impulse; float32 m_length; // Solver temp int32 m_indexA; int32 m_indexB; b2Vec2 m_u; b2Vec2 m_rA; b2Vec2 m_rB; b2Vec2 m_localCenterA; b2Vec2 m_localCenterB; float32 m_invMassA; float32 m_invMassB; float32 m_invIA; float32 m_invIB; float32 m_mass; }; inline void b2DistanceJoint::SetLength(float32 length) { m_length = length; } inline float32 b2DistanceJoint::GetLength() const { return m_length; } inline void b2DistanceJoint::SetFrequency(float32 hz) { m_frequencyHz = hz; } inline float32 b2DistanceJoint::GetFrequency() const { return m_frequencyHz; } inline void b2DistanceJoint::SetDampingRatio(float32 ratio) { m_dampingRatio = ratio; } inline float32 b2DistanceJoint::GetDampingRatio() const { return m_dampingRatio; } #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2WheelJoint.cpp0000755000000000000000000002451312316602166024175 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2007 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include // Linear constraint (point-to-line) // d = pB - pA = xB + rB - xA - rA // C = dot(ay, d) // Cdot = dot(d, cross(wA, ay)) + dot(ay, vB + cross(wB, rB) - vA - cross(wA, rA)) // = -dot(ay, vA) - dot(cross(d + rA, ay), wA) + dot(ay, vB) + dot(cross(rB, ay), vB) // J = [-ay, -cross(d + rA, ay), ay, cross(rB, ay)] // Spring linear constraint // C = dot(ax, d) // Cdot = = -dot(ax, vA) - dot(cross(d + rA, ax), wA) + dot(ax, vB) + dot(cross(rB, ax), vB) // J = [-ax -cross(d+rA, ax) ax cross(rB, ax)] // Motor rotational constraint // Cdot = wB - wA // J = [0 0 -1 0 0 1] void b2WheelJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& anchor, const b2Vec2& axis) { bodyA = bA; bodyB = bB; localAnchorA = bodyA->GetLocalPoint(anchor); localAnchorB = bodyB->GetLocalPoint(anchor); localAxisA = bodyA->GetLocalVector(axis); } b2WheelJoint::b2WheelJoint(const b2WheelJointDef* def) : b2Joint(def) { m_localAnchorA = def->localAnchorA; m_localAnchorB = def->localAnchorB; m_localXAxisA = def->localAxisA; m_localYAxisA = b2Cross(1.0f, m_localXAxisA); m_mass = 0.0f; m_impulse = 0.0f; m_motorMass = 0.0f; m_motorImpulse = 0.0f; m_springMass = 0.0f; m_springImpulse = 0.0f; m_maxMotorTorque = def->maxMotorTorque; m_motorSpeed = def->motorSpeed; m_enableMotor = def->enableMotor; m_frequencyHz = def->frequencyHz; m_dampingRatio = def->dampingRatio; m_bias = 0.0f; m_gamma = 0.0f; m_ax.SetZero(); m_ay.SetZero(); } void b2WheelJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexA = m_bodyA->m_islandIndex; m_indexB = m_bodyB->m_islandIndex; m_localCenterA = m_bodyA->m_sweep.localCenter; m_localCenterB = m_bodyB->m_sweep.localCenter; m_invMassA = m_bodyA->m_invMass; m_invMassB = m_bodyB->m_invMass; m_invIA = m_bodyA->m_invI; m_invIB = m_bodyB->m_invI; float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Rot qA(aA), qB(aB); // Compute the effective masses. b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); b2Vec2 d = cB + rB - cA - rA; // Point to line constraint { m_ay = b2Mul(qA, m_localYAxisA); m_sAy = b2Cross(d + rA, m_ay); m_sBy = b2Cross(rB, m_ay); m_mass = mA + mB + iA * m_sAy * m_sAy + iB * m_sBy * m_sBy; if (m_mass > 0.0f) { m_mass = 1.0f / m_mass; } } // Spring constraint m_springMass = 0.0f; m_bias = 0.0f; m_gamma = 0.0f; if (m_frequencyHz > 0.0f) { m_ax = b2Mul(qA, m_localXAxisA); m_sAx = b2Cross(d + rA, m_ax); m_sBx = b2Cross(rB, m_ax); float32 invMass = mA + mB + iA * m_sAx * m_sAx + iB * m_sBx * m_sBx; if (invMass > 0.0f) { m_springMass = 1.0f / invMass; float32 C = b2Dot(d, m_ax); // Frequency float32 omega = 2.0f * b2_pi * m_frequencyHz; // Damping coefficient float32 d = 2.0f * m_springMass * m_dampingRatio * omega; // Spring stiffness float32 k = m_springMass * omega * omega; // magic formulas float32 h = data.step.dt; m_gamma = h * (d + h * k); if (m_gamma > 0.0f) { m_gamma = 1.0f / m_gamma; } m_bias = C * h * k * m_gamma; m_springMass = invMass + m_gamma; if (m_springMass > 0.0f) { m_springMass = 1.0f / m_springMass; } } } else { m_springImpulse = 0.0f; } // Rotational motor if (m_enableMotor) { m_motorMass = iA + iB; if (m_motorMass > 0.0f) { m_motorMass = 1.0f / m_motorMass; } } else { m_motorMass = 0.0f; m_motorImpulse = 0.0f; } if (data.step.warmStarting) { // Account for variable time step. m_impulse *= data.step.dtRatio; m_springImpulse *= data.step.dtRatio; m_motorImpulse *= data.step.dtRatio; b2Vec2 P = m_impulse * m_ay + m_springImpulse * m_ax; float32 LA = m_impulse * m_sAy + m_springImpulse * m_sAx + m_motorImpulse; float32 LB = m_impulse * m_sBy + m_springImpulse * m_sBx + m_motorImpulse; vA -= m_invMassA * P; wA -= m_invIA * LA; vB += m_invMassB * P; wB += m_invIB * LB; } else { m_impulse = 0.0f; m_springImpulse = 0.0f; m_motorImpulse = 0.0f; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } void b2WheelJoint::SolveVelocityConstraints(const b2SolverData& data) { float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; // Solve spring constraint { float32 Cdot = b2Dot(m_ax, vB - vA) + m_sBx * wB - m_sAx * wA; float32 impulse = -m_springMass * (Cdot + m_bias + m_gamma * m_springImpulse); m_springImpulse += impulse; b2Vec2 P = impulse * m_ax; float32 LA = impulse * m_sAx; float32 LB = impulse * m_sBx; vA -= mA * P; wA -= iA * LA; vB += mB * P; wB += iB * LB; } // Solve rotational motor constraint { float32 Cdot = wB - wA - m_motorSpeed; float32 impulse = -m_motorMass * Cdot; float32 oldImpulse = m_motorImpulse; float32 maxImpulse = data.step.dt * m_maxMotorTorque; m_motorImpulse = b2Clamp(m_motorImpulse + impulse, -maxImpulse, maxImpulse); impulse = m_motorImpulse - oldImpulse; wA -= iA * impulse; wB += iB * impulse; } // Solve point to line constraint { float32 Cdot = b2Dot(m_ay, vB - vA) + m_sBy * wB - m_sAy * wA; float32 impulse = -m_mass * Cdot; m_impulse += impulse; b2Vec2 P = impulse * m_ay; float32 LA = impulse * m_sAy; float32 LB = impulse * m_sBy; vA -= mA * P; wA -= iA * LA; vB += mB * P; wB += iB * LB; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } bool b2WheelJoint::SolvePositionConstraints(const b2SolverData& data) { b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Rot qA(aA), qB(aB); b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); b2Vec2 d = (cB - cA) + rB - rA; b2Vec2 ay = b2Mul(qA, m_localYAxisA); float32 sAy = b2Cross(d + rA, ay); float32 sBy = b2Cross(rB, ay); float32 C = b2Dot(d, ay); float32 k = m_invMassA + m_invMassB + m_invIA * m_sAy * m_sAy + m_invIB * m_sBy * m_sBy; float32 impulse; if (k != 0.0f) { impulse = - C / k; } else { impulse = 0.0f; } b2Vec2 P = impulse * ay; float32 LA = impulse * sAy; float32 LB = impulse * sBy; cA -= m_invMassA * P; aA -= m_invIA * LA; cB += m_invMassB * P; aB += m_invIB * LB; data.positions[m_indexA].c = cA; data.positions[m_indexA].a = aA; data.positions[m_indexB].c = cB; data.positions[m_indexB].a = aB; return b2Abs(C) <= b2_linearSlop; } b2Vec2 b2WheelJoint::GetAnchorA() const { return m_bodyA->GetWorldPoint(m_localAnchorA); } b2Vec2 b2WheelJoint::GetAnchorB() const { return m_bodyB->GetWorldPoint(m_localAnchorB); } b2Vec2 b2WheelJoint::GetReactionForce(float32 inv_dt) const { return inv_dt * (m_impulse * m_ay + m_springImpulse * m_ax); } float32 b2WheelJoint::GetReactionTorque(float32 inv_dt) const { return inv_dt * m_motorImpulse; } float32 b2WheelJoint::GetJointTranslation() const { b2Body* bA = m_bodyA; b2Body* bB = m_bodyB; b2Vec2 pA = bA->GetWorldPoint(m_localAnchorA); b2Vec2 pB = bB->GetWorldPoint(m_localAnchorB); b2Vec2 d = pB - pA; b2Vec2 axis = bA->GetWorldVector(m_localXAxisA); float32 translation = b2Dot(d, axis); return translation; } float32 b2WheelJoint::GetJointSpeed() const { float32 wA = m_bodyA->m_angularVelocity; float32 wB = m_bodyB->m_angularVelocity; return wB - wA; } bool b2WheelJoint::IsMotorEnabled() const { return m_enableMotor; } void b2WheelJoint::EnableMotor(bool flag) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_enableMotor = flag; } void b2WheelJoint::SetMotorSpeed(float32 speed) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_motorSpeed = speed; } void b2WheelJoint::SetMaxMotorTorque(float32 torque) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_maxMotorTorque = torque; } float32 b2WheelJoint::GetMotorTorque(float32 inv_dt) const { return inv_dt * m_motorImpulse; } void b2WheelJoint::Dump() { int32 indexA = m_bodyA->m_islandIndex; int32 indexB = m_bodyB->m_islandIndex; b2Log(" b2WheelJointDef jd;\n"); b2Log(" jd.bodyA = bodies[%d];\n", indexA); b2Log(" jd.bodyB = bodies[%d];\n", indexB); b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); b2Log(" jd.localAxisA.Set(%.15lef, %.15lef);\n", m_localXAxisA.x, m_localXAxisA.y); b2Log(" jd.enableMotor = bool(%d);\n", m_enableMotor); b2Log(" jd.motorSpeed = %.15lef;\n", m_motorSpeed); b2Log(" jd.maxMotorTorque = %.15lef;\n", m_maxMotorTorque); b2Log(" jd.frequencyHz = %.15lef;\n", m_frequencyHz); b2Log(" jd.dampingRatio = %.15lef;\n", m_dampingRatio); b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.h0000755000000000000000000001405212316602166024400 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_REVOLUTE_JOINT_H #define B2_REVOLUTE_JOINT_H #include /// Revolute joint definition. This requires defining an /// anchor point where the bodies are joined. The definition /// uses local anchor points so that the initial configuration /// can violate the constraint slightly. You also need to /// specify the initial relative angle for joint limits. This /// helps when saving and loading a game. /// The local anchor points are measured from the body's origin /// rather than the center of mass because: /// 1. you might not know where the center of mass will be. /// 2. if you add/remove shapes from a body and recompute the mass, /// the joints will be broken. struct b2RevoluteJointDef : public b2JointDef { b2RevoluteJointDef() { type = e_revoluteJoint; localAnchorA.Set(0.0f, 0.0f); localAnchorB.Set(0.0f, 0.0f); referenceAngle = 0.0f; lowerAngle = 0.0f; upperAngle = 0.0f; maxMotorTorque = 0.0f; motorSpeed = 0.0f; enableLimit = false; enableMotor = false; } /// Initialize the bodies, anchors, and reference angle using a world /// anchor point. void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchor); /// The local anchor point relative to bodyA's origin. b2Vec2 localAnchorA; /// The local anchor point relative to bodyB's origin. b2Vec2 localAnchorB; /// The bodyB angle minus bodyA angle in the reference state (radians). float32 referenceAngle; /// A flag to enable joint limits. bool enableLimit; /// The lower angle for the joint limit (radians). float32 lowerAngle; /// The upper angle for the joint limit (radians). float32 upperAngle; /// A flag to enable the joint motor. bool enableMotor; /// The desired motor speed. Usually in radians per second. float32 motorSpeed; /// The maximum motor torque used to achieve the desired motor speed. /// Usually in N-m. float32 maxMotorTorque; }; /// A revolute joint constrains two bodies to share a common point while they /// are free to rotate about the point. The relative rotation about the shared /// point is the joint angle. You can limit the relative rotation with /// a joint limit that specifies a lower and upper angle. You can use a motor /// to drive the relative rotation about the shared point. A maximum motor torque /// is provided so that infinite forces are not generated. class b2RevoluteJoint : public b2Joint { public: b2Vec2 GetAnchorA() const; b2Vec2 GetAnchorB() const; /// The local anchor point relative to bodyA's origin. const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } /// The local anchor point relative to bodyB's origin. const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } /// Get the reference angle. float32 GetReferenceAngle() const { return m_referenceAngle; } /// Get the current joint angle in radians. float32 GetJointAngle() const; /// Get the current joint angle speed in radians per second. float32 GetJointSpeed() const; /// Is the joint limit enabled? bool IsLimitEnabled() const; /// Enable/disable the joint limit. void EnableLimit(bool flag); /// Get the lower joint limit in radians. float32 GetLowerLimit() const; /// Get the upper joint limit in radians. float32 GetUpperLimit() const; /// Set the joint limits in radians. void SetLimits(float32 lower, float32 upper); /// Is the joint motor enabled? bool IsMotorEnabled() const; /// Enable/disable the joint motor. void EnableMotor(bool flag); /// Set the motor speed in radians per second. void SetMotorSpeed(float32 speed); /// Get the motor speed in radians per second. float32 GetMotorSpeed() const; /// Set the maximum motor torque, usually in N-m. void SetMaxMotorTorque(float32 torque); float32 GetMaxMotorTorque() const { return m_maxMotorTorque; } /// Get the reaction force given the inverse time step. /// Unit is N. b2Vec2 GetReactionForce(float32 inv_dt) const; /// Get the reaction torque due to the joint limit given the inverse time step. /// Unit is N*m. float32 GetReactionTorque(float32 inv_dt) const; /// Get the current motor torque given the inverse time step. /// Unit is N*m. float32 GetMotorTorque(float32 inv_dt) const; /// Dump to b2Log. void Dump(); protected: friend class b2Joint; friend class b2GearJoint; b2RevoluteJoint(const b2RevoluteJointDef* def); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); // Solver shared b2Vec2 m_localAnchorA; b2Vec2 m_localAnchorB; b2Vec3 m_impulse; float32 m_motorImpulse; bool m_enableMotor; float32 m_maxMotorTorque; float32 m_motorSpeed; bool m_enableLimit; float32 m_referenceAngle; float32 m_lowerAngle; float32 m_upperAngle; // Solver temp int32 m_indexA; int32 m_indexB; b2Vec2 m_rA; b2Vec2 m_rB; b2Vec2 m_localCenterA; b2Vec2 m_localCenterB; float32 m_invMassA; float32 m_invMassB; float32 m_invIA; float32 m_invIB; b2Mat33 m_mass; // effective mass for point-to-point constraint. float32 m_motorMass; // effective mass for motor/limit angular constraint. b2LimitState m_limitState; }; inline float32 b2RevoluteJoint::GetMotorSpeed() const { return m_motorSpeed; } #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2MotorJoint.h0000755000000000000000000000715712316602166023703 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2012 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_MOTOR_JOINT_H #define B2_MOTOR_JOINT_H #include /// Motor joint definition. struct b2MotorJointDef : public b2JointDef { b2MotorJointDef() { type = e_motorJoint; linearOffset.SetZero(); angularOffset = 0.0f; maxForce = 1.0f; maxTorque = 1.0f; correctionFactor = 0.3f; } /// Initialize the bodies and offsets using the current transforms. void Initialize(b2Body* bodyA, b2Body* bodyB); /// Position of bodyB minus the position of bodyA, in bodyA's frame, in meters. b2Vec2 linearOffset; /// The bodyB angle minus bodyA angle in radians. float32 angularOffset; /// The maximum motor force in N. float32 maxForce; /// The maximum motor torque in N-m. float32 maxTorque; /// Position correction factor in the range [0,1]. float32 correctionFactor; }; /// A motor joint is used to control the relative motion /// between two bodies. A typical usage is to control the movement /// of a dynamic body with respect to the ground. class b2MotorJoint : public b2Joint { public: b2Vec2 GetAnchorA() const; b2Vec2 GetAnchorB() const; b2Vec2 GetReactionForce(float32 inv_dt) const; float32 GetReactionTorque(float32 inv_dt) const; /// Set/get the target linear offset, in frame A, in meters. void SetLinearOffset(const b2Vec2& linearOffset); const b2Vec2& GetLinearOffset() const; /// Set/get the target angular offset, in radians. void SetAngularOffset(float32 angularOffset); float32 GetAngularOffset() const; /// Set the maximum friction force in N. void SetMaxForce(float32 force); /// Get the maximum friction force in N. float32 GetMaxForce() const; /// Set the maximum friction torque in N*m. void SetMaxTorque(float32 torque); /// Get the maximum friction torque in N*m. float32 GetMaxTorque() const; /// Set the position correction factor in the range [0,1]. void SetCorrectionFactor(float32 factor); /// Get the position correction factor in the range [0,1]. float32 GetCorrectionFactor() const; /// Dump to b2Log void Dump(); protected: friend class b2Joint; b2MotorJoint(const b2MotorJointDef* def); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); // Solver shared b2Vec2 m_linearOffset; float32 m_angularOffset; b2Vec2 m_linearImpulse; float32 m_angularImpulse; float32 m_maxForce; float32 m_maxTorque; float32 m_correctionFactor; // Solver temp int32 m_indexA; int32 m_indexB; b2Vec2 m_rA; b2Vec2 m_rB; b2Vec2 m_localCenterA; b2Vec2 m_localCenterB; b2Vec2 m_linearError; float32 m_angularError; float32 m_invMassA; float32 m_invMassB; float32 m_invIA; float32 m_invIB; b2Mat22 m_linearMass; float32 m_angularMass; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2Joint.h0000755000000000000000000001260312316602166022652 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2007 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_JOINT_H #define B2_JOINT_H #include class b2Body; class b2Joint; struct b2SolverData; class b2BlockAllocator; enum b2JointType { e_unknownJoint, e_revoluteJoint, e_prismaticJoint, e_distanceJoint, e_pulleyJoint, e_mouseJoint, e_gearJoint, e_wheelJoint, e_weldJoint, e_frictionJoint, e_ropeJoint, e_motorJoint }; enum b2LimitState { e_inactiveLimit, e_atLowerLimit, e_atUpperLimit, e_equalLimits }; struct b2Jacobian { b2Vec2 linear; float32 angularA; float32 angularB; }; /// A joint edge is used to connect bodies and joints together /// in a joint graph where each body is a node and each joint /// is an edge. A joint edge belongs to a doubly linked list /// maintained in each attached body. Each joint has two joint /// nodes, one for each attached body. struct b2JointEdge { b2Body* other; ///< provides quick access to the other body attached. b2Joint* joint; ///< the joint b2JointEdge* prev; ///< the previous joint edge in the body's joint list b2JointEdge* next; ///< the next joint edge in the body's joint list }; /// Joint definitions are used to construct joints. struct b2JointDef { b2JointDef() { type = e_unknownJoint; userData = NULL; bodyA = NULL; bodyB = NULL; collideConnected = false; } /// The joint type is set automatically for concrete joint types. b2JointType type; /// Use this to attach application specific data to your joints. void* userData; /// The first attached body. b2Body* bodyA; /// The second attached body. b2Body* bodyB; /// Set this flag to true if the attached bodies should collide. bool collideConnected; }; /// The base joint class. Joints are used to constraint two bodies together in /// various fashions. Some joints also feature limits and motors. class b2Joint { public: /// Get the type of the concrete joint. b2JointType GetType() const; /// Get the first body attached to this joint. b2Body* GetBodyA(); /// Get the second body attached to this joint. b2Body* GetBodyB(); /// Get the anchor point on bodyA in world coordinates. virtual b2Vec2 GetAnchorA() const = 0; /// Get the anchor point on bodyB in world coordinates. virtual b2Vec2 GetAnchorB() const = 0; /// Get the reaction force on bodyB at the joint anchor in Newtons. virtual b2Vec2 GetReactionForce(float32 inv_dt) const = 0; /// Get the reaction torque on bodyB in N*m. virtual float32 GetReactionTorque(float32 inv_dt) const = 0; /// Get the next joint the world joint list. b2Joint* GetNext(); const b2Joint* GetNext() const; /// Get the user data pointer. void* GetUserData() const; /// Set the user data pointer. void SetUserData(void* data); /// Short-cut function to determine if either body is inactive. bool IsActive() const; /// Get collide connected. /// Note: modifying the collide connect flag won't work correctly because /// the flag is only checked when fixture AABBs begin to overlap. bool GetCollideConnected() const; /// Dump this joint to the log file. virtual void Dump() { b2Log("// Dump is not supported for this joint type.\n"); } /// Shift the origin for any points stored in world coordinates. virtual void ShiftOrigin(const b2Vec2& newOrigin) { B2_NOT_USED(newOrigin); } protected: friend class b2World; friend class b2Body; friend class b2Island; friend class b2GearJoint; static b2Joint* Create(const b2JointDef* def, b2BlockAllocator* allocator); static void Destroy(b2Joint* joint, b2BlockAllocator* allocator); b2Joint(const b2JointDef* def); virtual ~b2Joint() {} virtual void InitVelocityConstraints(const b2SolverData& data) = 0; virtual void SolveVelocityConstraints(const b2SolverData& data) = 0; // This returns true if the position errors are within tolerance. virtual bool SolvePositionConstraints(const b2SolverData& data) = 0; b2JointType m_type; b2Joint* m_prev; b2Joint* m_next; b2JointEdge m_edgeA; b2JointEdge m_edgeB; b2Body* m_bodyA; b2Body* m_bodyB; int32 m_index; bool m_islandFlag; bool m_collideConnected; void* m_userData; }; inline b2JointType b2Joint::GetType() const { return m_type; } inline b2Body* b2Joint::GetBodyA() { return m_bodyA; } inline b2Body* b2Joint::GetBodyB() { return m_bodyB; } inline b2Joint* b2Joint::GetNext() { return m_next; } inline const b2Joint* b2Joint::GetNext() const { return m_next; } inline void* b2Joint::GetUserData() const { return m_userData; } inline void b2Joint::SetUserData(void* data) { m_userData = data; } inline bool b2Joint::GetCollideConnected() const { return m_collideConnected; } #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2WheelJoint.h0000755000000000000000000001342712316602166023644 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_WHEEL_JOINT_H #define B2_WHEEL_JOINT_H #include /// Wheel joint definition. This requires defining a line of /// motion using an axis and an anchor point. The definition uses local /// anchor points and a local axis so that the initial configuration /// can violate the constraint slightly. The joint translation is zero /// when the local anchor points coincide in world space. Using local /// anchors and a local axis helps when saving and loading a game. struct b2WheelJointDef : public b2JointDef { b2WheelJointDef() { type = e_wheelJoint; localAnchorA.SetZero(); localAnchorB.SetZero(); localAxisA.Set(1.0f, 0.0f); enableMotor = false; maxMotorTorque = 0.0f; motorSpeed = 0.0f; frequencyHz = 2.0f; dampingRatio = 0.7f; } /// Initialize the bodies, anchors, axis, and reference angle using the world /// anchor and world axis. void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchor, const b2Vec2& axis); /// The local anchor point relative to bodyA's origin. b2Vec2 localAnchorA; /// The local anchor point relative to bodyB's origin. b2Vec2 localAnchorB; /// The local translation axis in bodyA. b2Vec2 localAxisA; /// Enable/disable the joint motor. bool enableMotor; /// The maximum motor torque, usually in N-m. float32 maxMotorTorque; /// The desired motor speed in radians per second. float32 motorSpeed; /// Suspension frequency, zero indicates no suspension float32 frequencyHz; /// Suspension damping ratio, one indicates critical damping float32 dampingRatio; }; /// A wheel joint. This joint provides two degrees of freedom: translation /// along an axis fixed in bodyA and rotation in the plane. You can use a /// joint limit to restrict the range of motion and a joint motor to drive /// the rotation or to model rotational friction. /// This joint is designed for vehicle suspensions. class b2WheelJoint : public b2Joint { public: b2Vec2 GetAnchorA() const; b2Vec2 GetAnchorB() const; b2Vec2 GetReactionForce(float32 inv_dt) const; float32 GetReactionTorque(float32 inv_dt) const; /// The local anchor point relative to bodyA's origin. const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } /// The local anchor point relative to bodyB's origin. const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } /// The local joint axis relative to bodyA. const b2Vec2& GetLocalAxisA() const { return m_localXAxisA; } /// Get the current joint translation, usually in meters. float32 GetJointTranslation() const; /// Get the current joint translation speed, usually in meters per second. float32 GetJointSpeed() const; /// Is the joint motor enabled? bool IsMotorEnabled() const; /// Enable/disable the joint motor. void EnableMotor(bool flag); /// Set the motor speed, usually in radians per second. void SetMotorSpeed(float32 speed); /// Get the motor speed, usually in radians per second. float32 GetMotorSpeed() const; /// Set/Get the maximum motor force, usually in N-m. void SetMaxMotorTorque(float32 torque); float32 GetMaxMotorTorque() const; /// Get the current motor torque given the inverse time step, usually in N-m. float32 GetMotorTorque(float32 inv_dt) const; /// Set/Get the spring frequency in hertz. Setting the frequency to zero disables the spring. void SetSpringFrequencyHz(float32 hz); float32 GetSpringFrequencyHz() const; /// Set/Get the spring damping ratio void SetSpringDampingRatio(float32 ratio); float32 GetSpringDampingRatio() const; /// Dump to b2Log void Dump(); protected: friend class b2Joint; b2WheelJoint(const b2WheelJointDef* def); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); float32 m_frequencyHz; float32 m_dampingRatio; // Solver shared b2Vec2 m_localAnchorA; b2Vec2 m_localAnchorB; b2Vec2 m_localXAxisA; b2Vec2 m_localYAxisA; float32 m_impulse; float32 m_motorImpulse; float32 m_springImpulse; float32 m_maxMotorTorque; float32 m_motorSpeed; bool m_enableMotor; // Solver temp int32 m_indexA; int32 m_indexB; b2Vec2 m_localCenterA; b2Vec2 m_localCenterB; float32 m_invMassA; float32 m_invMassB; float32 m_invIA; float32 m_invIB; b2Vec2 m_ax, m_ay; float32 m_sAx, m_sBx; float32 m_sAy, m_sBy; float32 m_mass; float32 m_motorMass; float32 m_springMass; float32 m_bias; float32 m_gamma; }; inline float32 b2WheelJoint::GetMotorSpeed() const { return m_motorSpeed; } inline float32 b2WheelJoint::GetMaxMotorTorque() const { return m_maxMotorTorque; } inline void b2WheelJoint::SetSpringFrequencyHz(float32 hz) { m_frequencyHz = hz; } inline float32 b2WheelJoint::GetSpringFrequencyHz() const { return m_frequencyHz; } inline void b2WheelJoint::SetSpringDampingRatio(float32 ratio) { m_dampingRatio = ratio; } inline float32 b2WheelJoint::GetSpringDampingRatio() const { return m_dampingRatio; } #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2MouseJoint.cpp0000755000000000000000000001254012316602166024216 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2007 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include // p = attached point, m = mouse point // C = p - m // Cdot = v // = v + cross(w, r) // J = [I r_skew] // Identity used: // w k % (rx i + ry j) = w * (-ry i + rx j) b2MouseJoint::b2MouseJoint(const b2MouseJointDef* def) : b2Joint(def) { b2Assert(def->target.IsValid()); b2Assert(b2IsValid(def->maxForce) && def->maxForce >= 0.0f); b2Assert(b2IsValid(def->frequencyHz) && def->frequencyHz >= 0.0f); b2Assert(b2IsValid(def->dampingRatio) && def->dampingRatio >= 0.0f); m_targetA = def->target; m_localAnchorB = b2MulT(m_bodyB->GetTransform(), m_targetA); m_maxForce = def->maxForce; m_impulse.SetZero(); m_frequencyHz = def->frequencyHz; m_dampingRatio = def->dampingRatio; m_beta = 0.0f; m_gamma = 0.0f; } void b2MouseJoint::SetTarget(const b2Vec2& target) { if (m_bodyB->IsAwake() == false) { m_bodyB->SetAwake(true); } m_targetA = target; } const b2Vec2& b2MouseJoint::GetTarget() const { return m_targetA; } void b2MouseJoint::SetMaxForce(float32 force) { m_maxForce = force; } float32 b2MouseJoint::GetMaxForce() const { return m_maxForce; } void b2MouseJoint::SetFrequency(float32 hz) { m_frequencyHz = hz; } float32 b2MouseJoint::GetFrequency() const { return m_frequencyHz; } void b2MouseJoint::SetDampingRatio(float32 ratio) { m_dampingRatio = ratio; } float32 b2MouseJoint::GetDampingRatio() const { return m_dampingRatio; } void b2MouseJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexB = m_bodyB->m_islandIndex; m_localCenterB = m_bodyB->m_sweep.localCenter; m_invMassB = m_bodyB->m_invMass; m_invIB = m_bodyB->m_invI; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Rot qB(aB); float32 mass = m_bodyB->GetMass(); // Frequency float32 omega = 2.0f * b2_pi * m_frequencyHz; // Damping coefficient float32 d = 2.0f * mass * m_dampingRatio * omega; // Spring stiffness float32 k = mass * (omega * omega); // magic formulas // gamma has units of inverse mass. // beta has units of inverse time. float32 h = data.step.dt; b2Assert(d + h * k > b2_epsilon); m_gamma = h * (d + h * k); if (m_gamma != 0.0f) { m_gamma = 1.0f / m_gamma; } m_beta = h * k * m_gamma; // Compute the effective mass matrix. m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); // K = [(1/m1 + 1/m2) * eye(2) - skew(r1) * invI1 * skew(r1) - skew(r2) * invI2 * skew(r2)] // = [1/m1+1/m2 0 ] + invI1 * [r1.y*r1.y -r1.x*r1.y] + invI2 * [r1.y*r1.y -r1.x*r1.y] // [ 0 1/m1+1/m2] [-r1.x*r1.y r1.x*r1.x] [-r1.x*r1.y r1.x*r1.x] b2Mat22 K; K.ex.x = m_invMassB + m_invIB * m_rB.y * m_rB.y + m_gamma; K.ex.y = -m_invIB * m_rB.x * m_rB.y; K.ey.x = K.ex.y; K.ey.y = m_invMassB + m_invIB * m_rB.x * m_rB.x + m_gamma; m_mass = K.GetInverse(); m_C = cB + m_rB - m_targetA; m_C *= m_beta; // Cheat with some damping wB *= 0.98f; if (data.step.warmStarting) { m_impulse *= data.step.dtRatio; vB += m_invMassB * m_impulse; wB += m_invIB * b2Cross(m_rB, m_impulse); } else { m_impulse.SetZero(); } data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } void b2MouseJoint::SolveVelocityConstraints(const b2SolverData& data) { b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; // Cdot = v + cross(w, r) b2Vec2 Cdot = vB + b2Cross(wB, m_rB); b2Vec2 impulse = b2Mul(m_mass, -(Cdot + m_C + m_gamma * m_impulse)); b2Vec2 oldImpulse = m_impulse; m_impulse += impulse; float32 maxImpulse = data.step.dt * m_maxForce; if (m_impulse.LengthSquared() > maxImpulse * maxImpulse) { m_impulse *= maxImpulse / m_impulse.Length(); } impulse = m_impulse - oldImpulse; vB += m_invMassB * impulse; wB += m_invIB * b2Cross(m_rB, impulse); data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } bool b2MouseJoint::SolvePositionConstraints(const b2SolverData& data) { B2_NOT_USED(data); return true; } b2Vec2 b2MouseJoint::GetAnchorA() const { return m_targetA; } b2Vec2 b2MouseJoint::GetAnchorB() const { return m_bodyB->GetWorldPoint(m_localAnchorB); } b2Vec2 b2MouseJoint::GetReactionForce(float32 inv_dt) const { return inv_dt * m_impulse; } float32 b2MouseJoint::GetReactionTorque(float32 inv_dt) const { return inv_dt * 0.0f; } void b2MouseJoint::ShiftOrigin(const b2Vec2& newOrigin) { m_targetA -= newOrigin; } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp0000755000000000000000000003144112316602166024734 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include // Point-to-point constraint // C = p2 - p1 // Cdot = v2 - v1 // = v2 + cross(w2, r2) - v1 - cross(w1, r1) // J = [-I -r1_skew I r2_skew ] // Identity used: // w k % (rx i + ry j) = w * (-ry i + rx j) // Motor constraint // Cdot = w2 - w1 // J = [0 0 -1 0 0 1] // K = invI1 + invI2 void b2RevoluteJointDef::Initialize(b2Body* bA, b2Body* bB, const b2Vec2& anchor) { bodyA = bA; bodyB = bB; localAnchorA = bodyA->GetLocalPoint(anchor); localAnchorB = bodyB->GetLocalPoint(anchor); referenceAngle = bodyB->GetAngle() - bodyA->GetAngle(); } b2RevoluteJoint::b2RevoluteJoint(const b2RevoluteJointDef* def) : b2Joint(def) { m_localAnchorA = def->localAnchorA; m_localAnchorB = def->localAnchorB; m_referenceAngle = def->referenceAngle; m_impulse.SetZero(); m_motorImpulse = 0.0f; m_lowerAngle = def->lowerAngle; m_upperAngle = def->upperAngle; m_maxMotorTorque = def->maxMotorTorque; m_motorSpeed = def->motorSpeed; m_enableLimit = def->enableLimit; m_enableMotor = def->enableMotor; m_limitState = e_inactiveLimit; } void b2RevoluteJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexA = m_bodyA->m_islandIndex; m_indexB = m_bodyB->m_islandIndex; m_localCenterA = m_bodyA->m_sweep.localCenter; m_localCenterB = m_bodyB->m_sweep.localCenter; m_invMassA = m_bodyA->m_invMass; m_invMassB = m_bodyB->m_invMass; m_invIA = m_bodyA->m_invI; m_invIB = m_bodyB->m_invI; float32 aA = data.positions[m_indexA].a; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Rot qA(aA), qB(aB); m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); // J = [-I -r1_skew I r2_skew] // [ 0 -1 0 1] // r_skew = [-ry; rx] // Matlab // K = [ mA+r1y^2*iA+mB+r2y^2*iB, -r1y*iA*r1x-r2y*iB*r2x, -r1y*iA-r2y*iB] // [ -r1y*iA*r1x-r2y*iB*r2x, mA+r1x^2*iA+mB+r2x^2*iB, r1x*iA+r2x*iB] // [ -r1y*iA-r2y*iB, r1x*iA+r2x*iB, iA+iB] float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; bool fixedRotation = (iA + iB == 0.0f); m_mass.ex.x = mA + mB + m_rA.y * m_rA.y * iA + m_rB.y * m_rB.y * iB; m_mass.ey.x = -m_rA.y * m_rA.x * iA - m_rB.y * m_rB.x * iB; m_mass.ez.x = -m_rA.y * iA - m_rB.y * iB; m_mass.ex.y = m_mass.ey.x; m_mass.ey.y = mA + mB + m_rA.x * m_rA.x * iA + m_rB.x * m_rB.x * iB; m_mass.ez.y = m_rA.x * iA + m_rB.x * iB; m_mass.ex.z = m_mass.ez.x; m_mass.ey.z = m_mass.ez.y; m_mass.ez.z = iA + iB; m_motorMass = iA + iB; if (m_motorMass > 0.0f) { m_motorMass = 1.0f / m_motorMass; } if (m_enableMotor == false || fixedRotation) { m_motorImpulse = 0.0f; } if (m_enableLimit && fixedRotation == false) { float32 jointAngle = aB - aA - m_referenceAngle; if (b2Abs(m_upperAngle - m_lowerAngle) < 2.0f * b2_angularSlop) { m_limitState = e_equalLimits; } else if (jointAngle <= m_lowerAngle) { if (m_limitState != e_atLowerLimit) { m_impulse.z = 0.0f; } m_limitState = e_atLowerLimit; } else if (jointAngle >= m_upperAngle) { if (m_limitState != e_atUpperLimit) { m_impulse.z = 0.0f; } m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_impulse.z = 0.0f; } } else { m_limitState = e_inactiveLimit; } if (data.step.warmStarting) { // Scale impulses to support a variable time step. m_impulse *= data.step.dtRatio; m_motorImpulse *= data.step.dtRatio; b2Vec2 P(m_impulse.x, m_impulse.y); vA -= mA * P; wA -= iA * (b2Cross(m_rA, P) + m_motorImpulse + m_impulse.z); vB += mB * P; wB += iB * (b2Cross(m_rB, P) + m_motorImpulse + m_impulse.z); } else { m_impulse.SetZero(); m_motorImpulse = 0.0f; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } void b2RevoluteJoint::SolveVelocityConstraints(const b2SolverData& data) { b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; bool fixedRotation = (iA + iB == 0.0f); // Solve motor constraint. if (m_enableMotor && m_limitState != e_equalLimits && fixedRotation == false) { float32 Cdot = wB - wA - m_motorSpeed; float32 impulse = -m_motorMass * Cdot; float32 oldImpulse = m_motorImpulse; float32 maxImpulse = data.step.dt * m_maxMotorTorque; m_motorImpulse = b2Clamp(m_motorImpulse + impulse, -maxImpulse, maxImpulse); impulse = m_motorImpulse - oldImpulse; wA -= iA * impulse; wB += iB * impulse; } // Solve limit constraint. if (m_enableLimit && m_limitState != e_inactiveLimit && fixedRotation == false) { b2Vec2 Cdot1 = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA); float32 Cdot2 = wB - wA; b2Vec3 Cdot(Cdot1.x, Cdot1.y, Cdot2); b2Vec3 impulse = -m_mass.Solve33(Cdot); if (m_limitState == e_equalLimits) { m_impulse += impulse; } else if (m_limitState == e_atLowerLimit) { float32 newImpulse = m_impulse.z + impulse.z; if (newImpulse < 0.0f) { b2Vec2 rhs = -Cdot1 + m_impulse.z * b2Vec2(m_mass.ez.x, m_mass.ez.y); b2Vec2 reduced = m_mass.Solve22(rhs); impulse.x = reduced.x; impulse.y = reduced.y; impulse.z = -m_impulse.z; m_impulse.x += reduced.x; m_impulse.y += reduced.y; m_impulse.z = 0.0f; } else { m_impulse += impulse; } } else if (m_limitState == e_atUpperLimit) { float32 newImpulse = m_impulse.z + impulse.z; if (newImpulse > 0.0f) { b2Vec2 rhs = -Cdot1 + m_impulse.z * b2Vec2(m_mass.ez.x, m_mass.ez.y); b2Vec2 reduced = m_mass.Solve22(rhs); impulse.x = reduced.x; impulse.y = reduced.y; impulse.z = -m_impulse.z; m_impulse.x += reduced.x; m_impulse.y += reduced.y; m_impulse.z = 0.0f; } else { m_impulse += impulse; } } b2Vec2 P(impulse.x, impulse.y); vA -= mA * P; wA -= iA * (b2Cross(m_rA, P) + impulse.z); vB += mB * P; wB += iB * (b2Cross(m_rB, P) + impulse.z); } else { // Solve point-to-point constraint b2Vec2 Cdot = vB + b2Cross(wB, m_rB) - vA - b2Cross(wA, m_rA); b2Vec2 impulse = m_mass.Solve22(-Cdot); m_impulse.x += impulse.x; m_impulse.y += impulse.y; vA -= mA * impulse; wA -= iA * b2Cross(m_rA, impulse); vB += mB * impulse; wB += iB * b2Cross(m_rB, impulse); } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } bool b2RevoluteJoint::SolvePositionConstraints(const b2SolverData& data) { b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Rot qA(aA), qB(aB); float32 angularError = 0.0f; float32 positionError = 0.0f; bool fixedRotation = (m_invIA + m_invIB == 0.0f); // Solve angular limit constraint. if (m_enableLimit && m_limitState != e_inactiveLimit && fixedRotation == false) { float32 angle = aB - aA - m_referenceAngle; float32 limitImpulse = 0.0f; if (m_limitState == e_equalLimits) { // Prevent large angular corrections float32 C = b2Clamp(angle - m_lowerAngle, -b2_maxAngularCorrection, b2_maxAngularCorrection); limitImpulse = -m_motorMass * C; angularError = b2Abs(C); } else if (m_limitState == e_atLowerLimit) { float32 C = angle - m_lowerAngle; angularError = -C; // Prevent large angular corrections and allow some slop. C = b2Clamp(C + b2_angularSlop, -b2_maxAngularCorrection, 0.0f); limitImpulse = -m_motorMass * C; } else if (m_limitState == e_atUpperLimit) { float32 C = angle - m_upperAngle; angularError = C; // Prevent large angular corrections and allow some slop. C = b2Clamp(C - b2_angularSlop, 0.0f, b2_maxAngularCorrection); limitImpulse = -m_motorMass * C; } aA -= m_invIA * limitImpulse; aB += m_invIB * limitImpulse; } // Solve point-to-point constraint. { qA.Set(aA); qB.Set(aB); b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); b2Vec2 C = cB + rB - cA - rA; positionError = C.Length(); float32 mA = m_invMassA, mB = m_invMassB; float32 iA = m_invIA, iB = m_invIB; b2Mat22 K; K.ex.x = mA + mB + iA * rA.y * rA.y + iB * rB.y * rB.y; K.ex.y = -iA * rA.x * rA.y - iB * rB.x * rB.y; K.ey.x = K.ex.y; K.ey.y = mA + mB + iA * rA.x * rA.x + iB * rB.x * rB.x; b2Vec2 impulse = -K.Solve(C); cA -= mA * impulse; aA -= iA * b2Cross(rA, impulse); cB += mB * impulse; aB += iB * b2Cross(rB, impulse); } data.positions[m_indexA].c = cA; data.positions[m_indexA].a = aA; data.positions[m_indexB].c = cB; data.positions[m_indexB].a = aB; return positionError <= b2_linearSlop && angularError <= b2_angularSlop; } b2Vec2 b2RevoluteJoint::GetAnchorA() const { return m_bodyA->GetWorldPoint(m_localAnchorA); } b2Vec2 b2RevoluteJoint::GetAnchorB() const { return m_bodyB->GetWorldPoint(m_localAnchorB); } b2Vec2 b2RevoluteJoint::GetReactionForce(float32 inv_dt) const { b2Vec2 P(m_impulse.x, m_impulse.y); return inv_dt * P; } float32 b2RevoluteJoint::GetReactionTorque(float32 inv_dt) const { return inv_dt * m_impulse.z; } float32 b2RevoluteJoint::GetJointAngle() const { b2Body* bA = m_bodyA; b2Body* bB = m_bodyB; return bB->m_sweep.a - bA->m_sweep.a - m_referenceAngle; } float32 b2RevoluteJoint::GetJointSpeed() const { b2Body* bA = m_bodyA; b2Body* bB = m_bodyB; return bB->m_angularVelocity - bA->m_angularVelocity; } bool b2RevoluteJoint::IsMotorEnabled() const { return m_enableMotor; } void b2RevoluteJoint::EnableMotor(bool flag) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_enableMotor = flag; } float32 b2RevoluteJoint::GetMotorTorque(float32 inv_dt) const { return inv_dt * m_motorImpulse; } void b2RevoluteJoint::SetMotorSpeed(float32 speed) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_motorSpeed = speed; } void b2RevoluteJoint::SetMaxMotorTorque(float32 torque) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_maxMotorTorque = torque; } bool b2RevoluteJoint::IsLimitEnabled() const { return m_enableLimit; } void b2RevoluteJoint::EnableLimit(bool flag) { if (flag != m_enableLimit) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_enableLimit = flag; m_impulse.z = 0.0f; } } float32 b2RevoluteJoint::GetLowerLimit() const { return m_lowerAngle; } float32 b2RevoluteJoint::GetUpperLimit() const { return m_upperAngle; } void b2RevoluteJoint::SetLimits(float32 lower, float32 upper) { b2Assert(lower <= upper); if (lower != m_lowerAngle || upper != m_upperAngle) { m_bodyA->SetAwake(true); m_bodyB->SetAwake(true); m_impulse.z = 0.0f; m_lowerAngle = lower; m_upperAngle = upper; } } void b2RevoluteJoint::Dump() { int32 indexA = m_bodyA->m_islandIndex; int32 indexB = m_bodyB->m_islandIndex; b2Log(" b2RevoluteJointDef jd;\n"); b2Log(" jd.bodyA = bodies[%d];\n", indexA); b2Log(" jd.bodyB = bodies[%d];\n", indexB); b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); b2Log(" jd.referenceAngle = %.15lef;\n", m_referenceAngle); b2Log(" jd.enableLimit = bool(%d);\n", m_enableLimit); b2Log(" jd.lowerAngle = %.15lef;\n", m_lowerAngle); b2Log(" jd.upperAngle = %.15lef;\n", m_upperAngle); b2Log(" jd.enableMotor = bool(%d);\n", m_enableMotor); b2Log(" jd.motorSpeed = %.15lef;\n", m_motorSpeed); b2Log(" jd.maxMotorTorque = %.15lef;\n", m_maxMotorTorque); b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); } love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2WeldJoint.h0000755000000000000000000000726312316602166023474 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_WELD_JOINT_H #define B2_WELD_JOINT_H #include /// Weld joint definition. You need to specify local anchor points /// where they are attached and the relative body angle. The position /// of the anchor points is important for computing the reaction torque. struct b2WeldJointDef : public b2JointDef { b2WeldJointDef() { type = e_weldJoint; localAnchorA.Set(0.0f, 0.0f); localAnchorB.Set(0.0f, 0.0f); referenceAngle = 0.0f; frequencyHz = 0.0f; dampingRatio = 0.0f; } /// Initialize the bodies, anchors, and reference angle using a world /// anchor point. void Initialize(b2Body* bodyA, b2Body* bodyB, const b2Vec2& anchor); /// The local anchor point relative to bodyA's origin. b2Vec2 localAnchorA; /// The local anchor point relative to bodyB's origin. b2Vec2 localAnchorB; /// The bodyB angle minus bodyA angle in the reference state (radians). float32 referenceAngle; /// The mass-spring-damper frequency in Hertz. Rotation only. /// Disable softness with a value of 0. float32 frequencyHz; /// The damping ratio. 0 = no damping, 1 = critical damping. float32 dampingRatio; }; /// A weld joint essentially glues two bodies together. A weld joint may /// distort somewhat because the island constraint solver is approximate. class b2WeldJoint : public b2Joint { public: b2Vec2 GetAnchorA() const; b2Vec2 GetAnchorB() const; b2Vec2 GetReactionForce(float32 inv_dt) const; float32 GetReactionTorque(float32 inv_dt) const; /// The local anchor point relative to bodyA's origin. const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } /// The local anchor point relative to bodyB's origin. const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } /// Get the reference angle. float32 GetReferenceAngle() const { return m_referenceAngle; } /// Set/get frequency in Hz. void SetFrequency(float32 hz) { m_frequencyHz = hz; } float32 GetFrequency() const { return m_frequencyHz; } /// Set/get damping ratio. void SetDampingRatio(float32 ratio) { m_dampingRatio = ratio; } float32 GetDampingRatio() const { return m_dampingRatio; } /// Dump to b2Log void Dump(); protected: friend class b2Joint; b2WeldJoint(const b2WeldJointDef* def); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); float32 m_frequencyHz; float32 m_dampingRatio; float32 m_bias; // Solver shared b2Vec2 m_localAnchorA; b2Vec2 m_localAnchorB; float32 m_referenceAngle; float32 m_gamma; b2Vec3 m_impulse; // Solver temp int32 m_indexA; int32 m_indexB; b2Vec2 m_rA; b2Vec2 m_rB; b2Vec2 m_localCenterA; b2Vec2 m_localCenterB; float32 m_invMassA; float32 m_invMassB; float32 m_invIA; float32 m_invIB; b2Mat33 m_mass; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2RopeJoint.h0000755000000000000000000000653712316602166023511 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_ROPE_JOINT_H #define B2_ROPE_JOINT_H #include /// Rope joint definition. This requires two body anchor points and /// a maximum lengths. /// Note: by default the connected objects will not collide. /// see collideConnected in b2JointDef. struct b2RopeJointDef : public b2JointDef { b2RopeJointDef() { type = e_ropeJoint; localAnchorA.Set(-1.0f, 0.0f); localAnchorB.Set(1.0f, 0.0f); maxLength = 0.0f; } /// The local anchor point relative to bodyA's origin. b2Vec2 localAnchorA; /// The local anchor point relative to bodyB's origin. b2Vec2 localAnchorB; /// The maximum length of the rope. /// Warning: this must be larger than b2_linearSlop or /// the joint will have no effect. float32 maxLength; }; /// A rope joint enforces a maximum distance between two points /// on two bodies. It has no other effect. /// Warning: if you attempt to change the maximum length during /// the simulation you will get some non-physical behavior. /// A model that would allow you to dynamically modify the length /// would have some sponginess, so I chose not to implement it /// that way. See b2DistanceJoint if you want to dynamically /// control length. class b2RopeJoint : public b2Joint { public: b2Vec2 GetAnchorA() const; b2Vec2 GetAnchorB() const; b2Vec2 GetReactionForce(float32 inv_dt) const; float32 GetReactionTorque(float32 inv_dt) const; /// The local anchor point relative to bodyA's origin. const b2Vec2& GetLocalAnchorA() const { return m_localAnchorA; } /// The local anchor point relative to bodyB's origin. const b2Vec2& GetLocalAnchorB() const { return m_localAnchorB; } /// Set/Get the maximum length of the rope. void SetMaxLength(float32 length) { m_maxLength = length; } float32 GetMaxLength() const; b2LimitState GetLimitState() const; /// Dump joint to dmLog void Dump(); protected: friend class b2Joint; b2RopeJoint(const b2RopeJointDef* data); void InitVelocityConstraints(const b2SolverData& data); void SolveVelocityConstraints(const b2SolverData& data); bool SolvePositionConstraints(const b2SolverData& data); // Solver shared b2Vec2 m_localAnchorA; b2Vec2 m_localAnchorB; float32 m_maxLength; float32 m_length; float32 m_impulse; // Solver temp int32 m_indexA; int32 m_indexB; b2Vec2 m_u; b2Vec2 m_rA; b2Vec2 m_rB; b2Vec2 m_localCenterA; b2Vec2 m_localCenterB; float32 m_invMassA; float32 m_invMassB; float32 m_invIA; float32 m_invIB; float32 m_mass; b2LimitState m_state; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Joints/b2DistanceJoint.cpp0000755000000000000000000001617712316602166024672 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include // 1-D constrained system // m (v2 - v1) = lambda // v2 + (beta/h) * x1 + gamma * lambda = 0, gamma has units of inverse mass. // x2 = x1 + h * v2 // 1-D mass-damper-spring system // m (v2 - v1) + h * d * v2 + h * k * // C = norm(p2 - p1) - L // u = (p2 - p1) / norm(p2 - p1) // Cdot = dot(u, v2 + cross(w2, r2) - v1 - cross(w1, r1)) // J = [-u -cross(r1, u) u cross(r2, u)] // K = J * invM * JT // = invMass1 + invI1 * cross(r1, u)^2 + invMass2 + invI2 * cross(r2, u)^2 void b2DistanceJointDef::Initialize(b2Body* b1, b2Body* b2, const b2Vec2& anchor1, const b2Vec2& anchor2) { bodyA = b1; bodyB = b2; localAnchorA = bodyA->GetLocalPoint(anchor1); localAnchorB = bodyB->GetLocalPoint(anchor2); b2Vec2 d = anchor2 - anchor1; length = d.Length(); } b2DistanceJoint::b2DistanceJoint(const b2DistanceJointDef* def) : b2Joint(def) { m_localAnchorA = def->localAnchorA; m_localAnchorB = def->localAnchorB; m_length = def->length; m_frequencyHz = def->frequencyHz; m_dampingRatio = def->dampingRatio; m_impulse = 0.0f; m_gamma = 0.0f; m_bias = 0.0f; } void b2DistanceJoint::InitVelocityConstraints(const b2SolverData& data) { m_indexA = m_bodyA->m_islandIndex; m_indexB = m_bodyB->m_islandIndex; m_localCenterA = m_bodyA->m_sweep.localCenter; m_localCenterB = m_bodyB->m_sweep.localCenter; m_invMassA = m_bodyA->m_invMass; m_invMassB = m_bodyB->m_invMass; m_invIA = m_bodyA->m_invI; m_invIB = m_bodyB->m_invI; b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; b2Rot qA(aA), qB(aB); m_rA = b2Mul(qA, m_localAnchorA - m_localCenterA); m_rB = b2Mul(qB, m_localAnchorB - m_localCenterB); m_u = cB + m_rB - cA - m_rA; // Handle singularity. float32 length = m_u.Length(); if (length > b2_linearSlop) { m_u *= 1.0f / length; } else { m_u.Set(0.0f, 0.0f); } float32 crAu = b2Cross(m_rA, m_u); float32 crBu = b2Cross(m_rB, m_u); float32 invMass = m_invMassA + m_invIA * crAu * crAu + m_invMassB + m_invIB * crBu * crBu; // Compute the effective mass matrix. m_mass = invMass != 0.0f ? 1.0f / invMass : 0.0f; if (m_frequencyHz > 0.0f) { float32 C = length - m_length; // Frequency float32 omega = 2.0f * b2_pi * m_frequencyHz; // Damping coefficient float32 d = 2.0f * m_mass * m_dampingRatio * omega; // Spring stiffness float32 k = m_mass * omega * omega; // magic formulas float32 h = data.step.dt; m_gamma = h * (d + h * k); m_gamma = m_gamma != 0.0f ? 1.0f / m_gamma : 0.0f; m_bias = C * h * k * m_gamma; invMass += m_gamma; m_mass = invMass != 0.0f ? 1.0f / invMass : 0.0f; } else { m_gamma = 0.0f; m_bias = 0.0f; } if (data.step.warmStarting) { // Scale the impulse to support a variable time step. m_impulse *= data.step.dtRatio; b2Vec2 P = m_impulse * m_u; vA -= m_invMassA * P; wA -= m_invIA * b2Cross(m_rA, P); vB += m_invMassB * P; wB += m_invIB * b2Cross(m_rB, P); } else { m_impulse = 0.0f; } data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } void b2DistanceJoint::SolveVelocityConstraints(const b2SolverData& data) { b2Vec2 vA = data.velocities[m_indexA].v; float32 wA = data.velocities[m_indexA].w; b2Vec2 vB = data.velocities[m_indexB].v; float32 wB = data.velocities[m_indexB].w; // Cdot = dot(u, v + cross(w, r)) b2Vec2 vpA = vA + b2Cross(wA, m_rA); b2Vec2 vpB = vB + b2Cross(wB, m_rB); float32 Cdot = b2Dot(m_u, vpB - vpA); float32 impulse = -m_mass * (Cdot + m_bias + m_gamma * m_impulse); m_impulse += impulse; b2Vec2 P = impulse * m_u; vA -= m_invMassA * P; wA -= m_invIA * b2Cross(m_rA, P); vB += m_invMassB * P; wB += m_invIB * b2Cross(m_rB, P); data.velocities[m_indexA].v = vA; data.velocities[m_indexA].w = wA; data.velocities[m_indexB].v = vB; data.velocities[m_indexB].w = wB; } bool b2DistanceJoint::SolvePositionConstraints(const b2SolverData& data) { if (m_frequencyHz > 0.0f) { // There is no position correction for soft distance constraints. return true; } b2Vec2 cA = data.positions[m_indexA].c; float32 aA = data.positions[m_indexA].a; b2Vec2 cB = data.positions[m_indexB].c; float32 aB = data.positions[m_indexB].a; b2Rot qA(aA), qB(aB); b2Vec2 rA = b2Mul(qA, m_localAnchorA - m_localCenterA); b2Vec2 rB = b2Mul(qB, m_localAnchorB - m_localCenterB); b2Vec2 u = cB + rB - cA - rA; float32 length = u.Normalize(); float32 C = length - m_length; C = b2Clamp(C, -b2_maxLinearCorrection, b2_maxLinearCorrection); float32 impulse = -m_mass * C; b2Vec2 P = impulse * u; cA -= m_invMassA * P; aA -= m_invIA * b2Cross(rA, P); cB += m_invMassB * P; aB += m_invIB * b2Cross(rB, P); data.positions[m_indexA].c = cA; data.positions[m_indexA].a = aA; data.positions[m_indexB].c = cB; data.positions[m_indexB].a = aB; return b2Abs(C) < b2_linearSlop; } b2Vec2 b2DistanceJoint::GetAnchorA() const { return m_bodyA->GetWorldPoint(m_localAnchorA); } b2Vec2 b2DistanceJoint::GetAnchorB() const { return m_bodyB->GetWorldPoint(m_localAnchorB); } b2Vec2 b2DistanceJoint::GetReactionForce(float32 inv_dt) const { b2Vec2 F = (inv_dt * m_impulse) * m_u; return F; } float32 b2DistanceJoint::GetReactionTorque(float32 inv_dt) const { B2_NOT_USED(inv_dt); return 0.0f; } void b2DistanceJoint::Dump() { int32 indexA = m_bodyA->m_islandIndex; int32 indexB = m_bodyB->m_islandIndex; b2Log(" b2DistanceJointDef jd;\n"); b2Log(" jd.bodyA = bodies[%d];\n", indexA); b2Log(" jd.bodyB = bodies[%d];\n", indexB); b2Log(" jd.collideConnected = bool(%d);\n", m_collideConnected); b2Log(" jd.localAnchorA.Set(%.15lef, %.15lef);\n", m_localAnchorA.x, m_localAnchorA.y); b2Log(" jd.localAnchorB.Set(%.15lef, %.15lef);\n", m_localAnchorB.x, m_localAnchorB.y); b2Log(" jd.length = %.15lef;\n", m_length); b2Log(" jd.frequencyHz = %.15lef;\n", m_frequencyHz); b2Log(" jd.dampingRatio = %.15lef;\n", m_dampingRatio); b2Log(" joints[%d] = m_world->CreateJoint(&jd);\n", m_index); } love-0.9.1/src/libraries/Box2D/Dynamics/b2WorldCallbacks.cpp0000755000000000000000000000307512316602166023546 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include // Return true if contact calculations should be performed between these two shapes. // If you implement your own collision filter you may want to build from this implementation. bool b2ContactFilter::ShouldCollide(b2Fixture* fixtureA, b2Fixture* fixtureB) { const b2Filter& filterA = fixtureA->GetFilterData(); const b2Filter& filterB = fixtureB->GetFilterData(); if (filterA.groupIndex == filterB.groupIndex && filterA.groupIndex != 0) { return filterA.groupIndex > 0; } bool collide = (filterA.maskBits & filterB.categoryBits) != 0 && (filterA.categoryBits & filterB.maskBits) != 0; return collide; } love-0.9.1/src/libraries/Box2D/Dynamics/b2Island.cpp0000755000000000000000000004032412316602166022067 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include #include #include #include #include /* Position Correction Notes ========================= I tried the several algorithms for position correction of the 2D revolute joint. I looked at these systems: - simple pendulum (1m diameter sphere on massless 5m stick) with initial angular velocity of 100 rad/s. - suspension bridge with 30 1m long planks of length 1m. - multi-link chain with 30 1m long links. Here are the algorithms: Baumgarte - A fraction of the position error is added to the velocity error. There is no separate position solver. Pseudo Velocities - After the velocity solver and position integration, the position error, Jacobian, and effective mass are recomputed. Then the velocity constraints are solved with pseudo velocities and a fraction of the position error is added to the pseudo velocity error. The pseudo velocities are initialized to zero and there is no warm-starting. After the position solver, the pseudo velocities are added to the positions. This is also called the First Order World method or the Position LCP method. Modified Nonlinear Gauss-Seidel (NGS) - Like Pseudo Velocities except the position error is re-computed for each constraint and the positions are updated after the constraint is solved. The radius vectors (aka Jacobians) are re-computed too (otherwise the algorithm has horrible instability). The pseudo velocity states are not needed because they are effectively zero at the beginning of each iteration. Since we have the current position error, we allow the iterations to terminate early if the error becomes smaller than b2_linearSlop. Full NGS or just NGS - Like Modified NGS except the effective mass are re-computed each time a constraint is solved. Here are the results: Baumgarte - this is the cheapest algorithm but it has some stability problems, especially with the bridge. The chain links separate easily close to the root and they jitter as they struggle to pull together. This is one of the most common methods in the field. The big drawback is that the position correction artificially affects the momentum, thus leading to instabilities and false bounce. I used a bias factor of 0.2. A larger bias factor makes the bridge less stable, a smaller factor makes joints and contacts more spongy. Pseudo Velocities - the is more stable than the Baumgarte method. The bridge is stable. However, joints still separate with large angular velocities. Drag the simple pendulum in a circle quickly and the joint will separate. The chain separates easily and does not recover. I used a bias factor of 0.2. A larger value lead to the bridge collapsing when a heavy cube drops on it. Modified NGS - this algorithm is better in some ways than Baumgarte and Pseudo Velocities, but in other ways it is worse. The bridge and chain are much more stable, but the simple pendulum goes unstable at high angular velocities. Full NGS - stable in all tests. The joints display good stiffness. The bridge still sags, but this is better than infinite forces. Recommendations Pseudo Velocities are not really worthwhile because the bridge and chain cannot recover from joint separation. In other cases the benefit over Baumgarte is small. Modified NGS is not a robust method for the revolute joint due to the violent instability seen in the simple pendulum. Perhaps it is viable with other constraint types, especially scalar constraints where the effective mass is a scalar. This leaves Baumgarte and Full NGS. Baumgarte has small, but manageable instabilities and is very fast. I don't think we can escape Baumgarte, especially in highly demanding cases where high constraint fidelity is not needed. Full NGS is robust and easy on the eyes. I recommend this as an option for higher fidelity simulation and certainly for suspension bridges and long chains. Full NGS might be a good choice for ragdolls, especially motorized ragdolls where joint separation can be problematic. The number of NGS iterations can be reduced for better performance without harming robustness much. Each joint in a can be handled differently in the position solver. So I recommend a system where the user can select the algorithm on a per joint basis. I would probably default to the slower Full NGS and let the user select the faster Baumgarte method in performance critical scenarios. */ /* Cache Performance The Box2D solvers are dominated by cache misses. Data structures are designed to increase the number of cache hits. Much of misses are due to random access to body data. The constraint structures are iterated over linearly, which leads to few cache misses. The bodies are not accessed during iteration. Instead read only data, such as the mass values are stored with the constraints. The mutable data are the constraint impulses and the bodies velocities/positions. The impulses are held inside the constraint structures. The body velocities/positions are held in compact, temporary arrays to increase the number of cache hits. Linear and angular velocity are stored in a single array since multiple arrays lead to multiple misses. */ /* 2D Rotation R = [cos(theta) -sin(theta)] [sin(theta) cos(theta) ] thetaDot = omega Let q1 = cos(theta), q2 = sin(theta). R = [q1 -q2] [q2 q1] q1Dot = -thetaDot * q2 q2Dot = thetaDot * q1 q1_new = q1_old - dt * w * q2 q2_new = q2_old + dt * w * q1 then normalize. This might be faster than computing sin+cos. However, we can compute sin+cos of the same angle fast. */ b2Island::b2Island( int32 bodyCapacity, int32 contactCapacity, int32 jointCapacity, b2StackAllocator* allocator, b2ContactListener* listener) { m_bodyCapacity = bodyCapacity; m_contactCapacity = contactCapacity; m_jointCapacity = jointCapacity; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = allocator; m_listener = listener; m_bodies = (b2Body**)m_allocator->Allocate(bodyCapacity * sizeof(b2Body*)); m_contacts = (b2Contact**)m_allocator->Allocate(contactCapacity * sizeof(b2Contact*)); m_joints = (b2Joint**)m_allocator->Allocate(jointCapacity * sizeof(b2Joint*)); m_velocities = (b2Velocity*)m_allocator->Allocate(m_bodyCapacity * sizeof(b2Velocity)); m_positions = (b2Position*)m_allocator->Allocate(m_bodyCapacity * sizeof(b2Position)); } b2Island::~b2Island() { // Warning: the order should reverse the constructor order. m_allocator->Free(m_positions); m_allocator->Free(m_velocities); m_allocator->Free(m_joints); m_allocator->Free(m_contacts); m_allocator->Free(m_bodies); } void b2Island::Solve(b2Profile* profile, const b2TimeStep& step, const b2Vec2& gravity, bool allowSleep) { b2Timer timer; float32 h = step.dt; // Integrate velocities and apply damping. Initialize the body state. for (int32 i = 0; i < m_bodyCount; ++i) { b2Body* b = m_bodies[i]; b2Vec2 c = b->m_sweep.c; float32 a = b->m_sweep.a; b2Vec2 v = b->m_linearVelocity; float32 w = b->m_angularVelocity; // Store positions for continuous collision. b->m_sweep.c0 = b->m_sweep.c; b->m_sweep.a0 = b->m_sweep.a; if (b->m_type == b2_dynamicBody) { // Integrate velocities. v += h * (b->m_gravityScale * gravity + b->m_invMass * b->m_force); w += h * b->m_invI * b->m_torque; // Apply damping. // ODE: dv/dt + c * v = 0 // Solution: v(t) = v0 * exp(-c * t) // Time step: v(t + dt) = v0 * exp(-c * (t + dt)) = v0 * exp(-c * t) * exp(-c * dt) = v * exp(-c * dt) // v2 = exp(-c * dt) * v1 // Pade approximation: // v2 = v1 * 1 / (1 + c * dt) v *= 1.0f / (1.0f + h * b->m_linearDamping); w *= 1.0f / (1.0f + h * b->m_angularDamping); } m_positions[i].c = c; m_positions[i].a = a; m_velocities[i].v = v; m_velocities[i].w = w; } timer.Reset(); // Solver data b2SolverData solverData; solverData.step = step; solverData.positions = m_positions; solverData.velocities = m_velocities; // Initialize velocity constraints. b2ContactSolverDef contactSolverDef; contactSolverDef.step = step; contactSolverDef.contacts = m_contacts; contactSolverDef.count = m_contactCount; contactSolverDef.positions = m_positions; contactSolverDef.velocities = m_velocities; contactSolverDef.allocator = m_allocator; b2ContactSolver contactSolver(&contactSolverDef); contactSolver.InitializeVelocityConstraints(); if (step.warmStarting) { contactSolver.WarmStart(); } for (int32 i = 0; i < m_jointCount; ++i) { m_joints[i]->InitVelocityConstraints(solverData); } profile->solveInit = timer.GetMilliseconds(); // Solve velocity constraints timer.Reset(); for (int32 i = 0; i < step.velocityIterations; ++i) { for (int32 j = 0; j < m_jointCount; ++j) { m_joints[j]->SolveVelocityConstraints(solverData); } contactSolver.SolveVelocityConstraints(); } // Store impulses for warm starting contactSolver.StoreImpulses(); profile->solveVelocity = timer.GetMilliseconds(); // Integrate positions for (int32 i = 0; i < m_bodyCount; ++i) { b2Vec2 c = m_positions[i].c; float32 a = m_positions[i].a; b2Vec2 v = m_velocities[i].v; float32 w = m_velocities[i].w; // Check for large velocities b2Vec2 translation = h * v; if (b2Dot(translation, translation) > b2_maxTranslationSquared) { float32 ratio = b2_maxTranslation / translation.Length(); v *= ratio; } float32 rotation = h * w; if (rotation * rotation > b2_maxRotationSquared) { float32 ratio = b2_maxRotation / b2Abs(rotation); w *= ratio; } // Integrate c += h * v; a += h * w; m_positions[i].c = c; m_positions[i].a = a; m_velocities[i].v = v; m_velocities[i].w = w; } // Solve position constraints timer.Reset(); bool positionSolved = false; for (int32 i = 0; i < step.positionIterations; ++i) { bool contactsOkay = contactSolver.SolvePositionConstraints(); bool jointsOkay = true; for (int32 i = 0; i < m_jointCount; ++i) { bool jointOkay = m_joints[i]->SolvePositionConstraints(solverData); jointsOkay = jointsOkay && jointOkay; } if (contactsOkay && jointsOkay) { // Exit early if the position errors are small. positionSolved = true; break; } } // Copy state buffers back to the bodies for (int32 i = 0; i < m_bodyCount; ++i) { b2Body* body = m_bodies[i]; body->m_sweep.c = m_positions[i].c; body->m_sweep.a = m_positions[i].a; body->m_linearVelocity = m_velocities[i].v; body->m_angularVelocity = m_velocities[i].w; body->SynchronizeTransform(); } profile->solvePosition = timer.GetMilliseconds(); Report(contactSolver.m_velocityConstraints); if (allowSleep) { float32 minSleepTime = b2_maxFloat; const float32 linTolSqr = b2_linearSleepTolerance * b2_linearSleepTolerance; const float32 angTolSqr = b2_angularSleepTolerance * b2_angularSleepTolerance; for (int32 i = 0; i < m_bodyCount; ++i) { b2Body* b = m_bodies[i]; if (b->GetType() == b2_staticBody) { continue; } if ((b->m_flags & b2Body::e_autoSleepFlag) == 0 || b->m_angularVelocity * b->m_angularVelocity > angTolSqr || b2Dot(b->m_linearVelocity, b->m_linearVelocity) > linTolSqr) { b->m_sleepTime = 0.0f; minSleepTime = 0.0f; } else { b->m_sleepTime += h; minSleepTime = b2Min(minSleepTime, b->m_sleepTime); } } if (minSleepTime >= b2_timeToSleep && positionSolved) { for (int32 i = 0; i < m_bodyCount; ++i) { b2Body* b = m_bodies[i]; b->SetAwake(false); } } } } void b2Island::SolveTOI(const b2TimeStep& subStep, int32 toiIndexA, int32 toiIndexB) { b2Assert(toiIndexA < m_bodyCount); b2Assert(toiIndexB < m_bodyCount); // Initialize the body state. for (int32 i = 0; i < m_bodyCount; ++i) { b2Body* b = m_bodies[i]; m_positions[i].c = b->m_sweep.c; m_positions[i].a = b->m_sweep.a; m_velocities[i].v = b->m_linearVelocity; m_velocities[i].w = b->m_angularVelocity; } b2ContactSolverDef contactSolverDef; contactSolverDef.contacts = m_contacts; contactSolverDef.count = m_contactCount; contactSolverDef.allocator = m_allocator; contactSolverDef.step = subStep; contactSolverDef.positions = m_positions; contactSolverDef.velocities = m_velocities; b2ContactSolver contactSolver(&contactSolverDef); // Solve position constraints. for (int32 i = 0; i < subStep.positionIterations; ++i) { bool contactsOkay = contactSolver.SolveTOIPositionConstraints(toiIndexA, toiIndexB); if (contactsOkay) { break; } } #if 0 // Is the new position really safe? for (int32 i = 0; i < m_contactCount; ++i) { b2Contact* c = m_contacts[i]; b2Fixture* fA = c->GetFixtureA(); b2Fixture* fB = c->GetFixtureB(); b2Body* bA = fA->GetBody(); b2Body* bB = fB->GetBody(); int32 indexA = c->GetChildIndexA(); int32 indexB = c->GetChildIndexB(); b2DistanceInput input; input.proxyA.Set(fA->GetShape(), indexA); input.proxyB.Set(fB->GetShape(), indexB); input.transformA = bA->GetTransform(); input.transformB = bB->GetTransform(); input.useRadii = false; b2DistanceOutput output; b2SimplexCache cache; cache.count = 0; b2Distance(&output, &cache, &input); if (output.distance == 0 || cache.count == 3) { cache.count += 0; } } #endif // Leap of faith to new safe state. m_bodies[toiIndexA]->m_sweep.c0 = m_positions[toiIndexA].c; m_bodies[toiIndexA]->m_sweep.a0 = m_positions[toiIndexA].a; m_bodies[toiIndexB]->m_sweep.c0 = m_positions[toiIndexB].c; m_bodies[toiIndexB]->m_sweep.a0 = m_positions[toiIndexB].a; // No warm starting is needed for TOI events because warm // starting impulses were applied in the discrete solver. contactSolver.InitializeVelocityConstraints(); // Solve velocity constraints. for (int32 i = 0; i < subStep.velocityIterations; ++i) { contactSolver.SolveVelocityConstraints(); } // Don't store the TOI contact forces for warm starting // because they can be quite large. float32 h = subStep.dt; // Integrate positions for (int32 i = 0; i < m_bodyCount; ++i) { b2Vec2 c = m_positions[i].c; float32 a = m_positions[i].a; b2Vec2 v = m_velocities[i].v; float32 w = m_velocities[i].w; // Check for large velocities b2Vec2 translation = h * v; if (b2Dot(translation, translation) > b2_maxTranslationSquared) { float32 ratio = b2_maxTranslation / translation.Length(); v *= ratio; } float32 rotation = h * w; if (rotation * rotation > b2_maxRotationSquared) { float32 ratio = b2_maxRotation / b2Abs(rotation); w *= ratio; } // Integrate c += h * v; a += h * w; m_positions[i].c = c; m_positions[i].a = a; m_velocities[i].v = v; m_velocities[i].w = w; // Sync bodies b2Body* body = m_bodies[i]; body->m_sweep.c = c; body->m_sweep.a = a; body->m_linearVelocity = v; body->m_angularVelocity = w; body->SynchronizeTransform(); } Report(contactSolver.m_velocityConstraints); } void b2Island::Report(const b2ContactVelocityConstraint* constraints) { if (m_listener == NULL) { return; } for (int32 i = 0; i < m_contactCount; ++i) { b2Contact* c = m_contacts[i]; const b2ContactVelocityConstraint* vc = constraints + i; b2ContactImpulse impulse; impulse.count = vc->pointCount; for (int32 j = 0; j < vc->pointCount; ++j) { impulse.normalImpulses[j] = vc->points[j].normalImpulse; impulse.tangentImpulses[j] = vc->points[j].tangentImpulse; } m_listener->PostSolve(c, &impulse); } } love-0.9.1/src/libraries/Box2D/Dynamics/b2World.cpp0000755000000000000000000007201012316602166021741 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include b2World::b2World(const b2Vec2& gravity) { m_destructionListener = NULL; m_debugDraw = NULL; m_bodyList = NULL; m_jointList = NULL; m_bodyCount = 0; m_jointCount = 0; m_warmStarting = true; m_continuousPhysics = true; m_subStepping = false; m_stepComplete = true; m_allowSleep = true; m_gravity = gravity; m_flags = e_clearForces; m_inv_dt0 = 0.0f; m_contactManager.m_allocator = &m_blockAllocator; memset(&m_profile, 0, sizeof(b2Profile)); } b2World::~b2World() { // Some shapes allocate using b2Alloc. b2Body* b = m_bodyList; while (b) { b2Body* bNext = b->m_next; b2Fixture* f = b->m_fixtureList; while (f) { b2Fixture* fNext = f->m_next; f->m_proxyCount = 0; f->Destroy(&m_blockAllocator); f = fNext; } b = bNext; } } void b2World::SetDestructionListener(b2DestructionListener* listener) { m_destructionListener = listener; } void b2World::SetContactFilter(b2ContactFilter* filter) { m_contactManager.m_contactFilter = filter; } void b2World::SetContactListener(b2ContactListener* listener) { m_contactManager.m_contactListener = listener; } void b2World::SetDebugDraw(b2Draw* debugDraw) { m_debugDraw = debugDraw; } b2Body* b2World::CreateBody(const b2BodyDef* def) { b2Assert(IsLocked() == false); if (IsLocked()) { return NULL; } void* mem = m_blockAllocator.Allocate(sizeof(b2Body)); b2Body* b = new (mem) b2Body(def, this); // Add to world doubly linked list. b->m_prev = NULL; b->m_next = m_bodyList; if (m_bodyList) { m_bodyList->m_prev = b; } m_bodyList = b; ++m_bodyCount; return b; } void b2World::DestroyBody(b2Body* b) { b2Assert(m_bodyCount > 0); b2Assert(IsLocked() == false); if (IsLocked()) { return; } // Delete the attached joints. b2JointEdge* je = b->m_jointList; while (je) { b2JointEdge* je0 = je; je = je->next; if (m_destructionListener) { m_destructionListener->SayGoodbye(je0->joint); } DestroyJoint(je0->joint); b->m_jointList = je; } b->m_jointList = NULL; // Delete the attached contacts. b2ContactEdge* ce = b->m_contactList; while (ce) { b2ContactEdge* ce0 = ce; ce = ce->next; m_contactManager.Destroy(ce0->contact); } b->m_contactList = NULL; // Delete the attached fixtures. This destroys broad-phase proxies. b2Fixture* f = b->m_fixtureList; while (f) { b2Fixture* f0 = f; f = f->m_next; if (m_destructionListener) { m_destructionListener->SayGoodbye(f0); } f0->DestroyProxies(&m_contactManager.m_broadPhase); f0->Destroy(&m_blockAllocator); f0->~b2Fixture(); m_blockAllocator.Free(f0, sizeof(b2Fixture)); b->m_fixtureList = f; b->m_fixtureCount -= 1; } b->m_fixtureList = NULL; b->m_fixtureCount = 0; // Remove world body list. if (b->m_prev) { b->m_prev->m_next = b->m_next; } if (b->m_next) { b->m_next->m_prev = b->m_prev; } if (b == m_bodyList) { m_bodyList = b->m_next; } --m_bodyCount; b->~b2Body(); m_blockAllocator.Free(b, sizeof(b2Body)); } b2Joint* b2World::CreateJoint(const b2JointDef* def) { b2Assert(IsLocked() == false); if (IsLocked()) { return NULL; } b2Joint* j = b2Joint::Create(def, &m_blockAllocator); // Connect to the world list. j->m_prev = NULL; j->m_next = m_jointList; if (m_jointList) { m_jointList->m_prev = j; } m_jointList = j; ++m_jointCount; // Connect to the bodies' doubly linked lists. j->m_edgeA.joint = j; j->m_edgeA.other = j->m_bodyB; j->m_edgeA.prev = NULL; j->m_edgeA.next = j->m_bodyA->m_jointList; if (j->m_bodyA->m_jointList) j->m_bodyA->m_jointList->prev = &j->m_edgeA; j->m_bodyA->m_jointList = &j->m_edgeA; j->m_edgeB.joint = j; j->m_edgeB.other = j->m_bodyA; j->m_edgeB.prev = NULL; j->m_edgeB.next = j->m_bodyB->m_jointList; if (j->m_bodyB->m_jointList) j->m_bodyB->m_jointList->prev = &j->m_edgeB; j->m_bodyB->m_jointList = &j->m_edgeB; b2Body* bodyA = def->bodyA; b2Body* bodyB = def->bodyB; // If the joint prevents collisions, then flag any contacts for filtering. if (def->collideConnected == false) { b2ContactEdge* edge = bodyB->GetContactList(); while (edge) { if (edge->other == bodyA) { // Flag the contact for filtering at the next time step (where either // body is awake). edge->contact->FlagForFiltering(); } edge = edge->next; } } // Note: creating a joint doesn't wake the bodies. return j; } void b2World::DestroyJoint(b2Joint* j) { b2Assert(IsLocked() == false); if (IsLocked()) { return; } bool collideConnected = j->m_collideConnected; // Remove from the doubly linked list. if (j->m_prev) { j->m_prev->m_next = j->m_next; } if (j->m_next) { j->m_next->m_prev = j->m_prev; } if (j == m_jointList) { m_jointList = j->m_next; } // Disconnect from island graph. b2Body* bodyA = j->m_bodyA; b2Body* bodyB = j->m_bodyB; // Wake up connected bodies. bodyA->SetAwake(true); bodyB->SetAwake(true); // Remove from body 1. if (j->m_edgeA.prev) { j->m_edgeA.prev->next = j->m_edgeA.next; } if (j->m_edgeA.next) { j->m_edgeA.next->prev = j->m_edgeA.prev; } if (&j->m_edgeA == bodyA->m_jointList) { bodyA->m_jointList = j->m_edgeA.next; } j->m_edgeA.prev = NULL; j->m_edgeA.next = NULL; // Remove from body 2 if (j->m_edgeB.prev) { j->m_edgeB.prev->next = j->m_edgeB.next; } if (j->m_edgeB.next) { j->m_edgeB.next->prev = j->m_edgeB.prev; } if (&j->m_edgeB == bodyB->m_jointList) { bodyB->m_jointList = j->m_edgeB.next; } j->m_edgeB.prev = NULL; j->m_edgeB.next = NULL; b2Joint::Destroy(j, &m_blockAllocator); b2Assert(m_jointCount > 0); --m_jointCount; // If the joint prevents collisions, then flag any contacts for filtering. if (collideConnected == false) { b2ContactEdge* edge = bodyB->GetContactList(); while (edge) { if (edge->other == bodyA) { // Flag the contact for filtering at the next time step (where either // body is awake). edge->contact->FlagForFiltering(); } edge = edge->next; } } } // void b2World::SetAllowSleeping(bool flag) { if (flag == m_allowSleep) { return; } m_allowSleep = flag; if (m_allowSleep == false) { for (b2Body* b = m_bodyList; b; b = b->m_next) { b->SetAwake(true); } } } // Find islands, integrate and solve constraints, solve position constraints void b2World::Solve(const b2TimeStep& step) { m_profile.solveInit = 0.0f; m_profile.solveVelocity = 0.0f; m_profile.solvePosition = 0.0f; // Size the island for the worst case. b2Island island(m_bodyCount, m_contactManager.m_contactCount, m_jointCount, &m_stackAllocator, m_contactManager.m_contactListener); // Clear all the island flags. for (b2Body* b = m_bodyList; b; b = b->m_next) { b->m_flags &= ~b2Body::e_islandFlag; } for (b2Contact* c = m_contactManager.m_contactList; c; c = c->m_next) { c->m_flags &= ~b2Contact::e_islandFlag; } for (b2Joint* j = m_jointList; j; j = j->m_next) { j->m_islandFlag = false; } // Build and simulate all awake islands. int32 stackSize = m_bodyCount; b2Body** stack = (b2Body**)m_stackAllocator.Allocate(stackSize * sizeof(b2Body*)); for (b2Body* seed = m_bodyList; seed; seed = seed->m_next) { if (seed->m_flags & b2Body::e_islandFlag) { continue; } if (seed->IsAwake() == false || seed->IsActive() == false) { continue; } // The seed can be dynamic or kinematic. if (seed->GetType() == b2_staticBody) { continue; } // Reset island and stack. island.Clear(); int32 stackCount = 0; stack[stackCount++] = seed; seed->m_flags |= b2Body::e_islandFlag; // Perform a depth first search (DFS) on the constraint graph. while (stackCount > 0) { // Grab the next body off the stack and add it to the island. b2Body* b = stack[--stackCount]; b2Assert(b->IsActive() == true); island.Add(b); // Make sure the body is awake. b->SetAwake(true); // To keep islands as small as possible, we don't // propagate islands across static bodies. if (b->GetType() == b2_staticBody) { continue; } // Search all contacts connected to this body. for (b2ContactEdge* ce = b->m_contactList; ce; ce = ce->next) { b2Contact* contact = ce->contact; // Has this contact already been added to an island? if (contact->m_flags & b2Contact::e_islandFlag) { continue; } // Is this contact solid and touching? if (contact->IsEnabled() == false || contact->IsTouching() == false) { continue; } // Skip sensors. bool sensorA = contact->m_fixtureA->m_isSensor; bool sensorB = contact->m_fixtureB->m_isSensor; if (sensorA || sensorB) { continue; } island.Add(contact); contact->m_flags |= b2Contact::e_islandFlag; b2Body* other = ce->other; // Was the other body already added to this island? if (other->m_flags & b2Body::e_islandFlag) { continue; } b2Assert(stackCount < stackSize); stack[stackCount++] = other; other->m_flags |= b2Body::e_islandFlag; } // Search all joints connect to this body. for (b2JointEdge* je = b->m_jointList; je; je = je->next) { if (je->joint->m_islandFlag == true) { continue; } b2Body* other = je->other; // Don't simulate joints connected to inactive bodies. if (other->IsActive() == false) { continue; } island.Add(je->joint); je->joint->m_islandFlag = true; if (other->m_flags & b2Body::e_islandFlag) { continue; } b2Assert(stackCount < stackSize); stack[stackCount++] = other; other->m_flags |= b2Body::e_islandFlag; } } b2Profile profile; island.Solve(&profile, step, m_gravity, m_allowSleep); m_profile.solveInit += profile.solveInit; m_profile.solveVelocity += profile.solveVelocity; m_profile.solvePosition += profile.solvePosition; // Post solve cleanup. for (int32 i = 0; i < island.m_bodyCount; ++i) { // Allow static bodies to participate in other islands. b2Body* b = island.m_bodies[i]; if (b->GetType() == b2_staticBody) { b->m_flags &= ~b2Body::e_islandFlag; } } } m_stackAllocator.Free(stack); { b2Timer timer; // Synchronize fixtures, check for out of range bodies. for (b2Body* b = m_bodyList; b; b = b->GetNext()) { // If a body was not in an island then it did not move. if ((b->m_flags & b2Body::e_islandFlag) == 0) { continue; } if (b->GetType() == b2_staticBody) { continue; } // Update fixtures (for broad-phase). b->SynchronizeFixtures(); } // Look for new contacts. m_contactManager.FindNewContacts(); m_profile.broadphase = timer.GetMilliseconds(); } } // Find TOI contacts and solve them. void b2World::SolveTOI(const b2TimeStep& step) { b2Island island(2 * b2_maxTOIContacts, b2_maxTOIContacts, 0, &m_stackAllocator, m_contactManager.m_contactListener); if (m_stepComplete) { for (b2Body* b = m_bodyList; b; b = b->m_next) { b->m_flags &= ~b2Body::e_islandFlag; b->m_sweep.alpha0 = 0.0f; } for (b2Contact* c = m_contactManager.m_contactList; c; c = c->m_next) { // Invalidate TOI c->m_flags &= ~(b2Contact::e_toiFlag | b2Contact::e_islandFlag); c->m_toiCount = 0; c->m_toi = 1.0f; } } // Find TOI events and solve them. for (;;) { // Find the first TOI. b2Contact* minContact = NULL; float32 minAlpha = 1.0f; for (b2Contact* c = m_contactManager.m_contactList; c; c = c->m_next) { // Is this contact disabled? if (c->IsEnabled() == false) { continue; } // Prevent excessive sub-stepping. if (c->m_toiCount > b2_maxSubSteps) { continue; } float32 alpha = 1.0f; if (c->m_flags & b2Contact::e_toiFlag) { // This contact has a valid cached TOI. alpha = c->m_toi; } else { b2Fixture* fA = c->GetFixtureA(); b2Fixture* fB = c->GetFixtureB(); // Is there a sensor? if (fA->IsSensor() || fB->IsSensor()) { continue; } b2Body* bA = fA->GetBody(); b2Body* bB = fB->GetBody(); b2BodyType typeA = bA->m_type; b2BodyType typeB = bB->m_type; b2Assert(typeA == b2_dynamicBody || typeB == b2_dynamicBody); bool activeA = bA->IsAwake() && typeA != b2_staticBody; bool activeB = bB->IsAwake() && typeB != b2_staticBody; // Is at least one body active (awake and dynamic or kinematic)? if (activeA == false && activeB == false) { continue; } bool collideA = bA->IsBullet() || typeA != b2_dynamicBody; bool collideB = bB->IsBullet() || typeB != b2_dynamicBody; // Are these two non-bullet dynamic bodies? if (collideA == false && collideB == false) { continue; } // Compute the TOI for this contact. // Put the sweeps onto the same time interval. float32 alpha0 = bA->m_sweep.alpha0; if (bA->m_sweep.alpha0 < bB->m_sweep.alpha0) { alpha0 = bB->m_sweep.alpha0; bA->m_sweep.Advance(alpha0); } else if (bB->m_sweep.alpha0 < bA->m_sweep.alpha0) { alpha0 = bA->m_sweep.alpha0; bB->m_sweep.Advance(alpha0); } b2Assert(alpha0 < 1.0f); int32 indexA = c->GetChildIndexA(); int32 indexB = c->GetChildIndexB(); // Compute the time of impact in interval [0, minTOI] b2TOIInput input; input.proxyA.Set(fA->GetShape(), indexA); input.proxyB.Set(fB->GetShape(), indexB); input.sweepA = bA->m_sweep; input.sweepB = bB->m_sweep; input.tMax = 1.0f; b2TOIOutput output; b2TimeOfImpact(&output, &input); // Beta is the fraction of the remaining portion of the . float32 beta = output.t; if (output.state == b2TOIOutput::e_touching) { alpha = b2Min(alpha0 + (1.0f - alpha0) * beta, 1.0f); } else { alpha = 1.0f; } c->m_toi = alpha; c->m_flags |= b2Contact::e_toiFlag; } if (alpha < minAlpha) { // This is the minimum TOI found so far. minContact = c; minAlpha = alpha; } } if (minContact == NULL || 1.0f - 10.0f * b2_epsilon < minAlpha) { // No more TOI events. Done! m_stepComplete = true; break; } // Advance the bodies to the TOI. b2Fixture* fA = minContact->GetFixtureA(); b2Fixture* fB = minContact->GetFixtureB(); b2Body* bA = fA->GetBody(); b2Body* bB = fB->GetBody(); b2Sweep backup1 = bA->m_sweep; b2Sweep backup2 = bB->m_sweep; bA->Advance(minAlpha); bB->Advance(minAlpha); // The TOI contact likely has some new contact points. minContact->Update(m_contactManager.m_contactListener); minContact->m_flags &= ~b2Contact::e_toiFlag; ++minContact->m_toiCount; // Is the contact solid? if (minContact->IsEnabled() == false || minContact->IsTouching() == false) { // Restore the sweeps. minContact->SetEnabled(false); bA->m_sweep = backup1; bB->m_sweep = backup2; bA->SynchronizeTransform(); bB->SynchronizeTransform(); continue; } bA->SetAwake(true); bB->SetAwake(true); // Build the island island.Clear(); island.Add(bA); island.Add(bB); island.Add(minContact); bA->m_flags |= b2Body::e_islandFlag; bB->m_flags |= b2Body::e_islandFlag; minContact->m_flags |= b2Contact::e_islandFlag; // Get contacts on bodyA and bodyB. b2Body* bodies[2] = {bA, bB}; for (int32 i = 0; i < 2; ++i) { b2Body* body = bodies[i]; if (body->m_type == b2_dynamicBody) { for (b2ContactEdge* ce = body->m_contactList; ce; ce = ce->next) { if (island.m_bodyCount == island.m_bodyCapacity) { break; } if (island.m_contactCount == island.m_contactCapacity) { break; } b2Contact* contact = ce->contact; // Has this contact already been added to the island? if (contact->m_flags & b2Contact::e_islandFlag) { continue; } // Only add static, kinematic, or bullet bodies. b2Body* other = ce->other; if (other->m_type == b2_dynamicBody && body->IsBullet() == false && other->IsBullet() == false) { continue; } // Skip sensors. bool sensorA = contact->m_fixtureA->m_isSensor; bool sensorB = contact->m_fixtureB->m_isSensor; if (sensorA || sensorB) { continue; } // Tentatively advance the body to the TOI. b2Sweep backup = other->m_sweep; if ((other->m_flags & b2Body::e_islandFlag) == 0) { other->Advance(minAlpha); } // Update the contact points contact->Update(m_contactManager.m_contactListener); // Was the contact disabled by the user? if (contact->IsEnabled() == false) { other->m_sweep = backup; other->SynchronizeTransform(); continue; } // Are there contact points? if (contact->IsTouching() == false) { other->m_sweep = backup; other->SynchronizeTransform(); continue; } // Add the contact to the island contact->m_flags |= b2Contact::e_islandFlag; island.Add(contact); // Has the other body already been added to the island? if (other->m_flags & b2Body::e_islandFlag) { continue; } // Add the other body to the island. other->m_flags |= b2Body::e_islandFlag; if (other->m_type != b2_staticBody) { other->SetAwake(true); } island.Add(other); } } } b2TimeStep subStep; subStep.dt = (1.0f - minAlpha) * step.dt; subStep.inv_dt = 1.0f / subStep.dt; subStep.dtRatio = 1.0f; subStep.positionIterations = 20; subStep.velocityIterations = step.velocityIterations; subStep.warmStarting = false; island.SolveTOI(subStep, bA->m_islandIndex, bB->m_islandIndex); // Reset island flags and synchronize broad-phase proxies. for (int32 i = 0; i < island.m_bodyCount; ++i) { b2Body* body = island.m_bodies[i]; body->m_flags &= ~b2Body::e_islandFlag; if (body->m_type != b2_dynamicBody) { continue; } body->SynchronizeFixtures(); // Invalidate all contact TOIs on this displaced body. for (b2ContactEdge* ce = body->m_contactList; ce; ce = ce->next) { ce->contact->m_flags &= ~(b2Contact::e_toiFlag | b2Contact::e_islandFlag); } } // Commit fixture proxy movements to the broad-phase so that new contacts are created. // Also, some contacts can be destroyed. m_contactManager.FindNewContacts(); if (m_subStepping) { m_stepComplete = false; break; } } } void b2World::Step(float32 dt, int32 velocityIterations, int32 positionIterations) { b2Timer stepTimer; // If new fixtures were added, we need to find the new contacts. if (m_flags & e_newFixture) { m_contactManager.FindNewContacts(); m_flags &= ~e_newFixture; } m_flags |= e_locked; b2TimeStep step; step.dt = dt; step.velocityIterations = velocityIterations; step.positionIterations = positionIterations; if (dt > 0.0f) { step.inv_dt = 1.0f / dt; } else { step.inv_dt = 0.0f; } step.dtRatio = m_inv_dt0 * dt; step.warmStarting = m_warmStarting; // Update contacts. This is where some contacts are destroyed. { b2Timer timer; m_contactManager.Collide(); m_profile.collide = timer.GetMilliseconds(); } // Integrate velocities, solve velocity constraints, and integrate positions. if (m_stepComplete && step.dt > 0.0f) { b2Timer timer; Solve(step); m_profile.solve = timer.GetMilliseconds(); } // Handle TOI events. if (m_continuousPhysics && step.dt > 0.0f) { b2Timer timer; SolveTOI(step); m_profile.solveTOI = timer.GetMilliseconds(); } if (step.dt > 0.0f) { m_inv_dt0 = step.inv_dt; } if (m_flags & e_clearForces) { ClearForces(); } m_flags &= ~e_locked; m_profile.step = stepTimer.GetMilliseconds(); } void b2World::ClearForces() { for (b2Body* body = m_bodyList; body; body = body->GetNext()) { body->m_force.SetZero(); body->m_torque = 0.0f; } } struct b2WorldQueryWrapper { bool QueryCallback(int32 proxyId) { b2FixtureProxy* proxy = (b2FixtureProxy*)broadPhase->GetUserData(proxyId); return callback->ReportFixture(proxy->fixture); } const b2BroadPhase* broadPhase; b2QueryCallback* callback; }; void b2World::QueryAABB(b2QueryCallback* callback, const b2AABB& aabb) const { b2WorldQueryWrapper wrapper; wrapper.broadPhase = &m_contactManager.m_broadPhase; wrapper.callback = callback; m_contactManager.m_broadPhase.Query(&wrapper, aabb); } struct b2WorldRayCastWrapper { float32 RayCastCallback(const b2RayCastInput& input, int32 proxyId) { void* userData = broadPhase->GetUserData(proxyId); b2FixtureProxy* proxy = (b2FixtureProxy*)userData; b2Fixture* fixture = proxy->fixture; int32 index = proxy->childIndex; b2RayCastOutput output; bool hit = fixture->RayCast(&output, input, index); if (hit) { float32 fraction = output.fraction; b2Vec2 point = (1.0f - fraction) * input.p1 + fraction * input.p2; return callback->ReportFixture(fixture, point, output.normal, fraction); } return input.maxFraction; } const b2BroadPhase* broadPhase; b2RayCastCallback* callback; }; void b2World::RayCast(b2RayCastCallback* callback, const b2Vec2& point1, const b2Vec2& point2) const { b2WorldRayCastWrapper wrapper; wrapper.broadPhase = &m_contactManager.m_broadPhase; wrapper.callback = callback; b2RayCastInput input; input.maxFraction = 1.0f; input.p1 = point1; input.p2 = point2; m_contactManager.m_broadPhase.RayCast(&wrapper, input); } void b2World::DrawShape(b2Fixture* fixture, const b2Transform& xf, const b2Color& color) { switch (fixture->GetType()) { case b2Shape::e_circle: { b2CircleShape* circle = (b2CircleShape*)fixture->GetShape(); b2Vec2 center = b2Mul(xf, circle->m_p); float32 radius = circle->m_radius; b2Vec2 axis = b2Mul(xf.q, b2Vec2(1.0f, 0.0f)); m_debugDraw->DrawSolidCircle(center, radius, axis, color); } break; case b2Shape::e_edge: { b2EdgeShape* edge = (b2EdgeShape*)fixture->GetShape(); b2Vec2 v1 = b2Mul(xf, edge->m_vertex1); b2Vec2 v2 = b2Mul(xf, edge->m_vertex2); m_debugDraw->DrawSegment(v1, v2, color); } break; case b2Shape::e_chain: { b2ChainShape* chain = (b2ChainShape*)fixture->GetShape(); int32 count = chain->m_count; const b2Vec2* vertices = chain->m_vertices; b2Vec2 v1 = b2Mul(xf, vertices[0]); for (int32 i = 1; i < count; ++i) { b2Vec2 v2 = b2Mul(xf, vertices[i]); m_debugDraw->DrawSegment(v1, v2, color); m_debugDraw->DrawCircle(v1, 0.05f, color); v1 = v2; } } break; case b2Shape::e_polygon: { b2PolygonShape* poly = (b2PolygonShape*)fixture->GetShape(); int32 vertexCount = poly->m_count; b2Assert(vertexCount <= b2_maxPolygonVertices); b2Vec2 vertices[b2_maxPolygonVertices]; for (int32 i = 0; i < vertexCount; ++i) { vertices[i] = b2Mul(xf, poly->m_vertices[i]); } m_debugDraw->DrawSolidPolygon(vertices, vertexCount, color); } break; default: break; } } void b2World::DrawJoint(b2Joint* joint) { b2Body* bodyA = joint->GetBodyA(); b2Body* bodyB = joint->GetBodyB(); const b2Transform& xf1 = bodyA->GetTransform(); const b2Transform& xf2 = bodyB->GetTransform(); b2Vec2 x1 = xf1.p; b2Vec2 x2 = xf2.p; b2Vec2 p1 = joint->GetAnchorA(); b2Vec2 p2 = joint->GetAnchorB(); b2Color color(0.5f, 0.8f, 0.8f); switch (joint->GetType()) { case e_distanceJoint: m_debugDraw->DrawSegment(p1, p2, color); break; case e_pulleyJoint: { b2PulleyJoint* pulley = (b2PulleyJoint*)joint; b2Vec2 s1 = pulley->GetGroundAnchorA(); b2Vec2 s2 = pulley->GetGroundAnchorB(); m_debugDraw->DrawSegment(s1, p1, color); m_debugDraw->DrawSegment(s2, p2, color); m_debugDraw->DrawSegment(s1, s2, color); } break; case e_mouseJoint: // don't draw this break; default: m_debugDraw->DrawSegment(x1, p1, color); m_debugDraw->DrawSegment(p1, p2, color); m_debugDraw->DrawSegment(x2, p2, color); } } void b2World::DrawDebugData() { if (m_debugDraw == NULL) { return; } uint32 flags = m_debugDraw->GetFlags(); if (flags & b2Draw::e_shapeBit) { for (b2Body* b = m_bodyList; b; b = b->GetNext()) { const b2Transform& xf = b->GetTransform(); for (b2Fixture* f = b->GetFixtureList(); f; f = f->GetNext()) { if (b->IsActive() == false) { DrawShape(f, xf, b2Color(0.5f, 0.5f, 0.3f)); } else if (b->GetType() == b2_staticBody) { DrawShape(f, xf, b2Color(0.5f, 0.9f, 0.5f)); } else if (b->GetType() == b2_kinematicBody) { DrawShape(f, xf, b2Color(0.5f, 0.5f, 0.9f)); } else if (b->IsAwake() == false) { DrawShape(f, xf, b2Color(0.6f, 0.6f, 0.6f)); } else { DrawShape(f, xf, b2Color(0.9f, 0.7f, 0.7f)); } } } } if (flags & b2Draw::e_jointBit) { for (b2Joint* j = m_jointList; j; j = j->GetNext()) { DrawJoint(j); } } if (flags & b2Draw::e_pairBit) { b2Color color(0.3f, 0.9f, 0.9f); for (b2Contact* c = m_contactManager.m_contactList; c; c = c->GetNext()) { //b2Fixture* fixtureA = c->GetFixtureA(); //b2Fixture* fixtureB = c->GetFixtureB(); //b2Vec2 cA = fixtureA->GetAABB().GetCenter(); //b2Vec2 cB = fixtureB->GetAABB().GetCenter(); //m_debugDraw->DrawSegment(cA, cB, color); } } if (flags & b2Draw::e_aabbBit) { b2Color color(0.9f, 0.3f, 0.9f); b2BroadPhase* bp = &m_contactManager.m_broadPhase; for (b2Body* b = m_bodyList; b; b = b->GetNext()) { if (b->IsActive() == false) { continue; } for (b2Fixture* f = b->GetFixtureList(); f; f = f->GetNext()) { for (int32 i = 0; i < f->m_proxyCount; ++i) { b2FixtureProxy* proxy = f->m_proxies + i; b2AABB aabb = bp->GetFatAABB(proxy->proxyId); b2Vec2 vs[4]; vs[0].Set(aabb.lowerBound.x, aabb.lowerBound.y); vs[1].Set(aabb.upperBound.x, aabb.lowerBound.y); vs[2].Set(aabb.upperBound.x, aabb.upperBound.y); vs[3].Set(aabb.lowerBound.x, aabb.upperBound.y); m_debugDraw->DrawPolygon(vs, 4, color); } } } } if (flags & b2Draw::e_centerOfMassBit) { for (b2Body* b = m_bodyList; b; b = b->GetNext()) { b2Transform xf = b->GetTransform(); xf.p = b->GetWorldCenter(); m_debugDraw->DrawTransform(xf); } } } int32 b2World::GetProxyCount() const { return m_contactManager.m_broadPhase.GetProxyCount(); } int32 b2World::GetTreeHeight() const { return m_contactManager.m_broadPhase.GetTreeHeight(); } int32 b2World::GetTreeBalance() const { return m_contactManager.m_broadPhase.GetTreeBalance(); } float32 b2World::GetTreeQuality() const { return m_contactManager.m_broadPhase.GetTreeQuality(); } void b2World::ShiftOrigin(const b2Vec2& newOrigin) { b2Assert((m_flags & e_locked) == 0); if ((m_flags & e_locked) == e_locked) { return; } for (b2Body* b = m_bodyList; b; b = b->m_next) { b->m_xf.p -= newOrigin; b->m_sweep.c0 -= newOrigin; b->m_sweep.c -= newOrigin; } for (b2Joint* j = m_jointList; j; j = j->m_next) { j->ShiftOrigin(newOrigin); } m_contactManager.m_broadPhase.ShiftOrigin(newOrigin); } void b2World::Dump() { if ((m_flags & e_locked) == e_locked) { return; } b2Log("b2Vec2 g(%.15lef, %.15lef);\n", m_gravity.x, m_gravity.y); b2Log("m_world->SetGravity(g);\n"); b2Log("b2Body** bodies = (b2Body**)b2Alloc(%d * sizeof(b2Body*));\n", m_bodyCount); b2Log("b2Joint** joints = (b2Joint**)b2Alloc(%d * sizeof(b2Joint*));\n", m_jointCount); int32 i = 0; for (b2Body* b = m_bodyList; b; b = b->m_next) { b->m_islandIndex = i; b->Dump(); ++i; } i = 0; for (b2Joint* j = m_jointList; j; j = j->m_next) { j->m_index = i; ++i; } // First pass on joints, skip gear joints. for (b2Joint* j = m_jointList; j; j = j->m_next) { if (j->m_type == e_gearJoint) { continue; } b2Log("{\n"); j->Dump(); b2Log("}\n"); } // Second pass on joints, only gear joints. for (b2Joint* j = m_jointList; j; j = j->m_next) { if (j->m_type != e_gearJoint) { continue; } b2Log("{\n"); j->Dump(); b2Log("}\n"); } b2Log("b2Free(joints);\n"); b2Log("b2Free(bodies);\n"); b2Log("joints = NULL;\n"); b2Log("bodies = NULL;\n"); } love-0.9.1/src/libraries/Box2D/Dynamics/b2Island.h0000755000000000000000000000461512316602166021537 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_ISLAND_H #define B2_ISLAND_H #include #include #include class b2Contact; class b2Joint; class b2StackAllocator; class b2ContactListener; struct b2ContactVelocityConstraint; struct b2Profile; /// This is an internal class. class b2Island { public: b2Island(int32 bodyCapacity, int32 contactCapacity, int32 jointCapacity, b2StackAllocator* allocator, b2ContactListener* listener); ~b2Island(); void Clear() { m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } void Solve(b2Profile* profile, const b2TimeStep& step, const b2Vec2& gravity, bool allowSleep); void SolveTOI(const b2TimeStep& subStep, int32 toiIndexA, int32 toiIndexB); void Add(b2Body* body) { b2Assert(m_bodyCount < m_bodyCapacity); body->m_islandIndex = m_bodyCount; m_bodies[m_bodyCount] = body; ++m_bodyCount; } void Add(b2Contact* contact) { b2Assert(m_contactCount < m_contactCapacity); m_contacts[m_contactCount++] = contact; } void Add(b2Joint* joint) { b2Assert(m_jointCount < m_jointCapacity); m_joints[m_jointCount++] = joint; } void Report(const b2ContactVelocityConstraint* constraints); b2StackAllocator* m_allocator; b2ContactListener* m_listener; b2Body** m_bodies; b2Contact** m_contacts; b2Joint** m_joints; b2Position* m_positions; b2Velocity* m_velocities; int32 m_bodyCount; int32 m_jointCount; int32 m_contactCount; int32 m_bodyCapacity; int32 m_contactCapacity; int32 m_jointCapacity; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/b2Body.h0000755000000000000000000005431512316602166021224 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_BODY_H #define B2_BODY_H #include #include #include class b2Fixture; class b2Joint; class b2Contact; class b2Controller; class b2World; struct b2FixtureDef; struct b2JointEdge; struct b2ContactEdge; /// The body type. /// static: zero mass, zero velocity, may be manually moved /// kinematic: zero mass, non-zero velocity set by user, moved by solver /// dynamic: positive mass, non-zero velocity determined by forces, moved by solver enum b2BodyType { b2_staticBody = 0, b2_kinematicBody, b2_dynamicBody // TODO_ERIN //b2_bulletBody, }; /// A body definition holds all the data needed to construct a rigid body. /// You can safely re-use body definitions. Shapes are added to a body after construction. struct b2BodyDef { /// This constructor sets the body definition default values. b2BodyDef() { userData = NULL; position.Set(0.0f, 0.0f); angle = 0.0f; linearVelocity.Set(0.0f, 0.0f); angularVelocity = 0.0f; linearDamping = 0.0f; angularDamping = 0.0f; allowSleep = true; awake = true; fixedRotation = false; bullet = false; type = b2_staticBody; active = true; gravityScale = 1.0f; } /// The body type: static, kinematic, or dynamic. /// Note: if a dynamic body would have zero mass, the mass is set to one. b2BodyType type; /// The world position of the body. Avoid creating bodies at the origin /// since this can lead to many overlapping shapes. b2Vec2 position; /// The world angle of the body in radians. float32 angle; /// The linear velocity of the body's origin in world co-ordinates. b2Vec2 linearVelocity; /// The angular velocity of the body. float32 angularVelocity; /// Linear damping is use to reduce the linear velocity. The damping parameter /// can be larger than 1.0f but the damping effect becomes sensitive to the /// time step when the damping parameter is large. float32 linearDamping; /// Angular damping is use to reduce the angular velocity. The damping parameter /// can be larger than 1.0f but the damping effect becomes sensitive to the /// time step when the damping parameter is large. float32 angularDamping; /// Set this flag to false if this body should never fall asleep. Note that /// this increases CPU usage. bool allowSleep; /// Is this body initially awake or sleeping? bool awake; /// Should this body be prevented from rotating? Useful for characters. bool fixedRotation; /// Is this a fast moving body that should be prevented from tunneling through /// other moving bodies? Note that all bodies are prevented from tunneling through /// kinematic and static bodies. This setting is only considered on dynamic bodies. /// @warning You should use this flag sparingly since it increases processing time. bool bullet; /// Does this body start out active? bool active; /// Use this to store application specific body data. void* userData; /// Scale the gravity applied to this body. float32 gravityScale; }; /// A rigid body. These are created via b2World::CreateBody. class b2Body { public: /// Creates a fixture and attach it to this body. Use this function if you need /// to set some fixture parameters, like friction. Otherwise you can create the /// fixture directly from a shape. /// If the density is non-zero, this function automatically updates the mass of the body. /// Contacts are not created until the next time step. /// @param def the fixture definition. /// @warning This function is locked during callbacks. b2Fixture* CreateFixture(const b2FixtureDef* def); /// Creates a fixture from a shape and attach it to this body. /// This is a convenience function. Use b2FixtureDef if you need to set parameters /// like friction, restitution, user data, or filtering. /// If the density is non-zero, this function automatically updates the mass of the body. /// @param shape the shape to be cloned. /// @param density the shape density (set to zero for static bodies). /// @warning This function is locked during callbacks. b2Fixture* CreateFixture(const b2Shape* shape, float32 density); /// Destroy a fixture. This removes the fixture from the broad-phase and /// destroys all contacts associated with this fixture. This will /// automatically adjust the mass of the body if the body is dynamic and the /// fixture has positive density. /// All fixtures attached to a body are implicitly destroyed when the body is destroyed. /// @param fixture the fixture to be removed. /// @warning This function is locked during callbacks. void DestroyFixture(b2Fixture* fixture); /// Set the position of the body's origin and rotation. /// Manipulating a body's transform may cause non-physical behavior. /// Note: contacts are updated on the next call to b2World::Step. /// @param position the world position of the body's local origin. /// @param angle the world rotation in radians. void SetTransform(const b2Vec2& position, float32 angle); /// Get the body transform for the body's origin. /// @return the world transform of the body's origin. const b2Transform& GetTransform() const; /// Get the world body origin position. /// @return the world position of the body's origin. const b2Vec2& GetPosition() const; /// Get the angle in radians. /// @return the current world rotation angle in radians. float32 GetAngle() const; /// Get the world position of the center of mass. const b2Vec2& GetWorldCenter() const; /// Get the local position of the center of mass. const b2Vec2& GetLocalCenter() const; /// Set the linear velocity of the center of mass. /// @param v the new linear velocity of the center of mass. void SetLinearVelocity(const b2Vec2& v); /// Get the linear velocity of the center of mass. /// @return the linear velocity of the center of mass. const b2Vec2& GetLinearVelocity() const; /// Set the angular velocity. /// @param omega the new angular velocity in radians/second. void SetAngularVelocity(float32 omega); /// Get the angular velocity. /// @return the angular velocity in radians/second. float32 GetAngularVelocity() const; /// Apply a force at a world point. If the force is not /// applied at the center of mass, it will generate a torque and /// affect the angular velocity. This wakes up the body. /// @param force the world force vector, usually in Newtons (N). /// @param point the world position of the point of application. /// @param wake also wake up the body void ApplyForce(const b2Vec2& force, const b2Vec2& point, bool wake); /// Apply a force to the center of mass. This wakes up the body. /// @param force the world force vector, usually in Newtons (N). /// @param wake also wake up the body void ApplyForceToCenter(const b2Vec2& force, bool wake); /// Apply a torque. This affects the angular velocity /// without affecting the linear velocity of the center of mass. /// This wakes up the body. /// @param torque about the z-axis (out of the screen), usually in N-m. /// @param wake also wake up the body void ApplyTorque(float32 torque, bool wake); /// Apply an impulse at a point. This immediately modifies the velocity. /// It also modifies the angular velocity if the point of application /// is not at the center of mass. This wakes up the body. /// @param impulse the world impulse vector, usually in N-seconds or kg-m/s. /// @param point the world position of the point of application. /// @param wake also wake up the body void ApplyLinearImpulse(const b2Vec2& impulse, const b2Vec2& point, bool wake); /// Apply an angular impulse. /// @param impulse the angular impulse in units of kg*m*m/s /// @param wake also wake up the body void ApplyAngularImpulse(float32 impulse, bool wake); /// Get the total mass of the body. /// @return the mass, usually in kilograms (kg). float32 GetMass() const; /// Get the rotational inertia of the body about the local origin. /// @return the rotational inertia, usually in kg-m^2. float32 GetInertia() const; /// Get the mass data of the body. /// @return a struct containing the mass, inertia and center of the body. void GetMassData(b2MassData* data) const; /// Set the mass properties to override the mass properties of the fixtures. /// Note that this changes the center of mass position. /// Note that creating or destroying fixtures can also alter the mass. /// This function has no effect if the body isn't dynamic. /// @param massData the mass properties. void SetMassData(const b2MassData* data); /// This resets the mass properties to the sum of the mass properties of the fixtures. /// This normally does not need to be called unless you called SetMassData to override /// the mass and you later want to reset the mass. void ResetMassData(); /// Get the world coordinates of a point given the local coordinates. /// @param localPoint a point on the body measured relative the the body's origin. /// @return the same point expressed in world coordinates. b2Vec2 GetWorldPoint(const b2Vec2& localPoint) const; /// Get the world coordinates of a vector given the local coordinates. /// @param localVector a vector fixed in the body. /// @return the same vector expressed in world coordinates. b2Vec2 GetWorldVector(const b2Vec2& localVector) const; /// Gets a local point relative to the body's origin given a world point. /// @param a point in world coordinates. /// @return the corresponding local point relative to the body's origin. b2Vec2 GetLocalPoint(const b2Vec2& worldPoint) const; /// Gets a local vector given a world vector. /// @param a vector in world coordinates. /// @return the corresponding local vector. b2Vec2 GetLocalVector(const b2Vec2& worldVector) const; /// Get the world linear velocity of a world point attached to this body. /// @param a point in world coordinates. /// @return the world velocity of a point. b2Vec2 GetLinearVelocityFromWorldPoint(const b2Vec2& worldPoint) const; /// Get the world velocity of a local point. /// @param a point in local coordinates. /// @return the world velocity of a point. b2Vec2 GetLinearVelocityFromLocalPoint(const b2Vec2& localPoint) const; /// Get the linear damping of the body. float32 GetLinearDamping() const; /// Set the linear damping of the body. void SetLinearDamping(float32 linearDamping); /// Get the angular damping of the body. float32 GetAngularDamping() const; /// Set the angular damping of the body. void SetAngularDamping(float32 angularDamping); /// Get the gravity scale of the body. float32 GetGravityScale() const; /// Set the gravity scale of the body. void SetGravityScale(float32 scale); /// Set the type of this body. This may alter the mass and velocity. void SetType(b2BodyType type); /// Get the type of this body. b2BodyType GetType() const; /// Should this body be treated like a bullet for continuous collision detection? void SetBullet(bool flag); /// Is this body treated like a bullet for continuous collision detection? bool IsBullet() const; /// You can disable sleeping on this body. If you disable sleeping, the /// body will be woken. void SetSleepingAllowed(bool flag); /// Is this body allowed to sleep bool IsSleepingAllowed() const; /// Set the sleep state of the body. A sleeping body has very /// low CPU cost. /// @param flag set to true to wake the body, false to put it to sleep. void SetAwake(bool flag); /// Get the sleeping state of this body. /// @return true if the body is awake. bool IsAwake() const; /// Set the active state of the body. An inactive body is not /// simulated and cannot be collided with or woken up. /// If you pass a flag of true, all fixtures will be added to the /// broad-phase. /// If you pass a flag of false, all fixtures will be removed from /// the broad-phase and all contacts will be destroyed. /// Fixtures and joints are otherwise unaffected. You may continue /// to create/destroy fixtures and joints on inactive bodies. /// Fixtures on an inactive body are implicitly inactive and will /// not participate in collisions, ray-casts, or queries. /// Joints connected to an inactive body are implicitly inactive. /// An inactive body is still owned by a b2World object and remains /// in the body list. void SetActive(bool flag); /// Get the active state of the body. bool IsActive() const; /// Set this body to have fixed rotation. This causes the mass /// to be reset. void SetFixedRotation(bool flag); /// Does this body have fixed rotation? bool IsFixedRotation() const; /// Get the list of all fixtures attached to this body. b2Fixture* GetFixtureList(); const b2Fixture* GetFixtureList() const; /// Get the list of all joints attached to this body. b2JointEdge* GetJointList(); const b2JointEdge* GetJointList() const; /// Get the list of all contacts attached to this body. /// @warning this list changes during the time step and you may /// miss some collisions if you don't use b2ContactListener. b2ContactEdge* GetContactList(); const b2ContactEdge* GetContactList() const; /// Get the next body in the world's body list. b2Body* GetNext(); const b2Body* GetNext() const; /// Get the user data pointer that was provided in the body definition. void* GetUserData() const; /// Set the user data. Use this to store your application specific data. void SetUserData(void* data); /// Get the parent world of this body. b2World* GetWorld(); const b2World* GetWorld() const; /// Dump this body to a log file void Dump(); private: friend class b2World; friend class b2Island; friend class b2ContactManager; friend class b2ContactSolver; friend class b2Contact; friend class b2DistanceJoint; friend class b2FrictionJoint; friend class b2GearJoint; friend class b2MotorJoint; friend class b2MouseJoint; friend class b2PrismaticJoint; friend class b2PulleyJoint; friend class b2RevoluteJoint; friend class b2RopeJoint; friend class b2WeldJoint; friend class b2WheelJoint; // m_flags enum { e_islandFlag = 0x0001, e_awakeFlag = 0x0002, e_autoSleepFlag = 0x0004, e_bulletFlag = 0x0008, e_fixedRotationFlag = 0x0010, e_activeFlag = 0x0020, e_toiFlag = 0x0040 }; b2Body(const b2BodyDef* bd, b2World* world); ~b2Body(); void SynchronizeFixtures(); void SynchronizeTransform(); // This is used to prevent connected bodies from colliding. // It may lie, depending on the collideConnected flag. bool ShouldCollide(const b2Body* other) const; void Advance(float32 t); b2BodyType m_type; uint16 m_flags; int32 m_islandIndex; b2Transform m_xf; // the body origin transform b2Sweep m_sweep; // the swept motion for CCD b2Vec2 m_linearVelocity; float32 m_angularVelocity; b2Vec2 m_force; float32 m_torque; b2World* m_world; b2Body* m_prev; b2Body* m_next; b2Fixture* m_fixtureList; int32 m_fixtureCount; b2JointEdge* m_jointList; b2ContactEdge* m_contactList; float32 m_mass, m_invMass; // Rotational inertia about the center of mass. float32 m_I, m_invI; float32 m_linearDamping; float32 m_angularDamping; float32 m_gravityScale; float32 m_sleepTime; void* m_userData; }; inline b2BodyType b2Body::GetType() const { return m_type; } inline const b2Transform& b2Body::GetTransform() const { return m_xf; } inline const b2Vec2& b2Body::GetPosition() const { return m_xf.p; } inline float32 b2Body::GetAngle() const { return m_sweep.a; } inline const b2Vec2& b2Body::GetWorldCenter() const { return m_sweep.c; } inline const b2Vec2& b2Body::GetLocalCenter() const { return m_sweep.localCenter; } inline void b2Body::SetLinearVelocity(const b2Vec2& v) { if (m_type == b2_staticBody) { return; } if (b2Dot(v,v) > 0.0f) { SetAwake(true); } m_linearVelocity = v; } inline const b2Vec2& b2Body::GetLinearVelocity() const { return m_linearVelocity; } inline void b2Body::SetAngularVelocity(float32 w) { if (m_type == b2_staticBody) { return; } if (w * w > 0.0f) { SetAwake(true); } m_angularVelocity = w; } inline float32 b2Body::GetAngularVelocity() const { return m_angularVelocity; } inline float32 b2Body::GetMass() const { return m_mass; } inline float32 b2Body::GetInertia() const { return m_I + m_mass * b2Dot(m_sweep.localCenter, m_sweep.localCenter); } inline void b2Body::GetMassData(b2MassData* data) const { data->mass = m_mass; data->I = m_I + m_mass * b2Dot(m_sweep.localCenter, m_sweep.localCenter); data->center = m_sweep.localCenter; } inline b2Vec2 b2Body::GetWorldPoint(const b2Vec2& localPoint) const { return b2Mul(m_xf, localPoint); } inline b2Vec2 b2Body::GetWorldVector(const b2Vec2& localVector) const { return b2Mul(m_xf.q, localVector); } inline b2Vec2 b2Body::GetLocalPoint(const b2Vec2& worldPoint) const { return b2MulT(m_xf, worldPoint); } inline b2Vec2 b2Body::GetLocalVector(const b2Vec2& worldVector) const { return b2MulT(m_xf.q, worldVector); } inline b2Vec2 b2Body::GetLinearVelocityFromWorldPoint(const b2Vec2& worldPoint) const { return m_linearVelocity + b2Cross(m_angularVelocity, worldPoint - m_sweep.c); } inline b2Vec2 b2Body::GetLinearVelocityFromLocalPoint(const b2Vec2& localPoint) const { return GetLinearVelocityFromWorldPoint(GetWorldPoint(localPoint)); } inline float32 b2Body::GetLinearDamping() const { return m_linearDamping; } inline void b2Body::SetLinearDamping(float32 linearDamping) { m_linearDamping = linearDamping; } inline float32 b2Body::GetAngularDamping() const { return m_angularDamping; } inline void b2Body::SetAngularDamping(float32 angularDamping) { m_angularDamping = angularDamping; } inline float32 b2Body::GetGravityScale() const { return m_gravityScale; } inline void b2Body::SetGravityScale(float32 scale) { m_gravityScale = scale; } inline void b2Body::SetBullet(bool flag) { if (flag) { m_flags |= e_bulletFlag; } else { m_flags &= ~e_bulletFlag; } } inline bool b2Body::IsBullet() const { return (m_flags & e_bulletFlag) == e_bulletFlag; } inline void b2Body::SetAwake(bool flag) { if (flag) { if ((m_flags & e_awakeFlag) == 0) { m_flags |= e_awakeFlag; m_sleepTime = 0.0f; } } else { m_flags &= ~e_awakeFlag; m_sleepTime = 0.0f; m_linearVelocity.SetZero(); m_angularVelocity = 0.0f; m_force.SetZero(); m_torque = 0.0f; } } inline bool b2Body::IsAwake() const { return (m_flags & e_awakeFlag) == e_awakeFlag; } inline bool b2Body::IsActive() const { return (m_flags & e_activeFlag) == e_activeFlag; } inline bool b2Body::IsFixedRotation() const { return (m_flags & e_fixedRotationFlag) == e_fixedRotationFlag; } inline void b2Body::SetSleepingAllowed(bool flag) { if (flag) { m_flags |= e_autoSleepFlag; } else { m_flags &= ~e_autoSleepFlag; SetAwake(true); } } inline bool b2Body::IsSleepingAllowed() const { return (m_flags & e_autoSleepFlag) == e_autoSleepFlag; } inline b2Fixture* b2Body::GetFixtureList() { return m_fixtureList; } inline const b2Fixture* b2Body::GetFixtureList() const { return m_fixtureList; } inline b2JointEdge* b2Body::GetJointList() { return m_jointList; } inline const b2JointEdge* b2Body::GetJointList() const { return m_jointList; } inline b2ContactEdge* b2Body::GetContactList() { return m_contactList; } inline const b2ContactEdge* b2Body::GetContactList() const { return m_contactList; } inline b2Body* b2Body::GetNext() { return m_next; } inline const b2Body* b2Body::GetNext() const { return m_next; } inline void b2Body::SetUserData(void* data) { m_userData = data; } inline void* b2Body::GetUserData() const { return m_userData; } inline void b2Body::ApplyForce(const b2Vec2& force, const b2Vec2& point, bool wake) { if (m_type != b2_dynamicBody) { return; } if (wake && (m_flags & e_awakeFlag) == 0) { SetAwake(true); } // Don't accumulate a force if the body is sleeping. if (m_flags & e_awakeFlag) { m_force += force; m_torque += b2Cross(point - m_sweep.c, force); } } inline void b2Body::ApplyForceToCenter(const b2Vec2& force, bool wake) { if (m_type != b2_dynamicBody) { return; } if (wake && (m_flags & e_awakeFlag) == 0) { SetAwake(true); } // Don't accumulate a force if the body is sleeping if (m_flags & e_awakeFlag) { m_force += force; } } inline void b2Body::ApplyTorque(float32 torque, bool wake) { if (m_type != b2_dynamicBody) { return; } if (wake && (m_flags & e_awakeFlag) == 0) { SetAwake(true); } // Don't accumulate a force if the body is sleeping if (m_flags & e_awakeFlag) { m_torque += torque; } } inline void b2Body::ApplyLinearImpulse(const b2Vec2& impulse, const b2Vec2& point, bool wake) { if (m_type != b2_dynamicBody) { return; } if (wake && (m_flags & e_awakeFlag) == 0) { SetAwake(true); } // Don't accumulate velocity if the body is sleeping if (m_flags & e_awakeFlag) { m_linearVelocity += m_invMass * impulse; m_angularVelocity += m_invI * b2Cross(point - m_sweep.c, impulse); } } inline void b2Body::ApplyAngularImpulse(float32 impulse, bool wake) { if (m_type != b2_dynamicBody) { return; } if (wake && (m_flags & e_awakeFlag) == 0) { SetAwake(true); } // Don't accumulate velocity if the body is sleeping if (m_flags & e_awakeFlag) { m_angularVelocity += m_invI * impulse; } } inline void b2Body::SynchronizeTransform() { m_xf.q.Set(m_sweep.a); m_xf.p = m_sweep.c - b2Mul(m_xf.q, m_sweep.localCenter); } inline void b2Body::Advance(float32 alpha) { // Advance to the new safe time. This doesn't sync the broad-phase. m_sweep.Advance(alpha); m_sweep.c = m_sweep.c0; m_sweep.a = m_sweep.a0; m_xf.q.Set(m_sweep.a); m_xf.p = m_sweep.c - b2Mul(m_xf.q, m_sweep.localCenter); } inline b2World* b2Body::GetWorld() { return m_world; } inline const b2World* b2Body::GetWorld() const { return m_world; } #endif love-0.9.1/src/libraries/Box2D/Dynamics/b2TimeStep.h0000755000000000000000000000331012316602166022046 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_TIME_STEP_H #define B2_TIME_STEP_H #include /// Profiling data. Times are in milliseconds. struct b2Profile { float32 step; float32 collide; float32 solve; float32 solveInit; float32 solveVelocity; float32 solvePosition; float32 broadphase; float32 solveTOI; }; /// This is an internal structure. struct b2TimeStep { float32 dt; // time step float32 inv_dt; // inverse time step (0 if dt == 0). float32 dtRatio; // dt * inv_dt0 int32 velocityIterations; int32 positionIterations; bool warmStarting; }; /// This is an internal structure. struct b2Position { b2Vec2 c; float32 a; }; /// This is an internal structure. struct b2Velocity { b2Vec2 v; float32 w; }; /// Solver Data struct b2SolverData { b2TimeStep step; b2Position* positions; b2Velocity* velocities; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/0000755000000000000000000000000012316602463021475 5ustar00rootroot00000000000000love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2CircleContact.cpp0000755000000000000000000000401512316602166025145 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include #include b2Contact* b2CircleContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator) { void* mem = allocator->Allocate(sizeof(b2CircleContact)); return new (mem) b2CircleContact(fixtureA, fixtureB); } void b2CircleContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) { ((b2CircleContact*)contact)->~b2CircleContact(); allocator->Free(contact, sizeof(b2CircleContact)); } b2CircleContact::b2CircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB) : b2Contact(fixtureA, 0, fixtureB, 0) { b2Assert(m_fixtureA->GetType() == b2Shape::e_circle); b2Assert(m_fixtureB->GetType() == b2Shape::e_circle); } void b2CircleContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) { b2CollideCircles(manifold, (b2CircleShape*)m_fixtureA->GetShape(), xfA, (b2CircleShape*)m_fixtureB->GetShape(), xfB); } love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp0000755000000000000000000000436612316602166026772 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include b2Contact* b2ChainAndPolygonContact::Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator) { void* mem = allocator->Allocate(sizeof(b2ChainAndPolygonContact)); return new (mem) b2ChainAndPolygonContact(fixtureA, indexA, fixtureB, indexB); } void b2ChainAndPolygonContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) { ((b2ChainAndPolygonContact*)contact)->~b2ChainAndPolygonContact(); allocator->Free(contact, sizeof(b2ChainAndPolygonContact)); } b2ChainAndPolygonContact::b2ChainAndPolygonContact(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB) : b2Contact(fixtureA, indexA, fixtureB, indexB) { b2Assert(m_fixtureA->GetType() == b2Shape::e_chain); b2Assert(m_fixtureB->GetType() == b2Shape::e_polygon); } void b2ChainAndPolygonContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) { b2ChainShape* chain = (b2ChainShape*)m_fixtureA->GetShape(); b2EdgeShape edge; chain->GetChildEdge(&edge, m_indexA); b2CollideEdgeAndPolygon( manifold, &edge, xfA, (b2PolygonShape*)m_fixtureB->GetShape(), xfB); } love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp0000755000000000000000000000434712316602166026543 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include b2Contact* b2ChainAndCircleContact::Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator) { void* mem = allocator->Allocate(sizeof(b2ChainAndCircleContact)); return new (mem) b2ChainAndCircleContact(fixtureA, indexA, fixtureB, indexB); } void b2ChainAndCircleContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) { ((b2ChainAndCircleContact*)contact)->~b2ChainAndCircleContact(); allocator->Free(contact, sizeof(b2ChainAndCircleContact)); } b2ChainAndCircleContact::b2ChainAndCircleContact(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB) : b2Contact(fixtureA, indexA, fixtureB, indexB) { b2Assert(m_fixtureA->GetType() == b2Shape::e_chain); b2Assert(m_fixtureB->GetType() == b2Shape::e_circle); } void b2ChainAndCircleContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) { b2ChainShape* chain = (b2ChainShape*)m_fixtureA->GetShape(); b2EdgeShape edge; chain->GetChildEdge(&edge, m_indexA); b2CollideEdgeAndCircle( manifold, &edge, xfA, (b2CircleShape*)m_fixtureB->GetShape(), xfB); } love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp0000755000000000000000000000374612316602166026367 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include b2Contact* b2EdgeAndCircleContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator) { void* mem = allocator->Allocate(sizeof(b2EdgeAndCircleContact)); return new (mem) b2EdgeAndCircleContact(fixtureA, fixtureB); } void b2EdgeAndCircleContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) { ((b2EdgeAndCircleContact*)contact)->~b2EdgeAndCircleContact(); allocator->Free(contact, sizeof(b2EdgeAndCircleContact)); } b2EdgeAndCircleContact::b2EdgeAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB) : b2Contact(fixtureA, 0, fixtureB, 0) { b2Assert(m_fixtureA->GetType() == b2Shape::e_edge); b2Assert(m_fixtureB->GetType() == b2Shape::e_circle); } void b2EdgeAndCircleContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) { b2CollideEdgeAndCircle( manifold, (b2EdgeShape*)m_fixtureA->GetShape(), xfA, (b2CircleShape*)m_fixtureB->GetShape(), xfB); } love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h0000755000000000000000000000275012316602166026611 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_POLYGON_AND_CIRCLE_CONTACT_H #define B2_POLYGON_AND_CIRCLE_CONTACT_H #include class b2BlockAllocator; class b2PolygonAndCircleContact : public b2Contact { public: static b2Contact* Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); b2PolygonAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB); ~b2PolygonAndCircleContact() {} void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2ContactSolver.cpp0000755000000000000000000005436012316602166025226 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include #define B2_DEBUG_SOLVER 0 struct b2ContactPositionConstraint { b2Vec2 localPoints[b2_maxManifoldPoints]; b2Vec2 localNormal; b2Vec2 localPoint; int32 indexA; int32 indexB; float32 invMassA, invMassB; b2Vec2 localCenterA, localCenterB; float32 invIA, invIB; b2Manifold::Type type; float32 radiusA, radiusB; int32 pointCount; }; b2ContactSolver::b2ContactSolver(b2ContactSolverDef* def) { m_step = def->step; m_allocator = def->allocator; m_count = def->count; m_positionConstraints = (b2ContactPositionConstraint*)m_allocator->Allocate(m_count * sizeof(b2ContactPositionConstraint)); m_velocityConstraints = (b2ContactVelocityConstraint*)m_allocator->Allocate(m_count * sizeof(b2ContactVelocityConstraint)); m_positions = def->positions; m_velocities = def->velocities; m_contacts = def->contacts; // Initialize position independent portions of the constraints. for (int32 i = 0; i < m_count; ++i) { b2Contact* contact = m_contacts[i]; b2Fixture* fixtureA = contact->m_fixtureA; b2Fixture* fixtureB = contact->m_fixtureB; b2Shape* shapeA = fixtureA->GetShape(); b2Shape* shapeB = fixtureB->GetShape(); float32 radiusA = shapeA->m_radius; float32 radiusB = shapeB->m_radius; b2Body* bodyA = fixtureA->GetBody(); b2Body* bodyB = fixtureB->GetBody(); b2Manifold* manifold = contact->GetManifold(); int32 pointCount = manifold->pointCount; b2Assert(pointCount > 0); b2ContactVelocityConstraint* vc = m_velocityConstraints + i; vc->friction = contact->m_friction; vc->restitution = contact->m_restitution; vc->tangentSpeed = contact->m_tangentSpeed; vc->indexA = bodyA->m_islandIndex; vc->indexB = bodyB->m_islandIndex; vc->invMassA = bodyA->m_invMass; vc->invMassB = bodyB->m_invMass; vc->invIA = bodyA->m_invI; vc->invIB = bodyB->m_invI; vc->contactIndex = i; vc->pointCount = pointCount; vc->K.SetZero(); vc->normalMass.SetZero(); b2ContactPositionConstraint* pc = m_positionConstraints + i; pc->indexA = bodyA->m_islandIndex; pc->indexB = bodyB->m_islandIndex; pc->invMassA = bodyA->m_invMass; pc->invMassB = bodyB->m_invMass; pc->localCenterA = bodyA->m_sweep.localCenter; pc->localCenterB = bodyB->m_sweep.localCenter; pc->invIA = bodyA->m_invI; pc->invIB = bodyB->m_invI; pc->localNormal = manifold->localNormal; pc->localPoint = manifold->localPoint; pc->pointCount = pointCount; pc->radiusA = radiusA; pc->radiusB = radiusB; pc->type = manifold->type; for (int32 j = 0; j < pointCount; ++j) { b2ManifoldPoint* cp = manifold->points + j; b2VelocityConstraintPoint* vcp = vc->points + j; if (m_step.warmStarting) { vcp->normalImpulse = m_step.dtRatio * cp->normalImpulse; vcp->tangentImpulse = m_step.dtRatio * cp->tangentImpulse; } else { vcp->normalImpulse = 0.0f; vcp->tangentImpulse = 0.0f; } vcp->rA.SetZero(); vcp->rB.SetZero(); vcp->normalMass = 0.0f; vcp->tangentMass = 0.0f; vcp->velocityBias = 0.0f; pc->localPoints[j] = cp->localPoint; } } } b2ContactSolver::~b2ContactSolver() { m_allocator->Free(m_velocityConstraints); m_allocator->Free(m_positionConstraints); } // Initialize position dependent portions of the velocity constraints. void b2ContactSolver::InitializeVelocityConstraints() { for (int32 i = 0; i < m_count; ++i) { b2ContactVelocityConstraint* vc = m_velocityConstraints + i; b2ContactPositionConstraint* pc = m_positionConstraints + i; float32 radiusA = pc->radiusA; float32 radiusB = pc->radiusB; b2Manifold* manifold = m_contacts[vc->contactIndex]->GetManifold(); int32 indexA = vc->indexA; int32 indexB = vc->indexB; float32 mA = vc->invMassA; float32 mB = vc->invMassB; float32 iA = vc->invIA; float32 iB = vc->invIB; b2Vec2 localCenterA = pc->localCenterA; b2Vec2 localCenterB = pc->localCenterB; b2Vec2 cA = m_positions[indexA].c; float32 aA = m_positions[indexA].a; b2Vec2 vA = m_velocities[indexA].v; float32 wA = m_velocities[indexA].w; b2Vec2 cB = m_positions[indexB].c; float32 aB = m_positions[indexB].a; b2Vec2 vB = m_velocities[indexB].v; float32 wB = m_velocities[indexB].w; b2Assert(manifold->pointCount > 0); b2Transform xfA, xfB; xfA.q.Set(aA); xfB.q.Set(aB); xfA.p = cA - b2Mul(xfA.q, localCenterA); xfB.p = cB - b2Mul(xfB.q, localCenterB); b2WorldManifold worldManifold; worldManifold.Initialize(manifold, xfA, radiusA, xfB, radiusB); vc->normal = worldManifold.normal; int32 pointCount = vc->pointCount; for (int32 j = 0; j < pointCount; ++j) { b2VelocityConstraintPoint* vcp = vc->points + j; vcp->rA = worldManifold.points[j] - cA; vcp->rB = worldManifold.points[j] - cB; float32 rnA = b2Cross(vcp->rA, vc->normal); float32 rnB = b2Cross(vcp->rB, vc->normal); float32 kNormal = mA + mB + iA * rnA * rnA + iB * rnB * rnB; vcp->normalMass = kNormal > 0.0f ? 1.0f / kNormal : 0.0f; b2Vec2 tangent = b2Cross(vc->normal, 1.0f); float32 rtA = b2Cross(vcp->rA, tangent); float32 rtB = b2Cross(vcp->rB, tangent); float32 kTangent = mA + mB + iA * rtA * rtA + iB * rtB * rtB; vcp->tangentMass = kTangent > 0.0f ? 1.0f / kTangent : 0.0f; // Setup a velocity bias for restitution. vcp->velocityBias = 0.0f; float32 vRel = b2Dot(vc->normal, vB + b2Cross(wB, vcp->rB) - vA - b2Cross(wA, vcp->rA)); if (vRel < -b2_velocityThreshold) { vcp->velocityBias = -vc->restitution * vRel; } } // If we have two points, then prepare the block solver. if (vc->pointCount == 2) { b2VelocityConstraintPoint* vcp1 = vc->points + 0; b2VelocityConstraintPoint* vcp2 = vc->points + 1; float32 rn1A = b2Cross(vcp1->rA, vc->normal); float32 rn1B = b2Cross(vcp1->rB, vc->normal); float32 rn2A = b2Cross(vcp2->rA, vc->normal); float32 rn2B = b2Cross(vcp2->rB, vc->normal); float32 k11 = mA + mB + iA * rn1A * rn1A + iB * rn1B * rn1B; float32 k22 = mA + mB + iA * rn2A * rn2A + iB * rn2B * rn2B; float32 k12 = mA + mB + iA * rn1A * rn2A + iB * rn1B * rn2B; // Ensure a reasonable condition number. const float32 k_maxConditionNumber = 1000.0f; if (k11 * k11 < k_maxConditionNumber * (k11 * k22 - k12 * k12)) { // K is safe to invert. vc->K.ex.Set(k11, k12); vc->K.ey.Set(k12, k22); vc->normalMass = vc->K.GetInverse(); } else { // The constraints are redundant, just use one. // TODO_ERIN use deepest? vc->pointCount = 1; } } } } void b2ContactSolver::WarmStart() { // Warm start. for (int32 i = 0; i < m_count; ++i) { b2ContactVelocityConstraint* vc = m_velocityConstraints + i; int32 indexA = vc->indexA; int32 indexB = vc->indexB; float32 mA = vc->invMassA; float32 iA = vc->invIA; float32 mB = vc->invMassB; float32 iB = vc->invIB; int32 pointCount = vc->pointCount; b2Vec2 vA = m_velocities[indexA].v; float32 wA = m_velocities[indexA].w; b2Vec2 vB = m_velocities[indexB].v; float32 wB = m_velocities[indexB].w; b2Vec2 normal = vc->normal; b2Vec2 tangent = b2Cross(normal, 1.0f); for (int32 j = 0; j < pointCount; ++j) { b2VelocityConstraintPoint* vcp = vc->points + j; b2Vec2 P = vcp->normalImpulse * normal + vcp->tangentImpulse * tangent; wA -= iA * b2Cross(vcp->rA, P); vA -= mA * P; wB += iB * b2Cross(vcp->rB, P); vB += mB * P; } m_velocities[indexA].v = vA; m_velocities[indexA].w = wA; m_velocities[indexB].v = vB; m_velocities[indexB].w = wB; } } void b2ContactSolver::SolveVelocityConstraints() { for (int32 i = 0; i < m_count; ++i) { b2ContactVelocityConstraint* vc = m_velocityConstraints + i; int32 indexA = vc->indexA; int32 indexB = vc->indexB; float32 mA = vc->invMassA; float32 iA = vc->invIA; float32 mB = vc->invMassB; float32 iB = vc->invIB; int32 pointCount = vc->pointCount; b2Vec2 vA = m_velocities[indexA].v; float32 wA = m_velocities[indexA].w; b2Vec2 vB = m_velocities[indexB].v; float32 wB = m_velocities[indexB].w; b2Vec2 normal = vc->normal; b2Vec2 tangent = b2Cross(normal, 1.0f); float32 friction = vc->friction; b2Assert(pointCount == 1 || pointCount == 2); // Solve tangent constraints first because non-penetration is more important // than friction. for (int32 j = 0; j < pointCount; ++j) { b2VelocityConstraintPoint* vcp = vc->points + j; // Relative velocity at contact b2Vec2 dv = vB + b2Cross(wB, vcp->rB) - vA - b2Cross(wA, vcp->rA); // Compute tangent force float32 vt = b2Dot(dv, tangent) - vc->tangentSpeed; float32 lambda = vcp->tangentMass * (-vt); // b2Clamp the accumulated force float32 maxFriction = friction * vcp->normalImpulse; float32 newImpulse = b2Clamp(vcp->tangentImpulse + lambda, -maxFriction, maxFriction); lambda = newImpulse - vcp->tangentImpulse; vcp->tangentImpulse = newImpulse; // Apply contact impulse b2Vec2 P = lambda * tangent; vA -= mA * P; wA -= iA * b2Cross(vcp->rA, P); vB += mB * P; wB += iB * b2Cross(vcp->rB, P); } // Solve normal constraints if (vc->pointCount == 1) { b2VelocityConstraintPoint* vcp = vc->points + 0; // Relative velocity at contact b2Vec2 dv = vB + b2Cross(wB, vcp->rB) - vA - b2Cross(wA, vcp->rA); // Compute normal impulse float32 vn = b2Dot(dv, normal); float32 lambda = -vcp->normalMass * (vn - vcp->velocityBias); // b2Clamp the accumulated impulse float32 newImpulse = b2Max(vcp->normalImpulse + lambda, 0.0f); lambda = newImpulse - vcp->normalImpulse; vcp->normalImpulse = newImpulse; // Apply contact impulse b2Vec2 P = lambda * normal; vA -= mA * P; wA -= iA * b2Cross(vcp->rA, P); vB += mB * P; wB += iB * b2Cross(vcp->rB, P); } else { // Block solver developed in collaboration with Dirk Gregorius (back in 01/07 on Box2D_Lite). // Build the mini LCP for this contact patch // // vn = A * x + b, vn >= 0, , vn >= 0, x >= 0 and vn_i * x_i = 0 with i = 1..2 // // A = J * W * JT and J = ( -n, -r1 x n, n, r2 x n ) // b = vn0 - velocityBias // // The system is solved using the "Total enumeration method" (s. Murty). The complementary constraint vn_i * x_i // implies that we must have in any solution either vn_i = 0 or x_i = 0. So for the 2D contact problem the cases // vn1 = 0 and vn2 = 0, x1 = 0 and x2 = 0, x1 = 0 and vn2 = 0, x2 = 0 and vn1 = 0 need to be tested. The first valid // solution that satisfies the problem is chosen. // // In order to account of the accumulated impulse 'a' (because of the iterative nature of the solver which only requires // that the accumulated impulse is clamped and not the incremental impulse) we change the impulse variable (x_i). // // Substitute: // // x = a + d // // a := old total impulse // x := new total impulse // d := incremental impulse // // For the current iteration we extend the formula for the incremental impulse // to compute the new total impulse: // // vn = A * d + b // = A * (x - a) + b // = A * x + b - A * a // = A * x + b' // b' = b - A * a; b2VelocityConstraintPoint* cp1 = vc->points + 0; b2VelocityConstraintPoint* cp2 = vc->points + 1; b2Vec2 a(cp1->normalImpulse, cp2->normalImpulse); b2Assert(a.x >= 0.0f && a.y >= 0.0f); // Relative velocity at contact b2Vec2 dv1 = vB + b2Cross(wB, cp1->rB) - vA - b2Cross(wA, cp1->rA); b2Vec2 dv2 = vB + b2Cross(wB, cp2->rB) - vA - b2Cross(wA, cp2->rA); // Compute normal velocity float32 vn1 = b2Dot(dv1, normal); float32 vn2 = b2Dot(dv2, normal); b2Vec2 b; b.x = vn1 - cp1->velocityBias; b.y = vn2 - cp2->velocityBias; // Compute b' b -= b2Mul(vc->K, a); const float32 k_errorTol = 1e-3f; B2_NOT_USED(k_errorTol); for (;;) { // // Case 1: vn = 0 // // 0 = A * x + b' // // Solve for x: // // x = - inv(A) * b' // b2Vec2 x = - b2Mul(vc->normalMass, b); if (x.x >= 0.0f && x.y >= 0.0f) { // Get the incremental impulse b2Vec2 d = x - a; // Apply incremental impulse b2Vec2 P1 = d.x * normal; b2Vec2 P2 = d.y * normal; vA -= mA * (P1 + P2); wA -= iA * (b2Cross(cp1->rA, P1) + b2Cross(cp2->rA, P2)); vB += mB * (P1 + P2); wB += iB * (b2Cross(cp1->rB, P1) + b2Cross(cp2->rB, P2)); // Accumulate cp1->normalImpulse = x.x; cp2->normalImpulse = x.y; #if B2_DEBUG_SOLVER == 1 // Postconditions dv1 = vB + b2Cross(wB, cp1->rB) - vA - b2Cross(wA, cp1->rA); dv2 = vB + b2Cross(wB, cp2->rB) - vA - b2Cross(wA, cp2->rA); // Compute normal velocity vn1 = b2Dot(dv1, normal); vn2 = b2Dot(dv2, normal); b2Assert(b2Abs(vn1 - cp1->velocityBias) < k_errorTol); b2Assert(b2Abs(vn2 - cp2->velocityBias) < k_errorTol); #endif break; } // // Case 2: vn1 = 0 and x2 = 0 // // 0 = a11 * x1 + a12 * 0 + b1' // vn2 = a21 * x1 + a22 * 0 + b2' // x.x = - cp1->normalMass * b.x; x.y = 0.0f; vn1 = 0.0f; vn2 = vc->K.ex.y * x.x + b.y; if (x.x >= 0.0f && vn2 >= 0.0f) { // Get the incremental impulse b2Vec2 d = x - a; // Apply incremental impulse b2Vec2 P1 = d.x * normal; b2Vec2 P2 = d.y * normal; vA -= mA * (P1 + P2); wA -= iA * (b2Cross(cp1->rA, P1) + b2Cross(cp2->rA, P2)); vB += mB * (P1 + P2); wB += iB * (b2Cross(cp1->rB, P1) + b2Cross(cp2->rB, P2)); // Accumulate cp1->normalImpulse = x.x; cp2->normalImpulse = x.y; #if B2_DEBUG_SOLVER == 1 // Postconditions dv1 = vB + b2Cross(wB, cp1->rB) - vA - b2Cross(wA, cp1->rA); // Compute normal velocity vn1 = b2Dot(dv1, normal); b2Assert(b2Abs(vn1 - cp1->velocityBias) < k_errorTol); #endif break; } // // Case 3: vn2 = 0 and x1 = 0 // // vn1 = a11 * 0 + a12 * x2 + b1' // 0 = a21 * 0 + a22 * x2 + b2' // x.x = 0.0f; x.y = - cp2->normalMass * b.y; vn1 = vc->K.ey.x * x.y + b.x; vn2 = 0.0f; if (x.y >= 0.0f && vn1 >= 0.0f) { // Resubstitute for the incremental impulse b2Vec2 d = x - a; // Apply incremental impulse b2Vec2 P1 = d.x * normal; b2Vec2 P2 = d.y * normal; vA -= mA * (P1 + P2); wA -= iA * (b2Cross(cp1->rA, P1) + b2Cross(cp2->rA, P2)); vB += mB * (P1 + P2); wB += iB * (b2Cross(cp1->rB, P1) + b2Cross(cp2->rB, P2)); // Accumulate cp1->normalImpulse = x.x; cp2->normalImpulse = x.y; #if B2_DEBUG_SOLVER == 1 // Postconditions dv2 = vB + b2Cross(wB, cp2->rB) - vA - b2Cross(wA, cp2->rA); // Compute normal velocity vn2 = b2Dot(dv2, normal); b2Assert(b2Abs(vn2 - cp2->velocityBias) < k_errorTol); #endif break; } // // Case 4: x1 = 0 and x2 = 0 // // vn1 = b1 // vn2 = b2; x.x = 0.0f; x.y = 0.0f; vn1 = b.x; vn2 = b.y; if (vn1 >= 0.0f && vn2 >= 0.0f ) { // Resubstitute for the incremental impulse b2Vec2 d = x - a; // Apply incremental impulse b2Vec2 P1 = d.x * normal; b2Vec2 P2 = d.y * normal; vA -= mA * (P1 + P2); wA -= iA * (b2Cross(cp1->rA, P1) + b2Cross(cp2->rA, P2)); vB += mB * (P1 + P2); wB += iB * (b2Cross(cp1->rB, P1) + b2Cross(cp2->rB, P2)); // Accumulate cp1->normalImpulse = x.x; cp2->normalImpulse = x.y; break; } // No solution, give up. This is hit sometimes, but it doesn't seem to matter. break; } } m_velocities[indexA].v = vA; m_velocities[indexA].w = wA; m_velocities[indexB].v = vB; m_velocities[indexB].w = wB; } } void b2ContactSolver::StoreImpulses() { for (int32 i = 0; i < m_count; ++i) { b2ContactVelocityConstraint* vc = m_velocityConstraints + i; b2Manifold* manifold = m_contacts[vc->contactIndex]->GetManifold(); for (int32 j = 0; j < vc->pointCount; ++j) { manifold->points[j].normalImpulse = vc->points[j].normalImpulse; manifold->points[j].tangentImpulse = vc->points[j].tangentImpulse; } } } struct b2PositionSolverManifold { void Initialize(b2ContactPositionConstraint* pc, const b2Transform& xfA, const b2Transform& xfB, int32 index) { b2Assert(pc->pointCount > 0); switch (pc->type) { case b2Manifold::e_circles: { b2Vec2 pointA = b2Mul(xfA, pc->localPoint); b2Vec2 pointB = b2Mul(xfB, pc->localPoints[0]); normal = pointB - pointA; normal.Normalize(); point = 0.5f * (pointA + pointB); separation = b2Dot(pointB - pointA, normal) - pc->radiusA - pc->radiusB; } break; case b2Manifold::e_faceA: { normal = b2Mul(xfA.q, pc->localNormal); b2Vec2 planePoint = b2Mul(xfA, pc->localPoint); b2Vec2 clipPoint = b2Mul(xfB, pc->localPoints[index]); separation = b2Dot(clipPoint - planePoint, normal) - pc->radiusA - pc->radiusB; point = clipPoint; } break; case b2Manifold::e_faceB: { normal = b2Mul(xfB.q, pc->localNormal); b2Vec2 planePoint = b2Mul(xfB, pc->localPoint); b2Vec2 clipPoint = b2Mul(xfA, pc->localPoints[index]); separation = b2Dot(clipPoint - planePoint, normal) - pc->radiusA - pc->radiusB; point = clipPoint; // Ensure normal points from A to B normal = -normal; } break; } } b2Vec2 normal; b2Vec2 point; float32 separation; }; // Sequential solver. bool b2ContactSolver::SolvePositionConstraints() { float32 minSeparation = 0.0f; for (int32 i = 0; i < m_count; ++i) { b2ContactPositionConstraint* pc = m_positionConstraints + i; int32 indexA = pc->indexA; int32 indexB = pc->indexB; b2Vec2 localCenterA = pc->localCenterA; float32 mA = pc->invMassA; float32 iA = pc->invIA; b2Vec2 localCenterB = pc->localCenterB; float32 mB = pc->invMassB; float32 iB = pc->invIB; int32 pointCount = pc->pointCount; b2Vec2 cA = m_positions[indexA].c; float32 aA = m_positions[indexA].a; b2Vec2 cB = m_positions[indexB].c; float32 aB = m_positions[indexB].a; // Solve normal constraints for (int32 j = 0; j < pointCount; ++j) { b2Transform xfA, xfB; xfA.q.Set(aA); xfB.q.Set(aB); xfA.p = cA - b2Mul(xfA.q, localCenterA); xfB.p = cB - b2Mul(xfB.q, localCenterB); b2PositionSolverManifold psm; psm.Initialize(pc, xfA, xfB, j); b2Vec2 normal = psm.normal; b2Vec2 point = psm.point; float32 separation = psm.separation; b2Vec2 rA = point - cA; b2Vec2 rB = point - cB; // Track max constraint error. minSeparation = b2Min(minSeparation, separation); // Prevent large corrections and allow slop. float32 C = b2Clamp(b2_baumgarte * (separation + b2_linearSlop), -b2_maxLinearCorrection, 0.0f); // Compute the effective mass. float32 rnA = b2Cross(rA, normal); float32 rnB = b2Cross(rB, normal); float32 K = mA + mB + iA * rnA * rnA + iB * rnB * rnB; // Compute normal impulse float32 impulse = K > 0.0f ? - C / K : 0.0f; b2Vec2 P = impulse * normal; cA -= mA * P; aA -= iA * b2Cross(rA, P); cB += mB * P; aB += iB * b2Cross(rB, P); } m_positions[indexA].c = cA; m_positions[indexA].a = aA; m_positions[indexB].c = cB; m_positions[indexB].a = aB; } // We can't expect minSpeparation >= -b2_linearSlop because we don't // push the separation above -b2_linearSlop. return minSeparation >= -3.0f * b2_linearSlop; } // Sequential position solver for position constraints. bool b2ContactSolver::SolveTOIPositionConstraints(int32 toiIndexA, int32 toiIndexB) { float32 minSeparation = 0.0f; for (int32 i = 0; i < m_count; ++i) { b2ContactPositionConstraint* pc = m_positionConstraints + i; int32 indexA = pc->indexA; int32 indexB = pc->indexB; b2Vec2 localCenterA = pc->localCenterA; b2Vec2 localCenterB = pc->localCenterB; int32 pointCount = pc->pointCount; float32 mA = 0.0f; float32 iA = 0.0f; if (indexA == toiIndexA || indexA == toiIndexB) { mA = pc->invMassA; iA = pc->invIA; } float32 mB = 0.0f; float32 iB = 0.; if (indexB == toiIndexA || indexB == toiIndexB) { mB = pc->invMassB; iB = pc->invIB; } b2Vec2 cA = m_positions[indexA].c; float32 aA = m_positions[indexA].a; b2Vec2 cB = m_positions[indexB].c; float32 aB = m_positions[indexB].a; // Solve normal constraints for (int32 j = 0; j < pointCount; ++j) { b2Transform xfA, xfB; xfA.q.Set(aA); xfB.q.Set(aB); xfA.p = cA - b2Mul(xfA.q, localCenterA); xfB.p = cB - b2Mul(xfB.q, localCenterB); b2PositionSolverManifold psm; psm.Initialize(pc, xfA, xfB, j); b2Vec2 normal = psm.normal; b2Vec2 point = psm.point; float32 separation = psm.separation; b2Vec2 rA = point - cA; b2Vec2 rB = point - cB; // Track max constraint error. minSeparation = b2Min(minSeparation, separation); // Prevent large corrections and allow slop. float32 C = b2Clamp(b2_toiBaugarte * (separation + b2_linearSlop), -b2_maxLinearCorrection, 0.0f); // Compute the effective mass. float32 rnA = b2Cross(rA, normal); float32 rnB = b2Cross(rB, normal); float32 K = mA + mB + iA * rnA * rnA + iB * rnB * rnB; // Compute normal impulse float32 impulse = K > 0.0f ? - C / K : 0.0f; b2Vec2 P = impulse * normal; cA -= mA * P; aA -= iA * b2Cross(rA, P); cB += mB * P; aB += iB * b2Cross(rB, P); } m_positions[indexA].c = cA; m_positions[indexA].a = aA; m_positions[indexB].c = cB; m_positions[indexB].a = aB; } // We can't expect minSpeparation >= -b2_linearSlop because we don't // push the separation above -b2_linearSlop. return minSeparation >= -1.5f * b2_linearSlop; } love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp0000755000000000000000000000376412316602166026615 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2010 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include b2Contact* b2EdgeAndPolygonContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator) { void* mem = allocator->Allocate(sizeof(b2EdgeAndPolygonContact)); return new (mem) b2EdgeAndPolygonContact(fixtureA, fixtureB); } void b2EdgeAndPolygonContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) { ((b2EdgeAndPolygonContact*)contact)->~b2EdgeAndPolygonContact(); allocator->Free(contact, sizeof(b2EdgeAndPolygonContact)); } b2EdgeAndPolygonContact::b2EdgeAndPolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB) : b2Contact(fixtureA, 0, fixtureB, 0) { b2Assert(m_fixtureA->GetType() == b2Shape::e_edge); b2Assert(m_fixtureB->GetType() == b2Shape::e_polygon); } void b2EdgeAndPolygonContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) { b2CollideEdgeAndPolygon( manifold, (b2EdgeShape*)m_fixtureA->GetShape(), xfA, (b2PolygonShape*)m_fixtureB->GetShape(), xfB); } love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2PolygonContact.h0000755000000000000000000000270012316602166025037 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_POLYGON_CONTACT_H #define B2_POLYGON_CONTACT_H #include class b2BlockAllocator; class b2PolygonContact : public b2Contact { public: static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); b2PolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB); ~b2PolygonContact() {} void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2Contact.cpp0000755000000000000000000001634012316602166024027 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include b2ContactRegister b2Contact::s_registers[b2Shape::e_typeCount][b2Shape::e_typeCount]; bool b2Contact::s_initialized = false; void b2Contact::InitializeRegisters() { AddType(b2CircleContact::Create, b2CircleContact::Destroy, b2Shape::e_circle, b2Shape::e_circle); AddType(b2PolygonAndCircleContact::Create, b2PolygonAndCircleContact::Destroy, b2Shape::e_polygon, b2Shape::e_circle); AddType(b2PolygonContact::Create, b2PolygonContact::Destroy, b2Shape::e_polygon, b2Shape::e_polygon); AddType(b2EdgeAndCircleContact::Create, b2EdgeAndCircleContact::Destroy, b2Shape::e_edge, b2Shape::e_circle); AddType(b2EdgeAndPolygonContact::Create, b2EdgeAndPolygonContact::Destroy, b2Shape::e_edge, b2Shape::e_polygon); AddType(b2ChainAndCircleContact::Create, b2ChainAndCircleContact::Destroy, b2Shape::e_chain, b2Shape::e_circle); AddType(b2ChainAndPolygonContact::Create, b2ChainAndPolygonContact::Destroy, b2Shape::e_chain, b2Shape::e_polygon); } void b2Contact::AddType(b2ContactCreateFcn* createFcn, b2ContactDestroyFcn* destoryFcn, b2Shape::Type type1, b2Shape::Type type2) { b2Assert(0 <= type1 && type1 < b2Shape::e_typeCount); b2Assert(0 <= type2 && type2 < b2Shape::e_typeCount); s_registers[type1][type2].createFcn = createFcn; s_registers[type1][type2].destroyFcn = destoryFcn; s_registers[type1][type2].primary = true; if (type1 != type2) { s_registers[type2][type1].createFcn = createFcn; s_registers[type2][type1].destroyFcn = destoryFcn; s_registers[type2][type1].primary = false; } } b2Contact* b2Contact::Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator) { if (s_initialized == false) { InitializeRegisters(); s_initialized = true; } b2Shape::Type type1 = fixtureA->GetType(); b2Shape::Type type2 = fixtureB->GetType(); b2Assert(0 <= type1 && type1 < b2Shape::e_typeCount); b2Assert(0 <= type2 && type2 < b2Shape::e_typeCount); b2ContactCreateFcn* createFcn = s_registers[type1][type2].createFcn; if (createFcn) { if (s_registers[type1][type2].primary) { return createFcn(fixtureA, indexA, fixtureB, indexB, allocator); } else { return createFcn(fixtureB, indexB, fixtureA, indexA, allocator); } } else { return NULL; } } void b2Contact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) { b2Assert(s_initialized == true); b2Fixture* fixtureA = contact->m_fixtureA; b2Fixture* fixtureB = contact->m_fixtureB; if (contact->m_manifold.pointCount > 0 && fixtureA->IsSensor() == false && fixtureB->IsSensor() == false) { fixtureA->GetBody()->SetAwake(true); fixtureB->GetBody()->SetAwake(true); } b2Shape::Type typeA = fixtureA->GetType(); b2Shape::Type typeB = fixtureB->GetType(); b2Assert(0 <= typeA && typeB < b2Shape::e_typeCount); b2Assert(0 <= typeA && typeB < b2Shape::e_typeCount); b2ContactDestroyFcn* destroyFcn = s_registers[typeA][typeB].destroyFcn; destroyFcn(contact, allocator); } b2Contact::b2Contact(b2Fixture* fA, int32 indexA, b2Fixture* fB, int32 indexB) { m_flags = e_enabledFlag; m_fixtureA = fA; m_fixtureB = fB; m_indexA = indexA; m_indexB = indexB; m_manifold.pointCount = 0; m_prev = NULL; m_next = NULL; m_nodeA.contact = NULL; m_nodeA.prev = NULL; m_nodeA.next = NULL; m_nodeA.other = NULL; m_nodeB.contact = NULL; m_nodeB.prev = NULL; m_nodeB.next = NULL; m_nodeB.other = NULL; m_toiCount = 0; m_friction = b2MixFriction(m_fixtureA->m_friction, m_fixtureB->m_friction); m_restitution = b2MixRestitution(m_fixtureA->m_restitution, m_fixtureB->m_restitution); m_tangentSpeed = 0.0f; } // Update the contact manifold and touching status. // Note: do not assume the fixture AABBs are overlapping or are valid. void b2Contact::Update(b2ContactListener* listener) { b2Manifold oldManifold = m_manifold; // Re-enable this contact. m_flags |= e_enabledFlag; bool touching = false; bool wasTouching = (m_flags & e_touchingFlag) == e_touchingFlag; bool sensorA = m_fixtureA->IsSensor(); bool sensorB = m_fixtureB->IsSensor(); bool sensor = sensorA || sensorB; b2Body* bodyA = m_fixtureA->GetBody(); b2Body* bodyB = m_fixtureB->GetBody(); const b2Transform& xfA = bodyA->GetTransform(); const b2Transform& xfB = bodyB->GetTransform(); // Is this contact a sensor? if (sensor) { const b2Shape* shapeA = m_fixtureA->GetShape(); const b2Shape* shapeB = m_fixtureB->GetShape(); touching = b2TestOverlap(shapeA, m_indexA, shapeB, m_indexB, xfA, xfB); // Sensors don't generate manifolds. m_manifold.pointCount = 0; } else { Evaluate(&m_manifold, xfA, xfB); touching = m_manifold.pointCount > 0; // Match old contact ids to new contact ids and copy the // stored impulses to warm start the solver. for (int32 i = 0; i < m_manifold.pointCount; ++i) { b2ManifoldPoint* mp2 = m_manifold.points + i; mp2->normalImpulse = 0.0f; mp2->tangentImpulse = 0.0f; b2ContactID id2 = mp2->id; for (int32 j = 0; j < oldManifold.pointCount; ++j) { b2ManifoldPoint* mp1 = oldManifold.points + j; if (mp1->id.key == id2.key) { mp2->normalImpulse = mp1->normalImpulse; mp2->tangentImpulse = mp1->tangentImpulse; break; } } } if (touching != wasTouching) { bodyA->SetAwake(true); bodyB->SetAwake(true); } } if (touching) { m_flags |= e_touchingFlag; } else { m_flags &= ~e_touchingFlag; } if (wasTouching == false && touching == true && listener) { listener->BeginContact(this); } if (wasTouching == true && touching == false && listener) { listener->EndContact(this); } if (sensor == false && touching && listener) { listener->PreSolve(this, &oldManifold); } } love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h0000755000000000000000000000301012316602166026420 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_CHAIN_AND_POLYGON_CONTACT_H #define B2_CHAIN_AND_POLYGON_CONTACT_H #include class b2BlockAllocator; class b2ChainAndPolygonContact : public b2Contact { public: static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); b2ChainAndPolygonContact(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB); ~b2ChainAndPolygonContact() {} void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h0000755000000000000000000000274712316602166026262 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_EDGE_AND_POLYGON_CONTACT_H #define B2_EDGE_AND_POLYGON_CONTACT_H #include class b2BlockAllocator; class b2EdgeAndPolygonContact : public b2Contact { public: static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); b2EdgeAndPolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB); ~b2EdgeAndPolygonContact() {} void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp0000755000000000000000000000402012316602166027134 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include b2Contact* b2PolygonAndCircleContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator) { void* mem = allocator->Allocate(sizeof(b2PolygonAndCircleContact)); return new (mem) b2PolygonAndCircleContact(fixtureA, fixtureB); } void b2PolygonAndCircleContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) { ((b2PolygonAndCircleContact*)contact)->~b2PolygonAndCircleContact(); allocator->Free(contact, sizeof(b2PolygonAndCircleContact)); } b2PolygonAndCircleContact::b2PolygonAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB) : b2Contact(fixtureA, 0, fixtureB, 0) { b2Assert(m_fixtureA->GetType() == b2Shape::e_polygon); b2Assert(m_fixtureB->GetType() == b2Shape::e_circle); } void b2PolygonAndCircleContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) { b2CollidePolygonAndCircle( manifold, (b2PolygonShape*)m_fixtureA->GetShape(), xfA, (b2CircleShape*)m_fixtureB->GetShape(), xfB); } love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2PolygonContact.cpp0000755000000000000000000000404012316602166025371 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include #include b2Contact* b2PolygonContact::Create(b2Fixture* fixtureA, int32, b2Fixture* fixtureB, int32, b2BlockAllocator* allocator) { void* mem = allocator->Allocate(sizeof(b2PolygonContact)); return new (mem) b2PolygonContact(fixtureA, fixtureB); } void b2PolygonContact::Destroy(b2Contact* contact, b2BlockAllocator* allocator) { ((b2PolygonContact*)contact)->~b2PolygonContact(); allocator->Free(contact, sizeof(b2PolygonContact)); } b2PolygonContact::b2PolygonContact(b2Fixture* fixtureA, b2Fixture* fixtureB) : b2Contact(fixtureA, 0, fixtureB, 0) { b2Assert(m_fixtureA->GetType() == b2Shape::e_polygon); b2Assert(m_fixtureB->GetType() == b2Shape::e_polygon); } void b2PolygonContact::Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) { b2CollidePolygons( manifold, (b2PolygonShape*)m_fixtureA->GetShape(), xfA, (b2PolygonShape*)m_fixtureB->GetShape(), xfB); } love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h0000755000000000000000000000274212316602166026027 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_EDGE_AND_CIRCLE_CONTACT_H #define B2_EDGE_AND_CIRCLE_CONTACT_H #include class b2BlockAllocator; class b2EdgeAndCircleContact : public b2Contact { public: static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); b2EdgeAndCircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB); ~b2EdgeAndCircleContact() {} void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h0000755000000000000000000000300312316602166026174 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_CHAIN_AND_CIRCLE_CONTACT_H #define B2_CHAIN_AND_CIRCLE_CONTACT_H #include class b2BlockAllocator; class b2ChainAndCircleContact : public b2Contact { public: static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); b2ChainAndCircleContact(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB); ~b2ChainAndCircleContact() {} void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2CircleContact.h0000755000000000000000000000267312316602166024622 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_CIRCLE_CONTACT_H #define B2_CIRCLE_CONTACT_H #include class b2BlockAllocator; class b2CircleContact : public b2Contact { public: static b2Contact* Create( b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); b2CircleContact(b2Fixture* fixtureA, b2Fixture* fixtureB); ~b2CircleContact() {} void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB); }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2ContactSolver.h0000755000000000000000000000456212316602166024672 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_CONTACT_SOLVER_H #define B2_CONTACT_SOLVER_H #include #include #include class b2Contact; class b2Body; class b2StackAllocator; struct b2ContactPositionConstraint; struct b2VelocityConstraintPoint { b2Vec2 rA; b2Vec2 rB; float32 normalImpulse; float32 tangentImpulse; float32 normalMass; float32 tangentMass; float32 velocityBias; }; struct b2ContactVelocityConstraint { b2VelocityConstraintPoint points[b2_maxManifoldPoints]; b2Vec2 normal; b2Mat22 normalMass; b2Mat22 K; int32 indexA; int32 indexB; float32 invMassA, invMassB; float32 invIA, invIB; float32 friction; float32 restitution; float32 tangentSpeed; int32 pointCount; int32 contactIndex; }; struct b2ContactSolverDef { b2TimeStep step; b2Contact** contacts; int32 count; b2Position* positions; b2Velocity* velocities; b2StackAllocator* allocator; }; class b2ContactSolver { public: b2ContactSolver(b2ContactSolverDef* def); ~b2ContactSolver(); void InitializeVelocityConstraints(); void WarmStart(); void SolveVelocityConstraints(); void StoreImpulses(); bool SolvePositionConstraints(); bool SolveTOIPositionConstraints(int32 toiIndexA, int32 toiIndexB); b2TimeStep m_step; b2Position* m_positions; b2Velocity* m_velocities; b2StackAllocator* m_allocator; b2ContactPositionConstraint* m_positionConstraints; b2ContactVelocityConstraint* m_velocityConstraints; b2Contact** m_contacts; int m_count; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/Contacts/b2Contact.h0000755000000000000000000002213612316602166023474 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_CONTACT_H #define B2_CONTACT_H #include #include #include #include class b2Body; class b2Contact; class b2Fixture; class b2World; class b2BlockAllocator; class b2StackAllocator; class b2ContactListener; /// Friction mixing law. The idea is to allow either fixture to drive the restitution to zero. /// For example, anything slides on ice. inline float32 b2MixFriction(float32 friction1, float32 friction2) { return b2Sqrt(friction1 * friction2); } /// Restitution mixing law. The idea is allow for anything to bounce off an inelastic surface. /// For example, a superball bounces on anything. inline float32 b2MixRestitution(float32 restitution1, float32 restitution2) { return restitution1 > restitution2 ? restitution1 : restitution2; } typedef b2Contact* b2ContactCreateFcn( b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); typedef void b2ContactDestroyFcn(b2Contact* contact, b2BlockAllocator* allocator); struct b2ContactRegister { b2ContactCreateFcn* createFcn; b2ContactDestroyFcn* destroyFcn; bool primary; }; /// A contact edge is used to connect bodies and contacts together /// in a contact graph where each body is a node and each contact /// is an edge. A contact edge belongs to a doubly linked list /// maintained in each attached body. Each contact has two contact /// nodes, one for each attached body. struct b2ContactEdge { b2Body* other; ///< provides quick access to the other body attached. b2Contact* contact; ///< the contact b2ContactEdge* prev; ///< the previous contact edge in the body's contact list b2ContactEdge* next; ///< the next contact edge in the body's contact list }; /// The class manages contact between two shapes. A contact exists for each overlapping /// AABB in the broad-phase (except if filtered). Therefore a contact object may exist /// that has no contact points. class b2Contact { public: /// Get the contact manifold. Do not modify the manifold unless you understand the /// internals of Box2D. b2Manifold* GetManifold(); const b2Manifold* GetManifold() const; /// Get the world manifold. void GetWorldManifold(b2WorldManifold* worldManifold) const; /// Is this contact touching? bool IsTouching() const; /// Enable/disable this contact. This can be used inside the pre-solve /// contact listener. The contact is only disabled for the current /// time step (or sub-step in continuous collisions). void SetEnabled(bool flag); /// Has this contact been disabled? bool IsEnabled() const; /// Get the next contact in the world's contact list. b2Contact* GetNext(); const b2Contact* GetNext() const; /// Get fixture A in this contact. b2Fixture* GetFixtureA(); const b2Fixture* GetFixtureA() const; /// Get the child primitive index for fixture A. int32 GetChildIndexA() const; /// Get fixture B in this contact. b2Fixture* GetFixtureB(); const b2Fixture* GetFixtureB() const; /// Get the child primitive index for fixture B. int32 GetChildIndexB() const; /// Override the default friction mixture. You can call this in b2ContactListener::PreSolve. /// This value persists until set or reset. void SetFriction(float32 friction); /// Get the friction. float32 GetFriction() const; /// Reset the friction mixture to the default value. void ResetFriction(); /// Override the default restitution mixture. You can call this in b2ContactListener::PreSolve. /// The value persists until you set or reset. void SetRestitution(float32 restitution); /// Get the restitution. float32 GetRestitution() const; /// Reset the restitution to the default value. void ResetRestitution(); /// Set the desired tangent speed for a conveyor belt behavior. In meters per second. void SetTangentSpeed(float32 speed); /// Get the desired tangent speed. In meters per second. float32 GetTangentSpeed() const; /// Evaluate this contact with your own manifold and transforms. virtual void Evaluate(b2Manifold* manifold, const b2Transform& xfA, const b2Transform& xfB) = 0; protected: friend class b2ContactManager; friend class b2World; friend class b2ContactSolver; friend class b2Body; friend class b2Fixture; // Flags stored in m_flags enum { // Used when crawling contact graph when forming islands. e_islandFlag = 0x0001, // Set when the shapes are touching. e_touchingFlag = 0x0002, // This contact can be disabled (by user) e_enabledFlag = 0x0004, // This contact needs filtering because a fixture filter was changed. e_filterFlag = 0x0008, // This bullet contact had a TOI event e_bulletHitFlag = 0x0010, // This contact has a valid TOI in m_toi e_toiFlag = 0x0020 }; /// Flag this contact for filtering. Filtering will occur the next time step. void FlagForFiltering(); static void AddType(b2ContactCreateFcn* createFcn, b2ContactDestroyFcn* destroyFcn, b2Shape::Type typeA, b2Shape::Type typeB); static void InitializeRegisters(); static b2Contact* Create(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB, b2BlockAllocator* allocator); static void Destroy(b2Contact* contact, b2Shape::Type typeA, b2Shape::Type typeB, b2BlockAllocator* allocator); static void Destroy(b2Contact* contact, b2BlockAllocator* allocator); b2Contact() : m_fixtureA(NULL), m_fixtureB(NULL) {} b2Contact(b2Fixture* fixtureA, int32 indexA, b2Fixture* fixtureB, int32 indexB); virtual ~b2Contact() {} void Update(b2ContactListener* listener); static b2ContactRegister s_registers[b2Shape::e_typeCount][b2Shape::e_typeCount]; static bool s_initialized; uint32 m_flags; // World pool and list pointers. b2Contact* m_prev; b2Contact* m_next; // Nodes for connecting bodies. b2ContactEdge m_nodeA; b2ContactEdge m_nodeB; b2Fixture* m_fixtureA; b2Fixture* m_fixtureB; int32 m_indexA; int32 m_indexB; b2Manifold m_manifold; int32 m_toiCount; float32 m_toi; float32 m_friction; float32 m_restitution; float32 m_tangentSpeed; }; inline b2Manifold* b2Contact::GetManifold() { return &m_manifold; } inline const b2Manifold* b2Contact::GetManifold() const { return &m_manifold; } inline void b2Contact::GetWorldManifold(b2WorldManifold* worldManifold) const { const b2Body* bodyA = m_fixtureA->GetBody(); const b2Body* bodyB = m_fixtureB->GetBody(); const b2Shape* shapeA = m_fixtureA->GetShape(); const b2Shape* shapeB = m_fixtureB->GetShape(); worldManifold->Initialize(&m_manifold, bodyA->GetTransform(), shapeA->m_radius, bodyB->GetTransform(), shapeB->m_radius); } inline void b2Contact::SetEnabled(bool flag) { if (flag) { m_flags |= e_enabledFlag; } else { m_flags &= ~e_enabledFlag; } } inline bool b2Contact::IsEnabled() const { return (m_flags & e_enabledFlag) == e_enabledFlag; } inline bool b2Contact::IsTouching() const { return (m_flags & e_touchingFlag) == e_touchingFlag; } inline b2Contact* b2Contact::GetNext() { return m_next; } inline const b2Contact* b2Contact::GetNext() const { return m_next; } inline b2Fixture* b2Contact::GetFixtureA() { return m_fixtureA; } inline const b2Fixture* b2Contact::GetFixtureA() const { return m_fixtureA; } inline b2Fixture* b2Contact::GetFixtureB() { return m_fixtureB; } inline int32 b2Contact::GetChildIndexA() const { return m_indexA; } inline const b2Fixture* b2Contact::GetFixtureB() const { return m_fixtureB; } inline int32 b2Contact::GetChildIndexB() const { return m_indexB; } inline void b2Contact::FlagForFiltering() { m_flags |= e_filterFlag; } inline void b2Contact::SetFriction(float32 friction) { m_friction = friction; } inline float32 b2Contact::GetFriction() const { return m_friction; } inline void b2Contact::ResetFriction() { m_friction = b2MixFriction(m_fixtureA->m_friction, m_fixtureB->m_friction); } inline void b2Contact::SetRestitution(float32 restitution) { m_restitution = restitution; } inline float32 b2Contact::GetRestitution() const { return m_restitution; } inline void b2Contact::ResetRestitution() { m_restitution = b2MixRestitution(m_fixtureA->m_restitution, m_fixtureB->m_restitution); } inline void b2Contact::SetTangentSpeed(float32 speed) { m_tangentSpeed = speed; } inline float32 b2Contact::GetTangentSpeed() const { return m_tangentSpeed; } #endif love-0.9.1/src/libraries/Box2D/Dynamics/b2WorldCallbacks.h0000755000000000000000000001330412316602166023207 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_WORLD_CALLBACKS_H #define B2_WORLD_CALLBACKS_H #include struct b2Vec2; struct b2Transform; class b2Fixture; class b2Body; class b2Joint; class b2Contact; struct b2ContactResult; struct b2Manifold; /// Joints and fixtures are destroyed when their associated /// body is destroyed. Implement this listener so that you /// may nullify references to these joints and shapes. class b2DestructionListener { public: virtual ~b2DestructionListener() {} /// Called when any joint is about to be destroyed due /// to the destruction of one of its attached bodies. virtual void SayGoodbye(b2Joint* joint) = 0; /// Called when any fixture is about to be destroyed due /// to the destruction of its parent body. virtual void SayGoodbye(b2Fixture* fixture) = 0; }; /// Implement this class to provide collision filtering. In other words, you can implement /// this class if you want finer control over contact creation. class b2ContactFilter { public: virtual ~b2ContactFilter() {} /// Return true if contact calculations should be performed between these two shapes. /// @warning for performance reasons this is only called when the AABBs begin to overlap. virtual bool ShouldCollide(b2Fixture* fixtureA, b2Fixture* fixtureB); }; /// Contact impulses for reporting. Impulses are used instead of forces because /// sub-step forces may approach infinity for rigid body collisions. These /// match up one-to-one with the contact points in b2Manifold. struct b2ContactImpulse { float32 normalImpulses[b2_maxManifoldPoints]; float32 tangentImpulses[b2_maxManifoldPoints]; int32 count; }; /// Implement this class to get contact information. You can use these results for /// things like sounds and game logic. You can also get contact results by /// traversing the contact lists after the time step. However, you might miss /// some contacts because continuous physics leads to sub-stepping. /// Additionally you may receive multiple callbacks for the same contact in a /// single time step. /// You should strive to make your callbacks efficient because there may be /// many callbacks per time step. /// @warning You cannot create/destroy Box2D entities inside these callbacks. class b2ContactListener { public: virtual ~b2ContactListener() {} /// Called when two fixtures begin to touch. virtual void BeginContact(b2Contact* contact) { B2_NOT_USED(contact); } /// Called when two fixtures cease to touch. virtual void EndContact(b2Contact* contact) { B2_NOT_USED(contact); } /// This is called after a contact is updated. This allows you to inspect a /// contact before it goes to the solver. If you are careful, you can modify the /// contact manifold (e.g. disable contact). /// A copy of the old manifold is provided so that you can detect changes. /// Note: this is called only for awake bodies. /// Note: this is called even when the number of contact points is zero. /// Note: this is not called for sensors. /// Note: if you set the number of contact points to zero, you will not /// get an EndContact callback. However, you may get a BeginContact callback /// the next step. virtual void PreSolve(b2Contact* contact, const b2Manifold* oldManifold) { B2_NOT_USED(contact); B2_NOT_USED(oldManifold); } /// This lets you inspect a contact after the solver is finished. This is useful /// for inspecting impulses. /// Note: the contact manifold does not include time of impact impulses, which can be /// arbitrarily large if the sub-step is small. Hence the impulse is provided explicitly /// in a separate data structure. /// Note: this is only called for contacts that are touching, solid, and awake. virtual void PostSolve(b2Contact* contact, const b2ContactImpulse* impulse) { B2_NOT_USED(contact); B2_NOT_USED(impulse); } }; /// Callback class for AABB queries. /// See b2World::Query class b2QueryCallback { public: virtual ~b2QueryCallback() {} /// Called for each fixture found in the query AABB. /// @return false to terminate the query. virtual bool ReportFixture(b2Fixture* fixture) = 0; }; /// Callback class for ray casts. /// See b2World::RayCast class b2RayCastCallback { public: virtual ~b2RayCastCallback() {} /// Called for each fixture found in the query. You control how the ray cast /// proceeds by returning a float: /// return -1: ignore this fixture and continue /// return 0: terminate the ray cast /// return fraction: clip the ray to this point /// return 1: don't clip the ray and continue /// @param fixture the fixture hit by the ray /// @param point the point of initial intersection /// @param normal the normal vector at the point of intersection /// @return -1 to filter, 0 to terminate, fraction to clip the ray for /// closest hit, 1 to continue virtual float32 ReportFixture( b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float32 fraction) = 0; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/b2ContactManager.cpp0000755000000000000000000001563012316602166023545 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include b2ContactFilter b2_defaultFilter; b2ContactListener b2_defaultListener; b2ContactManager::b2ContactManager() { m_contactList = NULL; m_contactCount = 0; m_contactFilter = &b2_defaultFilter; m_contactListener = &b2_defaultListener; m_allocator = NULL; } void b2ContactManager::Destroy(b2Contact* c) { b2Fixture* fixtureA = c->GetFixtureA(); b2Fixture* fixtureB = c->GetFixtureB(); b2Body* bodyA = fixtureA->GetBody(); b2Body* bodyB = fixtureB->GetBody(); if (m_contactListener && c->IsTouching()) { m_contactListener->EndContact(c); } // Remove from the world. if (c->m_prev) { c->m_prev->m_next = c->m_next; } if (c->m_next) { c->m_next->m_prev = c->m_prev; } if (c == m_contactList) { m_contactList = c->m_next; } // Remove from body 1 if (c->m_nodeA.prev) { c->m_nodeA.prev->next = c->m_nodeA.next; } if (c->m_nodeA.next) { c->m_nodeA.next->prev = c->m_nodeA.prev; } if (&c->m_nodeA == bodyA->m_contactList) { bodyA->m_contactList = c->m_nodeA.next; } // Remove from body 2 if (c->m_nodeB.prev) { c->m_nodeB.prev->next = c->m_nodeB.next; } if (c->m_nodeB.next) { c->m_nodeB.next->prev = c->m_nodeB.prev; } if (&c->m_nodeB == bodyB->m_contactList) { bodyB->m_contactList = c->m_nodeB.next; } // Call the factory. b2Contact::Destroy(c, m_allocator); --m_contactCount; } // This is the top level collision call for the time step. Here // all the narrow phase collision is processed for the world // contact list. void b2ContactManager::Collide() { // Update awake contacts. b2Contact* c = m_contactList; while (c) { b2Fixture* fixtureA = c->GetFixtureA(); b2Fixture* fixtureB = c->GetFixtureB(); int32 indexA = c->GetChildIndexA(); int32 indexB = c->GetChildIndexB(); b2Body* bodyA = fixtureA->GetBody(); b2Body* bodyB = fixtureB->GetBody(); // Is this contact flagged for filtering? if (c->m_flags & b2Contact::e_filterFlag) { // Should these bodies collide? if (bodyB->ShouldCollide(bodyA) == false) { b2Contact* cNuke = c; c = cNuke->GetNext(); Destroy(cNuke); continue; } // Check user filtering. if (m_contactFilter && m_contactFilter->ShouldCollide(fixtureA, fixtureB) == false) { b2Contact* cNuke = c; c = cNuke->GetNext(); Destroy(cNuke); continue; } // Clear the filtering flag. c->m_flags &= ~b2Contact::e_filterFlag; } bool activeA = bodyA->IsAwake() && bodyA->m_type != b2_staticBody; bool activeB = bodyB->IsAwake() && bodyB->m_type != b2_staticBody; // At least one body must be awake and it must be dynamic or kinematic. if (activeA == false && activeB == false) { c = c->GetNext(); continue; } int32 proxyIdA = fixtureA->m_proxies[indexA].proxyId; int32 proxyIdB = fixtureB->m_proxies[indexB].proxyId; bool overlap = m_broadPhase.TestOverlap(proxyIdA, proxyIdB); // Here we destroy contacts that cease to overlap in the broad-phase. if (overlap == false) { b2Contact* cNuke = c; c = cNuke->GetNext(); Destroy(cNuke); continue; } // The contact persists. c->Update(m_contactListener); c = c->GetNext(); } } void b2ContactManager::FindNewContacts() { m_broadPhase.UpdatePairs(this); } void b2ContactManager::AddPair(void* proxyUserDataA, void* proxyUserDataB) { b2FixtureProxy* proxyA = (b2FixtureProxy*)proxyUserDataA; b2FixtureProxy* proxyB = (b2FixtureProxy*)proxyUserDataB; b2Fixture* fixtureA = proxyA->fixture; b2Fixture* fixtureB = proxyB->fixture; int32 indexA = proxyA->childIndex; int32 indexB = proxyB->childIndex; b2Body* bodyA = fixtureA->GetBody(); b2Body* bodyB = fixtureB->GetBody(); // Are the fixtures on the same body? if (bodyA == bodyB) { return; } // TODO_ERIN use a hash table to remove a potential bottleneck when both // bodies have a lot of contacts. // Does a contact already exist? b2ContactEdge* edge = bodyB->GetContactList(); while (edge) { if (edge->other == bodyA) { b2Fixture* fA = edge->contact->GetFixtureA(); b2Fixture* fB = edge->contact->GetFixtureB(); int32 iA = edge->contact->GetChildIndexA(); int32 iB = edge->contact->GetChildIndexB(); if (fA == fixtureA && fB == fixtureB && iA == indexA && iB == indexB) { // A contact already exists. return; } if (fA == fixtureB && fB == fixtureA && iA == indexB && iB == indexA) { // A contact already exists. return; } } edge = edge->next; } // Does a joint override collision? Is at least one body dynamic? if (bodyB->ShouldCollide(bodyA) == false) { return; } // Check user filtering. if (m_contactFilter && m_contactFilter->ShouldCollide(fixtureA, fixtureB) == false) { return; } // Call the factory. b2Contact* c = b2Contact::Create(fixtureA, indexA, fixtureB, indexB, m_allocator); if (c == NULL) { return; } // Contact creation may swap fixtures. fixtureA = c->GetFixtureA(); fixtureB = c->GetFixtureB(); indexA = c->GetChildIndexA(); indexB = c->GetChildIndexB(); bodyA = fixtureA->GetBody(); bodyB = fixtureB->GetBody(); // Insert into the world. c->m_prev = NULL; c->m_next = m_contactList; if (m_contactList != NULL) { m_contactList->m_prev = c; } m_contactList = c; // Connect to island graph. // Connect to body A c->m_nodeA.contact = c; c->m_nodeA.other = bodyB; c->m_nodeA.prev = NULL; c->m_nodeA.next = bodyA->m_contactList; if (bodyA->m_contactList != NULL) { bodyA->m_contactList->prev = &c->m_nodeA; } bodyA->m_contactList = &c->m_nodeA; // Connect to body B c->m_nodeB.contact = c; c->m_nodeB.other = bodyA; c->m_nodeB.prev = NULL; c->m_nodeB.next = bodyB->m_contactList; if (bodyB->m_contactList != NULL) { bodyB->m_contactList->prev = &c->m_nodeB; } bodyB->m_contactList = &c->m_nodeB; // Wake up the bodies if (fixtureA->IsSensor() == false && fixtureB->IsSensor() == false) { bodyA->SetAwake(true); bodyB->SetAwake(true); } ++m_contactCount; } love-0.9.1/src/libraries/Box2D/Dynamics/b2World.h0000755000000000000000000002515712316602166021420 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2011 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_WORLD_H #define B2_WORLD_H #include #include #include #include #include #include struct b2AABB; struct b2BodyDef; struct b2Color; struct b2JointDef; class b2Body; class b2Draw; class b2Fixture; class b2Joint; /// The world class manages all physics entities, dynamic simulation, /// and asynchronous queries. The world also contains efficient memory /// management facilities. class b2World { public: /// Construct a world object. /// @param gravity the world gravity vector. b2World(const b2Vec2& gravity); /// Destruct the world. All physics entities are destroyed and all heap memory is released. ~b2World(); /// Register a destruction listener. The listener is owned by you and must /// remain in scope. void SetDestructionListener(b2DestructionListener* listener); /// Register a contact filter to provide specific control over collision. /// Otherwise the default filter is used (b2_defaultFilter). The listener is /// owned by you and must remain in scope. void SetContactFilter(b2ContactFilter* filter); /// Register a contact event listener. The listener is owned by you and must /// remain in scope. void SetContactListener(b2ContactListener* listener); /// Register a routine for debug drawing. The debug draw functions are called /// inside with b2World::DrawDebugData method. The debug draw object is owned /// by you and must remain in scope. void SetDebugDraw(b2Draw* debugDraw); /// Create a rigid body given a definition. No reference to the definition /// is retained. /// @warning This function is locked during callbacks. b2Body* CreateBody(const b2BodyDef* def); /// Destroy a rigid body given a definition. No reference to the definition /// is retained. This function is locked during callbacks. /// @warning This automatically deletes all associated shapes and joints. /// @warning This function is locked during callbacks. void DestroyBody(b2Body* body); /// Create a joint to constrain bodies together. No reference to the definition /// is retained. This may cause the connected bodies to cease colliding. /// @warning This function is locked during callbacks. b2Joint* CreateJoint(const b2JointDef* def); /// Destroy a joint. This may cause the connected bodies to begin colliding. /// @warning This function is locked during callbacks. void DestroyJoint(b2Joint* joint); /// Take a time step. This performs collision detection, integration, /// and constraint solution. /// @param timeStep the amount of time to simulate, this should not vary. /// @param velocityIterations for the velocity constraint solver. /// @param positionIterations for the position constraint solver. void Step( float32 timeStep, int32 velocityIterations, int32 positionIterations); /// Manually clear the force buffer on all bodies. By default, forces are cleared automatically /// after each call to Step. The default behavior is modified by calling SetAutoClearForces. /// The purpose of this function is to support sub-stepping. Sub-stepping is often used to maintain /// a fixed sized time step under a variable frame-rate. /// When you perform sub-stepping you will disable auto clearing of forces and instead call /// ClearForces after all sub-steps are complete in one pass of your game loop. /// @see SetAutoClearForces void ClearForces(); /// Call this to draw shapes and other debug draw data. This is intentionally non-const. void DrawDebugData(); /// Query the world for all fixtures that potentially overlap the /// provided AABB. /// @param callback a user implemented callback class. /// @param aabb the query box. void QueryAABB(b2QueryCallback* callback, const b2AABB& aabb) const; /// Ray-cast the world for all fixtures in the path of the ray. Your callback /// controls whether you get the closest point, any point, or n-points. /// The ray-cast ignores shapes that contain the starting point. /// @param callback a user implemented callback class. /// @param point1 the ray starting point /// @param point2 the ray ending point void RayCast(b2RayCastCallback* callback, const b2Vec2& point1, const b2Vec2& point2) const; /// Get the world body list. With the returned body, use b2Body::GetNext to get /// the next body in the world list. A NULL body indicates the end of the list. /// @return the head of the world body list. b2Body* GetBodyList(); const b2Body* GetBodyList() const; /// Get the world joint list. With the returned joint, use b2Joint::GetNext to get /// the next joint in the world list. A NULL joint indicates the end of the list. /// @return the head of the world joint list. b2Joint* GetJointList(); const b2Joint* GetJointList() const; /// Get the world contact list. With the returned contact, use b2Contact::GetNext to get /// the next contact in the world list. A NULL contact indicates the end of the list. /// @return the head of the world contact list. /// @warning contacts are created and destroyed in the middle of a time step. /// Use b2ContactListener to avoid missing contacts. b2Contact* GetContactList(); const b2Contact* GetContactList() const; /// Enable/disable sleep. void SetAllowSleeping(bool flag); bool GetAllowSleeping() const { return m_allowSleep; } /// Enable/disable warm starting. For testing. void SetWarmStarting(bool flag) { m_warmStarting = flag; } bool GetWarmStarting() const { return m_warmStarting; } /// Enable/disable continuous physics. For testing. void SetContinuousPhysics(bool flag) { m_continuousPhysics = flag; } bool GetContinuousPhysics() const { return m_continuousPhysics; } /// Enable/disable single stepped continuous physics. For testing. void SetSubStepping(bool flag) { m_subStepping = flag; } bool GetSubStepping() const { return m_subStepping; } /// Get the number of broad-phase proxies. int32 GetProxyCount() const; /// Get the number of bodies. int32 GetBodyCount() const; /// Get the number of joints. int32 GetJointCount() const; /// Get the number of contacts (each may have 0 or more contact points). int32 GetContactCount() const; /// Get the height of the dynamic tree. int32 GetTreeHeight() const; /// Get the balance of the dynamic tree. int32 GetTreeBalance() const; /// Get the quality metric of the dynamic tree. The smaller the better. /// The minimum is 1. float32 GetTreeQuality() const; /// Change the global gravity vector. void SetGravity(const b2Vec2& gravity); /// Get the global gravity vector. b2Vec2 GetGravity() const; /// Is the world locked (in the middle of a time step). bool IsLocked() const; /// Set flag to control automatic clearing of forces after each time step. void SetAutoClearForces(bool flag); /// Get the flag that controls automatic clearing of forces after each time step. bool GetAutoClearForces() const; /// Shift the world origin. Useful for large worlds. /// The body shift formula is: position -= newOrigin /// @param newOrigin the new origin with respect to the old origin void ShiftOrigin(const b2Vec2& newOrigin); /// Get the contact manager for testing. const b2ContactManager& GetContactManager() const; /// Get the current profile. const b2Profile& GetProfile() const; /// Dump the world into the log file. /// @warning this should be called outside of a time step. void Dump(); private: // m_flags enum { e_newFixture = 0x0001, e_locked = 0x0002, e_clearForces = 0x0004 }; friend class b2Body; friend class b2Fixture; friend class b2ContactManager; friend class b2Controller; void Solve(const b2TimeStep& step); void SolveTOI(const b2TimeStep& step); void DrawJoint(b2Joint* joint); void DrawShape(b2Fixture* shape, const b2Transform& xf, const b2Color& color); b2BlockAllocator m_blockAllocator; b2StackAllocator m_stackAllocator; int32 m_flags; b2ContactManager m_contactManager; b2Body* m_bodyList; b2Joint* m_jointList; int32 m_bodyCount; int32 m_jointCount; b2Vec2 m_gravity; bool m_allowSleep; b2DestructionListener* m_destructionListener; b2Draw* m_debugDraw; // This is used to compute the time step ratio to // support a variable time step. float32 m_inv_dt0; // These are for debugging the solver. bool m_warmStarting; bool m_continuousPhysics; bool m_subStepping; bool m_stepComplete; b2Profile m_profile; }; inline b2Body* b2World::GetBodyList() { return m_bodyList; } inline const b2Body* b2World::GetBodyList() const { return m_bodyList; } inline b2Joint* b2World::GetJointList() { return m_jointList; } inline const b2Joint* b2World::GetJointList() const { return m_jointList; } inline b2Contact* b2World::GetContactList() { return m_contactManager.m_contactList; } inline const b2Contact* b2World::GetContactList() const { return m_contactManager.m_contactList; } inline int32 b2World::GetBodyCount() const { return m_bodyCount; } inline int32 b2World::GetJointCount() const { return m_jointCount; } inline int32 b2World::GetContactCount() const { return m_contactManager.m_contactCount; } inline void b2World::SetGravity(const b2Vec2& gravity) { m_gravity = gravity; } inline b2Vec2 b2World::GetGravity() const { return m_gravity; } inline bool b2World::IsLocked() const { return (m_flags & e_locked) == e_locked; } inline void b2World::SetAutoClearForces(bool flag) { if (flag) { m_flags |= e_clearForces; } else { m_flags &= ~e_clearForces; } } /// Get the flag that controls automatic clearing of forces after each time step. inline bool b2World::GetAutoClearForces() const { return (m_flags & e_clearForces) == e_clearForces; } inline const b2ContactManager& b2World::GetContactManager() const { return m_contactManager; } inline const b2Profile& b2World::GetProfile() const { return m_profile; } #endif love-0.9.1/src/libraries/Box2D/Dynamics/b2Fixture.cpp0000755000000000000000000002007312316602166022302 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include #include #include #include #include #include b2Fixture::b2Fixture() { m_userData = NULL; m_body = NULL; m_next = NULL; m_proxies = NULL; m_proxyCount = 0; m_shape = NULL; m_density = 0.0f; } void b2Fixture::Create(b2BlockAllocator* allocator, b2Body* body, const b2FixtureDef* def) { m_userData = def->userData; m_friction = def->friction; m_restitution = def->restitution; m_body = body; m_next = NULL; m_filter = def->filter; m_isSensor = def->isSensor; m_shape = def->shape->Clone(allocator); // Reserve proxy space int32 childCount = m_shape->GetChildCount(); m_proxies = (b2FixtureProxy*)allocator->Allocate(childCount * sizeof(b2FixtureProxy)); for (int32 i = 0; i < childCount; ++i) { m_proxies[i].fixture = NULL; m_proxies[i].proxyId = b2BroadPhase::e_nullProxy; } m_proxyCount = 0; m_density = def->density; } void b2Fixture::Destroy(b2BlockAllocator* allocator) { // The proxies must be destroyed before calling this. b2Assert(m_proxyCount == 0); // Free the proxy array. int32 childCount = m_shape->GetChildCount(); allocator->Free(m_proxies, childCount * sizeof(b2FixtureProxy)); m_proxies = NULL; // Free the child shape. switch (m_shape->m_type) { case b2Shape::e_circle: { b2CircleShape* s = (b2CircleShape*)m_shape; s->~b2CircleShape(); allocator->Free(s, sizeof(b2CircleShape)); } break; case b2Shape::e_edge: { b2EdgeShape* s = (b2EdgeShape*)m_shape; s->~b2EdgeShape(); allocator->Free(s, sizeof(b2EdgeShape)); } break; case b2Shape::e_polygon: { b2PolygonShape* s = (b2PolygonShape*)m_shape; s->~b2PolygonShape(); allocator->Free(s, sizeof(b2PolygonShape)); } break; case b2Shape::e_chain: { b2ChainShape* s = (b2ChainShape*)m_shape; s->~b2ChainShape(); allocator->Free(s, sizeof(b2ChainShape)); } break; default: b2Assert(false); break; } m_shape = NULL; } void b2Fixture::CreateProxies(b2BroadPhase* broadPhase, const b2Transform& xf) { b2Assert(m_proxyCount == 0); // Create proxies in the broad-phase. m_proxyCount = m_shape->GetChildCount(); for (int32 i = 0; i < m_proxyCount; ++i) { b2FixtureProxy* proxy = m_proxies + i; m_shape->ComputeAABB(&proxy->aabb, xf, i); proxy->proxyId = broadPhase->CreateProxy(proxy->aabb, proxy); proxy->fixture = this; proxy->childIndex = i; } } void b2Fixture::DestroyProxies(b2BroadPhase* broadPhase) { // Destroy proxies in the broad-phase. for (int32 i = 0; i < m_proxyCount; ++i) { b2FixtureProxy* proxy = m_proxies + i; broadPhase->DestroyProxy(proxy->proxyId); proxy->proxyId = b2BroadPhase::e_nullProxy; } m_proxyCount = 0; } void b2Fixture::Synchronize(b2BroadPhase* broadPhase, const b2Transform& transform1, const b2Transform& transform2) { if (m_proxyCount == 0) { return; } for (int32 i = 0; i < m_proxyCount; ++i) { b2FixtureProxy* proxy = m_proxies + i; // Compute an AABB that covers the swept shape (may miss some rotation effect). b2AABB aabb1, aabb2; m_shape->ComputeAABB(&aabb1, transform1, proxy->childIndex); m_shape->ComputeAABB(&aabb2, transform2, proxy->childIndex); proxy->aabb.Combine(aabb1, aabb2); b2Vec2 displacement = transform2.p - transform1.p; broadPhase->MoveProxy(proxy->proxyId, proxy->aabb, displacement); } } void b2Fixture::SetFilterData(const b2Filter& filter) { m_filter = filter; Refilter(); } void b2Fixture::Refilter() { if (m_body == NULL) { return; } // Flag associated contacts for filtering. b2ContactEdge* edge = m_body->GetContactList(); while (edge) { b2Contact* contact = edge->contact; b2Fixture* fixtureA = contact->GetFixtureA(); b2Fixture* fixtureB = contact->GetFixtureB(); if (fixtureA == this || fixtureB == this) { contact->FlagForFiltering(); } edge = edge->next; } b2World* world = m_body->GetWorld(); if (world == NULL) { return; } // Touch each proxy so that new pairs may be created b2BroadPhase* broadPhase = &world->m_contactManager.m_broadPhase; for (int32 i = 0; i < m_proxyCount; ++i) { broadPhase->TouchProxy(m_proxies[i].proxyId); } } void b2Fixture::SetSensor(bool sensor) { if (sensor != m_isSensor) { m_body->SetAwake(true); m_isSensor = sensor; } } void b2Fixture::Dump(int32 bodyIndex) { b2Log(" b2FixtureDef fd;\n"); b2Log(" fd.friction = %.15lef;\n", m_friction); b2Log(" fd.restitution = %.15lef;\n", m_restitution); b2Log(" fd.density = %.15lef;\n", m_density); b2Log(" fd.isSensor = bool(%d);\n", m_isSensor); b2Log(" fd.filter.categoryBits = uint16(%d);\n", m_filter.categoryBits); b2Log(" fd.filter.maskBits = uint16(%d);\n", m_filter.maskBits); b2Log(" fd.filter.groupIndex = int16(%d);\n", m_filter.groupIndex); switch (m_shape->m_type) { case b2Shape::e_circle: { b2CircleShape* s = (b2CircleShape*)m_shape; b2Log(" b2CircleShape shape;\n"); b2Log(" shape.m_radius = %.15lef;\n", s->m_radius); b2Log(" shape.m_p.Set(%.15lef, %.15lef);\n", s->m_p.x, s->m_p.y); } break; case b2Shape::e_edge: { b2EdgeShape* s = (b2EdgeShape*)m_shape; b2Log(" b2EdgeShape shape;\n"); b2Log(" shape.m_radius = %.15lef;\n", s->m_radius); b2Log(" shape.m_vertex0.Set(%.15lef, %.15lef);\n", s->m_vertex0.x, s->m_vertex0.y); b2Log(" shape.m_vertex1.Set(%.15lef, %.15lef);\n", s->m_vertex1.x, s->m_vertex1.y); b2Log(" shape.m_vertex2.Set(%.15lef, %.15lef);\n", s->m_vertex2.x, s->m_vertex2.y); b2Log(" shape.m_vertex3.Set(%.15lef, %.15lef);\n", s->m_vertex3.x, s->m_vertex3.y); b2Log(" shape.m_hasVertex0 = bool(%d);\n", s->m_hasVertex0); b2Log(" shape.m_hasVertex3 = bool(%d);\n", s->m_hasVertex3); } break; case b2Shape::e_polygon: { b2PolygonShape* s = (b2PolygonShape*)m_shape; b2Log(" b2PolygonShape shape;\n"); b2Log(" b2Vec2 vs[%d];\n", b2_maxPolygonVertices); for (int32 i = 0; i < s->m_count; ++i) { b2Log(" vs[%d].Set(%.15lef, %.15lef);\n", i, s->m_vertices[i].x, s->m_vertices[i].y); } b2Log(" shape.Set(vs, %d);\n", s->m_count); } break; case b2Shape::e_chain: { b2ChainShape* s = (b2ChainShape*)m_shape; b2Log(" b2ChainShape shape;\n"); b2Log(" b2Vec2 vs[%d];\n", s->m_count); for (int32 i = 0; i < s->m_count; ++i) { b2Log(" vs[%d].Set(%.15lef, %.15lef);\n", i, s->m_vertices[i].x, s->m_vertices[i].y); } b2Log(" shape.CreateChain(vs, %d);\n", s->m_count); b2Log(" shape.m_prevVertex.Set(%.15lef, %.15lef);\n", s->m_prevVertex.x, s->m_prevVertex.y); b2Log(" shape.m_nextVertex.Set(%.15lef, %.15lef);\n", s->m_nextVertex.x, s->m_nextVertex.y); b2Log(" shape.m_hasPrevVertex = bool(%d);\n", s->m_hasPrevVertex); b2Log(" shape.m_hasNextVertex = bool(%d);\n", s->m_hasNextVertex); } break; default: return; } b2Log("\n"); b2Log(" fd.shape = &shape;\n"); b2Log("\n"); b2Log(" bodies[%d]->CreateFixture(&fd);\n", bodyIndex); } love-0.9.1/src/libraries/Box2D/Dynamics/b2Fixture.h0000755000000000000000000002202212316602166021743 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_FIXTURE_H #define B2_FIXTURE_H #include #include #include class b2BlockAllocator; class b2Body; class b2BroadPhase; class b2Fixture; /// This holds contact filtering data. struct b2Filter { b2Filter() { categoryBits = 0x0001; maskBits = 0xFFFF; groupIndex = 0; } /// The collision category bits. Normally you would just set one bit. uint16 categoryBits; /// The collision mask bits. This states the categories that this /// shape would accept for collision. uint16 maskBits; /// Collision groups allow a certain group of objects to never collide (negative) /// or always collide (positive). Zero means no collision group. Non-zero group /// filtering always wins against the mask bits. int16 groupIndex; }; /// A fixture definition is used to create a fixture. This class defines an /// abstract fixture definition. You can reuse fixture definitions safely. struct b2FixtureDef { /// The constructor sets the default fixture definition values. b2FixtureDef() { shape = NULL; userData = NULL; friction = 0.2f; restitution = 0.0f; density = 0.0f; isSensor = false; } /// The shape, this must be set. The shape will be cloned, so you /// can create the shape on the stack. const b2Shape* shape; /// Use this to store application specific fixture data. void* userData; /// The friction coefficient, usually in the range [0,1]. float32 friction; /// The restitution (elasticity) usually in the range [0,1]. float32 restitution; /// The density, usually in kg/m^2. float32 density; /// A sensor shape collects contact information but never generates a collision /// response. bool isSensor; /// Contact filtering data. b2Filter filter; }; /// This proxy is used internally to connect fixtures to the broad-phase. struct b2FixtureProxy { b2AABB aabb; b2Fixture* fixture; int32 childIndex; int32 proxyId; }; /// A fixture is used to attach a shape to a body for collision detection. A fixture /// inherits its transform from its parent. Fixtures hold additional non-geometric data /// such as friction, collision filters, etc. /// Fixtures are created via b2Body::CreateFixture. /// @warning you cannot reuse fixtures. class b2Fixture { public: /// Get the type of the child shape. You can use this to down cast to the concrete shape. /// @return the shape type. b2Shape::Type GetType() const; /// Get the child shape. You can modify the child shape, however you should not change the /// number of vertices because this will crash some collision caching mechanisms. /// Manipulating the shape may lead to non-physical behavior. b2Shape* GetShape(); const b2Shape* GetShape() const; /// Set if this fixture is a sensor. void SetSensor(bool sensor); /// Is this fixture a sensor (non-solid)? /// @return the true if the shape is a sensor. bool IsSensor() const; /// Set the contact filtering data. This will not update contacts until the next time /// step when either parent body is active and awake. /// This automatically calls Refilter. void SetFilterData(const b2Filter& filter); /// Get the contact filtering data. const b2Filter& GetFilterData() const; /// Call this if you want to establish collision that was previously disabled by b2ContactFilter::ShouldCollide. void Refilter(); /// Get the parent body of this fixture. This is NULL if the fixture is not attached. /// @return the parent body. b2Body* GetBody(); const b2Body* GetBody() const; /// Get the next fixture in the parent body's fixture list. /// @return the next shape. b2Fixture* GetNext(); const b2Fixture* GetNext() const; /// Get the user data that was assigned in the fixture definition. Use this to /// store your application specific data. void* GetUserData() const; /// Set the user data. Use this to store your application specific data. void SetUserData(void* data); /// Test a point for containment in this fixture. /// @param p a point in world coordinates. bool TestPoint(const b2Vec2& p) const; /// Cast a ray against this shape. /// @param output the ray-cast results. /// @param input the ray-cast input parameters. bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, int32 childIndex) const; /// Get the mass data for this fixture. The mass data is based on the density and /// the shape. The rotational inertia is about the shape's origin. This operation /// may be expensive. void GetMassData(b2MassData* massData) const; /// Set the density of this fixture. This will _not_ automatically adjust the mass /// of the body. You must call b2Body::ResetMassData to update the body's mass. void SetDensity(float32 density); /// Get the density of this fixture. float32 GetDensity() const; /// Get the coefficient of friction. float32 GetFriction() const; /// Set the coefficient of friction. This will _not_ change the friction of /// existing contacts. void SetFriction(float32 friction); /// Get the coefficient of restitution. float32 GetRestitution() const; /// Set the coefficient of restitution. This will _not_ change the restitution of /// existing contacts. void SetRestitution(float32 restitution); /// Get the fixture's AABB. This AABB may be enlarge and/or stale. /// If you need a more accurate AABB, compute it using the shape and /// the body transform. const b2AABB& GetAABB(int32 childIndex) const; /// Dump this fixture to the log file. void Dump(int32 bodyIndex); protected: friend class b2Body; friend class b2World; friend class b2Contact; friend class b2ContactManager; b2Fixture(); // We need separation create/destroy functions from the constructor/destructor because // the destructor cannot access the allocator (no destructor arguments allowed by C++). void Create(b2BlockAllocator* allocator, b2Body* body, const b2FixtureDef* def); void Destroy(b2BlockAllocator* allocator); // These support body activation/deactivation. void CreateProxies(b2BroadPhase* broadPhase, const b2Transform& xf); void DestroyProxies(b2BroadPhase* broadPhase); void Synchronize(b2BroadPhase* broadPhase, const b2Transform& xf1, const b2Transform& xf2); float32 m_density; b2Fixture* m_next; b2Body* m_body; b2Shape* m_shape; float32 m_friction; float32 m_restitution; b2FixtureProxy* m_proxies; int32 m_proxyCount; b2Filter m_filter; bool m_isSensor; void* m_userData; }; inline b2Shape::Type b2Fixture::GetType() const { return m_shape->GetType(); } inline b2Shape* b2Fixture::GetShape() { return m_shape; } inline const b2Shape* b2Fixture::GetShape() const { return m_shape; } inline bool b2Fixture::IsSensor() const { return m_isSensor; } inline const b2Filter& b2Fixture::GetFilterData() const { return m_filter; } inline void* b2Fixture::GetUserData() const { return m_userData; } inline void b2Fixture::SetUserData(void* data) { m_userData = data; } inline b2Body* b2Fixture::GetBody() { return m_body; } inline const b2Body* b2Fixture::GetBody() const { return m_body; } inline b2Fixture* b2Fixture::GetNext() { return m_next; } inline const b2Fixture* b2Fixture::GetNext() const { return m_next; } inline void b2Fixture::SetDensity(float32 density) { b2Assert(b2IsValid(density) && density >= 0.0f); m_density = density; } inline float32 b2Fixture::GetDensity() const { return m_density; } inline float32 b2Fixture::GetFriction() const { return m_friction; } inline void b2Fixture::SetFriction(float32 friction) { m_friction = friction; } inline float32 b2Fixture::GetRestitution() const { return m_restitution; } inline void b2Fixture::SetRestitution(float32 restitution) { m_restitution = restitution; } inline bool b2Fixture::TestPoint(const b2Vec2& p) const { return m_shape->TestPoint(m_body->GetTransform(), p); } inline bool b2Fixture::RayCast(b2RayCastOutput* output, const b2RayCastInput& input, int32 childIndex) const { return m_shape->RayCast(output, input, m_body->GetTransform(), childIndex); } inline void b2Fixture::GetMassData(b2MassData* massData) const { m_shape->ComputeMass(massData, m_density); } inline const b2AABB& b2Fixture::GetAABB(int32 childIndex) const { b2Assert(0 <= childIndex && childIndex < m_proxyCount); return m_proxies[childIndex].aabb; } #endif love-0.9.1/src/libraries/Box2D/Dynamics/b2ContactManager.h0000755000000000000000000000300012316602166023176 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #ifndef B2_CONTACT_MANAGER_H #define B2_CONTACT_MANAGER_H #include class b2Contact; class b2ContactFilter; class b2ContactListener; class b2BlockAllocator; // Delegate of b2World. class b2ContactManager { public: b2ContactManager(); // Broad-phase callback. void AddPair(void* proxyUserDataA, void* proxyUserDataB); void FindNewContacts(); void Destroy(b2Contact* c); void Collide(); b2BroadPhase m_broadPhase; b2Contact* m_contactList; int32 m_contactCount; b2ContactFilter* m_contactFilter; b2ContactListener* m_contactListener; b2BlockAllocator* m_allocator; }; #endif love-0.9.1/src/libraries/Box2D/Dynamics/b2Body.cpp0000755000000000000000000002724112316602166021555 0ustar00rootroot00000000000000/* * Copyright (c) 2006-2007 Erin Catto http://www.box2d.org * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ #include #include #include #include #include b2Body::b2Body(const b2BodyDef* bd, b2World* world) { b2Assert(bd->position.IsValid()); b2Assert(bd->linearVelocity.IsValid()); b2Assert(b2IsValid(bd->angle)); b2Assert(b2IsValid(bd->angularVelocity)); b2Assert(b2IsValid(bd->angularDamping) && bd->angularDamping >= 0.0f); b2Assert(b2IsValid(bd->linearDamping) && bd->linearDamping >= 0.0f); m_flags = 0; if (bd->bullet) { m_flags |= e_bulletFlag; } if (bd->fixedRotation) { m_flags |= e_fixedRotationFlag; } if (bd->allowSleep) { m_flags |= e_autoSleepFlag; } if (bd->awake) { m_flags |= e_awakeFlag; } if (bd->active) { m_flags |= e_activeFlag; } m_world = world; m_xf.p = bd->position; m_xf.q.Set(bd->angle); m_sweep.localCenter.SetZero(); m_sweep.c0 = m_xf.p; m_sweep.c = m_xf.p; m_sweep.a0 = bd->angle; m_sweep.a = bd->angle; m_sweep.alpha0 = 0.0f; m_jointList = NULL; m_contactList = NULL; m_prev = NULL; m_next = NULL; m_linearVelocity = bd->linearVelocity; m_angularVelocity = bd->angularVelocity; m_linearDamping = bd->linearDamping; m_angularDamping = bd->angularDamping; m_gravityScale = bd->gravityScale; m_force.SetZero(); m_torque = 0.0f; m_sleepTime = 0.0f; m_type = bd->type; if (m_type == b2_dynamicBody) { m_mass = 1.0f; m_invMass = 1.0f; } else { m_mass = 0.0f; m_invMass = 0.0f; } m_I = 0.0f; m_invI = 0.0f; m_userData = bd->userData; m_fixtureList = NULL; m_fixtureCount = 0; } b2Body::~b2Body() { // shapes and joints are destroyed in b2World::Destroy } void b2Body::SetType(b2BodyType type) { b2Assert(m_world->IsLocked() == false); if (m_world->IsLocked() == true) { return; } if (m_type == type) { return; } m_type = type; ResetMassData(); if (m_type == b2_staticBody) { m_linearVelocity.SetZero(); m_angularVelocity = 0.0f; m_sweep.a0 = m_sweep.a; m_sweep.c0 = m_sweep.c; SynchronizeFixtures(); } SetAwake(true); m_force.SetZero(); m_torque = 0.0f; // Delete the attached contacts. b2ContactEdge* ce = m_contactList; while (ce) { b2ContactEdge* ce0 = ce; ce = ce->next; m_world->m_contactManager.Destroy(ce0->contact); } m_contactList = NULL; // Touch the proxies so that new contacts will be created (when appropriate) b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; for (b2Fixture* f = m_fixtureList; f; f = f->m_next) { int32 proxyCount = f->m_proxyCount; for (int32 i = 0; i < proxyCount; ++i) { broadPhase->TouchProxy(f->m_proxies[i].proxyId); } } } b2Fixture* b2Body::CreateFixture(const b2FixtureDef* def) { b2Assert(m_world->IsLocked() == false); if (m_world->IsLocked() == true) { return NULL; } b2BlockAllocator* allocator = &m_world->m_blockAllocator; void* memory = allocator->Allocate(sizeof(b2Fixture)); b2Fixture* fixture = new (memory) b2Fixture; fixture->Create(allocator, this, def); if (m_flags & e_activeFlag) { b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; fixture->CreateProxies(broadPhase, m_xf); } fixture->m_next = m_fixtureList; m_fixtureList = fixture; ++m_fixtureCount; fixture->m_body = this; // Adjust mass properties if needed. if (fixture->m_density > 0.0f) { ResetMassData(); } // Let the world know we have a new fixture. This will cause new contacts // to be created at the beginning of the next time step. m_world->m_flags |= b2World::e_newFixture; return fixture; } b2Fixture* b2Body::CreateFixture(const b2Shape* shape, float32 density) { b2FixtureDef def; def.shape = shape; def.density = density; return CreateFixture(&def); } void b2Body::DestroyFixture(b2Fixture* fixture) { b2Assert(m_world->IsLocked() == false); if (m_world->IsLocked() == true) { return; } b2Assert(fixture->m_body == this); // Remove the fixture from this body's singly linked list. b2Assert(m_fixtureCount > 0); b2Fixture** node = &m_fixtureList; bool found = false; while (*node != NULL) { if (*node == fixture) { *node = fixture->m_next; found = true; break; } node = &(*node)->m_next; } // You tried to remove a shape that is not attached to this body. b2Assert(found); // Destroy any contacts associated with the fixture. b2ContactEdge* edge = m_contactList; while (edge) { b2Contact* c = edge->contact; edge = edge->next; b2Fixture* fixtureA = c->GetFixtureA(); b2Fixture* fixtureB = c->GetFixtureB(); if (fixture == fixtureA || fixture == fixtureB) { // This destroys the contact and removes it from // this body's contact list. m_world->m_contactManager.Destroy(c); } } b2BlockAllocator* allocator = &m_world->m_blockAllocator; if (m_flags & e_activeFlag) { b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; fixture->DestroyProxies(broadPhase); } fixture->Destroy(allocator); fixture->m_body = NULL; fixture->m_next = NULL; fixture->~b2Fixture(); allocator->Free(fixture, sizeof(b2Fixture)); --m_fixtureCount; // Reset the mass data. ResetMassData(); } void b2Body::ResetMassData() { // Compute mass data from shapes. Each shape has its own density. m_mass = 0.0f; m_invMass = 0.0f; m_I = 0.0f; m_invI = 0.0f; m_sweep.localCenter.SetZero(); // Static and kinematic bodies have zero mass. if (m_type == b2_staticBody || m_type == b2_kinematicBody) { m_sweep.c0 = m_xf.p; m_sweep.c = m_xf.p; m_sweep.a0 = m_sweep.a; return; } b2Assert(m_type == b2_dynamicBody); // Accumulate mass over all fixtures. b2Vec2 localCenter = b2Vec2_zero; for (b2Fixture* f = m_fixtureList; f; f = f->m_next) { if (f->m_density == 0.0f) { continue; } b2MassData massData; f->GetMassData(&massData); m_mass += massData.mass; localCenter += massData.mass * massData.center; m_I += massData.I; } // Compute center of mass. if (m_mass > 0.0f) { m_invMass = 1.0f / m_mass; localCenter *= m_invMass; } else { // Force all dynamic bodies to have a positive mass. m_mass = 1.0f; m_invMass = 1.0f; } if (m_I > 0.0f && (m_flags & e_fixedRotationFlag) == 0) { // Center the inertia about the center of mass. m_I -= m_mass * b2Dot(localCenter, localCenter); b2Assert(m_I > 0.0f); m_invI = 1.0f / m_I; } else { m_I = 0.0f; m_invI = 0.0f; } // Move center of mass. b2Vec2 oldCenter = m_sweep.c; m_sweep.localCenter = localCenter; m_sweep.c0 = m_sweep.c = b2Mul(m_xf, m_sweep.localCenter); // Update center of mass velocity. m_linearVelocity += b2Cross(m_angularVelocity, m_sweep.c - oldCenter); } void b2Body::SetMassData(const b2MassData* massData) { b2Assert(m_world->IsLocked() == false); if (m_world->IsLocked() == true) { return; } if (m_type != b2_dynamicBody) { return; } m_invMass = 0.0f; m_I = 0.0f; m_invI = 0.0f; m_mass = massData->mass; if (m_mass <= 0.0f) { m_mass = 1.0f; } m_invMass = 1.0f / m_mass; if (massData->I > 0.0f && (m_flags & b2Body::e_fixedRotationFlag) == 0) { m_I = massData->I - m_mass * b2Dot(massData->center, massData->center); b2Assert(m_I > 0.0f); m_invI = 1.0f / m_I; } // Move center of mass. b2Vec2 oldCenter = m_sweep.c; m_sweep.localCenter = massData->center; m_sweep.c0 = m_sweep.c = b2Mul(m_xf, m_sweep.localCenter); // Update center of mass velocity. m_linearVelocity += b2Cross(m_angularVelocity, m_sweep.c - oldCenter); } bool b2Body::ShouldCollide(const b2Body* other) const { // At least one body should be dynamic. if (m_type != b2_dynamicBody && other->m_type != b2_dynamicBody) { return false; } // Does a joint prevent collision? for (b2JointEdge* jn = m_jointList; jn; jn = jn->next) { if (jn->other == other) { if (jn->joint->m_collideConnected == false) { return false; } } } return true; } void b2Body::SetTransform(const b2Vec2& position, float32 angle) { b2Assert(m_world->IsLocked() == false); if (m_world->IsLocked() == true) { return; } m_xf.q.Set(angle); m_xf.p = position; m_sweep.c = b2Mul(m_xf, m_sweep.localCenter); m_sweep.a = angle; m_sweep.c0 = m_sweep.c; m_sweep.a0 = angle; b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; for (b2Fixture* f = m_fixtureList; f; f = f->m_next) { f->Synchronize(broadPhase, m_xf, m_xf); } } void b2Body::SynchronizeFixtures() { b2Transform xf1; xf1.q.Set(m_sweep.a0); xf1.p = m_sweep.c0 - b2Mul(xf1.q, m_sweep.localCenter); b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; for (b2Fixture* f = m_fixtureList; f; f = f->m_next) { f->Synchronize(broadPhase, xf1, m_xf); } } void b2Body::SetActive(bool flag) { b2Assert(m_world->IsLocked() == false); if (flag == IsActive()) { return; } if (flag) { m_flags |= e_activeFlag; // Create all proxies. b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; for (b2Fixture* f = m_fixtureList; f; f = f->m_next) { f->CreateProxies(broadPhase, m_xf); } // Contacts are created the next time step. } else { m_flags &= ~e_activeFlag; // Destroy all proxies. b2BroadPhase* broadPhase = &m_world->m_contactManager.m_broadPhase; for (b2Fixture* f = m_fixtureList; f; f = f->m_next) { f->DestroyProxies(broadPhase); } // Destroy the attached contacts. b2ContactEdge* ce = m_contactList; while (ce) { b2ContactEdge* ce0 = ce; ce = ce->next; m_world->m_contactManager.Destroy(ce0->contact); } m_contactList = NULL; } } void b2Body::SetFixedRotation(bool flag) { bool status = (m_flags & e_fixedRotationFlag) == e_fixedRotationFlag; if (status == flag) { return; } if (flag) { m_flags |= e_fixedRotationFlag; } else { m_flags &= ~e_fixedRotationFlag; } m_angularVelocity = 0.0f; ResetMassData(); } void b2Body::Dump() { int32 bodyIndex = m_islandIndex; b2Log("{\n"); b2Log(" b2BodyDef bd;\n"); b2Log(" bd.type = b2BodyType(%d);\n", m_type); b2Log(" bd.position.Set(%.15lef, %.15lef);\n", m_xf.p.x, m_xf.p.y); b2Log(" bd.angle = %.15lef;\n", m_sweep.a); b2Log(" bd.linearVelocity.Set(%.15lef, %.15lef);\n", m_linearVelocity.x, m_linearVelocity.y); b2Log(" bd.angularVelocity = %.15lef;\n", m_angularVelocity); b2Log(" bd.linearDamping = %.15lef;\n", m_linearDamping); b2Log(" bd.angularDamping = %.15lef;\n", m_angularDamping); b2Log(" bd.allowSleep = bool(%d);\n", m_flags & e_autoSleepFlag); b2Log(" bd.awake = bool(%d);\n", m_flags & e_awakeFlag); b2Log(" bd.fixedRotation = bool(%d);\n", m_flags & e_fixedRotationFlag); b2Log(" bd.bullet = bool(%d);\n", m_flags & e_bulletFlag); b2Log(" bd.active = bool(%d);\n", m_flags & e_activeFlag); b2Log(" bd.gravityScale = %.15lef;\n", m_gravityScale); b2Log(" bodies[%d] = m_world->CreateBody(&bd);\n", m_islandIndex); b2Log("\n"); for (b2Fixture* f = m_fixtureList; f; f = f->m_next) { b2Log(" {\n"); f->Dump(bodyIndex); b2Log(" }\n"); } b2Log("}\n"); } love-0.9.1/src/libraries/enet/0000755000000000000000000000000012316602463016165 5ustar00rootroot00000000000000love-0.9.1/src/libraries/enet/libenet/0000755000000000000000000000000012316602463017607 5ustar00rootroot00000000000000love-0.9.1/src/libraries/enet/libenet/packet.c0000644000000000000000000000751012316602166021225 0ustar00rootroot00000000000000/** @file packet.c @brief ENet packet management functions */ #include #define ENET_BUILDING_LIB 1 #include "enet/enet.h" /** @defgroup Packet ENet packet functions @{ */ /** Creates a packet that may be sent to a peer. @param dataContents initial contents of the packet's data; the packet's data will remain uninitialized if dataContents is NULL. @param dataLength size of the data allocated for this packet @param flags flags for this packet as described for the ENetPacket structure. @returns the packet on success, NULL on failure */ ENetPacket * enet_packet_create (const void * data, size_t dataLength, enet_uint32 flags) { ENetPacket * packet = (ENetPacket *) enet_malloc (sizeof (ENetPacket)); if (packet == NULL) return NULL; if (flags & ENET_PACKET_FLAG_NO_ALLOCATE) packet -> data = (enet_uint8 *) data; else if (dataLength <= 0) packet -> data = NULL; else { packet -> data = (enet_uint8 *) enet_malloc (dataLength); if (packet -> data == NULL) { enet_free (packet); return NULL; } if (data != NULL) memcpy (packet -> data, data, dataLength); } packet -> referenceCount = 0; packet -> flags = flags; packet -> dataLength = dataLength; packet -> freeCallback = NULL; packet -> userData = NULL; return packet; } /** Destroys the packet and deallocates its data. @param packet packet to be destroyed */ void enet_packet_destroy (ENetPacket * packet) { if (packet == NULL) return; if (packet -> freeCallback != NULL) (* packet -> freeCallback) (packet); if (! (packet -> flags & ENET_PACKET_FLAG_NO_ALLOCATE) && packet -> data != NULL) enet_free (packet -> data); enet_free (packet); } /** Attempts to resize the data in the packet to length specified in the dataLength parameter @param packet packet to resize @param dataLength new size for the packet data @returns 0 on success, < 0 on failure */ int enet_packet_resize (ENetPacket * packet, size_t dataLength) { enet_uint8 * newData; if (dataLength <= packet -> dataLength || (packet -> flags & ENET_PACKET_FLAG_NO_ALLOCATE)) { packet -> dataLength = dataLength; return 0; } newData = (enet_uint8 *) enet_malloc (dataLength); if (newData == NULL) return -1; memcpy (newData, packet -> data, packet -> dataLength); enet_free (packet -> data); packet -> data = newData; packet -> dataLength = dataLength; return 0; } static int initializedCRC32 = 0; static enet_uint32 crcTable [256]; static enet_uint32 reflect_crc (int val, int bits) { int result = 0, bit; for (bit = 0; bit < bits; bit ++) { if(val & 1) result |= 1 << (bits - 1 - bit); val >>= 1; } return result; } static void initialize_crc32 (void) { int byte; for (byte = 0; byte < 256; ++ byte) { enet_uint32 crc = reflect_crc (byte, 8) << 24; int offset; for(offset = 0; offset < 8; ++ offset) { if (crc & 0x80000000) crc = (crc << 1) ^ 0x04c11db7; else crc <<= 1; } crcTable [byte] = reflect_crc (crc, 32); } initializedCRC32 = 1; } enet_uint32 enet_crc32 (const ENetBuffer * buffers, size_t bufferCount) { enet_uint32 crc = 0xFFFFFFFF; if (! initializedCRC32) initialize_crc32 (); while (bufferCount -- > 0) { const enet_uint8 * data = (const enet_uint8 *) buffers -> data, * dataEnd = & data [buffers -> dataLength]; while (data < dataEnd) { crc = (crc >> 8) ^ crcTable [(crc & 0xFF) ^ *data++]; } ++ buffers; } return ENET_HOST_TO_NET_32 (~ crc); } /** @} */ love-0.9.1/src/libraries/enet/libenet/protocol.c0000644000000000000000000021255412316602166021625 0ustar00rootroot00000000000000/** @file protocol.c @brief ENet protocol functions */ #include #include #define ENET_BUILDING_LIB 1 #include "enet/utility.h" #include "enet/time.h" #include "enet/enet.h" static size_t commandSizes [ENET_PROTOCOL_COMMAND_COUNT] = { 0, sizeof (ENetProtocolAcknowledge), sizeof (ENetProtocolConnect), sizeof (ENetProtocolVerifyConnect), sizeof (ENetProtocolDisconnect), sizeof (ENetProtocolPing), sizeof (ENetProtocolSendReliable), sizeof (ENetProtocolSendUnreliable), sizeof (ENetProtocolSendFragment), sizeof (ENetProtocolSendUnsequenced), sizeof (ENetProtocolBandwidthLimit), sizeof (ENetProtocolThrottleConfigure), sizeof (ENetProtocolSendFragment) }; size_t enet_protocol_command_size (enet_uint8 commandNumber) { return commandSizes [commandNumber & ENET_PROTOCOL_COMMAND_MASK]; } static void enet_protocol_change_state (ENetHost * host, ENetPeer * peer, ENetPeerState state) { if (state == ENET_PEER_STATE_CONNECTED || state == ENET_PEER_STATE_DISCONNECT_LATER) enet_peer_on_connect (peer); else enet_peer_on_disconnect (peer); peer -> state = state; } static void enet_protocol_dispatch_state (ENetHost * host, ENetPeer * peer, ENetPeerState state) { enet_protocol_change_state (host, peer, state); if (! peer -> needsDispatch) { enet_list_insert (enet_list_end (& host -> dispatchQueue), & peer -> dispatchList); peer -> needsDispatch = 1; } } static int enet_protocol_dispatch_incoming_commands (ENetHost * host, ENetEvent * event) { while (! enet_list_empty (& host -> dispatchQueue)) { ENetPeer * peer = (ENetPeer *) enet_list_remove (enet_list_begin (& host -> dispatchQueue)); peer -> needsDispatch = 0; switch (peer -> state) { case ENET_PEER_STATE_CONNECTION_PENDING: case ENET_PEER_STATE_CONNECTION_SUCCEEDED: enet_protocol_change_state (host, peer, ENET_PEER_STATE_CONNECTED); event -> type = ENET_EVENT_TYPE_CONNECT; event -> peer = peer; event -> data = peer -> eventData; return 1; case ENET_PEER_STATE_ZOMBIE: host -> recalculateBandwidthLimits = 1; event -> type = ENET_EVENT_TYPE_DISCONNECT; event -> peer = peer; event -> data = peer -> eventData; enet_peer_reset (peer); return 1; case ENET_PEER_STATE_CONNECTED: if (enet_list_empty (& peer -> dispatchedCommands)) continue; event -> packet = enet_peer_receive (peer, & event -> channelID); if (event -> packet == NULL) continue; event -> type = ENET_EVENT_TYPE_RECEIVE; event -> peer = peer; if (! enet_list_empty (& peer -> dispatchedCommands)) { peer -> needsDispatch = 1; enet_list_insert (enet_list_end (& host -> dispatchQueue), & peer -> dispatchList); } return 1; default: break; } } return 0; } static void enet_protocol_notify_connect (ENetHost * host, ENetPeer * peer, ENetEvent * event) { host -> recalculateBandwidthLimits = 1; if (event != NULL) { enet_protocol_change_state (host, peer, ENET_PEER_STATE_CONNECTED); event -> type = ENET_EVENT_TYPE_CONNECT; event -> peer = peer; event -> data = peer -> eventData; } else enet_protocol_dispatch_state (host, peer, peer -> state == ENET_PEER_STATE_CONNECTING ? ENET_PEER_STATE_CONNECTION_SUCCEEDED : ENET_PEER_STATE_CONNECTION_PENDING); } static void enet_protocol_notify_disconnect (ENetHost * host, ENetPeer * peer, ENetEvent * event) { if (peer -> state >= ENET_PEER_STATE_CONNECTION_PENDING) host -> recalculateBandwidthLimits = 1; if (peer -> state != ENET_PEER_STATE_CONNECTING && peer -> state < ENET_PEER_STATE_CONNECTION_SUCCEEDED) enet_peer_reset (peer); else if (event != NULL) { event -> type = ENET_EVENT_TYPE_DISCONNECT; event -> peer = peer; event -> data = 0; enet_peer_reset (peer); } else { peer -> eventData = 0; enet_protocol_dispatch_state (host, peer, ENET_PEER_STATE_ZOMBIE); } } static void enet_protocol_remove_sent_unreliable_commands (ENetPeer * peer) { ENetOutgoingCommand * outgoingCommand; while (! enet_list_empty (& peer -> sentUnreliableCommands)) { outgoingCommand = (ENetOutgoingCommand *) enet_list_front (& peer -> sentUnreliableCommands); enet_list_remove (& outgoingCommand -> outgoingCommandList); if (outgoingCommand -> packet != NULL) { -- outgoingCommand -> packet -> referenceCount; if (outgoingCommand -> packet -> referenceCount == 0) { outgoingCommand -> packet -> flags |= ENET_PACKET_FLAG_SENT; enet_packet_destroy (outgoingCommand -> packet); } } enet_free (outgoingCommand); } } static ENetProtocolCommand enet_protocol_remove_sent_reliable_command (ENetPeer * peer, enet_uint16 reliableSequenceNumber, enet_uint8 channelID) { ENetOutgoingCommand * outgoingCommand = NULL; ENetListIterator currentCommand; ENetProtocolCommand commandNumber; int wasSent = 1; for (currentCommand = enet_list_begin (& peer -> sentReliableCommands); currentCommand != enet_list_end (& peer -> sentReliableCommands); currentCommand = enet_list_next (currentCommand)) { outgoingCommand = (ENetOutgoingCommand *) currentCommand; if (outgoingCommand -> reliableSequenceNumber == reliableSequenceNumber && outgoingCommand -> command.header.channelID == channelID) break; } if (currentCommand == enet_list_end (& peer -> sentReliableCommands)) { for (currentCommand = enet_list_begin (& peer -> outgoingReliableCommands); currentCommand != enet_list_end (& peer -> outgoingReliableCommands); currentCommand = enet_list_next (currentCommand)) { outgoingCommand = (ENetOutgoingCommand *) currentCommand; if (outgoingCommand -> sendAttempts < 1) return ENET_PROTOCOL_COMMAND_NONE; if (outgoingCommand -> reliableSequenceNumber == reliableSequenceNumber && outgoingCommand -> command.header.channelID == channelID) break; } if (currentCommand == enet_list_end (& peer -> outgoingReliableCommands)) return ENET_PROTOCOL_COMMAND_NONE; wasSent = 0; } if (outgoingCommand == NULL) return ENET_PROTOCOL_COMMAND_NONE; if (channelID < peer -> channelCount) { ENetChannel * channel = & peer -> channels [channelID]; enet_uint16 reliableWindow = reliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE; if (channel -> reliableWindows [reliableWindow] > 0) { -- channel -> reliableWindows [reliableWindow]; if (! channel -> reliableWindows [reliableWindow]) channel -> usedReliableWindows &= ~ (1 << reliableWindow); } } commandNumber = (ENetProtocolCommand) (outgoingCommand -> command.header.command & ENET_PROTOCOL_COMMAND_MASK); enet_list_remove (& outgoingCommand -> outgoingCommandList); if (outgoingCommand -> packet != NULL) { if (wasSent) peer -> reliableDataInTransit -= outgoingCommand -> fragmentLength; -- outgoingCommand -> packet -> referenceCount; if (outgoingCommand -> packet -> referenceCount == 0) { outgoingCommand -> packet -> flags |= ENET_PACKET_FLAG_SENT; enet_packet_destroy (outgoingCommand -> packet); } } enet_free (outgoingCommand); if (enet_list_empty (& peer -> sentReliableCommands)) return commandNumber; outgoingCommand = (ENetOutgoingCommand *) enet_list_front (& peer -> sentReliableCommands); peer -> nextTimeout = outgoingCommand -> sentTime + outgoingCommand -> roundTripTimeout; return commandNumber; } static ENetPeer * enet_protocol_handle_connect (ENetHost * host, ENetProtocolHeader * header, ENetProtocol * command) { enet_uint8 incomingSessionID, outgoingSessionID; enet_uint32 mtu, windowSize; ENetChannel * channel; size_t channelCount, duplicatePeers = 0; ENetPeer * currentPeer, * peer = NULL; ENetProtocol verifyCommand; channelCount = ENET_NET_TO_HOST_32 (command -> connect.channelCount); if (channelCount < ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT || channelCount > ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT) return NULL; for (currentPeer = host -> peers; currentPeer < & host -> peers [host -> peerCount]; ++ currentPeer) { if (currentPeer -> state == ENET_PEER_STATE_DISCONNECTED) { if (peer == NULL) peer = currentPeer; } else if (currentPeer -> state != ENET_PEER_STATE_CONNECTING && currentPeer -> address.host == host -> receivedAddress.host) { if (currentPeer -> address.port == host -> receivedAddress.port && currentPeer -> connectID == command -> connect.connectID) return NULL; ++ duplicatePeers; } } if (peer == NULL || duplicatePeers >= host -> duplicatePeers) return NULL; if (channelCount > host -> channelLimit) channelCount = host -> channelLimit; peer -> channels = (ENetChannel *) enet_malloc (channelCount * sizeof (ENetChannel)); if (peer -> channels == NULL) return NULL; peer -> channelCount = channelCount; peer -> state = ENET_PEER_STATE_ACKNOWLEDGING_CONNECT; peer -> connectID = command -> connect.connectID; peer -> address = host -> receivedAddress; peer -> outgoingPeerID = ENET_NET_TO_HOST_16 (command -> connect.outgoingPeerID); peer -> incomingBandwidth = ENET_NET_TO_HOST_32 (command -> connect.incomingBandwidth); peer -> outgoingBandwidth = ENET_NET_TO_HOST_32 (command -> connect.outgoingBandwidth); peer -> packetThrottleInterval = ENET_NET_TO_HOST_32 (command -> connect.packetThrottleInterval); peer -> packetThrottleAcceleration = ENET_NET_TO_HOST_32 (command -> connect.packetThrottleAcceleration); peer -> packetThrottleDeceleration = ENET_NET_TO_HOST_32 (command -> connect.packetThrottleDeceleration); peer -> eventData = ENET_NET_TO_HOST_32 (command -> connect.data); incomingSessionID = command -> connect.incomingSessionID == 0xFF ? peer -> outgoingSessionID : command -> connect.incomingSessionID; incomingSessionID = (incomingSessionID + 1) & (ENET_PROTOCOL_HEADER_SESSION_MASK >> ENET_PROTOCOL_HEADER_SESSION_SHIFT); if (incomingSessionID == peer -> outgoingSessionID) incomingSessionID = (incomingSessionID + 1) & (ENET_PROTOCOL_HEADER_SESSION_MASK >> ENET_PROTOCOL_HEADER_SESSION_SHIFT); peer -> outgoingSessionID = incomingSessionID; outgoingSessionID = command -> connect.outgoingSessionID == 0xFF ? peer -> incomingSessionID : command -> connect.outgoingSessionID; outgoingSessionID = (outgoingSessionID + 1) & (ENET_PROTOCOL_HEADER_SESSION_MASK >> ENET_PROTOCOL_HEADER_SESSION_SHIFT); if (outgoingSessionID == peer -> incomingSessionID) outgoingSessionID = (outgoingSessionID + 1) & (ENET_PROTOCOL_HEADER_SESSION_MASK >> ENET_PROTOCOL_HEADER_SESSION_SHIFT); peer -> incomingSessionID = outgoingSessionID; for (channel = peer -> channels; channel < & peer -> channels [channelCount]; ++ channel) { channel -> outgoingReliableSequenceNumber = 0; channel -> outgoingUnreliableSequenceNumber = 0; channel -> incomingReliableSequenceNumber = 0; channel -> incomingUnreliableSequenceNumber = 0; enet_list_clear (& channel -> incomingReliableCommands); enet_list_clear (& channel -> incomingUnreliableCommands); channel -> usedReliableWindows = 0; memset (channel -> reliableWindows, 0, sizeof (channel -> reliableWindows)); } mtu = ENET_NET_TO_HOST_32 (command -> connect.mtu); if (mtu < ENET_PROTOCOL_MINIMUM_MTU) mtu = ENET_PROTOCOL_MINIMUM_MTU; else if (mtu > ENET_PROTOCOL_MAXIMUM_MTU) mtu = ENET_PROTOCOL_MAXIMUM_MTU; peer -> mtu = mtu; if (host -> outgoingBandwidth == 0 && peer -> incomingBandwidth == 0) peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; else if (host -> outgoingBandwidth == 0 || peer -> incomingBandwidth == 0) peer -> windowSize = (ENET_MAX (host -> outgoingBandwidth, peer -> incomingBandwidth) / ENET_PEER_WINDOW_SIZE_SCALE) * ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; else peer -> windowSize = (ENET_MIN (host -> outgoingBandwidth, peer -> incomingBandwidth) / ENET_PEER_WINDOW_SIZE_SCALE) * ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; if (peer -> windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE) peer -> windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; else if (peer -> windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE) peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; if (host -> incomingBandwidth == 0) windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; else windowSize = (host -> incomingBandwidth / ENET_PEER_WINDOW_SIZE_SCALE) * ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; if (windowSize > ENET_NET_TO_HOST_32 (command -> connect.windowSize)) windowSize = ENET_NET_TO_HOST_32 (command -> connect.windowSize); if (windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE) windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; else if (windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE) windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; verifyCommand.header.command = ENET_PROTOCOL_COMMAND_VERIFY_CONNECT | ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE; verifyCommand.header.channelID = 0xFF; verifyCommand.verifyConnect.outgoingPeerID = ENET_HOST_TO_NET_16 (peer -> incomingPeerID); verifyCommand.verifyConnect.incomingSessionID = incomingSessionID; verifyCommand.verifyConnect.outgoingSessionID = outgoingSessionID; verifyCommand.verifyConnect.mtu = ENET_HOST_TO_NET_32 (peer -> mtu); verifyCommand.verifyConnect.windowSize = ENET_HOST_TO_NET_32 (windowSize); verifyCommand.verifyConnect.channelCount = ENET_HOST_TO_NET_32 (channelCount); verifyCommand.verifyConnect.incomingBandwidth = ENET_HOST_TO_NET_32 (host -> incomingBandwidth); verifyCommand.verifyConnect.outgoingBandwidth = ENET_HOST_TO_NET_32 (host -> outgoingBandwidth); verifyCommand.verifyConnect.packetThrottleInterval = ENET_HOST_TO_NET_32 (peer -> packetThrottleInterval); verifyCommand.verifyConnect.packetThrottleAcceleration = ENET_HOST_TO_NET_32 (peer -> packetThrottleAcceleration); verifyCommand.verifyConnect.packetThrottleDeceleration = ENET_HOST_TO_NET_32 (peer -> packetThrottleDeceleration); verifyCommand.verifyConnect.connectID = peer -> connectID; enet_peer_queue_outgoing_command (peer, & verifyCommand, NULL, 0, 0); return peer; } static int enet_protocol_handle_send_reliable (ENetHost * host, ENetPeer * peer, const ENetProtocol * command, enet_uint8 ** currentData) { ENetPacket * packet; size_t dataLength; if (command -> header.channelID >= peer -> channelCount || (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER)) return -1; dataLength = ENET_NET_TO_HOST_16 (command -> sendReliable.dataLength); * currentData += dataLength; if (dataLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || * currentData < host -> receivedData || * currentData > & host -> receivedData [host -> receivedDataLength]) return -1; packet = enet_packet_create ((const enet_uint8 *) command + sizeof (ENetProtocolSendReliable), dataLength, ENET_PACKET_FLAG_RELIABLE); if (packet == NULL || enet_peer_queue_incoming_command (peer, command, packet, 0) == NULL) return -1; return 0; } static int enet_protocol_handle_send_unsequenced (ENetHost * host, ENetPeer * peer, const ENetProtocol * command, enet_uint8 ** currentData) { ENetPacket * packet; enet_uint32 unsequencedGroup, index; size_t dataLength; if (command -> header.channelID >= peer -> channelCount || (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER)) return -1; dataLength = ENET_NET_TO_HOST_16 (command -> sendUnsequenced.dataLength); * currentData += dataLength; if (dataLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || * currentData < host -> receivedData || * currentData > & host -> receivedData [host -> receivedDataLength]) return -1; unsequencedGroup = ENET_NET_TO_HOST_16 (command -> sendUnsequenced.unsequencedGroup); index = unsequencedGroup % ENET_PEER_UNSEQUENCED_WINDOW_SIZE; if (unsequencedGroup < peer -> incomingUnsequencedGroup) unsequencedGroup += 0x10000; if (unsequencedGroup >= (enet_uint32) peer -> incomingUnsequencedGroup + ENET_PEER_FREE_UNSEQUENCED_WINDOWS * ENET_PEER_UNSEQUENCED_WINDOW_SIZE) return 0; unsequencedGroup &= 0xFFFF; if (unsequencedGroup - index != peer -> incomingUnsequencedGroup) { peer -> incomingUnsequencedGroup = unsequencedGroup - index; memset (peer -> unsequencedWindow, 0, sizeof (peer -> unsequencedWindow)); } else if (peer -> unsequencedWindow [index / 32] & (1 << (index % 32))) return 0; packet = enet_packet_create ((const enet_uint8 *) command + sizeof (ENetProtocolSendUnsequenced), dataLength, ENET_PACKET_FLAG_UNSEQUENCED); if (packet == NULL || enet_peer_queue_incoming_command (peer, command, packet, 0) == NULL) return -1; peer -> unsequencedWindow [index / 32] |= 1 << (index % 32); return 0; } static int enet_protocol_handle_send_unreliable (ENetHost * host, ENetPeer * peer, const ENetProtocol * command, enet_uint8 ** currentData) { ENetPacket * packet; size_t dataLength; if (command -> header.channelID >= peer -> channelCount || (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER)) return -1; dataLength = ENET_NET_TO_HOST_16 (command -> sendUnreliable.dataLength); * currentData += dataLength; if (dataLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || * currentData < host -> receivedData || * currentData > & host -> receivedData [host -> receivedDataLength]) return -1; packet = enet_packet_create ((const enet_uint8 *) command + sizeof (ENetProtocolSendUnreliable), dataLength, 0); if (packet == NULL || enet_peer_queue_incoming_command (peer, command, packet, 0) == NULL) return -1; return 0; } static int enet_protocol_handle_send_fragment (ENetHost * host, ENetPeer * peer, const ENetProtocol * command, enet_uint8 ** currentData) { enet_uint32 fragmentNumber, fragmentCount, fragmentOffset, fragmentLength, startSequenceNumber, totalLength; ENetChannel * channel; enet_uint16 startWindow, currentWindow; ENetListIterator currentCommand; ENetIncomingCommand * startCommand = NULL; if (command -> header.channelID >= peer -> channelCount || (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER)) return -1; fragmentLength = ENET_NET_TO_HOST_16 (command -> sendFragment.dataLength); * currentData += fragmentLength; if (fragmentLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || * currentData < host -> receivedData || * currentData > & host -> receivedData [host -> receivedDataLength]) return -1; channel = & peer -> channels [command -> header.channelID]; startSequenceNumber = ENET_NET_TO_HOST_16 (command -> sendFragment.startSequenceNumber); startWindow = startSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE; currentWindow = channel -> incomingReliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE; if (startSequenceNumber < channel -> incomingReliableSequenceNumber) startWindow += ENET_PEER_RELIABLE_WINDOWS; if (startWindow < currentWindow || startWindow >= currentWindow + ENET_PEER_FREE_RELIABLE_WINDOWS - 1) return 0; fragmentNumber = ENET_NET_TO_HOST_32 (command -> sendFragment.fragmentNumber); fragmentCount = ENET_NET_TO_HOST_32 (command -> sendFragment.fragmentCount); fragmentOffset = ENET_NET_TO_HOST_32 (command -> sendFragment.fragmentOffset); totalLength = ENET_NET_TO_HOST_32 (command -> sendFragment.totalLength); if (fragmentCount > ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT || fragmentNumber >= fragmentCount || totalLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || fragmentOffset >= totalLength || fragmentLength > totalLength - fragmentOffset) return -1; for (currentCommand = enet_list_previous (enet_list_end (& channel -> incomingReliableCommands)); currentCommand != enet_list_end (& channel -> incomingReliableCommands); currentCommand = enet_list_previous (currentCommand)) { ENetIncomingCommand * incomingCommand = (ENetIncomingCommand *) currentCommand; if (startSequenceNumber >= channel -> incomingReliableSequenceNumber) { if (incomingCommand -> reliableSequenceNumber < channel -> incomingReliableSequenceNumber) continue; } else if (incomingCommand -> reliableSequenceNumber >= channel -> incomingReliableSequenceNumber) break; if (incomingCommand -> reliableSequenceNumber <= startSequenceNumber) { if (incomingCommand -> reliableSequenceNumber < startSequenceNumber) break; if ((incomingCommand -> command.header.command & ENET_PROTOCOL_COMMAND_MASK) != ENET_PROTOCOL_COMMAND_SEND_FRAGMENT || totalLength != incomingCommand -> packet -> dataLength || fragmentCount != incomingCommand -> fragmentCount) return -1; startCommand = incomingCommand; break; } } if (startCommand == NULL) { ENetProtocol hostCommand = * command; ENetPacket * packet = enet_packet_create (NULL, totalLength, ENET_PACKET_FLAG_RELIABLE); if (packet == NULL) return -1; hostCommand.header.reliableSequenceNumber = startSequenceNumber; startCommand = enet_peer_queue_incoming_command (peer, & hostCommand, packet, fragmentCount); if (startCommand == NULL) return -1; } if ((startCommand -> fragments [fragmentNumber / 32] & (1 << (fragmentNumber % 32))) == 0) { -- startCommand -> fragmentsRemaining; startCommand -> fragments [fragmentNumber / 32] |= (1 << (fragmentNumber % 32)); if (fragmentOffset + fragmentLength > startCommand -> packet -> dataLength) fragmentLength = startCommand -> packet -> dataLength - fragmentOffset; memcpy (startCommand -> packet -> data + fragmentOffset, (enet_uint8 *) command + sizeof (ENetProtocolSendFragment), fragmentLength); if (startCommand -> fragmentsRemaining <= 0) enet_peer_dispatch_incoming_reliable_commands (peer, channel); } return 0; } static int enet_protocol_handle_send_unreliable_fragment (ENetHost * host, ENetPeer * peer, const ENetProtocol * command, enet_uint8 ** currentData) { enet_uint32 fragmentNumber, fragmentCount, fragmentOffset, fragmentLength, reliableSequenceNumber, startSequenceNumber, totalLength; enet_uint16 reliableWindow, currentWindow; ENetChannel * channel; ENetListIterator currentCommand; ENetIncomingCommand * startCommand = NULL; if (command -> header.channelID >= peer -> channelCount || (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER)) return -1; fragmentLength = ENET_NET_TO_HOST_16 (command -> sendFragment.dataLength); * currentData += fragmentLength; if (fragmentLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || * currentData < host -> receivedData || * currentData > & host -> receivedData [host -> receivedDataLength]) return -1; channel = & peer -> channels [command -> header.channelID]; reliableSequenceNumber = command -> header.reliableSequenceNumber; startSequenceNumber = ENET_NET_TO_HOST_16 (command -> sendFragment.startSequenceNumber); reliableWindow = reliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE; currentWindow = channel -> incomingReliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE; if (reliableSequenceNumber < channel -> incomingReliableSequenceNumber) reliableWindow += ENET_PEER_RELIABLE_WINDOWS; if (reliableWindow < currentWindow || reliableWindow >= currentWindow + ENET_PEER_FREE_RELIABLE_WINDOWS - 1) return 0; if (reliableSequenceNumber == channel -> incomingReliableSequenceNumber && startSequenceNumber <= channel -> incomingUnreliableSequenceNumber) return 0; fragmentNumber = ENET_NET_TO_HOST_32 (command -> sendFragment.fragmentNumber); fragmentCount = ENET_NET_TO_HOST_32 (command -> sendFragment.fragmentCount); fragmentOffset = ENET_NET_TO_HOST_32 (command -> sendFragment.fragmentOffset); totalLength = ENET_NET_TO_HOST_32 (command -> sendFragment.totalLength); if (fragmentCount > ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT || fragmentNumber >= fragmentCount || totalLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE || fragmentOffset >= totalLength || fragmentLength > totalLength - fragmentOffset) return -1; for (currentCommand = enet_list_previous (enet_list_end (& channel -> incomingUnreliableCommands)); currentCommand != enet_list_end (& channel -> incomingUnreliableCommands); currentCommand = enet_list_previous (currentCommand)) { ENetIncomingCommand * incomingCommand = (ENetIncomingCommand *) currentCommand; if (reliableSequenceNumber >= channel -> incomingReliableSequenceNumber) { if (incomingCommand -> reliableSequenceNumber < channel -> incomingReliableSequenceNumber) continue; } else if (incomingCommand -> reliableSequenceNumber >= channel -> incomingReliableSequenceNumber) break; if (incomingCommand -> reliableSequenceNumber < reliableSequenceNumber) break; if (incomingCommand -> reliableSequenceNumber > reliableSequenceNumber) continue; if (incomingCommand -> unreliableSequenceNumber <= startSequenceNumber) { if (incomingCommand -> unreliableSequenceNumber < startSequenceNumber) break; if ((incomingCommand -> command.header.command & ENET_PROTOCOL_COMMAND_MASK) != ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE_FRAGMENT || totalLength != incomingCommand -> packet -> dataLength || fragmentCount != incomingCommand -> fragmentCount) return -1; startCommand = incomingCommand; break; } } if (startCommand == NULL) { ENetPacket * packet = enet_packet_create (NULL, totalLength, ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT); if (packet == NULL) return -1; startCommand = enet_peer_queue_incoming_command (peer, command, packet, fragmentCount); if (startCommand == NULL) return -1; } if ((startCommand -> fragments [fragmentNumber / 32] & (1 << (fragmentNumber % 32))) == 0) { -- startCommand -> fragmentsRemaining; startCommand -> fragments [fragmentNumber / 32] |= (1 << (fragmentNumber % 32)); if (fragmentOffset + fragmentLength > startCommand -> packet -> dataLength) fragmentLength = startCommand -> packet -> dataLength - fragmentOffset; memcpy (startCommand -> packet -> data + fragmentOffset, (enet_uint8 *) command + sizeof (ENetProtocolSendFragment), fragmentLength); if (startCommand -> fragmentsRemaining <= 0) enet_peer_dispatch_incoming_unreliable_commands (peer, channel); } return 0; } static int enet_protocol_handle_ping (ENetHost * host, ENetPeer * peer, const ENetProtocol * command) { if (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER) return -1; return 0; } static int enet_protocol_handle_bandwidth_limit (ENetHost * host, ENetPeer * peer, const ENetProtocol * command) { if (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER) return -1; if (peer -> incomingBandwidth != 0) -- host -> bandwidthLimitedPeers; peer -> incomingBandwidth = ENET_NET_TO_HOST_32 (command -> bandwidthLimit.incomingBandwidth); peer -> outgoingBandwidth = ENET_NET_TO_HOST_32 (command -> bandwidthLimit.outgoingBandwidth); if (peer -> incomingBandwidth != 0) ++ host -> bandwidthLimitedPeers; if (peer -> incomingBandwidth == 0 && host -> outgoingBandwidth == 0) peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; else peer -> windowSize = (ENET_MIN (peer -> incomingBandwidth, host -> outgoingBandwidth) / ENET_PEER_WINDOW_SIZE_SCALE) * ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; if (peer -> windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE) peer -> windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; else if (peer -> windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE) peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; return 0; } static int enet_protocol_handle_throttle_configure (ENetHost * host, ENetPeer * peer, const ENetProtocol * command) { if (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER) return -1; peer -> packetThrottleInterval = ENET_NET_TO_HOST_32 (command -> throttleConfigure.packetThrottleInterval); peer -> packetThrottleAcceleration = ENET_NET_TO_HOST_32 (command -> throttleConfigure.packetThrottleAcceleration); peer -> packetThrottleDeceleration = ENET_NET_TO_HOST_32 (command -> throttleConfigure.packetThrottleDeceleration); return 0; } static int enet_protocol_handle_disconnect (ENetHost * host, ENetPeer * peer, const ENetProtocol * command) { if (peer -> state == ENET_PEER_STATE_DISCONNECTED || peer -> state == ENET_PEER_STATE_ZOMBIE || peer -> state == ENET_PEER_STATE_ACKNOWLEDGING_DISCONNECT) return 0; enet_peer_reset_queues (peer); if (peer -> state == ENET_PEER_STATE_CONNECTION_SUCCEEDED || peer -> state == ENET_PEER_STATE_DISCONNECTING || peer -> state == ENET_PEER_STATE_CONNECTING) enet_protocol_dispatch_state (host, peer, ENET_PEER_STATE_ZOMBIE); else if (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER) { if (peer -> state == ENET_PEER_STATE_CONNECTION_PENDING) host -> recalculateBandwidthLimits = 1; enet_peer_reset (peer); } else if (command -> header.command & ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE) enet_protocol_change_state (host, peer, ENET_PEER_STATE_ACKNOWLEDGING_DISCONNECT); else enet_protocol_dispatch_state (host, peer, ENET_PEER_STATE_ZOMBIE); if (peer -> state != ENET_PEER_STATE_DISCONNECTED) peer -> eventData = ENET_NET_TO_HOST_32 (command -> disconnect.data); return 0; } static int enet_protocol_handle_acknowledge (ENetHost * host, ENetEvent * event, ENetPeer * peer, const ENetProtocol * command) { enet_uint32 roundTripTime, receivedSentTime, receivedReliableSequenceNumber; ENetProtocolCommand commandNumber; if (peer -> state == ENET_PEER_STATE_DISCONNECTED || peer -> state == ENET_PEER_STATE_ZOMBIE) return 0; receivedSentTime = ENET_NET_TO_HOST_16 (command -> acknowledge.receivedSentTime); receivedSentTime |= host -> serviceTime & 0xFFFF0000; if ((receivedSentTime & 0x8000) > (host -> serviceTime & 0x8000)) receivedSentTime -= 0x10000; if (ENET_TIME_LESS (host -> serviceTime, receivedSentTime)) return 0; peer -> lastReceiveTime = host -> serviceTime; peer -> earliestTimeout = 0; roundTripTime = ENET_TIME_DIFFERENCE (host -> serviceTime, receivedSentTime); enet_peer_throttle (peer, roundTripTime); peer -> roundTripTimeVariance -= peer -> roundTripTimeVariance / 4; if (roundTripTime >= peer -> roundTripTime) { peer -> roundTripTime += (roundTripTime - peer -> roundTripTime) / 8; peer -> roundTripTimeVariance += (roundTripTime - peer -> roundTripTime) / 4; } else { peer -> roundTripTime -= (peer -> roundTripTime - roundTripTime) / 8; peer -> roundTripTimeVariance += (peer -> roundTripTime - roundTripTime) / 4; } if (peer -> roundTripTime < peer -> lowestRoundTripTime) peer -> lowestRoundTripTime = peer -> roundTripTime; if (peer -> roundTripTimeVariance > peer -> highestRoundTripTimeVariance) peer -> highestRoundTripTimeVariance = peer -> roundTripTimeVariance; if (peer -> packetThrottleEpoch == 0 || ENET_TIME_DIFFERENCE (host -> serviceTime, peer -> packetThrottleEpoch) >= peer -> packetThrottleInterval) { peer -> lastRoundTripTime = peer -> lowestRoundTripTime; peer -> lastRoundTripTimeVariance = peer -> highestRoundTripTimeVariance; peer -> lowestRoundTripTime = peer -> roundTripTime; peer -> highestRoundTripTimeVariance = peer -> roundTripTimeVariance; peer -> packetThrottleEpoch = host -> serviceTime; } receivedReliableSequenceNumber = ENET_NET_TO_HOST_16 (command -> acknowledge.receivedReliableSequenceNumber); commandNumber = enet_protocol_remove_sent_reliable_command (peer, receivedReliableSequenceNumber, command -> header.channelID); switch (peer -> state) { case ENET_PEER_STATE_ACKNOWLEDGING_CONNECT: if (commandNumber != ENET_PROTOCOL_COMMAND_VERIFY_CONNECT) return -1; enet_protocol_notify_connect (host, peer, event); break; case ENET_PEER_STATE_DISCONNECTING: if (commandNumber != ENET_PROTOCOL_COMMAND_DISCONNECT) return -1; enet_protocol_notify_disconnect (host, peer, event); break; case ENET_PEER_STATE_DISCONNECT_LATER: if (enet_list_empty (& peer -> outgoingReliableCommands) && enet_list_empty (& peer -> outgoingUnreliableCommands) && enet_list_empty (& peer -> sentReliableCommands)) enet_peer_disconnect (peer, peer -> eventData); break; default: break; } return 0; } static int enet_protocol_handle_verify_connect (ENetHost * host, ENetEvent * event, ENetPeer * peer, const ENetProtocol * command) { enet_uint32 mtu, windowSize; size_t channelCount; if (peer -> state != ENET_PEER_STATE_CONNECTING) return 0; channelCount = ENET_NET_TO_HOST_32 (command -> verifyConnect.channelCount); if (channelCount < ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT || channelCount > ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT || ENET_NET_TO_HOST_32 (command -> verifyConnect.packetThrottleInterval) != peer -> packetThrottleInterval || ENET_NET_TO_HOST_32 (command -> verifyConnect.packetThrottleAcceleration) != peer -> packetThrottleAcceleration || ENET_NET_TO_HOST_32 (command -> verifyConnect.packetThrottleDeceleration) != peer -> packetThrottleDeceleration || command -> verifyConnect.connectID != peer -> connectID) { peer -> eventData = 0; enet_protocol_dispatch_state (host, peer, ENET_PEER_STATE_ZOMBIE); return -1; } enet_protocol_remove_sent_reliable_command (peer, 1, 0xFF); if (channelCount < peer -> channelCount) peer -> channelCount = channelCount; peer -> outgoingPeerID = ENET_NET_TO_HOST_16 (command -> verifyConnect.outgoingPeerID); peer -> incomingSessionID = command -> verifyConnect.incomingSessionID; peer -> outgoingSessionID = command -> verifyConnect.outgoingSessionID; mtu = ENET_NET_TO_HOST_32 (command -> verifyConnect.mtu); if (mtu < ENET_PROTOCOL_MINIMUM_MTU) mtu = ENET_PROTOCOL_MINIMUM_MTU; else if (mtu > ENET_PROTOCOL_MAXIMUM_MTU) mtu = ENET_PROTOCOL_MAXIMUM_MTU; if (mtu < peer -> mtu) peer -> mtu = mtu; windowSize = ENET_NET_TO_HOST_32 (command -> verifyConnect.windowSize); if (windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE) windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; if (windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE) windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; if (windowSize < peer -> windowSize) peer -> windowSize = windowSize; peer -> incomingBandwidth = ENET_NET_TO_HOST_32 (command -> verifyConnect.incomingBandwidth); peer -> outgoingBandwidth = ENET_NET_TO_HOST_32 (command -> verifyConnect.outgoingBandwidth); enet_protocol_notify_connect (host, peer, event); return 0; } static int enet_protocol_handle_incoming_commands (ENetHost * host, ENetEvent * event) { ENetProtocolHeader * header; ENetProtocol * command; ENetPeer * peer; enet_uint8 * currentData; size_t headerSize; enet_uint16 peerID, flags; enet_uint8 sessionID; if (host -> receivedDataLength < (size_t) & ((ENetProtocolHeader *) 0) -> sentTime) return 0; header = (ENetProtocolHeader *) host -> receivedData; peerID = ENET_NET_TO_HOST_16 (header -> peerID); sessionID = (peerID & ENET_PROTOCOL_HEADER_SESSION_MASK) >> ENET_PROTOCOL_HEADER_SESSION_SHIFT; flags = peerID & ENET_PROTOCOL_HEADER_FLAG_MASK; peerID &= ~ (ENET_PROTOCOL_HEADER_FLAG_MASK | ENET_PROTOCOL_HEADER_SESSION_MASK); headerSize = (flags & ENET_PROTOCOL_HEADER_FLAG_SENT_TIME ? sizeof (ENetProtocolHeader) : (size_t) & ((ENetProtocolHeader *) 0) -> sentTime); if (host -> checksum != NULL) headerSize += sizeof (enet_uint32); if (peerID == ENET_PROTOCOL_MAXIMUM_PEER_ID) peer = NULL; else if (peerID >= host -> peerCount) return 0; else { peer = & host -> peers [peerID]; if (peer -> state == ENET_PEER_STATE_DISCONNECTED || peer -> state == ENET_PEER_STATE_ZOMBIE || ((host -> receivedAddress.host != peer -> address.host || host -> receivedAddress.port != peer -> address.port) && peer -> address.host != ENET_HOST_BROADCAST) || (peer -> outgoingPeerID < ENET_PROTOCOL_MAXIMUM_PEER_ID && sessionID != peer -> incomingSessionID)) return 0; } if (flags & ENET_PROTOCOL_HEADER_FLAG_COMPRESSED) { size_t originalSize; if (host -> compressor.context == NULL || host -> compressor.decompress == NULL) return 0; originalSize = host -> compressor.decompress (host -> compressor.context, host -> receivedData + headerSize, host -> receivedDataLength - headerSize, host -> packetData [1] + headerSize, sizeof (host -> packetData [1]) - headerSize); if (originalSize <= 0 || originalSize > sizeof (host -> packetData [1]) - headerSize) return 0; memcpy (host -> packetData [1], header, headerSize); host -> receivedData = host -> packetData [1]; host -> receivedDataLength = headerSize + originalSize; } if (host -> checksum != NULL) { enet_uint32 * checksum = (enet_uint32 *) & host -> receivedData [headerSize - sizeof (enet_uint32)], desiredChecksum = * checksum; ENetBuffer buffer; * checksum = peer != NULL ? peer -> connectID : 0; buffer.data = host -> receivedData; buffer.dataLength = host -> receivedDataLength; if (host -> checksum (& buffer, 1) != desiredChecksum) return 0; } if (peer != NULL) { peer -> address.host = host -> receivedAddress.host; peer -> address.port = host -> receivedAddress.port; peer -> incomingDataTotal += host -> receivedDataLength; } currentData = host -> receivedData + headerSize; while (currentData < & host -> receivedData [host -> receivedDataLength]) { enet_uint8 commandNumber; size_t commandSize; command = (ENetProtocol *) currentData; if (currentData + sizeof (ENetProtocolCommandHeader) > & host -> receivedData [host -> receivedDataLength]) break; commandNumber = command -> header.command & ENET_PROTOCOL_COMMAND_MASK; if (commandNumber >= ENET_PROTOCOL_COMMAND_COUNT) break; commandSize = commandSizes [commandNumber]; if (commandSize == 0 || currentData + commandSize > & host -> receivedData [host -> receivedDataLength]) break; currentData += commandSize; if (peer == NULL && commandNumber != ENET_PROTOCOL_COMMAND_CONNECT) break; command -> header.reliableSequenceNumber = ENET_NET_TO_HOST_16 (command -> header.reliableSequenceNumber); switch (commandNumber) { case ENET_PROTOCOL_COMMAND_ACKNOWLEDGE: if (enet_protocol_handle_acknowledge (host, event, peer, command)) goto commandError; break; case ENET_PROTOCOL_COMMAND_CONNECT: if (peer != NULL) goto commandError; peer = enet_protocol_handle_connect (host, header, command); if (peer == NULL) goto commandError; break; case ENET_PROTOCOL_COMMAND_VERIFY_CONNECT: if (enet_protocol_handle_verify_connect (host, event, peer, command)) goto commandError; break; case ENET_PROTOCOL_COMMAND_DISCONNECT: if (enet_protocol_handle_disconnect (host, peer, command)) goto commandError; break; case ENET_PROTOCOL_COMMAND_PING: if (enet_protocol_handle_ping (host, peer, command)) goto commandError; break; case ENET_PROTOCOL_COMMAND_SEND_RELIABLE: if (enet_protocol_handle_send_reliable (host, peer, command, & currentData)) goto commandError; break; case ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE: if (enet_protocol_handle_send_unreliable (host, peer, command, & currentData)) goto commandError; break; case ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED: if (enet_protocol_handle_send_unsequenced (host, peer, command, & currentData)) goto commandError; break; case ENET_PROTOCOL_COMMAND_SEND_FRAGMENT: if (enet_protocol_handle_send_fragment (host, peer, command, & currentData)) goto commandError; break; case ENET_PROTOCOL_COMMAND_BANDWIDTH_LIMIT: if (enet_protocol_handle_bandwidth_limit (host, peer, command)) goto commandError; break; case ENET_PROTOCOL_COMMAND_THROTTLE_CONFIGURE: if (enet_protocol_handle_throttle_configure (host, peer, command)) goto commandError; break; case ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE_FRAGMENT: if (enet_protocol_handle_send_unreliable_fragment (host, peer, command, & currentData)) goto commandError; break; default: goto commandError; } if (peer != NULL && (command -> header.command & ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE) != 0) { enet_uint16 sentTime; if (! (flags & ENET_PROTOCOL_HEADER_FLAG_SENT_TIME)) break; sentTime = ENET_NET_TO_HOST_16 (header -> sentTime); switch (peer -> state) { case ENET_PEER_STATE_DISCONNECTING: case ENET_PEER_STATE_ACKNOWLEDGING_CONNECT: case ENET_PEER_STATE_DISCONNECTED: case ENET_PEER_STATE_ZOMBIE: break; case ENET_PEER_STATE_ACKNOWLEDGING_DISCONNECT: if ((command -> header.command & ENET_PROTOCOL_COMMAND_MASK) == ENET_PROTOCOL_COMMAND_DISCONNECT) enet_peer_queue_acknowledgement (peer, command, sentTime); break; default: enet_peer_queue_acknowledgement (peer, command, sentTime); break; } } } commandError: if (event != NULL && event -> type != ENET_EVENT_TYPE_NONE) return 1; return 0; } static int enet_protocol_receive_incoming_commands (ENetHost * host, ENetEvent * event) { for (;;) { int receivedLength; ENetBuffer buffer; buffer.data = host -> packetData [0]; buffer.dataLength = sizeof (host -> packetData [0]); receivedLength = enet_socket_receive (host -> socket, & host -> receivedAddress, & buffer, 1); if (receivedLength < 0) return -1; if (receivedLength == 0) return 0; host -> receivedData = host -> packetData [0]; host -> receivedDataLength = receivedLength; host -> totalReceivedData += receivedLength; host -> totalReceivedPackets ++; if (host -> intercept != NULL) { switch (host -> intercept (host, event)) { case 1: if (event != NULL && event -> type != ENET_EVENT_TYPE_NONE) return 1; continue; case -1: return -1; default: break; } } switch (enet_protocol_handle_incoming_commands (host, event)) { case 1: return 1; case -1: return -1; default: break; } } return -1; } static void enet_protocol_send_acknowledgements (ENetHost * host, ENetPeer * peer) { ENetProtocol * command = & host -> commands [host -> commandCount]; ENetBuffer * buffer = & host -> buffers [host -> bufferCount]; ENetAcknowledgement * acknowledgement; ENetListIterator currentAcknowledgement; enet_uint16 reliableSequenceNumber; currentAcknowledgement = enet_list_begin (& peer -> acknowledgements); while (currentAcknowledgement != enet_list_end (& peer -> acknowledgements)) { if (command >= & host -> commands [sizeof (host -> commands) / sizeof (ENetProtocol)] || buffer >= & host -> buffers [sizeof (host -> buffers) / sizeof (ENetBuffer)] || peer -> mtu - host -> packetSize < sizeof (ENetProtocolAcknowledge)) { host -> continueSending = 1; break; } acknowledgement = (ENetAcknowledgement *) currentAcknowledgement; currentAcknowledgement = enet_list_next (currentAcknowledgement); buffer -> data = command; buffer -> dataLength = sizeof (ENetProtocolAcknowledge); host -> packetSize += buffer -> dataLength; reliableSequenceNumber = ENET_HOST_TO_NET_16 (acknowledgement -> command.header.reliableSequenceNumber); command -> header.command = ENET_PROTOCOL_COMMAND_ACKNOWLEDGE; command -> header.channelID = acknowledgement -> command.header.channelID; command -> header.reliableSequenceNumber = reliableSequenceNumber; command -> acknowledge.receivedReliableSequenceNumber = reliableSequenceNumber; command -> acknowledge.receivedSentTime = ENET_HOST_TO_NET_16 (acknowledgement -> sentTime); if ((acknowledgement -> command.header.command & ENET_PROTOCOL_COMMAND_MASK) == ENET_PROTOCOL_COMMAND_DISCONNECT) enet_protocol_dispatch_state (host, peer, ENET_PEER_STATE_ZOMBIE); enet_list_remove (& acknowledgement -> acknowledgementList); enet_free (acknowledgement); ++ command; ++ buffer; } host -> commandCount = command - host -> commands; host -> bufferCount = buffer - host -> buffers; } static void enet_protocol_send_unreliable_outgoing_commands (ENetHost * host, ENetPeer * peer) { ENetProtocol * command = & host -> commands [host -> commandCount]; ENetBuffer * buffer = & host -> buffers [host -> bufferCount]; ENetOutgoingCommand * outgoingCommand; ENetListIterator currentCommand; currentCommand = enet_list_begin (& peer -> outgoingUnreliableCommands); while (currentCommand != enet_list_end (& peer -> outgoingUnreliableCommands)) { size_t commandSize; outgoingCommand = (ENetOutgoingCommand *) currentCommand; commandSize = commandSizes [outgoingCommand -> command.header.command & ENET_PROTOCOL_COMMAND_MASK]; if (command >= & host -> commands [sizeof (host -> commands) / sizeof (ENetProtocol)] || buffer + 1 >= & host -> buffers [sizeof (host -> buffers) / sizeof (ENetBuffer)] || peer -> mtu - host -> packetSize < commandSize || (outgoingCommand -> packet != NULL && peer -> mtu - host -> packetSize < commandSize + outgoingCommand -> fragmentLength)) { host -> continueSending = 1; break; } currentCommand = enet_list_next (currentCommand); if (outgoingCommand -> packet != NULL && outgoingCommand -> fragmentOffset == 0) { peer -> packetThrottleCounter += ENET_PEER_PACKET_THROTTLE_COUNTER; peer -> packetThrottleCounter %= ENET_PEER_PACKET_THROTTLE_SCALE; if (peer -> packetThrottleCounter > peer -> packetThrottle) { enet_uint16 reliableSequenceNumber = outgoingCommand -> reliableSequenceNumber, unreliableSequenceNumber = outgoingCommand -> unreliableSequenceNumber; for (;;) { -- outgoingCommand -> packet -> referenceCount; if (outgoingCommand -> packet -> referenceCount == 0) enet_packet_destroy (outgoingCommand -> packet); enet_list_remove (& outgoingCommand -> outgoingCommandList); enet_free (outgoingCommand); if (currentCommand == enet_list_end (& peer -> outgoingUnreliableCommands)) break; outgoingCommand = (ENetOutgoingCommand *) currentCommand; if (outgoingCommand -> reliableSequenceNumber != reliableSequenceNumber || outgoingCommand -> unreliableSequenceNumber != unreliableSequenceNumber) break; currentCommand = enet_list_next (currentCommand); } continue; } } buffer -> data = command; buffer -> dataLength = commandSize; host -> packetSize += buffer -> dataLength; * command = outgoingCommand -> command; enet_list_remove (& outgoingCommand -> outgoingCommandList); if (outgoingCommand -> packet != NULL) { ++ buffer; buffer -> data = outgoingCommand -> packet -> data + outgoingCommand -> fragmentOffset; buffer -> dataLength = outgoingCommand -> fragmentLength; host -> packetSize += buffer -> dataLength; enet_list_insert (enet_list_end (& peer -> sentUnreliableCommands), outgoingCommand); } else enet_free (outgoingCommand); ++ command; ++ buffer; } host -> commandCount = command - host -> commands; host -> bufferCount = buffer - host -> buffers; if (peer -> state == ENET_PEER_STATE_DISCONNECT_LATER && enet_list_empty (& peer -> outgoingReliableCommands) && enet_list_empty (& peer -> outgoingUnreliableCommands) && enet_list_empty (& peer -> sentReliableCommands)) enet_peer_disconnect (peer, peer -> eventData); } static int enet_protocol_check_timeouts (ENetHost * host, ENetPeer * peer, ENetEvent * event) { ENetOutgoingCommand * outgoingCommand; ENetListIterator currentCommand, insertPosition; currentCommand = enet_list_begin (& peer -> sentReliableCommands); insertPosition = enet_list_begin (& peer -> outgoingReliableCommands); while (currentCommand != enet_list_end (& peer -> sentReliableCommands)) { outgoingCommand = (ENetOutgoingCommand *) currentCommand; currentCommand = enet_list_next (currentCommand); if (ENET_TIME_DIFFERENCE (host -> serviceTime, outgoingCommand -> sentTime) < outgoingCommand -> roundTripTimeout) continue; if (peer -> earliestTimeout == 0 || ENET_TIME_LESS (outgoingCommand -> sentTime, peer -> earliestTimeout)) peer -> earliestTimeout = outgoingCommand -> sentTime; if (peer -> earliestTimeout != 0 && (ENET_TIME_DIFFERENCE (host -> serviceTime, peer -> earliestTimeout) >= peer -> timeoutMaximum || (outgoingCommand -> roundTripTimeout >= outgoingCommand -> roundTripTimeoutLimit && ENET_TIME_DIFFERENCE (host -> serviceTime, peer -> earliestTimeout) >= peer -> timeoutMinimum))) { enet_protocol_notify_disconnect (host, peer, event); return 1; } if (outgoingCommand -> packet != NULL) peer -> reliableDataInTransit -= outgoingCommand -> fragmentLength; ++ peer -> packetsLost; outgoingCommand -> roundTripTimeout *= 2; enet_list_insert (insertPosition, enet_list_remove (& outgoingCommand -> outgoingCommandList)); if (currentCommand == enet_list_begin (& peer -> sentReliableCommands) && ! enet_list_empty (& peer -> sentReliableCommands)) { outgoingCommand = (ENetOutgoingCommand *) currentCommand; peer -> nextTimeout = outgoingCommand -> sentTime + outgoingCommand -> roundTripTimeout; } } return 0; } static int enet_protocol_send_reliable_outgoing_commands (ENetHost * host, ENetPeer * peer) { ENetProtocol * command = & host -> commands [host -> commandCount]; ENetBuffer * buffer = & host -> buffers [host -> bufferCount]; ENetOutgoingCommand * outgoingCommand; ENetListIterator currentCommand; ENetChannel *channel; enet_uint16 reliableWindow; size_t commandSize; int windowExceeded = 0, windowWrap = 0, canPing = 1; currentCommand = enet_list_begin (& peer -> outgoingReliableCommands); while (currentCommand != enet_list_end (& peer -> outgoingReliableCommands)) { outgoingCommand = (ENetOutgoingCommand *) currentCommand; channel = outgoingCommand -> command.header.channelID < peer -> channelCount ? & peer -> channels [outgoingCommand -> command.header.channelID] : NULL; reliableWindow = outgoingCommand -> reliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE; if (channel != NULL) { if (! windowWrap && outgoingCommand -> sendAttempts < 1 && ! (outgoingCommand -> reliableSequenceNumber % ENET_PEER_RELIABLE_WINDOW_SIZE) && (channel -> reliableWindows [(reliableWindow + ENET_PEER_RELIABLE_WINDOWS - 1) % ENET_PEER_RELIABLE_WINDOWS] >= ENET_PEER_RELIABLE_WINDOW_SIZE || channel -> usedReliableWindows & ((((1 << ENET_PEER_FREE_RELIABLE_WINDOWS) - 1) << reliableWindow) | (((1 << ENET_PEER_FREE_RELIABLE_WINDOWS) - 1) >> (ENET_PEER_RELIABLE_WINDOW_SIZE - reliableWindow))))) windowWrap = 1; if (windowWrap) { currentCommand = enet_list_next (currentCommand); continue; } } if (outgoingCommand -> packet != NULL) { if (! windowExceeded) { enet_uint32 windowSize = (peer -> packetThrottle * peer -> windowSize) / ENET_PEER_PACKET_THROTTLE_SCALE; if (peer -> reliableDataInTransit + outgoingCommand -> fragmentLength > ENET_MAX (windowSize, peer -> mtu)) windowExceeded = 1; } if (windowExceeded) { currentCommand = enet_list_next (currentCommand); continue; } } canPing = 0; commandSize = commandSizes [outgoingCommand -> command.header.command & ENET_PROTOCOL_COMMAND_MASK]; if (command >= & host -> commands [sizeof (host -> commands) / sizeof (ENetProtocol)] || buffer + 1 >= & host -> buffers [sizeof (host -> buffers) / sizeof (ENetBuffer)] || peer -> mtu - host -> packetSize < commandSize || (outgoingCommand -> packet != NULL && (enet_uint16) (peer -> mtu - host -> packetSize) < (enet_uint16) (commandSize + outgoingCommand -> fragmentLength))) { host -> continueSending = 1; break; } currentCommand = enet_list_next (currentCommand); if (channel != NULL && outgoingCommand -> sendAttempts < 1) { channel -> usedReliableWindows |= 1 << reliableWindow; ++ channel -> reliableWindows [reliableWindow]; } ++ outgoingCommand -> sendAttempts; if (outgoingCommand -> roundTripTimeout == 0) { outgoingCommand -> roundTripTimeout = peer -> roundTripTime + 4 * peer -> roundTripTimeVariance; outgoingCommand -> roundTripTimeoutLimit = peer -> timeoutLimit * outgoingCommand -> roundTripTimeout; } if (enet_list_empty (& peer -> sentReliableCommands)) peer -> nextTimeout = host -> serviceTime + outgoingCommand -> roundTripTimeout; enet_list_insert (enet_list_end (& peer -> sentReliableCommands), enet_list_remove (& outgoingCommand -> outgoingCommandList)); outgoingCommand -> sentTime = host -> serviceTime; buffer -> data = command; buffer -> dataLength = commandSize; host -> packetSize += buffer -> dataLength; host -> headerFlags |= ENET_PROTOCOL_HEADER_FLAG_SENT_TIME; * command = outgoingCommand -> command; if (outgoingCommand -> packet != NULL) { ++ buffer; buffer -> data = outgoingCommand -> packet -> data + outgoingCommand -> fragmentOffset; buffer -> dataLength = outgoingCommand -> fragmentLength; host -> packetSize += outgoingCommand -> fragmentLength; peer -> reliableDataInTransit += outgoingCommand -> fragmentLength; } ++ peer -> packetsSent; ++ command; ++ buffer; } host -> commandCount = command - host -> commands; host -> bufferCount = buffer - host -> buffers; return canPing; } static int enet_protocol_send_outgoing_commands (ENetHost * host, ENetEvent * event, int checkForTimeouts) { enet_uint8 headerData [sizeof (ENetProtocolHeader) + sizeof (enet_uint32)]; ENetProtocolHeader * header = (ENetProtocolHeader *) headerData; ENetPeer * currentPeer; int sentLength; size_t shouldCompress = 0; host -> continueSending = 1; while (host -> continueSending) for (host -> continueSending = 0, currentPeer = host -> peers; currentPeer < & host -> peers [host -> peerCount]; ++ currentPeer) { if (currentPeer -> state == ENET_PEER_STATE_DISCONNECTED || currentPeer -> state == ENET_PEER_STATE_ZOMBIE) continue; host -> headerFlags = 0; host -> commandCount = 0; host -> bufferCount = 1; host -> packetSize = sizeof (ENetProtocolHeader); if (! enet_list_empty (& currentPeer -> acknowledgements)) enet_protocol_send_acknowledgements (host, currentPeer); if (checkForTimeouts != 0 && ! enet_list_empty (& currentPeer -> sentReliableCommands) && ENET_TIME_GREATER_EQUAL (host -> serviceTime, currentPeer -> nextTimeout) && enet_protocol_check_timeouts (host, currentPeer, event) == 1) { if (event != NULL && event -> type != ENET_EVENT_TYPE_NONE) return 1; else continue; } if ((enet_list_empty (& currentPeer -> outgoingReliableCommands) || enet_protocol_send_reliable_outgoing_commands (host, currentPeer)) && enet_list_empty (& currentPeer -> sentReliableCommands) && ENET_TIME_DIFFERENCE (host -> serviceTime, currentPeer -> lastReceiveTime) >= currentPeer -> pingInterval && currentPeer -> mtu - host -> packetSize >= sizeof (ENetProtocolPing)) { enet_peer_ping (currentPeer); enet_protocol_send_reliable_outgoing_commands (host, currentPeer); } if (! enet_list_empty (& currentPeer -> outgoingUnreliableCommands)) enet_protocol_send_unreliable_outgoing_commands (host, currentPeer); if (host -> commandCount == 0) continue; if (currentPeer -> packetLossEpoch == 0) currentPeer -> packetLossEpoch = host -> serviceTime; else if (ENET_TIME_DIFFERENCE (host -> serviceTime, currentPeer -> packetLossEpoch) >= ENET_PEER_PACKET_LOSS_INTERVAL && currentPeer -> packetsSent > 0) { enet_uint32 packetLoss = currentPeer -> packetsLost * ENET_PEER_PACKET_LOSS_SCALE / currentPeer -> packetsSent; #ifdef ENET_DEBUG printf ("peer %u: %f%%+-%f%% packet loss, %u+-%u ms round trip time, %f%% throttle, %u/%u outgoing, %u/%u incoming\n", currentPeer -> incomingPeerID, currentPeer -> packetLoss / (float) ENET_PEER_PACKET_LOSS_SCALE, currentPeer -> packetLossVariance / (float) ENET_PEER_PACKET_LOSS_SCALE, currentPeer -> roundTripTime, currentPeer -> roundTripTimeVariance, currentPeer -> packetThrottle / (float) ENET_PEER_PACKET_THROTTLE_SCALE, enet_list_size (& currentPeer -> outgoingReliableCommands), enet_list_size (& currentPeer -> outgoingUnreliableCommands), currentPeer -> channels != NULL ? enet_list_size (& currentPeer -> channels -> incomingReliableCommands) : 0, currentPeer -> channels != NULL ? enet_list_size (& currentPeer -> channels -> incomingUnreliableCommands) : 0); #endif currentPeer -> packetLossVariance -= currentPeer -> packetLossVariance / 4; if (packetLoss >= currentPeer -> packetLoss) { currentPeer -> packetLoss += (packetLoss - currentPeer -> packetLoss) / 8; currentPeer -> packetLossVariance += (packetLoss - currentPeer -> packetLoss) / 4; } else { currentPeer -> packetLoss -= (currentPeer -> packetLoss - packetLoss) / 8; currentPeer -> packetLossVariance += (currentPeer -> packetLoss - packetLoss) / 4; } currentPeer -> packetLossEpoch = host -> serviceTime; currentPeer -> packetsSent = 0; currentPeer -> packetsLost = 0; } host -> buffers -> data = headerData; if (host -> headerFlags & ENET_PROTOCOL_HEADER_FLAG_SENT_TIME) { header -> sentTime = ENET_HOST_TO_NET_16 (host -> serviceTime & 0xFFFF); host -> buffers -> dataLength = sizeof (ENetProtocolHeader); } else host -> buffers -> dataLength = (size_t) & ((ENetProtocolHeader *) 0) -> sentTime; shouldCompress = 0; if (host -> compressor.context != NULL && host -> compressor.compress != NULL) { size_t originalSize = host -> packetSize - sizeof(ENetProtocolHeader), compressedSize = host -> compressor.compress (host -> compressor.context, & host -> buffers [1], host -> bufferCount - 1, originalSize, host -> packetData [1], originalSize); if (compressedSize > 0 && compressedSize < originalSize) { host -> headerFlags |= ENET_PROTOCOL_HEADER_FLAG_COMPRESSED; shouldCompress = compressedSize; #ifdef ENET_DEBUG_COMPRESS printf ("peer %u: compressed %u -> %u (%u%%)\n", currentPeer -> incomingPeerID, originalSize, compressedSize, (compressedSize * 100) / originalSize); #endif } } if (currentPeer -> outgoingPeerID < ENET_PROTOCOL_MAXIMUM_PEER_ID) host -> headerFlags |= currentPeer -> outgoingSessionID << ENET_PROTOCOL_HEADER_SESSION_SHIFT; header -> peerID = ENET_HOST_TO_NET_16 (currentPeer -> outgoingPeerID | host -> headerFlags); if (host -> checksum != NULL) { enet_uint32 * checksum = (enet_uint32 *) & headerData [host -> buffers -> dataLength]; * checksum = currentPeer -> outgoingPeerID < ENET_PROTOCOL_MAXIMUM_PEER_ID ? currentPeer -> connectID : 0; host -> buffers -> dataLength += sizeof (enet_uint32); * checksum = host -> checksum (host -> buffers, host -> bufferCount); } if (shouldCompress > 0) { host -> buffers [1].data = host -> packetData [1]; host -> buffers [1].dataLength = shouldCompress; host -> bufferCount = 2; } currentPeer -> lastSendTime = host -> serviceTime; sentLength = enet_socket_send (host -> socket, & currentPeer -> address, host -> buffers, host -> bufferCount); enet_protocol_remove_sent_unreliable_commands (currentPeer); if (sentLength < 0) return -1; host -> totalSentData += sentLength; host -> totalSentPackets ++; } return 0; } /** Sends any queued packets on the host specified to its designated peers. @param host host to flush @remarks this function need only be used in circumstances where one wishes to send queued packets earlier than in a call to enet_host_service(). @ingroup host */ void enet_host_flush (ENetHost * host) { host -> serviceTime = enet_time_get (); enet_protocol_send_outgoing_commands (host, NULL, 0); } /** Checks for any queued events on the host and dispatches one if available. @param host host to check for events @param event an event structure where event details will be placed if available @retval > 0 if an event was dispatched @retval 0 if no events are available @retval < 0 on failure @ingroup host */ int enet_host_check_events (ENetHost * host, ENetEvent * event) { if (event == NULL) return -1; event -> type = ENET_EVENT_TYPE_NONE; event -> peer = NULL; event -> packet = NULL; return enet_protocol_dispatch_incoming_commands (host, event); } /** Waits for events on the host specified and shuttles packets between the host and its peers. @param host host to service @param event an event structure where event details will be placed if one occurs if event == NULL then no events will be delivered @param timeout number of milliseconds that ENet should wait for events @retval > 0 if an event occurred within the specified time limit @retval 0 if no event occurred @retval < 0 on failure @remarks enet_host_service should be called fairly regularly for adequate performance @ingroup host */ int enet_host_service (ENetHost * host, ENetEvent * event, enet_uint32 timeout) { enet_uint32 waitCondition; if (event != NULL) { event -> type = ENET_EVENT_TYPE_NONE; event -> peer = NULL; event -> packet = NULL; switch (enet_protocol_dispatch_incoming_commands (host, event)) { case 1: return 1; case -1: #ifdef ENET_DEBUG perror ("Error dispatching incoming packets"); #endif return -1; default: break; } } host -> serviceTime = enet_time_get (); timeout += host -> serviceTime; do { if (ENET_TIME_DIFFERENCE (host -> serviceTime, host -> bandwidthThrottleEpoch) >= ENET_HOST_BANDWIDTH_THROTTLE_INTERVAL) enet_host_bandwidth_throttle (host); switch (enet_protocol_send_outgoing_commands (host, event, 1)) { case 1: return 1; case -1: #ifdef ENET_DEBUG perror ("Error sending outgoing packets"); #endif return -1; default: break; } switch (enet_protocol_receive_incoming_commands (host, event)) { case 1: return 1; case -1: #ifdef ENET_DEBUG perror ("Error receiving incoming packets"); #endif return -1; default: break; } switch (enet_protocol_send_outgoing_commands (host, event, 1)) { case 1: return 1; case -1: #ifdef ENET_DEBUG perror ("Error sending outgoing packets"); #endif return -1; default: break; } if (event != NULL) { switch (enet_protocol_dispatch_incoming_commands (host, event)) { case 1: return 1; case -1: #ifdef ENET_DEBUG perror ("Error dispatching incoming packets"); #endif return -1; default: break; } } do { host -> serviceTime = enet_time_get (); if (ENET_TIME_GREATER_EQUAL (host -> serviceTime, timeout)) return 0; waitCondition = ENET_SOCKET_WAIT_RECEIVE | ENET_SOCKET_WAIT_INTERRUPT; if (enet_socket_wait (host -> socket, & waitCondition, ENET_TIME_DIFFERENCE (timeout, host -> serviceTime)) != 0) return -1; } while (waitCondition & ENET_SOCKET_WAIT_INTERRUPT); host -> serviceTime = enet_time_get (); } while (waitCondition & ENET_SOCKET_WAIT_RECEIVE); return 0; } love-0.9.1/src/libraries/enet/libenet/win32.c0000644000000000000000000002310212316602166020713 0ustar00rootroot00000000000000/** @file win32.c @brief ENet Win32 system specific functions */ #ifdef _WIN32 #include #define ENET_BUILDING_LIB 1 #include "enet/enet.h" static enet_uint32 timeBase = 0; int enet_initialize (void) { WORD versionRequested = MAKEWORD (1, 1); WSADATA wsaData; if (WSAStartup (versionRequested, & wsaData)) return -1; if (LOBYTE (wsaData.wVersion) != 1|| HIBYTE (wsaData.wVersion) != 1) { WSACleanup (); return -1; } timeBeginPeriod (1); return 0; } void enet_deinitialize (void) { timeEndPeriod (1); WSACleanup (); } enet_uint32 enet_host_random_seed (void) { return (enet_uint32) timeGetTime (); } enet_uint32 enet_time_get (void) { return (enet_uint32) timeGetTime () - timeBase; } void enet_time_set (enet_uint32 newTimeBase) { timeBase = (enet_uint32) timeGetTime () - newTimeBase; } int enet_address_set_host (ENetAddress * address, const char * name) { struct hostent * hostEntry; hostEntry = gethostbyname (name); if (hostEntry == NULL || hostEntry -> h_addrtype != AF_INET) { unsigned long host = inet_addr (name); if (host == INADDR_NONE) return -1; address -> host = host; return 0; } address -> host = * (enet_uint32 *) hostEntry -> h_addr_list [0]; return 0; } int enet_address_get_host_ip (const ENetAddress * address, char * name, size_t nameLength) { char * addr = inet_ntoa (* (struct in_addr *) & address -> host); if (addr == NULL) return -1; strncpy (name, addr, nameLength); return 0; } int enet_address_get_host (const ENetAddress * address, char * name, size_t nameLength) { struct in_addr in; struct hostent * hostEntry; in.s_addr = address -> host; hostEntry = gethostbyaddr ((char *) & in, sizeof (struct in_addr), AF_INET); if (hostEntry == NULL) return enet_address_get_host_ip (address, name, nameLength); strncpy (name, hostEntry -> h_name, nameLength); return 0; } int enet_socket_bind (ENetSocket socket, const ENetAddress * address) { struct sockaddr_in sin; memset (& sin, 0, sizeof (struct sockaddr_in)); sin.sin_family = AF_INET; if (address != NULL) { sin.sin_port = ENET_HOST_TO_NET_16 (address -> port); sin.sin_addr.s_addr = address -> host; } else { sin.sin_port = 0; sin.sin_addr.s_addr = INADDR_ANY; } return bind (socket, (struct sockaddr *) & sin, sizeof (struct sockaddr_in)) == SOCKET_ERROR ? -1 : 0; } int enet_socket_get_address (ENetSocket socket, ENetAddress * address) { struct sockaddr_in sin; int sinLength = sizeof (struct sockaddr_in); if (getsockname (socket, (struct sockaddr *) & sin, & sinLength) == -1) return -1; address -> host = (enet_uint32) sin.sin_addr.s_addr; address -> port = ENET_NET_TO_HOST_16 (sin.sin_port); return 0; } int enet_socket_listen (ENetSocket socket, int backlog) { return listen (socket, backlog < 0 ? SOMAXCONN : backlog) == SOCKET_ERROR ? -1 : 0; } ENetSocket enet_socket_create (ENetSocketType type) { return socket (PF_INET, type == ENET_SOCKET_TYPE_DATAGRAM ? SOCK_DGRAM : SOCK_STREAM, 0); } int enet_socket_set_option (ENetSocket socket, ENetSocketOption option, int value) { int result = SOCKET_ERROR; switch (option) { case ENET_SOCKOPT_NONBLOCK: { u_long nonBlocking = (u_long) value; result = ioctlsocket (socket, FIONBIO, & nonBlocking); break; } case ENET_SOCKOPT_BROADCAST: result = setsockopt (socket, SOL_SOCKET, SO_BROADCAST, (char *) & value, sizeof (int)); break; case ENET_SOCKOPT_REUSEADDR: result = setsockopt (socket, SOL_SOCKET, SO_REUSEADDR, (char *) & value, sizeof (int)); break; case ENET_SOCKOPT_RCVBUF: result = setsockopt (socket, SOL_SOCKET, SO_RCVBUF, (char *) & value, sizeof (int)); break; case ENET_SOCKOPT_SNDBUF: result = setsockopt (socket, SOL_SOCKET, SO_SNDBUF, (char *) & value, sizeof (int)); break; case ENET_SOCKOPT_RCVTIMEO: result = setsockopt (socket, SOL_SOCKET, SO_RCVTIMEO, (char *) & value, sizeof (int)); break; case ENET_SOCKOPT_SNDTIMEO: result = setsockopt (socket, SOL_SOCKET, SO_SNDTIMEO, (char *) & value, sizeof (int)); break; case ENET_SOCKOPT_NODELAY: result = setsockopt (socket, IPPROTO_TCP, TCP_NODELAY, (char *) & value, sizeof (int)); break; default: break; } return result == SOCKET_ERROR ? -1 : 0; } int enet_socket_get_option (ENetSocket socket, ENetSocketOption option, int * value) { int result = SOCKET_ERROR, len; switch (option) { case ENET_SOCKOPT_ERROR: len = sizeof(int); result = getsockopt (socket, SOL_SOCKET, SO_ERROR, (char *) value, & len); break; default: break; } return result == SOCKET_ERROR ? -1 : 0; } int enet_socket_connect (ENetSocket socket, const ENetAddress * address) { struct sockaddr_in sin; int result; memset (& sin, 0, sizeof (struct sockaddr_in)); sin.sin_family = AF_INET; sin.sin_port = ENET_HOST_TO_NET_16 (address -> port); sin.sin_addr.s_addr = address -> host; result = connect (socket, (struct sockaddr *) & sin, sizeof (struct sockaddr_in)); if (result == SOCKET_ERROR && WSAGetLastError () != WSAEWOULDBLOCK) return -1; return 0; } ENetSocket enet_socket_accept (ENetSocket socket, ENetAddress * address) { SOCKET result; struct sockaddr_in sin; int sinLength = sizeof (struct sockaddr_in); result = accept (socket, address != NULL ? (struct sockaddr *) & sin : NULL, address != NULL ? & sinLength : NULL); if (result == INVALID_SOCKET) return ENET_SOCKET_NULL; if (address != NULL) { address -> host = (enet_uint32) sin.sin_addr.s_addr; address -> port = ENET_NET_TO_HOST_16 (sin.sin_port); } return result; } int enet_socket_shutdown (ENetSocket socket, ENetSocketShutdown how) { return shutdown (socket, (int) how) == SOCKET_ERROR ? -1 : 0; } void enet_socket_destroy (ENetSocket socket) { if (socket != INVALID_SOCKET) closesocket (socket); } int enet_socket_send (ENetSocket socket, const ENetAddress * address, const ENetBuffer * buffers, size_t bufferCount) { struct sockaddr_in sin; DWORD sentLength; if (address != NULL) { memset (& sin, 0, sizeof (struct sockaddr_in)); sin.sin_family = AF_INET; sin.sin_port = ENET_HOST_TO_NET_16 (address -> port); sin.sin_addr.s_addr = address -> host; } if (WSASendTo (socket, (LPWSABUF) buffers, (DWORD) bufferCount, & sentLength, 0, address != NULL ? (struct sockaddr *) & sin : NULL, address != NULL ? sizeof (struct sockaddr_in) : 0, NULL, NULL) == SOCKET_ERROR) { if (WSAGetLastError () == WSAEWOULDBLOCK) return 0; return -1; } return (int) sentLength; } int enet_socket_receive (ENetSocket socket, ENetAddress * address, ENetBuffer * buffers, size_t bufferCount) { INT sinLength = sizeof (struct sockaddr_in); DWORD flags = 0, recvLength; struct sockaddr_in sin; if (WSARecvFrom (socket, (LPWSABUF) buffers, (DWORD) bufferCount, & recvLength, & flags, address != NULL ? (struct sockaddr *) & sin : NULL, address != NULL ? & sinLength : NULL, NULL, NULL) == SOCKET_ERROR) { switch (WSAGetLastError ()) { case WSAEWOULDBLOCK: case WSAECONNRESET: return 0; } return -1; } if (flags & MSG_PARTIAL) return -1; if (address != NULL) { address -> host = (enet_uint32) sin.sin_addr.s_addr; address -> port = ENET_NET_TO_HOST_16 (sin.sin_port); } return (int) recvLength; } int enet_socketset_select (ENetSocket maxSocket, ENetSocketSet * readSet, ENetSocketSet * writeSet, enet_uint32 timeout) { struct timeval timeVal; timeVal.tv_sec = timeout / 1000; timeVal.tv_usec = (timeout % 1000) * 1000; return select (maxSocket + 1, readSet, writeSet, NULL, & timeVal); } int enet_socket_wait (ENetSocket socket, enet_uint32 * condition, enet_uint32 timeout) { fd_set readSet, writeSet; struct timeval timeVal; int selectCount; timeVal.tv_sec = timeout / 1000; timeVal.tv_usec = (timeout % 1000) * 1000; FD_ZERO (& readSet); FD_ZERO (& writeSet); if (* condition & ENET_SOCKET_WAIT_SEND) FD_SET (socket, & writeSet); if (* condition & ENET_SOCKET_WAIT_RECEIVE) FD_SET (socket, & readSet); selectCount = select (socket + 1, & readSet, & writeSet, NULL, & timeVal); if (selectCount < 0) return -1; * condition = ENET_SOCKET_WAIT_NONE; if (selectCount == 0) return 0; if (FD_ISSET (socket, & writeSet)) * condition |= ENET_SOCKET_WAIT_SEND; if (FD_ISSET (socket, & readSet)) * condition |= ENET_SOCKET_WAIT_RECEIVE; return 0; } #endif love-0.9.1/src/libraries/enet/libenet/callbacks.c0000644000000000000000000000171312316602166021674 0ustar00rootroot00000000000000/** @file callbacks.c @brief ENet callback functions */ #define ENET_BUILDING_LIB 1 #include "enet/enet.h" static ENetCallbacks callbacks = { malloc, free, abort }; int enet_initialize_with_callbacks (ENetVersion version, const ENetCallbacks * inits) { if (version < ENET_VERSION_CREATE (1, 3, 0)) return -1; if (inits -> malloc != NULL || inits -> free != NULL) { if (inits -> malloc == NULL || inits -> free == NULL) return -1; callbacks.malloc = inits -> malloc; callbacks.free = inits -> free; } if (inits -> no_memory != NULL) callbacks.no_memory = inits -> no_memory; return enet_initialize (); } ENetVersion enet_linked_version (void) { return ENET_VERSION; } void * enet_malloc (size_t size) { void * memory = callbacks.malloc (size); if (memory == NULL) callbacks.no_memory (); return memory; } void enet_free (void * memory) { callbacks.free (memory); } love-0.9.1/src/libraries/enet/libenet/list.c0000644000000000000000000000305312316602166020727 0ustar00rootroot00000000000000/** @file list.c @brief ENet linked list functions */ #define ENET_BUILDING_LIB 1 #include "enet/enet.h" /** @defgroup list ENet linked list utility functions @ingroup private @{ */ void enet_list_clear (ENetList * list) { list -> sentinel.next = & list -> sentinel; list -> sentinel.previous = & list -> sentinel; } ENetListIterator enet_list_insert (ENetListIterator position, void * data) { ENetListIterator result = (ENetListIterator) data; result -> previous = position -> previous; result -> next = position; result -> previous -> next = result; position -> previous = result; return result; } void * enet_list_remove (ENetListIterator position) { position -> previous -> next = position -> next; position -> next -> previous = position -> previous; return position; } ENetListIterator enet_list_move (ENetListIterator position, void * dataFirst, void * dataLast) { ENetListIterator first = (ENetListIterator) dataFirst, last = (ENetListIterator) dataLast; first -> previous -> next = last -> next; last -> next -> previous = first -> previous; first -> previous = position -> previous; last -> next = position; first -> previous -> next = first; position -> previous = last; return first; } size_t enet_list_size (ENetList * list) { size_t size = 0; ENetListIterator position; for (position = enet_list_begin (list); position != enet_list_end (list); position = enet_list_next (position)) ++ size; return size; } /** @} */ love-0.9.1/src/libraries/enet/libenet/include/0000755000000000000000000000000012316602462021231 5ustar00rootroot00000000000000love-0.9.1/src/libraries/enet/libenet/include/enet/0000755000000000000000000000000012316602463022165 5ustar00rootroot00000000000000love-0.9.1/src/libraries/enet/libenet/include/enet/protocol.h0000644000000000000000000001326312316602166024204 0ustar00rootroot00000000000000/** @file protocol.h @brief ENet protocol */ #ifndef __ENET_PROTOCOL_H__ #define __ENET_PROTOCOL_H__ #include "enet/types.h" enum { ENET_PROTOCOL_MINIMUM_MTU = 576, ENET_PROTOCOL_MAXIMUM_MTU = 4096, ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS = 32, ENET_PROTOCOL_MINIMUM_WINDOW_SIZE = 4096, ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE = 65536, ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT = 1, ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT = 255, ENET_PROTOCOL_MAXIMUM_PEER_ID = 0xFFF, ENET_PROTOCOL_MAXIMUM_PACKET_SIZE = 1024 * 1024 * 1024, ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT = 1024 * 1024 }; typedef enum _ENetProtocolCommand { ENET_PROTOCOL_COMMAND_NONE = 0, ENET_PROTOCOL_COMMAND_ACKNOWLEDGE = 1, ENET_PROTOCOL_COMMAND_CONNECT = 2, ENET_PROTOCOL_COMMAND_VERIFY_CONNECT = 3, ENET_PROTOCOL_COMMAND_DISCONNECT = 4, ENET_PROTOCOL_COMMAND_PING = 5, ENET_PROTOCOL_COMMAND_SEND_RELIABLE = 6, ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE = 7, ENET_PROTOCOL_COMMAND_SEND_FRAGMENT = 8, ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED = 9, ENET_PROTOCOL_COMMAND_BANDWIDTH_LIMIT = 10, ENET_PROTOCOL_COMMAND_THROTTLE_CONFIGURE = 11, ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE_FRAGMENT = 12, ENET_PROTOCOL_COMMAND_COUNT = 13, ENET_PROTOCOL_COMMAND_MASK = 0x0F } ENetProtocolCommand; typedef enum _ENetProtocolFlag { ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE = (1 << 7), ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED = (1 << 6), ENET_PROTOCOL_HEADER_FLAG_COMPRESSED = (1 << 14), ENET_PROTOCOL_HEADER_FLAG_SENT_TIME = (1 << 15), ENET_PROTOCOL_HEADER_FLAG_MASK = ENET_PROTOCOL_HEADER_FLAG_COMPRESSED | ENET_PROTOCOL_HEADER_FLAG_SENT_TIME, ENET_PROTOCOL_HEADER_SESSION_MASK = (3 << 12), ENET_PROTOCOL_HEADER_SESSION_SHIFT = 12 } ENetProtocolFlag; #ifdef _MSC_VER #pragma pack(push, 1) #define ENET_PACKED #elif defined(__GNUC__) || defined(__clang__) #define ENET_PACKED __attribute__ ((packed)) #else #define ENET_PACKED #endif typedef struct _ENetProtocolHeader { enet_uint16 peerID; enet_uint16 sentTime; } ENET_PACKED ENetProtocolHeader; typedef struct _ENetProtocolCommandHeader { enet_uint8 command; enet_uint8 channelID; enet_uint16 reliableSequenceNumber; } ENET_PACKED ENetProtocolCommandHeader; typedef struct _ENetProtocolAcknowledge { ENetProtocolCommandHeader header; enet_uint16 receivedReliableSequenceNumber; enet_uint16 receivedSentTime; } ENET_PACKED ENetProtocolAcknowledge; typedef struct _ENetProtocolConnect { ENetProtocolCommandHeader header; enet_uint16 outgoingPeerID; enet_uint8 incomingSessionID; enet_uint8 outgoingSessionID; enet_uint32 mtu; enet_uint32 windowSize; enet_uint32 channelCount; enet_uint32 incomingBandwidth; enet_uint32 outgoingBandwidth; enet_uint32 packetThrottleInterval; enet_uint32 packetThrottleAcceleration; enet_uint32 packetThrottleDeceleration; enet_uint32 connectID; enet_uint32 data; } ENET_PACKED ENetProtocolConnect; typedef struct _ENetProtocolVerifyConnect { ENetProtocolCommandHeader header; enet_uint16 outgoingPeerID; enet_uint8 incomingSessionID; enet_uint8 outgoingSessionID; enet_uint32 mtu; enet_uint32 windowSize; enet_uint32 channelCount; enet_uint32 incomingBandwidth; enet_uint32 outgoingBandwidth; enet_uint32 packetThrottleInterval; enet_uint32 packetThrottleAcceleration; enet_uint32 packetThrottleDeceleration; enet_uint32 connectID; } ENET_PACKED ENetProtocolVerifyConnect; typedef struct _ENetProtocolBandwidthLimit { ENetProtocolCommandHeader header; enet_uint32 incomingBandwidth; enet_uint32 outgoingBandwidth; } ENET_PACKED ENetProtocolBandwidthLimit; typedef struct _ENetProtocolThrottleConfigure { ENetProtocolCommandHeader header; enet_uint32 packetThrottleInterval; enet_uint32 packetThrottleAcceleration; enet_uint32 packetThrottleDeceleration; } ENET_PACKED ENetProtocolThrottleConfigure; typedef struct _ENetProtocolDisconnect { ENetProtocolCommandHeader header; enet_uint32 data; } ENET_PACKED ENetProtocolDisconnect; typedef struct _ENetProtocolPing { ENetProtocolCommandHeader header; } ENET_PACKED ENetProtocolPing; typedef struct _ENetProtocolSendReliable { ENetProtocolCommandHeader header; enet_uint16 dataLength; } ENET_PACKED ENetProtocolSendReliable; typedef struct _ENetProtocolSendUnreliable { ENetProtocolCommandHeader header; enet_uint16 unreliableSequenceNumber; enet_uint16 dataLength; } ENET_PACKED ENetProtocolSendUnreliable; typedef struct _ENetProtocolSendUnsequenced { ENetProtocolCommandHeader header; enet_uint16 unsequencedGroup; enet_uint16 dataLength; } ENET_PACKED ENetProtocolSendUnsequenced; typedef struct _ENetProtocolSendFragment { ENetProtocolCommandHeader header; enet_uint16 startSequenceNumber; enet_uint16 dataLength; enet_uint32 fragmentCount; enet_uint32 fragmentNumber; enet_uint32 totalLength; enet_uint32 fragmentOffset; } ENET_PACKED ENetProtocolSendFragment; typedef union _ENetProtocol { ENetProtocolCommandHeader header; ENetProtocolAcknowledge acknowledge; ENetProtocolConnect connect; ENetProtocolVerifyConnect verifyConnect; ENetProtocolDisconnect disconnect; ENetProtocolPing ping; ENetProtocolSendReliable sendReliable; ENetProtocolSendUnreliable sendUnreliable; ENetProtocolSendUnsequenced sendUnsequenced; ENetProtocolSendFragment sendFragment; ENetProtocolBandwidthLimit bandwidthLimit; ENetProtocolThrottleConfigure throttleConfigure; } ENET_PACKED ENetProtocol; #ifdef _MSC_VER #pragma pack(pop) #endif #endif /* __ENET_PROTOCOL_H__ */ love-0.9.1/src/libraries/enet/libenet/include/enet/enet.h0000644000000000000000000006030412316602166023274 0ustar00rootroot00000000000000/** @file enet.h @brief ENet public header file */ #ifndef __ENET_ENET_H__ #define __ENET_ENET_H__ #ifdef __cplusplus extern "C" { #endif #include #ifdef _WIN32 #include "enet/win32.h" #else #include "enet/unix.h" #endif #include "enet/types.h" #include "enet/protocol.h" #include "enet/list.h" #include "enet/callbacks.h" #define ENET_VERSION_MAJOR 1 #define ENET_VERSION_MINOR 3 #define ENET_VERSION_PATCH 11 #define ENET_VERSION_CREATE(major, minor, patch) (((major)<<16) | ((minor)<<8) | (patch)) #define ENET_VERSION_GET_MAJOR(version) (((version)>>16)&0xFF) #define ENET_VERSION_GET_MINOR(version) (((version)>>8)&0xFF) #define ENET_VERSION_GET_PATCH(version) ((version)&0xFF) #define ENET_VERSION ENET_VERSION_CREATE(ENET_VERSION_MAJOR, ENET_VERSION_MINOR, ENET_VERSION_PATCH) typedef enet_uint32 ENetVersion; struct _ENetHost; struct _ENetEvent; struct _ENetPacket; typedef enum _ENetSocketType { ENET_SOCKET_TYPE_STREAM = 1, ENET_SOCKET_TYPE_DATAGRAM = 2 } ENetSocketType; typedef enum _ENetSocketWait { ENET_SOCKET_WAIT_NONE = 0, ENET_SOCKET_WAIT_SEND = (1 << 0), ENET_SOCKET_WAIT_RECEIVE = (1 << 1), ENET_SOCKET_WAIT_INTERRUPT = (1 << 2) } ENetSocketWait; typedef enum _ENetSocketOption { ENET_SOCKOPT_NONBLOCK = 1, ENET_SOCKOPT_BROADCAST = 2, ENET_SOCKOPT_RCVBUF = 3, ENET_SOCKOPT_SNDBUF = 4, ENET_SOCKOPT_REUSEADDR = 5, ENET_SOCKOPT_RCVTIMEO = 6, ENET_SOCKOPT_SNDTIMEO = 7, ENET_SOCKOPT_ERROR = 8, ENET_SOCKOPT_NODELAY = 9 } ENetSocketOption; typedef enum _ENetSocketShutdown { ENET_SOCKET_SHUTDOWN_READ = 0, ENET_SOCKET_SHUTDOWN_WRITE = 1, ENET_SOCKET_SHUTDOWN_READ_WRITE = 2 } ENetSocketShutdown; #define ENET_HOST_ANY 0 #define ENET_HOST_BROADCAST 0xFFFFFFFFU #define ENET_PORT_ANY 0 /** * Portable internet address structure. * * The host must be specified in network byte-order, and the port must be in host * byte-order. The constant ENET_HOST_ANY may be used to specify the default * server host. The constant ENET_HOST_BROADCAST may be used to specify the * broadcast address (255.255.255.255). This makes sense for enet_host_connect, * but not for enet_host_create. Once a server responds to a broadcast, the * address is updated from ENET_HOST_BROADCAST to the server's actual IP address. */ typedef struct _ENetAddress { enet_uint32 host; enet_uint16 port; } ENetAddress; /** * Packet flag bit constants. * * The host must be specified in network byte-order, and the port must be in * host byte-order. The constant ENET_HOST_ANY may be used to specify the * default server host. @sa ENetPacket */ typedef enum _ENetPacketFlag { /** packet must be received by the target peer and resend attempts should be * made until the packet is delivered */ ENET_PACKET_FLAG_RELIABLE = (1 << 0), /** packet will not be sequenced with other packets * not supported for reliable packets */ ENET_PACKET_FLAG_UNSEQUENCED = (1 << 1), /** packet will not allocate data, and user must supply it instead */ ENET_PACKET_FLAG_NO_ALLOCATE = (1 << 2), /** packet will be fragmented using unreliable (instead of reliable) sends * if it exceeds the MTU */ ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT = (1 << 3), /** whether the packet has been sent from all queues it has been entered into */ ENET_PACKET_FLAG_SENT = (1<<8) } ENetPacketFlag; typedef void (ENET_CALLBACK * ENetPacketFreeCallback) (struct _ENetPacket *); /** * ENet packet structure. * * An ENet data packet that may be sent to or received from a peer. The shown * fields should only be read and never modified. The data field contains the * allocated data for the packet. The dataLength fields specifies the length * of the allocated data. The flags field is either 0 (specifying no flags), * or a bitwise-or of any combination of the following flags: * * ENET_PACKET_FLAG_RELIABLE - packet must be received by the target peer * and resend attempts should be made until the packet is delivered * * ENET_PACKET_FLAG_UNSEQUENCED - packet will not be sequenced with other packets * (not supported for reliable packets) * * ENET_PACKET_FLAG_NO_ALLOCATE - packet will not allocate data, and user must supply it instead @sa ENetPacketFlag */ typedef struct _ENetPacket { size_t referenceCount; /**< internal use only */ enet_uint32 flags; /**< bitwise-or of ENetPacketFlag constants */ enet_uint8 * data; /**< allocated data for packet */ size_t dataLength; /**< length of data */ ENetPacketFreeCallback freeCallback; /**< function to be called when the packet is no longer in use */ void * userData; /**< application private data, may be freely modified */ } ENetPacket; typedef struct _ENetAcknowledgement { ENetListNode acknowledgementList; enet_uint32 sentTime; ENetProtocol command; } ENetAcknowledgement; typedef struct _ENetOutgoingCommand { ENetListNode outgoingCommandList; enet_uint16 reliableSequenceNumber; enet_uint16 unreliableSequenceNumber; enet_uint32 sentTime; enet_uint32 roundTripTimeout; enet_uint32 roundTripTimeoutLimit; enet_uint32 fragmentOffset; enet_uint16 fragmentLength; enet_uint16 sendAttempts; ENetProtocol command; ENetPacket * packet; } ENetOutgoingCommand; typedef struct _ENetIncomingCommand { ENetListNode incomingCommandList; enet_uint16 reliableSequenceNumber; enet_uint16 unreliableSequenceNumber; ENetProtocol command; enet_uint32 fragmentCount; enet_uint32 fragmentsRemaining; enet_uint32 * fragments; ENetPacket * packet; } ENetIncomingCommand; typedef enum _ENetPeerState { ENET_PEER_STATE_DISCONNECTED = 0, ENET_PEER_STATE_CONNECTING = 1, ENET_PEER_STATE_ACKNOWLEDGING_CONNECT = 2, ENET_PEER_STATE_CONNECTION_PENDING = 3, ENET_PEER_STATE_CONNECTION_SUCCEEDED = 4, ENET_PEER_STATE_CONNECTED = 5, ENET_PEER_STATE_DISCONNECT_LATER = 6, ENET_PEER_STATE_DISCONNECTING = 7, ENET_PEER_STATE_ACKNOWLEDGING_DISCONNECT = 8, ENET_PEER_STATE_ZOMBIE = 9 } ENetPeerState; #ifndef ENET_BUFFER_MAXIMUM #define ENET_BUFFER_MAXIMUM (1 + 2 * ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS) #endif enum { ENET_HOST_RECEIVE_BUFFER_SIZE = 256 * 1024, ENET_HOST_SEND_BUFFER_SIZE = 256 * 1024, ENET_HOST_BANDWIDTH_THROTTLE_INTERVAL = 1000, ENET_HOST_DEFAULT_MTU = 1400, ENET_PEER_DEFAULT_ROUND_TRIP_TIME = 500, ENET_PEER_DEFAULT_PACKET_THROTTLE = 32, ENET_PEER_PACKET_THROTTLE_SCALE = 32, ENET_PEER_PACKET_THROTTLE_COUNTER = 7, ENET_PEER_PACKET_THROTTLE_ACCELERATION = 2, ENET_PEER_PACKET_THROTTLE_DECELERATION = 2, ENET_PEER_PACKET_THROTTLE_INTERVAL = 5000, ENET_PEER_PACKET_LOSS_SCALE = (1 << 16), ENET_PEER_PACKET_LOSS_INTERVAL = 10000, ENET_PEER_WINDOW_SIZE_SCALE = 64 * 1024, ENET_PEER_TIMEOUT_LIMIT = 32, ENET_PEER_TIMEOUT_MINIMUM = 5000, ENET_PEER_TIMEOUT_MAXIMUM = 30000, ENET_PEER_PING_INTERVAL = 500, ENET_PEER_UNSEQUENCED_WINDOWS = 64, ENET_PEER_UNSEQUENCED_WINDOW_SIZE = 1024, ENET_PEER_FREE_UNSEQUENCED_WINDOWS = 32, ENET_PEER_RELIABLE_WINDOWS = 16, ENET_PEER_RELIABLE_WINDOW_SIZE = 0x1000, ENET_PEER_FREE_RELIABLE_WINDOWS = 8 }; typedef struct _ENetChannel { enet_uint16 outgoingReliableSequenceNumber; enet_uint16 outgoingUnreliableSequenceNumber; enet_uint16 usedReliableWindows; enet_uint16 reliableWindows [ENET_PEER_RELIABLE_WINDOWS]; enet_uint16 incomingReliableSequenceNumber; enet_uint16 incomingUnreliableSequenceNumber; ENetList incomingReliableCommands; ENetList incomingUnreliableCommands; } ENetChannel; /** * An ENet peer which data packets may be sent or received from. * * No fields should be modified unless otherwise specified. */ typedef struct _ENetPeer { ENetListNode dispatchList; struct _ENetHost * host; enet_uint16 outgoingPeerID; enet_uint16 incomingPeerID; enet_uint32 connectID; enet_uint8 outgoingSessionID; enet_uint8 incomingSessionID; ENetAddress address; /**< Internet address of the peer */ void * data; /**< Application private data, may be freely modified */ ENetPeerState state; ENetChannel * channels; size_t channelCount; /**< Number of channels allocated for communication with peer */ enet_uint32 incomingBandwidth; /**< Downstream bandwidth of the client in bytes/second */ enet_uint32 outgoingBandwidth; /**< Upstream bandwidth of the client in bytes/second */ enet_uint32 incomingBandwidthThrottleEpoch; enet_uint32 outgoingBandwidthThrottleEpoch; enet_uint32 incomingDataTotal; enet_uint32 outgoingDataTotal; enet_uint32 lastSendTime; enet_uint32 lastReceiveTime; enet_uint32 nextTimeout; enet_uint32 earliestTimeout; enet_uint32 packetLossEpoch; enet_uint32 packetsSent; enet_uint32 packetsLost; enet_uint32 packetLoss; /**< mean packet loss of reliable packets as a ratio with respect to the constant ENET_PEER_PACKET_LOSS_SCALE */ enet_uint32 packetLossVariance; enet_uint32 packetThrottle; enet_uint32 packetThrottleLimit; enet_uint32 packetThrottleCounter; enet_uint32 packetThrottleEpoch; enet_uint32 packetThrottleAcceleration; enet_uint32 packetThrottleDeceleration; enet_uint32 packetThrottleInterval; enet_uint32 pingInterval; enet_uint32 timeoutLimit; enet_uint32 timeoutMinimum; enet_uint32 timeoutMaximum; enet_uint32 lastRoundTripTime; enet_uint32 lowestRoundTripTime; enet_uint32 lastRoundTripTimeVariance; enet_uint32 highestRoundTripTimeVariance; enet_uint32 roundTripTime; /**< mean round trip time (RTT), in milliseconds, between sending a reliable packet and receiving its acknowledgement */ enet_uint32 roundTripTimeVariance; enet_uint32 mtu; enet_uint32 windowSize; enet_uint32 reliableDataInTransit; enet_uint16 outgoingReliableSequenceNumber; ENetList acknowledgements; ENetList sentReliableCommands; ENetList sentUnreliableCommands; ENetList outgoingReliableCommands; ENetList outgoingUnreliableCommands; ENetList dispatchedCommands; int needsDispatch; enet_uint16 incomingUnsequencedGroup; enet_uint16 outgoingUnsequencedGroup; enet_uint32 unsequencedWindow [ENET_PEER_UNSEQUENCED_WINDOW_SIZE / 32]; enet_uint32 eventData; } ENetPeer; /** An ENet packet compressor for compressing UDP packets before socket sends or receives. */ typedef struct _ENetCompressor { /** Context data for the compressor. Must be non-NULL. */ void * context; /** Compresses from inBuffers[0:inBufferCount-1], containing inLimit bytes, to outData, outputting at most outLimit bytes. Should return 0 on failure. */ size_t (ENET_CALLBACK * compress) (void * context, const ENetBuffer * inBuffers, size_t inBufferCount, size_t inLimit, enet_uint8 * outData, size_t outLimit); /** Decompresses from inData, containing inLimit bytes, to outData, outputting at most outLimit bytes. Should return 0 on failure. */ size_t (ENET_CALLBACK * decompress) (void * context, const enet_uint8 * inData, size_t inLimit, enet_uint8 * outData, size_t outLimit); /** Destroys the context when compression is disabled or the host is destroyed. May be NULL. */ void (ENET_CALLBACK * destroy) (void * context); } ENetCompressor; /** Callback that computes the checksum of the data held in buffers[0:bufferCount-1] */ typedef enet_uint32 (ENET_CALLBACK * ENetChecksumCallback) (const ENetBuffer * buffers, size_t bufferCount); /** Callback for intercepting received raw UDP packets. Should return 1 to intercept, 0 to ignore, or -1 to propagate an error. */ typedef int (ENET_CALLBACK * ENetInterceptCallback) (struct _ENetHost * host, struct _ENetEvent * event); /** An ENet host for communicating with peers. * * No fields should be modified unless otherwise stated. @sa enet_host_create() @sa enet_host_destroy() @sa enet_host_connect() @sa enet_host_service() @sa enet_host_flush() @sa enet_host_broadcast() @sa enet_host_compress() @sa enet_host_compress_with_range_coder() @sa enet_host_channel_limit() @sa enet_host_bandwidth_limit() @sa enet_host_bandwidth_throttle() */ typedef struct _ENetHost { ENetSocket socket; ENetAddress address; /**< Internet address of the host */ enet_uint32 incomingBandwidth; /**< downstream bandwidth of the host */ enet_uint32 outgoingBandwidth; /**< upstream bandwidth of the host */ enet_uint32 bandwidthThrottleEpoch; enet_uint32 mtu; enet_uint32 randomSeed; int recalculateBandwidthLimits; ENetPeer * peers; /**< array of peers allocated for this host */ size_t peerCount; /**< number of peers allocated for this host */ size_t channelLimit; /**< maximum number of channels allowed for connected peers */ enet_uint32 serviceTime; ENetList dispatchQueue; int continueSending; size_t packetSize; enet_uint16 headerFlags; ENetProtocol commands [ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS]; size_t commandCount; ENetBuffer buffers [ENET_BUFFER_MAXIMUM]; size_t bufferCount; ENetChecksumCallback checksum; /**< callback the user can set to enable packet checksums for this host */ ENetCompressor compressor; enet_uint8 packetData [2][ENET_PROTOCOL_MAXIMUM_MTU]; ENetAddress receivedAddress; enet_uint8 * receivedData; size_t receivedDataLength; enet_uint32 totalSentData; /**< total data sent, user should reset to 0 as needed to prevent overflow */ enet_uint32 totalSentPackets; /**< total UDP packets sent, user should reset to 0 as needed to prevent overflow */ enet_uint32 totalReceivedData; /**< total data received, user should reset to 0 as needed to prevent overflow */ enet_uint32 totalReceivedPackets; /**< total UDP packets received, user should reset to 0 as needed to prevent overflow */ ENetInterceptCallback intercept; /**< callback the user can set to intercept received raw UDP packets */ size_t connectedPeers; size_t bandwidthLimitedPeers; size_t duplicatePeers; /**< optional number of allowed peers from duplicate IPs, defaults to ENET_PROTOCOL_MAXIMUM_PEER_ID */ } ENetHost; /** * An ENet event type, as specified in @ref ENetEvent. */ typedef enum _ENetEventType { /** no event occurred within the specified time limit */ ENET_EVENT_TYPE_NONE = 0, /** a connection request initiated by enet_host_connect has completed. * The peer field contains the peer which successfully connected. */ ENET_EVENT_TYPE_CONNECT = 1, /** a peer has disconnected. This event is generated on a successful * completion of a disconnect initiated by enet_pper_disconnect, if * a peer has timed out, or if a connection request intialized by * enet_host_connect has timed out. The peer field contains the peer * which disconnected. The data field contains user supplied data * describing the disconnection, or 0, if none is available. */ ENET_EVENT_TYPE_DISCONNECT = 2, /** a packet has been received from a peer. The peer field specifies the * peer which sent the packet. The channelID field specifies the channel * number upon which the packet was received. The packet field contains * the packet that was received; this packet must be destroyed with * enet_packet_destroy after use. */ ENET_EVENT_TYPE_RECEIVE = 3 } ENetEventType; /** * An ENet event as returned by enet_host_service(). @sa enet_host_service */ typedef struct _ENetEvent { ENetEventType type; /**< type of the event */ ENetPeer * peer; /**< peer that generated a connect, disconnect or receive event */ enet_uint8 channelID; /**< channel on the peer that generated the event, if appropriate */ enet_uint32 data; /**< data associated with the event, if appropriate */ ENetPacket * packet; /**< packet associated with the event, if appropriate */ } ENetEvent; /** @defgroup global ENet global functions @{ */ /** Initializes ENet globally. Must be called prior to using any functions in ENet. @returns 0 on success, < 0 on failure */ ENET_API int enet_initialize (void); /** Initializes ENet globally and supplies user-overridden callbacks. Must be called prior to using any functions in ENet. Do not use enet_initialize() if you use this variant. Make sure the ENetCallbacks structure is zeroed out so that any additional callbacks added in future versions will be properly ignored. @param version the constant ENET_VERSION should be supplied so ENet knows which version of ENetCallbacks struct to use @param inits user-overriden callbacks where any NULL callbacks will use ENet's defaults @returns 0 on success, < 0 on failure */ ENET_API int enet_initialize_with_callbacks (ENetVersion version, const ENetCallbacks * inits); /** Shuts down ENet globally. Should be called when a program that has initialized ENet exits. */ ENET_API void enet_deinitialize (void); /** Gives the linked version of the ENet library. @returns the version number */ ENET_API ENetVersion enet_linked_version (void); /** @} */ /** @defgroup private ENet private implementation functions */ /** Returns the wall-time in milliseconds. Its initial value is unspecified unless otherwise set. */ ENET_API enet_uint32 enet_time_get (void); /** Sets the current wall-time in milliseconds. */ ENET_API void enet_time_set (enet_uint32); /** @defgroup socket ENet socket functions @{ */ ENET_API ENetSocket enet_socket_create (ENetSocketType); ENET_API int enet_socket_bind (ENetSocket, const ENetAddress *); ENET_API int enet_socket_get_address (ENetSocket, ENetAddress *); ENET_API int enet_socket_listen (ENetSocket, int); ENET_API ENetSocket enet_socket_accept (ENetSocket, ENetAddress *); ENET_API int enet_socket_connect (ENetSocket, const ENetAddress *); ENET_API int enet_socket_send (ENetSocket, const ENetAddress *, const ENetBuffer *, size_t); ENET_API int enet_socket_receive (ENetSocket, ENetAddress *, ENetBuffer *, size_t); ENET_API int enet_socket_wait (ENetSocket, enet_uint32 *, enet_uint32); ENET_API int enet_socket_set_option (ENetSocket, ENetSocketOption, int); ENET_API int enet_socket_get_option (ENetSocket, ENetSocketOption, int *); ENET_API int enet_socket_shutdown (ENetSocket, ENetSocketShutdown); ENET_API void enet_socket_destroy (ENetSocket); ENET_API int enet_socketset_select (ENetSocket, ENetSocketSet *, ENetSocketSet *, enet_uint32); /** @} */ /** @defgroup Address ENet address functions @{ */ /** Attempts to resolve the host named by the parameter hostName and sets the host field in the address parameter if successful. @param address destination to store resolved address @param hostName host name to lookup @retval 0 on success @retval < 0 on failure @returns the address of the given hostName in address on success */ ENET_API int enet_address_set_host (ENetAddress * address, const char * hostName); /** Gives the printable form of the ip address specified in the address parameter. @param address address printed @param hostName destination for name, must not be NULL @param nameLength maximum length of hostName. @returns the null-terminated name of the host in hostName on success @retval 0 on success @retval < 0 on failure */ ENET_API int enet_address_get_host_ip (const ENetAddress * address, char * hostName, size_t nameLength); /** Attempts to do a reverse lookup of the host field in the address parameter. @param address address used for reverse lookup @param hostName destination for name, must not be NULL @param nameLength maximum length of hostName. @returns the null-terminated name of the host in hostName on success @retval 0 on success @retval < 0 on failure */ ENET_API int enet_address_get_host (const ENetAddress * address, char * hostName, size_t nameLength); /** @} */ ENET_API ENetPacket * enet_packet_create (const void *, size_t, enet_uint32); ENET_API void enet_packet_destroy (ENetPacket *); ENET_API int enet_packet_resize (ENetPacket *, size_t); ENET_API enet_uint32 enet_crc32 (const ENetBuffer *, size_t); ENET_API ENetHost * enet_host_create (const ENetAddress *, size_t, size_t, enet_uint32, enet_uint32); ENET_API void enet_host_destroy (ENetHost *); ENET_API ENetPeer * enet_host_connect (ENetHost *, const ENetAddress *, size_t, enet_uint32); ENET_API int enet_host_check_events (ENetHost *, ENetEvent *); ENET_API int enet_host_service (ENetHost *, ENetEvent *, enet_uint32); ENET_API void enet_host_flush (ENetHost *); ENET_API void enet_host_broadcast (ENetHost *, enet_uint8, ENetPacket *); ENET_API void enet_host_compress (ENetHost *, const ENetCompressor *); ENET_API int enet_host_compress_with_range_coder (ENetHost * host); ENET_API void enet_host_channel_limit (ENetHost *, size_t); ENET_API void enet_host_bandwidth_limit (ENetHost *, enet_uint32, enet_uint32); extern void enet_host_bandwidth_throttle (ENetHost *); extern enet_uint32 enet_host_random_seed (void); ENET_API int enet_peer_send (ENetPeer *, enet_uint8, ENetPacket *); ENET_API ENetPacket * enet_peer_receive (ENetPeer *, enet_uint8 * channelID); ENET_API void enet_peer_ping (ENetPeer *); ENET_API void enet_peer_ping_interval (ENetPeer *, enet_uint32); ENET_API void enet_peer_timeout (ENetPeer *, enet_uint32, enet_uint32, enet_uint32); ENET_API void enet_peer_reset (ENetPeer *); ENET_API void enet_peer_disconnect (ENetPeer *, enet_uint32); ENET_API void enet_peer_disconnect_now (ENetPeer *, enet_uint32); ENET_API void enet_peer_disconnect_later (ENetPeer *, enet_uint32); ENET_API void enet_peer_throttle_configure (ENetPeer *, enet_uint32, enet_uint32, enet_uint32); extern int enet_peer_throttle (ENetPeer *, enet_uint32); extern void enet_peer_reset_queues (ENetPeer *); extern void enet_peer_setup_outgoing_command (ENetPeer *, ENetOutgoingCommand *); extern ENetOutgoingCommand * enet_peer_queue_outgoing_command (ENetPeer *, const ENetProtocol *, ENetPacket *, enet_uint32, enet_uint16); extern ENetIncomingCommand * enet_peer_queue_incoming_command (ENetPeer *, const ENetProtocol *, ENetPacket *, enet_uint32); extern ENetAcknowledgement * enet_peer_queue_acknowledgement (ENetPeer *, const ENetProtocol *, enet_uint16); extern void enet_peer_dispatch_incoming_unreliable_commands (ENetPeer *, ENetChannel *); extern void enet_peer_dispatch_incoming_reliable_commands (ENetPeer *, ENetChannel *); extern void enet_peer_on_connect (ENetPeer *); extern void enet_peer_on_disconnect (ENetPeer *); ENET_API void * enet_range_coder_create (void); ENET_API void enet_range_coder_destroy (void *); ENET_API size_t enet_range_coder_compress (void *, const ENetBuffer *, size_t, size_t, enet_uint8 *, size_t); ENET_API size_t enet_range_coder_decompress (void *, const enet_uint8 *, size_t, enet_uint8 *, size_t); extern size_t enet_protocol_command_size (enet_uint8); #ifdef __cplusplus } #endif #endif /* __ENET_ENET_H__ */ love-0.9.1/src/libraries/enet/libenet/include/enet/callbacks.h0000644000000000000000000000101212316602166024247 0ustar00rootroot00000000000000/** @file callbacks.h @brief ENet callbacks */ #ifndef __ENET_CALLBACKS_H__ #define __ENET_CALLBACKS_H__ #include typedef struct _ENetCallbacks { void * (ENET_CALLBACK * malloc) (size_t size); void (ENET_CALLBACK * free) (void * memory); void (ENET_CALLBACK * no_memory) (void); } ENetCallbacks; /** @defgroup callbacks ENet internal callbacks @{ @ingroup private */ extern void * enet_malloc (size_t); extern void enet_free (void *); /** @} */ #endif /* __ENET_CALLBACKS_H__ */ love-0.9.1/src/libraries/enet/libenet/include/enet/list.h0000644000000000000000000000211312316602166023306 0ustar00rootroot00000000000000/** @file list.h @brief ENet list management */ #ifndef __ENET_LIST_H__ #define __ENET_LIST_H__ #include typedef struct _ENetListNode { struct _ENetListNode * next; struct _ENetListNode * previous; } ENetListNode; typedef ENetListNode * ENetListIterator; typedef struct _ENetList { ENetListNode sentinel; } ENetList; extern void enet_list_clear (ENetList *); extern ENetListIterator enet_list_insert (ENetListIterator, void *); extern void * enet_list_remove (ENetListIterator); extern ENetListIterator enet_list_move (ENetListIterator, void *, void *); extern size_t enet_list_size (ENetList *); #define enet_list_begin(list) ((list) -> sentinel.next) #define enet_list_end(list) (& (list) -> sentinel) #define enet_list_empty(list) (enet_list_begin (list) == enet_list_end (list)) #define enet_list_next(iterator) ((iterator) -> next) #define enet_list_previous(iterator) ((iterator) -> previous) #define enet_list_front(list) ((void *) (list) -> sentinel.next) #define enet_list_back(list) ((void *) (list) -> sentinel.previous) #endif /* __ENET_LIST_H__ */ love-0.9.1/src/libraries/enet/libenet/include/enet/time.h0000644000000000000000000000102212316602166023267 0ustar00rootroot00000000000000/** @file time.h @brief ENet time constants and macros */ #ifndef __ENET_TIME_H__ #define __ENET_TIME_H__ #define ENET_TIME_OVERFLOW 86400000 #define ENET_TIME_LESS(a, b) ((a) - (b) >= ENET_TIME_OVERFLOW) #define ENET_TIME_GREATER(a, b) ((b) - (a) >= ENET_TIME_OVERFLOW) #define ENET_TIME_LESS_EQUAL(a, b) (! ENET_TIME_GREATER (a, b)) #define ENET_TIME_GREATER_EQUAL(a, b) (! ENET_TIME_LESS (a, b)) #define ENET_TIME_DIFFERENCE(a, b) ((a) - (b) >= ENET_TIME_OVERFLOW ? (b) - (a) : (a) - (b)) #endif /* __ENET_TIME_H__ */ love-0.9.1/src/libraries/enet/libenet/include/enet/types.h0000644000000000000000000000053312316602166023503 0ustar00rootroot00000000000000/** @file types.h @brief type definitions for ENet */ #ifndef __ENET_TYPES_H__ #define __ENET_TYPES_H__ typedef unsigned char enet_uint8; /**< unsigned 8-bit type */ typedef unsigned short enet_uint16; /**< unsigned 16-bit type */ typedef unsigned int enet_uint32; /**< unsigned 32-bit type */ #endif /* __ENET_TYPES_H__ */ love-0.9.1/src/libraries/enet/libenet/include/enet/utility.h0000644000000000000000000000035512316602166024044 0ustar00rootroot00000000000000/** @file utility.h @brief ENet utility header */ #ifndef __ENET_UTILITY_H__ #define __ENET_UTILITY_H__ #define ENET_MAX(x, y) ((x) > (y) ? (x) : (y)) #define ENET_MIN(x, y) ((x) < (y) ? (x) : (y)) #endif /* __ENET_UTILITY_H__ */ love-0.9.1/src/libraries/enet/libenet/include/enet/unix.h0000644000000000000000000000245312316602166023325 0ustar00rootroot00000000000000/** @file unix.h @brief ENet Unix header */ #ifndef __ENET_UNIX_H__ #define __ENET_UNIX_H__ #include #include #include #include #include #include #ifdef MSG_MAXIOVLEN #define ENET_BUFFER_MAXIMUM MSG_MAXIOVLEN #endif typedef int ENetSocket; #define ENET_SOCKET_NULL -1 #define ENET_HOST_TO_NET_16(value) (htons (value)) /**< macro that converts host to net byte-order of a 16-bit value */ #define ENET_HOST_TO_NET_32(value) (htonl (value)) /**< macro that converts host to net byte-order of a 32-bit value */ #define ENET_NET_TO_HOST_16(value) (ntohs (value)) /**< macro that converts net to host byte-order of a 16-bit value */ #define ENET_NET_TO_HOST_32(value) (ntohl (value)) /**< macro that converts net to host byte-order of a 32-bit value */ typedef struct { void * data; size_t dataLength; } ENetBuffer; #define ENET_CALLBACK #define ENET_API extern typedef fd_set ENetSocketSet; #define ENET_SOCKETSET_EMPTY(sockset) FD_ZERO (& (sockset)) #define ENET_SOCKETSET_ADD(sockset, socket) FD_SET (socket, & (sockset)) #define ENET_SOCKETSET_REMOVE(sockset, socket) FD_CLR (socket, & (sockset)) #define ENET_SOCKETSET_CHECK(sockset, socket) FD_ISSET (socket, & (sockset)) #endif /* __ENET_UNIX_H__ */ love-0.9.1/src/libraries/enet/libenet/include/enet/win32.h0000644000000000000000000000272612316602166023307 0ustar00rootroot00000000000000/** @file win32.h @brief ENet Win32 header */ #ifndef __ENET_WIN32_H__ #define __ENET_WIN32_H__ #ifdef _MSC_VER #ifdef ENET_BUILDING_LIB #pragma warning (disable: 4996) // 'strncpy' was declared deprecated #pragma warning (disable: 4267) // size_t to int conversion #pragma warning (disable: 4244) // 64bit to 32bit int #pragma warning (disable: 4018) // signed/unsigned mismatch #pragma warning (disable: 4146) // unary minus operator applied to unsigned type #endif #endif #include #include typedef SOCKET ENetSocket; #define ENET_SOCKET_NULL INVALID_SOCKET #define ENET_HOST_TO_NET_16(value) (htons (value)) #define ENET_HOST_TO_NET_32(value) (htonl (value)) #define ENET_NET_TO_HOST_16(value) (ntohs (value)) #define ENET_NET_TO_HOST_32(value) (ntohl (value)) typedef struct { size_t dataLength; void * data; } ENetBuffer; #define ENET_CALLBACK __cdecl #ifdef ENET_DLL #ifdef ENET_BUILDING_LIB #define ENET_API __declspec( dllexport ) #else #define ENET_API __declspec( dllimport ) #endif /* ENET_BUILDING_LIB */ #else /* !ENET_DLL */ #define ENET_API extern #endif /* ENET_DLL */ typedef fd_set ENetSocketSet; #define ENET_SOCKETSET_EMPTY(sockset) FD_ZERO (& (sockset)) #define ENET_SOCKETSET_ADD(sockset, socket) FD_SET (socket, & (sockset)) #define ENET_SOCKETSET_REMOVE(sockset, socket) FD_CLR (socket, & (sockset)) #define ENET_SOCKETSET_CHECK(sockset, socket) FD_ISSET (socket, & (sockset)) #endif /* __ENET_WIN32_H__ */ love-0.9.1/src/libraries/enet/libenet/compress.c0000644000000000000000000005144612316602166021620 0ustar00rootroot00000000000000/** @file compress.c @brief An adaptive order-2 PPM range coder */ #define ENET_BUILDING_LIB 1 #include #include "enet/enet.h" typedef struct _ENetSymbol { /* binary indexed tree of symbols */ enet_uint8 value; enet_uint8 count; enet_uint16 under; enet_uint16 left, right; /* context defined by this symbol */ enet_uint16 symbols; enet_uint16 escapes; enet_uint16 total; enet_uint16 parent; } ENetSymbol; /* adaptation constants tuned aggressively for small packet sizes rather than large file compression */ enum { ENET_RANGE_CODER_TOP = 1<<24, ENET_RANGE_CODER_BOTTOM = 1<<16, ENET_CONTEXT_SYMBOL_DELTA = 3, ENET_CONTEXT_SYMBOL_MINIMUM = 1, ENET_CONTEXT_ESCAPE_MINIMUM = 1, ENET_SUBCONTEXT_ORDER = 2, ENET_SUBCONTEXT_SYMBOL_DELTA = 2, ENET_SUBCONTEXT_ESCAPE_DELTA = 5 }; /* context exclusion roughly halves compression speed, so disable for now */ #undef ENET_CONTEXT_EXCLUSION typedef struct _ENetRangeCoder { /* only allocate enough symbols for reasonable MTUs, would need to be larger for large file compression */ ENetSymbol symbols[4096]; } ENetRangeCoder; void * enet_range_coder_create (void) { ENetRangeCoder * rangeCoder = (ENetRangeCoder *) enet_malloc (sizeof (ENetRangeCoder)); if (rangeCoder == NULL) return NULL; return rangeCoder; } void enet_range_coder_destroy (void * context) { ENetRangeCoder * rangeCoder = (ENetRangeCoder *) context; if (rangeCoder == NULL) return; enet_free (rangeCoder); } #define ENET_SYMBOL_CREATE(symbol, value_, count_) \ { \ symbol = & rangeCoder -> symbols [nextSymbol ++]; \ symbol -> value = value_; \ symbol -> count = count_; \ symbol -> under = count_; \ symbol -> left = 0; \ symbol -> right = 0; \ symbol -> symbols = 0; \ symbol -> escapes = 0; \ symbol -> total = 0; \ symbol -> parent = 0; \ } #define ENET_CONTEXT_CREATE(context, escapes_, minimum) \ { \ ENET_SYMBOL_CREATE (context, 0, 0); \ (context) -> escapes = escapes_; \ (context) -> total = escapes_ + 256*minimum; \ (context) -> symbols = 0; \ } static enet_uint16 enet_symbol_rescale (ENetSymbol * symbol) { enet_uint16 total = 0; for (;;) { symbol -> count -= symbol->count >> 1; symbol -> under = symbol -> count; if (symbol -> left) symbol -> under += enet_symbol_rescale (symbol + symbol -> left); total += symbol -> under; if (! symbol -> right) break; symbol += symbol -> right; } return total; } #define ENET_CONTEXT_RESCALE(context, minimum) \ { \ (context) -> total = (context) -> symbols ? enet_symbol_rescale ((context) + (context) -> symbols) : 0; \ (context) -> escapes -= (context) -> escapes >> 1; \ (context) -> total += (context) -> escapes + 256*minimum; \ } #define ENET_RANGE_CODER_OUTPUT(value) \ { \ if (outData >= outEnd) \ return 0; \ * outData ++ = value; \ } #define ENET_RANGE_CODER_ENCODE(under, count, total) \ { \ encodeRange /= (total); \ encodeLow += (under) * encodeRange; \ encodeRange *= (count); \ for (;;) \ { \ if((encodeLow ^ (encodeLow + encodeRange)) >= ENET_RANGE_CODER_TOP) \ { \ if(encodeRange >= ENET_RANGE_CODER_BOTTOM) break; \ encodeRange = -encodeLow & (ENET_RANGE_CODER_BOTTOM - 1); \ } \ ENET_RANGE_CODER_OUTPUT (encodeLow >> 24); \ encodeRange <<= 8; \ encodeLow <<= 8; \ } \ } #define ENET_RANGE_CODER_FLUSH \ { \ while (encodeLow) \ { \ ENET_RANGE_CODER_OUTPUT (encodeLow >> 24); \ encodeLow <<= 8; \ } \ } #define ENET_RANGE_CODER_FREE_SYMBOLS \ { \ if (nextSymbol >= sizeof (rangeCoder -> symbols) / sizeof (ENetSymbol) - ENET_SUBCONTEXT_ORDER ) \ { \ nextSymbol = 0; \ ENET_CONTEXT_CREATE (root, ENET_CONTEXT_ESCAPE_MINIMUM, ENET_CONTEXT_SYMBOL_MINIMUM); \ predicted = 0; \ order = 0; \ } \ } #define ENET_CONTEXT_ENCODE(context, symbol_, value_, under_, count_, update, minimum) \ { \ under_ = value*minimum; \ count_ = minimum; \ if (! (context) -> symbols) \ { \ ENET_SYMBOL_CREATE (symbol_, value_, update); \ (context) -> symbols = symbol_ - (context); \ } \ else \ { \ ENetSymbol * node = (context) + (context) -> symbols; \ for (;;) \ { \ if (value_ < node -> value) \ { \ node -> under += update; \ if (node -> left) { node += node -> left; continue; } \ ENET_SYMBOL_CREATE (symbol_, value_, update); \ node -> left = symbol_ - node; \ } \ else \ if (value_ > node -> value) \ { \ under_ += node -> under; \ if (node -> right) { node += node -> right; continue; } \ ENET_SYMBOL_CREATE (symbol_, value_, update); \ node -> right = symbol_ - node; \ } \ else \ { \ count_ += node -> count; \ under_ += node -> under - node -> count; \ node -> under += update; \ node -> count += update; \ symbol_ = node; \ } \ break; \ } \ } \ } #ifdef ENET_CONTEXT_EXCLUSION static const ENetSymbol emptyContext = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; #define ENET_CONTEXT_WALK(context, body) \ { \ const ENetSymbol * node = (context) + (context) -> symbols; \ const ENetSymbol * stack [256]; \ size_t stackSize = 0; \ while (node -> left) \ { \ stack [stackSize ++] = node; \ node += node -> left; \ } \ for (;;) \ { \ body; \ if (node -> right) \ { \ node += node -> right; \ while (node -> left) \ { \ stack [stackSize ++] = node; \ node += node -> left; \ } \ } \ else \ if (stackSize <= 0) \ break; \ else \ node = stack [-- stackSize]; \ } \ } #define ENET_CONTEXT_ENCODE_EXCLUDE(context, value_, under, total, minimum) \ ENET_CONTEXT_WALK(context, { \ if (node -> value != value_) \ { \ enet_uint16 parentCount = rangeCoder -> symbols [node -> parent].count + minimum; \ if (node -> value < value_) \ under -= parentCount; \ total -= parentCount; \ } \ }) #endif size_t enet_range_coder_compress (void * context, const ENetBuffer * inBuffers, size_t inBufferCount, size_t inLimit, enet_uint8 * outData, size_t outLimit) { ENetRangeCoder * rangeCoder = (ENetRangeCoder *) context; enet_uint8 * outStart = outData, * outEnd = & outData [outLimit]; const enet_uint8 * inData, * inEnd; enet_uint32 encodeLow = 0, encodeRange = ~0; ENetSymbol * root; enet_uint16 predicted = 0; size_t order = 0, nextSymbol = 0; if (rangeCoder == NULL || inBufferCount <= 0 || inLimit <= 0) return 0; inData = (const enet_uint8 *) inBuffers -> data; inEnd = & inData [inBuffers -> dataLength]; inBuffers ++; inBufferCount --; ENET_CONTEXT_CREATE (root, ENET_CONTEXT_ESCAPE_MINIMUM, ENET_CONTEXT_SYMBOL_MINIMUM); for (;;) { ENetSymbol * subcontext, * symbol; #ifdef ENET_CONTEXT_EXCLUSION const ENetSymbol * childContext = & emptyContext; #endif enet_uint8 value; enet_uint16 count, under, * parent = & predicted, total; if (inData >= inEnd) { if (inBufferCount <= 0) break; inData = (const enet_uint8 *) inBuffers -> data; inEnd = & inData [inBuffers -> dataLength]; inBuffers ++; inBufferCount --; } value = * inData ++; for (subcontext = & rangeCoder -> symbols [predicted]; subcontext != root; #ifdef ENET_CONTEXT_EXCLUSION childContext = subcontext, #endif subcontext = & rangeCoder -> symbols [subcontext -> parent]) { ENET_CONTEXT_ENCODE (subcontext, symbol, value, under, count, ENET_SUBCONTEXT_SYMBOL_DELTA, 0); * parent = symbol - rangeCoder -> symbols; parent = & symbol -> parent; total = subcontext -> total; #ifdef ENET_CONTEXT_EXCLUSION if (childContext -> total > ENET_SUBCONTEXT_SYMBOL_DELTA + ENET_SUBCONTEXT_ESCAPE_DELTA) ENET_CONTEXT_ENCODE_EXCLUDE (childContext, value, under, total, 0); #endif if (count > 0) { ENET_RANGE_CODER_ENCODE (subcontext -> escapes + under, count, total); } else { if (subcontext -> escapes > 0 && subcontext -> escapes < total) ENET_RANGE_CODER_ENCODE (0, subcontext -> escapes, total); subcontext -> escapes += ENET_SUBCONTEXT_ESCAPE_DELTA; subcontext -> total += ENET_SUBCONTEXT_ESCAPE_DELTA; } subcontext -> total += ENET_SUBCONTEXT_SYMBOL_DELTA; if (count > 0xFF - 2*ENET_SUBCONTEXT_SYMBOL_DELTA || subcontext -> total > ENET_RANGE_CODER_BOTTOM - 0x100) ENET_CONTEXT_RESCALE (subcontext, 0); if (count > 0) goto nextInput; } ENET_CONTEXT_ENCODE (root, symbol, value, under, count, ENET_CONTEXT_SYMBOL_DELTA, ENET_CONTEXT_SYMBOL_MINIMUM); * parent = symbol - rangeCoder -> symbols; parent = & symbol -> parent; total = root -> total; #ifdef ENET_CONTEXT_EXCLUSION if (childContext -> total > ENET_SUBCONTEXT_SYMBOL_DELTA + ENET_SUBCONTEXT_ESCAPE_DELTA) ENET_CONTEXT_ENCODE_EXCLUDE (childContext, value, under, total, ENET_CONTEXT_SYMBOL_MINIMUM); #endif ENET_RANGE_CODER_ENCODE (root -> escapes + under, count, total); root -> total += ENET_CONTEXT_SYMBOL_DELTA; if (count > 0xFF - 2*ENET_CONTEXT_SYMBOL_DELTA + ENET_CONTEXT_SYMBOL_MINIMUM || root -> total > ENET_RANGE_CODER_BOTTOM - 0x100) ENET_CONTEXT_RESCALE (root, ENET_CONTEXT_SYMBOL_MINIMUM); nextInput: if (order >= ENET_SUBCONTEXT_ORDER) predicted = rangeCoder -> symbols [predicted].parent; else order ++; ENET_RANGE_CODER_FREE_SYMBOLS; } ENET_RANGE_CODER_FLUSH; return (size_t) (outData - outStart); } #define ENET_RANGE_CODER_SEED \ { \ if (inData < inEnd) decodeCode |= * inData ++ << 24; \ if (inData < inEnd) decodeCode |= * inData ++ << 16; \ if (inData < inEnd) decodeCode |= * inData ++ << 8; \ if (inData < inEnd) decodeCode |= * inData ++; \ } #define ENET_RANGE_CODER_READ(total) ((decodeCode - decodeLow) / (decodeRange /= (total))) #define ENET_RANGE_CODER_DECODE(under, count, total) \ { \ decodeLow += (under) * decodeRange; \ decodeRange *= (count); \ for (;;) \ { \ if((decodeLow ^ (decodeLow + decodeRange)) >= ENET_RANGE_CODER_TOP) \ { \ if(decodeRange >= ENET_RANGE_CODER_BOTTOM) break; \ decodeRange = -decodeLow & (ENET_RANGE_CODER_BOTTOM - 1); \ } \ decodeCode <<= 8; \ if (inData < inEnd) \ decodeCode |= * inData ++; \ decodeRange <<= 8; \ decodeLow <<= 8; \ } \ } #define ENET_CONTEXT_DECODE(context, symbol_, code, value_, under_, count_, update, minimum, createRoot, visitNode, createRight, createLeft) \ { \ under_ = 0; \ count_ = minimum; \ if (! (context) -> symbols) \ { \ createRoot; \ } \ else \ { \ ENetSymbol * node = (context) + (context) -> symbols; \ for (;;) \ { \ enet_uint16 after = under_ + node -> under + (node -> value + 1)*minimum, before = node -> count + minimum; \ visitNode; \ if (code >= after) \ { \ under_ += node -> under; \ if (node -> right) { node += node -> right; continue; } \ createRight; \ } \ else \ if (code < after - before) \ { \ node -> under += update; \ if (node -> left) { node += node -> left; continue; } \ createLeft; \ } \ else \ { \ value_ = node -> value; \ count_ += node -> count; \ under_ = after - before; \ node -> under += update; \ node -> count += update; \ symbol_ = node; \ } \ break; \ } \ } \ } #define ENET_CONTEXT_TRY_DECODE(context, symbol_, code, value_, under_, count_, update, minimum, exclude) \ ENET_CONTEXT_DECODE (context, symbol_, code, value_, under_, count_, update, minimum, return 0, exclude (node -> value, after, before), return 0, return 0) #define ENET_CONTEXT_ROOT_DECODE(context, symbol_, code, value_, under_, count_, update, minimum, exclude) \ ENET_CONTEXT_DECODE (context, symbol_, code, value_, under_, count_, update, minimum, \ { \ value_ = code / minimum; \ under_ = code - code%minimum; \ ENET_SYMBOL_CREATE (symbol_, value_, update); \ (context) -> symbols = symbol_ - (context); \ }, \ exclude (node -> value, after, before), \ { \ value_ = node->value + 1 + (code - after)/minimum; \ under_ = code - (code - after)%minimum; \ ENET_SYMBOL_CREATE (symbol_, value_, update); \ node -> right = symbol_ - node; \ }, \ { \ value_ = node->value - 1 - (after - before - code - 1)/minimum; \ under_ = code - (after - before - code - 1)%minimum; \ ENET_SYMBOL_CREATE (symbol_, value_, update); \ node -> left = symbol_ - node; \ }) \ #ifdef ENET_CONTEXT_EXCLUSION typedef struct _ENetExclude { enet_uint8 value; enet_uint16 under; } ENetExclude; #define ENET_CONTEXT_DECODE_EXCLUDE(context, total, minimum) \ { \ enet_uint16 under = 0; \ nextExclude = excludes; \ ENET_CONTEXT_WALK (context, { \ under += rangeCoder -> symbols [node -> parent].count + minimum; \ nextExclude -> value = node -> value; \ nextExclude -> under = under; \ nextExclude ++; \ }); \ total -= under; \ } #define ENET_CONTEXT_EXCLUDED(value_, after, before) \ { \ size_t low = 0, high = nextExclude - excludes; \ for(;;) \ { \ size_t mid = (low + high) >> 1; \ const ENetExclude * exclude = & excludes [mid]; \ if (value_ < exclude -> value) \ { \ if (low + 1 < high) \ { \ high = mid; \ continue; \ } \ if (exclude > excludes) \ after -= exclude [-1].under; \ } \ else \ { \ if (value_ > exclude -> value) \ { \ if (low + 1 < high) \ { \ low = mid; \ continue; \ } \ } \ else \ before = 0; \ after -= exclude -> under; \ } \ break; \ } \ } #endif #define ENET_CONTEXT_NOT_EXCLUDED(value_, after, before) size_t enet_range_coder_decompress (void * context, const enet_uint8 * inData, size_t inLimit, enet_uint8 * outData, size_t outLimit) { ENetRangeCoder * rangeCoder = (ENetRangeCoder *) context; enet_uint8 * outStart = outData, * outEnd = & outData [outLimit]; const enet_uint8 * inEnd = & inData [inLimit]; enet_uint32 decodeLow = 0, decodeCode = 0, decodeRange = ~0; ENetSymbol * root; enet_uint16 predicted = 0; size_t order = 0, nextSymbol = 0; #ifdef ENET_CONTEXT_EXCLUSION ENetExclude excludes [256]; ENetExclude * nextExclude = excludes; #endif if (rangeCoder == NULL || inLimit <= 0) return 0; ENET_CONTEXT_CREATE (root, ENET_CONTEXT_ESCAPE_MINIMUM, ENET_CONTEXT_SYMBOL_MINIMUM); ENET_RANGE_CODER_SEED; for (;;) { ENetSymbol * subcontext, * symbol, * patch; #ifdef ENET_CONTEXT_EXCLUSION const ENetSymbol * childContext = & emptyContext; #endif enet_uint8 value = 0; enet_uint16 code, under, count, bottom, * parent = & predicted, total; for (subcontext = & rangeCoder -> symbols [predicted]; subcontext != root; #ifdef ENET_CONTEXT_EXCLUSION childContext = subcontext, #endif subcontext = & rangeCoder -> symbols [subcontext -> parent]) { if (subcontext -> escapes <= 0) continue; total = subcontext -> total; #ifdef ENET_CONTEXT_EXCLUSION if (childContext -> total > 0) ENET_CONTEXT_DECODE_EXCLUDE (childContext, total, 0); #endif if (subcontext -> escapes >= total) continue; code = ENET_RANGE_CODER_READ (total); if (code < subcontext -> escapes) { ENET_RANGE_CODER_DECODE (0, subcontext -> escapes, total); continue; } code -= subcontext -> escapes; #ifdef ENET_CONTEXT_EXCLUSION if (childContext -> total > 0) { ENET_CONTEXT_TRY_DECODE (subcontext, symbol, code, value, under, count, ENET_SUBCONTEXT_SYMBOL_DELTA, 0, ENET_CONTEXT_EXCLUDED); } else #endif { ENET_CONTEXT_TRY_DECODE (subcontext, symbol, code, value, under, count, ENET_SUBCONTEXT_SYMBOL_DELTA, 0, ENET_CONTEXT_NOT_EXCLUDED); } bottom = symbol - rangeCoder -> symbols; ENET_RANGE_CODER_DECODE (subcontext -> escapes + under, count, total); subcontext -> total += ENET_SUBCONTEXT_SYMBOL_DELTA; if (count > 0xFF - 2*ENET_SUBCONTEXT_SYMBOL_DELTA || subcontext -> total > ENET_RANGE_CODER_BOTTOM - 0x100) ENET_CONTEXT_RESCALE (subcontext, 0); goto patchContexts; } total = root -> total; #ifdef ENET_CONTEXT_EXCLUSION if (childContext -> total > 0) ENET_CONTEXT_DECODE_EXCLUDE (childContext, total, ENET_CONTEXT_SYMBOL_MINIMUM); #endif code = ENET_RANGE_CODER_READ (total); if (code < root -> escapes) { ENET_RANGE_CODER_DECODE (0, root -> escapes, total); break; } code -= root -> escapes; #ifdef ENET_CONTEXT_EXCLUSION if (childContext -> total > 0) { ENET_CONTEXT_ROOT_DECODE (root, symbol, code, value, under, count, ENET_CONTEXT_SYMBOL_DELTA, ENET_CONTEXT_SYMBOL_MINIMUM, ENET_CONTEXT_EXCLUDED); } else #endif { ENET_CONTEXT_ROOT_DECODE (root, symbol, code, value, under, count, ENET_CONTEXT_SYMBOL_DELTA, ENET_CONTEXT_SYMBOL_MINIMUM, ENET_CONTEXT_NOT_EXCLUDED); } bottom = symbol - rangeCoder -> symbols; ENET_RANGE_CODER_DECODE (root -> escapes + under, count, total); root -> total += ENET_CONTEXT_SYMBOL_DELTA; if (count > 0xFF - 2*ENET_CONTEXT_SYMBOL_DELTA + ENET_CONTEXT_SYMBOL_MINIMUM || root -> total > ENET_RANGE_CODER_BOTTOM - 0x100) ENET_CONTEXT_RESCALE (root, ENET_CONTEXT_SYMBOL_MINIMUM); patchContexts: for (patch = & rangeCoder -> symbols [predicted]; patch != subcontext; patch = & rangeCoder -> symbols [patch -> parent]) { ENET_CONTEXT_ENCODE (patch, symbol, value, under, count, ENET_SUBCONTEXT_SYMBOL_DELTA, 0); * parent = symbol - rangeCoder -> symbols; parent = & symbol -> parent; if (count <= 0) { patch -> escapes += ENET_SUBCONTEXT_ESCAPE_DELTA; patch -> total += ENET_SUBCONTEXT_ESCAPE_DELTA; } patch -> total += ENET_SUBCONTEXT_SYMBOL_DELTA; if (count > 0xFF - 2*ENET_SUBCONTEXT_SYMBOL_DELTA || patch -> total > ENET_RANGE_CODER_BOTTOM - 0x100) ENET_CONTEXT_RESCALE (patch, 0); } * parent = bottom; ENET_RANGE_CODER_OUTPUT (value); if (order >= ENET_SUBCONTEXT_ORDER) predicted = rangeCoder -> symbols [predicted].parent; else order ++; ENET_RANGE_CODER_FREE_SYMBOLS; } return (size_t) (outData - outStart); } /** @defgroup host ENet host functions @{ */ /** Sets the packet compressor the host should use to the default range coder. @param host host to enable the range coder for @returns 0 on success, < 0 on failure */ int enet_host_compress_with_range_coder (ENetHost * host) { ENetCompressor compressor; memset (& compressor, 0, sizeof (compressor)); compressor.context = enet_range_coder_create(); if (compressor.context == NULL) return -1; compressor.compress = enet_range_coder_compress; compressor.decompress = enet_range_coder_decompress; compressor.destroy = enet_range_coder_destroy; enet_host_compress (host, & compressor); return 0; } /** @} */ love-0.9.1/src/libraries/enet/libenet/unix.c0000644000000000000000000003045412316602166020744 0ustar00rootroot00000000000000/** @file unix.c @brief ENet Unix system specific functions */ #ifndef _WIN32 #include #include #include #include #include #include #include #include #include #include #include #define ENET_BUILDING_LIB 1 #include "enet/enet.h" #ifdef __APPLE__ #ifdef HAS_POLL #undef HAS_POLL #endif #ifndef HAS_FCNTL #define HAS_FCNTL 1 #endif #ifndef HAS_INET_PTON #define HAS_INET_PTON 1 #endif #ifndef HAS_INET_NTOP #define HAS_INET_NTOP 1 #endif #ifndef HAS_MSGHDR_FLAGS #define HAS_MSGHDR_FLAGS 1 #endif #ifndef HAS_SOCKLEN_T #define HAS_SOCKLEN_T 1 #endif #endif #ifdef HAS_FCNTL #include #endif #ifdef HAS_POLL #include #endif #include "common/config.h" #ifndef HAS_SOCKLEN_T typedef int socklen_t; #endif #ifndef MSG_NOSIGNAL #define MSG_NOSIGNAL 0 #endif static enet_uint32 timeBase = 0; int enet_initialize (void) { return 0; } void enet_deinitialize (void) { } enet_uint32 enet_host_random_seed (void) { return (enet_uint32) time (NULL); } enet_uint32 enet_time_get (void) { struct timeval timeVal; gettimeofday (& timeVal, NULL); return timeVal.tv_sec * 1000 + timeVal.tv_usec / 1000 - timeBase; } void enet_time_set (enet_uint32 newTimeBase) { struct timeval timeVal; gettimeofday (& timeVal, NULL); timeBase = timeVal.tv_sec * 1000 + timeVal.tv_usec / 1000 - newTimeBase; } int enet_address_set_host (ENetAddress * address, const char * name) { struct hostent * hostEntry = NULL; #ifdef HAS_GETHOSTBYNAME_R struct hostent hostData; char buffer [2048]; int errnum; #if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) gethostbyname_r (name, & hostData, buffer, sizeof (buffer), & hostEntry, & errnum); #else hostEntry = gethostbyname_r (name, & hostData, buffer, sizeof (buffer), & errnum); #endif #else hostEntry = gethostbyname (name); #endif if (hostEntry == NULL || hostEntry -> h_addrtype != AF_INET) { #ifdef HAS_INET_PTON if (! inet_pton (AF_INET, name, & address -> host)) #else if (! inet_aton (name, (struct in_addr *) & address -> host)) #endif return -1; return 0; } address -> host = * (enet_uint32 *) hostEntry -> h_addr_list [0]; return 0; } int enet_address_get_host_ip (const ENetAddress * address, char * name, size_t nameLength) { #ifdef HAS_INET_NTOP if (inet_ntop (AF_INET, & address -> host, name, nameLength) == NULL) #else char * addr = inet_ntoa (* (struct in_addr *) & address -> host); if (addr != NULL) strncpy (name, addr, nameLength); else #endif return -1; return 0; } int enet_address_get_host (const ENetAddress * address, char * name, size_t nameLength) { struct in_addr in; struct hostent * hostEntry = NULL; #ifdef HAS_GETHOSTBYADDR_R struct hostent hostData; char buffer [2048]; int errnum; in.s_addr = address -> host; #if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) gethostbyaddr_r ((char *) & in, sizeof (struct in_addr), AF_INET, & hostData, buffer, sizeof (buffer), & hostEntry, & errnum); #else hostEntry = gethostbyaddr_r ((char *) & in, sizeof (struct in_addr), AF_INET, & hostData, buffer, sizeof (buffer), & errnum); #endif #else in.s_addr = address -> host; hostEntry = gethostbyaddr ((char *) & in, sizeof (struct in_addr), AF_INET); #endif if (hostEntry == NULL) return enet_address_get_host_ip (address, name, nameLength); strncpy (name, hostEntry -> h_name, nameLength); return 0; } int enet_socket_bind (ENetSocket socket, const ENetAddress * address) { struct sockaddr_in sin; memset (& sin, 0, sizeof (struct sockaddr_in)); sin.sin_family = AF_INET; if (address != NULL) { sin.sin_port = ENET_HOST_TO_NET_16 (address -> port); sin.sin_addr.s_addr = address -> host; } else { sin.sin_port = 0; sin.sin_addr.s_addr = INADDR_ANY; } return bind (socket, (struct sockaddr *) & sin, sizeof (struct sockaddr_in)); } int enet_socket_get_address (ENetSocket socket, ENetAddress * address) { struct sockaddr_in sin; socklen_t sinLength = sizeof (struct sockaddr_in); if (getsockname (socket, (struct sockaddr *) & sin, & sinLength) == -1) return -1; address -> host = (enet_uint32) sin.sin_addr.s_addr; address -> port = ENET_NET_TO_HOST_16 (sin.sin_port); return 0; } int enet_socket_listen (ENetSocket socket, int backlog) { return listen (socket, backlog < 0 ? SOMAXCONN : backlog); } ENetSocket enet_socket_create (ENetSocketType type) { return socket (PF_INET, type == ENET_SOCKET_TYPE_DATAGRAM ? SOCK_DGRAM : SOCK_STREAM, 0); } int enet_socket_set_option (ENetSocket socket, ENetSocketOption option, int value) { int result = -1; switch (option) { case ENET_SOCKOPT_NONBLOCK: #ifdef HAS_FCNTL result = fcntl (socket, F_SETFL, O_NONBLOCK | fcntl (socket, F_GETFL)); #else result = ioctl (socket, FIONBIO, & value); #endif break; case ENET_SOCKOPT_BROADCAST: result = setsockopt (socket, SOL_SOCKET, SO_BROADCAST, (char *) & value, sizeof (int)); break; case ENET_SOCKOPT_REUSEADDR: result = setsockopt (socket, SOL_SOCKET, SO_REUSEADDR, (char *) & value, sizeof (int)); break; case ENET_SOCKOPT_RCVBUF: result = setsockopt (socket, SOL_SOCKET, SO_RCVBUF, (char *) & value, sizeof (int)); break; case ENET_SOCKOPT_SNDBUF: result = setsockopt (socket, SOL_SOCKET, SO_SNDBUF, (char *) & value, sizeof (int)); break; case ENET_SOCKOPT_RCVTIMEO: { struct timeval timeVal; timeVal.tv_sec = value / 1000; timeVal.tv_usec = (value % 1000) * 1000; result = setsockopt (socket, SOL_SOCKET, SO_RCVTIMEO, (char *) & timeVal, sizeof (struct timeval)); break; } case ENET_SOCKOPT_SNDTIMEO: { struct timeval timeVal; timeVal.tv_sec = value / 1000; timeVal.tv_usec = (value % 1000) * 1000; result = setsockopt (socket, SOL_SOCKET, SO_SNDTIMEO, (char *) & timeVal, sizeof (struct timeval)); break; } case ENET_SOCKOPT_NODELAY: result = setsockopt (socket, IPPROTO_TCP, TCP_NODELAY, (char *) & value, sizeof (int)); break; default: break; } return result == -1 ? -1 : 0; } int enet_socket_get_option (ENetSocket socket, ENetSocketOption option, int * value) { int result = -1; socklen_t len; switch (option) { case ENET_SOCKOPT_ERROR: len = sizeof (int); result = getsockopt (socket, SOL_SOCKET, SO_ERROR, value, & len); break; default: break; } return result == -1 ? -1 : 0; } int enet_socket_connect (ENetSocket socket, const ENetAddress * address) { struct sockaddr_in sin; int result; memset (& sin, 0, sizeof (struct sockaddr_in)); sin.sin_family = AF_INET; sin.sin_port = ENET_HOST_TO_NET_16 (address -> port); sin.sin_addr.s_addr = address -> host; result = connect (socket, (struct sockaddr *) & sin, sizeof (struct sockaddr_in)); if (result == -1 && errno == EINPROGRESS) return 0; return result; } ENetSocket enet_socket_accept (ENetSocket socket, ENetAddress * address) { int result; struct sockaddr_in sin; socklen_t sinLength = sizeof (struct sockaddr_in); result = accept (socket, address != NULL ? (struct sockaddr *) & sin : NULL, address != NULL ? & sinLength : NULL); if (result == -1) return ENET_SOCKET_NULL; if (address != NULL) { address -> host = (enet_uint32) sin.sin_addr.s_addr; address -> port = ENET_NET_TO_HOST_16 (sin.sin_port); } return result; } int enet_socket_shutdown (ENetSocket socket, ENetSocketShutdown how) { return shutdown (socket, (int) how); } void enet_socket_destroy (ENetSocket socket) { if (socket != -1) close (socket); } int enet_socket_send (ENetSocket socket, const ENetAddress * address, const ENetBuffer * buffers, size_t bufferCount) { struct msghdr msgHdr; struct sockaddr_in sin; int sentLength; memset (& msgHdr, 0, sizeof (struct msghdr)); if (address != NULL) { memset (& sin, 0, sizeof (struct sockaddr_in)); sin.sin_family = AF_INET; sin.sin_port = ENET_HOST_TO_NET_16 (address -> port); sin.sin_addr.s_addr = address -> host; msgHdr.msg_name = & sin; msgHdr.msg_namelen = sizeof (struct sockaddr_in); } msgHdr.msg_iov = (struct iovec *) buffers; msgHdr.msg_iovlen = bufferCount; sentLength = sendmsg (socket, & msgHdr, MSG_NOSIGNAL); if (sentLength == -1) { if (errno == EWOULDBLOCK) return 0; return -1; } return sentLength; } int enet_socket_receive (ENetSocket socket, ENetAddress * address, ENetBuffer * buffers, size_t bufferCount) { struct msghdr msgHdr; struct sockaddr_in sin; int recvLength; memset (& msgHdr, 0, sizeof (struct msghdr)); if (address != NULL) { msgHdr.msg_name = & sin; msgHdr.msg_namelen = sizeof (struct sockaddr_in); } msgHdr.msg_iov = (struct iovec *) buffers; msgHdr.msg_iovlen = bufferCount; recvLength = recvmsg (socket, & msgHdr, MSG_NOSIGNAL); if (recvLength == -1) { if (errno == EWOULDBLOCK) return 0; return -1; } #ifdef HAS_MSGHDR_FLAGS if (msgHdr.msg_flags & MSG_TRUNC) return -1; #endif if (address != NULL) { address -> host = (enet_uint32) sin.sin_addr.s_addr; address -> port = ENET_NET_TO_HOST_16 (sin.sin_port); } return recvLength; } int enet_socketset_select (ENetSocket maxSocket, ENetSocketSet * readSet, ENetSocketSet * writeSet, enet_uint32 timeout) { struct timeval timeVal; timeVal.tv_sec = timeout / 1000; timeVal.tv_usec = (timeout % 1000) * 1000; return select (maxSocket + 1, readSet, writeSet, NULL, & timeVal); } int enet_socket_wait (ENetSocket socket, enet_uint32 * condition, enet_uint32 timeout) { #ifdef HAS_POLL struct pollfd pollSocket; int pollCount; pollSocket.fd = socket; pollSocket.events = 0; if (* condition & ENET_SOCKET_WAIT_SEND) pollSocket.events |= POLLOUT; if (* condition & ENET_SOCKET_WAIT_RECEIVE) pollSocket.events |= POLLIN; pollCount = poll (& pollSocket, 1, timeout); if (pollCount < 0) { if (errno == EINTR && * condition & ENET_SOCKET_WAIT_INTERRUPT) { * condition = ENET_SOCKET_WAIT_INTERRUPT; return 0; } return -1; } * condition = ENET_SOCKET_WAIT_NONE; if (pollCount == 0) return 0; if (pollSocket.revents & POLLOUT) * condition |= ENET_SOCKET_WAIT_SEND; if (pollSocket.revents & POLLIN) * condition |= ENET_SOCKET_WAIT_RECEIVE; return 0; #else fd_set readSet, writeSet; struct timeval timeVal; int selectCount; timeVal.tv_sec = timeout / 1000; timeVal.tv_usec = (timeout % 1000) * 1000; FD_ZERO (& readSet); FD_ZERO (& writeSet); if (* condition & ENET_SOCKET_WAIT_SEND) FD_SET (socket, & writeSet); if (* condition & ENET_SOCKET_WAIT_RECEIVE) FD_SET (socket, & readSet); selectCount = select (socket + 1, & readSet, & writeSet, NULL, & timeVal); if (selectCount < 0) { if (errno == EINTR && * condition & ENET_SOCKET_WAIT_INTERRUPT) { * condition = ENET_SOCKET_WAIT_INTERRUPT; return 0; } return -1; } * condition = ENET_SOCKET_WAIT_NONE; if (selectCount == 0) return 0; if (FD_ISSET (socket, & writeSet)) * condition |= ENET_SOCKET_WAIT_SEND; if (FD_ISSET (socket, & readSet)) * condition |= ENET_SOCKET_WAIT_RECEIVE; return 0; #endif } #endif love-0.9.1/src/libraries/enet/libenet/peer.c0000644000000000000000000011106612316602166020713 0ustar00rootroot00000000000000/** @file peer.c @brief ENet peer management functions */ #include #define ENET_BUILDING_LIB 1 #include "enet/enet.h" /** @defgroup peer ENet peer functions @{ */ /** Configures throttle parameter for a peer. Unreliable packets are dropped by ENet in response to the varying conditions of the Internet connection to the peer. The throttle represents a probability that an unreliable packet should not be dropped and thus sent by ENet to the peer. The lowest mean round trip time from the sending of a reliable packet to the receipt of its acknowledgement is measured over an amount of time specified by the interval parameter in milliseconds. If a measured round trip time happens to be significantly less than the mean round trip time measured over the interval, then the throttle probability is increased to allow more traffic by an amount specified in the acceleration parameter, which is a ratio to the ENET_PEER_PACKET_THROTTLE_SCALE constant. If a measured round trip time happens to be significantly greater than the mean round trip time measured over the interval, then the throttle probability is decreased to limit traffic by an amount specified in the deceleration parameter, which is a ratio to the ENET_PEER_PACKET_THROTTLE_SCALE constant. When the throttle has a value of ENET_PEER_PACKET_THROTTLE_SCALE, no unreliable packets are dropped by ENet, and so 100% of all unreliable packets will be sent. When the throttle has a value of 0, all unreliable packets are dropped by ENet, and so 0% of all unreliable packets will be sent. Intermediate values for the throttle represent intermediate probabilities between 0% and 100% of unreliable packets being sent. The bandwidth limits of the local and foreign hosts are taken into account to determine a sensible limit for the throttle probability above which it should not raise even in the best of conditions. @param peer peer to configure @param interval interval, in milliseconds, over which to measure lowest mean RTT; the default value is ENET_PEER_PACKET_THROTTLE_INTERVAL. @param acceleration rate at which to increase the throttle probability as mean RTT declines @param deceleration rate at which to decrease the throttle probability as mean RTT increases */ void enet_peer_throttle_configure (ENetPeer * peer, enet_uint32 interval, enet_uint32 acceleration, enet_uint32 deceleration) { ENetProtocol command; peer -> packetThrottleInterval = interval; peer -> packetThrottleAcceleration = acceleration; peer -> packetThrottleDeceleration = deceleration; command.header.command = ENET_PROTOCOL_COMMAND_THROTTLE_CONFIGURE | ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE; command.header.channelID = 0xFF; command.throttleConfigure.packetThrottleInterval = ENET_HOST_TO_NET_32 (interval); command.throttleConfigure.packetThrottleAcceleration = ENET_HOST_TO_NET_32 (acceleration); command.throttleConfigure.packetThrottleDeceleration = ENET_HOST_TO_NET_32 (deceleration); enet_peer_queue_outgoing_command (peer, & command, NULL, 0, 0); } int enet_peer_throttle (ENetPeer * peer, enet_uint32 rtt) { if (peer -> lastRoundTripTime <= peer -> lastRoundTripTimeVariance) { peer -> packetThrottle = peer -> packetThrottleLimit; } else if (rtt < peer -> lastRoundTripTime) { peer -> packetThrottle += peer -> packetThrottleAcceleration; if (peer -> packetThrottle > peer -> packetThrottleLimit) peer -> packetThrottle = peer -> packetThrottleLimit; return 1; } else if (rtt > peer -> lastRoundTripTime + 2 * peer -> lastRoundTripTimeVariance) { if (peer -> packetThrottle > peer -> packetThrottleDeceleration) peer -> packetThrottle -= peer -> packetThrottleDeceleration; else peer -> packetThrottle = 0; return -1; } return 0; } /** Queues a packet to be sent. @param peer destination for the packet @param channelID channel on which to send @param packet packet to send @retval 0 on success @retval < 0 on failure */ int enet_peer_send (ENetPeer * peer, enet_uint8 channelID, ENetPacket * packet) { ENetChannel * channel = & peer -> channels [channelID]; ENetProtocol command; size_t fragmentLength; if (peer -> state != ENET_PEER_STATE_CONNECTED || channelID >= peer -> channelCount || packet -> dataLength > ENET_PROTOCOL_MAXIMUM_PACKET_SIZE) return -1; fragmentLength = peer -> mtu - sizeof (ENetProtocolHeader) - sizeof (ENetProtocolSendFragment); if (peer -> host -> checksum != NULL) fragmentLength -= sizeof(enet_uint32); if (packet -> dataLength > fragmentLength) { enet_uint32 fragmentCount = (packet -> dataLength + fragmentLength - 1) / fragmentLength, fragmentNumber, fragmentOffset; enet_uint8 commandNumber; enet_uint16 startSequenceNumber; ENetList fragments; ENetOutgoingCommand * fragment; if (fragmentCount > ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT) return -1; if ((packet -> flags & (ENET_PACKET_FLAG_RELIABLE | ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT)) == ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT && channel -> outgoingUnreliableSequenceNumber < 0xFFFF) { commandNumber = ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE_FRAGMENT; startSequenceNumber = ENET_HOST_TO_NET_16 (channel -> outgoingUnreliableSequenceNumber + 1); } else { commandNumber = ENET_PROTOCOL_COMMAND_SEND_FRAGMENT | ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE; startSequenceNumber = ENET_HOST_TO_NET_16 (channel -> outgoingReliableSequenceNumber + 1); } enet_list_clear (& fragments); for (fragmentNumber = 0, fragmentOffset = 0; fragmentOffset < packet -> dataLength; ++ fragmentNumber, fragmentOffset += fragmentLength) { if (packet -> dataLength - fragmentOffset < fragmentLength) fragmentLength = packet -> dataLength - fragmentOffset; fragment = (ENetOutgoingCommand *) enet_malloc (sizeof (ENetOutgoingCommand)); if (fragment == NULL) { while (! enet_list_empty (& fragments)) { fragment = (ENetOutgoingCommand *) enet_list_remove (enet_list_begin (& fragments)); enet_free (fragment); } return -1; } fragment -> fragmentOffset = fragmentOffset; fragment -> fragmentLength = fragmentLength; fragment -> packet = packet; fragment -> command.header.command = commandNumber; fragment -> command.header.channelID = channelID; fragment -> command.sendFragment.startSequenceNumber = startSequenceNumber; fragment -> command.sendFragment.dataLength = ENET_HOST_TO_NET_16 (fragmentLength); fragment -> command.sendFragment.fragmentCount = ENET_HOST_TO_NET_32 (fragmentCount); fragment -> command.sendFragment.fragmentNumber = ENET_HOST_TO_NET_32 (fragmentNumber); fragment -> command.sendFragment.totalLength = ENET_HOST_TO_NET_32 (packet -> dataLength); fragment -> command.sendFragment.fragmentOffset = ENET_NET_TO_HOST_32 (fragmentOffset); enet_list_insert (enet_list_end (& fragments), fragment); } packet -> referenceCount += fragmentNumber; while (! enet_list_empty (& fragments)) { fragment = (ENetOutgoingCommand *) enet_list_remove (enet_list_begin (& fragments)); enet_peer_setup_outgoing_command (peer, fragment); } return 0; } command.header.channelID = channelID; if ((packet -> flags & (ENET_PACKET_FLAG_RELIABLE | ENET_PACKET_FLAG_UNSEQUENCED)) == ENET_PACKET_FLAG_UNSEQUENCED) { command.header.command = ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED | ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED; command.sendUnsequenced.dataLength = ENET_HOST_TO_NET_16 (packet -> dataLength); } else if (packet -> flags & ENET_PACKET_FLAG_RELIABLE || channel -> outgoingUnreliableSequenceNumber >= 0xFFFF) { command.header.command = ENET_PROTOCOL_COMMAND_SEND_RELIABLE | ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE; command.sendReliable.dataLength = ENET_HOST_TO_NET_16 (packet -> dataLength); } else { command.header.command = ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE; command.sendUnreliable.dataLength = ENET_HOST_TO_NET_16 (packet -> dataLength); } if (enet_peer_queue_outgoing_command (peer, & command, packet, 0, packet -> dataLength) == NULL) return -1; return 0; } /** Attempts to dequeue any incoming queued packet. @param peer peer to dequeue packets from @param channelID holds the channel ID of the channel the packet was received on success @returns a pointer to the packet, or NULL if there are no available incoming queued packets */ ENetPacket * enet_peer_receive (ENetPeer * peer, enet_uint8 * channelID) { ENetIncomingCommand * incomingCommand; ENetPacket * packet; if (enet_list_empty (& peer -> dispatchedCommands)) return NULL; incomingCommand = (ENetIncomingCommand *) enet_list_remove (enet_list_begin (& peer -> dispatchedCommands)); if (channelID != NULL) * channelID = incomingCommand -> command.header.channelID; packet = incomingCommand -> packet; -- packet -> referenceCount; if (incomingCommand -> fragments != NULL) enet_free (incomingCommand -> fragments); enet_free (incomingCommand); return packet; } static void enet_peer_reset_outgoing_commands (ENetList * queue) { ENetOutgoingCommand * outgoingCommand; while (! enet_list_empty (queue)) { outgoingCommand = (ENetOutgoingCommand *) enet_list_remove (enet_list_begin (queue)); if (outgoingCommand -> packet != NULL) { -- outgoingCommand -> packet -> referenceCount; if (outgoingCommand -> packet -> referenceCount == 0) enet_packet_destroy (outgoingCommand -> packet); } enet_free (outgoingCommand); } } static void enet_peer_remove_incoming_commands (ENetList * queue, ENetListIterator startCommand, ENetListIterator endCommand) { ENetListIterator currentCommand; for (currentCommand = startCommand; currentCommand != endCommand; ) { ENetIncomingCommand * incomingCommand = (ENetIncomingCommand *) currentCommand; currentCommand = enet_list_next (currentCommand); enet_list_remove (& incomingCommand -> incomingCommandList); if (incomingCommand -> packet != NULL) { -- incomingCommand -> packet -> referenceCount; if (incomingCommand -> packet -> referenceCount == 0) enet_packet_destroy (incomingCommand -> packet); } if (incomingCommand -> fragments != NULL) enet_free (incomingCommand -> fragments); enet_free (incomingCommand); } } static void enet_peer_reset_incoming_commands (ENetList * queue) { enet_peer_remove_incoming_commands(queue, enet_list_begin (queue), enet_list_end (queue)); } void enet_peer_reset_queues (ENetPeer * peer) { ENetChannel * channel; if (peer -> needsDispatch) { enet_list_remove (& peer -> dispatchList); peer -> needsDispatch = 0; } while (! enet_list_empty (& peer -> acknowledgements)) enet_free (enet_list_remove (enet_list_begin (& peer -> acknowledgements))); enet_peer_reset_outgoing_commands (& peer -> sentReliableCommands); enet_peer_reset_outgoing_commands (& peer -> sentUnreliableCommands); enet_peer_reset_outgoing_commands (& peer -> outgoingReliableCommands); enet_peer_reset_outgoing_commands (& peer -> outgoingUnreliableCommands); enet_peer_reset_incoming_commands (& peer -> dispatchedCommands); if (peer -> channels != NULL && peer -> channelCount > 0) { for (channel = peer -> channels; channel < & peer -> channels [peer -> channelCount]; ++ channel) { enet_peer_reset_incoming_commands (& channel -> incomingReliableCommands); enet_peer_reset_incoming_commands (& channel -> incomingUnreliableCommands); } enet_free (peer -> channels); } peer -> channels = NULL; peer -> channelCount = 0; } void enet_peer_on_connect (ENetPeer * peer) { if (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER) { if (peer -> incomingBandwidth != 0) ++ peer -> host -> bandwidthLimitedPeers; ++ peer -> host -> connectedPeers; } } void enet_peer_on_disconnect (ENetPeer * peer) { if (peer -> state == ENET_PEER_STATE_CONNECTED || peer -> state == ENET_PEER_STATE_DISCONNECT_LATER) { if (peer -> incomingBandwidth != 0) -- peer -> host -> bandwidthLimitedPeers; -- peer -> host -> connectedPeers; } } /** Forcefully disconnects a peer. @param peer peer to forcefully disconnect @remarks The foreign host represented by the peer is not notified of the disconnection and will timeout on its connection to the local host. */ void enet_peer_reset (ENetPeer * peer) { enet_peer_on_disconnect (peer); peer -> outgoingPeerID = ENET_PROTOCOL_MAXIMUM_PEER_ID; peer -> connectID = 0; peer -> state = ENET_PEER_STATE_DISCONNECTED; peer -> incomingBandwidth = 0; peer -> outgoingBandwidth = 0; peer -> incomingBandwidthThrottleEpoch = 0; peer -> outgoingBandwidthThrottleEpoch = 0; peer -> incomingDataTotal = 0; peer -> outgoingDataTotal = 0; peer -> lastSendTime = 0; peer -> lastReceiveTime = 0; peer -> nextTimeout = 0; peer -> earliestTimeout = 0; peer -> packetLossEpoch = 0; peer -> packetsSent = 0; peer -> packetsLost = 0; peer -> packetLoss = 0; peer -> packetLossVariance = 0; peer -> packetThrottle = ENET_PEER_DEFAULT_PACKET_THROTTLE; peer -> packetThrottleLimit = ENET_PEER_PACKET_THROTTLE_SCALE; peer -> packetThrottleCounter = 0; peer -> packetThrottleEpoch = 0; peer -> packetThrottleAcceleration = ENET_PEER_PACKET_THROTTLE_ACCELERATION; peer -> packetThrottleDeceleration = ENET_PEER_PACKET_THROTTLE_DECELERATION; peer -> packetThrottleInterval = ENET_PEER_PACKET_THROTTLE_INTERVAL; peer -> pingInterval = ENET_PEER_PING_INTERVAL; peer -> timeoutLimit = ENET_PEER_TIMEOUT_LIMIT; peer -> timeoutMinimum = ENET_PEER_TIMEOUT_MINIMUM; peer -> timeoutMaximum = ENET_PEER_TIMEOUT_MAXIMUM; peer -> lastRoundTripTime = ENET_PEER_DEFAULT_ROUND_TRIP_TIME; peer -> lowestRoundTripTime = ENET_PEER_DEFAULT_ROUND_TRIP_TIME; peer -> lastRoundTripTimeVariance = 0; peer -> highestRoundTripTimeVariance = 0; peer -> roundTripTime = ENET_PEER_DEFAULT_ROUND_TRIP_TIME; peer -> roundTripTimeVariance = 0; peer -> mtu = peer -> host -> mtu; peer -> reliableDataInTransit = 0; peer -> outgoingReliableSequenceNumber = 0; peer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; peer -> incomingUnsequencedGroup = 0; peer -> outgoingUnsequencedGroup = 0; peer -> eventData = 0; memset (peer -> unsequencedWindow, 0, sizeof (peer -> unsequencedWindow)); enet_peer_reset_queues (peer); } /** Sends a ping request to a peer. @param peer destination for the ping request @remarks ping requests factor into the mean round trip time as designated by the roundTripTime field in the ENetPeer structure. Enet automatically pings all connected peers at regular intervals, however, this function may be called to ensure more frequent ping requests. */ void enet_peer_ping (ENetPeer * peer) { ENetProtocol command; if (peer -> state != ENET_PEER_STATE_CONNECTED) return; command.header.command = ENET_PROTOCOL_COMMAND_PING | ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE; command.header.channelID = 0xFF; enet_peer_queue_outgoing_command (peer, & command, NULL, 0, 0); } /** Sets the interval at which pings will be sent to a peer. Pings are used both to monitor the liveness of the connection and also to dynamically adjust the throttle during periods of low traffic so that the throttle has reasonable responsiveness during traffic spikes. @param peer the peer to adjust @param pingInterval the interval at which to send pings; defaults to ENET_PEER_PING_INTERVAL if 0 */ void enet_peer_ping_interval (ENetPeer * peer, enet_uint32 pingInterval) { peer -> pingInterval = pingInterval ? pingInterval : ENET_PEER_PING_INTERVAL; } /** Sets the timeout parameters for a peer. The timeout parameter control how and when a peer will timeout from a failure to acknowledge reliable traffic. Timeout values use an exponential backoff mechanism, where if a reliable packet is not acknowledge within some multiple of the average RTT plus a variance tolerance, the timeout will be doubled until it reaches a set limit. If the timeout is thus at this limit and reliable packets have been sent but not acknowledged within a certain minimum time period, the peer will be disconnected. Alternatively, if reliable packets have been sent but not acknowledged for a certain maximum time period, the peer will be disconnected regardless of the current timeout limit value. @param peer the peer to adjust @param timeoutLimit the timeout limit; defaults to ENET_PEER_TIMEOUT_LIMIT if 0 @param timeoutMinimum the timeout minimum; defaults to ENET_PEER_TIMEOUT_MINIMUM if 0 @param timeoutMaximum the timeout maximum; defaults to ENET_PEER_TIMEOUT_MAXIMUM if 0 */ void enet_peer_timeout (ENetPeer * peer, enet_uint32 timeoutLimit, enet_uint32 timeoutMinimum, enet_uint32 timeoutMaximum) { peer -> timeoutLimit = timeoutLimit ? timeoutLimit : ENET_PEER_TIMEOUT_LIMIT; peer -> timeoutMinimum = timeoutMinimum ? timeoutMinimum : ENET_PEER_TIMEOUT_MINIMUM; peer -> timeoutMaximum = timeoutMaximum ? timeoutMaximum : ENET_PEER_TIMEOUT_MAXIMUM; } /** Force an immediate disconnection from a peer. @param peer peer to disconnect @param data data describing the disconnection @remarks No ENET_EVENT_DISCONNECT event will be generated. The foreign peer is not guarenteed to receive the disconnect notification, and is reset immediately upon return from this function. */ void enet_peer_disconnect_now (ENetPeer * peer, enet_uint32 data) { ENetProtocol command; if (peer -> state == ENET_PEER_STATE_DISCONNECTED) return; if (peer -> state != ENET_PEER_STATE_ZOMBIE && peer -> state != ENET_PEER_STATE_DISCONNECTING) { enet_peer_reset_queues (peer); command.header.command = ENET_PROTOCOL_COMMAND_DISCONNECT | ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED; command.header.channelID = 0xFF; command.disconnect.data = ENET_HOST_TO_NET_32 (data); enet_peer_queue_outgoing_command (peer, & command, NULL, 0, 0); enet_host_flush (peer -> host); } enet_peer_reset (peer); } /** Request a disconnection from a peer. @param peer peer to request a disconnection @param data data describing the disconnection @remarks An ENET_EVENT_DISCONNECT event will be generated by enet_host_service() once the disconnection is complete. */ void enet_peer_disconnect (ENetPeer * peer, enet_uint32 data) { ENetProtocol command; if (peer -> state == ENET_PEER_STATE_DISCONNECTING || peer -> state == ENET_PEER_STATE_DISCONNECTED || peer -> state == ENET_PEER_STATE_ACKNOWLEDGING_DISCONNECT || peer -> state == ENET_PEER_STATE_ZOMBIE) return; enet_peer_reset_queues (peer); command.header.command = ENET_PROTOCOL_COMMAND_DISCONNECT; command.header.channelID = 0xFF; command.disconnect.data = ENET_HOST_TO_NET_32 (data); if (peer -> state == ENET_PEER_STATE_CONNECTED || peer -> state == ENET_PEER_STATE_DISCONNECT_LATER) command.header.command |= ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE; else command.header.command |= ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED; enet_peer_queue_outgoing_command (peer, & command, NULL, 0, 0); if (peer -> state == ENET_PEER_STATE_CONNECTED || peer -> state == ENET_PEER_STATE_DISCONNECT_LATER) { enet_peer_on_disconnect (peer); peer -> state = ENET_PEER_STATE_DISCONNECTING; } else { enet_host_flush (peer -> host); enet_peer_reset (peer); } } /** Request a disconnection from a peer, but only after all queued outgoing packets are sent. @param peer peer to request a disconnection @param data data describing the disconnection @remarks An ENET_EVENT_DISCONNECT event will be generated by enet_host_service() once the disconnection is complete. */ void enet_peer_disconnect_later (ENetPeer * peer, enet_uint32 data) { if ((peer -> state == ENET_PEER_STATE_CONNECTED || peer -> state == ENET_PEER_STATE_DISCONNECT_LATER) && ! (enet_list_empty (& peer -> outgoingReliableCommands) && enet_list_empty (& peer -> outgoingUnreliableCommands) && enet_list_empty (& peer -> sentReliableCommands))) { peer -> state = ENET_PEER_STATE_DISCONNECT_LATER; peer -> eventData = data; } else enet_peer_disconnect (peer, data); } ENetAcknowledgement * enet_peer_queue_acknowledgement (ENetPeer * peer, const ENetProtocol * command, enet_uint16 sentTime) { ENetAcknowledgement * acknowledgement; if (command -> header.channelID < peer -> channelCount) { ENetChannel * channel = & peer -> channels [command -> header.channelID]; enet_uint16 reliableWindow = command -> header.reliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE, currentWindow = channel -> incomingReliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE; if (command -> header.reliableSequenceNumber < channel -> incomingReliableSequenceNumber) reliableWindow += ENET_PEER_RELIABLE_WINDOWS; if (reliableWindow >= currentWindow + ENET_PEER_FREE_RELIABLE_WINDOWS - 1 && reliableWindow <= currentWindow + ENET_PEER_FREE_RELIABLE_WINDOWS) return NULL; } acknowledgement = (ENetAcknowledgement *) enet_malloc (sizeof (ENetAcknowledgement)); if (acknowledgement == NULL) return NULL; peer -> outgoingDataTotal += sizeof (ENetProtocolAcknowledge); acknowledgement -> sentTime = sentTime; acknowledgement -> command = * command; enet_list_insert (enet_list_end (& peer -> acknowledgements), acknowledgement); return acknowledgement; } void enet_peer_setup_outgoing_command (ENetPeer * peer, ENetOutgoingCommand * outgoingCommand) { ENetChannel * channel = & peer -> channels [outgoingCommand -> command.header.channelID]; peer -> outgoingDataTotal += enet_protocol_command_size (outgoingCommand -> command.header.command) + outgoingCommand -> fragmentLength; if (outgoingCommand -> command.header.channelID == 0xFF) { ++ peer -> outgoingReliableSequenceNumber; outgoingCommand -> reliableSequenceNumber = peer -> outgoingReliableSequenceNumber; outgoingCommand -> unreliableSequenceNumber = 0; } else if (outgoingCommand -> command.header.command & ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE) { ++ channel -> outgoingReliableSequenceNumber; channel -> outgoingUnreliableSequenceNumber = 0; outgoingCommand -> reliableSequenceNumber = channel -> outgoingReliableSequenceNumber; outgoingCommand -> unreliableSequenceNumber = 0; } else if (outgoingCommand -> command.header.command & ENET_PROTOCOL_COMMAND_FLAG_UNSEQUENCED) { ++ peer -> outgoingUnsequencedGroup; outgoingCommand -> reliableSequenceNumber = 0; outgoingCommand -> unreliableSequenceNumber = 0; } else { if (outgoingCommand -> fragmentOffset == 0) ++ channel -> outgoingUnreliableSequenceNumber; outgoingCommand -> reliableSequenceNumber = channel -> outgoingReliableSequenceNumber; outgoingCommand -> unreliableSequenceNumber = channel -> outgoingUnreliableSequenceNumber; } outgoingCommand -> sendAttempts = 0; outgoingCommand -> sentTime = 0; outgoingCommand -> roundTripTimeout = 0; outgoingCommand -> roundTripTimeoutLimit = 0; outgoingCommand -> command.header.reliableSequenceNumber = ENET_HOST_TO_NET_16 (outgoingCommand -> reliableSequenceNumber); switch (outgoingCommand -> command.header.command & ENET_PROTOCOL_COMMAND_MASK) { case ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE: outgoingCommand -> command.sendUnreliable.unreliableSequenceNumber = ENET_HOST_TO_NET_16 (outgoingCommand -> unreliableSequenceNumber); break; case ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED: outgoingCommand -> command.sendUnsequenced.unsequencedGroup = ENET_HOST_TO_NET_16 (peer -> outgoingUnsequencedGroup); break; default: break; } if (outgoingCommand -> command.header.command & ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE) enet_list_insert (enet_list_end (& peer -> outgoingReliableCommands), outgoingCommand); else enet_list_insert (enet_list_end (& peer -> outgoingUnreliableCommands), outgoingCommand); } ENetOutgoingCommand * enet_peer_queue_outgoing_command (ENetPeer * peer, const ENetProtocol * command, ENetPacket * packet, enet_uint32 offset, enet_uint16 length) { ENetOutgoingCommand * outgoingCommand = (ENetOutgoingCommand *) enet_malloc (sizeof (ENetOutgoingCommand)); if (outgoingCommand == NULL) return NULL; outgoingCommand -> command = * command; outgoingCommand -> fragmentOffset = offset; outgoingCommand -> fragmentLength = length; outgoingCommand -> packet = packet; if (packet != NULL) ++ packet -> referenceCount; enet_peer_setup_outgoing_command (peer, outgoingCommand); return outgoingCommand; } void enet_peer_dispatch_incoming_unreliable_commands (ENetPeer * peer, ENetChannel * channel) { ENetListIterator droppedCommand, startCommand, currentCommand; for (droppedCommand = startCommand = currentCommand = enet_list_begin (& channel -> incomingUnreliableCommands); currentCommand != enet_list_end (& channel -> incomingUnreliableCommands); currentCommand = enet_list_next (currentCommand)) { ENetIncomingCommand * incomingCommand = (ENetIncomingCommand *) currentCommand; if ((incomingCommand -> command.header.command & ENET_PROTOCOL_COMMAND_MASK) == ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED) continue; if (incomingCommand -> reliableSequenceNumber == channel -> incomingReliableSequenceNumber) { if (incomingCommand -> fragmentsRemaining <= 0) { channel -> incomingUnreliableSequenceNumber = incomingCommand -> unreliableSequenceNumber; continue; } if (startCommand != currentCommand) { enet_list_move (enet_list_end (& peer -> dispatchedCommands), startCommand, enet_list_previous (currentCommand)); if (! peer -> needsDispatch) { enet_list_insert (enet_list_end (& peer -> host -> dispatchQueue), & peer -> dispatchList); peer -> needsDispatch = 1; } droppedCommand = currentCommand; } else if (droppedCommand != currentCommand) droppedCommand = enet_list_previous (currentCommand); } else { enet_uint16 reliableWindow = incomingCommand -> reliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE, currentWindow = channel -> incomingReliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE; if (incomingCommand -> reliableSequenceNumber < channel -> incomingReliableSequenceNumber) reliableWindow += ENET_PEER_RELIABLE_WINDOWS; if (reliableWindow >= currentWindow && reliableWindow < currentWindow + ENET_PEER_FREE_RELIABLE_WINDOWS - 1) break; droppedCommand = enet_list_next (currentCommand); if (startCommand != currentCommand) { enet_list_move (enet_list_end (& peer -> dispatchedCommands), startCommand, enet_list_previous (currentCommand)); if (! peer -> needsDispatch) { enet_list_insert (enet_list_end (& peer -> host -> dispatchQueue), & peer -> dispatchList); peer -> needsDispatch = 1; } } } startCommand = enet_list_next (currentCommand); } if (startCommand != currentCommand) { enet_list_move (enet_list_end (& peer -> dispatchedCommands), startCommand, enet_list_previous (currentCommand)); if (! peer -> needsDispatch) { enet_list_insert (enet_list_end (& peer -> host -> dispatchQueue), & peer -> dispatchList); peer -> needsDispatch = 1; } droppedCommand = currentCommand; } enet_peer_remove_incoming_commands (& channel -> incomingUnreliableCommands, enet_list_begin (& channel -> incomingUnreliableCommands), droppedCommand); } void enet_peer_dispatch_incoming_reliable_commands (ENetPeer * peer, ENetChannel * channel) { ENetListIterator currentCommand; for (currentCommand = enet_list_begin (& channel -> incomingReliableCommands); currentCommand != enet_list_end (& channel -> incomingReliableCommands); currentCommand = enet_list_next (currentCommand)) { ENetIncomingCommand * incomingCommand = (ENetIncomingCommand *) currentCommand; if (incomingCommand -> fragmentsRemaining > 0 || incomingCommand -> reliableSequenceNumber != (enet_uint16) (channel -> incomingReliableSequenceNumber + 1)) break; channel -> incomingReliableSequenceNumber = incomingCommand -> reliableSequenceNumber; if (incomingCommand -> fragmentCount > 0) channel -> incomingReliableSequenceNumber += incomingCommand -> fragmentCount - 1; } if (currentCommand == enet_list_begin (& channel -> incomingReliableCommands)) return; channel -> incomingUnreliableSequenceNumber = 0; enet_list_move (enet_list_end (& peer -> dispatchedCommands), enet_list_begin (& channel -> incomingReliableCommands), enet_list_previous (currentCommand)); if (! peer -> needsDispatch) { enet_list_insert (enet_list_end (& peer -> host -> dispatchQueue), & peer -> dispatchList); peer -> needsDispatch = 1; } if (! enet_list_empty (& channel -> incomingUnreliableCommands)) enet_peer_dispatch_incoming_unreliable_commands (peer, channel); } ENetIncomingCommand * enet_peer_queue_incoming_command (ENetPeer * peer, const ENetProtocol * command, ENetPacket * packet, enet_uint32 fragmentCount) { static ENetIncomingCommand dummyCommand; ENetChannel * channel = & peer -> channels [command -> header.channelID]; enet_uint32 unreliableSequenceNumber = 0, reliableSequenceNumber = 0; enet_uint16 reliableWindow, currentWindow; ENetIncomingCommand * incomingCommand; ENetListIterator currentCommand; if (peer -> state == ENET_PEER_STATE_DISCONNECT_LATER) goto freePacket; if ((command -> header.command & ENET_PROTOCOL_COMMAND_MASK) != ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED) { reliableSequenceNumber = command -> header.reliableSequenceNumber; reliableWindow = reliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE; currentWindow = channel -> incomingReliableSequenceNumber / ENET_PEER_RELIABLE_WINDOW_SIZE; if (reliableSequenceNumber < channel -> incomingReliableSequenceNumber) reliableWindow += ENET_PEER_RELIABLE_WINDOWS; if (reliableWindow < currentWindow || reliableWindow >= currentWindow + ENET_PEER_FREE_RELIABLE_WINDOWS - 1) goto freePacket; } switch (command -> header.command & ENET_PROTOCOL_COMMAND_MASK) { case ENET_PROTOCOL_COMMAND_SEND_FRAGMENT: case ENET_PROTOCOL_COMMAND_SEND_RELIABLE: if (reliableSequenceNumber == channel -> incomingReliableSequenceNumber) goto freePacket; for (currentCommand = enet_list_previous (enet_list_end (& channel -> incomingReliableCommands)); currentCommand != enet_list_end (& channel -> incomingReliableCommands); currentCommand = enet_list_previous (currentCommand)) { incomingCommand = (ENetIncomingCommand *) currentCommand; if (reliableSequenceNumber >= channel -> incomingReliableSequenceNumber) { if (incomingCommand -> reliableSequenceNumber < channel -> incomingReliableSequenceNumber) continue; } else if (incomingCommand -> reliableSequenceNumber >= channel -> incomingReliableSequenceNumber) break; if (incomingCommand -> reliableSequenceNumber <= reliableSequenceNumber) { if (incomingCommand -> reliableSequenceNumber < reliableSequenceNumber) break; goto freePacket; } } break; case ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE: case ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE_FRAGMENT: unreliableSequenceNumber = ENET_NET_TO_HOST_16 (command -> sendUnreliable.unreliableSequenceNumber); if (reliableSequenceNumber == channel -> incomingReliableSequenceNumber && unreliableSequenceNumber <= channel -> incomingUnreliableSequenceNumber) goto freePacket; for (currentCommand = enet_list_previous (enet_list_end (& channel -> incomingUnreliableCommands)); currentCommand != enet_list_end (& channel -> incomingUnreliableCommands); currentCommand = enet_list_previous (currentCommand)) { incomingCommand = (ENetIncomingCommand *) currentCommand; if ((command -> header.command & ENET_PROTOCOL_COMMAND_MASK) == ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED) continue; if (reliableSequenceNumber >= channel -> incomingReliableSequenceNumber) { if (incomingCommand -> reliableSequenceNumber < channel -> incomingReliableSequenceNumber) continue; } else if (incomingCommand -> reliableSequenceNumber >= channel -> incomingReliableSequenceNumber) break; if (incomingCommand -> reliableSequenceNumber < reliableSequenceNumber) break; if (incomingCommand -> reliableSequenceNumber > reliableSequenceNumber) continue; if (incomingCommand -> unreliableSequenceNumber <= unreliableSequenceNumber) { if (incomingCommand -> unreliableSequenceNumber < unreliableSequenceNumber) break; goto freePacket; } } break; case ENET_PROTOCOL_COMMAND_SEND_UNSEQUENCED: currentCommand = enet_list_end (& channel -> incomingUnreliableCommands); break; default: goto freePacket; } incomingCommand = (ENetIncomingCommand *) enet_malloc (sizeof (ENetIncomingCommand)); if (incomingCommand == NULL) goto notifyError; incomingCommand -> reliableSequenceNumber = command -> header.reliableSequenceNumber; incomingCommand -> unreliableSequenceNumber = unreliableSequenceNumber & 0xFFFF; incomingCommand -> command = * command; incomingCommand -> fragmentCount = fragmentCount; incomingCommand -> fragmentsRemaining = fragmentCount; incomingCommand -> packet = packet; incomingCommand -> fragments = NULL; if (fragmentCount > 0) { if (fragmentCount <= ENET_PROTOCOL_MAXIMUM_FRAGMENT_COUNT) incomingCommand -> fragments = (enet_uint32 *) enet_malloc ((fragmentCount + 31) / 32 * sizeof (enet_uint32)); if (incomingCommand -> fragments == NULL) { enet_free (incomingCommand); goto notifyError; } memset (incomingCommand -> fragments, 0, (fragmentCount + 31) / 32 * sizeof (enet_uint32)); } if (packet != NULL) ++ packet -> referenceCount; enet_list_insert (enet_list_next (currentCommand), incomingCommand); switch (command -> header.command & ENET_PROTOCOL_COMMAND_MASK) { case ENET_PROTOCOL_COMMAND_SEND_FRAGMENT: case ENET_PROTOCOL_COMMAND_SEND_RELIABLE: enet_peer_dispatch_incoming_reliable_commands (peer, channel); break; default: enet_peer_dispatch_incoming_unreliable_commands (peer, channel); break; } return incomingCommand; freePacket: if (fragmentCount > 0) goto notifyError; if (packet != NULL && packet -> referenceCount == 0) enet_packet_destroy (packet); return & dummyCommand; notifyError: if (packet != NULL && packet -> referenceCount == 0) enet_packet_destroy (packet); return NULL; } /** @} */ love-0.9.1/src/libraries/enet/libenet/host.c0000644000000000000000000004313612316602166020737 0ustar00rootroot00000000000000/** @file host.c @brief ENet host management functions */ #define ENET_BUILDING_LIB 1 #include #include "enet/enet.h" /** @defgroup host ENet host functions @{ */ /** Creates a host for communicating to peers. @param address the address at which other peers may connect to this host. If NULL, then no peers may connect to the host. @param peerCount the maximum number of peers that should be allocated for the host. @param channelLimit the maximum number of channels allowed; if 0, then this is equivalent to ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT @param incomingBandwidth downstream bandwidth of the host in bytes/second; if 0, ENet will assume unlimited bandwidth. @param outgoingBandwidth upstream bandwidth of the host in bytes/second; if 0, ENet will assume unlimited bandwidth. @returns the host on success and NULL on failure @remarks ENet will strategically drop packets on specific sides of a connection between hosts to ensure the host's bandwidth is not overwhelmed. The bandwidth parameters also determine the window size of a connection which limits the amount of reliable packets that may be in transit at any given time. */ ENetHost * enet_host_create (const ENetAddress * address, size_t peerCount, size_t channelLimit, enet_uint32 incomingBandwidth, enet_uint32 outgoingBandwidth) { ENetHost * host; ENetPeer * currentPeer; if (peerCount > ENET_PROTOCOL_MAXIMUM_PEER_ID) return NULL; host = (ENetHost *) enet_malloc (sizeof (ENetHost)); if (host == NULL) return NULL; memset (host, 0, sizeof (ENetHost)); host -> peers = (ENetPeer *) enet_malloc (peerCount * sizeof (ENetPeer)); if (host -> peers == NULL) { enet_free (host); return NULL; } memset (host -> peers, 0, peerCount * sizeof (ENetPeer)); host -> socket = enet_socket_create (ENET_SOCKET_TYPE_DATAGRAM); if (host -> socket == ENET_SOCKET_NULL || (address != NULL && enet_socket_bind (host -> socket, address) < 0)) { if (host -> socket != ENET_SOCKET_NULL) enet_socket_destroy (host -> socket); enet_free (host -> peers); enet_free (host); return NULL; } enet_socket_set_option (host -> socket, ENET_SOCKOPT_NONBLOCK, 1); enet_socket_set_option (host -> socket, ENET_SOCKOPT_BROADCAST, 1); enet_socket_set_option (host -> socket, ENET_SOCKOPT_RCVBUF, ENET_HOST_RECEIVE_BUFFER_SIZE); enet_socket_set_option (host -> socket, ENET_SOCKOPT_SNDBUF, ENET_HOST_SEND_BUFFER_SIZE); if (address != NULL && enet_socket_get_address (host -> socket, & host -> address) < 0) host -> address = * address; if (! channelLimit || channelLimit > ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT) channelLimit = ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT; else if (channelLimit < ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT) channelLimit = ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT; host -> randomSeed = (enet_uint32) (size_t) host; host -> randomSeed += enet_host_random_seed (); host -> randomSeed = (host -> randomSeed << 16) | (host -> randomSeed >> 16); host -> channelLimit = channelLimit; host -> incomingBandwidth = incomingBandwidth; host -> outgoingBandwidth = outgoingBandwidth; host -> bandwidthThrottleEpoch = 0; host -> recalculateBandwidthLimits = 0; host -> mtu = ENET_HOST_DEFAULT_MTU; host -> peerCount = peerCount; host -> commandCount = 0; host -> bufferCount = 0; host -> checksum = NULL; host -> receivedAddress.host = ENET_HOST_ANY; host -> receivedAddress.port = 0; host -> receivedData = NULL; host -> receivedDataLength = 0; host -> totalSentData = 0; host -> totalSentPackets = 0; host -> totalReceivedData = 0; host -> totalReceivedPackets = 0; host -> connectedPeers = 0; host -> bandwidthLimitedPeers = 0; host -> duplicatePeers = ENET_PROTOCOL_MAXIMUM_PEER_ID; host -> compressor.context = NULL; host -> compressor.compress = NULL; host -> compressor.decompress = NULL; host -> compressor.destroy = NULL; host -> intercept = NULL; enet_list_clear (& host -> dispatchQueue); for (currentPeer = host -> peers; currentPeer < & host -> peers [host -> peerCount]; ++ currentPeer) { currentPeer -> host = host; currentPeer -> incomingPeerID = currentPeer - host -> peers; currentPeer -> outgoingSessionID = currentPeer -> incomingSessionID = 0xFF; currentPeer -> data = NULL; enet_list_clear (& currentPeer -> acknowledgements); enet_list_clear (& currentPeer -> sentReliableCommands); enet_list_clear (& currentPeer -> sentUnreliableCommands); enet_list_clear (& currentPeer -> outgoingReliableCommands); enet_list_clear (& currentPeer -> outgoingUnreliableCommands); enet_list_clear (& currentPeer -> dispatchedCommands); enet_peer_reset (currentPeer); } return host; } /** Destroys the host and all resources associated with it. @param host pointer to the host to destroy */ void enet_host_destroy (ENetHost * host) { ENetPeer * currentPeer; if (host == NULL) return; enet_socket_destroy (host -> socket); for (currentPeer = host -> peers; currentPeer < & host -> peers [host -> peerCount]; ++ currentPeer) { enet_peer_reset (currentPeer); } if (host -> compressor.context != NULL && host -> compressor.destroy) (* host -> compressor.destroy) (host -> compressor.context); enet_free (host -> peers); enet_free (host); } /** Initiates a connection to a foreign host. @param host host seeking the connection @param address destination for the connection @param channelCount number of channels to allocate @param data user data supplied to the receiving host @returns a peer representing the foreign host on success, NULL on failure @remarks The peer returned will have not completed the connection until enet_host_service() notifies of an ENET_EVENT_TYPE_CONNECT event for the peer. */ ENetPeer * enet_host_connect (ENetHost * host, const ENetAddress * address, size_t channelCount, enet_uint32 data) { ENetPeer * currentPeer; ENetChannel * channel; ENetProtocol command; if (channelCount < ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT) channelCount = ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT; else if (channelCount > ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT) channelCount = ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT; for (currentPeer = host -> peers; currentPeer < & host -> peers [host -> peerCount]; ++ currentPeer) { if (currentPeer -> state == ENET_PEER_STATE_DISCONNECTED) break; } if (currentPeer >= & host -> peers [host -> peerCount]) return NULL; currentPeer -> channels = (ENetChannel *) enet_malloc (channelCount * sizeof (ENetChannel)); if (currentPeer -> channels == NULL) return NULL; currentPeer -> channelCount = channelCount; currentPeer -> state = ENET_PEER_STATE_CONNECTING; currentPeer -> address = * address; currentPeer -> connectID = ++ host -> randomSeed; if (host -> outgoingBandwidth == 0) currentPeer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; else currentPeer -> windowSize = (host -> outgoingBandwidth / ENET_PEER_WINDOW_SIZE_SCALE) * ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; if (currentPeer -> windowSize < ENET_PROTOCOL_MINIMUM_WINDOW_SIZE) currentPeer -> windowSize = ENET_PROTOCOL_MINIMUM_WINDOW_SIZE; else if (currentPeer -> windowSize > ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE) currentPeer -> windowSize = ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE; for (channel = currentPeer -> channels; channel < & currentPeer -> channels [channelCount]; ++ channel) { channel -> outgoingReliableSequenceNumber = 0; channel -> outgoingUnreliableSequenceNumber = 0; channel -> incomingReliableSequenceNumber = 0; channel -> incomingUnreliableSequenceNumber = 0; enet_list_clear (& channel -> incomingReliableCommands); enet_list_clear (& channel -> incomingUnreliableCommands); channel -> usedReliableWindows = 0; memset (channel -> reliableWindows, 0, sizeof (channel -> reliableWindows)); } command.header.command = ENET_PROTOCOL_COMMAND_CONNECT | ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE; command.header.channelID = 0xFF; command.connect.outgoingPeerID = ENET_HOST_TO_NET_16 (currentPeer -> incomingPeerID); command.connect.incomingSessionID = currentPeer -> incomingSessionID; command.connect.outgoingSessionID = currentPeer -> outgoingSessionID; command.connect.mtu = ENET_HOST_TO_NET_32 (currentPeer -> mtu); command.connect.windowSize = ENET_HOST_TO_NET_32 (currentPeer -> windowSize); command.connect.channelCount = ENET_HOST_TO_NET_32 (channelCount); command.connect.incomingBandwidth = ENET_HOST_TO_NET_32 (host -> incomingBandwidth); command.connect.outgoingBandwidth = ENET_HOST_TO_NET_32 (host -> outgoingBandwidth); command.connect.packetThrottleInterval = ENET_HOST_TO_NET_32 (currentPeer -> packetThrottleInterval); command.connect.packetThrottleAcceleration = ENET_HOST_TO_NET_32 (currentPeer -> packetThrottleAcceleration); command.connect.packetThrottleDeceleration = ENET_HOST_TO_NET_32 (currentPeer -> packetThrottleDeceleration); command.connect.connectID = currentPeer -> connectID; command.connect.data = ENET_HOST_TO_NET_32 (data); enet_peer_queue_outgoing_command (currentPeer, & command, NULL, 0, 0); return currentPeer; } /** Queues a packet to be sent to all peers associated with the host. @param host host on which to broadcast the packet @param channelID channel on which to broadcast @param packet packet to broadcast */ void enet_host_broadcast (ENetHost * host, enet_uint8 channelID, ENetPacket * packet) { ENetPeer * currentPeer; for (currentPeer = host -> peers; currentPeer < & host -> peers [host -> peerCount]; ++ currentPeer) { if (currentPeer -> state != ENET_PEER_STATE_CONNECTED) continue; enet_peer_send (currentPeer, channelID, packet); } if (packet -> referenceCount == 0) enet_packet_destroy (packet); } /** Sets the packet compressor the host should use to compress and decompress packets. @param host host to enable or disable compression for @param compressor callbacks for for the packet compressor; if NULL, then compression is disabled */ void enet_host_compress (ENetHost * host, const ENetCompressor * compressor) { if (host -> compressor.context != NULL && host -> compressor.destroy) (* host -> compressor.destroy) (host -> compressor.context); if (compressor) host -> compressor = * compressor; else host -> compressor.context = NULL; } /** Limits the maximum allowed channels of future incoming connections. @param host host to limit @param channelLimit the maximum number of channels allowed; if 0, then this is equivalent to ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT */ void enet_host_channel_limit (ENetHost * host, size_t channelLimit) { if (! channelLimit || channelLimit > ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT) channelLimit = ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT; else if (channelLimit < ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT) channelLimit = ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT; host -> channelLimit = channelLimit; } /** Adjusts the bandwidth limits of a host. @param host host to adjust @param incomingBandwidth new incoming bandwidth @param outgoingBandwidth new outgoing bandwidth @remarks the incoming and outgoing bandwidth parameters are identical in function to those specified in enet_host_create(). */ void enet_host_bandwidth_limit (ENetHost * host, enet_uint32 incomingBandwidth, enet_uint32 outgoingBandwidth) { host -> incomingBandwidth = incomingBandwidth; host -> outgoingBandwidth = outgoingBandwidth; host -> recalculateBandwidthLimits = 1; } void enet_host_bandwidth_throttle (ENetHost * host) { enet_uint32 timeCurrent = enet_time_get (), elapsedTime = timeCurrent - host -> bandwidthThrottleEpoch, peersRemaining = (enet_uint32) host -> connectedPeers, dataTotal = ~0, bandwidth = ~0, throttle = 0, bandwidthLimit = 0; int needsAdjustment = host -> bandwidthLimitedPeers > 0 ? 1 : 0; ENetPeer * peer; ENetProtocol command; if (elapsedTime < ENET_HOST_BANDWIDTH_THROTTLE_INTERVAL) return; host -> bandwidthThrottleEpoch = timeCurrent; if (peersRemaining == 0) return; if (host -> outgoingBandwidth != 0) { dataTotal = 0; bandwidth = (host -> outgoingBandwidth * elapsedTime) / 1000; for (peer = host -> peers; peer < & host -> peers [host -> peerCount]; ++ peer) { if (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER) continue; dataTotal += peer -> outgoingDataTotal; } } while (peersRemaining > 0 && needsAdjustment != 0) { needsAdjustment = 0; if (dataTotal <= bandwidth) throttle = ENET_PEER_PACKET_THROTTLE_SCALE; else throttle = (bandwidth * ENET_PEER_PACKET_THROTTLE_SCALE) / dataTotal; for (peer = host -> peers; peer < & host -> peers [host -> peerCount]; ++ peer) { enet_uint32 peerBandwidth; if ((peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER) || peer -> incomingBandwidth == 0 || peer -> outgoingBandwidthThrottleEpoch == timeCurrent) continue; peerBandwidth = (peer -> incomingBandwidth * elapsedTime) / 1000; if ((throttle * peer -> outgoingDataTotal) / ENET_PEER_PACKET_THROTTLE_SCALE <= peerBandwidth) continue; peer -> packetThrottleLimit = (peerBandwidth * ENET_PEER_PACKET_THROTTLE_SCALE) / peer -> outgoingDataTotal; if (peer -> packetThrottleLimit == 0) peer -> packetThrottleLimit = 1; if (peer -> packetThrottle > peer -> packetThrottleLimit) peer -> packetThrottle = peer -> packetThrottleLimit; peer -> outgoingBandwidthThrottleEpoch = timeCurrent; peer -> incomingDataTotal = 0; peer -> outgoingDataTotal = 0; needsAdjustment = 1; -- peersRemaining; bandwidth -= peerBandwidth; dataTotal -= peerBandwidth; } } if (peersRemaining > 0) { if (dataTotal <= bandwidth) throttle = ENET_PEER_PACKET_THROTTLE_SCALE; else throttle = (bandwidth * ENET_PEER_PACKET_THROTTLE_SCALE) / dataTotal; for (peer = host -> peers; peer < & host -> peers [host -> peerCount]; ++ peer) { if ((peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER) || peer -> outgoingBandwidthThrottleEpoch == timeCurrent) continue; peer -> packetThrottleLimit = throttle; if (peer -> packetThrottle > peer -> packetThrottleLimit) peer -> packetThrottle = peer -> packetThrottleLimit; peer -> incomingDataTotal = 0; peer -> outgoingDataTotal = 0; } } if (host -> recalculateBandwidthLimits) { host -> recalculateBandwidthLimits = 0; peersRemaining = (enet_uint32) host -> connectedPeers; bandwidth = host -> incomingBandwidth; needsAdjustment = 1; if (bandwidth == 0) bandwidthLimit = 0; else while (peersRemaining > 0 && needsAdjustment != 0) { needsAdjustment = 0; bandwidthLimit = bandwidth / peersRemaining; for (peer = host -> peers; peer < & host -> peers [host -> peerCount]; ++ peer) { if ((peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER) || peer -> incomingBandwidthThrottleEpoch == timeCurrent) continue; if (peer -> outgoingBandwidth > 0 && peer -> outgoingBandwidth >= bandwidthLimit) continue; peer -> incomingBandwidthThrottleEpoch = timeCurrent; needsAdjustment = 1; -- peersRemaining; bandwidth -= peer -> outgoingBandwidth; } } for (peer = host -> peers; peer < & host -> peers [host -> peerCount]; ++ peer) { if (peer -> state != ENET_PEER_STATE_CONNECTED && peer -> state != ENET_PEER_STATE_DISCONNECT_LATER) continue; command.header.command = ENET_PROTOCOL_COMMAND_BANDWIDTH_LIMIT | ENET_PROTOCOL_COMMAND_FLAG_ACKNOWLEDGE; command.header.channelID = 0xFF; command.bandwidthLimit.outgoingBandwidth = ENET_HOST_TO_NET_32 (host -> outgoingBandwidth); if (peer -> incomingBandwidthThrottleEpoch == timeCurrent) command.bandwidthLimit.incomingBandwidth = ENET_HOST_TO_NET_32 (peer -> outgoingBandwidth); else command.bandwidthLimit.incomingBandwidth = ENET_HOST_TO_NET_32 (bandwidthLimit); enet_peer_queue_outgoing_command (peer, & command, NULL, 0, 0); } } } /** @} */ love-0.9.1/src/libraries/enet/enet.cpp0000644000000000000000000004351512316602166017634 0ustar00rootroot00000000000000/** * * Copyright (C) 2011 by Leaf Corcoran * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #include #include extern "C" { #define LUA_COMPAT_ALL #include "lua.h" #include "lualib.h" #include "lauxlib.h" #include } #define check_host(l, idx)\ *(ENetHost**)luaL_checkudata(l, idx, "enet_host") #define check_peer(l, idx)\ *(ENetPeer**)luaL_checkudata(l, idx, "enet_peer") /** * Parse address string, eg: * *:5959 * 127.0.0.1:* * website.com:8080 */ static void parse_address(lua_State *l, const char *addr_str, ENetAddress *address) { int host_i = 0, port_i = 0; char host_str[128] = {0}; char port_str[32] = {0}; int scanning_port = 0; char *c = (char *)addr_str; while (*c != 0) { if (host_i >= 128 || port_i >= 32 ) luaL_error(l, "Hostname too long"); if (scanning_port) { port_str[port_i++] = *c; } else { if (*c == ':') { scanning_port = 1; } else { host_str[host_i++] = *c; } } c++; } host_str[host_i] = '\0'; port_str[port_i] = '\0'; if (host_i == 0) luaL_error(l, "Failed to parse address"); if (port_i == 0) luaL_error(l, "Missing port in address"); if (strcmp("*", host_str) == 0) { address->host = ENET_HOST_ANY; } else { if (enet_address_set_host(address, host_str) != 0) { luaL_error(l, "Failed to resolve host name"); } } if (strcmp("*", port_str) == 0) { address->port = ENET_PORT_ANY; } else { address->port = atoi(port_str); } } /** * Find the index of a given peer for which we only have the pointer. */ static size_t find_peer_index(lua_State *l, ENetHost *enet_host, ENetPeer *peer) { size_t peer_index; for (peer_index = 0; peer_index < enet_host->peerCount; peer_index++) { if (peer == &(enet_host->peers[peer_index])) return peer_index; } luaL_error (l, "enet: could not find peer id!"); return peer_index; } static void push_peer(lua_State *l, ENetPeer *peer) { // try to find in peer table lua_getfield(l, LUA_REGISTRYINDEX, "enet_peers"); lua_pushlightuserdata(l, peer); lua_gettable(l, -2); if (lua_isnil(l, -1)) { // printf("creating new peer\n"); lua_pop(l, 1); *(ENetPeer**)lua_newuserdata(l, sizeof(void*)) = peer; luaL_getmetatable(l, "enet_peer"); lua_setmetatable(l, -2); lua_pushlightuserdata(l, peer); lua_pushvalue(l, -2); lua_settable(l, -4); } lua_remove(l, -2); // remove enet_peers } static void push_event(lua_State *l, ENetEvent *event) { lua_newtable(l); // event table if (event->peer) { push_peer(l, event->peer); lua_setfield(l, -2, "peer"); } switch (event->type) { case ENET_EVENT_TYPE_CONNECT: lua_pushinteger(l, event->data); lua_setfield(l, -2, "data"); lua_pushstring(l, "connect"); break; case ENET_EVENT_TYPE_DISCONNECT: lua_pushinteger(l, event->data); lua_setfield(l, -2, "data"); lua_pushstring(l, "disconnect"); break; case ENET_EVENT_TYPE_RECEIVE: lua_pushlstring(l, (const char *)event->packet->data, event->packet->dataLength); lua_setfield(l, -2, "data"); lua_pushinteger(l, event->channelID); lua_setfield(l, -2, "channel"); lua_pushstring(l, "receive"); enet_packet_destroy(event->packet); break; case ENET_EVENT_TYPE_NONE: lua_pushstring(l, "none"); break; } lua_setfield(l, -2, "type"); } /** * Read a packet off the stack as a string * idx is position of string */ static ENetPacket *read_packet(lua_State *l, int idx, enet_uint8 *channel_id) { size_t size; int argc = lua_gettop(l); const void *data = luaL_checklstring(l, idx, &size); ENetPacket *packet; enet_uint32 flags = ENET_PACKET_FLAG_RELIABLE; *channel_id = 0; if (argc >= idx+2 && !lua_isnil(l, idx+2)) { const char *flag_str = luaL_checkstring(l, idx+2); if (strcmp("unsequenced", flag_str) == 0) { flags = ENET_PACKET_FLAG_UNSEQUENCED; } else if (strcmp("reliable", flag_str) == 0) { flags = ENET_PACKET_FLAG_RELIABLE; } else if (strcmp("unreliable", flag_str) == 0) { flags = 0; } else { luaL_error(l, "Unknown packet flag: %s", flag_str); } } if (argc >= idx+1 && !lua_isnil(l, idx+1)) { *channel_id = luaL_checkint(l, idx+1); } packet = enet_packet_create(data, size, flags); if (packet == NULL) { luaL_error(l, "Failed to create packet"); } return packet; } /** * Create a new host * Args: * address (nil for client) * [peer_count = 64] * [channel_count = 1] * [in_bandwidth = 0] * [out_bandwidth = 0] */ static int host_create(lua_State *l) { ENetHost *host; size_t peer_count = 64, channel_count = 1; enet_uint32 in_bandwidth = 0, out_bandwidth = 0; int have_address = 1; ENetAddress address; if (lua_gettop(l) == 0 || lua_isnil(l, 1)) { have_address = 0; } else { parse_address(l, luaL_checkstring(l, 1), &address); } switch (lua_gettop(l)) { case 5: if (!lua_isnil(l, 5)) out_bandwidth = luaL_checkint(l, 5); case 4: if (!lua_isnil(l, 4)) in_bandwidth = luaL_checkint(l, 4); case 3: if (!lua_isnil(l, 3)) channel_count = luaL_checkint(l, 3); case 2: if (!lua_isnil(l, 2)) peer_count = luaL_checkint(l, 2); } // printf("host create, peers=%d, channels=%d, in=%d, out=%d\n", // peer_count, channel_count, in_bandwidth, out_bandwidth); host = enet_host_create(have_address ? &address : NULL, peer_count, channel_count, in_bandwidth, out_bandwidth); if (host == NULL) { lua_pushnil (l); lua_pushstring(l, "enet: failed to create host (already listening?)"); return 2; } *(ENetHost**)lua_newuserdata(l, sizeof(void*)) = host; luaL_getmetatable(l, "enet_host"); lua_setmetatable(l, -2); return 1; } static int linked_version(lua_State *l) { lua_pushfstring(l, "%d.%d.%d", ENET_VERSION_GET_MAJOR(enet_linked_version()), ENET_VERSION_GET_MINOR(enet_linked_version()), ENET_VERSION_GET_PATCH(enet_linked_version())); return 1; } /** * Serice a host * Args: * timeout * * Return * nil on no event * an event table on event */ static int host_service(lua_State *l) { ENetHost *host = check_host(l, 1); ENetEvent event; int timeout = 0, out; if (lua_gettop(l) > 1) timeout = luaL_checkint(l, 2); out = enet_host_service(host, &event, timeout); if (out == 0) return 0; if (out < 0) return luaL_error(l, "Error during service"); push_event(l, &event); return 1; } /** * Dispatch a single event if available */ static int host_check_events(lua_State *l) { ENetHost *host = check_host(l, 1); ENetEvent event; int out = enet_host_check_events(host, &event); if (out == 0) return 0; if (out < 0) return luaL_error(l, "Error checking event"); push_event(l, &event); return 1; } /** * Enables an adaptive order-2 PPM range coder for the transmitted data of * all peers. */ static int host_compress_with_range_coder(lua_State *l) { ENetHost *host = check_host(l, 1); int result = enet_host_compress_with_range_coder (host); if (result == 0) { lua_pushboolean (l, 1); } else { lua_pushboolean (l, 0); } return 1; } /** * Connect a host to an address * Args: * the address * [channel_count = 1] * [data = 0] */ static int host_connect(lua_State *l) { ENetHost *host = check_host(l, 1); ENetAddress address; ENetPeer *peer; enet_uint32 data = 0; size_t channel_count = 1; parse_address(l, luaL_checkstring(l, 2), &address); switch (lua_gettop(l)) { case 4: if (!lua_isnil(l, 4)) data = luaL_checkint(l, 4); case 3: if (!lua_isnil(l, 3)) channel_count = luaL_checkint(l, 3); } // printf("host connect, channels=%d, data=%d\n", channel_count, data); peer = enet_host_connect(host, &address, channel_count, data); if (peer == NULL) { return luaL_error(l, "Failed to create peer"); } push_peer(l, peer); return 1; } static int host_flush(lua_State *l) { ENetHost *host = check_host(l, 1); enet_host_flush(host); return 0; } static int host_broadcast(lua_State *l) { ENetHost *host = check_host(l, 1); enet_uint8 channel_id; ENetPacket *packet = read_packet(l, 2, &channel_id); enet_host_broadcast(host, channel_id, packet); return 0; } // Args: limit:number static int host_channel_limit(lua_State *l) { ENetHost *host = check_host(l, 1); int limit = luaL_checkint(l, 2); enet_host_channel_limit(host, limit); return 0; } static int host_bandwidth_limit(lua_State *l) { ENetHost *host = check_host(l, 1); enet_uint32 in_bandwidth = luaL_checkint(l, 2); enet_uint32 out_bandwidth = luaL_checkint(l, 2); enet_host_bandwidth_limit(host, in_bandwidth, out_bandwidth); return 0; } static int host_socket_get_address(lua_State *l) { ENetHost *host = check_host(l, 1); ENetAddress address; enet_socket_get_address (host->socket, &address); lua_pushfstring(l, "%d.%d.%d.%d:%d", ((address.host) & 0xFF), ((address.host >> 8) & 0xFF), ((address.host >> 16) & 0xFF), (address.host >> 24& 0xFF), address.port); return 1; } static int host_total_sent_data(lua_State *l) { ENetHost *host = check_host(l, 1); lua_pushinteger (l, host->totalSentData); return 1; } static int host_total_received_data(lua_State *l) { ENetHost *host = check_host(l, 1); lua_pushinteger (l, host->totalReceivedData); return 1; } static int host_service_time(lua_State *l) { ENetHost *host = check_host(l, 1); lua_pushinteger (l, host->serviceTime); return 1; } static int host_peer_count(lua_State *l) { ENetHost *host = check_host(l, 1); lua_pushinteger (l, host->peerCount); return 1; } static int host_get_peer(lua_State *l) { ENetHost *host = check_host(l, 1); int peer_index = luaL_checkint(l, 2) - 1; if (peer_index < 0 || ((size_t) peer_index) >= host->peerCount) { luaL_argerror (l, 2, "Invalid peer index"); } ENetPeer *peer = &(host->peers[peer_index]); push_peer (l, peer); return 1; } static int host_gc(lua_State *l) { ENetHost *host = check_host(l, 1); enet_host_destroy(host); return 0; } static int peer_tostring(lua_State *l) { ENetPeer *peer = check_peer(l, 1); char host_str[128]; enet_address_get_host_ip(&peer->address, host_str, 128); lua_pushstring(l, host_str); lua_pushstring(l, ":"); lua_pushinteger(l, peer->address.port); lua_concat(l, 3); return 1; } static int peer_ping(lua_State *l) { ENetPeer *peer = check_peer(l, 1); enet_peer_ping(peer); return 0; } static int peer_throttle_configure(lua_State *l) { ENetPeer *peer = check_peer(l, 1); enet_uint32 interval = luaL_checkint(l, 2); enet_uint32 acceleration = luaL_checkint(l, 3); enet_uint32 deceleration = luaL_checkint(l, 4); enet_peer_throttle_configure(peer, interval, acceleration, deceleration); return 0; } static int peer_round_trip_time(lua_State *l) { ENetPeer *peer = check_peer(l, 1); if (lua_gettop(l) > 1) { enet_uint32 round_trip_time = luaL_checkint(l, 2); peer->roundTripTime = round_trip_time; } lua_pushinteger (l, peer->roundTripTime); return 1; } static int peer_last_round_trip_time(lua_State *l) { ENetPeer *peer = check_peer(l, 1); if (lua_gettop(l) > 1) { enet_uint32 round_trip_time = luaL_checkint(l, 2); peer->lastRoundTripTime = round_trip_time; } lua_pushinteger (l, peer->lastRoundTripTime); return 1; } static int peer_ping_interval(lua_State *l) { ENetPeer *peer = check_peer(l, 1); if (lua_gettop(l) > 1) { enet_uint32 interval = luaL_checkint(l, 2); enet_peer_ping_interval (peer, interval); } lua_pushinteger (l, peer->pingInterval); return 1; } static int peer_timeout(lua_State *l) { ENetPeer *peer = check_peer(l, 1); enet_uint32 timeout_limit = 0; enet_uint32 timeout_minimum = 0; enet_uint32 timeout_maximum = 0; switch (lua_gettop(l)) { case 4: if (!lua_isnil(l, 4)) timeout_maximum = luaL_checkint(l, 4); case 3: if (!lua_isnil(l, 3)) timeout_minimum = luaL_checkint(l, 3); case 2: if (!lua_isnil(l, 2)) timeout_limit = luaL_checkint(l, 2); } enet_peer_timeout (peer, timeout_limit, timeout_minimum, timeout_maximum); lua_pushinteger (l, peer->timeoutLimit); lua_pushinteger (l, peer->timeoutMinimum); lua_pushinteger (l, peer->timeoutMaximum); return 3; } static int peer_disconnect(lua_State *l) { ENetPeer *peer = check_peer(l, 1); enet_uint32 data = lua_gettop(l) > 1 ? luaL_checkint(l, 2) : 0; enet_peer_disconnect(peer, data); return 0; } static int peer_disconnect_now(lua_State *l) { ENetPeer *peer = check_peer(l, 1); enet_uint32 data = lua_gettop(l) > 1 ? luaL_checkint(l, 2) : 0; enet_peer_disconnect_now(peer, data); return 0; } static int peer_disconnect_later(lua_State *l) { ENetPeer *peer = check_peer(l, 1); enet_uint32 data = lua_gettop(l) > 1 ? luaL_checkint(l, 2) : 0; enet_peer_disconnect_later(peer, data); return 0; } static int peer_index(lua_State *l) { ENetPeer *peer = check_peer(l, 1); size_t peer_index = find_peer_index (l, peer->host, peer); lua_pushinteger (l, peer_index + 1); return 1; } static int peer_state(lua_State *l) { ENetPeer *peer = check_peer(l, 1); switch (peer->state) { case (ENET_PEER_STATE_DISCONNECTED): lua_pushstring (l, "disconnected"); break; case (ENET_PEER_STATE_CONNECTING): lua_pushstring (l, "connecting"); break; case (ENET_PEER_STATE_ACKNOWLEDGING_CONNECT): lua_pushstring (l, "acknowledging_connect"); break; case (ENET_PEER_STATE_CONNECTION_PENDING): lua_pushstring (l, "connection_pending"); break; case (ENET_PEER_STATE_CONNECTION_SUCCEEDED): lua_pushstring (l, "connection_succeeded"); break; case (ENET_PEER_STATE_CONNECTED): lua_pushstring (l, "connected"); break; case (ENET_PEER_STATE_DISCONNECT_LATER): lua_pushstring (l, "disconnect_later"); break; case (ENET_PEER_STATE_DISCONNECTING): lua_pushstring (l, "disconnecting"); break; case (ENET_PEER_STATE_ACKNOWLEDGING_DISCONNECT): lua_pushstring (l, "acknowledging_disconnect"); break; case (ENET_PEER_STATE_ZOMBIE): lua_pushstring (l, "zombie"); break; default: lua_pushstring (l, "unknown"); } return 1; } static int peer_connect_id(lua_State *l) { ENetPeer *peer = check_peer(l, 1); lua_pushinteger (l, peer->connectID); return 1; } static int peer_reset(lua_State *l) { ENetPeer *peer = check_peer(l, 1); enet_peer_reset(peer); return 0; } static int peer_receive(lua_State *l) { ENetPeer *peer = check_peer(l, 1); ENetPacket *packet; enet_uint8 channel_id = 0; if (lua_gettop(l) > 1) { channel_id = luaL_checkint(l, 2); } packet = enet_peer_receive(peer, &channel_id); if (packet == NULL) return 0; lua_pushlstring(l, (const char *)packet->data, packet->dataLength); lua_pushinteger(l, channel_id); enet_packet_destroy(packet); return 2; } /** * Send a lua string to a peer * Args: * packet data, string * channel id * flags ["reliable", nil] * */ static int peer_send(lua_State *l) { ENetPeer *peer = check_peer(l, 1); enet_uint8 channel_id; ENetPacket *packet = read_packet(l, 2, &channel_id); // printf("sending, channel_id=%d\n", channel_id); enet_peer_send(peer, channel_id, packet); return 0; } static const struct luaL_Reg enet_funcs [] = { {"host_create", host_create}, {"linked_version", linked_version}, {NULL, NULL} }; static const struct luaL_Reg enet_host_funcs [] = { {"service", host_service}, {"check_events", host_check_events}, {"compress_with_range_coder", host_compress_with_range_coder}, {"connect", host_connect}, {"flush", host_flush}, {"broadcast", host_broadcast}, {"channel_limit", host_channel_limit}, {"bandwidth_limit", host_bandwidth_limit}, {"socket_get_address", host_socket_get_address}, // additional convenience functions (mostly accessors) {"total_sent_data", host_total_sent_data}, {"total_received_data", host_total_received_data}, {"service_time", host_service_time}, {"peer_count", host_peer_count}, {"get_peer", host_get_peer}, {NULL, NULL} }; static const struct luaL_Reg enet_peer_funcs [] = { {"disconnect", peer_disconnect}, {"disconnect_now", peer_disconnect_now}, {"disconnect_later", peer_disconnect_later}, {"reset", peer_reset}, {"ping", peer_ping}, {"receive", peer_receive}, {"send", peer_send}, {"throttle_configure", peer_throttle_configure}, {"ping_interval", peer_ping_interval}, {"timeout", peer_timeout}, // additional convenience functions to member variables {"index", peer_index}, {"state", peer_state}, {"connect_id", peer_connect_id}, {"round_trip_time", peer_round_trip_time}, {"last_round_trip_time", peer_last_round_trip_time}, {NULL, NULL} }; int luaopen_enet(lua_State *l) { enet_initialize(); atexit(enet_deinitialize); // create metatables luaL_newmetatable(l, "enet_host"); lua_newtable(l); // index luaL_register(l, NULL, enet_host_funcs); lua_setfield(l, -2, "__index"); lua_pushcfunction(l, host_gc); lua_setfield(l, -2, "__gc"); luaL_newmetatable(l, "enet_peer"); lua_newtable(l); luaL_register(l, NULL, enet_peer_funcs); lua_setfield(l, -2, "__index"); lua_pushcfunction(l, peer_tostring); lua_setfield(l, -2, "__tostring"); // set up peer table lua_newtable(l); lua_newtable(l); // metatable lua_pushstring(l, "v"); lua_setfield(l, -2, "__mode"); lua_setmetatable(l, -2); lua_setfield(l, LUA_REGISTRYINDEX, "enet_peers"); luaL_register(l, "enet", enet_funcs); // return the enet table created with luaL_register return 1; } love-0.9.1/src/libraries/enet/lua-enet.h0000644000000000000000000000201712316602166020050 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_LUAENET_LUAENET_H #define LOVE_LUAENET_LUAENET_H int luaopen_enet(lua_State * L); #endif // LOVE_LUAENET_LUAENET_H love-0.9.1/src/libraries/luasocket/0000755000000000000000000000000012316602463017224 5ustar00rootroot00000000000000love-0.9.1/src/libraries/luasocket/luasocket.cpp0000644000000000000000000000554612316602166021734 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #include "luasocket.h" // LuaSocket extern "C" { #include "libluasocket/luasocket.h" #include "libluasocket/mime.h" } // Quick macro for adding functions to // the preloder. #define PRELOAD(name, function) \ lua_getglobal(L, "package"); \ lua_getfield(L, -1, "preload"); \ lua_pushcfunction(L, function); \ lua_setfield(L, -2, name); \ lua_pop(L, 2); namespace love { namespace luasocket { int __open(lua_State * L) { // Preload code from LuaSocket. PRELOAD("socket.core", luaopen_socket_core); PRELOAD("mime.core", luaopen_mime_core); PRELOAD("socket", __open_luasocket_socket); PRELOAD("socket.ftp", __open_luasocket_ftp) PRELOAD("socket.http", __open_luasocket_http); PRELOAD("ltn12", __open_luasocket_ltn12); PRELOAD("mime", __open_luasocket_mime) PRELOAD("socket.smtp", __open_luasocket_smtp); PRELOAD("socket.tp", __open_luasocket_tp) PRELOAD("socket.url", __open_luasocket_url) // No need to register garbage collector function. return 0; } int __open_luasocket_socket(lua_State * L) { #include "libluasocket/socket.lua.h" lua_getglobal(L, "socket"); return 1; } int __open_luasocket_ftp(lua_State * L) { #include "libluasocket/ftp.lua.h" lua_getglobal(L, "socket.ftp"); return 1; } int __open_luasocket_http(lua_State * L) { #include "libluasocket/http.lua.h" lua_getglobal(L, "socket.http"); return 1; } int __open_luasocket_ltn12(lua_State * L) { #include "libluasocket/ltn12.lua.h" lua_getglobal(L, "ltn12"); return 1; } int __open_luasocket_mime(lua_State * L) { #include "libluasocket/mime.lua.h" lua_getglobal(L, "mime"); return 1; } int __open_luasocket_smtp(lua_State * L) { #include "libluasocket/smtp.lua.h" lua_getglobal(L, "socket.smtp"); return 1; } int __open_luasocket_tp(lua_State * L) { #include "libluasocket/tp.lua.h" lua_getglobal(L, "socket.tp"); return 1; } int __open_luasocket_url(lua_State * L) { #include "libluasocket/url.lua.h" lua_getglobal(L, "socket.url"); return 1; } } // luasocket } // love love-0.9.1/src/libraries/luasocket/luasocket.h0000644000000000000000000000321112316602166021364 0ustar00rootroot00000000000000/** * Copyright (c) 2006-2014 LOVE Development Team * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. **/ #ifndef LOVE_LUASOCKET_LUASOCKET_H #define LOVE_LUASOCKET_LUASOCKET_H // LOVE #include namespace love { namespace luasocket { int __open(lua_State * L); // Loaders for all lua files. We want to be able // to load these dynamically. (Identical in the LuaSocket // documentation. These functions wrap the parsing of code, etc). int __open_luasocket_socket(lua_State * L); int __open_luasocket_ftp(lua_State * L); int __open_luasocket_http(lua_State * L); int __open_luasocket_ltn12(lua_State * L); int __open_luasocket_mime(lua_State * L); int __open_luasocket_smtp(lua_State * L); int __open_luasocket_tp(lua_State * L); int __open_luasocket_url(lua_State * L); } // luasocket } // love #endif // LOVE_LUASOCKET_LUASOCKET_H love-0.9.1/src/libraries/luasocket/libluasocket/0000755000000000000000000000000012316602463021705 5ustar00rootroot00000000000000love-0.9.1/src/libraries/luasocket/libluasocket/buffer.h0000644000000000000000000000340012316602166023324 0ustar00rootroot00000000000000#ifndef BUF_H #define BUF_H /*=========================================================================*\ * Input/Output interface for Lua programs * LuaSocket toolkit * * Line patterns require buffering. Reading one character at a time involves * too many system calls and is very slow. This module implements the * LuaSocket interface for input/output on connected objects, as seen by * Lua programs. * * Input is buffered. Output is *not* buffered because there was no simple * way of making sure the buffered output data would ever be sent. * * The module is built on top of the I/O abstraction defined in io.h and the * timeout management is done with the timeout.h interface. * * RCS ID: $Id: buffer.h,v 1.12 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "io.h" #include "timeout.h" /* buffer size in bytes */ #define BUF_SIZE 8192 /* buffer control structure */ typedef struct t_buffer_ { double birthday; /* throttle support info: creation time, */ size_t sent, received; /* bytes sent, and bytes received */ p_io io; /* IO driver used for this buffer */ p_timeout tm; /* timeout management for this buffer */ size_t first, last; /* index of first and last bytes of stored data */ char data[BUF_SIZE]; /* storage space for buffer data */ } t_buffer; typedef t_buffer *p_buffer; int buffer_open(lua_State *L); void buffer_init(p_buffer buf, p_io io, p_timeout tm); int buffer_meth_send(lua_State *L, p_buffer buf); int buffer_meth_receive(lua_State *L, p_buffer buf); int buffer_meth_getstats(lua_State *L, p_buffer buf); int buffer_meth_setstats(lua_State *L, p_buffer buf); int buffer_isempty(p_buffer buf); #endif /* BUF_H */ love-0.9.1/src/libraries/luasocket/libluasocket/url.lua.h0000644000000000000000000012373012316602166023446 0ustar00rootroot00000000000000/* code automatically generated by bin2c -- DO NOT EDIT */ { /* #include'ing this file in a C program is equivalent to calling if (luaL_loadfile(L,"url.lua")==0) lua_call(L, 0, 0); */ /* url.lua */ static const unsigned char B1[]={ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 85, 82, 73, 32,112, 97,114,115,105,110,103, 44, 32, 99,111,109,112,111,115, 105,116,105,111,110, 32, 97,110,100, 32,114,101,108, 97,116,105,118,101, 32, 85, 82, 76, 32,114,101,115,111,108,117,116,105,111,110, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65, 117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,117,114,108, 46,108, 117, 97, 44,118, 32, 49, 46, 51, 56, 32, 50, 48, 48, 54, 47, 48, 52, 47, 48, 51, 32, 48, 52, 58, 52, 53, 58, 52, 50, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115, 116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97, 98,108,101, 32, 61, 32,114,101, 113,117,105,114,101, 40, 34,116, 97, 98,108,101, 34, 41, 10,109,111,100,117,108, 101, 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 77,111, 100,117,108,101, 32,118,101,114,115,105,111,110, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 95, 86, 69, 82, 83, 73, 79, 78, 32, 61, 32, 34, 85, 82, 76, 32, 49, 46, 48, 46, 49, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,110, 99,111, 100,101,115, 32, 97, 32,115,116,114,105,110,103, 32,105,110,116,111, 32,105,116, 115, 32,101,115, 99, 97,112,101,100, 32,104,101,120, 97,100,101, 99,105,109, 97, 108, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105,110, 97,114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,101,110, 99,111,100,101, 100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97,114,121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99, 116,105,111,110, 32,101,115, 99, 97,112,101, 40,115, 41, 10, 32, 32, 32, 32,114, 101,116,117,114,110, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44, 32, 34, 40, 91, 94, 65, 45, 90, 97, 45,122, 48, 45, 57, 95, 93, 41, 34, 44, 32, 102,117,110, 99,116,105,111,110, 40, 99, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37, 37, 37, 48, 50,120, 34, 44, 32,115,116,114,105,110,103, 46, 98,121, 116,101, 40, 99, 41, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80,114,111,116,101, 99,116,115, 32, 97, 32,112, 97,116,104, 32,115,101, 103,109,101,110,116, 44, 32,116,111, 32,112,114,101,118,101,110,116, 32,105,116, 32,102,114,111,109, 32,105,110,116,101,114,102,101,114,105,110,103, 32,119,105, 116,104, 32,116,104,101, 10, 45, 45, 32,117,114,108, 32,112, 97,114,115,105,110, 103, 46, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105,110, 97,114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32, 101,110, 99,111,100,101,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110, 116, 97,116,105,111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97,114,121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,109, 97,107, 101, 95,115,101,116, 40,116, 41, 10, 9,108,111, 99, 97,108, 32,115, 32, 61, 32, 123,125, 10, 9,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46, 105,112, 97,105,114,115, 40,116, 41, 32,100,111, 10, 9, 9,115, 91,116, 91,105, 93, 93, 32, 61, 32, 49, 10, 9,101,110,100, 10, 9,114,101,116,117,114,110, 32, 115, 10,101,110,100, 10, 10, 45, 45, 32,116,104,101,115,101, 32, 97,114,101, 32, 97,108,108,111,119,101,100, 32,119,105,116,104,105,110,103, 32, 97, 32,112, 97, 116,104, 32,115,101,103,109,101,110,116, 44, 32, 97,108,111,110,103, 32,119,105, 116,104, 32, 97,108,112,104, 97,110,117,109, 10, 45, 45, 32,111,116,104,101,114, 32, 99,104, 97,114, 97, 99,116,101,114,115, 32,109,117,115,116, 32, 98,101, 32, 101,115, 99, 97,112,101,100, 10,108,111, 99, 97,108, 32,115,101,103,109,101,110, 116, 95,115,101,116, 32, 61, 32,109, 97,107,101, 95,115,101,116, 32,123, 10, 32, 32, 32, 32, 34, 45, 34, 44, 32, 34, 95, 34, 44, 32, 34, 46, 34, 44, 32, 34, 33, 34, 44, 32, 34,126, 34, 44, 32, 34, 42, 34, 44, 32, 34, 39, 34, 44, 32, 34, 40, 34, 44, 10, 9, 34, 41, 34, 44, 32, 34, 58, 34, 44, 32, 34, 64, 34, 44, 32, 34, 38, 34, 44, 32, 34, 61, 34, 44, 32, 34, 43, 34, 44, 32, 34, 36, 34, 44, 32, 34, 44, 34, 44, 10,125, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111, 110, 32,112,114,111,116,101, 99,116, 95,115,101,103,109,101,110,116, 40,115, 41, 10, 9,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44, 32, 34, 40, 91, 94, 65, 45, 90, 97, 45,122, 48, 45, 57, 95, 93, 41, 34, 44, 32,102,117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 9, 9,105,102, 32,115,101,103,109,101,110,116, 95,115,101,116, 91, 99, 93, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99, 10, 9, 9,101,108,115,101, 32,114,101,116, 117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37, 37, 37, 48, 50,120, 34, 44, 32,115,116,114,105,110,103, 46, 98,121,116,101, 40, 99, 41, 41, 32,101,110,100, 10, 9,101,110,100, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,110, 99,111,100,101,115, 32, 97, 32,115,116,114,105,110,103, 32,105,110,116, 111, 32,105,116,115, 32,101,115, 99, 97,112,101,100, 32,104,101,120, 97,100,101, 99,105,109, 97,108, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105, 110, 97,114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,101,110, 99,111,100,101,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,116, 97, 116,105,111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97,114, 121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 102,117,110, 99,116,105,111,110, 32,117,110,101,115, 99, 97,112,101, 40,115, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,103, 115,117, 98, 40,115, 44, 32, 34, 37, 37, 40, 37,120, 37,120, 41, 34, 44, 32,102, 117,110, 99,116,105,111,110, 40,104,101,120, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46, 99,104, 97,114, 40, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,104,101,120, 44, 32, 49, 54, 41, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66, 117,105,108,100,115, 32, 97, 32,112, 97,116,104, 32,102,114,111,109, 32, 97, 32, 98, 97,115,101, 32,112, 97,116,104, 32, 97,110,100, 32, 97, 32,114,101,108, 97, 116,105,118,101, 32,112, 97,116,104, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32, 98, 97,115,101, 95,112, 97,116,104, 10, 45, 45, 32, 32, 32,114, 101,108, 97,116,105,118,101, 95,112, 97,116,104, 10, 45, 45, 32, 82,101,116,117, 114,110,115, 10, 45, 45, 32, 32, 32, 99,111,114,114,101,115,112,111,110,100,105, 110,103, 32, 97, 98,115,111,108,117,116,101, 32,112, 97,116,104, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97, 98,115,111,108,117,116,101, 95,112, 97,116,104, 40, 98, 97,115,101, 95,112, 97,116,104, 44, 32,114,101,108, 97,116, 105,118,101, 95,112, 97,116,104, 41, 10, 32, 32, 32, 32,105,102, 32,115,116,114, 105,110,103, 46,115,117, 98, 40,114,101,108, 97,116,105,118,101, 95,112, 97,116, 104, 44, 32, 49, 44, 32, 49, 41, 32, 61, 61, 32, 34, 47, 34, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,114,101,108, 97,116,105,118,101, 95,112, 97,116, 104, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112, 97,116,104, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40, 98, 97,115,101, 95, 112, 97,116,104, 44, 32, 34, 91, 94, 47, 93, 42, 36, 34, 44, 32, 34, 34, 41, 10, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,114, 101,108, 97,116,105,118,101, 95,112, 97,116,104, 10, 32, 32, 32, 32,112, 97,116, 104, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,112, 97,116,104, 44, 32, 34, 40, 91, 94, 47, 93, 42, 37, 46, 47, 41, 34, 44, 32,102,117,110, 99, 116,105,111,110, 32, 40,115, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 115, 32,126, 61, 32, 34, 46, 47, 34, 32,116,104,101,110, 32,114,101,116,117,114, 110, 32,115, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 34, 34, 32,101, 110,100, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,112, 97,116,104, 44, 32, 34, 47, 37, 46, 36, 34, 44, 32, 34, 47, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,100,117, 99,101,100, 10, 32, 32, 32, 32,119,104,105,108, 101, 32,114,101,100,117, 99,101,100, 32,126, 61, 32,112, 97,116,104, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,100,117, 99,101,100, 32, 61, 32,112, 97,116,104, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,115, 116,114,105,110,103, 46,103,115,117, 98, 40,114,101,100,117, 99,101,100, 44, 32, 34, 40, 91, 94, 47, 93, 42, 47, 37, 46, 37, 46, 47, 41, 34, 44, 32,102,117,110, 99,116,105,111,110, 32, 40,115, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115, 32,126, 61, 32, 34, 46, 46, 47, 46, 46, 47, 34, 32,116, 104,101,110, 32,114,101,116,117,114,110, 32, 34, 34, 32,101,108,115,101, 32,114, 101,116,117,114,110, 32,115, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 101,110,100, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,112, 97,116, 104, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,114,101,100,117, 99,101,100, 44, 32, 34, 40, 91, 94, 47, 93, 42, 47, 37, 46, 37, 46, 41, 36, 34, 44, 32,102,117,110, 99,116,105,111,110, 32, 40,115, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115, 32,126, 61, 32, 34, 46, 46, 47, 46, 46, 34, 32,116, 104,101,110, 32,114,101,116,117,114,110, 32, 34, 34, 32,101,108,115,101, 32,114, 101,116,117,114,110, 32,115, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,112, 97,116,104, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80, 97,114,115,101,115, 32, 97, 32,117,114,108, 32, 97,110,100, 32, 114,101,116,117,114,110,115, 32, 97, 32,116, 97, 98,108,101, 32,119,105,116,104, 32, 97,108,108, 32,105,116,115, 32,112, 97,114,116,115, 32, 97, 99, 99,111,114, 100,105,110,103, 32,116,111, 32, 82, 70, 67, 32, 50, 51, 57, 54, 10, 45, 45, 32, 84,104,101, 32,102,111,108,108,111,119,105,110,103, 32,103,114, 97,109,109, 97, 114, 32,100,101,115, 99,114,105, 98,101,115, 32,116,104,101, 32,110, 97,109,101, 115, 32,103,105,118,101,110, 32,116,111, 32,116,104,101, 32, 85, 82, 76, 32,112, 97,114,116,115, 10, 45, 45, 32, 60,117,114,108, 62, 32, 58, 58, 61, 32, 60,115, 99,104,101,109,101, 62, 58, 47, 47, 60, 97,117,116,104,111,114,105,116,121, 62, 47, 60,112, 97,116,104, 62, 59, 60,112, 97,114, 97,109,115, 62, 63, 60,113,117, 101,114,121, 62, 35, 60,102,114, 97,103,109,101,110,116, 62, 10, 45, 45, 32, 60, 97,117,116,104,111,114,105,116,121, 62, 32, 58, 58, 61, 32, 60,117,115,101,114, 105,110,102,111, 62, 64, 60,104,111,115,116, 62, 58, 60,112,111,114,116, 62, 10, 45, 45, 32, 60,117,115,101,114,105,110,102,111, 62, 32, 58, 58, 61, 32, 60,117, 115,101,114, 62, 91, 58, 60,112, 97,115,115,119,111,114,100, 62, 93, 10, 45, 45, 32, 60,112, 97,116,104, 62, 32, 58, 58, 32, 61, 32,123, 60,115,101,103,109,101, 110,116, 62, 47,125, 60,115,101,103,109,101,110,116, 62, 10, 45, 45, 32, 73,110, 112,117,116, 10, 45, 45, 32, 32, 32,117,114,108, 58, 32,117,110,105,102,111,114, 109, 32,114,101,115,111,117,114, 99,101, 32,108,111, 99, 97,116,111,114, 32,111, 102, 32,114,101,113,117,101,115,116, 10, 45, 45, 32, 32, 32,100,101,102, 97,117, 108,116, 58, 32,116, 97, 98,108,101, 32,119,105,116,104, 32,100,101,102, 97,117, 108,116, 32,118, 97,108,117,101,115, 32,102,111,114, 32,101, 97, 99,104, 32,102, 105,101,108,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,116, 97, 98,108,101, 32,119,105,116,104, 32,116,104,101, 32,102,111,108,108, 111,119,105,110,103, 32,102,105,101,108,100,115, 44, 32,119,104,101,114,101, 32, 82, 70, 67, 32,110, 97,109,105,110,103, 32, 99,111,110,118,101,110,116,105,111, 110,115, 32,104, 97,118,101, 10, 45, 45, 32, 32, 32, 98,101,101,110, 32,112,114, 101,115,101,114,118,101,100, 58, 10, 45, 45, 32, 32, 32, 32, 32,115, 99,104,101, 109,101, 44, 32, 97,117,116,104,111,114,105,116,121, 44, 32,117,115,101,114,105, 110,102,111, 44, 32,117,115,101,114, 44, 32,112, 97,115,115,119,111,114,100, 44, 32,104,111,115,116, 44, 32,112,111,114,116, 44, 10, 45, 45, 32, 32, 32, 32, 32, 112, 97,116,104, 44, 32,112, 97,114, 97,109,115, 44, 32,113,117,101,114,121, 44, 32,102,114, 97,103,109,101,110,116, 10, 45, 45, 32, 79, 98,115, 58, 10, 45, 45, 32, 32, 32,116,104,101, 32,108,101, 97,100,105,110,103, 32, 39, 47, 39, 32,105, 110, 32,123, 47, 60,112, 97,116,104, 62,125, 32,105,115, 32, 99,111,110,115,105, 100,101,114,101,100, 32,112, 97,114,116, 32,111,102, 32, 60,112, 97,116,104, 62, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102, 117,110, 99,116,105,111,110, 32,112, 97,114,115,101, 40,117,114,108, 44, 32,100, 101,102, 97,117,108,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,105,110,105,116,105, 97,108,105,122,101, 32,100,101,102, 97,117,108,116, 32,112, 97,114, 97,109,101, 116,101,114,115, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112, 97,114,115,101, 100, 32, 61, 32,123,125, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105, 110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,100,101,102, 97,117,108,116, 32,111,114, 32,112, 97,114,115,101,100, 41, 32,100,111, 32,112, 97,114,115,101, 100, 91,105, 93, 32, 61, 32,118, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32, 101,109,112,116,121, 32,117,114,108, 32,105,115, 32,112, 97,114,115,101,100, 32, 116,111, 32,110,105,108, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,117,114, 108, 32,111,114, 32,117,114,108, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32, 114,101,116,117,114,110, 32,110,105,108, 44, 32, 34,105,110,118, 97,108,105,100, 32,117,114,108, 34, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,114,101,109, 111,118,101, 32,119,104,105,116,101,115,112, 97, 99,101, 10, 32, 32, 32, 32, 45, 45, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40, 117,114,108, 44, 32, 34, 37,115, 34, 44, 32, 34, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,102,114, 97,103,109,101,110,116, 10, 32, 32, 32, 32,117, 114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,114,108, 44, 32, 34, 35, 40, 46, 42, 41, 36, 34, 44, 32,102,117,110, 99,116,105,111,110, 40,102, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101,100, 46,102, 114, 97,103,109,101,110,116, 32, 61, 32,102, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114,101,116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,115, 99,104,101,109,101, 10, 32, 32, 32, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117, 114,108, 44, 32, 34, 94, 40, 91, 37,119, 93, 91, 37,119, 37, 43, 37, 45, 37, 46, 93, 42, 41, 37, 58, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,117,110, 99, 116,105,111,110, 40,115, 41, 32,112, 97,114,115,101,100, 46,115, 99,104,101,109, 101, 32, 61, 32,115, 59, 32,114,101,116,117,114,110, 32, 34, 34, 32,101,110,100, 41, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32, 97,117,116,104,111,114,105, 116,121, 10, 32, 32, 32, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46, 103,115,117, 98, 40,117,114,108, 44, 32, 34, 94, 47, 47, 40, 91, 94, 47, 93, 42, 41, 34, 44, 32,102,117,110, 99,116,105,111,110, 40,110, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 32, 61, 32,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32, 45, 45, 32,103, 101,116, 32,113,117,101,114,121, 32,115,116,114,105,110,103,105,110,103, 10, 32, 32, 32, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,114,108, 44, 32, 34, 37, 63, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99, 116,105,111,110, 40,113, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115, 101,100, 46,113,117,101,114,121, 32, 61, 32,113, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,112, 97,114, 97,109,115, 10, 32, 32, 32, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40, 117,114,108, 44, 32, 34, 37, 59, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99,116, 105,111,110, 40,112, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101, 100, 46,112, 97,114, 97,109,115, 32, 61, 32,112, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32, 45, 45, 32,112, 97,116,104, 32,105,115, 32,119,104, 97,116,101, 118,101,114, 32,119, 97,115, 32,108,101,102,116, 10, 32, 32, 32, 32,105,102, 32, 117,114,108, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32,112, 97,114,115,101, 100, 46,112, 97,116,104, 32, 61, 32,117,114,108, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 32, 32, 32, 32, 105,102, 32,110,111,116, 32, 97,117,116,104,111,114,105,116,121, 32,116,104,101, 110, 32,114,101,116,117,114,110, 32,112, 97,114,115,101,100, 32,101,110,100, 10, 32, 32, 32, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,115,116,114,105, 110,103, 46,103,115,117, 98, 40, 97,117,116,104,111,114,105,116,121, 44, 34, 94, 40, 91, 94, 64, 93, 42, 41, 64, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,102, 117,110, 99,116,105,111,110, 40,117, 41, 32,112, 97,114,115,101,100, 46,117,115, 101,114,105,110,102,111, 32, 61, 32,117, 59, 32,114,101,116,117,114,110, 32, 34, 34, 32,101,110,100, 41, 10, 32, 32, 32, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40, 97,117,116,104,111, 114,105,116,121, 44, 32, 34, 58, 40, 91, 94, 58, 93, 42, 41, 36, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,117,110, 99,116,105,111,110, 40,112, 41, 32,112, 97,114,115,101,100, 46,112,111,114,116, 32, 61, 32,112, 59, 32,114,101,116,117, 114,110, 32, 34, 34, 32,101,110,100, 41, 10, 32, 32, 32, 32,105,102, 32, 97,117, 116,104,111,114,105,116,121, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32,112, 97,114,115,101,100, 46,104,111,115,116, 32, 61, 32, 97,117,116,104,111,114,105, 116,121, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117,115,101, 114,105,110,102,111, 32, 61, 32,112, 97,114,115,101,100, 46,117,115,101,114,105, 110,102,111, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,117,115,101,114,105, 110,102,111, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,112, 97,114,115, 101,100, 32,101,110,100, 10, 32, 32, 32, 32,117,115,101,114,105,110,102,111, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,115,101,114,105,110, 102,111, 44, 32, 34, 58, 40, 91, 94, 58, 93, 42, 41, 36, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,117,110, 99,116,105,111,110, 40,112, 41, 32,112, 97,114, 115,101,100, 46,112, 97,115,115,119,111,114,100, 32, 61, 32,112, 59, 32,114,101, 116,117,114,110, 32, 34, 34, 32,101,110,100, 41, 10, 32, 32, 32, 32,112, 97,114, 115,101,100, 46,117,115,101,114, 32, 61, 32,117,115,101,114,105,110,102,111, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,112, 97,114,115,101,100, 10,101,110, 100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 82,101, 98,117,105,108,100,115, 32, 97, 32,112, 97,114,115,101, 100, 32, 85, 82, 76, 32,102,114,111,109, 32,105,116,115, 32, 99,111,109,112,111, 110,101,110,116,115, 46, 10, 45, 45, 32, 67,111,109,112,111,110,101,110,116,115, 32, 97,114,101, 32,112,114,111,116,101, 99,116,101,100, 32,105,102, 32, 97,110, 121, 32,114,101,115,101,114,118,101,100, 32,111,114, 32,117,110, 97,108,108,111, 119,101,100, 32, 99,104, 97,114, 97, 99,116,101,114,115, 32, 97,114,101, 32,102, 111,117,110,100, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,112, 97,114,115,101,100, 58, 32,112, 97,114,115,101,100, 32, 85, 82, 76, 44, 32, 97, 115, 32,114,101,116,117,114,110,101,100, 32, 98,121, 32,112, 97,114,115,101, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32, 97, 32,115,116, 114,105,110,103,105,110,103, 32,119,105,116,104, 32,116,104,101, 32, 99,111,114, 114,101,115,112,111,110,100,105,110,103, 32, 85, 82, 76, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111, 110, 32, 98,117,105,108,100, 40,112, 97,114,115,101,100, 41, 10, 32, 32, 32, 32, 108,111, 99, 97,108, 32,112,112, 97,116,104, 32, 61, 32,112, 97,114,115,101, 95, 112, 97,116,104, 40,112, 97,114,115,101,100, 46,112, 97,116,104, 32,111,114, 32, 34, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32, 98,117,105,108,100, 95,112, 97,116,104, 40,112,112, 97,116,104, 41, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32,116, 104,101,110, 32,117,114,108, 32, 61, 32,117,114,108, 32, 46, 46, 32, 34, 59, 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32,101,110, 100, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,113,117,101,114, 121, 32,116,104,101,110, 32,117,114,108, 32, 61, 32,117,114,108, 32, 46, 46, 32, 34, 63, 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,113,117,101,114,121, 32, 101,110,100, 10, 9,108,111, 99, 97,108, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 9,105,102, 32,112, 97,114,115,101,100, 46,104,111,115,116, 32,116,104,101,110, 10, 9, 9, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97,114,115,101, 100, 46,104,111,115,116, 10, 9, 9,105,102, 32,112, 97,114,115,101,100, 46,112, 111,114,116, 32,116,104,101,110, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32, 97,117,116,104,111,114,105,116,121, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,112,111,114,116, 32,101,110,100, 10, 9, 9,108, 111, 99, 97,108, 32,117,115,101,114,105,110,102,111, 32, 61, 32,112, 97,114,115, 101,100, 46,117,115,101,114,105,110,102,111, 10, 9, 9,105,102, 32,112, 97,114, 115,101,100, 46,117,115,101,114, 32,116,104,101,110, 10, 9, 9, 9,117,115,101, 114,105,110,102,111, 32, 61, 32,112, 97,114,115,101,100, 46,117,115,101,114, 10, 9, 9, 9,105,102, 32,112, 97,114,115,101,100, 46,112, 97,115,115,119,111,114, 100, 32,116,104,101,110, 10, 9, 9, 9, 9,117,115,101,114,105,110,102,111, 32, 61, 32,117,115,101,114,105,110,102,111, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,112, 97,115,115,119,111,114,100, 10, 9, 9, 9, 101,110,100, 10, 9, 9,101,110,100, 10, 9, 9,105,102, 32,117,115,101,114,105, 110,102,111, 32,116,104,101,110, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,117,115,101,114,105,110,102,111, 32, 46, 46, 32, 34, 64, 34, 32, 46, 46, 32, 97,117,116,104,111,114,105,116,121, 32,101,110,100, 10, 9,101,110,100, 10, 32, 32, 32, 32,105,102, 32, 97,117,116,104,111,114,105,116,121, 32,116,104,101,110, 32,117,114,108, 32, 61, 32, 34, 47, 47, 34, 32, 46, 46, 32, 97,117,116,104,111, 114,105,116,121, 32, 46, 46, 32,117,114,108, 32,101,110,100, 10, 32, 32, 32, 32, 105,102, 32,112, 97,114,115,101,100, 46,115, 99,104,101,109,101, 32,116,104,101, 110, 32,117,114,108, 32, 61, 32,112, 97,114,115,101,100, 46,115, 99,104,101,109, 101, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,117,114,108, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,102,114, 97,103,109,101, 110,116, 32,116,104,101,110, 32,117,114,108, 32, 61, 32,117,114,108, 32, 46, 46, 32, 34, 35, 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,102,114, 97,103,109, 101,110,116, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,114,108, 44, 32, 34, 37, 115, 34, 44, 32, 34, 34, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,117, 114,108, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,117,105,108,100,115, 32, 97, 32, 97, 98, 115,111,108,117,116,101, 32, 85, 82, 76, 32,102,114,111,109, 32, 97, 32, 98, 97, 115,101, 32, 97,110,100, 32, 97, 32,114,101,108, 97,116,105,118,101, 32, 85, 82, 76, 32, 97, 99, 99,111,114,100,105,110,103, 32,116,111, 32, 82, 70, 67, 32, 50, 51, 57, 54, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32, 98, 97, 115,101, 95,117,114,108, 10, 45, 45, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,117,114,108, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32, 99,111,114,114,101,115,112,111,110,100,105,110,103, 32, 97, 98,115,111,108, 117,116,101, 32,117,114,108, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 97, 98,115,111,108, 117,116,101, 40, 98, 97,115,101, 95,117,114,108, 44, 32,114,101,108, 97,116,105, 118,101, 95,117,114,108, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46, 116,121,112,101, 40, 98, 97,115,101, 95,117,114,108, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 32, 61, 32, 98, 97,115,101, 95,117,114, 108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 95,117,114,108, 32, 61, 32, 98,117,105,108,100, 40, 98, 97,115,101, 95,112, 97,114,115,101,100, 41, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115, 101, 95,112, 97,114,115,101,100, 32, 61, 32,112, 97,114,115,101, 40, 98, 97,115, 101, 95,117,114,108, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108, 111, 99, 97,108, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 32, 61, 32,112, 97,114,115,101, 40,114,101,108, 97,116,105,118,101, 95,117,114, 108, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,114,101, 108, 97,116,105,118,101, 95,117,114,108, 10, 32, 32, 32, 32,101,108,115,101,105, 102, 32,110,111,116, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101, 100, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 95,117, 114,108, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32,114,101,108, 97,116,105, 118,101, 95,112, 97,114,115,101,100, 46,115, 99,104,101,109,101, 32,116,104,101, 110, 32,114,101,116,117,114,110, 32,114,101,108, 97,116,105,118,101, 95,117,114, 108, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114, 101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,115, 99,104,101,109, 101, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 46,115, 99,104,101, 109,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101, 108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46, 97,117,116,104,111,114, 105,116,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46, 97,117,116, 104,111,114,105,116,121, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, 32, 61, 32, 98, 97,115,101, 95, 112, 97,114,115,101,100, 46,112, 97,116,104, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,108, 97,116, 105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32,116,104, 101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 46, 112, 97,114, 97,109,115, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,108, 97,116,105, 118,101, 95,112, 97,114,115,101,100, 46,113,117,101,114,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,113,117,101,114,121, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 46,113,117,101,114,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114, 115,101,100, 46,112, 97,116,104, 32, 61, 32, 97, 98,115,111,108,117,116,101, 95, 112, 97,116,104, 40, 98, 97,115,101, 95,112, 97,114,115,101,100, 46,112, 97,116, 104, 32,111,114, 32, 34, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97, 114,115,101,100, 46,112, 97,116,104, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98,117,105,108,100, 40, 114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,114,101, 97,107,115, 32, 97, 32, 112, 97,116,104, 32,105,110,116,111, 32,105,116,115, 32,115,101,103,109,101,110, 116,115, 44, 32,117,110,101,115, 99, 97,112,105,110,103, 32,116,104,101, 32,115, 101,103,109,101,110,116,115, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,112, 97,116,104, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,115,101,103,109,101,110,116, 58, 32, 97, 32,116, 97, 98,108,101, 32, 119,105,116,104, 32,111,110,101, 32,101,110,116,114,121, 32,112,101,114, 32,115, 101,103,109,101,110,116, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32,112, 97,114,115,101, 95, 112, 97,116,104, 40,112, 97,116,104, 41, 10, 9,108,111, 99, 97,108, 32,112, 97, 114,115,101,100, 32, 61, 32,123,125, 10, 9,112, 97,116,104, 32, 61, 32,112, 97, 116,104, 32,111,114, 32, 34, 34, 10, 9, 45, 45,112, 97,116,104, 32, 61, 32,115, 116,114,105,110,103, 46,103,115,117, 98, 40,112, 97,116,104, 44, 32, 34, 37,115, 34, 44, 32, 34, 34, 41, 10, 9,115,116,114,105,110,103, 46,103,115,117, 98, 40, 112, 97,116,104, 44, 32, 34, 40, 91, 94, 47, 93, 43, 41, 34, 44, 32,102,117,110, 99,116,105,111,110, 32, 40,115, 41, 32,116, 97, 98,108,101, 46,105,110,115,101, 114,116, 40,112, 97,114,115,101,100, 44, 32,115, 41, 32,101,110,100, 41, 10, 9, 102,111,114, 32,105, 32, 61, 32, 49, 44, 32,116, 97, 98,108,101, 46,103,101,116, 110, 40,112, 97,114,115,101,100, 41, 32,100,111, 10, 9, 9,112, 97,114,115,101, 100, 91,105, 93, 32, 61, 32,117,110,101,115, 99, 97,112,101, 40,112, 97,114,115, 101,100, 91,105, 93, 41, 10, 9,101,110,100, 10, 9,105,102, 32,115,116,114,105, 110,103, 46,115,117, 98, 40,112, 97,116,104, 44, 32, 49, 44, 32, 49, 41, 32, 61, 61, 32, 34, 47, 34, 32,116,104,101,110, 32,112, 97,114,115,101,100, 46,105,115, 95, 97, 98,115,111,108,117,116,101, 32, 61, 32, 49, 32,101,110,100, 10, 9,105, 102, 32,115,116,114,105,110,103, 46,115,117, 98, 40,112, 97,116,104, 44, 32, 45, 49, 44, 32, 45, 49, 41, 32, 61, 61, 32, 34, 47, 34, 32,116,104,101,110, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116,111,114,121, 32, 61, 32, 49, 32,101,110,100, 10, 9,114,101,116,117,114,110, 32,112, 97,114,115,101, 100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,117,105,108,100,115, 32, 97, 32,112, 97,116, 104, 32, 99,111,109,112,111,110,101,110,116, 32,102,114,111,109, 32,105,116,115, 32,115,101,103,109,101,110,116,115, 44, 32,101,115, 99, 97,112,105,110,103, 32, 112,114,111,116,101, 99,116,101,100, 32, 99,104, 97,114, 97, 99,116,101,114,115, 46, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,112, 97,114,115, 101,100, 58, 32,112, 97,116,104, 32,115,101,103,109,101,110,116,115, 10, 45, 45, 32, 32, 32,117,110,115, 97,102,101, 58, 32,105,102, 32,116,114,117,101, 44, 32, 115,101,103,109,101,110,116,115, 32, 97,114,101, 32,110,111,116, 32,112,114,111, 116,101, 99,116,101,100, 32, 98,101,102,111,114,101, 32,112, 97,116,104, 32,105, 115, 32, 98,117,105,108,116, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,112, 97,116,104, 58, 32, 99,111,114,114,101,115,112,111,110,100, 105,110,103, 32,112, 97,116,104, 32,115,116,114,105,110,103,105,110,103, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 98,117,105,108,100, 95,112, 97,116,104, 40,112, 97,114, 115,101,100, 44, 32,117,110,115, 97,102,101, 41, 10, 9,108,111, 99, 97,108, 32, 112, 97,116,104, 32, 61, 32, 34, 34, 10, 9,108,111, 99, 97,108, 32,110, 32, 61, 32,116, 97, 98,108,101, 46,103,101,116,110, 40,112, 97,114,115,101,100, 41, 10, 9,105,102, 32,117,110,115, 97,102,101, 32,116,104,101,110, 10, 9, 9,102,111, 114, 32,105, 32, 61, 32, 49, 44, 32,110, 45, 49, 32,100,111, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,112, 97,114,115,101,100, 91,105, 93, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32, 34, 47, 34, 10, 9, 9,101,110,100, 10, 9, 9,105,102, 32,110, 32, 62, 32, 48, 32,116,104,101,110, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97, 116,104, 32, 46, 46, 32,112, 97,114,115,101,100, 91,110, 93, 10, 9, 9, 9,105, 102, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116,111,114, 121, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32, 34, 47, 34, 32,101,110,100, 10, 9, 9,101,110,100, 10, 9,101,108,115, 101, 10, 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32,110, 45, 49, 32,100, 111, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32, 112,114,111,116,101, 99,116, 95,115,101,103,109,101,110,116, 40,112, 97,114,115, 101,100, 91,105, 93, 41, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116, 104, 32, 46, 46, 32, 34, 47, 34, 10, 9, 9,101,110,100, 10, 9, 9,105,102, 32, 110, 32, 62, 32, 48, 32,116,104,101,110, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,112,114,111,116,101, 99,116, 95,115,101,103, 109,101,110,116, 40,112, 97,114,115,101,100, 91,110, 93, 41, 10, 9, 9, 9,105, 102, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116,111,114, 121, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32, 34, 47, 34, 32,101,110,100, 10, 9, 9,101,110,100, 10, 9,101,110,100, 10, 9,105,102, 32,112, 97,114,115,101,100, 46,105,115, 95, 97, 98,115,111,108, 117,116,101, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32, 34, 47, 34, 32, 46, 46, 32,112, 97,116,104, 32,101,110,100, 10, 9,114,101,116,117,114,110, 32, 112, 97,116,104, 10,101,110,100, 10, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"url.lua")==0) lua_call(L, 0, 0); } love-0.9.1/src/libraries/luasocket/libluasocket/lua.h0000644000000000000000000000056612316602166022646 0ustar00rootroot00000000000000#ifndef LUA_WRAP_H #define LUA_WRAP_H #define LUA_COMPAT_ALL #include #include #include #if LUA_VERSION_NUM > 501 # define luaL_reg luaL_Reg # define luaL_putchar(B, c) luaL_addchar(B, c) # define luaL_typerror(L, n, t) luax_typerror(L, n, t) extern int luax_typerror(lua_State *L, int narg, const char *type); #endif #endif // LUA_WRAP_H love-0.9.1/src/libraries/luasocket/libluasocket/timeout.h0000644000000000000000000000202112316602166023537 0ustar00rootroot00000000000000#ifndef TIMEOUT_H #define TIMEOUT_H /*=========================================================================*\ * Timeout management functions * LuaSocket toolkit * * RCS ID: $Id: timeout.h,v 1.14 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" /* timeout control structure */ typedef struct t_timeout_ { double block; /* maximum time for blocking calls */ double total; /* total number of miliseconds for operation */ double start; /* time of start of operation */ } t_timeout; typedef t_timeout *p_timeout; int timeout_open(lua_State *L); void timeout_init(p_timeout tm, double block, double total); double timeout_get(p_timeout tm); double timeout_getretry(p_timeout tm); p_timeout timeout_markstart(p_timeout tm); double timeout_getstart(p_timeout tm); double timeout_gettime(void); int timeout_meth_settimeout(lua_State *L, p_timeout tm); #define timeout_iszero(tm) ((tm)->block == 0.0) #endif /* TIMEOUT_H */ love-0.9.1/src/libraries/luasocket/libluasocket/options.h0000644000000000000000000000235412316602166023555 0ustar00rootroot00000000000000#ifndef OPTIONS_H #define OPTIONS_H /*=========================================================================*\ * Common option interface * LuaSocket toolkit * * This module provides a common interface to socket options, used mainly by * modules UDP and TCP. * * RCS ID: $Id: options.h,v 1.4 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "socket.h" /* option registry */ typedef struct t_opt { const char *name; int (*func)(lua_State *L, p_socket ps); } t_opt; typedef t_opt *p_opt; /* supported options */ int opt_dontroute(lua_State *L, p_socket ps); int opt_broadcast(lua_State *L, p_socket ps); int opt_reuseaddr(lua_State *L, p_socket ps); int opt_tcp_nodelay(lua_State *L, p_socket ps); int opt_keepalive(lua_State *L, p_socket ps); int opt_linger(lua_State *L, p_socket ps); int opt_reuseaddr(lua_State *L, p_socket ps); int opt_ip_multicast_ttl(lua_State *L, p_socket ps); int opt_ip_multicast_loop(lua_State *L, p_socket ps); int opt_ip_add_membership(lua_State *L, p_socket ps); int opt_ip_drop_membersip(lua_State *L, p_socket ps); /* invokes the appropriate option handler */ int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps); #endif love-0.9.1/src/libraries/luasocket/libluasocket/auxiliar.h0000644000000000000000000000424612316602166023702 0ustar00rootroot00000000000000#ifndef AUXILIAR_H #define AUXILIAR_H /*=========================================================================*\ * Auxiliar routines for class hierarchy manipulation * LuaSocket toolkit (but completely independent of other LuaSocket modules) * * A LuaSocket class is a name associated with Lua metatables. A LuaSocket * group is a name associated with a class. A class can belong to any number * of groups. This module provides the functionality to: * * - create new classes * - add classes to groups * - set the class of objects * - check if an object belongs to a given class or group * - get the userdata associated to objects * - print objects in a pretty way * * LuaSocket class names follow the convention {}. Modules * can define any number of classes and groups. The module tcp.c, for * example, defines the classes tcp{master}, tcp{client} and tcp{server} and * the groups tcp{client,server} and tcp{any}. Module functions can then * perform type-checking on their arguments by either class or group. * * LuaSocket metatables define the __index metamethod as being a table. This * table has one field for each method supported by the class, and a field * "class" with the class name. * * The mapping from class name to the corresponding metatable and the * reverse mapping are done using lauxlib. * * RCS ID: $Id: auxiliar.h,v 1.9 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "lauxlib.h" int auxiliar_open(lua_State *L); void auxiliar_newclass(lua_State *L, const char *classname, luaL_reg *func); void auxiliar_add2group(lua_State *L, const char *classname, const char *group); void auxiliar_setclass(lua_State *L, const char *classname, int objidx); void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx); void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx); void *auxiliar_getclassudata(lua_State *L, const char *groupname, int objidx); void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx); int auxiliar_checkboolean(lua_State *L, int objidx); int auxiliar_tostring(lua_State *L); #endif /* AUXILIAR_H */ love-0.9.1/src/libraries/luasocket/libluasocket/udp.c0000644000000000000000000002727712316602166022660 0ustar00rootroot00000000000000/*=========================================================================*\ * UDP object * LuaSocket toolkit * * RCS ID: $Id: udp.c,v 1.29 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include #include "lua.h" #include "lauxlib.h" #include "auxiliar.h" #include "socket.h" #include "inet.h" #include "options.h" #include "udp.h" /* min and max macros */ #ifndef MIN #define MIN(x, y) ((x) < (y) ? x : y) #endif #ifndef MAX #define MAX(x, y) ((x) > (y) ? x : y) #endif /*=========================================================================*\ * Internal function prototypes \*=========================================================================*/ static int global_create(lua_State *L); static int meth_send(lua_State *L); static int meth_sendto(lua_State *L); static int meth_receive(lua_State *L); static int meth_receivefrom(lua_State *L); static int meth_getsockname(lua_State *L); static int meth_getpeername(lua_State *L); static int meth_setsockname(lua_State *L); static int meth_setpeername(lua_State *L); static int meth_close(lua_State *L); static int meth_setoption(lua_State *L); static int meth_settimeout(lua_State *L); static int meth_getfd(lua_State *L); static int meth_setfd(lua_State *L); static int meth_dirty(lua_State *L); /* udp object methods */ static luaL_reg udp[] = { {"__gc", meth_close}, {"__tostring", auxiliar_tostring}, {"close", meth_close}, {"dirty", meth_dirty}, {"getfd", meth_getfd}, {"getpeername", meth_getpeername}, {"getsockname", meth_getsockname}, {"receive", meth_receive}, {"receivefrom", meth_receivefrom}, {"send", meth_send}, {"sendto", meth_sendto}, {"setfd", meth_setfd}, {"setoption", meth_setoption}, {"setpeername", meth_setpeername}, {"setsockname", meth_setsockname}, {"settimeout", meth_settimeout}, {NULL, NULL} }; /* socket options */ static t_opt opt[] = { {"dontroute", opt_dontroute}, {"broadcast", opt_broadcast}, {"reuseaddr", opt_reuseaddr}, {"ip-multicast-ttl", opt_ip_multicast_ttl}, {"ip-multicast-loop", opt_ip_multicast_loop}, {"ip-add-membership", opt_ip_add_membership}, {"ip-drop-membership", opt_ip_drop_membersip}, {NULL, NULL} }; /* functions in library namespace */ static luaL_reg func[] = { {"udp", global_create}, {NULL, NULL} }; /*-------------------------------------------------------------------------*\ * Initializes module \*-------------------------------------------------------------------------*/ int udp_open(lua_State *L) { /* create classes */ auxiliar_newclass(L, "udp{connected}", udp); auxiliar_newclass(L, "udp{unconnected}", udp); /* create class groups */ auxiliar_add2group(L, "udp{connected}", "udp{any}"); auxiliar_add2group(L, "udp{unconnected}", "udp{any}"); auxiliar_add2group(L, "udp{connected}", "select{able}"); auxiliar_add2group(L, "udp{unconnected}", "select{able}"); /* define library functions */ luaL_openlib(L, NULL, func, 0); return 0; } /*=========================================================================*\ * Lua methods \*=========================================================================*/ const char *udp_strerror(int err) { /* a 'closed' error on an unconnected means the target address was not * accepted by the transport layer */ if (err == IO_CLOSED) return "refused"; else return socket_strerror(err); } /*-------------------------------------------------------------------------*\ * Send data through connected udp socket \*-------------------------------------------------------------------------*/ static int meth_send(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{connected}", 1); p_timeout tm = &udp->tm; size_t count, sent = 0; int err; const char *data = luaL_checklstring(L, 2, &count); timeout_markstart(tm); err = socket_send(&udp->sock, data, count, &sent, tm); if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, udp_strerror(err)); return 2; } lua_pushnumber(L, sent); return 1; } /*-------------------------------------------------------------------------*\ * Send data through unconnected udp socket \*-------------------------------------------------------------------------*/ static int meth_sendto(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1); size_t count, sent = 0; const char *data = luaL_checklstring(L, 2, &count); const char *ip = luaL_checkstring(L, 3); unsigned short port = (unsigned short) luaL_checknumber(L, 4); p_timeout tm = &udp->tm; struct sockaddr_in addr; int err; memset(&addr, 0, sizeof(addr)); if (!inet_aton(ip, &addr.sin_addr)) luaL_argerror(L, 3, "invalid ip address"); addr.sin_family = AF_INET; addr.sin_port = htons(port); timeout_markstart(tm); err = socket_sendto(&udp->sock, data, count, &sent, (SA *) &addr, sizeof(addr), tm); if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, udp_strerror(err)); return 2; } lua_pushnumber(L, sent); return 1; } /*-------------------------------------------------------------------------*\ * Receives data from a UDP socket \*-------------------------------------------------------------------------*/ static int meth_receive(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); char buffer[UDP_DATAGRAMSIZE]; size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); int err; p_timeout tm = &udp->tm; count = MIN(count, sizeof(buffer)); timeout_markstart(tm); err = socket_recv(&udp->sock, buffer, count, &got, tm); if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, udp_strerror(err)); return 2; } lua_pushlstring(L, buffer, got); return 1; } /*-------------------------------------------------------------------------*\ * Receives data and sender from a UDP socket \*-------------------------------------------------------------------------*/ static int meth_receivefrom(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1); struct sockaddr_in addr; socklen_t addr_len = sizeof(addr); char buffer[UDP_DATAGRAMSIZE]; size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer)); int err; p_timeout tm = &udp->tm; timeout_markstart(tm); count = MIN(count, sizeof(buffer)); err = socket_recvfrom(&udp->sock, buffer, count, &got, (SA *) &addr, &addr_len, tm); if (err == IO_DONE) { lua_pushlstring(L, buffer, got); lua_pushstring(L, inet_ntoa(addr.sin_addr)); lua_pushnumber(L, ntohs(addr.sin_port)); return 3; } else { lua_pushnil(L); lua_pushstring(L, udp_strerror(err)); return 2; } } /*-------------------------------------------------------------------------*\ * Select support methods \*-------------------------------------------------------------------------*/ static int meth_getfd(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); lua_pushnumber(L, (int) udp->sock); return 1; } /* this is very dangerous, but can be handy for those that are brave enough */ static int meth_setfd(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); udp->sock = (t_socket) luaL_checknumber(L, 2); return 0; } static int meth_dirty(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); (void) udp; lua_pushboolean(L, 0); return 1; } /*-------------------------------------------------------------------------*\ * Just call inet methods \*-------------------------------------------------------------------------*/ static int meth_getpeername(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{connected}", 1); return inet_meth_getpeername(L, &udp->sock); } static int meth_getsockname(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); return inet_meth_getsockname(L, &udp->sock); } /*-------------------------------------------------------------------------*\ * Just call option handler \*-------------------------------------------------------------------------*/ static int meth_setoption(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); return opt_meth_setoption(L, opt, &udp->sock); } /*-------------------------------------------------------------------------*\ * Just call tm methods \*-------------------------------------------------------------------------*/ static int meth_settimeout(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); return timeout_meth_settimeout(L, &udp->tm); } /*-------------------------------------------------------------------------*\ * Turns a master udp object into a client object. \*-------------------------------------------------------------------------*/ static int meth_setpeername(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); p_timeout tm = &udp->tm; const char *address = luaL_checkstring(L, 2); int connecting = strcmp(address, "*"); unsigned short port = connecting ? (unsigned short) luaL_checknumber(L, 3) : (unsigned short) luaL_optnumber(L, 3, 0); const char *err = inet_tryconnect(&udp->sock, address, port, tm); if (err) { lua_pushnil(L); lua_pushstring(L, err); return 2; } /* change class to connected or unconnected depending on address */ if (connecting) auxiliar_setclass(L, "udp{connected}", 1); else auxiliar_setclass(L, "udp{unconnected}", 1); lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * Closes socket used by object \*-------------------------------------------------------------------------*/ static int meth_close(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1); socket_destroy(&udp->sock); lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * Turns a master object into a server object \*-------------------------------------------------------------------------*/ static int meth_setsockname(lua_State *L) { p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1); const char *address = luaL_checkstring(L, 2); unsigned short port = (unsigned short) luaL_checknumber(L, 3); const char *err = inet_trybind(&udp->sock, address, port); if (err) { lua_pushnil(L); lua_pushstring(L, err); return 2; } lua_pushnumber(L, 1); return 1; } /*=========================================================================*\ * Library functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Creates a master udp object \*-------------------------------------------------------------------------*/ static int global_create(lua_State *L) { t_socket sock; const char *err = inet_trycreate(&sock, SOCK_DGRAM); /* try to allocate a system socket */ if (!err) { /* allocate tcp object */ p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp)); auxiliar_setclass(L, "udp{unconnected}", -1); /* initialize remaining structure fields */ socket_setnonblocking(&sock); udp->sock = sock; timeout_init(&udp->tm, -1, -1); return 1; } else { lua_pushnil(L); lua_pushstring(L, err); return 2; } } love-0.9.1/src/libraries/luasocket/libluasocket/ltn12.lua.h0000644000000000000000000010125012316602166023575 0ustar00rootroot00000000000000/* code automatically generated by bin2c -- DO NOT EDIT */ { /* #include'ing this file in a C program is equivalent to calling if (luaL_loadfile(L,"ltn12.lua")==0) lua_call(L, 0, 0); */ /* ltn12.lua */ static const unsigned char B1[]={ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76, 84, 78, 49, 50, 32, 45, 32, 70,105,108,116,101,114,115, 44, 32,115,111, 117,114, 99,101,115, 44, 32,115,105,110,107,115, 32, 97,110,100, 32,112,117,109, 112,115, 46, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111, 108,107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101, 103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,108,116,110, 49, 50, 46,108,117, 97, 44,118, 32, 49, 46, 51, 49, 32, 50, 48, 48, 54, 47, 48, 52, 47, 48, 51, 32, 48, 52, 58, 52, 53, 58, 52, 50, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114, 101, 32,109,111,100,117,108,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10, 108,111, 99, 97,108, 32,116, 97, 98,108,101, 32, 61, 32,114,101,113,117,105,114, 101, 40, 34,116, 97, 98,108,101, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115, 101, 32, 61, 32, 95, 71, 10,109,111,100,117,108,101, 40, 34,108,116,110, 49, 50, 34, 41, 10, 10,102,105,108,116,101,114, 32, 61, 32,123,125, 10,115,111,117,114, 99,101, 32, 61, 32,123,125, 10,115,105,110,107, 32, 61, 32,123,125, 10,112,117, 109,112, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 50, 48, 52, 56, 32,115,101,101, 109,115, 32,116,111, 32, 98,101, 32, 98,101,116,116,101,114, 32,105,110, 32,119, 105,110,100,111,119,115, 46, 46, 46, 10, 66, 76, 79, 67, 75, 83, 73, 90, 69, 32, 61, 32, 50, 48, 52, 56, 10, 95, 86, 69, 82, 83, 73, 79, 78, 32, 61, 32, 34, 76, 84, 78, 49, 50, 32, 49, 46, 48, 46, 49, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 70,105,108,116,101,114, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,104,105, 103,104, 32,108,101,118,101,108, 32,102,105,108,116,101,114, 32,116,104, 97,116, 32, 99,121, 99,108,101,115, 32, 97, 32,108,111,119, 45,108,101,118,101,108, 32, 102,105,108,116,101,114, 10,102,117,110, 99,116,105,111,110, 32,102,105,108,116, 101,114, 46, 99,121, 99,108,101, 40,108,111,119, 44, 32, 99,116,120, 44, 32,101, 120,116,114, 97, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114, 116, 40,108,111,119, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117, 110, 99,116,105,111,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114,101,116, 44, 32, 99,116,120, 32, 61, 32,108,111,119, 40, 99,116,120, 44, 32, 99,104,117,110,107, 44, 32,101,120,116,114, 97, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,116, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,104, 97,105,110,115, 32, 97, 32, 98,117, 110, 99,104, 32,111,102, 32,102,105,108,116,101,114,115, 32,116,111,103,101,116, 104,101,114, 10, 45, 45, 32, 40,116,104, 97,110,107,115, 32,116,111, 32, 87,105, 109, 32, 67,111,117,119,101,110, 98,101,114,103, 41, 10,102,117,110, 99,116,105, 111,110, 32,102,105,108,116,101,114, 46, 99,104, 97,105,110, 40, 46, 46, 46, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110, 32, 61, 32,116, 97, 98,108,101, 46,103,101,116,110, 40, 97,114,103, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116,111,112, 44, 32,105,110,100,101,120, 32, 61, 32, 49, 44, 32, 49, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116,114,121, 32, 61, 32, 34, 34, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,114,121, 32, 61, 32, 99,104,117,110,107, 32, 97,110,100, 32,114,101,116,114,121, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,105,110,100,101, 120, 32, 61, 61, 32,116,111,112, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117,110,107, 32, 61, 32, 97,114, 103, 91,105,110,100,101,120, 93, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32, 61, 61, 32, 34, 34, 32,111,114, 32,116,111,112, 32, 61, 61, 32,110, 32,116, 104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32,105,110,100,101,120, 32, 61, 32,105, 110,100,101,120, 32, 43, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,111,112, 32, 61, 32,116,111,112, 43, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,110,100,101,120, 32, 61, 32,116,111,112, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117,110,107, 32, 61, 32, 97,114,103, 91,105, 110,100,101,120, 93, 40, 99,104,117,110,107, 32,111,114, 32, 34, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104, 117,110,107, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,110,100,101,120, 32, 61, 32,105,110,100,101,120, 32, 45, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117,110,107, 32, 61, 32,114,101,116,114,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,105,110,100,101,120, 32, 61, 61, 32,110, 32,116,104,101,110, 32, 114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,105,110, 100,101,120, 32, 61, 32,105,110,100,101,120, 32, 43, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 34,102,105,108,116,101,114, 32, 114,101,116,117,114,110,101,100, 32,105,110, 97,112,112,114,111,112,114,105, 97, 116,101, 32,110,105,108, 34, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 83,111,117,114, 99, 101, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101, 32, 97,110, 32,101, 109,112,116,121, 32,115,111,117,114, 99,101, 10,108,111, 99, 97,108, 32,102,117, 110, 99,116,105,111,110, 32,101,109,112,116,121, 40, 41, 10, 32, 32, 32, 32,114, 101,116,117,114,110, 32,110,105,108, 10,101,110,100, 10, 10,102,117,110, 99,116, 105,111,110, 32,115,111,117,114, 99,101, 46,101,109,112,116,121, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,101,109,112,116,121, 10,101,110,100, 10, 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,115,111,117,114, 99,101, 32,116,104, 97,116, 32,106,117,115,116, 32,111,117,116,112,117,116,115, 32, 97, 110, 32,101,114,114,111,114, 10,102,117,110, 99,116,105,111,110, 32,115,111,117, 114, 99,101, 46,101,114,114,111,114, 40,101,114,114, 41, 10, 32, 32, 32, 32,114, 101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,102,105,108,101, 32,115,111,117,114, 99,101, 10,102, 117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46,102,105,108,101, 40, 104, 97,110,100,108,101, 44, 32,105,111, 95,101,114,114, 41, 10, 32, 32, 32, 32, 105,102, 32,104, 97,110,100,108,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 104,117,110,107, 32, 61, 32,104, 97,110,100,108,101, 58,114,101, 97,100, 40, 66, 76, 79, 67, 75, 83, 73, 90, 69, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 32, 104, 97,110,100,108,101, 58, 99,108,111,115,101, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,104, 117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 101,108,115,101, 32,114,101,116,117,114,110, 32,115,111,117,114, 99,101, 46,101, 114,114,111,114, 40,105,111, 95,101,114,114, 32,111,114, 32, 34,117,110, 97, 98, 108,101, 32,116,111, 32,111,112,101,110, 32,102,105,108,101, 34, 41, 32,101,110, 100, 10,101,110,100, 10, 10, 45, 45, 32,116,117,114,110,115, 32, 97, 32,102, 97, 110, 99,121, 32,115,111,117,114, 99,101, 32,105,110,116,111, 32, 97, 32,115,105, 109,112,108,101, 32,115,111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46,115,105,109,112,108,105,102,121, 40,115,114, 99, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114, 99, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105, 111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 104,117,110,107, 44, 32,101,114,114, 95,111,114, 95,110,101,119, 32, 61, 32,115, 114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,114, 99, 32, 61, 32,101, 114,114, 95,111,114, 95,110,101,119, 32,111,114, 32,115,114, 99, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104, 101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 95,111, 114, 95,110,101,119, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114, 101,116,117,114,110, 32, 99,104,117,110,107, 32,101,110,100, 10, 32, 32, 32, 32, 101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 115,116,114,105,110,103, 32,115,111,117,114, 99,101, 10,102,117,110, 99,116,105, 111,110, 32,115,111,117,114, 99,101, 46,115,116,114,105,110,103, 40,115, 41, 10, 32, 32, 32, 32,105,102, 32,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,105, 32, 61, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104, 117,110,107, 32, 61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,115, 44, 32, 105, 44, 32,105, 43, 66, 76, 79, 67, 75, 83, 73, 90, 69, 45, 49, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105, 32, 61, 32,105, 32, 43, 32, 66, 76, 79, 67, 75, 83, 73, 90, 69, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105,102, 32, 99,104,117,110,107, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32, 114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,111,117,114, 99,101, 46, 101,109,112,116,121, 40, 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32,114,101,119,105,110,100, 97, 98,108,101, 32,115, 111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99, 101, 46,114,101,119,105,110,100, 40,115,114, 99, 41, 10, 32, 32, 32, 32, 98, 97, 115,101, 46, 97,115,115,101,114,116, 40,115,114, 99, 41, 10, 32, 32, 32, 32,108, 111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,114,101,116,117, 114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32, 116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117, 110,107, 32, 61, 32,116, 97, 98,108,101, 46,114,101,109,111,118,101, 40,116, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,116, 44, 32, 99, 104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 115,111,117,114, 99,101, 46, 99,104, 97,105,110, 40,115,114, 99, 44, 32,102, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114, 99, 32, 97,110,100, 32,102, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108, 97, 115,116, 95,105,110, 44, 32,108, 97,115,116, 95,111,117,116, 32, 61, 32, 34, 34, 44, 32, 34, 34, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,116, 97,116,101, 32, 61, 32, 34,102,101,101,100,105,110,103, 34, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,101,114,114, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117, 110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 110,111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 39,115,111,117,114, 99,101, 32,105,115, 32,101,109,112,116,121, 33, 39, 44, 32, 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,116, 97,116,101, 32, 61, 61, 32, 34,102,101,101,100,105,110,103, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,115,116, 95,105,110, 44, 32,101,114,114, 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101, 110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97, 115,116, 95,111,117,116, 32, 61, 32,102, 40,108, 97,115,116, 95,105,110, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110, 111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 108, 97,115,116, 95,105,110, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115, 101, 46,101,114,114,111,114, 40, 39,102,105,108,116,101,114, 32,114,101,116,117, 114,110,101,100, 32,105,110, 97,112,112,114,111,112,114,105, 97,116,101, 32,110, 105,108, 39, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, 32,108, 97,115,116, 95,111,117,116, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116, 97,116,101, 32, 61, 32, 34,101, 97,116,105,110,103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,105,110, 32, 116,104,101,110, 32,108, 97,115,116, 95,105,110, 32, 61, 32, 34, 34, 32,101,110, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,108, 97,115,116, 95,111,117,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,115,116, 95,111,117,116, 32, 61, 32,102, 40,108, 97,115,116, 95,105,110, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,111,117,116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95, 105,110, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116, 97,116,101, 32, 61, 32, 34,102,101,101,100,105,110,103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 39,102,105,108, 116,101,114, 32,114,101,116,117,114,110,101,100, 32, 34, 34, 39, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108, 115,101,105,102, 32,110,111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104, 101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,105,110, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 39,102,105,108,116,101, 114, 32,114,101,116,117,114,110,101,100, 32,105,110, 97,112,112,114,111,112,114, 105, 97,116,101, 32,110,105,108, 39, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114,101,116,117,114,110, 32,110,105,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117, 114,110, 32,108, 97,115,116, 95,111,117,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97, 116,101,115, 32, 97, 32,115,111,117,114, 99,101, 32,116,104, 97,116, 32,112,114, 111,100,117, 99,101,115, 32, 99,111,110,116,101,110,116,115, 32,111,102, 32,115, 101,118,101,114, 97,108, 32,115,111,117,114, 99,101,115, 44, 32,111,110,101, 32, 97,102,116,101,114, 32,116,104,101, 10, 45, 45, 32,111,116,104,101,114, 44, 32, 97,115, 32,105,102, 32,116,104,101,121, 32,119,101,114,101, 32, 99,111,110, 99, 97,116,101,110, 97,116,101,100, 10, 45, 45, 32, 40,116,104, 97,110,107,115, 32, 116,111, 32, 87,105,109, 32, 67,111,117,119,101,110, 98,101,114,103, 41, 10,102, 117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46, 99, 97,116, 40, 46, 46, 46, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,114, 99, 32, 61, 32, 116, 97, 98,108,101, 46,114,101,109,111,118,101, 40, 97,114,103, 44, 32, 49, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,115,114, 99, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97, 108, 32, 99,104,117,110,107, 44, 32,101,114,114, 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110, 107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 32, 101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101, 114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115,114, 99, 32, 61, 32,116, 97, 98,108,101, 46,114,101,109,111,118,101, 40, 97, 114,103, 44, 32, 49, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 83,105,110,107, 32,115,116, 117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,105,110,107, 32, 116,104, 97,116, 32,115,116,111,114,101,115, 32,105,110,116,111, 32, 97, 32,116, 97, 98,108,101, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,116, 97, 98,108,101, 40,116, 41, 10, 32, 32, 32, 32,116, 32, 61, 32,116, 32,111,114, 32,123,125, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,102,117, 110, 99,116,105,111,110, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,116, 44, 32, 99,104,117, 110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117, 114,110, 32, 49, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116, 117,114,110, 32,102, 44, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,116,117,114, 110,115, 32, 97, 32,102, 97,110, 99,121, 32,115,105,110,107, 32,105,110,116,111, 32, 97, 32,115,105,109,112,108,101, 32,115,105,110,107, 10,102,117,110, 99,116, 105,111,110, 32,115,105,110,107, 46,115,105,109,112,108,105,102,121, 40,115,110, 107, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115, 110,107, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116, 105,111,110, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114,114, 95,111, 114, 95,110,101,119, 32, 61, 32,115,110,107, 40, 99,104,117,110,107, 44, 32,101, 114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114, 101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 101,114,114, 95,111,114, 95,110,101,119, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,110,107, 32, 61, 32,101,114,114, 95,111,114, 95,110,101,119, 32, 111,114, 32,115,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114, 110, 32, 49, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,102,105,108,101, 32,115,105,110,107, 10, 102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,102,105,108,101, 40,104, 97,110,100,108,101, 44, 32,105,111, 95,101,114,114, 41, 10, 32, 32, 32, 32,105, 102, 32,104, 97,110,100,108,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104, 117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,104, 97,110,100, 108,101, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 104, 97,110,100,108,101, 58,119,114,105,116,101, 40, 99,104,117,110,107, 41, 32, 101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 101,108,115,101, 32,114,101,116,117,114,110, 32,115,105,110,107, 46,101,114,114, 111,114, 40,105,111, 95,101,114,114, 32,111,114, 32, 34,117,110, 97, 98,108,101, 32,116,111, 32,111,112,101,110, 32,102,105,108,101, 34, 41, 32,101,110,100, 10, 101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,105, 110,107, 32,116,104, 97,116, 32,100,105,115, 99, 97,114,100,115, 32,100, 97,116, 97, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,110,117,108, 108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,110,117,108,108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,117,108,108, 10,101, 110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,105,110, 107, 32,116,104, 97,116, 32,106,117,115,116, 32,114,101,116,117,114,110,115, 32, 97,110, 32,101,114,114,111,114, 10,102,117,110, 99,116,105,111,110, 32,115,105, 110,107, 46,101,114,114,111,114, 40,101,114,114, 41, 10, 32, 32, 32, 32,114,101, 116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,104, 97,105, 110,115, 32, 97, 32,115,105,110,107, 32,119,105,116,104, 32, 97, 32,102,105,108, 116,101,114, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46, 99,104, 97,105,110, 40,102, 44, 32,115,110,107, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,102, 32, 97,110,100, 32,115,110,107, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 99, 104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, 102, 32, 99,104,117,110,107, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,102,105,108, 116,101,114,101,100, 32, 61, 32,102, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,100,111,110,101, 32, 61, 32, 99,104,117,110,107, 32, 97,110,100, 32, 34, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,115,110,107,101,114,114, 32, 61, 32,115,110,107, 40,102,105,108,116,101,114,101,100, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114, 101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 115,110,107,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,102,105,108,116,101,114,101,100, 32, 61, 61, 32,100,111,110,101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,102,105,108,116,101,114,101,100, 32, 61, 32,102, 40,100,111,110,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 49, 32,101,110, 100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80,117,109,112, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,112,117,109,112,115, 32,111,110,101, 32, 99,104, 117,110,107, 32,102,114,111,109, 32,116,104,101, 32,115,111,117,114, 99,101, 32, 116,111, 32,116,104,101, 32,115,105,110,107, 10,102,117,110, 99,116,105,111,110, 32,112,117,109,112, 46,115,116,101,112, 40,115,114, 99, 44, 32,115,110,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,115,114, 99, 95,101,114,114, 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,115,110,107, 95,101,114,114, 32, 61, 32,115, 110,107, 40, 99,104,117,110,107, 44, 32,115,114, 99, 95,101,114,114, 41, 10, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32, 97,110,100, 32,114,101,116, 32, 116,104,101,110, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32,101,108, 115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,115,114, 99, 95,101, 114,114, 32,111,114, 32,115,110,107, 95,101,114,114, 32,101,110,100, 10,101,110, 100, 10, 10, 45, 45, 32,112,117,109,112,115, 32, 97,108,108, 32,100, 97,116, 97, 32,102,114,111,109, 32, 97, 32,115,111,117,114, 99,101, 32,116,111, 32, 97, 32, 115,105,110,107, 44, 32,117,115,105,110,103, 32, 97, 32,115,116,101,112, 32,102, 117,110, 99,116,105,111,110, 10,102,117,110, 99,116,105,111,110, 32,112,117,109, 112, 46, 97,108,108, 40,115,114, 99, 44, 32,115,110,107, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114, 99, 32, 97,110,100, 32,115,110,107, 41, 10, 32, 32, 32, 32,115,116,101,112, 32, 61, 32,115,116,101,112, 32,111,114, 32,112,117,109,112, 46,115,116,101,112, 10, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114,114, 32, 61, 32,115,116,101,112, 40,115,114, 99, 44, 32,115,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,116, 32,116,104,101, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114, 101,116,117,114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"ltn12.lua")==0) lua_call(L, 0, 0); } love-0.9.1/src/libraries/luasocket/libluasocket/select.h0000644000000000000000000000117312316602166023337 0ustar00rootroot00000000000000#ifndef SELECT_H #define SELECT_H /*=========================================================================*\ * Select implementation * LuaSocket toolkit * * Each object that can be passed to the select function has to export * method getfd() which returns the descriptor to be passed to the * underlying select function. Another method, dirty(), should return * true if there is data ready for reading (required for buffered input). * * RCS ID: $Id: select.h,v 1.7 2004/06/16 01:02:07 diego Exp $ \*=========================================================================*/ int select_open(lua_State *L); #endif /* SELECT_H */ love-0.9.1/src/libraries/luasocket/libluasocket/usocket.c0000644000000000000000000003142512316602166023533 0ustar00rootroot00000000000000/*=========================================================================*\ * Socket compatibilization module for Unix * LuaSocket toolkit * * The code is now interrupt-safe. * The penalty of calling select to avoid busy-wait is only paid when * the I/O call fail in the first place. * * RCS ID: $Id: usocket.c,v 1.38 2007/10/13 23:55:20 diego Exp $ \*=========================================================================*/ #include #include #include "socket.h" /*-------------------------------------------------------------------------*\ * Wait for readable/writable/connected socket with timeout \*-------------------------------------------------------------------------*/ #ifdef SOCKET_POLL #include #define WAITFD_R POLLIN #define WAITFD_W POLLOUT #define WAITFD_C (POLLIN|POLLOUT) int socket_waitfd(p_socket ps, int sw, p_timeout tm) { int ret; struct pollfd pfd; pfd.fd = *ps; pfd.events = sw; pfd.revents = 0; if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ do { int t = (int)(timeout_getretry(tm)*1e3); ret = poll(&pfd, 1, t >= 0? t: -1); } while (ret == -1 && errno == EINTR); if (ret == -1) return errno; if (ret == 0) return IO_TIMEOUT; if (sw == WAITFD_C && (pfd.revents & (POLLIN|POLLERR))) return IO_CLOSED; return IO_DONE; } #else #define WAITFD_R 1 #define WAITFD_W 2 #define WAITFD_C (WAITFD_R|WAITFD_W) int socket_waitfd(p_socket ps, int sw, p_timeout tm) { int ret; fd_set rfds, wfds, *rp, *wp; struct timeval tv, *tp; double t; if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */ do { /* must set bits within loop, because select may have modifed them */ rp = wp = NULL; if (sw & WAITFD_R) { FD_ZERO(&rfds); FD_SET(*ps, &rfds); rp = &rfds; } if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; } t = timeout_getretry(tm); tp = NULL; if (t >= 0.0) { tv.tv_sec = (int)t; tv.tv_usec = (int)((t-tv.tv_sec)*1.0e6); tp = &tv; } ret = select(*ps+1, rp, wp, NULL, tp); } while (ret == -1 && errno == EINTR); if (ret == -1) return errno; if (ret == 0) return IO_TIMEOUT; if (sw == WAITFD_C && FD_ISSET(*ps, &rfds)) return IO_CLOSED; return IO_DONE; } #endif /*-------------------------------------------------------------------------*\ * Initializes module \*-------------------------------------------------------------------------*/ int socket_open(void) { /* instals a handler to ignore sigpipe or it will crash us */ signal(SIGPIPE, SIG_IGN); return 1; } /*-------------------------------------------------------------------------*\ * Close module \*-------------------------------------------------------------------------*/ int socket_close(void) { return 1; } /*-------------------------------------------------------------------------*\ * Close and inutilize socket \*-------------------------------------------------------------------------*/ void socket_destroy(p_socket ps) { if (*ps != SOCKET_INVALID) { socket_setblocking(ps); close(*ps); *ps = SOCKET_INVALID; } } /*-------------------------------------------------------------------------*\ * Select with timeout control \*-------------------------------------------------------------------------*/ int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm) { int ret; do { struct timeval tv; double t = timeout_getretry(tm); tv.tv_sec = (int) t; tv.tv_usec = (int) ((t - tv.tv_sec) * 1.0e6); /* timeout = 0 means no wait */ ret = select(n, rfds, wfds, efds, t >= 0.0 ? &tv: NULL); } while (ret < 0 && errno == EINTR); return ret; } /*-------------------------------------------------------------------------*\ * Creates and sets up a socket \*-------------------------------------------------------------------------*/ int socket_create(p_socket ps, int domain, int type, int protocol) { *ps = socket(domain, type, protocol); if (*ps != SOCKET_INVALID) return IO_DONE; else return errno; } /*-------------------------------------------------------------------------*\ * Binds or returns error message \*-------------------------------------------------------------------------*/ int socket_bind(p_socket ps, SA *addr, socklen_t len) { int err = IO_DONE; socket_setblocking(ps); if (bind(*ps, addr, len) < 0) err = errno; socket_setnonblocking(ps); return err; } /*-------------------------------------------------------------------------*\ * \*-------------------------------------------------------------------------*/ int socket_listen(p_socket ps, int backlog) { int err = IO_DONE; socket_setblocking(ps); if (listen(*ps, backlog)) err = errno; socket_setnonblocking(ps); return err; } /*-------------------------------------------------------------------------*\ * \*-------------------------------------------------------------------------*/ void socket_shutdown(p_socket ps, int how) { socket_setblocking(ps); shutdown(*ps, how); socket_setnonblocking(ps); } /*-------------------------------------------------------------------------*\ * Connects or returns error message \*-------------------------------------------------------------------------*/ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) { int err; /* avoid calling on closed sockets */ if (*ps == SOCKET_INVALID) return IO_CLOSED; /* call connect until done or failed without being interrupted */ do if (connect(*ps, addr, len) == 0) return IO_DONE; while ((err = errno) == EINTR); /* if connection failed immediately, return error code */ if (err != EINPROGRESS && err != EAGAIN) return err; /* zero timeout case optimization */ if (timeout_iszero(tm)) return IO_TIMEOUT; /* wait until we have the result of the connection attempt or timeout */ err = socket_waitfd(ps, WAITFD_C, tm); if (err == IO_CLOSED) { if (recv(*ps, (char *) &err, 0, 0) == 0) return IO_DONE; else return errno; } else return err; } /*-------------------------------------------------------------------------*\ * Accept with timeout \*-------------------------------------------------------------------------*/ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout tm) { SA daddr; socklen_t dlen = sizeof(daddr); if (*ps == SOCKET_INVALID) return IO_CLOSED; if (!addr) addr = &daddr; if (!len) len = &dlen; for ( ;; ) { int err; if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE; err = errno; if (err == EINTR) continue; if (err != EAGAIN && err != ECONNABORTED) return err; if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; } /* can't reach here */ return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ * Send with timeout \*-------------------------------------------------------------------------*/ int socket_send(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm) { int err; *sent = 0; /* avoid making system calls on closed sockets */ if (*ps == SOCKET_INVALID) return IO_CLOSED; /* loop until we send something or we give up on error */ for ( ;; ) { long put = (long) send(*ps, data, count, 0); /* if we sent anything, we are done */ if (put > 0) { *sent = put; return IO_DONE; } err = errno; /* send can't really return 0, but EPIPE means the connection was closed */ if (put == 0 || err == EPIPE) return IO_CLOSED; /* we call was interrupted, just try again */ if (err == EINTR) continue; /* if failed fatal reason, report error */ if (err != EAGAIN) return err; /* wait until we can send something or we timeout */ if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; } /* can't reach here */ return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ * Sendto with timeout \*-------------------------------------------------------------------------*/ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, SA *addr, socklen_t len, p_timeout tm) { int err; *sent = 0; if (*ps == SOCKET_INVALID) return IO_CLOSED; for ( ;; ) { long put = (long) sendto(*ps, data, count, 0, addr, len); if (put > 0) { *sent = put; return IO_DONE; } err = errno; if (put == 0 || err == EPIPE) return IO_CLOSED; if (err == EINTR) continue; if (err != EAGAIN) return err; if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err; } return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ * Receive with timeout \*-------------------------------------------------------------------------*/ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm) { int err; *got = 0; if (*ps == SOCKET_INVALID) return IO_CLOSED; for ( ;; ) { long taken = (long) recv(*ps, data, count, 0); if (taken > 0) { *got = taken; return IO_DONE; } err = errno; if (taken == 0) return IO_CLOSED; if (err == EINTR) continue; if (err != EAGAIN) return err; if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; } return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ * Recvfrom with timeout \*-------------------------------------------------------------------------*/ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, SA *addr, socklen_t *len, p_timeout tm) { int err; *got = 0; if (*ps == SOCKET_INVALID) return IO_CLOSED; for ( ;; ) { long taken = (long) recvfrom(*ps, data, count, 0, addr, len); if (taken > 0) { *got = taken; return IO_DONE; } err = errno; if (taken == 0) return IO_CLOSED; if (err == EINTR) continue; if (err != EAGAIN) return err; if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err; } return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ * Put socket into blocking mode \*-------------------------------------------------------------------------*/ void socket_setblocking(p_socket ps) { int flags = fcntl(*ps, F_GETFL, 0); flags &= (~(O_NONBLOCK)); fcntl(*ps, F_SETFL, flags); } /*-------------------------------------------------------------------------*\ * Put socket into non-blocking mode \*-------------------------------------------------------------------------*/ void socket_setnonblocking(p_socket ps) { int flags = fcntl(*ps, F_GETFL, 0); flags |= O_NONBLOCK; fcntl(*ps, F_SETFL, flags); } /*-------------------------------------------------------------------------*\ * DNS helpers \*-------------------------------------------------------------------------*/ int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) { *hp = gethostbyaddr(addr, len, AF_INET); if (*hp) return IO_DONE; else if (h_errno) return h_errno; else if (errno) return errno; else return IO_UNKNOWN; } int socket_gethostbyname(const char *addr, struct hostent **hp) { *hp = gethostbyname(addr); if (*hp) return IO_DONE; else if (h_errno) return h_errno; else if (errno) return errno; else return IO_UNKNOWN; } /*-------------------------------------------------------------------------*\ * Error translation functions * Make sure important error messages are standard \*-------------------------------------------------------------------------*/ const char *socket_hoststrerror(int err) { if (err <= 0) return io_strerror(err); switch (err) { case HOST_NOT_FOUND: return "host not found"; default: return hstrerror(err); } } const char *socket_strerror(int err) { if (err <= 0) return io_strerror(err); switch (err) { case EADDRINUSE: return "address already in use"; case EISCONN: return "already connected"; case EACCES: return "permission denied"; case ECONNREFUSED: return "connection refused"; case ECONNABORTED: return "closed"; case ECONNRESET: return "closed"; case ETIMEDOUT: return "timeout"; default: return strerror(errno); } } const char *socket_ioerror(p_socket ps, int err) { (void) ps; return socket_strerror(err); } love-0.9.1/src/libraries/luasocket/libluasocket/auxiliar.c0000644000000000000000000001341712316602166023675 0ustar00rootroot00000000000000/*=========================================================================*\ * Auxiliar routines for class hierarchy manipulation * LuaSocket toolkit * * RCS ID: $Id: auxiliar.c,v 1.14 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include #include #include "auxiliar.h" /*=========================================================================*\ * Exported functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Initializes the module \*-------------------------------------------------------------------------*/ int auxiliar_open(lua_State *L) { (void) L; return 0; } /*-------------------------------------------------------------------------*\ * Creates a new class with given methods * Methods whose names start with __ are passed directly to the metatable. \*-------------------------------------------------------------------------*/ void auxiliar_newclass(lua_State *L, const char *classname, luaL_reg *func) { luaL_newmetatable(L, classname); /* mt */ /* create __index table to place methods */ lua_pushstring(L, "__index"); /* mt,"__index" */ lua_newtable(L); /* mt,"__index",it */ /* put class name into class metatable */ lua_pushstring(L, "class"); /* mt,"__index",it,"class" */ lua_pushstring(L, classname); /* mt,"__index",it,"class",classname */ lua_rawset(L, -3); /* mt,"__index",it */ /* pass all methods that start with _ to the metatable, and all others * to the index table */ for (; func->name; func++) { /* mt,"__index",it */ lua_pushstring(L, func->name); lua_pushcfunction(L, func->func); lua_rawset(L, func->name[0] == '_' ? -5: -3); } lua_rawset(L, -3); /* mt */ lua_pop(L, 1); } /*-------------------------------------------------------------------------*\ * Prints the value of a class in a nice way \*-------------------------------------------------------------------------*/ int auxiliar_tostring(lua_State *L) { char buf[32]; if (!lua_getmetatable(L, 1)) goto error; lua_pushstring(L, "__index"); lua_gettable(L, -2); if (!lua_istable(L, -1)) goto error; lua_pushstring(L, "class"); lua_gettable(L, -2); if (!lua_isstring(L, -1)) goto error; sprintf(buf, "%p", lua_touserdata(L, 1)); lua_pushfstring(L, "%s: %s", lua_tostring(L, -1), buf); return 1; error: lua_pushstring(L, "invalid object passed to 'auxiliar.c:__tostring'"); lua_error(L); return 1; } /*-------------------------------------------------------------------------*\ * Insert class into group \*-------------------------------------------------------------------------*/ void auxiliar_add2group(lua_State *L, const char *classname, const char *groupname) { luaL_getmetatable(L, classname); lua_pushstring(L, groupname); lua_pushboolean(L, 1); lua_rawset(L, -3); lua_pop(L, 1); } /*-------------------------------------------------------------------------*\ * Make sure argument is a boolean \*-------------------------------------------------------------------------*/ int auxiliar_checkboolean(lua_State *L, int objidx) { if (!lua_isboolean(L, objidx)) luaL_typerror(L, objidx, lua_typename(L, LUA_TBOOLEAN)); return lua_toboolean(L, objidx); } /*-------------------------------------------------------------------------*\ * Return userdata pointer if object belongs to a given class, abort with * error otherwise \*-------------------------------------------------------------------------*/ void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx) { void *data = auxiliar_getclassudata(L, classname, objidx); if (!data) { char msg[45]; sprintf(msg, "%.35s expected", classname); luaL_argerror(L, objidx, msg); } return data; } /*-------------------------------------------------------------------------*\ * Return userdata pointer if object belongs to a given group, abort with * error otherwise \*-------------------------------------------------------------------------*/ void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx) { void *data = auxiliar_getgroupudata(L, groupname, objidx); if (!data) { char msg[45]; sprintf(msg, "%.35s expected", groupname); luaL_argerror(L, objidx, msg); } return data; } /*-------------------------------------------------------------------------*\ * Set object class \*-------------------------------------------------------------------------*/ void auxiliar_setclass(lua_State *L, const char *classname, int objidx) { luaL_getmetatable(L, classname); if (objidx < 0) objidx--; lua_setmetatable(L, objidx); } /*-------------------------------------------------------------------------*\ * Get a userdata pointer if object belongs to a given group. Return NULL * otherwise \*-------------------------------------------------------------------------*/ void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx) { if (!lua_getmetatable(L, objidx)) return NULL; lua_pushstring(L, groupname); lua_rawget(L, -2); if (lua_isnil(L, -1)) { lua_pop(L, 2); return NULL; } else { lua_pop(L, 2); return lua_touserdata(L, objidx); } } /*-------------------------------------------------------------------------*\ * Get a userdata pointer if object belongs to a given class. Return NULL * otherwise \*-------------------------------------------------------------------------*/ void *auxiliar_getclassudata(lua_State *L, const char *classname, int objidx) { return luaL_checkudata(L, objidx, classname); } love-0.9.1/src/libraries/luasocket/libluasocket/io.h0000644000000000000000000000425612316602166022474 0ustar00rootroot00000000000000#ifndef IO_H #define IO_H /*=========================================================================*\ * Input/Output abstraction * LuaSocket toolkit * * This module defines the interface that LuaSocket expects from the * transport layer for streamed input/output. The idea is that if any * transport implements this interface, then the buffer.c functions * automatically work on it. * * The module socket.h implements this interface, and thus the module tcp.h * is very simple. * * RCS ID: $Id: io.h,v 1.11 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include #include "lua.h" #include "timeout.h" /* IO error codes */ enum { IO_DONE = 0, /* operation completed successfully */ IO_TIMEOUT = -1, /* operation timed out */ IO_CLOSED = -2, /* the connection has been closed */ IO_UNKNOWN = -3 }; /* interface to error message function */ typedef const char *(*p_error) ( void *ctx, /* context needed by send */ int err /* error code */ ); /* interface to send function */ typedef int (*p_send) ( void *ctx, /* context needed by send */ const char *data, /* pointer to buffer with data to send */ size_t count, /* number of bytes to send from buffer */ size_t *sent, /* number of bytes sent uppon return */ p_timeout tm /* timeout control */ ); /* interface to recv function */ typedef int (*p_recv) ( void *ctx, /* context needed by recv */ char *data, /* pointer to buffer where data will be writen */ size_t count, /* number of bytes to receive into buffer */ size_t *got, /* number of bytes received uppon return */ p_timeout tm /* timeout control */ ); /* IO driver definition */ typedef struct t_io_ { void *ctx; /* context needed by send/recv */ p_send send; /* send function pointer */ p_recv recv; /* receive function pointer */ p_error error; /* strerror function */ } t_io; typedef t_io *p_io; void io_init(p_io io, p_send send, p_recv recv, p_error error, void *ctx); const char *io_strerror(int err); #endif /* IO_H */ love-0.9.1/src/libraries/luasocket/libluasocket/io.c0000644000000000000000000000226112316602166022461 0ustar00rootroot00000000000000/*=========================================================================*\ * Input/Output abstraction * LuaSocket toolkit * * RCS ID: $Id: io.c,v 1.6 2005/09/29 06:11:41 diego Exp $ \*=========================================================================*/ #include "io.h" /*=========================================================================*\ * Exported functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Initializes C structure \*-------------------------------------------------------------------------*/ void io_init(p_io io, p_send send, p_recv recv, p_error error, void *ctx) { io->send = send; io->recv = recv; io->error = error; io->ctx = ctx; } /*-------------------------------------------------------------------------*\ * I/O error strings \*-------------------------------------------------------------------------*/ const char *io_strerror(int err) { switch (err) { case IO_DONE: return NULL; case IO_CLOSED: return "closed"; case IO_TIMEOUT: return "timeout"; default: return "unknown error"; } } love-0.9.1/src/libraries/luasocket/libluasocket/ftp.lua.h0000644000000000000000000011061612316602166023434 0ustar00rootroot00000000000000/* code automatically generated by bin2c -- DO NOT EDIT */ { /* #include'ing this file in a C program is equivalent to calling if (luaL_loadfile(L,"ftp.lua")==0) lua_call(L, 0, 0); */ /* ftp.lua */ static const unsigned char B1[]={ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 70, 84, 80, 32,115,117,112,112,111,114,116, 32,102,111,114, 32,116,104,101, 32, 76,117, 97, 32,108, 97,110,103,117, 97,103,101, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65, 117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,102,116,112, 46,108, 117, 97, 44,118, 32, 49, 46, 52, 53, 32, 50, 48, 48, 55, 47, 48, 55, 47, 49, 49, 32, 49, 57, 58, 50, 53, 58, 52, 55, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108, 111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97, 98,108,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97, 98,108,101, 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108, 111, 99, 97,108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109, 97,116,104, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 34, 41, 10,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10,108,111, 99, 97,108, 32,116,112, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101, 116, 46,116,112, 34, 41, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,109,111, 100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,102,116,112, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97,110,116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 116,105,109,101,111,117,116, 32,105,110, 32,115,101, 99,111,110,100,115, 32, 98, 101,102,111,114,101, 32,116,104,101, 32,112,114,111,103,114, 97,109, 32,103,105, 118,101,115, 32,117,112, 32,111,110, 32, 97, 32, 99,111,110,110,101, 99,116,105, 111,110, 10, 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 45, 45, 32,100, 101,102, 97,117,108,116, 32,112,111,114,116, 32,102,111,114, 32,102,116,112, 32, 115,101,114,118,105, 99,101, 10, 80, 79, 82, 84, 32, 61, 32, 50, 49, 10, 45, 45, 32,116,104,105,115, 32,105,115, 32,116,104,101, 32,100,101,102, 97,117,108,116, 32, 97,110,111,110,121,109,111,117,115, 32,112, 97,115,115,119,111,114,100, 46, 32,117,115,101,100, 32,119,104,101,110, 32,110,111, 32,112, 97,115,115,119,111, 114,100, 32,105,115, 10, 45, 45, 32,112,114,111,118,105,100,101,100, 32,105,110, 32,117,114,108, 46, 32,115,104,111,117,108,100, 32, 98,101, 32, 99,104, 97,110, 103,101,100, 32,116,111, 32,121,111,117,114, 32,101, 45,109, 97,105,108, 46, 10, 85, 83, 69, 82, 32, 61, 32, 34,102,116,112, 34, 10, 80, 65, 83, 83, 87, 79, 82, 68, 32, 61, 32, 34, 97,110,111,110,121,109,111,117,115, 64, 97,110,111,110,121, 109,111,117,115, 46,111,114,103, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32,108,101,118,101, 108, 32, 70, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109,101,116, 97,116, 32, 61, 32,123, 32, 95, 95,105,110,100,101,120, 32, 61, 32,123,125, 32,125, 10, 10, 102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,115,101,114,118,101,114, 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32, 108,111, 99, 97,108, 32,116,112, 32, 61, 32,115,111, 99,107,101,116, 46,116,114, 121, 40,116,112, 46, 99,111,110,110,101, 99,116, 40,115,101,114,118,101,114, 44, 32,112,111,114,116, 32,111,114, 32, 80, 79, 82, 84, 44, 32, 84, 73, 77, 69, 79, 85, 84, 44, 32, 99,114,101, 97,116,101, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,123, 32,116,112, 32, 61, 32,116,112, 32,125, 44, 32,109,101, 116, 97,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114, 101, 32,101,118,101,114,121,116,104,105,110,103, 32,103,101,116,115, 32, 99,108, 111,115,101,100, 32,105,110, 32, 97,110, 32,101,120, 99,101,112,116,105,111,110, 10, 32, 32, 32, 32,102, 46,116,114,121, 32, 61, 32,115,111, 99,107,101,116, 46, 110,101,119,116,114,121, 40,102,117,110, 99,116,105,111,110, 40, 41, 32,102, 58, 99,108,111,115,101, 40, 41, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101,116, 117,114,110, 32,102, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112,111,114,116, 99,111, 110,110,101, 99,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,115,101,114,118,101,114, 58,115,101,116,116,105,109,101, 111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,115,101, 108,102, 46,100, 97,116, 97, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115, 101,108,102, 46,115,101,114,118,101,114, 58, 97, 99, 99,101,112,116, 40, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,100, 97,116, 97, 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109, 101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112, 97,115,118, 99,111,110, 110,101, 99,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,116, 97, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,111, 99,107,101,116, 46,116, 99,112, 40, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115, 101,108,102, 46,100, 97,116, 97, 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116, 114,121, 40,115,101,108,102, 46,100, 97,116, 97, 58, 99,111,110,110,101, 99,116, 40,115,101,108,102, 46,112, 97,115,118,116, 46,105,112, 44, 32,115,101,108,102, 46,112, 97,115,118,116, 46,112,111,114,116, 41, 41, 10,101,110,100, 10, 10,102, 117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101, 120, 58,108,111,103,105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111, 114,100, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108, 102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,117,115,101,114, 34, 44, 32,117,115,101,114, 32,111,114, 32, 85, 83, 69, 82, 41, 41, 10, 32, 32, 32, 32, 108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61, 32, 115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107,123, 34, 50, 46, 46, 34, 44, 32, 51, 51, 49,125, 41, 10, 32, 32, 32, 32, 105,102, 32, 99,111,100,101, 32, 61, 61, 32, 51, 51, 49, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108, 102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,112, 97,115,115, 34, 44, 32,112, 97,115,115,119,111,114,100, 32,111,114, 32, 80, 65, 83, 83, 87, 79, 82, 68, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114, 110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101, 116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112, 97,115,118, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,112, 97,115,118, 34, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104, 101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97, 108, 32,112, 97,116,116,101,114,110, 32, 61, 32, 34, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 34, 10, 32, 32, 32, 32,108, 111, 99, 97,108, 32, 97, 44, 32, 98, 44, 32, 99, 44, 32,100, 44, 32,112, 49, 44, 32,112, 50, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,114,101,112,108,121, 44, 32, 112, 97,116,116,101,114,110, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116, 114,121, 40, 97, 32, 97,110,100, 32, 98, 32, 97,110,100, 32, 99, 32, 97,110,100, 32,100, 32, 97,110,100, 32,112, 49, 32, 97,110,100, 32,112, 50, 44, 32,114,101, 112,108,121, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,112, 97,115,118,116, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,112, 32, 61, 32,115,116,114, 105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37,100, 46, 37,100, 46, 37,100, 46, 37,100, 34, 44, 32, 97, 44, 32, 98, 44, 32, 99, 44, 32,100, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,111,114,116, 32, 61, 32,112, 49, 42, 50, 53, 54, 32, 43, 32,112, 50, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,105,102, 32,115, 101,108,102, 46,115,101,114,118,101,114, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,115,101,114,118,101,114, 58, 99,108,111,115, 101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,115,101,114, 118,101,114, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,112, 97,115,118,116, 46, 105,112, 44, 32,115,101,108,102, 46,112, 97,115,118,116, 46,112,111,114,116, 10, 101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112,111,114,116, 40,105,112, 44, 32,112,111,114, 116, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,112, 97,115,118,116, 32, 61, 32, 110,105,108, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,105,112, 32,116,104, 101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,112, 44, 32,112,111,114,116, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,103, 101,116, 99,111,110,116,114,111,108, 40, 41, 58,103,101,116,115,111, 99,107,110, 97,109,101, 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46, 115,101,114,118,101,114, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,111, 99,107,101,116, 46, 98,105,110,100, 40,105,112, 44, 32, 48, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,112, 44, 32,112,111,114,116, 32, 61, 32,115,101,108, 102, 46,116,114,121, 40,115,101,108,102, 46,115,101,114,118,101,114, 58,103,101, 116,115,111, 99,107,110, 97,109,101, 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,115,101,114,118,101, 114, 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,108, 32, 61, 32,109, 97,116,104, 46,109,111,100, 40,112,111,114,116, 44, 32, 50, 53, 54, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,104, 32, 61, 32, 40,112,111,114,116, 32, 45, 32,112,108, 41, 47, 50, 53, 54, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,114,103, 32, 61, 32,115,116,114,105,110,103, 46, 103,115,117, 98, 40,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37,115, 44, 37,100, 44, 37,100, 34, 44, 32,105,112, 44, 32,112,104, 44, 32,112, 108, 41, 44, 32, 34, 37, 46, 34, 44, 32, 34, 44, 34, 41, 10, 32, 32, 32, 32,115, 101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,112,111,114,116, 34, 44, 32, 97,114,103, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99, 104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116, 117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 40,115, 101,110,100,116, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115, 101,108,102, 46,112, 97,115,118,116, 32,111,114, 32,115,101,108,102, 46,115,101, 114,118,101,114, 44, 32, 34,110,101,101,100, 32,112,111,114,116, 32,111,114, 32, 112, 97,115,118, 32,102,105,114,115,116, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32, 105,102, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,112, 97,115,118,116, 32, 116, 97, 98,108,101, 44, 32,119,101, 32, 97,108,114,101, 97,100,121, 32,115,101, 110,116, 32, 97, 32, 80, 65, 83, 86, 32, 99,111,109,109, 97,110,100, 10, 32, 32, 32, 32, 45, 45, 32,119,101, 32,106,117,115,116, 32,103,101,116, 32,116,104,101, 32,100, 97,116, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 32,105,110,116, 111, 32,115,101,108,102, 46,100, 97,116, 97, 10, 32, 32, 32, 32,105,102, 32,115, 101,108,102, 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58, 112, 97,115,118, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,116,104,101, 32,116,114, 97,110,115,102,101, 114, 32, 97,114,103,117,109,101,110,116, 32, 97,110,100, 32, 99,111,109,109, 97, 110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,114,103,117,109,101,110, 116, 32, 61, 32,115,101,110,100,116, 46, 97,114,103,117,109,101,110,116, 32,111, 114, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,114,108, 46,117,110,101,115, 99, 97, 112,101, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,115,101,110,100,116, 46,112, 97,116,104, 32,111,114, 32, 34, 34, 44, 32, 34, 94, 91, 47, 92, 92, 93, 34, 44, 32, 34, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114,103,117,109, 101,110,116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32, 97,114,103,117,109, 101,110,116, 32, 61, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,109,109, 97,110,100, 32, 61, 32,115,101,110,100,116, 46, 99,111,109,109, 97,110,100, 32,111,114, 32, 34,115,116,111,114, 34, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,116,104,101, 32,116,114, 97,110,115,102, 101,114, 32, 99,111,109,109, 97,110,100, 32, 97,110,100, 32, 99,104,101, 99,107, 32,116,104,101, 32,114,101,112,108,121, 10, 32, 32, 32, 32,115,101,108,102, 46, 116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 99,111,109,109, 97,110,100, 44, 32, 97,114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108, 121, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107,123, 34, 50, 46, 46, 34, 44, 32, 34, 49, 46, 46, 34,125, 41, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32,110,111,116, 32, 97, 32, 97, 32,112, 97,115,118,116, 32,116, 97, 98,108,101, 44, 32,116,104,101,110, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,115,101, 114,118,101,114, 10, 32, 32, 32, 32, 45, 45, 32, 97,110,100, 32,119,101, 32, 97, 108,114,101, 97,100,121, 32,115,101,110,116, 32, 97, 32, 80, 79, 82, 84, 32, 99, 111,109,109, 97,110,100, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,101, 108,102, 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112, 111,114,116, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,116,104,101, 32,115,105,110,107, 44, 32,115,111, 117,114, 99,101, 32, 97,110,100, 32,115,116,101,112, 32,102,111,114, 32,116,104, 101, 32,116,114, 97,110,115,102,101,114, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,116,101,112, 32, 61, 32,115,101,110,100,116, 46,115,116,101,112, 32,111, 114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101, 97,100,116, 32, 61, 32,123,115,101,108, 102, 46,116,112, 46, 99,125, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104, 101, 99,107,115,116,101,112, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115, 114, 99, 44, 32,115,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32, 99,104,101, 99,107, 32,115,116, 97,116,117,115, 32,105,110, 32, 99,111,110,116, 114,111,108, 32, 99,111,110,110,101, 99,116,105,111,110, 32,119,104,105,108,101, 32,100,111,119,110,108,111, 97,100,105,110,103, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101, 97,100,121,116, 32, 61, 32,115,111, 99,107, 101,116, 46,115,101,108,101, 99,116, 40,114,101, 97,100,116, 44, 32,110,105,108, 44, 32, 48, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,114,101, 97,100, 121,116, 91,116,112, 93, 32,116,104,101,110, 32, 99,111,100,101, 32, 61, 32,115, 101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99, 107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,116,101,112, 40,115,114, 99, 44, 32,115, 110,107, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97, 108, 32,115,105,110,107, 32, 61, 32,115,111, 99,107,101,116, 46,115,105,110,107, 40, 34, 99,108,111,115,101, 45,119,104,101,110, 45,100,111,110,101, 34, 44, 32, 115,101,108,102, 46,100, 97,116, 97, 41, 10, 32, 32, 32, 32, 45, 45, 32,116,114, 97,110,115,102,101,114, 32, 97,108,108, 32,100, 97,116, 97, 32, 97,110,100, 32, 99,104,101, 99,107, 32,101,114,114,111,114, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40, 115,101,110,100,116, 46,115,111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32, 99,104,101, 99,107,115,116,101,112, 41, 41, 10, 32, 32, 32, 32,105,102, 32,115, 116,114,105,110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46, 46, 34, 41, 32,116,104,101,110, 32,115,101,108,102, 46,116,114,121, 40,115,101, 108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32, 101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,100,111,110,101, 32,119,105,116,104, 32,100, 97,116, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,116, 97, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 45, 45, 32,102,105,110,100, 32,111,117,116, 32,104,111,119, 32,109, 97,110,121, 32, 98,121,116,101,115, 32,119,101,114,101, 32,115,101,110,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,101,110,116, 32, 61, 32,115,111, 99, 107,101,116, 46,115,107,105,112, 40, 49, 44, 32,115,101,108,102, 46,100, 97,116, 97, 58,103,101,116,115,116, 97,116,115, 40, 41, 41, 10, 32, 32, 32, 32,115,101, 108,102, 46,100, 97,116, 97, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,114,101, 116,117,114,110, 32,115,101,110,116, 10,101,110,100, 10, 10,102,117,110, 99,116, 105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118,101, 40,114,101, 99,118,116, 41, 10, 32, 32, 32, 32,115,101,108, 102, 46,116,114,121, 40,115,101,108,102, 46,112, 97,115,118,116, 32,111,114, 32, 115,101,108,102, 46,115,101,114,118,101,114, 44, 32, 34,110,101,101,100, 32,112, 111,114,116, 32,111,114, 32,112, 97,115,118, 32,102,105,114,115,116, 34, 41, 10, 32, 32, 32, 32,105,102, 32,115,101,108,102, 46,112, 97,115,118,116, 32,116,104, 101,110, 32,115,101,108,102, 58,112, 97,115,118, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,114,103,117, 109,101,110,116, 32, 61, 32,114,101, 99,118,116, 46, 97,114,103,117,109,101,110, 116, 32,111,114, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,114,108, 46,117,110,101, 115, 99, 97,112,101, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,114,101, 99,118,116, 46,112, 97,116,104, 32,111,114, 32, 34, 34, 44, 32, 34, 94, 91, 47, 92, 92, 93, 34, 44, 32, 34, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114, 103,117,109,101,110,116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32, 97,114, 103,117,109,101,110,116, 32, 61, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,109,109, 97,110,100, 32, 61, 32,114,101, 99, 118,116, 46, 99,111,109,109, 97,110,100, 32,111,114, 32, 34,114,101,116,114, 34, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116, 112, 58, 99,111,109,109, 97,110,100, 40, 99,111,109,109, 97,110,100, 44, 32, 97, 114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107,123, 34, 49, 46, 46, 34, 44, 32, 34, 50, 46, 46, 34,125, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,101,108,102, 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112,111,114, 116, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,108, 111, 99, 97,108, 32,115,111,117,114, 99,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,111,117,114, 99,101, 40, 34,117,110,116,105,108, 45, 99,108,111,115,101, 100, 34, 44, 32,115,101,108,102, 46,100, 97,116, 97, 41, 10, 32, 32, 32, 32,108, 111, 99, 97,108, 32,115,116,101,112, 32, 61, 32,114,101, 99,118,116, 46,115,116, 101,112, 32,111,114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101, 112, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32,114,101, 99,118,116, 46,115,105,110,107, 44, 32,115,116,101,112, 41, 41, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46, 46, 34, 41, 32,116,104,101,110, 32,115,101,108,102, 46,116, 114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97, 116, 97, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46, 100, 97,116, 97, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,114,101,116,117,114, 110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101, 116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,119,100, 40,100,105,114, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116, 112, 58, 99,111,109,109, 97,110,100, 40, 34, 99,119,100, 34, 44, 32,100,105,114, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 50, 53, 48, 41, 41, 10, 32, 32, 32, 32, 114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105, 111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,116,121,112, 101, 40,116,121,112,101, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,116,121, 112,101, 34, 44, 32,116,121,112,101, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 50, 48, 48, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110, 100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95, 105,110,100,101,120, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 32, 61, 32,115,101,108,102, 46,116,114,121, 40, 115,101,108,102, 46,116,112, 58, 99,104,101, 99,107,123, 34, 49, 46, 46, 34, 44, 32, 34, 50, 46, 46, 34,125, 41, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105, 110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46, 46, 34, 41, 32,116,104,101,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102, 117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101, 120, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114, 121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,113, 117,105,116, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40, 115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10, 102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100, 101,120, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,105,102, 32,115,101, 108,102, 46,100, 97,116, 97, 32,116,104,101,110, 32,115,101,108,102, 46,100, 97, 116, 97, 58, 99,108,111,115,101, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,105, 102, 32,115,101,108,102, 46,115,101,114,118,101,114, 32,116,104,101,110, 32,115, 101,108,102, 46,115,101,114,118,101,114, 58, 99,108,111,115,101, 40, 41, 32,101, 110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116, 112, 58, 99,108,111,115,101, 40, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101,118,101,108, 32, 70, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102, 117,110, 99,116,105,111,110, 32,111,118,101,114,114,105,100,101, 40,116, 41, 10, 32, 32, 32, 32,105,102, 32,116, 46,117,114,108, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,117, 32, 61, 32,117,114,108, 46, 112, 97,114,115,101, 40,116, 46,117,114,108, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105, 114,115, 40,116, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,117, 91,105, 93, 32, 61, 32,118, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,117, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,116, 32,101,110,100, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,116,112,117,116, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,112,117,116,116, 32, 61, 32,111,118,101,114,114,105,100,101, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,112,117,116,116, 46,104,111, 115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109, 101, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111,112, 101,110, 40,112,117,116,116, 46,104,111,115,116, 44, 32,112,117,116,116, 46,112, 111,114,116, 44, 32,112,117,116,116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,102, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111, 103,105,110, 40,112,117,116,116, 46,117,115,101,114, 44, 32,112,117,116,116, 46, 112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,105,102, 32,112,117,116, 116, 46,116,121,112,101, 32,116,104,101,110, 32,102, 58,116,121,112,101, 40,112, 117,116,116, 46,116,121,112,101, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58, 112, 97,115,118, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,101,110, 116, 32, 61, 32,102, 58,115,101,110,100, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,102, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,102, 58, 99,108,111,115, 101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,110,116, 10, 101,110,100, 10, 10,108,111, 99, 97,108, 32,100,101,102, 97,117,108,116, 32, 61, 32,123, 10, 9,112, 97,116,104, 32, 61, 32, 34, 47, 34, 44, 10, 9,115, 99,104, 101,109,101, 32, 61, 32, 34,102,116,112, 34, 10,125, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,115,111, 99,107,101,116, 46, 116,114,121, 40,117,114,108, 46,112, 97,114,115,101, 40,117, 44, 32,100,101,102, 97,117,108,116, 41, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114, 121, 40,116, 46,115, 99,104,101,109,101, 32, 61, 61, 32, 34,102,116,112, 34, 44, 32, 34,119,114,111,110,103, 32,115, 99,104,101,109,101, 32, 39, 34, 32, 46, 46, 32,116, 46,115, 99,104,101,109,101, 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116, 46,104,111,115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109,101, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112, 97,116, 32, 61, 32, 34, 94,116, 121,112,101, 61, 40, 46, 41, 36, 34, 10, 32, 32, 32, 32,105,102, 32,116, 46,112, 97,114, 97,109,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,116, 46,116,121,112,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,116, 46,112, 97,114, 97,109,115, 44, 32,112, 97,116, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115, 111, 99,107,101,116, 46,116,114,121, 40,116, 46,116,121,112,101, 32, 61, 61, 32, 34, 97, 34, 32,111,114, 32,116, 46,116,121,112,101, 32, 61, 61, 32, 34,105, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34,105,110,118, 97,108, 105,100, 32,116,121,112,101, 32, 39, 34, 32, 46, 46, 32,116, 46,116,121,112,101, 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,112,117,116, 40,117, 44, 32, 98,111, 100,121, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,117,116,116, 32, 61, 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32,112,117,116,116, 46,115, 111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114, 99,101, 46,115,116,114,105,110,103, 40, 98,111,100,121, 41, 10, 32, 32, 32, 32,114,101, 116,117,114,110, 32,116,112,117,116, 40,112,117,116,116, 41, 10,101,110,100, 10, 10,112,117,116, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,101, 99, 116, 40,102,117,110, 99,116,105,111,110, 40,112,117,116,116, 44, 32, 98,111,100, 121, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40, 112,117,116,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32,116,104, 101,110, 32,114,101,116,117,114,110, 32,115,112,117,116, 40,112,117,116,116, 44, 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117, 114,110, 32,116,112,117,116, 40,112,117,116,116, 41, 32,101,110,100, 10,101,110, 100, 41, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,116, 103,101,116, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,103,101,116,116, 32, 61, 32,111,118,101,114,114,105,100,101, 40,103,101,116,116, 41, 10, 32, 32, 32, 32, 115,111, 99,107,101,116, 46,116,114,121, 40,103,101,116,116, 46,104,111,115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109,101, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111,112,101,110, 40,103,101,116,116, 46,104,111,115,116, 44, 32,103,101,116,116, 46,112,111,114, 116, 44, 32,103,101,116,116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32, 102, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111,103,105, 110, 40,103,101,116,116, 46,117,115,101,114, 44, 32,103,101,116,116, 46,112, 97, 115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,105,102, 32,103,101,116,116, 46, 116,121,112,101, 32,116,104,101,110, 32,102, 58,116,121,112,101, 40,103,101,116, 116, 46,116,121,112,101, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,112, 97, 115,118, 40, 41, 10, 32, 32, 32, 32,102, 58,114,101, 99,101,105,118,101, 40,103, 101,116,116, 41, 10, 32, 32, 32, 32,102, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102, 58, 99,108,111,115,101, 40, 41, 10,101, 110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115, 103,101,116, 40,117, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,103,101,116, 116, 32, 61, 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,103,101,116,116, 46,115, 105,110,107, 32, 61, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,116, 97, 98, 108,101, 40,116, 41, 10, 32, 32, 32, 32,116,103,101,116, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 97, 98,108,101, 46, 99,111, 110, 99, 97,116, 40,116, 41, 10,101,110,100, 10, 10, 99,111,109,109, 97,110,100, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,101, 99,116, 40,102,117, 110, 99,116,105,111,110, 40, 99,109,100,116, 41, 10, 32, 32, 32, 32, 99,109,100, 116, 32, 61, 32,111,118,101,114,114,105,100,101, 40, 99,109,100,116, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40, 99,109,100,116, 46,104, 111,115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97, 109,101, 34, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40, 99,109,100,116, 46, 99,111,109,109, 97,110,100, 44, 32, 34,109,105,115,115,105, 110,103, 32, 99,111,109,109, 97,110,100, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111,112,101,110, 40, 99,109,100,116, 46,104,111,115, 116, 44, 32, 99,109,100,116, 46,112,111,114,116, 44, 32, 99,109,100,116, 46, 99, 114,101, 97,116,101, 41, 10, 32, 32, 32, 32,102, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111,103,105,110, 40, 99,109,100,116, 46,117,115, 101,114, 44, 32, 99,109,100,116, 46,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,102, 46,116,114,121, 40,102, 46,116,112, 58, 99,111,109,109, 97,110, 100, 40, 99,109,100,116, 46, 99,111,109,109, 97,110,100, 44, 32, 99,109,100,116, 46, 97,114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 99, 109,100,116, 46, 99,104,101, 99,107, 32,116,104,101,110, 32,102, 46,116,114,121, 40,102, 46,116,112, 58, 99,104,101, 99,107, 40, 99,109,100,116, 46, 99,104,101, 99,107, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102, 58, 99,108,111,115,101, 40, 41, 10,101,110,100, 41, 10, 10,103,101,116, 32, 61, 32,115,111, 99,107,101, 116, 46,112,114,111,116,101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,103, 101,116,116, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112, 101, 40,103,101,116,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32, 116,104,101,110, 32,114,101,116,117,114,110, 32,115,103,101,116, 40,103,101,116, 116, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,116, 103,101,116, 40,103,101,116,116, 41, 32,101,110,100, 10,101,110,100, 41, 10, 10, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"ftp.lua")==0) lua_call(L, 0, 0); } love-0.9.1/src/libraries/luasocket/libluasocket/select.c0000644000000000000000000001355212316602166023336 0ustar00rootroot00000000000000/*=========================================================================*\ * Select implementation * LuaSocket toolkit * * RCS ID: $Id: select.c,v 1.22 2005/11/20 07:20:23 diego Exp $ \*=========================================================================*/ #include #include "lua.h" #include "lauxlib.h" #include "socket.h" #include "timeout.h" #include "select.h" /*=========================================================================*\ * Internal function prototypes. \*=========================================================================*/ static t_socket getfd(lua_State *L); static int dirty(lua_State *L); static t_socket collect_fd(lua_State *L, int tab, t_socket max_fd, int itab, fd_set *set); static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set); static void return_fd(lua_State *L, fd_set *set, t_socket max_fd, int itab, int tab, int start); static void make_assoc(lua_State *L, int tab); static int global_select(lua_State *L); /* functions in library namespace */ static luaL_reg func[] = { {"select", global_select}, {NULL, NULL} }; /*=========================================================================*\ * Exported functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Initializes module \*-------------------------------------------------------------------------*/ int select_open(lua_State *L) { luaL_openlib(L, NULL, func, 0); return 0; } /*=========================================================================*\ * Global Lua functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Waits for a set of sockets until a condition is met or timeout. \*-------------------------------------------------------------------------*/ static int global_select(lua_State *L) { int rtab, wtab, itab, ret, ndirty; t_socket max_fd; fd_set rset, wset; t_timeout tm; double t = luaL_optnumber(L, 3, -1); FD_ZERO(&rset); FD_ZERO(&wset); lua_settop(L, 3); lua_newtable(L); itab = lua_gettop(L); lua_newtable(L); rtab = lua_gettop(L); lua_newtable(L); wtab = lua_gettop(L); max_fd = collect_fd(L, 1, SOCKET_INVALID, itab, &rset); ndirty = check_dirty(L, 1, rtab, &rset); t = ndirty > 0? 0.0: t; timeout_init(&tm, t, -1); timeout_markstart(&tm); max_fd = collect_fd(L, 2, max_fd, itab, &wset); ret = socket_select(max_fd+1, &rset, &wset, NULL, &tm); if (ret > 0 || ndirty > 0) { return_fd(L, &rset, max_fd+1, itab, rtab, ndirty); return_fd(L, &wset, max_fd+1, itab, wtab, 0); make_assoc(L, rtab); make_assoc(L, wtab); return 2; } else if (ret == 0) { lua_pushstring(L, "timeout"); return 3; } else { lua_pushstring(L, "error"); return 3; } } /*=========================================================================*\ * Internal functions \*=========================================================================*/ static t_socket getfd(lua_State *L) { t_socket fd = SOCKET_INVALID; lua_pushstring(L, "getfd"); lua_gettable(L, -2); if (!lua_isnil(L, -1)) { lua_pushvalue(L, -2); lua_call(L, 1, 1); if (lua_isnumber(L, -1)) fd = (t_socket) lua_tonumber(L, -1); } lua_pop(L, 1); return fd; } static int dirty(lua_State *L) { int is = 0; lua_pushstring(L, "dirty"); lua_gettable(L, -2); if (!lua_isnil(L, -1)) { lua_pushvalue(L, -2); lua_call(L, 1, 1); is = lua_toboolean(L, -1); } lua_pop(L, 1); return is; } static t_socket collect_fd(lua_State *L, int tab, t_socket max_fd, int itab, fd_set *set) { int i = 1; if (lua_isnil(L, tab)) return max_fd; while (1) { t_socket fd; lua_pushnumber(L, i); lua_gettable(L, tab); if (lua_isnil(L, -1)) { lua_pop(L, 1); break; } fd = getfd(L); if (fd != SOCKET_INVALID) { FD_SET(fd, set); if (max_fd == SOCKET_INVALID || max_fd < fd) max_fd = fd; lua_pushnumber(L, fd); lua_pushvalue(L, -2); lua_settable(L, itab); } lua_pop(L, 1); i = i + 1; } return max_fd; } static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set) { int ndirty = 0, i = 1; if (lua_isnil(L, tab)) return 0; while (1) { t_socket fd; lua_pushnumber(L, i); lua_gettable(L, tab); if (lua_isnil(L, -1)) { lua_pop(L, 1); break; } fd = getfd(L); if (fd != SOCKET_INVALID && dirty(L)) { lua_pushnumber(L, ++ndirty); lua_pushvalue(L, -2); lua_settable(L, dtab); FD_CLR(fd, set); } lua_pop(L, 1); i = i + 1; } return ndirty; } static void return_fd(lua_State *L, fd_set *set, t_socket max_fd, int itab, int tab, int start) { t_socket fd; for (fd = 0; fd < max_fd; fd++) { if (FD_ISSET(fd, set)) { lua_pushnumber(L, ++start); lua_pushnumber(L, fd); lua_gettable(L, itab); lua_settable(L, tab); } } } static void make_assoc(lua_State *L, int tab) { int i = 1, atab; lua_newtable(L); atab = lua_gettop(L); while (1) { lua_pushnumber(L, i); lua_gettable(L, tab); if (!lua_isnil(L, -1)) { lua_pushnumber(L, i); lua_pushvalue(L, -2); lua_settable(L, atab); lua_pushnumber(L, i); lua_settable(L, atab); } else { lua_pop(L, 1); break; } i = i+1; } } love-0.9.1/src/libraries/luasocket/libluasocket/inet.h0000644000000000000000000000245212316602166023020 0ustar00rootroot00000000000000#ifndef INET_H #define INET_H /*=========================================================================*\ * Internet domain functions * LuaSocket toolkit * * This module implements the creation and connection of internet domain * sockets, on top of the socket.h interface, and the interface of with the * resolver. * * The function inet_aton is provided for the platforms where it is not * available. The module also implements the interface of the internet * getpeername and getsockname functions as seen by Lua programs. * * The Lua functions toip and tohostname are also implemented here. * * RCS ID: $Id: inet.h,v 1.16 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "socket.h" #include "timeout.h" #ifdef _WIN32 #define INET_ATON #endif int inet_open(lua_State *L); const char *inet_trycreate(p_socket ps, int type); const char *inet_tryconnect(p_socket ps, const char *address, unsigned short port, p_timeout tm); const char *inet_trybind(p_socket ps, const char *address, unsigned short port); int inet_meth_getpeername(lua_State *L, p_socket ps); int inet_meth_getsockname(lua_State *L, p_socket ps); #ifdef INET_ATON int inet_aton(const char *cp, struct in_addr *inp); #endif #endif /* INET_H */ love-0.9.1/src/libraries/luasocket/libluasocket/tcp.c0000644000000000000000000002667012316602166022652 0ustar00rootroot00000000000000/*=========================================================================*\ * TCP object * LuaSocket toolkit * * RCS ID: $Id: tcp.c,v 1.41 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include #include "lua.h" #include "lauxlib.h" #include "auxiliar.h" #include "socket.h" #include "inet.h" #include "options.h" #include "tcp.h" /*=========================================================================*\ * Internal function prototypes \*=========================================================================*/ static int global_create(lua_State *L); static int meth_connect(lua_State *L); static int meth_listen(lua_State *L); static int meth_bind(lua_State *L); static int meth_send(lua_State *L); static int meth_getstats(lua_State *L); static int meth_setstats(lua_State *L); static int meth_getsockname(lua_State *L); static int meth_getpeername(lua_State *L); static int meth_shutdown(lua_State *L); static int meth_receive(lua_State *L); static int meth_accept(lua_State *L); static int meth_close(lua_State *L); static int meth_setoption(lua_State *L); static int meth_settimeout(lua_State *L); static int meth_getfd(lua_State *L); static int meth_setfd(lua_State *L); static int meth_dirty(lua_State *L); /* tcp object methods */ static luaL_reg tcp[] = { {"__gc", meth_close}, {"__tostring", auxiliar_tostring}, {"accept", meth_accept}, {"bind", meth_bind}, {"close", meth_close}, {"connect", meth_connect}, {"dirty", meth_dirty}, {"getfd", meth_getfd}, {"getpeername", meth_getpeername}, {"getsockname", meth_getsockname}, {"getstats", meth_getstats}, {"setstats", meth_setstats}, {"listen", meth_listen}, {"receive", meth_receive}, {"send", meth_send}, {"setfd", meth_setfd}, {"setoption", meth_setoption}, {"setpeername", meth_connect}, {"setsockname", meth_bind}, {"settimeout", meth_settimeout}, {"shutdown", meth_shutdown}, {NULL, NULL} }; /* socket option handlers */ static t_opt opt[] = { {"keepalive", opt_keepalive}, {"reuseaddr", opt_reuseaddr}, {"tcp-nodelay", opt_tcp_nodelay}, {"linger", opt_linger}, {NULL, NULL} }; /* functions in library namespace */ static luaL_reg func[] = { {"tcp", global_create}, {NULL, NULL} }; /*-------------------------------------------------------------------------*\ * Initializes module \*-------------------------------------------------------------------------*/ int tcp_open(lua_State *L) { /* create classes */ auxiliar_newclass(L, "tcp{master}", tcp); auxiliar_newclass(L, "tcp{client}", tcp); auxiliar_newclass(L, "tcp{server}", tcp); /* create class groups */ auxiliar_add2group(L, "tcp{master}", "tcp{any}"); auxiliar_add2group(L, "tcp{client}", "tcp{any}"); auxiliar_add2group(L, "tcp{server}", "tcp{any}"); /* define library functions */ luaL_openlib(L, NULL, func, 0); return 0; } /*=========================================================================*\ * Lua methods \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Just call buffered IO methods \*-------------------------------------------------------------------------*/ static int meth_send(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); return buffer_meth_send(L, &tcp->buf); } static int meth_receive(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); return buffer_meth_receive(L, &tcp->buf); } static int meth_getstats(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); return buffer_meth_getstats(L, &tcp->buf); } static int meth_setstats(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); return buffer_meth_setstats(L, &tcp->buf); } /*-------------------------------------------------------------------------*\ * Just call option handler \*-------------------------------------------------------------------------*/ static int meth_setoption(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); return opt_meth_setoption(L, opt, &tcp->sock); } /*-------------------------------------------------------------------------*\ * Select support methods \*-------------------------------------------------------------------------*/ static int meth_getfd(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); lua_pushnumber(L, (int) tcp->sock); return 1; } /* this is very dangerous, but can be handy for those that are brave enough */ static int meth_setfd(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); tcp->sock = (t_socket) luaL_checknumber(L, 2); return 0; } static int meth_dirty(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); lua_pushboolean(L, !buffer_isempty(&tcp->buf)); return 1; } /*-------------------------------------------------------------------------*\ * Waits for and returns a client object attempting connection to the * server object \*-------------------------------------------------------------------------*/ static int meth_accept(lua_State *L) { p_tcp server = (p_tcp) auxiliar_checkclass(L, "tcp{server}", 1); p_timeout tm = timeout_markstart(&server->tm); t_socket sock; int err = socket_accept(&server->sock, &sock, NULL, NULL, tm); /* if successful, push client socket */ if (err == IO_DONE) { p_tcp clnt = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); auxiliar_setclass(L, "tcp{client}", -1); /* initialize structure fields */ socket_setnonblocking(&sock); clnt->sock = sock; io_init(&clnt->io, (p_send) socket_send, (p_recv) socket_recv, (p_error) socket_ioerror, &clnt->sock); timeout_init(&clnt->tm, -1, -1); buffer_init(&clnt->buf, &clnt->io, &clnt->tm); return 1; } else { lua_pushnil(L); lua_pushstring(L, socket_strerror(err)); return 2; } } /*-------------------------------------------------------------------------*\ * Binds an object to an address \*-------------------------------------------------------------------------*/ static int meth_bind(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{master}", 1); const char *address = luaL_checkstring(L, 2); unsigned short port = (unsigned short) luaL_checknumber(L, 3); const char *err = inet_trybind(&tcp->sock, address, port); if (err) { lua_pushnil(L); lua_pushstring(L, err); return 2; } lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * Turns a master tcp object into a client object. \*-------------------------------------------------------------------------*/ static int meth_connect(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); const char *address = luaL_checkstring(L, 2); unsigned short port = (unsigned short) luaL_checknumber(L, 3); p_timeout tm = timeout_markstart(&tcp->tm); const char *err = inet_tryconnect(&tcp->sock, address, port, tm); /* have to set the class even if it failed due to non-blocking connects */ auxiliar_setclass(L, "tcp{client}", 1); if (err) { lua_pushnil(L); lua_pushstring(L, err); return 2; } /* turn master object into a client object */ lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * Closes socket used by object \*-------------------------------------------------------------------------*/ static int meth_close(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); socket_destroy(&tcp->sock); lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * Puts the sockt in listen mode \*-------------------------------------------------------------------------*/ static int meth_listen(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{master}", 1); int backlog = (int) luaL_optnumber(L, 2, 32); int err = socket_listen(&tcp->sock, backlog); if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, socket_strerror(err)); return 2; } /* turn master object into a server object */ auxiliar_setclass(L, "tcp{server}", 1); lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * Shuts the connection down partially \*-------------------------------------------------------------------------*/ static int meth_shutdown(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1); const char *how = luaL_optstring(L, 2, "both"); switch (how[0]) { case 'b': if (strcmp(how, "both")) goto error; socket_shutdown(&tcp->sock, 2); break; case 's': if (strcmp(how, "send")) goto error; socket_shutdown(&tcp->sock, 1); break; case 'r': if (strcmp(how, "receive")) goto error; socket_shutdown(&tcp->sock, 0); break; } lua_pushnumber(L, 1); return 1; error: luaL_argerror(L, 2, "invalid shutdown method"); return 0; } /*-------------------------------------------------------------------------*\ * Just call inet methods \*-------------------------------------------------------------------------*/ static int meth_getpeername(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); return inet_meth_getpeername(L, &tcp->sock); } static int meth_getsockname(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); return inet_meth_getsockname(L, &tcp->sock); } /*-------------------------------------------------------------------------*\ * Just call tm methods \*-------------------------------------------------------------------------*/ static int meth_settimeout(lua_State *L) { p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1); return timeout_meth_settimeout(L, &tcp->tm); } /*=========================================================================*\ * Library functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Creates a master tcp object \*-------------------------------------------------------------------------*/ static int global_create(lua_State *L) { t_socket sock; const char *err = inet_trycreate(&sock, SOCK_STREAM); /* try to allocate a system socket */ if (!err) { /* allocate tcp object */ p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp)); /* set its type as master object */ auxiliar_setclass(L, "tcp{master}", -1); /* initialize remaining structure fields */ socket_setnonblocking(&sock); tcp->sock = sock; io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv, (p_error) socket_ioerror, &tcp->sock); timeout_init(&tcp->tm, -1, -1); buffer_init(&tcp->buf, &tcp->io, &tcp->tm); return 1; } else { lua_pushnil(L); lua_pushstring(L, err); return 2; } } love-0.9.1/src/libraries/luasocket/libluasocket/inet.c0000644000000000000000000002301612316602166023012 0ustar00rootroot00000000000000/*=========================================================================*\ * Internet domain functions * LuaSocket toolkit * * RCS ID: $Id: inet.c,v 1.28 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include #include #include "lua.h" #include "lauxlib.h" #include "inet.h" /*=========================================================================*\ * Internal function prototypes. \*=========================================================================*/ static int inet_global_toip(lua_State *L); static int inet_global_tohostname(lua_State *L); static void inet_pushresolved(lua_State *L, struct hostent *hp); static int inet_global_gethostname(lua_State *L); /* DNS functions */ static luaL_reg func[] = { { "toip", inet_global_toip }, { "tohostname", inet_global_tohostname }, { "gethostname", inet_global_gethostname}, { NULL, NULL} }; /*=========================================================================*\ * Exported functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Initializes module \*-------------------------------------------------------------------------*/ int inet_open(lua_State *L) { lua_pushstring(L, "dns"); lua_newtable(L); luaL_openlib(L, NULL, func, 0); lua_settable(L, -3); return 0; } /*=========================================================================*\ * Global Lua functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Returns all information provided by the resolver given a host name * or ip address \*-------------------------------------------------------------------------*/ static int inet_gethost(const char *address, struct hostent **hp) { struct in_addr addr; if (inet_aton(address, &addr)) return socket_gethostbyaddr((char *) &addr, sizeof(addr), hp); else return socket_gethostbyname(address, hp); } /*-------------------------------------------------------------------------*\ * Returns all information provided by the resolver given a host name * or ip address \*-------------------------------------------------------------------------*/ static int inet_global_tohostname(lua_State *L) { const char *address = luaL_checkstring(L, 1); struct hostent *hp = NULL; int err = inet_gethost(address, &hp); if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, socket_hoststrerror(err)); return 2; } lua_pushstring(L, hp->h_name); inet_pushresolved(L, hp); return 2; } /*-------------------------------------------------------------------------*\ * Returns all information provided by the resolver given a host name * or ip address \*-------------------------------------------------------------------------*/ static int inet_global_toip(lua_State *L) { const char *address = luaL_checkstring(L, 1); struct hostent *hp = NULL; int err = inet_gethost(address, &hp); if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, socket_hoststrerror(err)); return 2; } lua_pushstring(L, inet_ntoa(*((struct in_addr *) hp->h_addr))); inet_pushresolved(L, hp); return 2; } /*-------------------------------------------------------------------------*\ * Gets the host name \*-------------------------------------------------------------------------*/ static int inet_global_gethostname(lua_State *L) { char name[257]; name[256] = '\0'; if (gethostname(name, 256) < 0) { lua_pushnil(L); lua_pushstring(L, "gethostname failed"); return 2; } else { lua_pushstring(L, name); return 1; } } /*=========================================================================*\ * Lua methods \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Retrieves socket peer name \*-------------------------------------------------------------------------*/ int inet_meth_getpeername(lua_State *L, p_socket ps) { struct sockaddr_in peer; socklen_t peer_len = sizeof(peer); if (getpeername(*ps, (SA *) &peer, &peer_len) < 0) { lua_pushnil(L); lua_pushstring(L, "getpeername failed"); } else { lua_pushstring(L, inet_ntoa(peer.sin_addr)); lua_pushnumber(L, ntohs(peer.sin_port)); } return 2; } /*-------------------------------------------------------------------------*\ * Retrieves socket local name \*-------------------------------------------------------------------------*/ int inet_meth_getsockname(lua_State *L, p_socket ps) { struct sockaddr_in local; socklen_t local_len = sizeof(local); if (getsockname(*ps, (SA *) &local, &local_len) < 0) { lua_pushnil(L); lua_pushstring(L, "getsockname failed"); } else { lua_pushstring(L, inet_ntoa(local.sin_addr)); lua_pushnumber(L, ntohs(local.sin_port)); } return 2; } /*=========================================================================*\ * Internal functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Passes all resolver information to Lua as a table \*-------------------------------------------------------------------------*/ static void inet_pushresolved(lua_State *L, struct hostent *hp) { char **alias; struct in_addr **addr; int i, resolved; lua_newtable(L); resolved = lua_gettop(L); lua_pushstring(L, "name"); lua_pushstring(L, hp->h_name); lua_settable(L, resolved); lua_pushstring(L, "ip"); lua_pushstring(L, "alias"); i = 1; alias = hp->h_aliases; lua_newtable(L); if (alias) { while (*alias) { lua_pushnumber(L, i); lua_pushstring(L, *alias); lua_settable(L, -3); i++; alias++; } } lua_settable(L, resolved); i = 1; lua_newtable(L); addr = (struct in_addr **) hp->h_addr_list; if (addr) { while (*addr) { lua_pushnumber(L, i); lua_pushstring(L, inet_ntoa(**addr)); lua_settable(L, -3); i++; addr++; } } lua_settable(L, resolved); } /*-------------------------------------------------------------------------*\ * Tries to create a new inet socket \*-------------------------------------------------------------------------*/ const char *inet_trycreate(p_socket ps, int type) { return socket_strerror(socket_create(ps, AF_INET, type, 0)); } /*-------------------------------------------------------------------------*\ * Tries to connect to remote address (address, port) \*-------------------------------------------------------------------------*/ const char *inet_tryconnect(p_socket ps, const char *address, unsigned short port, p_timeout tm) { struct sockaddr_in remote; int err; memset(&remote, 0, sizeof(remote)); remote.sin_family = AF_INET; remote.sin_port = htons(port); if (strcmp(address, "*")) { if (!inet_aton(address, &remote.sin_addr)) { struct hostent *hp = NULL; struct in_addr **addr; err = socket_gethostbyname(address, &hp); if (err != IO_DONE) return socket_hoststrerror(err); addr = (struct in_addr **) hp->h_addr_list; memcpy(&remote.sin_addr, *addr, sizeof(struct in_addr)); } } else remote.sin_family = AF_UNSPEC; err = socket_connect(ps, (SA *) &remote, sizeof(remote), tm); return socket_strerror(err); } /*-------------------------------------------------------------------------*\ * Tries to bind socket to (address, port) \*-------------------------------------------------------------------------*/ const char *inet_trybind(p_socket ps, const char *address, unsigned short port) { struct sockaddr_in local; int err; memset(&local, 0, sizeof(local)); /* address is either wildcard or a valid ip address */ local.sin_addr.s_addr = htonl(INADDR_ANY); local.sin_port = htons(port); local.sin_family = AF_INET; if (strcmp(address, "*") && !inet_aton(address, &local.sin_addr)) { struct hostent *hp = NULL; struct in_addr **addr; err = socket_gethostbyname(address, &hp); if (err != IO_DONE) return socket_hoststrerror(err); addr = (struct in_addr **) hp->h_addr_list; memcpy(&local.sin_addr, *addr, sizeof(struct in_addr)); } err = socket_bind(ps, (SA *) &local, sizeof(local)); if (err != IO_DONE) socket_destroy(ps); return socket_strerror(err); } /*-------------------------------------------------------------------------*\ * Some systems do not provide this so that we provide our own. It's not * marvelously fast, but it works just fine. \*-------------------------------------------------------------------------*/ #ifdef INET_ATON int inet_aton(const char *cp, struct in_addr *inp) { unsigned int a = 0, b = 0, c = 0, d = 0; int n = 0, r; unsigned long int addr = 0; r = sscanf(cp, "%u.%u.%u.%u%n", &a, &b, &c, &d, &n); if (r == 0 || n == 0) return 0; cp += n; if (*cp) return 0; if (a > 255 || b > 255 || c > 255 || d > 255) return 0; if (inp) { addr += a; addr <<= 8; addr += b; addr <<= 8; addr += c; addr <<= 8; addr += d; inp->s_addr = htonl(addr); } return 1; } #endif love-0.9.1/src/libraries/luasocket/libluasocket/udp.h0000644000000000000000000000160112316602166022644 0ustar00rootroot00000000000000#ifndef UDP_H #define UDP_H /*=========================================================================*\ * UDP object * LuaSocket toolkit * * The udp.h module provides LuaSocket with support for UDP protocol * (AF_INET, SOCK_DGRAM). * * Two classes are defined: connected and unconnected. UDP objects are * originally unconnected. They can be "connected" to a given address * with a call to the setpeername function. The same function can be used to * break the connection. * * RCS ID: $Id: udp.h,v 1.10 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "timeout.h" #include "socket.h" /* can't be larger than wsocket.c MAXCHUNK!!! */ #define UDP_DATAGRAMSIZE 8192 typedef struct t_udp_ { t_socket sock; t_timeout tm; } t_udp; typedef t_udp *p_udp; int udp_open(lua_State *L); #endif /* UDP_H */ love-0.9.1/src/libraries/luasocket/libluasocket/usocket.h0000644000000000000000000000213712316602166023536 0ustar00rootroot00000000000000#ifndef USOCKET_H #define USOCKET_H /*=========================================================================*\ * Socket compatibilization module for Unix * LuaSocket toolkit * * RCS ID: $Id: usocket.h,v 1.7 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ /*=========================================================================*\ * BSD include files \*=========================================================================*/ /* error codes */ #include /* close function */ #include /* fnctnl function and associated constants */ #include /* struct sockaddr */ #include /* socket function */ #include /* struct timeval */ #include /* gethostbyname and gethostbyaddr functions */ #include /* sigpipe handling */ #include /* IP stuff*/ #include #include /* TCP options (nagle algorithm disable) */ #include typedef int t_socket; typedef t_socket *p_socket; #define SOCKET_INVALID (-1) #endif /* USOCKET_H */ love-0.9.1/src/libraries/luasocket/libluasocket/luasocket.h0000644000000000000000000000233312316602166024051 0ustar00rootroot00000000000000#ifndef LUASOCKET_H #define LUASOCKET_H /*=========================================================================*\ * LuaSocket toolkit * Networking support for the Lua language * Diego Nehab * 9/11/1999 * * RCS ID: $Id: luasocket.h,v 1.25 2007/06/11 23:44:54 diego Exp $ \*=========================================================================*/ #include "lua.h" /*-------------------------------------------------------------------------*\ * Current socket library version \*-------------------------------------------------------------------------*/ #define LUASOCKET_VERSION "LuaSocket 2.0.2" #define LUASOCKET_COPYRIGHT "Copyright (C) 2004-2007 Diego Nehab" #define LUASOCKET_AUTHORS "Diego Nehab" /*-------------------------------------------------------------------------*\ * This macro prefixes all exported API functions \*-------------------------------------------------------------------------*/ #ifndef LUASOCKET_API #define LUASOCKET_API extern #endif /*-------------------------------------------------------------------------*\ * Initializes the library. \*-------------------------------------------------------------------------*/ LUASOCKET_API int luaopen_socket_core(lua_State *L); #endif /* LUASOCKET_H */ love-0.9.1/src/libraries/luasocket/libluasocket/http.lua.h0000644000000000000000000014105612316602166023624 0ustar00rootroot00000000000000/* code automatically generated by bin2c -- DO NOT EDIT */ /* #include'ing this file in a C program is equivalent to calling if (luaL_loadfile(L,"http.lua")==0) lua_call(L, 0, 0); */ { /* http.lua */ static const unsigned char B1[]={ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72, 84, 84, 80, 47, 49, 46, 49, 32, 99,108,105,101,110,116, 32,115,117,112, 112,111,114,116, 32,102,111,114, 32,116,104,101, 32, 76,117, 97, 32,108, 97,110, 103,117, 97,103,101, 46, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32, 116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,104,116,116,112, 46,108,117, 97, 44,118, 32, 49, 46, 55, 49, 32, 50, 48, 48, 55, 47, 49, 48, 47, 49, 51, 32, 50, 51, 58, 53, 53, 58, 50, 48, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114, 116, 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115, 111, 99,107,101,116, 34, 41, 10,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32, 114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,113,117, 105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,108,111, 99, 97,108, 32,109, 105,109,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109,105,109,101, 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113, 117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97, 98, 108,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97, 98,108,101, 34, 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,104,116,116, 112, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97, 110,116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,111,110,110,101, 99,116,105,111,110, 32,116,105,109,101, 111,117,116, 32,105,110, 32,115,101, 99,111,110,100,115, 10, 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 45, 45, 32,100,101,102, 97,117,108,116, 32,112, 111,114,116, 32,102,111,114, 32,100,111, 99,117,109,101,110,116, 32,114,101,116, 114,105,101,118, 97,108, 10, 80, 79, 82, 84, 32, 61, 32, 56, 48, 10, 45, 45, 32, 117,115,101,114, 32, 97,103,101,110,116, 32,102,105,101,108,100, 32,115,101,110, 116, 32,105,110, 32,114,101,113,117,101,115,116, 10, 85, 83, 69, 82, 65, 71, 69, 78, 84, 32, 61, 32,115,111, 99,107,101,116, 46, 95, 86, 69, 82, 83, 73, 79, 78, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 82,101, 97,100,115, 32, 77, 73, 77, 69, 32,104,101, 97,100,101,114, 115, 32,102,114,111,109, 32, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 44, 32,117,110,102,111,108,100,105,110,103, 32,119,104,101,114,101, 32,110,101,101, 100,101,100, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,114,101, 99, 101,105,118,101,104,101, 97,100,101,114,115, 40,115,111, 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,105,110, 101, 44, 32,110, 97,109,101, 44, 32,118, 97,108,117,101, 44, 32,101,114,114, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,101, 97,100,101,114, 115, 32,111,114, 32,123,125, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,102, 105,114,115,116, 32,108,105,110,101, 10, 32, 32, 32, 32,108,105,110,101, 44, 32, 101,114,114, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116, 117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,104,101, 97,100,101,114,115, 32,103,111, 32,117,110,116,105,108, 32, 97, 32, 98,108, 97,110,107, 32,108,105,110,101, 32,105,115, 32,102,111,117, 110,100, 10, 32, 32, 32, 32,119,104,105,108,101, 32,108,105,110,101, 32,126, 61, 32, 34, 34, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,103,101, 116, 32,102,105,101,108,100, 45,110, 97,109,101, 32, 97,110,100, 32,118, 97,108, 117,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,110, 97,109,101, 44, 32,118, 97,108, 117,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32, 115,116,114,105,110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 46, 45, 41, 58, 37,115, 42, 40, 46, 42, 41, 34, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 40,110, 97,109,101, 32, 97,110,100, 32,118, 97,108,117,101, 41, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 110,105,108, 44, 32, 34,109, 97,108,102,111,114,109,101,100, 32,114,101,112,111, 110,115,101, 32,104,101, 97,100,101,114,115, 34, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,108, 111,119,101,114, 40,110, 97,109,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,110,101,120,116, 32,108,105,110,101, 32, 40,118, 97,108, 117,101, 32,109,105,103,104,116, 32, 98,101, 32,102,111,108,100,101,100, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,114, 32, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117, 114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,117,110,102,111,108,100, 32, 97,110,121, 32,102,111, 108,100,101,100, 32,118, 97,108,117,101,115, 10, 32, 32, 32, 32, 32, 32, 32, 32, 119,104,105,108,101, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,108,105, 110,101, 44, 32, 34, 94, 37,115, 34, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,118, 97,108,117,101, 32, 61, 32,118, 97,108,117,101, 32, 46, 46, 32,108,105,110,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108,105,110,101, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114, 114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,115, 97,118,101, 32,112, 97,105,114, 32,105, 110, 32,116, 97, 98,108,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,104, 101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32,116,104,101,110, 32,104,101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,104,101, 97,100,101,114, 115, 91,110, 97,109,101, 93, 32, 46, 46, 32, 34, 44, 32, 34, 32, 46, 46, 32,118, 97,108,117,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,104,101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,118, 97,108,117,101, 32, 101,110,100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117, 114,110, 32,104,101, 97,100,101,114,115, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,120,116, 114, 97, 32,115,111,117,114, 99,101,115, 32, 97,110,100, 32,115,105,110,107,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,115, 111, 99,107,101,116, 46,115,111,117,114, 99,101,116, 91, 34,104,116,116,112, 45, 99,104,117,110,107,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116, 105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105, 114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99, 116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32, 99,104,117,110,107, 32,115,105,122,101, 44, 32,115,107, 105,112, 32,101,120,116,101,110,116,105,111,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101, 110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 115,105,122,101, 32, 61, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,108,105,110,101, 44, 32, 34, 59, 46, 42, 34, 44, 32, 34, 34, 41, 44, 32, 49, 54, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,105,122,101, 32,116, 104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 34,105,110,118, 97,108,105,100, 32, 99,104,117,110,107, 32,115,105,122,101, 34, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,119, 97,115, 32, 105,116, 32,116,104,101, 32,108, 97,115,116, 32, 99,104,117,110,107, 63, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,105,122,101, 32, 62, 32, 48, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,105,102, 32,110,111,116, 44, 32,103,101,116, 32, 99, 104,117,110,107, 32, 97,110,100, 32,115,107,105,112, 32,116,101,114,109,105,110, 97,116,105,110,103, 32, 67, 82, 76, 70, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32, 101,114,114, 44, 32,112, 97,114,116, 32, 61, 32,115,111, 99,107, 58,114,101, 99, 101,105,118,101, 40,115,105,122,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117, 114,110, 32, 99,104,117,110,107, 44, 32,101,114,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,105,102, 32,105,116, 32,119, 97,115, 44, 32,114,101, 97,100, 32,116,114, 97,105,108,101,114,115, 32,105,110,116,111, 32, 104,101, 97,100,101,114,115, 32,116, 97, 98,108,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 44, 32,101, 114,114, 32, 61, 32,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, 115,111, 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,104,101, 97,100,101,114,115, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105, 108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, 10,115,111, 99,107,101,116, 46,115,105, 110,107,116, 91, 34,104,116,116,112, 45, 99,104,117,110,107,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97, 116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102, 100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114, 110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99, 116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100, 105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101, 114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110, 111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,115,101,110,100, 40, 34, 48, 92,114, 92,110, 92,114, 92, 110, 34, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108,111, 99, 97,108, 32,115,105,122,101, 32, 61, 32,115,116,114,105,110,103, 46, 102,111,114,109, 97,116, 40, 34, 37, 88, 92,114, 92,110, 34, 44, 32,115,116,114, 105,110,103, 46,108,101,110, 40, 99,104,117,110,107, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58, 115,101,110,100, 40,115,105,122,101, 32, 46, 46, 32, 32, 99,104,117,110,107, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101, 110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32, 108,101,118,101,108, 32, 72, 84, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109, 101,116, 97,116, 32, 61, 32,123, 32, 95, 95,105,110,100,101,120, 32, 61, 32,123, 125, 32,125, 10, 10,102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,104, 111,115,116, 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32,115,111, 99,107,101,116, 32, 119,105,116,104, 32,117,115,101,114, 32, 99,111,110,110,101, 99,116, 32,102,117, 110, 99,116,105,111,110, 44, 32,111,114, 32,119,105,116,104, 32,100,101,102, 97, 117,108,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 32, 61, 32,115,111, 99,107,101,116, 46,116,114,121, 40, 40, 99,114,101, 97,116,101, 32,111,114, 32, 115,111, 99,107,101,116, 46,116, 99,112, 41, 40, 41, 41, 10, 32, 32, 32, 32,108, 111, 99, 97,108, 32,104, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,123, 32, 99, 32, 61, 32, 99, 32,125, 44, 32,109,101, 116, 97,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32,102, 105,110, 97,108,105,122,101,100, 32,116,114,121, 10, 32, 32, 32, 32,104, 46,116, 114,121, 32, 61, 32,115,111, 99,107,101,116, 46,110,101,119,116,114,121, 40,102, 117,110, 99,116,105,111,110, 40, 41, 32,104, 58, 99,108,111,115,101, 40, 41, 32, 101,110,100, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,116, 32,116,105,109,101, 111,117,116, 32, 98,101,102,111,114,101, 32, 99,111,110,110,101, 99,116,105,110, 103, 10, 32, 32, 32, 32,104, 46,116,114,121, 40, 99, 58,115,101,116,116,105,109, 101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,104, 46,116,114,121, 40, 99, 58, 99,111,110,110,101, 99,116, 40,104,111,115,116, 44, 32,112,111,114,116, 32,111,114, 32, 80, 79, 82, 84, 41, 41, 10, 32, 32, 32, 32, 45, 45, 32,104,101,114,101, 32,101,118,101,114,121,116,104,105,110,103, 32,119, 111,114,107,101,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,104, 10,101, 110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100,114,101,113,117,101,115,116,108,105, 110,101, 40,109,101,116,104,111,100, 44, 32,117,114,105, 41, 10, 32, 32, 32, 32, 108,111, 99, 97,108, 32,114,101,113,108,105,110,101, 32, 61, 32,115,116,114,105, 110,103, 46,102,111,114,109, 97,116, 40, 34, 37,115, 32, 37,115, 32, 72, 84, 84, 80, 47, 49, 46, 49, 92,114, 92,110, 34, 44, 32,109,101,116,104,111,100, 32,111, 114, 32, 34, 71, 69, 84, 34, 44, 32,117,114,105, 41, 10, 32, 32, 32, 32,114,101, 116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 99, 58,115,101,110,100, 40,114,101,113,108,105,110,101, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110, 100,101,120, 58,115,101,110,100,104,101, 97,100,101,114,115, 40,104,101, 97,100, 101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32, 34, 92,114, 92,110, 34, 10, 32, 32, 32, 32,102,111,114, 32,105, 44, 32,118, 32,105, 110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101,114,115, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 32, 61, 32,105, 32, 46, 46, 32, 34, 58, 32, 34, 32, 46, 46, 32,118, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 32, 46, 46, 32,104, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,115, 101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 99, 58,115,101,110,100, 40, 104, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105, 110,100,101,120, 58,115,101,110,100, 98,111,100,121, 40,104,101, 97,100,101,114, 115, 44, 32,115,111,117,114, 99,101, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32,115,111,117,114, 99,101, 32, 61, 32,115,111,117,114, 99,101, 32,111,114, 32, 108,116,110, 49, 50, 46,115,111,117,114, 99,101, 46,101,109,112,116,121, 40, 41, 10, 32, 32, 32, 32,115,116,101,112, 32, 61, 32,115,116,101,112, 32,111,114, 32, 108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,119,101, 32,100,111,110, 39,116, 32,107,110,111,119, 32, 116,104,101, 32,115,105,122,101, 32,105,110, 32, 97,100,118, 97,110, 99,101, 44, 32,115,101,110,100, 32, 99,104,117,110,107,101,100, 32, 97,110,100, 32,104,111, 112,101, 32,102,111,114, 32,116,104,101, 32, 98,101,115,116, 10, 32, 32, 32, 32, 108,111, 99, 97,108, 32,109,111,100,101, 32, 61, 32, 34,104,116,116,112, 45, 99, 104,117,110,107,101,100, 34, 10, 32, 32, 32, 32,105,102, 32,104,101, 97,100,101, 114,115, 91, 34, 99,111,110,116,101,110,116, 45,108,101,110,103,116,104, 34, 93, 32,116,104,101,110, 32,109,111,100,101, 32, 61, 32, 34,107,101,101,112, 45,111, 112,101,110, 34, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 115,101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32,115,111, 99,107,101,116, 46,115, 105,110,107, 40,109,111,100,101, 44, 32,115,101,108,102, 46, 99, 41, 44, 32,115, 116,101,112, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118, 101,115,116, 97,116,117,115,108,105,110,101, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,116, 97,116,117,115, 32, 61, 32,115,101,108,102, 46,116,114, 121, 40,115,101,108,102, 46, 99, 58,114,101, 99,101,105,118,101, 40, 53, 41, 41, 10, 32, 32, 32, 32, 45, 45, 32,105,100,101,110,116,105,102,121, 32, 72, 84, 84, 80, 47, 48, 46, 57, 32,114,101,115,112,111,110,115,101,115, 44, 32,119,104,105, 99,104, 32,100,111, 32,110,111,116, 32, 99,111,110,116, 97,105,110, 32, 97, 32, 115,116, 97,116,117,115, 32,108,105,110,101, 10, 32, 32, 32, 32, 45, 45, 32,116, 104,105,115, 32,105,115, 32,106,117,115,116, 32, 97, 32,104,101,117,114,105,115, 116,105, 99, 44, 32, 98,117,116, 32,105,115, 32,119,104, 97,116, 32,116,104,101, 32, 82, 70, 67, 32,114,101, 99,111,109,109,101,110,100,115, 10, 32, 32, 32, 32, 105,102, 32,115,116, 97,116,117,115, 32,126, 61, 32, 34, 72, 84, 84, 80, 47, 34, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,115,116, 97,116,117,115, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,111,116,104,101, 114,119,105,115,101, 32,112,114,111, 99,101,101,100, 32,114,101, 97,100,105,110, 103, 32, 97, 32,115,116, 97,116,117,115, 32,108,105,110,101, 10, 32, 32, 32, 32, 115,116, 97,116,117,115, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101, 108,102, 46, 99, 58,114,101, 99,101,105,118,101, 40, 34, 42,108, 34, 44, 32,115, 116, 97,116,117,115, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111, 100,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32, 115,116,114,105,110,103, 46,102,105,110,100, 40,115,116, 97,116,117,115, 44, 32, 34, 72, 84, 84, 80, 47, 37,100, 42, 37, 46, 37,100, 42, 32, 40, 37,100, 37,100, 37,100, 41, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101, 108,102, 46,116,114,121, 40, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, 32,115,116, 97,116,117,115, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110, 100,101,120, 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40,115,101,108,102, 46, 99, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109, 101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118,101, 98,111,100,121, 40,104,101, 97,100,101,114,115, 44, 32,115,105,110,107, 44, 32, 115,116,101,112, 41, 10, 32, 32, 32, 32,115,105,110,107, 32, 61, 32,115,105,110, 107, 32,111,114, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,110,117,108,108, 40, 41, 10, 32, 32, 32, 32,115,116,101,112, 32, 61, 32,115,116,101,112, 32,111, 114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,101,110,103,116,104, 32, 61, 32, 98, 97,115, 101, 46,116,111,110,117,109, 98,101,114, 40,104,101, 97,100,101,114,115, 91, 34, 99,111,110,116,101,110,116, 45,108,101,110,103,116,104, 34, 93, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,104,101, 97,100,101,114,115, 91, 34,116,114, 97,110,115,102,101,114, 45,101,110, 99,111,100,105,110,103, 34, 93, 32, 45, 45, 32,115,104,111,114,116, 99,117,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,109,111,100,101, 32, 61, 32, 34,100,101,102, 97,117,108,116, 34, 32, 45, 45, 32, 99,111,110,110,101, 99,116,105,111,110, 32, 99,108,111,115,101, 10, 32, 32, 32, 32,105,102, 32,116, 32, 97,110,100, 32,116, 32,126, 61, 32, 34,105, 100,101,110,116,105,116,121, 34, 32,116,104,101,110, 32,109,111,100,101, 32, 61, 32, 34,104,116,116,112, 45, 99,104,117,110,107,101,100, 34, 10, 32, 32, 32, 32, 101,108,115,101,105,102, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,104,101, 97,100,101,114,115, 91, 34, 99,111,110,116,101,110,116, 45,108,101, 110,103,116,104, 34, 93, 41, 32,116,104,101,110, 32,109,111,100,101, 32, 61, 32, 34, 98,121, 45,108,101,110,103,116,104, 34, 32,101,110,100, 10, 32, 32, 32, 32, 114,101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111, 99,107,101,116, 46,115,111, 117,114, 99,101, 40,109,111,100,101, 44, 32,115,101,108,102, 46, 99, 44, 32,108, 101,110,103,116,104, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,105,110,107, 44, 32,115,116,101,112, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105, 111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99, 101,105,118,101, 48, 57, 98,111,100,121, 40,115,116, 97,116,117,115, 44, 32,115, 105,110,107, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114, 99,101, 46,114,101,119,105,110,100, 40,115,111, 99,107,101,116, 46,115,111,117, 114, 99,101, 40, 34,117,110,116,105,108, 45, 99,108,111,115,101,100, 34, 44, 32, 115,101,108,102, 46, 99, 41, 41, 10, 32, 32, 32, 32,115,111,117,114, 99,101, 40, 115,116, 97,116,117,115, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115, 101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97, 108,108, 40,115,111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32,115,116,101, 112, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101, 116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58, 99,108, 111,115,101, 40, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101,118, 101,108, 32, 72, 84, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102,117,110, 99, 116,105,111,110, 32, 97,100,106,117,115,116,117,114,105, 40,114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117, 32, 61, 32,114,101,113,116, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,112,114,111,120,121, 44, 32,119,101, 32,110,101,101,100, 32,116,104,101, 32, 102,117,108,108, 32,117,114,108, 46, 32,111,116,104,101,114,119,105,115,101, 44, 32,106,117,115,116, 32, 97, 32,112, 97,114,116, 46, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,113,116, 46,112,114,111,120,121, 32, 97,110,100, 32, 110,111,116, 32, 80, 82, 79, 88, 89, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,117, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 112, 97,116,104, 32, 61, 32,115,111, 99,107,101,116, 46,116,114,121, 40,114,101, 113,116, 46,112, 97,116,104, 44, 32, 34,105,110,118, 97,108,105,100, 32,112, 97, 116,104, 32, 39,110,105,108, 39, 34, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114, 97,109,115, 32, 61, 32,114,101,113,116, 46,112, 97,114, 97,109,115, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,113,117,101,114, 121, 32, 61, 32,114,101,113,116, 46,113,117,101,114,121, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,102,114, 97,103,109,101,110,116, 32, 61, 32,114,101, 113,116, 46,102,114, 97,103,109,101,110,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,117,114,108, 46, 98,117,105,108,100, 40,117, 41, 10,101,110,100, 10, 10,108, 111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116, 112,114,111,120,121, 40,114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97, 108, 32,112,114,111,120,121, 32, 61, 32,114,101,113,116, 46,112,114,111,120,121, 32,111,114, 32, 80, 82, 79, 88, 89, 10, 32, 32, 32, 32,105,102, 32,112,114,111, 120,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,114,111,120, 121, 32, 61, 32,117,114,108, 46,112, 97,114,115,101, 40,112,114,111,120,121, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,112,114,111,120, 121, 46,104,111,115,116, 44, 32,112,114,111,120,121, 46,112,111,114,116, 32,111, 114, 32, 51, 49, 50, 56, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,113,116, 46,104,111,115,116, 44, 32,114,101,113,116, 46,112,111,114,116, 10, 32, 32, 32, 32,101,110,100, 10, 101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116,104,101, 97,100,101,114,115, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,100,101,102, 97,117,108,116, 32,104,101, 97,100,101, 114,115, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,111,119,101,114, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34,117,115,101,114, 45, 97,103, 101,110,116, 34, 93, 32, 61, 32, 85, 83, 69, 82, 65, 71, 69, 78, 84, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34,104,111,115,116, 34, 93, 32, 61, 32,114,101, 113,116, 46,104,111,115,116, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99, 111,110,110,101, 99,116,105,111,110, 34, 93, 32, 61, 32, 34, 99,108,111,115,101, 44, 32, 84, 69, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34,116,101, 34, 93, 32, 61, 32, 34,116,114, 97,105,108,101,114,115, 34, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,119,101, 32,104, 97,118,101, 32, 97, 117,116,104,101,110,116,105, 99, 97,116,105,111,110, 32,105,110,102,111,114,109, 97,116,105,111,110, 44, 32,112, 97,115,115, 32,105,116, 32, 97,108,111,110,103, 10, 32, 32, 32, 32,105,102, 32,114,101,113,116, 46,117,115,101,114, 32, 97,110, 100, 32,114,101,113,116, 46,112, 97,115,115,119,111,114,100, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,119,101,114, 91, 34, 97,117,116,104, 111,114,105,122, 97,116,105,111,110, 34, 93, 32, 61, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 66, 97,115,105, 99, 32, 34, 32, 46, 46, 32, 32, 40,109,105,109,101, 46, 98, 54, 52, 40,114,101,113,116, 46,117,115,101,114, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,114,101,113,116, 46,112, 97,115,115,119, 111,114,100, 41, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,111,118,101,114,114,105,100,101, 32,119,105,116,104, 32,117,115,101,114, 32, 104,101, 97,100,101,114,115, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32, 105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,114,101,113,116, 46,104, 101, 97,100,101,114,115, 32,111,114, 32,108,111,119,101,114, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,119,101,114, 91,115,116,114,105,110,103, 46,108,111,119,101,114, 40,105, 41, 93, 32, 61, 32,118, 10, 32, 32, 32, 32,101, 110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,111,119,101,114, 10, 101,110,100, 10, 10, 45, 45, 32,100,101,102, 97,117,108,116, 32,117,114,108, 32, 112, 97,114,116,115, 10,108,111, 99, 97,108, 32,100,101,102, 97,117,108,116, 32, 61, 32,123, 10, 32, 32, 32, 32,104,111,115,116, 32, 61, 32, 34, 34, 44, 10, 32, 32, 32, 32,112,111,114,116, 32, 61, 32, 80, 79, 82, 84, 44, 10, 32, 32, 32, 32, 112, 97,116,104, 32, 61, 34, 47, 34, 44, 10, 32, 32, 32, 32,115, 99,104,101,109, 101, 32, 61, 32, 34,104,116,116,112, 34, 10,125, 10, 10,108,111, 99, 97,108, 32, 102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116,114,101,113,117,101, 115,116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,112, 97,114,115, 101, 32,117,114,108, 32,105,102, 32,112,114,111,118,105,100,101,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110,114,101,113,116, 32, 61, 32,114,101,113,116, 46,117,114,108, 32, 97,110,100, 32,117,114,108, 46,112, 97,114,115,101, 40,114, 101,113,116, 46,117,114,108, 44, 32,100,101,102, 97,117,108,116, 41, 32,111,114, 32,123,125, 10, 32, 32, 32, 32, 45, 45, 32,101,120,112,108,105, 99,105,116, 32, 99,111,109,112,111,110,101,110,116,115, 32,111,118,101,114,114,105,100,101, 32, 117,114,108, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,114,101,113,116, 41, 32,100,111, 32,110, 114,101,113,116, 91,105, 93, 32, 61, 32,118, 32,101,110,100, 10, 32, 32, 32, 32, 105,102, 32,110,114,101,113,116, 46,112,111,114,116, 32, 61, 61, 32, 34, 34, 32, 116,104,101,110, 32,110,114,101,113,116, 46,112,111,114,116, 32, 61, 32, 56, 48, 32,101,110,100, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40, 110,114,101,113,116, 46,104,111,115,116, 32, 97,110,100, 32,110,114,101,113,116, 46,104,111,115,116, 32,126, 61, 32, 34, 34, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34,105,110,118, 97,108,105,100, 32,104,111,115,116, 32, 39, 34, 32, 46, 46, 32, 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110,114,101,113, 116, 46,104,111,115,116, 41, 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32, 99,111,109,112,117,116,101, 32,117,114,105, 32,105,102, 32,117,115, 101,114, 32,104, 97,115,110, 39,116, 32,111,118,101,114,114,105,100,101,110, 10, 32, 32, 32, 32,110,114,101,113,116, 46,117,114,105, 32, 61, 32,114,101,113,116, 46,117,114,105, 32,111,114, 32, 97,100,106,117,115,116,117,114,105, 40,110,114, 101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,106,117,115,116, 32,104,111, 115,116, 32, 97,110,100, 32,112,111,114,116, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,112,114,111,120,121, 10, 32, 32, 32, 32,110,114,101,113, 116, 46,104,111,115,116, 44, 32,110,114,101,113,116, 46,112,111,114,116, 32, 61, 32, 97,100,106,117,115,116,112,114,111,120,121, 40,110,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,100,106,117,115,116, 32,104,101, 97,100,101,114, 115, 32,105,110, 32,114,101,113,117,101,115,116, 10, 32, 32, 32, 32,110,114,101, 113,116, 46,104,101, 97,100,101,114,115, 32, 61, 32, 97,100,106,117,115,116,104, 101, 97,100,101,114,115, 40,110,114,101,113,116, 41, 10, 32, 32, 32, 32,114,101, 116,117,114,110, 32,110,114,101,113,116, 10,101,110,100, 10, 10,108,111, 99, 97, 108, 32,102,117,110, 99,116,105,111,110, 32,115,104,111,117,108,100,114,101,100, 105,114,101, 99,116, 40,114,101,113,116, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,104,101, 97,100,101,114,115, 46,108,111, 99, 97,116,105,111,110, 32, 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,104,101, 97,100,101,114,115, 46,108,111, 99, 97,116,105,111,110, 44, 32, 34, 37,115, 34, 44, 32, 34, 34, 41, 32,126, 61, 32, 34, 34, 32, 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40,114,101,113,116, 46,114,101,100, 105,114,101, 99,116, 32,126, 61, 32,102, 97,108,115,101, 41, 32, 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 99,111,100,101, 32, 61, 61, 32, 51, 48, 49, 32,111,114, 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, 50, 41, 32, 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40,110,111,116, 32, 114,101,113,116, 46,109,101,116,104,111,100, 32,111,114, 32,114,101,113,116, 46, 109,101,116,104,111,100, 32, 61, 61, 32, 34, 71, 69, 84, 34, 32,111,114, 32,114, 101,113,116, 46,109,101,116,104,111,100, 32, 61, 61, 32, 34, 72, 69, 65, 68, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97,110,100, 32, 40,110,111, 116, 32,114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32,111,114, 32,114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32, 60, 32, 53, 41, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111, 110, 32,115,104,111,117,108,100,114,101, 99,101,105,118,101, 98,111,100,121, 40, 114,101,113,116, 44, 32, 99,111,100,101, 41, 10, 32, 32, 32, 32,105,102, 32,114, 101,113,116, 46,109,101,116,104,111,100, 32, 61, 61, 32, 34, 72, 69, 65, 68, 34, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, 99,111,100,101, 32, 61, 61, 32, 50, 48, 52, 32, 111,114, 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, 52, 32,116,104,101,110, 32, 114,101,116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,105, 102, 32, 99,111,100,101, 32, 62, 61, 32, 49, 48, 48, 32, 97,110,100, 32, 99,111, 100,101, 32, 60, 32, 50, 48, 48, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10, 45, 45, 32,102,111,114,119, 97,114,100, 32,100,101, 99,108, 97,114, 97,116,105,111,110,115, 10,108,111, 99, 97,108, 32,116,114,101, 113,117,101,115,116, 44, 32,116,114,101,100,105,114,101, 99,116, 10, 10,102,117, 110, 99,116,105,111,110, 32,116,114,101,100,105,114,101, 99,116, 40,114,101,113, 116, 44, 32,108,111, 99, 97,116,105,111,110, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,115,117,108,116, 44, 32, 99,111,100,101, 44, 32,104,101, 97, 100,101,114,115, 44, 32,115,116, 97,116,117,115, 32, 61, 32,116,114,101,113,117, 101,115,116, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,116,104,101, 32, 82, 70, 67, 32,115, 97,121,115, 32,116,104,101, 32,114,101,100,105,114,101, 99,116, 32, 85, 82, 76, 32,104, 97,115, 32,116,111, 32, 98,101, 32, 97, 98,115, 111,108,117,116,101, 44, 32, 98,117,116, 32,115,111,109,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,115,101,114,118,101,114,115, 32,100,111, 32,110,111, 116, 32,114,101,115,112,101, 99,116, 32,116,104, 97,116, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,114,108, 32, 61, 32,117,114,108, 46, 97, 98,115,111,108,117,116, 101, 40,114,101,113,116, 46,117,114,108, 44, 32,108,111, 99, 97,116,105,111,110, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,111,117,114, 99,101, 32, 61, 32, 114,101,113,116, 46,115,111,117,114, 99,101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,105,110,107, 32, 61, 32,114,101,113,116, 46,115,105,110,107, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,114,101,113, 116, 46,104,101, 97,100,101,114,115, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 114,111,120,121, 32, 61, 32,114,101,113,116, 46,112,114,111,120,121, 44, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32,110,114,101,100,105,114,101, 99,116,115, 32, 61, 32, 40,114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32,111,114, 32, 48, 41, 32, 43, 32, 49, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,114,101, 97,116,101, 32, 61, 32,114,101,113,116, 46, 99,114,101, 97,116,101, 10, 32, 32, 32, 32,125, 32, 32, 32, 10, 32, 32, 32, 32, 45, 45, 32,112, 97,115,115, 32,108, 111, 99, 97,116,105,111,110, 32,104,101, 97,100,101,114, 32, 98, 97, 99,107, 32, 97,115, 32, 97, 32,104,105,110,116, 32,119,101, 32,114,101,100,105,114,101, 99, 116,101,100, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, 10, 32, 32, 32, 32,104,101, 97,100, 101,114,115, 46,108,111, 99, 97,116,105,111,110, 32, 61, 32,104,101, 97,100,101, 114,115, 46,108,111, 99, 97,116,105,111,110, 32,111,114, 32,108,111, 99, 97,116, 105,111,110, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,115,117,108, 116, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116, 97,116,117,115, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,116, 114,101,113,117,101,115,116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,119,101, 32,108,111,111,112, 32,117,110,116,105,108, 32,119,101, 32,103,101, 116, 32,119,104, 97,116, 32,119,101, 32,119, 97,110,116, 44, 32,111,114, 10, 32, 32, 32, 32, 45, 45, 32,117,110,116,105,108, 32,119,101, 32, 97,114,101, 32,115, 117,114,101, 32,116,104,101,114,101, 32,105,115, 32,110,111, 32,119, 97,121, 32, 116,111, 32,103,101,116, 32,105,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 110,114,101,113,116, 32, 61, 32, 97,100,106,117,115,116,114,101,113,117,101,115, 116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32,111,112,101,110, 40,110,114,101,113,116, 46,104,111,115,116, 44, 32,110, 114,101,113,116, 46,112,111,114,116, 44, 32,110,114,101,113,116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,114,101,113, 117,101,115,116, 32,108,105,110,101, 32, 97,110,100, 32,104,101, 97,100,101,114, 115, 10, 32, 32, 32, 32,104, 58,115,101,110,100,114,101,113,117,101,115,116,108, 105,110,101, 40,110,114,101,113,116, 46,109,101,116,104,111,100, 44, 32,110,114, 101,113,116, 46,117,114,105, 41, 10, 32, 32, 32, 32,104, 58,115,101,110,100,104, 101, 97,100,101,114,115, 40,110,114,101,113,116, 46,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32, 97, 32, 98,111,100,121, 44, 32,115,101,110,100, 32,105,116, 10, 32, 32, 32, 32,105,102, 32,110,114,101,113,116, 46,115,111,117,114, 99,101, 32,116,104,101, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58,115,101,110,100, 98,111,100,121, 40,110,114,101,113,116, 46,104,101, 97,100,101,114,115, 44, 32,110,114,101,113, 116, 46,115,111,117,114, 99,101, 44, 32,110,114,101,113,116, 46,115,116,101,112, 41, 32, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,115,116, 97,116,117,115, 32, 61, 32,104, 58,114,101, 99,101,105,118,101,115,116, 97,116,117,115,108,105,110,101, 40, 41, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,105,116, 32,105,115, 32, 97,110, 32, 72, 84, 84, 80, 47, 48, 46, 57, 32,115,101,114,118,101,114, 44, 32,115,105,109,112,108,121, 32,103,101,116, 32,116,104,101, 32, 98,111,100,121, 32, 97,110,100, 32,119,101, 32, 97,114,101, 32,100,111,110,101, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,111,100,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58,114,101, 99,101,105,118,101, 48, 57, 98,111,100,121, 40,115,116, 97,116,117, 115, 44, 32,110,114,101,113,116, 46,115,105,110,107, 44, 32,110,114,101,113,116, 46,115,116,101,112, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114, 110, 32, 49, 44, 32, 50, 48, 48, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32, 45, 45, 32,105,103,110,111,114,101, 32, 97,110,121, 32, 49, 48, 48, 45, 99,111,110, 116,105,110,117,101, 32,109,101,115,115, 97,103,101,115, 10, 32, 32, 32, 32,119, 104,105,108,101, 32, 99,111,100,101, 32, 61, 61, 32, 49, 48, 48, 32,100,111, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104, 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,100,101, 44, 32,115,116, 97,116,117,115, 32, 61, 32,104, 58,114,101, 99,101,105,118,101,115,116, 97,116,117,115,108,105,110,101, 40, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,104,101, 97,100,101, 114,115, 32, 61, 32,104, 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114, 115, 40, 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,116, 32,116,104,105,115, 32,112, 111,105,110,116, 32,119,101, 32,115,104,111,117,108,100, 32,104, 97,118,101, 32, 97, 32,104,111,110,101,115,116, 32,114,101,112,108,121, 32,102,114,111,109, 32, 116,104,101, 32,115,101,114,118,101,114, 10, 32, 32, 32, 32, 45, 45, 32,119,101, 32, 99, 97,110, 39,116, 32,114,101,100,105,114,101, 99,116, 32,105,102, 32,119, 101, 32, 97,108,114,101, 97,100,121, 32,117,115,101,100, 32,116,104,101, 32,115, 111,117,114, 99,101, 44, 32,115,111, 32,119,101, 32,114,101,112,111,114,116, 32, 116,104,101, 32,101,114,114,111,114, 32, 10, 32, 32, 32, 32,105,102, 32,115,104, 111,117,108,100,114,101,100,105,114,101, 99,116, 40,110,114,101,113,116, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 41, 32, 97,110,100, 32,110, 111,116, 32,110,114,101,113,116, 46,115,111,117,114, 99,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,116,114,101,100,105,114, 101, 99,116, 40,114,101,113,116, 44, 32,104,101, 97,100,101,114,115, 46,108,111, 99, 97,116,105,111,110, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,104,101,114,101, 32,119,101, 32, 97,114,101, 32,102,105,110, 97,108, 108,121, 32,100,111,110,101, 10, 32, 32, 32, 32,105,102, 32,115,104,111,117,108, 100,114,101, 99,101,105,118,101, 98,111,100,121, 40,110,114,101,113,116, 44, 32, 99,111,100,101, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58,114,101, 99,101,105,118,101, 98,111,100,121, 40,104,101, 97,100,101,114,115, 44, 32,110,114,101,113,116, 46,115,105,110,107, 44, 32,110,114,101,113,116, 46, 115,116,101,112, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,104, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116, 97, 116,117,115, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116, 105,111,110, 32,115,114,101,113,117,101,115,116, 40,117, 44, 32, 98, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32, 108,111, 99, 97,108, 32,114,101,113,116, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,114,108, 32, 61, 32,117, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115,105,110,107, 32, 61, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,116, 97, 98,108,101, 40,116, 41, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,113,116, 46, 115,111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114, 99, 101, 46,115,116,114,105,110,103, 40, 98, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114,101,113,116, 46,104,101, 97,100,101,114,115, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,108, 101,110,103,116,104, 34, 93, 32, 61, 32,115,116,114,105,110,103, 46,108,101,110, 40, 98, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99, 111,110,116,101,110,116, 45,116,121,112,101, 34, 93, 32, 61, 32, 34, 97,112,112, 108,105, 99, 97,116,105,111,110, 47,120, 45,119,119,119, 45,102,111,114,109, 45, 117,114,108,101,110, 99,111,100,101,100, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,113,116, 46,109,101,116,104,111, 100, 32, 61, 32, 34, 80, 79, 83, 84, 34, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,104,101, 97,100,101, 114,115, 44, 32,115,116, 97,116,117,115, 32, 61, 32,115,111, 99,107,101,116, 46, 115,107,105,112, 40, 49, 44, 32,116,114,101,113,117,101,115,116, 40,114,101,113, 116, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 97, 98,108,101, 46, 99,111,110, 99, 97,116, 40,116, 41, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116, 97,116,117,115, 10,101,110,100, 10, 10,114, 101,113,117,101,115,116, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116, 101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,114,101,113,116, 44, 32, 98, 111,100,121, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112, 101, 40,114,101,113,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32, 116,104,101,110, 32,114,101,116,117,114,110, 32,115,114,101,113,117,101,115,116, 40,114,101,113,116, 44, 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,101,108,115, 101, 32,114,101,116,117,114,110, 32,116,114,101,113,117,101,115,116, 40,114,101, 113,116, 41, 32,101,110,100, 10,101,110,100, 41, 10, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"http.lua")==0) lua_call(L, 0, 0); } love-0.9.1/src/libraries/luasocket/libluasocket/mime.h0000644000000000000000000000221012316602166023000 0ustar00rootroot00000000000000#ifndef MIME_H #define MIME_H /*=========================================================================*\ * Core MIME support * LuaSocket toolkit * * This module provides functions to implement transfer content encodings * and formatting conforming to RFC 2045. It is used by mime.lua, which * provide a higher level interface to this functionality. * * RCS ID: $Id: mime.h,v 1.15 2007/06/11 23:44:54 diego Exp $ \*=========================================================================*/ #include "lua.h" /*-------------------------------------------------------------------------*\ * Current MIME library version \*-------------------------------------------------------------------------*/ #define MIME_VERSION "MIME 1.0.2" #define MIME_COPYRIGHT "Copyright (C) 2004-2007 Diego Nehab" #define MIME_AUTHORS "Diego Nehab" /*-------------------------------------------------------------------------*\ * This macro prefixes all exported API functions \*-------------------------------------------------------------------------*/ #ifndef MIME_API #define MIME_API extern #endif MIME_API int luaopen_mime_core(lua_State *L); #endif /* MIME_H */ love-0.9.1/src/libraries/luasocket/libluasocket/options.c0000644000000000000000000001172212316602166023547 0ustar00rootroot00000000000000/*=========================================================================*\ * Common option interface * LuaSocket toolkit * * RCS ID: $Id: options.c,v 1.6 2005/11/20 07:20:23 diego Exp $ \*=========================================================================*/ #include #include "lauxlib.h" #include "auxiliar.h" #include "options.h" #include "inet.h" /*=========================================================================*\ * Internal functions prototypes \*=========================================================================*/ static int opt_setmembership(lua_State *L, p_socket ps, int level, int name); static int opt_setboolean(lua_State *L, p_socket ps, int level, int name); static int opt_set(lua_State *L, p_socket ps, int level, int name, void *val, int len); /*=========================================================================*\ * Exported functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Calls appropriate option handler \*-------------------------------------------------------------------------*/ int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps) { const char *name = luaL_checkstring(L, 2); /* obj, name, ... */ while (opt->name && strcmp(name, opt->name)) opt++; if (!opt->func) { char msg[45]; sprintf(msg, "unsupported option `%.35s'", name); luaL_argerror(L, 2, msg); } return opt->func(L, ps); } /* enables reuse of local address */ int opt_reuseaddr(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR); } /* disables the Naggle algorithm */ int opt_tcp_nodelay(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY); } int opt_keepalive(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE); } int opt_dontroute(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, SOL_SOCKET, SO_DONTROUTE); } int opt_broadcast(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, SOL_SOCKET, SO_BROADCAST); } int opt_ip_multicast_loop(lua_State *L, p_socket ps) { return opt_setboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP); } int opt_linger(lua_State *L, p_socket ps) { struct linger li; /* obj, name, table */ if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE)); lua_pushstring(L, "on"); lua_gettable(L, 3); if (!lua_isboolean(L, -1)) luaL_argerror(L, 3, "boolean 'on' field expected"); li.l_onoff = (u_short) lua_toboolean(L, -1); lua_pushstring(L, "timeout"); lua_gettable(L, 3); if (!lua_isnumber(L, -1)) luaL_argerror(L, 3, "number 'timeout' field expected"); li.l_linger = (u_short) lua_tonumber(L, -1); return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(li)); } int opt_ip_multicast_ttl(lua_State *L, p_socket ps) { int val = (int) luaL_checknumber(L, 3); /* obj, name, int */ return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &val, sizeof(val)); } int opt_ip_add_membership(lua_State *L, p_socket ps) { return opt_setmembership(L, ps, IPPROTO_IP, IP_ADD_MEMBERSHIP); } int opt_ip_drop_membersip(lua_State *L, p_socket ps) { return opt_setmembership(L, ps, IPPROTO_IP, IP_DROP_MEMBERSHIP); } /*=========================================================================*\ * Auxiliar functions \*=========================================================================*/ static int opt_setmembership(lua_State *L, p_socket ps, int level, int name) { struct ip_mreq val; /* obj, name, table */ if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE)); lua_pushstring(L, "multiaddr"); lua_gettable(L, 3); if (!lua_isstring(L, -1)) luaL_argerror(L, 3, "string 'multiaddr' field expected"); if (!inet_aton(lua_tostring(L, -1), &val.imr_multiaddr)) luaL_argerror(L, 3, "invalid 'multiaddr' ip address"); lua_pushstring(L, "interface"); lua_gettable(L, 3); if (!lua_isstring(L, -1)) luaL_argerror(L, 3, "string 'interface' field expected"); val.imr_interface.s_addr = htonl(INADDR_ANY); if (strcmp(lua_tostring(L, -1), "*") && !inet_aton(lua_tostring(L, -1), &val.imr_interface)) luaL_argerror(L, 3, "invalid 'interface' ip address"); return opt_set(L, ps, level, name, (char *) &val, sizeof(val)); } static int opt_set(lua_State *L, p_socket ps, int level, int name, void *val, int len) { if (setsockopt(*ps, level, name, (char *) val, len) < 0) { lua_pushnil(L); lua_pushstring(L, "setsockopt failed"); return 2; } lua_pushnumber(L, 1); return 1; } static int opt_setboolean(lua_State *L, p_socket ps, int level, int name) { int val = auxiliar_checkboolean(L, 3); /* obj, name, bool */ return opt_set(L, ps, level, name, (char *) &val, sizeof(val)); } love-0.9.1/src/libraries/luasocket/libluasocket/unix.c0000644000000000000000000003031112316602166023032 0ustar00rootroot00000000000000/*=========================================================================*\ * Unix domain socket * LuaSocket toolkit * * RCS ID: $Id: unix.c,v 1.13 2006/03/13 07:16:39 diego Exp $ \*=========================================================================*/ #include #include "lua.h" #include "lauxlib.h" #include "auxiliar.h" #include "socket.h" #include "options.h" #include "unix.h" #include /*=========================================================================*\ * Internal function prototypes \*=========================================================================*/ static int global_create(lua_State *L); static int meth_connect(lua_State *L); static int meth_listen(lua_State *L); static int meth_bind(lua_State *L); static int meth_send(lua_State *L); static int meth_shutdown(lua_State *L); static int meth_receive(lua_State *L); static int meth_accept(lua_State *L); static int meth_close(lua_State *L); static int meth_setoption(lua_State *L); static int meth_settimeout(lua_State *L); static int meth_getfd(lua_State *L); static int meth_setfd(lua_State *L); static int meth_dirty(lua_State *L); static int meth_getstats(lua_State *L); static int meth_setstats(lua_State *L); static const char *unix_tryconnect(p_unix un, const char *path); static const char *unix_trybind(p_unix un, const char *path); /* unix object methods */ static luaL_reg un[] = { {"__gc", meth_close}, {"__tostring", auxiliar_tostring}, {"accept", meth_accept}, {"bind", meth_bind}, {"close", meth_close}, {"connect", meth_connect}, {"dirty", meth_dirty}, {"getfd", meth_getfd}, {"getstats", meth_getstats}, {"setstats", meth_setstats}, {"listen", meth_listen}, {"receive", meth_receive}, {"send", meth_send}, {"setfd", meth_setfd}, {"setoption", meth_setoption}, {"setpeername", meth_connect}, {"setsockname", meth_bind}, {"settimeout", meth_settimeout}, {"shutdown", meth_shutdown}, {NULL, NULL} }; /* socket option handlers */ static t_opt opt[] = { {"keepalive", opt_keepalive}, {"reuseaddr", opt_reuseaddr}, {"linger", opt_linger}, {NULL, NULL} }; /* our socket creation function */ static luaL_reg func[] = { {"unix", global_create}, {NULL, NULL} }; /*-------------------------------------------------------------------------*\ * Initializes module \*-------------------------------------------------------------------------*/ int luaopen_socket_unix(lua_State *L) { /* create classes */ auxiliar_newclass(L, "unix{master}", un); auxiliar_newclass(L, "unix{client}", un); auxiliar_newclass(L, "unix{server}", un); /* create class groups */ auxiliar_add2group(L, "unix{master}", "unix{any}"); auxiliar_add2group(L, "unix{client}", "unix{any}"); auxiliar_add2group(L, "unix{server}", "unix{any}"); /* make sure the function ends up in the package table */ luaL_openlib(L, "socket", func, 0); /* return the function instead of the 'socket' table */ lua_pushstring(L, "unix"); lua_gettable(L, -2); return 1; } /*=========================================================================*\ * Lua methods \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Just call buffered IO methods \*-------------------------------------------------------------------------*/ static int meth_send(lua_State *L) { p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); return buffer_meth_send(L, &un->buf); } static int meth_receive(lua_State *L) { p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); return buffer_meth_receive(L, &un->buf); } static int meth_getstats(lua_State *L) { p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); return buffer_meth_getstats(L, &un->buf); } static int meth_setstats(lua_State *L) { p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); return buffer_meth_setstats(L, &un->buf); } /*-------------------------------------------------------------------------*\ * Just call option handler \*-------------------------------------------------------------------------*/ static int meth_setoption(lua_State *L) { p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1); return opt_meth_setoption(L, opt, &un->sock); } /*-------------------------------------------------------------------------*\ * Select support methods \*-------------------------------------------------------------------------*/ static int meth_getfd(lua_State *L) { p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1); lua_pushnumber(L, (int) un->sock); return 1; } /* this is very dangerous, but can be handy for those that are brave enough */ static int meth_setfd(lua_State *L) { p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1); un->sock = (t_socket) luaL_checknumber(L, 2); return 0; } static int meth_dirty(lua_State *L) { p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1); lua_pushboolean(L, !buffer_isempty(&un->buf)); return 1; } /*-------------------------------------------------------------------------*\ * Waits for and returns a client object attempting connection to the * server object \*-------------------------------------------------------------------------*/ static int meth_accept(lua_State *L) { p_unix server = (p_unix) auxiliar_checkclass(L, "unix{server}", 1); p_timeout tm = timeout_markstart(&server->tm); t_socket sock; int err = socket_accept(&server->sock, &sock, NULL, NULL, tm); /* if successful, push client socket */ if (err == IO_DONE) { p_unix clnt = (p_unix) lua_newuserdata(L, sizeof(t_unix)); auxiliar_setclass(L, "unix{client}", -1); /* initialize structure fields */ socket_setnonblocking(&sock); clnt->sock = sock; io_init(&clnt->io, (p_send)socket_send, (p_recv)socket_recv, (p_error) socket_ioerror, &clnt->sock); timeout_init(&clnt->tm, -1, -1); buffer_init(&clnt->buf, &clnt->io, &clnt->tm); return 1; } else { lua_pushnil(L); lua_pushstring(L, socket_strerror(err)); return 2; } } /*-------------------------------------------------------------------------*\ * Binds an object to an address \*-------------------------------------------------------------------------*/ static const char *unix_trybind(p_unix un, const char *path) { struct sockaddr_un local; size_t len = strlen(path); int err; if (len >= sizeof(local.sun_path)) return "path too long"; memset(&local, 0, sizeof(local)); strcpy(local.sun_path, path); local.sun_family = AF_UNIX; #ifdef UNIX_HAS_SUN_LEN local.sun_len = sizeof(local.sun_family) + sizeof(local.sun_len) + len + 1; err = socket_bind(&un->sock, (SA *) &local, local.sun_len); #else err = socket_bind(&un->sock, (SA *) &local, sizeof(local.sun_family) + len); #endif if (err != IO_DONE) socket_destroy(&un->sock); return socket_strerror(err); } static int meth_bind(lua_State *L) { p_unix un = (p_unix) auxiliar_checkclass(L, "unix{master}", 1); const char *path = luaL_checkstring(L, 2); const char *err = unix_trybind(un, path); if (err) { lua_pushnil(L); lua_pushstring(L, err); return 2; } lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * Turns a master unix object into a client object. \*-------------------------------------------------------------------------*/ static const char *unix_tryconnect(p_unix un, const char *path) { struct sockaddr_un remote; int err; size_t len = strlen(path); if (len >= sizeof(remote.sun_path)) return "path too long"; memset(&remote, 0, sizeof(remote)); strcpy(remote.sun_path, path); remote.sun_family = AF_UNIX; timeout_markstart(&un->tm); #ifdef UNIX_HAS_SUN_LEN remote.sun_len = sizeof(remote.sun_family) + sizeof(remote.sun_len) + len + 1; err = socket_connect(&un->sock, (SA *) &remote, remote.sun_len, &un->tm); #else err = socket_connect(&un->sock, (SA *) &remote, sizeof(remote.sun_family) + len, &un->tm); #endif if (err != IO_DONE) socket_destroy(&un->sock); return socket_strerror(err); } static int meth_connect(lua_State *L) { p_unix un = (p_unix) auxiliar_checkclass(L, "unix{master}", 1); const char *path = luaL_checkstring(L, 2); const char *err = unix_tryconnect(un, path); if (err) { lua_pushnil(L); lua_pushstring(L, err); return 2; } /* turn master object into a client object */ auxiliar_setclass(L, "unix{client}", 1); lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * Closes socket used by object \*-------------------------------------------------------------------------*/ static int meth_close(lua_State *L) { p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1); socket_destroy(&un->sock); lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * Puts the sockt in listen mode \*-------------------------------------------------------------------------*/ static int meth_listen(lua_State *L) { p_unix un = (p_unix) auxiliar_checkclass(L, "unix{master}", 1); int backlog = (int) luaL_optnumber(L, 2, 32); int err = socket_listen(&un->sock, backlog); if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, socket_strerror(err)); return 2; } /* turn master object into a server object */ auxiliar_setclass(L, "unix{server}", 1); lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * Shuts the connection down partially \*-------------------------------------------------------------------------*/ static int meth_shutdown(lua_State *L) { p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1); const char *how = luaL_optstring(L, 2, "both"); switch (how[0]) { case 'b': if (strcmp(how, "both")) goto error; socket_shutdown(&un->sock, 2); break; case 's': if (strcmp(how, "send")) goto error; socket_shutdown(&un->sock, 1); break; case 'r': if (strcmp(how, "receive")) goto error; socket_shutdown(&un->sock, 0); break; } lua_pushnumber(L, 1); return 1; error: luaL_argerror(L, 2, "invalid shutdown method"); return 0; } /*-------------------------------------------------------------------------*\ * Just call tm methods \*-------------------------------------------------------------------------*/ static int meth_settimeout(lua_State *L) { p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1); return timeout_meth_settimeout(L, &un->tm); } /*=========================================================================*\ * Library functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Creates a master unix object \*-------------------------------------------------------------------------*/ static int global_create(lua_State *L) { t_socket sock; int err = socket_create(&sock, AF_UNIX, SOCK_STREAM, 0); /* try to allocate a system socket */ if (err == IO_DONE) { /* allocate unix object */ p_unix un = (p_unix) lua_newuserdata(L, sizeof(t_unix)); /* set its type as master object */ auxiliar_setclass(L, "unix{master}", -1); /* initialize remaining structure fields */ socket_setnonblocking(&sock); un->sock = sock; io_init(&un->io, (p_send) socket_send, (p_recv) socket_recv, (p_error) socket_ioerror, &un->sock); timeout_init(&un->tm, -1, -1); buffer_init(&un->buf, &un->io, &un->tm); return 1; } else { lua_pushnil(L); lua_pushstring(L, socket_strerror(err)); return 2; } } love-0.9.1/src/libraries/luasocket/libluasocket/timeout.c0000644000000000000000000001512512316602166023543 0ustar00rootroot00000000000000/*=========================================================================*\ * Timeout management functions * LuaSocket toolkit * * RCS ID: $Id: timeout.c,v 1.30 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include #include "lua.h" #include "lauxlib.h" #include "auxiliar.h" #include "timeout.h" #ifdef _WIN32 #include #else #include #include #endif /* min and max macros */ #ifndef MIN #define MIN(x, y) ((x) < (y) ? x : y) #endif #ifndef MAX #define MAX(x, y) ((x) > (y) ? x : y) #endif /*=========================================================================*\ * Internal function prototypes \*=========================================================================*/ static int timeout_lua_gettime(lua_State *L); static int timeout_lua_sleep(lua_State *L); static luaL_reg func[] = { { "gettime", timeout_lua_gettime }, { "sleep", timeout_lua_sleep }, { NULL, NULL } }; /*=========================================================================*\ * Exported functions. \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Initialize structure \*-------------------------------------------------------------------------*/ void timeout_init(p_timeout tm, double block, double total) { tm->block = block; tm->total = total; } /*-------------------------------------------------------------------------*\ * Determines how much time we have left for the next system call, * if the previous call was successful * Input * tm: timeout control structure * Returns * the number of ms left or -1 if there is no time limit \*-------------------------------------------------------------------------*/ double timeout_get(p_timeout tm) { if (tm->block < 0.0 && tm->total < 0.0) { return -1; } else if (tm->block < 0.0) { double t = tm->total - timeout_gettime() + tm->start; return MAX(t, 0.0); } else if (tm->total < 0.0) { return tm->block; } else { double t = tm->total - timeout_gettime() + tm->start; return MIN(tm->block, MAX(t, 0.0)); } } /*-------------------------------------------------------------------------*\ * Returns time since start of operation * Input * tm: timeout control structure * Returns * start field of structure \*-------------------------------------------------------------------------*/ double timeout_getstart(p_timeout tm) { return tm->start; } /*-------------------------------------------------------------------------*\ * Determines how much time we have left for the next system call, * if the previous call was a failure * Input * tm: timeout control structure * Returns * the number of ms left or -1 if there is no time limit \*-------------------------------------------------------------------------*/ double timeout_getretry(p_timeout tm) { if (tm->block < 0.0 && tm->total < 0.0) { return -1; } else if (tm->block < 0.0) { double t = tm->total - timeout_gettime() + tm->start; return MAX(t, 0.0); } else if (tm->total < 0.0) { double t = tm->block - timeout_gettime() + tm->start; return MAX(t, 0.0); } else { double t = tm->total - timeout_gettime() + tm->start; return MIN(tm->block, MAX(t, 0.0)); } } /*-------------------------------------------------------------------------*\ * Marks the operation start time in structure * Input * tm: timeout control structure \*-------------------------------------------------------------------------*/ p_timeout timeout_markstart(p_timeout tm) { tm->start = timeout_gettime(); return tm; } /*-------------------------------------------------------------------------*\ * Gets time in s, relative to January 1, 1970 (UTC) * Returns * time in s. \*-------------------------------------------------------------------------*/ #ifdef _WIN32 double timeout_gettime(void) { FILETIME ft; double t; GetSystemTimeAsFileTime(&ft); /* Windows file time (time since January 1, 1601 (UTC)) */ t = ft.dwLowDateTime/1.0e7 + ft.dwHighDateTime*(4294967296.0/1.0e7); /* convert to Unix Epoch time (time since January 1, 1970 (UTC)) */ return (t - 11644473600.0); } #else double timeout_gettime(void) { struct timeval v; gettimeofday(&v, (struct timezone *) NULL); /* Unix Epoch time (time since January 1, 1970 (UTC)) */ return v.tv_sec + v.tv_usec/1.0e6; } #endif /*-------------------------------------------------------------------------*\ * Initializes module \*-------------------------------------------------------------------------*/ int timeout_open(lua_State *L) { luaL_openlib(L, NULL, func, 0); return 0; } /*-------------------------------------------------------------------------*\ * Sets timeout values for IO operations * Lua Input: base, time [, mode] * time: time out value in seconds * mode: "b" for block timeout, "t" for total timeout. (default: b) \*-------------------------------------------------------------------------*/ int timeout_meth_settimeout(lua_State *L, p_timeout tm) { double t = luaL_optnumber(L, 2, -1); const char *mode = luaL_optstring(L, 3, "b"); switch (*mode) { case 'b': tm->block = t; break; case 'r': case 't': tm->total = t; break; default: luaL_argcheck(L, 0, 3, "invalid timeout mode"); break; } lua_pushnumber(L, 1); return 1; } /*=========================================================================*\ * Test support functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Returns the time the system has been up, in secconds. \*-------------------------------------------------------------------------*/ static int timeout_lua_gettime(lua_State *L) { lua_pushnumber(L, timeout_gettime()); return 1; } /*-------------------------------------------------------------------------*\ * Sleep for n seconds. \*-------------------------------------------------------------------------*/ int timeout_lua_sleep(lua_State *L) { double n = luaL_checknumber(L, 1); #ifdef _WIN32 Sleep((int)(n*1000)); #else struct timespec t, r; t.tv_sec = (int) n; n -= t.tv_sec; t.tv_nsec = (int) (n * 1000000000); if (t.tv_nsec >= 1000000000) t.tv_nsec = 999999999; while (nanosleep(&t, &r) != 0) { t.tv_sec = r.tv_sec; t.tv_nsec = r.tv_nsec; } #endif return 0; } love-0.9.1/src/libraries/luasocket/libluasocket/except.c0000644000000000000000000000530412316602166023343 0ustar00rootroot00000000000000/*=========================================================================*\ * Simple exception support * LuaSocket toolkit * * RCS ID: $Id: except.c,v 1.8 2005/09/29 06:11:41 diego Exp $ \*=========================================================================*/ #include #include "lua.h" #include "lauxlib.h" #include "except.h" /*=========================================================================*\ * Internal function prototypes. \*=========================================================================*/ static int global_protect(lua_State *L); static int global_newtry(lua_State *L); static int protected_(lua_State *L); static int finalize(lua_State *L); static int do_nothing(lua_State *L); /* except functions */ static luaL_reg func[] = { {"newtry", global_newtry}, {"protect", global_protect}, {NULL, NULL} }; /*-------------------------------------------------------------------------*\ * Try factory \*-------------------------------------------------------------------------*/ static void wrap(lua_State *L) { lua_newtable(L); lua_pushnumber(L, 1); lua_pushvalue(L, -3); lua_settable(L, -3); lua_insert(L, -2); lua_pop(L, 1); } static int finalize(lua_State *L) { if (!lua_toboolean(L, 1)) { lua_pushvalue(L, lua_upvalueindex(1)); lua_pcall(L, 0, 0, 0); lua_settop(L, 2); wrap(L); lua_error(L); return 0; } else return lua_gettop(L); } static int do_nothing(lua_State *L) { (void) L; return 0; } static int global_newtry(lua_State *L) { lua_settop(L, 1); if (lua_isnil(L, 1)) lua_pushcfunction(L, do_nothing); lua_pushcclosure(L, finalize, 1); return 1; } /*-------------------------------------------------------------------------*\ * Protect factory \*-------------------------------------------------------------------------*/ static int unwrap(lua_State *L) { if (lua_istable(L, -1)) { lua_pushnumber(L, 1); lua_gettable(L, -2); lua_pushnil(L); lua_insert(L, -2); return 1; } else return 0; } static int protected_(lua_State *L) { lua_pushvalue(L, lua_upvalueindex(1)); lua_insert(L, 1); if (lua_pcall(L, lua_gettop(L) - 1, LUA_MULTRET, 0) != 0) { if (unwrap(L)) return 2; else lua_error(L); return 0; } else return lua_gettop(L); } static int global_protect(lua_State *L) { lua_pushcclosure(L, protected_, 1); return 1; } /*-------------------------------------------------------------------------*\ * Init module \*-------------------------------------------------------------------------*/ int except_open(lua_State *L) { luaL_openlib(L, NULL, func, 0); return 0; } love-0.9.1/src/libraries/luasocket/libluasocket/tcp.h0000644000000000000000000000200712316602166022643 0ustar00rootroot00000000000000#ifndef TCP_H #define TCP_H /*=========================================================================*\ * TCP object * LuaSocket toolkit * * The tcp.h module is basicly a glue that puts together modules buffer.h, * timeout.h socket.h and inet.h to provide the LuaSocket TCP (AF_INET, * SOCK_STREAM) support. * * Three classes are defined: master, client and server. The master class is * a newly created tcp object, that has not been bound or connected. Server * objects are tcp objects bound to some local address. Client objects are * tcp objects either connected to some address or returned by the accept * method of a server object. * * RCS ID: $Id: tcp.h,v 1.7 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "buffer.h" #include "timeout.h" #include "socket.h" typedef struct t_tcp_ { t_socket sock; t_io io; t_buffer buf; t_timeout tm; } t_tcp; typedef t_tcp *p_tcp; int tcp_open(lua_State *L); #endif /* TCP_H */ love-0.9.1/src/libraries/luasocket/libluasocket/unix.h0000644000000000000000000000120112316602166023033 0ustar00rootroot00000000000000#ifndef UNIX_H #define UNIX_H /*=========================================================================*\ * Unix domain object * LuaSocket toolkit * * This module is just an example of how to extend LuaSocket with a new * domain. * * RCS ID: $Id: unix.h,v 1.9 2006/03/13 07:16:39 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "buffer.h" #include "timeout.h" #include "socket.h" typedef struct t_unix_ { t_socket sock; t_io io; t_buffer buf; t_timeout tm; } t_unix; typedef t_unix *p_unix; int luaopen_socket_unix(lua_State *L); #endif /* UNIX_H */ love-0.9.1/src/libraries/luasocket/libluasocket/socket.h0000644000000000000000000000605512316602166023354 0ustar00rootroot00000000000000#ifndef SOCKET_H #define SOCKET_H /*=========================================================================*\ * Socket compatibilization module * LuaSocket toolkit * * BSD Sockets and WinSock are similar, but there are a few irritating * differences. Also, not all *nix platforms behave the same. This module * (and the associated usocket.h and wsocket.h) factor these differences and * creates a interface compatible with the io.h module. * * RCS ID: $Id: socket.h,v 1.20 2005/11/20 07:20:23 diego Exp $ \*=========================================================================*/ #include "io.h" /*=========================================================================*\ * Platform specific compatibilization \*=========================================================================*/ #ifdef _WIN32 #include "wsocket.h" #else #include "usocket.h" #endif /*=========================================================================*\ * The connect and accept functions accept a timeout and their * implementations are somewhat complicated. We chose to move * the timeout control into this module for these functions in * order to simplify the modules that use them. \*=========================================================================*/ #include "timeout.h" /* we are lazy... */ typedef struct sockaddr SA; /*=========================================================================*\ * Functions bellow implement a comfortable platform independent * interface to sockets \*=========================================================================*/ int socket_open(void); int socket_close(void); void socket_destroy(p_socket ps); void socket_shutdown(p_socket ps, int how); int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent, SA *addr, socklen_t addr_len, p_timeout tm); int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got, SA *addr, socklen_t *addr_len, p_timeout tm); void socket_setnonblocking(p_socket ps); void socket_setblocking(p_socket ps); int socket_waitfd(p_socket ps, int sw, p_timeout tm); int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds, p_timeout tm); int socket_connect(p_socket ps, SA *addr, socklen_t addr_len, p_timeout tm); int socket_create(p_socket ps, int domain, int type, int protocol); int socket_bind(p_socket ps, SA *addr, socklen_t addr_len); int socket_listen(p_socket ps, int backlog); int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *addr_len, p_timeout tm); const char *socket_hoststrerror(int err); const char *socket_strerror(int err); /* these are perfect to use with the io abstraction module and the buffered input module */ int socket_send(p_socket ps, const char *data, size_t count, size_t *sent, p_timeout tm); int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm); const char *socket_ioerror(p_socket ps, int err); int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp); int socket_gethostbyname(const char *addr, struct hostent **hp); #endif /* SOCKET_H */ love-0.9.1/src/libraries/luasocket/libluasocket/buffer.c0000644000000000000000000002372512316602166023333 0ustar00rootroot00000000000000/*=========================================================================*\ * Input/Output interface for Lua programs * LuaSocket toolkit * * RCS ID: $Id: buffer.c,v 1.28 2007/06/11 23:44:54 diego Exp $ \*=========================================================================*/ #include "lua.h" #include "lauxlib.h" #include "buffer.h" /*=========================================================================*\ * Internal function prototypes \*=========================================================================*/ static int recvraw(p_buffer buf, size_t wanted, luaL_Buffer *b); static int recvline(p_buffer buf, luaL_Buffer *b); static int recvall(p_buffer buf, luaL_Buffer *b); static int buffer_get(p_buffer buf, const char **data, size_t *count); static void buffer_skip(p_buffer buf, size_t count); static int sendraw(p_buffer buf, const char *data, size_t count, size_t *sent); /* min and max macros */ #ifndef MIN #define MIN(x, y) ((x) < (y) ? x : y) #endif #ifndef MAX #define MAX(x, y) ((x) > (y) ? x : y) #endif /*=========================================================================*\ * Exported functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Initializes module \*-------------------------------------------------------------------------*/ int buffer_open(lua_State *L) { (void) L; return 0; } /*-------------------------------------------------------------------------*\ * Initializes C structure \*-------------------------------------------------------------------------*/ void buffer_init(p_buffer buf, p_io io, p_timeout tm) { buf->first = buf->last = 0; buf->io = io; buf->tm = tm; buf->received = buf->sent = 0; buf->birthday = timeout_gettime(); } /*-------------------------------------------------------------------------*\ * object:getstats() interface \*-------------------------------------------------------------------------*/ int buffer_meth_getstats(lua_State *L, p_buffer buf) { lua_pushnumber(L, buf->received); lua_pushnumber(L, buf->sent); lua_pushnumber(L, timeout_gettime() - buf->birthday); return 3; } /*-------------------------------------------------------------------------*\ * object:setstats() interface \*-------------------------------------------------------------------------*/ int buffer_meth_setstats(lua_State *L, p_buffer buf) { buf->received = (long) luaL_optnumber(L, 2, buf->received); buf->sent = (long) luaL_optnumber(L, 3, buf->sent); if (lua_isnumber(L, 4)) buf->birthday = timeout_gettime() - lua_tonumber(L, 4); lua_pushnumber(L, 1); return 1; } /*-------------------------------------------------------------------------*\ * object:send() interface \*-------------------------------------------------------------------------*/ int buffer_meth_send(lua_State *L, p_buffer buf) { int top = lua_gettop(L); int err = IO_DONE; size_t size = 0, sent = 0; const char *data = luaL_checklstring(L, 2, &size); long start = (long) luaL_optnumber(L, 3, 1); long end = (long) luaL_optnumber(L, 4, -1); p_timeout tm = timeout_markstart(buf->tm); if (start < 0) start = (long) (size+start+1); if (end < 0) end = (long) (size+end+1); if (start < 1) start = (long) 1; if (end > (long) size) end = (long) size; if (start <= end) err = sendraw(buf, data+start-1, end-start+1, &sent); /* check if there was an error */ if (err != IO_DONE) { lua_pushnil(L); lua_pushstring(L, buf->io->error(buf->io->ctx, err)); lua_pushnumber(L, sent+start-1); } else { lua_pushnumber(L, sent+start-1); lua_pushnil(L); lua_pushnil(L); } #ifdef LUASOCKET_DEBUG /* push time elapsed during operation as the last return value */ lua_pushnumber(L, timeout_gettime() - timeout_getstart(tm)); #endif return lua_gettop(L) - top; } /*-------------------------------------------------------------------------*\ * object:receive() interface \*-------------------------------------------------------------------------*/ int buffer_meth_receive(lua_State *L, p_buffer buf) { int err = IO_DONE, top = lua_gettop(L); luaL_Buffer b; size_t size; const char *part = luaL_optlstring(L, 3, "", &size); p_timeout tm = timeout_markstart(buf->tm); /* initialize buffer with optional extra prefix * (useful for concatenating previous partial results) */ luaL_buffinit(L, &b); luaL_addlstring(&b, part, size); /* receive new patterns */ if (!lua_isnumber(L, 2)) { const char *p= luaL_optstring(L, 2, "*l"); if (p[0] == '*' && p[1] == 'l') err = recvline(buf, &b); else if (p[0] == '*' && p[1] == 'a') err = recvall(buf, &b); else luaL_argcheck(L, 0, 2, "invalid receive pattern"); /* get a fixed number of bytes (minus what was already partially * received) */ } else err = recvraw(buf, (size_t) lua_tonumber(L, 2)-size, &b); /* check if there was an error */ if (err != IO_DONE) { /* we can't push anyting in the stack before pushing the * contents of the buffer. this is the reason for the complication */ luaL_pushresult(&b); lua_pushstring(L, buf->io->error(buf->io->ctx, err)); lua_pushvalue(L, -2); lua_pushnil(L); lua_replace(L, -4); } else { luaL_pushresult(&b); lua_pushnil(L); lua_pushnil(L); } #ifdef LUASOCKET_DEBUG /* push time elapsed during operation as the last return value */ lua_pushnumber(L, timeout_gettime() - timeout_getstart(tm)); #endif return lua_gettop(L) - top; } /*-------------------------------------------------------------------------*\ * Determines if there is any data in the read buffer \*-------------------------------------------------------------------------*/ int buffer_isempty(p_buffer buf) { return buf->first >= buf->last; } /*=========================================================================*\ * Internal functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Sends a block of data (unbuffered) \*-------------------------------------------------------------------------*/ #define STEPSIZE 8192 static int sendraw(p_buffer buf, const char *data, size_t count, size_t *sent) { p_io io = buf->io; p_timeout tm = buf->tm; size_t total = 0; int err = IO_DONE; while (total < count && err == IO_DONE) { size_t done; size_t step = (count-total <= STEPSIZE)? count-total: STEPSIZE; err = io->send(io->ctx, data+total, step, &done, tm); total += done; } *sent = total; buf->sent += total; return err; } /*-------------------------------------------------------------------------*\ * Reads a fixed number of bytes (buffered) \*-------------------------------------------------------------------------*/ static int recvraw(p_buffer buf, size_t wanted, luaL_Buffer *b) { int err = IO_DONE; size_t total = 0; while (err == IO_DONE) { size_t count; const char *data; err = buffer_get(buf, &data, &count); count = MIN(count, wanted - total); luaL_addlstring(b, data, count); buffer_skip(buf, count); total += count; if (total >= wanted) break; } return err; } /*-------------------------------------------------------------------------*\ * Reads everything until the connection is closed (buffered) \*-------------------------------------------------------------------------*/ static int recvall(p_buffer buf, luaL_Buffer *b) { int err = IO_DONE; size_t total = 0; while (err == IO_DONE) { const char *data; size_t count; err = buffer_get(buf, &data, &count); total += count; luaL_addlstring(b, data, count); buffer_skip(buf, count); } if (err == IO_CLOSED) { if (total > 0) return IO_DONE; else return IO_CLOSED; } else return err; } /*-------------------------------------------------------------------------*\ * Reads a line terminated by a CR LF pair or just by a LF. The CR and LF * are not returned by the function and are discarded from the buffer \*-------------------------------------------------------------------------*/ static int recvline(p_buffer buf, luaL_Buffer *b) { int err = IO_DONE; while (err == IO_DONE) { size_t count, pos; const char *data; err = buffer_get(buf, &data, &count); pos = 0; while (pos < count && data[pos] != '\n') { /* we ignore all \r's */ if (data[pos] != '\r') luaL_putchar(b, data[pos]); pos++; } if (pos < count) { /* found '\n' */ buffer_skip(buf, pos+1); /* skip '\n' too */ break; /* we are done */ } else /* reached the end of the buffer */ buffer_skip(buf, pos); } return err; } /*-------------------------------------------------------------------------*\ * Skips a given number of bytes from read buffer. No data is read from the * transport layer \*-------------------------------------------------------------------------*/ static void buffer_skip(p_buffer buf, size_t count) { buf->received += count; buf->first += count; if (buffer_isempty(buf)) buf->first = buf->last = 0; } /*-------------------------------------------------------------------------*\ * Return any data available in buffer, or get more data from transport layer * if buffer is empty \*-------------------------------------------------------------------------*/ static int buffer_get(p_buffer buf, const char **data, size_t *count) { int err = IO_DONE; p_io io = buf->io; p_timeout tm = buf->tm; if (buffer_isempty(buf)) { size_t got; err = io->recv(io->ctx, buf->data, BUF_SIZE, &got, tm); buf->first = 0; buf->last = got; } *count = buf->last - buf->first; *data = buf->data + buf->first; return err; } love-0.9.1/src/libraries/luasocket/libluasocket/mime.c0000644000000000000000000006233412316602166023010 0ustar00rootroot00000000000000/*=========================================================================*\ * MIME support functions * LuaSocket toolkit * * RCS ID: $Id: mime.c,v 1.28 2005/11/20 07:20:23 diego Exp $ \*=========================================================================*/ #include #include "lua.h" #include "lauxlib.h" #if !defined(LUA_VERSION_NUM) || (LUA_VERSION_NUM < 501) #include "compat-5.1.h" #endif #include "mime.h" /*=========================================================================*\ * Don't want to trust escape character constants \*=========================================================================*/ typedef unsigned char UC; static const char CRLF[] = "\r\n"; static const char EQCRLF[] = "=\r\n"; /*=========================================================================*\ * Internal function prototypes. \*=========================================================================*/ static int mime_global_wrp(lua_State *L); static int mime_global_b64(lua_State *L); static int mime_global_unb64(lua_State *L); static int mime_global_qp(lua_State *L); static int mime_global_unqp(lua_State *L); static int mime_global_qpwrp(lua_State *L); static int mime_global_eol(lua_State *L); static int mime_global_dot(lua_State *L); static size_t dot(int c, size_t state, luaL_Buffer *buffer); static void b64setup(UC *b64unbase); static size_t b64encode(UC c, UC *input, size_t size, luaL_Buffer *buffer); static size_t b64pad(const UC *input, size_t size, luaL_Buffer *buffer); static size_t b64decode(UC c, UC *input, size_t size, luaL_Buffer *buffer); static void qpsetup(UC *qpclass, UC *qpunbase); static void qpquote(UC c, luaL_Buffer *buffer); static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer); static size_t qpencode(UC c, UC *input, size_t size, const char *marker, luaL_Buffer *buffer); static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer); /* code support functions */ static luaL_reg func[] = { { "dot", mime_global_dot }, { "b64", mime_global_b64 }, { "eol", mime_global_eol }, { "qp", mime_global_qp }, { "qpwrp", mime_global_qpwrp }, { "unb64", mime_global_unb64 }, { "unqp", mime_global_unqp }, { "wrp", mime_global_wrp }, { NULL, NULL } }; /*-------------------------------------------------------------------------*\ * Quoted-printable globals \*-------------------------------------------------------------------------*/ static UC qpclass[256]; static UC qpbase[] = "0123456789ABCDEF"; static UC qpunbase[256]; enum {QP_PLAIN, QP_QUOTED, QP_CR, QP_IF_LAST}; /*-------------------------------------------------------------------------*\ * Base64 globals \*-------------------------------------------------------------------------*/ static const UC b64base[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static UC b64unbase[256]; /*=========================================================================*\ * Exported functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Initializes module \*-------------------------------------------------------------------------*/ MIME_API int luaopen_mime_core(lua_State *L) { luaL_openlib(L, "mime", func, 0); /* make version string available to scripts */ lua_pushstring(L, "_VERSION"); lua_pushstring(L, MIME_VERSION); lua_rawset(L, -3); /* initialize lookup tables */ qpsetup(qpclass, qpunbase); b64setup(b64unbase); return 1; } /*=========================================================================*\ * Global Lua functions \*=========================================================================*/ /*-------------------------------------------------------------------------*\ * Incrementaly breaks a string into lines. The string can have CRLF breaks. * A, n = wrp(l, B, length) * A is a copy of B, broken into lines of at most 'length' bytes. * 'l' is how many bytes are left for the first line of B. * 'n' is the number of bytes left in the last line of A. \*-------------------------------------------------------------------------*/ static int mime_global_wrp(lua_State *L) { size_t size = 0; int left = (int) luaL_checknumber(L, 1); const UC *input = (UC *) luaL_optlstring(L, 2, NULL, &size); const UC *last = input + size; int length = (int) luaL_optnumber(L, 3, 76); luaL_Buffer buffer; /* end of input black-hole */ if (!input) { /* if last line has not been terminated, add a line break */ if (left < length) lua_pushstring(L, CRLF); /* otherwise, we are done */ else lua_pushnil(L); lua_pushnumber(L, length); return 2; } luaL_buffinit(L, &buffer); while (input < last) { switch (*input) { case '\r': break; case '\n': luaL_addstring(&buffer, CRLF); left = length; break; default: if (left <= 0) { left = length; luaL_addstring(&buffer, CRLF); } luaL_putchar(&buffer, *input); left--; break; } input++; } luaL_pushresult(&buffer); lua_pushnumber(L, left); return 2; } /*-------------------------------------------------------------------------*\ * Fill base64 decode map. \*-------------------------------------------------------------------------*/ static void b64setup(UC *b64unbase) { int i; for (i = 0; i <= 255; i++) b64unbase[i] = (UC) 255; for (i = 0; i < 64; i++) b64unbase[b64base[i]] = (UC) i; b64unbase['='] = 0; } /*-------------------------------------------------------------------------*\ * Acumulates bytes in input buffer until 3 bytes are available. * Translate the 3 bytes into Base64 form and append to buffer. * Returns new number of bytes in buffer. \*-------------------------------------------------------------------------*/ static size_t b64encode(UC c, UC *input, size_t size, luaL_Buffer *buffer) { input[size++] = c; if (size == 3) { UC code[4]; unsigned long value = 0; value += input[0]; value <<= 8; value += input[1]; value <<= 8; value += input[2]; code[3] = b64base[value & 0x3f]; value >>= 6; code[2] = b64base[value & 0x3f]; value >>= 6; code[1] = b64base[value & 0x3f]; value >>= 6; code[0] = b64base[value]; luaL_addlstring(buffer, (char *) code, 4); size = 0; } return size; } /*-------------------------------------------------------------------------*\ * Encodes the Base64 last 1 or 2 bytes and adds padding '=' * Result, if any, is appended to buffer. * Returns 0. \*-------------------------------------------------------------------------*/ static size_t b64pad(const UC *input, size_t size, luaL_Buffer *buffer) { unsigned long value = 0; UC code[4] = {'=', '=', '=', '='}; switch (size) { case 1: value = input[0] << 4; code[1] = b64base[value & 0x3f]; value >>= 6; code[0] = b64base[value]; luaL_addlstring(buffer, (char *) code, 4); break; case 2: value = input[0]; value <<= 8; value |= input[1]; value <<= 2; code[2] = b64base[value & 0x3f]; value >>= 6; code[1] = b64base[value & 0x3f]; value >>= 6; code[0] = b64base[value]; luaL_addlstring(buffer, (char *) code, 4); break; default: break; } return 0; } /*-------------------------------------------------------------------------*\ * Acumulates bytes in input buffer until 4 bytes are available. * Translate the 4 bytes from Base64 form and append to buffer. * Returns new number of bytes in buffer. \*-------------------------------------------------------------------------*/ static size_t b64decode(UC c, UC *input, size_t size, luaL_Buffer *buffer) { /* ignore invalid characters */ if (b64unbase[c] > 64) return size; input[size++] = c; /* decode atom */ if (size == 4) { UC decoded[3]; int valid, value = 0; value = b64unbase[input[0]]; value <<= 6; value |= b64unbase[input[1]]; value <<= 6; value |= b64unbase[input[2]]; value <<= 6; value |= b64unbase[input[3]]; decoded[2] = (UC) (value & 0xff); value >>= 8; decoded[1] = (UC) (value & 0xff); value >>= 8; decoded[0] = (UC) value; /* take care of paddding */ valid = (input[2] == '=') ? 1 : (input[3] == '=') ? 2 : 3; luaL_addlstring(buffer, (char *) decoded, valid); return 0; /* need more data */ } else return size; } /*-------------------------------------------------------------------------*\ * Incrementally applies the Base64 transfer content encoding to a string * A, B = b64(C, D) * A is the encoded version of the largest prefix of C .. D that is * divisible by 3. B has the remaining bytes of C .. D, *without* encoding. * The easiest thing would be to concatenate the two strings and * encode the result, but we can't afford that or Lua would dupplicate * every chunk we received. \*-------------------------------------------------------------------------*/ static int mime_global_b64(lua_State *L) { UC atom[3]; size_t isize = 0, asize = 0; const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize); const UC *last = input + isize; luaL_Buffer buffer; /* end-of-input blackhole */ if (!input) { lua_pushnil(L); lua_pushnil(L); return 2; } /* process first part of the input */ luaL_buffinit(L, &buffer); while (input < last) asize = b64encode(*input++, atom, asize, &buffer); input = (UC *) luaL_optlstring(L, 2, NULL, &isize); /* if second part is nil, we are done */ if (!input) { asize = b64pad(atom, asize, &buffer); luaL_pushresult(&buffer); if (!(*lua_tostring(L, -1))) lua_pushnil(L); lua_pushnil(L); return 2; } /* otherwise process the second part */ last = input + isize; while (input < last) asize = b64encode(*input++, atom, asize, &buffer); luaL_pushresult(&buffer); lua_pushlstring(L, (char *) atom, asize); return 2; } /*-------------------------------------------------------------------------*\ * Incrementally removes the Base64 transfer content encoding from a string * A, B = b64(C, D) * A is the encoded version of the largest prefix of C .. D that is * divisible by 4. B has the remaining bytes of C .. D, *without* encoding. \*-------------------------------------------------------------------------*/ static int mime_global_unb64(lua_State *L) { UC atom[4]; size_t isize = 0, asize = 0; const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize); const UC *last = input + isize; luaL_Buffer buffer; /* end-of-input blackhole */ if (!input) { lua_pushnil(L); lua_pushnil(L); return 2; } /* process first part of the input */ luaL_buffinit(L, &buffer); while (input < last) asize = b64decode(*input++, atom, asize, &buffer); input = (UC *) luaL_optlstring(L, 2, NULL, &isize); /* if second is nil, we are done */ if (!input) { luaL_pushresult(&buffer); if (!(*lua_tostring(L, -1))) lua_pushnil(L); lua_pushnil(L); return 2; } /* otherwise, process the rest of the input */ last = input + isize; while (input < last) asize = b64decode(*input++, atom, asize, &buffer); luaL_pushresult(&buffer); lua_pushlstring(L, (char *) atom, asize); return 2; } /*-------------------------------------------------------------------------*\ * Quoted-printable encoding scheme * all (except CRLF in text) can be =XX * CLRL in not text must be =XX=XX * 33 through 60 inclusive can be plain * 62 through 126 inclusive can be plain * 9 and 32 can be plain, unless in the end of a line, where must be =XX * encoded lines must be no longer than 76 not counting CRLF * soft line-break are =CRLF * To encode one byte, we need to see the next two. * Worst case is when we see a space, and wonder if a CRLF is comming \*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*\ * Split quoted-printable characters into classes * Precompute reverse map for encoding \*-------------------------------------------------------------------------*/ static void qpsetup(UC *qpclass, UC *qpunbase) { int i; for (i = 0; i < 256; i++) qpclass[i] = QP_QUOTED; for (i = 33; i <= 60; i++) qpclass[i] = QP_PLAIN; for (i = 62; i <= 126; i++) qpclass[i] = QP_PLAIN; qpclass['\t'] = QP_IF_LAST; qpclass[' '] = QP_IF_LAST; qpclass['\r'] = QP_CR; for (i = 0; i < 256; i++) qpunbase[i] = 255; qpunbase['0'] = 0; qpunbase['1'] = 1; qpunbase['2'] = 2; qpunbase['3'] = 3; qpunbase['4'] = 4; qpunbase['5'] = 5; qpunbase['6'] = 6; qpunbase['7'] = 7; qpunbase['8'] = 8; qpunbase['9'] = 9; qpunbase['A'] = 10; qpunbase['a'] = 10; qpunbase['B'] = 11; qpunbase['b'] = 11; qpunbase['C'] = 12; qpunbase['c'] = 12; qpunbase['D'] = 13; qpunbase['d'] = 13; qpunbase['E'] = 14; qpunbase['e'] = 14; qpunbase['F'] = 15; qpunbase['f'] = 15; } /*-------------------------------------------------------------------------*\ * Output one character in form =XX \*-------------------------------------------------------------------------*/ static void qpquote(UC c, luaL_Buffer *buffer) { luaL_putchar(buffer, '='); luaL_putchar(buffer, qpbase[c >> 4]); luaL_putchar(buffer, qpbase[c & 0x0F]); } /*-------------------------------------------------------------------------*\ * Accumulate characters until we are sure about how to deal with them. * Once we are sure, output to the buffer, in the correct form. \*-------------------------------------------------------------------------*/ static size_t qpencode(UC c, UC *input, size_t size, const char *marker, luaL_Buffer *buffer) { input[size++] = c; /* deal with all characters we can have */ while (size > 0) { switch (qpclass[input[0]]) { /* might be the CR of a CRLF sequence */ case QP_CR: if (size < 2) return size; if (input[1] == '\n') { luaL_addstring(buffer, marker); return 0; } else qpquote(input[0], buffer); break; /* might be a space and that has to be quoted if last in line */ case QP_IF_LAST: if (size < 3) return size; /* if it is the last, quote it and we are done */ if (input[1] == '\r' && input[2] == '\n') { qpquote(input[0], buffer); luaL_addstring(buffer, marker); return 0; } else luaL_putchar(buffer, input[0]); break; /* might have to be quoted always */ case QP_QUOTED: qpquote(input[0], buffer); break; /* might never have to be quoted */ default: luaL_putchar(buffer, input[0]); break; } input[0] = input[1]; input[1] = input[2]; size--; } return 0; } /*-------------------------------------------------------------------------*\ * Deal with the final characters \*-------------------------------------------------------------------------*/ static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer) { size_t i; for (i = 0; i < size; i++) { if (qpclass[input[i]] == QP_PLAIN) luaL_putchar(buffer, input[i]); else qpquote(input[i], buffer); } if (size > 0) luaL_addstring(buffer, EQCRLF); return 0; } /*-------------------------------------------------------------------------*\ * Incrementally converts a string to quoted-printable * A, B = qp(C, D, marker) * Marker is the text to be used to replace CRLF sequences found in A. * A is the encoded version of the largest prefix of C .. D that * can be encoded without doubts. * B has the remaining bytes of C .. D, *without* encoding. \*-------------------------------------------------------------------------*/ static int mime_global_qp(lua_State *L) { size_t asize = 0, isize = 0; UC atom[3]; const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize); const UC *last = input + isize; const char *marker = luaL_optstring(L, 3, CRLF); luaL_Buffer buffer; /* end-of-input blackhole */ if (!input) { lua_pushnil(L); lua_pushnil(L); return 2; } /* process first part of input */ luaL_buffinit(L, &buffer); while (input < last) asize = qpencode(*input++, atom, asize, marker, &buffer); input = (UC *) luaL_optlstring(L, 2, NULL, &isize); /* if second part is nil, we are done */ if (!input) { asize = qppad(atom, asize, &buffer); luaL_pushresult(&buffer); if (!(*lua_tostring(L, -1))) lua_pushnil(L); lua_pushnil(L); return 2; } /* otherwise process rest of input */ last = input + isize; while (input < last) asize = qpencode(*input++, atom, asize, marker, &buffer); luaL_pushresult(&buffer); lua_pushlstring(L, (char *) atom, asize); return 2; } /*-------------------------------------------------------------------------*\ * Accumulate characters until we are sure about how to deal with them. * Once we are sure, output the to the buffer, in the correct form. \*-------------------------------------------------------------------------*/ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) { int d; input[size++] = c; /* deal with all characters we can deal */ switch (input[0]) { /* if we have an escape character */ case '=': if (size < 3) return size; /* eliminate soft line break */ if (input[1] == '\r' && input[2] == '\n') return 0; /* decode quoted representation */ c = qpunbase[input[1]]; d = qpunbase[input[2]]; /* if it is an invalid, do not decode */ if (c > 15 || d > 15) luaL_addlstring(buffer, (char *)input, 3); else luaL_putchar(buffer, (c << 4) + d); return 0; case '\r': if (size < 2) return size; if (input[1] == '\n') luaL_addlstring(buffer, (char *)input, 2); return 0; default: if (input[0] == '\t' || (input[0] > 31 && input[0] < 127)) luaL_putchar(buffer, input[0]); return 0; } } /*-------------------------------------------------------------------------*\ * Incrementally decodes a string in quoted-printable * A, B = qp(C, D) * A is the decoded version of the largest prefix of C .. D that * can be decoded without doubts. * B has the remaining bytes of C .. D, *without* decoding. \*-------------------------------------------------------------------------*/ static int mime_global_unqp(lua_State *L) { size_t asize = 0, isize = 0; UC atom[3]; const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize); const UC *last = input + isize; luaL_Buffer buffer; /* end-of-input blackhole */ if (!input) { lua_pushnil(L); lua_pushnil(L); return 2; } /* process first part of input */ luaL_buffinit(L, &buffer); while (input < last) asize = qpdecode(*input++, atom, asize, &buffer); input = (UC *) luaL_optlstring(L, 2, NULL, &isize); /* if second part is nil, we are done */ if (!input) { luaL_pushresult(&buffer); if (!(*lua_tostring(L, -1))) lua_pushnil(L); lua_pushnil(L); return 2; } /* otherwise process rest of input */ last = input + isize; while (input < last) asize = qpdecode(*input++, atom, asize, &buffer); luaL_pushresult(&buffer); lua_pushlstring(L, (char *) atom, asize); return 2; } /*-------------------------------------------------------------------------*\ * Incrementally breaks a quoted-printed string into lines * A, n = qpwrp(l, B, length) * A is a copy of B, broken into lines of at most 'length' bytes. * 'l' is how many bytes are left for the first line of B. * 'n' is the number of bytes left in the last line of A. * There are two complications: lines can't be broken in the middle * of an encoded =XX, and there might be line breaks already \*-------------------------------------------------------------------------*/ static int mime_global_qpwrp(lua_State *L) { size_t size = 0; int left = (int) luaL_checknumber(L, 1); const UC *input = (UC *) luaL_optlstring(L, 2, NULL, &size); const UC *last = input + size; int length = (int) luaL_optnumber(L, 3, 76); luaL_Buffer buffer; /* end-of-input blackhole */ if (!input) { if (left < length) lua_pushstring(L, EQCRLF); else lua_pushnil(L); lua_pushnumber(L, length); return 2; } /* process all input */ luaL_buffinit(L, &buffer); while (input < last) { switch (*input) { case '\r': break; case '\n': left = length; luaL_addstring(&buffer, CRLF); break; case '=': if (left <= 3) { left = length; luaL_addstring(&buffer, EQCRLF); } luaL_putchar(&buffer, *input); left--; break; default: if (left <= 1) { left = length; luaL_addstring(&buffer, EQCRLF); } luaL_putchar(&buffer, *input); left--; break; } input++; } luaL_pushresult(&buffer); lua_pushnumber(L, left); return 2; } /*-------------------------------------------------------------------------*\ * Here is what we do: \n, and \r are considered candidates for line * break. We issue *one* new line marker if any of them is seen alone, or * followed by a different one. That is, \n\n and \r\r will issue two * end of line markers each, but \r\n, \n\r etc will only issue *one* * marker. This covers Mac OS, Mac OS X, VMS, Unix and DOS, as well as * probably other more obscure conventions. * * c is the current character being processed * last is the previous character \*-------------------------------------------------------------------------*/ #define eolcandidate(c) (c == '\r' || c == '\n') static int eolprocess(int c, int last, const char *marker, luaL_Buffer *buffer) { if (eolcandidate(c)) { if (eolcandidate(last)) { if (c == last) luaL_addstring(buffer, marker); return 0; } else { luaL_addstring(buffer, marker); return c; } } else { luaL_putchar(buffer, c); return 0; } } /*-------------------------------------------------------------------------*\ * Converts a string to uniform EOL convention. * A, n = eol(o, B, marker) * A is the converted version of the largest prefix of B that can be * converted unambiguously. 'o' is the context returned by the previous * call. 'n' is the new context. \*-------------------------------------------------------------------------*/ static int mime_global_eol(lua_State *L) { int ctx = luaL_checkint(L, 1); size_t isize = 0; const char *input = luaL_optlstring(L, 2, NULL, &isize); const char *last = input + isize; const char *marker = luaL_optstring(L, 3, CRLF); luaL_Buffer buffer; luaL_buffinit(L, &buffer); /* end of input blackhole */ if (!input) { lua_pushnil(L); lua_pushnumber(L, 0); return 2; } /* process all input */ while (input < last) ctx = eolprocess(*input++, ctx, marker, &buffer); luaL_pushresult(&buffer); lua_pushnumber(L, ctx); return 2; } /*-------------------------------------------------------------------------*\ * Takes one byte and stuff it if needed. \*-------------------------------------------------------------------------*/ static size_t dot(int c, size_t state, luaL_Buffer *buffer) { luaL_putchar(buffer, c); switch (c) { case '\r': return 1; case '\n': return (state == 1)? 2: 0; case '.': if (state == 2) luaL_putchar(buffer, '.'); default: return 0; } } /*-------------------------------------------------------------------------*\ * Incrementally applies smtp stuffing to a string * A, n = dot(l, D) \*-------------------------------------------------------------------------*/ static int mime_global_dot(lua_State *L) { size_t isize = 0, state = (size_t) luaL_checknumber(L, 1); const char *input = luaL_optlstring(L, 2, NULL, &isize); const char *last = input + isize; luaL_Buffer buffer; /* end-of-input blackhole */ if (!input) { lua_pushnil(L); lua_pushnumber(L, 2); return 2; } /* process all input */ luaL_buffinit(L, &buffer); while (input < last) state = dot(*input++, state, &buffer); luaL_pushresult(&buffer); lua_pushnumber(L, state); return 2; } love-0.9.1/src/libraries/luasocket/libluasocket/socket.lua.h0000644000000000000000000004061612316602166024135 0ustar00rootroot00000000000000/* code automatically generated by bin2c -- DO NOT EDIT */ { /* #include'ing this file in a C program is equivalent to calling if (luaL_loadfile(L,"socket.lua")==0) lua_call(L, 0, 0); */ /* socket.lua */ static const unsigned char B1[]={ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,104,101,108,112,101,114, 32,109,111, 100,117,108,101, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,103, 111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,115,111, 99,107,101,116, 46,108,117, 97, 44,118, 32, 49, 46, 50, 50, 32, 50, 48, 48, 53, 47, 49, 49, 47, 50, 50, 32, 48, 56, 58, 51, 51, 58, 50, 57, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114, 101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32, 100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115, 101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10, 108,111, 99, 97,108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109, 97,116,104, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101, 116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46, 99,111,114,101, 34, 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101, 116, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,120,112,111,114,116,101,100, 32, 97,117,120,105,108, 105, 97,114, 32,102,117,110, 99,116,105,111,110,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 99,111,110,110,101, 99,116, 40, 97,100,100,114,101,115,115, 44, 32,112,111, 114,116, 44, 32,108, 97,100,100,114,101,115,115, 44, 32,108,112,111,114,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,111, 99,107, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107,101,116, 46,116, 99,112, 40, 41, 10, 32, 32, 32, 32, 105,102, 32,110,111,116, 32,115,111, 99,107, 32,116,104,101,110, 32,114,101,116, 117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,108, 97,100,100,114,101,115,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,115, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107, 58, 98,105,110,100, 40,108, 97,100,100,114,101,115, 115, 44, 32,108,112,111,114,116, 44, 32, 45, 49, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,115, 32,116,104,101,110, 32,114,101, 116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,115, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107, 58, 99,111,110,110,101, 99,116, 40, 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32,105, 102, 32,110,111,116, 32,114,101,115, 32,116,104,101,110, 32,114,101,116,117,114, 110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,114, 101,116,117,114,110, 32,115,111, 99,107, 10,101,110,100, 10, 10,102,117,110, 99, 116,105,111,110, 32, 98,105,110,100, 40,104,111,115,116, 44, 32,112,111,114,116, 44, 32, 98, 97, 99,107,108,111,103, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,111, 99,107, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107,101,116, 46, 116, 99,112, 40, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,111, 99, 107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101, 114,114, 32,101,110,100, 10, 32, 32, 32, 32,115,111, 99,107, 58,115,101,116,111, 112,116,105,111,110, 40, 34,114,101,117,115,101, 97,100,100,114, 34, 44, 32,116, 114,117,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,115, 44, 32, 101,114,114, 32, 61, 32,115,111, 99,107, 58, 98,105,110,100, 40,104,111,115,116, 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114, 101,115, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,114,101,115, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107, 58,108,105,115,116,101,110, 40, 98, 97, 99,107,108, 111,103, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,115, 32,116, 104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32, 101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,111, 99,107, 10, 101,110,100, 10, 10,116,114,121, 32, 61, 32,110,101,119,116,114,121, 40, 41, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,104,111,111,115,101, 40,116, 97, 98, 108,101, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116, 105,111,110, 40,110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121, 112,101, 40,110, 97,109,101, 41, 32,126, 61, 32, 34,115,116,114,105,110,103, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,110, 97, 109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 32, 61, 32, 34,100,101, 102, 97,117,108,116, 34, 44, 32,110, 97,109,101, 44, 32,111,112,116, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,108, 111, 99, 97,108, 32,102, 32, 61, 32,116, 97, 98,108,101, 91,110, 97,109,101, 32, 111,114, 32, 34,110,105,108, 34, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,102, 32,116,104,101,110, 32, 98, 97,115,101, 46,101,114,114, 111,114, 40, 34,117,110,107,110,111,119,110, 32,107,101,121, 32, 40, 34, 46, 46, 32, 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110, 97,109,101, 41, 32, 46, 46, 34, 41, 34, 44, 32, 51, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101, 108,115,101, 32,114,101,116,117,114,110, 32,102, 40,111,112,116, 49, 44, 32,111, 112,116, 50, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 83,111, 99,107,101,116, 32,115,111,117,114, 99,101,115, 32, 97,110, 100, 32,115,105,110,107,115, 44, 32, 99,111,110,102,111,114,109,105,110,103, 32, 116,111, 32, 76, 84, 78, 49, 50, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101, 32,110, 97,109, 101,115,112, 97, 99,101,115, 32,105,110,115,105,100,101, 32, 76,117, 97, 83,111, 99,107,101,116, 32,110, 97,109,101,115,112, 97, 99,101, 10,115,111,117,114, 99, 101,116, 32, 61, 32,123,125, 10,115,105,110,107,116, 32, 61, 32,123,125, 10, 10, 66, 76, 79, 67, 75, 83, 73, 90, 69, 32, 61, 32, 50, 48, 52, 56, 10, 10,115,105, 110,107,116, 91, 34, 99,108,111,115,101, 45,119,104,101,110, 45,100,111,110,101, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109, 101,116, 97,116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103, 101,116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101, 116,117,114,110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110, 100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102, 117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99, 107, 58,100,105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32, 102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105, 102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 58, 99,108, 111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58, 115,101,110,100, 40, 99,104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, 10, 115,105,110,107,116, 91, 34,107,101,101,112, 45,111,112,101,110, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32, 32, 114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116, 105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105, 114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99, 116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101,114, 114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104, 117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,115,101,110,100, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 49, 32,101, 110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, 10,115,105,110,107,116, 91, 34,100,101,102, 97,117,108, 116, 34, 93, 32, 61, 32,115,105,110,107,116, 91, 34,107,101,101,112, 45,111,112, 101,110, 34, 93, 10, 10,115,105,110,107, 32, 61, 32, 99,104,111,111,115,101, 40, 115,105,110,107,116, 41, 10, 10,115,111,117,114, 99,101,116, 91, 34, 98,121, 45, 108,101,110,103,116,104, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 115,111, 99,107, 44, 32,108,101,110,103,116,104, 41, 10, 32, 32, 32, 32,114,101, 116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98, 108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115, 111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,105,111, 110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,114,116, 121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,116,105, 111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 108,101,110,103,116,104, 32, 60, 61, 32, 48, 32,116,104,101,110, 32,114,101,116, 117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,105,122,101, 32, 61, 32,109, 97,116, 104, 46,109,105,110, 40,115,111, 99,107,101,116, 46, 66, 76, 79, 67, 75, 83, 73, 90, 69, 44, 32,108,101,110,103,116,104, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40,115,105,122,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114, 114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,101, 110,103,116,104, 32, 61, 32,108,101,110,103,116,104, 32, 45, 32,115,116,114,105, 110,103, 46,108,101,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110, 100, 10, 10,115,111,117,114, 99,101,116, 91, 34,117,110,116,105,108, 45, 99,108, 111,115,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,100,111,110,101, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101, 116, 97,116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101, 116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116, 117,114,110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117, 110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102, 117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,100,111,110,101, 32,116,104,101,110, 32,114,101,116,117,114, 110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 44, 32, 112, 97,114,116,105, 97,108, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105, 118,101, 40,115,111, 99,107,101,116, 46, 66, 76, 79, 67, 75, 83, 73, 90, 69, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110, 107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, 32,101,114,114, 32, 61, 61, 32, 34, 99,108,111,115,101,100, 34, 32,116,104,101, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,100,111,110,101, 32, 61, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,112, 97,114,116,105, 97,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101, 108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32, 101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 125, 41, 10,101,110,100, 10, 10, 10,115,111,117,114, 99,101,116, 91, 34,100,101, 102, 97,117,108,116, 34, 93, 32, 61, 32,115,111,117,114, 99,101,116, 91, 34,117, 110,116,105,108, 45, 99,108,111,115,101,100, 34, 93, 10, 10,115,111,117,114, 99, 101, 32, 61, 32, 99,104,111,111,115,101, 40,115,111,117,114, 99,101,116, 41, 10, 10, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"socket.lua")==0) lua_call(L, 0, 0); } love-0.9.1/src/libraries/luasocket/libluasocket/luasocket.c0000644000000000000000000000764512316602166024057 0ustar00rootroot00000000000000/*=========================================================================*\ * LuaSocket toolkit * Networking support for the Lua language * Diego Nehab * 26/11/1999 * * This library is part of an effort to progressively increase the network * connectivity of the Lua language. The Lua interface to networking * functions follows the Sockets API closely, trying to simplify all tasks * involved in setting up both client and server connections. The provided * IO routines, however, follow the Lua style, being very similar to the * standard Lua read and write functions. * * RCS ID: $Id: luasocket.c,v 1.53 2005/10/07 04:40:59 diego Exp $ \*=========================================================================*/ /*=========================================================================*\ * Standard include files \*=========================================================================*/ #include "lua.h" #include "lauxlib.h" #if !defined(LUA_VERSION_NUM) || (LUA_VERSION_NUM < 501) #include "compat-5.1.h" #endif /*=========================================================================*\ * LuaSocket includes \*=========================================================================*/ #include "luasocket.h" #include "auxiliar.h" #include "except.h" #include "timeout.h" #include "buffer.h" #include "inet.h" #include "tcp.h" #include "udp.h" #include "select.h" /*-------------------------------------------------------------------------*\ * Internal function prototypes \*-------------------------------------------------------------------------*/ static int global_skip(lua_State *L); static int global_unload(lua_State *L); static int base_open(lua_State *L); /*-------------------------------------------------------------------------*\ * Modules and functions \*-------------------------------------------------------------------------*/ static const luaL_reg mod[] = { {"auxiliar", auxiliar_open}, {"except", except_open}, {"timeout", timeout_open}, {"buffer", buffer_open}, {"inet", inet_open}, {"tcp", tcp_open}, {"udp", udp_open}, {"select", select_open}, {NULL, NULL} }; static luaL_reg func[] = { {"skip", global_skip}, {"__unload", global_unload}, {NULL, NULL} }; /*-------------------------------------------------------------------------*\ * Skip a few arguments \*-------------------------------------------------------------------------*/ static int global_skip(lua_State *L) { int amount = luaL_checkint(L, 1); int ret = lua_gettop(L) - amount - 1; return ret >= 0 ? ret : 0; } /*-------------------------------------------------------------------------*\ * Unloads the library \*-------------------------------------------------------------------------*/ static int global_unload(lua_State *L) { (void) L; socket_close(); return 0; } /*-------------------------------------------------------------------------*\ * Setup basic stuff. \*-------------------------------------------------------------------------*/ static int base_open(lua_State *L) { if (socket_open()) { /* export functions (and leave namespace table on top of stack) */ luaL_openlib(L, "socket", func, 0); #ifdef LUASOCKET_DEBUG lua_pushstring(L, "_DEBUG"); lua_pushboolean(L, 1); lua_rawset(L, -3); #endif /* make version string available to scripts */ lua_pushstring(L, "_VERSION"); lua_pushstring(L, LUASOCKET_VERSION); lua_rawset(L, -3); return 1; } else { lua_pushstring(L, "unable to initialize library"); lua_error(L); return 0; } } /*-------------------------------------------------------------------------*\ * Initializes all library modules. \*-------------------------------------------------------------------------*/ int LUASOCKET_API luaopen_socket_core(lua_State *L) { int i; base_open(L); for (i = 0; mod[i].name; i++) mod[i].func(L); return 1; } love-0.9.1/src/libraries/luasocket/libluasocket/tp.lua.h0000644000000000000000000003512712316602166023271 0ustar00rootroot00000000000000/* code automatically generated by bin2c -- DO NOT EDIT */ { /* #include'ing this file in a C program is equivalent to calling if (luaL_loadfile(L,"tp.lua")==0) lua_call(L, 0, 0); */ /* tp.lua */ static const unsigned char B1[]={ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 85,110,105,102,105,101,100, 32, 83, 77, 84, 80, 47, 70, 84, 80, 32,115,117, 98,115,121,115,116,101,109, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,116,112, 46,108,117, 97, 44,118, 32, 49, 46, 50, 50, 32, 50, 48, 48, 54, 47, 48, 51, 47, 49, 52, 32, 48, 57, 58, 48, 52, 58, 49, 53, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97, 114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97, 115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32,114,101,113,117, 105,114,101, 40, 34,115,111, 99,107,101,116, 34, 41, 10,108,111, 99, 97,108, 32, 108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46, 116,112, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97,110,116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 73,109, 112,108,101,109,101,110,116, 97,116,105,111,110, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,103,101,116,115, 32,115, 101,114,118,101,114, 32,114,101,112,108,121, 32, 40,119,111,114,107,115, 32,102, 111,114, 32, 83, 77, 84, 80, 32, 97,110,100, 32, 70, 84, 80, 41, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,103,101,116, 95,114,101,112,108, 121, 40, 99, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32, 99,117,114,114,101,110,116, 44, 32,115,101,112, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32, 99, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101, 112,108,121, 32, 61, 32,108,105,110,101, 10, 32, 32, 32, 32,105,102, 32,101,114, 114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101, 114,114, 32,101,110,100, 10, 32, 32, 32, 32, 99,111,100,101, 44, 32,115,101,112, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116, 114,105,110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 37, 100, 37,100, 37,100, 41, 40, 46, 63, 41, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,111,100,101, 32,116,104,101,110, 32,114,101,116,117,114, 110, 32,110,105,108, 44, 32, 34,105,110,118, 97,108,105,100, 32,115,101,114,118, 101,114, 32,114,101,112,108,121, 34, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,115,101,112, 32, 61, 61, 32, 34, 45, 34, 32,116,104,101,110, 32, 45, 45, 32, 114,101,112,108,121, 32,105,115, 32,109,117,108,116,105,108,105,110,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,112,101, 97,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32, 99, 58, 114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,117,114,114,101,110,116, 44, 32,115,101,112, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116,114,105, 110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 37,100, 37, 100, 37,100, 41, 40, 46, 63, 41, 34, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,112,108,121, 32, 61, 32,114,101,112,108,121, 32, 46, 46, 32, 34, 92,110, 34, 32, 46, 46, 32,108,105,110,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,114,101,112,108,121, 32,101,110,100,115, 32,119,105,116,104, 32,115, 97,109,101, 32, 99,111,100,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,117, 110,116,105,108, 32, 99,111,100,101, 32, 61, 61, 32, 99,117,114,114,101,110,116, 32, 97,110,100, 32,115,101,112, 32, 61, 61, 32, 34, 32, 34, 10, 32, 32, 32, 32, 101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 10,101,110,100, 10, 10, 45, 45, 32,109,101,116, 97,116, 97, 98,108,101, 32,102,111,114, 32,115,111, 99,107, 32,111, 98,106,101, 99,116, 10,108,111, 99, 97,108, 32,109,101,116, 97,116, 32, 61, 32,123, 32, 95, 95,105, 110,100,101,120, 32, 61, 32,123,125, 32,125, 10, 10,102,117,110, 99,116,105,111, 110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,104,101, 99, 107, 40,111,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61, 32,103,101,116, 95,114,101,112,108,121, 40, 115,101,108,102, 46, 99, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99, 111,100,101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101,112,108,121, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, 98, 97, 115,101, 46,116,121,112,101, 40,111,107, 41, 32,126, 61, 32, 34,102,117,110, 99, 116,105,111,110, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, 102, 32, 98, 97,115,101, 46,116,121,112,101, 40,111,107, 41, 32, 61, 61, 32, 34, 116, 97, 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,102,111,114, 32,105, 44, 32,118, 32,105,110, 32, 98, 97,115,101, 46,105,112, 97,105,114,115, 40,111,107, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32,118, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114,101,116,117,114,110, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32,111,107, 41, 32,116,104,101,110, 32,114,101,116,117,114, 110, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101, 112,108,121, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,111,107, 40, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, 32, 114,101,112,108,121, 41, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99, 116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99, 111,109,109, 97,110,100, 40, 99,109,100, 44, 32, 97,114,103, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114,103, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,115,101,110,100, 40, 99,109,100, 32, 46, 46, 32, 34, 32, 34, 32, 46, 46, 32, 97,114,103, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,115, 101,110,100, 40, 99,109,100, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,105,110,107, 40, 115,110,107, 44, 32,112, 97,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 32, 61, 32, 99, 58,114,101, 99,101,105, 118,101, 40,112, 97,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115, 110,107, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10,101,110,100, 10, 10, 102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100, 101,120, 58,115,101,110,100, 40,100, 97,116, 97, 41, 10, 32, 32, 32, 32,114,101, 116,117,114,110, 32,115,101,108,102, 46, 99, 58,115,101,110,100, 40,100, 97,116, 97, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118,101, 40,112, 97,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,114,101, 99,101,105,118,101, 40,112, 97,116, 41, 10,101,110,100, 10, 10, 102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100, 101,120, 58,103,101,116,102,100, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114, 110, 32,115,101,108,102, 46, 99, 58,103,101,116,102,100, 40, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105, 110,100,101,120, 58,100,105,114,116,121, 40, 41, 10, 32, 32, 32, 32,114,101,116, 117,114,110, 32,115,101,108,102, 46, 99, 58,100,105,114,116,121, 40, 41, 10,101, 110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,103,101,116, 99,111,110,116,114,111,108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 10,101,110, 100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95, 105,110,100,101,120, 58,115,111,117,114, 99,101, 40,115,111,117,114, 99,101, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,105,110, 107, 32, 61, 32,115,111, 99,107,101,116, 46,115,105,110,107, 40, 34,107,101,101, 112, 45,111,112,101,110, 34, 44, 32,115,101,108,102, 46, 99, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114,114, 32, 61, 32,108,116, 110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32,115,116,101,112, 32,111,114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 41, 10, 32, 32, 32, 32,114,101,116,117, 114,110, 32,114,101,116, 44, 32,101,114,114, 10,101,110,100, 10, 10, 45, 45, 32, 99,108,111,115,101,115, 32,116,104,101, 32,117,110,100,101,114,108,121,105,110, 103, 32, 99, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,115, 101,108,102, 46, 99, 58, 99,108,111,115,101, 40, 41, 10, 9,114,101,116,117,114, 110, 32, 49, 10,101,110,100, 10, 10, 45, 45, 32, 99,111,110,110,101, 99,116, 32, 119,105,116,104, 32,115,101,114,118,101,114, 32, 97,110,100, 32,114,101,116,117, 114,110, 32, 99, 32,111, 98,106,101, 99,116, 10,102,117,110, 99,116,105,111,110, 32, 99,111,110,110,101, 99,116, 40,104,111,115,116, 44, 32,112,111,114,116, 44, 32,116,105,109,101,111,117,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 44, 32,101, 32, 61, 32, 40, 99,114,101, 97, 116,101, 32,111,114, 32,115,111, 99,107,101,116, 46,116, 99,112, 41, 40, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99, 32,116,104,101,110, 32,114,101, 116,117,114,110, 32,110,105,108, 44, 32,101, 32,101,110,100, 10, 32, 32, 32, 32, 99, 58,115,101,116,116,105,109,101,111,117,116, 40,116,105,109,101,111,117,116, 32,111,114, 32, 84, 73, 77, 69, 79, 85, 84, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114, 44, 32,101, 32, 61, 32, 99, 58, 99,111,110,110,101, 99,116, 40, 104,111,115,116, 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32,105,102, 32,110, 111,116, 32,114, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117, 114,110, 32,110,105,108, 44, 32,101, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,123, 99, 32, 61, 32, 99,125, 44, 32,109,101,116, 97, 116, 41, 10,101,110,100, 10, 10, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"tp.lua")==0) lua_call(L, 0, 0); } love-0.9.1/src/libraries/luasocket/libluasocket/smtp.lua.h0000644000000000000000000007747312316602166023643 0ustar00rootroot00000000000000/* code automatically generated by bin2c -- DO NOT EDIT */ { /* #include'ing this file in a C program is equivalent to calling if (luaL_loadfile(L,"smtp.lua")==0) lua_call(L, 0, 0); */ /* smtp.lua */ static const unsigned char B1[]={ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 83, 77, 84, 80, 32, 99,108,105,101,110,116, 32,115,117,112,112,111,114,116, 32,102,111,114, 32,116,104,101, 32, 76,117, 97, 32,108, 97,110,103,117, 97,103, 101, 46, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108, 107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,103, 111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,115,109,116,112, 46,108,117, 97, 44,118, 32, 49, 46, 52, 54, 32, 50, 48, 48, 55, 47, 48, 51, 47, 49, 50, 32, 48, 52, 58, 48, 56, 58, 52, 48, 32, 100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32, 109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101, 112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32, 99,111,114,111,117,116,105,110,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34, 99,111,114,111,117,116,105,110, 101, 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114, 101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109, 97,116,104, 34, 41, 10,108,111, 99, 97,108, 32,111,115, 32, 61, 32,114,101,113, 117,105,114,101, 40, 34,111,115, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99, 107,101,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101, 116, 34, 41, 10,108,111, 99, 97,108, 32,116,112, 32, 61, 32,114,101,113,117,105, 114,101, 40, 34,115,111, 99,107,101,116, 46,116,112, 34, 41, 10,108,111, 99, 97, 108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108, 116,110, 49, 50, 34, 41, 10,108,111, 99, 97,108, 32,109,105,109,101, 32, 61, 32, 114,101,113,117,105,114,101, 40, 34,109,105,109,101, 34, 41, 10,109,111,100,117, 108,101, 40, 34,115,111, 99,107,101,116, 46,115,109,116,112, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97,110,116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,116, 105,109,101,111,117,116, 32,102,111,114, 32, 99,111,110,110,101, 99,116,105,111, 110, 10, 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 45, 45, 32,100,101, 102, 97,117,108,116, 32,115,101,114,118,101,114, 32,117,115,101,100, 32,116,111, 32,115,101,110,100, 32,101, 45,109, 97,105,108,115, 10, 83, 69, 82, 86, 69, 82, 32, 61, 32, 34,108,111, 99, 97,108,104,111,115,116, 34, 10, 45, 45, 32,100,101, 102, 97,117,108,116, 32,112,111,114,116, 10, 80, 79, 82, 84, 32, 61, 32, 50, 53, 10, 45, 45, 32,100,111,109, 97,105,110, 32,117,115,101,100, 32,105,110, 32, 72, 69, 76, 79, 32, 99,111,109,109, 97,110,100, 32, 97,110,100, 32,100,101,102, 97, 117,108,116, 32,115,101,110,100,109, 97,105,108, 10, 45, 45, 32, 73,102, 32,119, 101, 32, 97,114,101, 32,117,110,100,101,114, 32, 97, 32, 67, 71, 73, 44, 32,116, 114,121, 32,116,111, 32,103,101,116, 32,102,114,111,109, 32,101,110,118,105,114, 111,110,109,101,110,116, 10, 68, 79, 77, 65, 73, 78, 32, 61, 32,111,115, 46,103, 101,116,101,110,118, 40, 34, 83, 69, 82, 86, 69, 82, 95, 78, 65, 77, 69, 34, 41, 32,111,114, 32, 34,108,111, 99, 97,108,104,111,115,116, 34, 10, 45, 45, 32,100, 101,102, 97,117,108,116, 32,116,105,109,101, 32,122,111,110,101, 32, 40,109,101, 97,110,115, 32,119,101, 32,100,111,110, 39,116, 32,107,110,111,119, 41, 10, 90, 79, 78, 69, 32, 61, 32, 34, 45, 48, 48, 48, 48, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32,108,101, 118,101,108, 32, 83, 77, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109,101,116, 97,116, 32, 61, 32,123, 32, 95, 95,105,110,100,101,120, 32, 61, 32,123,125, 32, 125, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95, 105,110,100,101,120, 58,103,114,101,101,116, 40,100,111,109, 97,105,110, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,115, 101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34, 69, 72, 76, 79, 34, 44, 32,100,111,109, 97,105,110, 32,111, 114, 32, 68, 79, 77, 65, 73, 78, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114, 110, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 49, 44, 32,115,101,108, 102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105, 111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,109, 97,105, 108, 40,102,114,111,109, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34, 77, 65, 73, 76, 34, 44, 32, 34, 70, 82, 79, 77, 58, 34, 32, 46, 46, 32,102,114,111,109, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116, 114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109, 101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114, 99,112,116, 40,116,111, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 116,112, 58, 99,111,109,109, 97,110,100, 40, 34, 82, 67, 80, 84, 34, 44, 32, 34, 84, 79, 58, 34, 32, 46, 46, 32,116,111, 41, 41, 10, 32, 32, 32, 32,114,101,116, 117,114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,110,100, 10, 10, 102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100, 101,120, 58,100, 97,116, 97, 40,115,114, 99, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34, 68, 65, 84, 65, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104, 101, 99,107, 40, 34, 51, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,115,111,117,114, 99,101, 40, 115,114, 99, 44, 32,115,116,101,112, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,115,101,110,100, 40, 34, 92, 114, 92,110, 46, 92,114, 92,110, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,117, 114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,110,100, 10, 10,102, 117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101, 120, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114, 121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34, 81, 85, 73, 84, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101, 108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105, 111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,108,111, 115,101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,112, 58, 99,108,111,115,101, 40, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 108,111,103,105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 116,112, 58, 99,111,109,109, 97,110,100, 40, 34, 65, 85, 84, 72, 34, 44, 32, 34, 76, 79, 71, 73, 78, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114, 121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 51, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108, 102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40,109,105,109,101, 46, 98, 54, 52, 40,117,115,101,114, 41, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116, 114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 51, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101, 108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40,109,105,109,101, 46, 98, 54, 52, 40,112, 97,115,115,119,111,114,100, 41, 41, 41, 10, 32, 32, 32, 32,114, 101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105, 110,100,101,120, 58,112,108, 97,105,110, 40,117,115,101,114, 44, 32,112, 97,115, 115,119,111,114,100, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,117,116, 104, 32, 61, 32, 34, 80, 76, 65, 73, 78, 32, 34, 32, 46, 46, 32,109,105,109,101, 46, 98, 54, 52, 40, 34, 92, 48, 34, 32, 46, 46, 32,117,115,101,114, 32, 46, 46, 32, 34, 92, 48, 34, 32, 46, 46, 32,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34, 65, 85, 84, 72, 34, 44, 32, 97,117,116,104, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116, 114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109, 101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 97,117,116,104, 40,117,115, 101,114, 44, 32,112, 97,115,115,119,111,114,100, 44, 32,101,120,116, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,117,115,101,114, 32,111,114, 32,110,111, 116, 32,112, 97,115,115,119,111,114,100, 32,116,104,101,110, 32,114,101,116,117, 114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105, 110,103, 46,102,105,110,100, 40,101,120,116, 44, 32, 34, 65, 85, 84, 72, 91, 94, 92,110, 93, 43, 76, 79, 71, 73, 78, 34, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 58,108,111,103, 105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32,115,116,114,105,110,103, 46,102,105,110, 100, 40,101,120,116, 44, 32, 34, 65, 85, 84, 72, 91, 94, 92,110, 93, 43, 80, 76, 65, 73, 78, 34, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114, 101,116,117,114,110, 32,115,101,108,102, 58,112,108, 97,105,110, 40,117,115,101, 114, 44, 32,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,101,108,115, 101, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,110, 105,108, 44, 32, 34, 97,117,116,104,101,110,116,105, 99, 97,116,105,111,110, 32, 110,111,116, 32,115,117,112,112,111,114,116,101,100, 34, 41, 10, 32, 32, 32, 32, 101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,115,101,110,100, 32,109,101,115, 115, 97,103,101, 32,111,114, 32,116,104,114,111,119, 32, 97,110, 32,101,120, 99, 101,112,116,105,111,110, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97, 116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 40,109, 97,105,108,116, 41, 10, 32, 32, 32, 32,115,101,108,102, 58,109, 97,105,108, 40,109, 97,105,108, 116, 46,102,114,111,109, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46, 116,121,112,101, 40,109, 97,105,108,116, 46,114, 99,112,116, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,105,112, 97, 105,114,115, 40,109, 97,105,108,116, 46,114, 99,112,116, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 58,114, 99,112,116, 40,118, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 58,114, 99, 112,116, 40,109, 97,105,108,116, 46,114, 99,112,116, 41, 10, 32, 32, 32, 32,101, 110,100, 10, 32, 32, 32, 32,115,101,108,102, 58,100, 97,116, 97, 40,108,116,110, 49, 50, 46,115,111,117,114, 99,101, 46, 99,104, 97,105,110, 40,109, 97,105,108, 116, 46,115,111,117,114, 99,101, 44, 32,109,105,109,101, 46,115,116,117,102,102, 40, 41, 41, 44, 32,109, 97,105,108,116, 46,115,116,101,112, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,115,101,114,118, 101,114, 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116,112, 32, 61, 32,115,111, 99,107,101,116, 46, 116,114,121, 40,116,112, 46, 99,111,110,110,101, 99,116, 40,115,101,114,118,101, 114, 32,111,114, 32, 83, 69, 82, 86, 69, 82, 44, 32,112,111,114,116, 32,111,114, 32, 80, 79, 82, 84, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 84, 73, 77, 69, 79, 85, 84, 44, 32, 99,114,101, 97,116,101, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,123,116,112, 32, 61, 32,116,112,125, 44, 32,109,101,116, 97, 116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32, 116,112, 32,105,115, 32, 99,108,111,115,101,100, 32,105,102, 32,119,101, 32,103, 101,116, 32, 97,110, 32,101,120, 99,101,112,116,105,111,110, 10, 32, 32, 32, 32, 115, 46,116,114,121, 32, 61, 32,115,111, 99,107,101,116, 46,110,101,119,116,114, 121, 40,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115, 10,101,110,100, 10, 10, 45, 45, 32, 99,111,110,118,101,114,116, 32,104,101, 97,100,101,114,115, 32,116,111, 32, 108,111,119,101,114, 99, 97,115,101, 10,108,111, 99, 97,108, 32,102,117,110, 99, 116,105,111,110, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40,104, 101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,111, 119,101,114, 32, 61, 32,123,125, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101, 114,115, 32,111,114, 32,108,111,119,101,114, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,119,101,114, 91,115,116,114,105,110,103, 46,108,111,119, 101,114, 40,105, 41, 93, 32, 61, 32,118, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,111,119,101,114, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 77,117,108,116,105,112, 97,114,116, 32,109,101,115,115, 97,103,101, 32,115,111, 117,114, 99,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,104,111,112,101, 102,117,108,108,121, 32,117,110,105,113,117,101, 32,109,105,109,101, 32, 98,111, 117,110,100, 97,114,121, 10,108,111, 99, 97,108, 32,115,101,113,110,111, 32, 61, 32, 48, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,110,101, 119, 98,111,117,110,100, 97,114,121, 40, 41, 10, 32, 32, 32, 32,115,101,113,110, 111, 32, 61, 32,115,101,113,110,111, 32, 43, 32, 49, 10, 32, 32, 32, 32,114,101, 116,117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 39, 37,115, 37, 48, 53,100, 61, 61, 37, 48, 53,117, 39, 44, 32,111,115, 46,100, 97, 116,101, 40, 39, 37,100, 37,109, 37, 89, 37, 72, 37, 77, 37, 83, 39, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,109, 97,116,104, 46,114, 97,110,100,111,109, 40, 48, 44, 32, 57, 57, 57, 57, 57, 41, 44, 32,115,101,113,110,111, 41, 10,101,110, 100, 10, 10, 45, 45, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 32,102, 111,114,119, 97,114,100, 32,100,101, 99,108, 97,114, 97,116,105,111,110, 10,108, 111, 99, 97,108, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 10, 10, 45, 45, 32,121,105,101,108,100, 32,116,104,101, 32,104,101, 97,100,101,114,115, 32, 97,108,108, 32, 97,116, 32,111,110, 99,101, 44, 32,105,116, 39,115, 32,102, 97, 115,116,101,114, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 115,101,110,100, 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32, 34, 92,114, 92, 110, 34, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97, 115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101,114,115, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 32, 61, 32,105, 32, 46, 46, 32, 39, 58, 32, 39, 32, 46, 46, 32,118, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 32, 46, 46, 32,104, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 99,111,114,111,117, 116,105,110,101, 46,121,105,101,108,100, 40,104, 41, 10,101,110,100, 10, 10, 45, 45, 32,121,105,101,108,100, 32,109,117,108,116,105,112, 97,114,116, 32,109,101, 115,115, 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32, 97, 32,109,117, 108,116,105,112, 97,114,116, 32,109,101,115,115, 97,103,101, 32,116, 97, 98,108, 101, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,101,110, 100, 95,109,117,108,116,105,112, 97,114,116, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,119,101, 32,104, 97,118,101, 32,111,117,114, 32, 98,111,117,110,100, 97,114,121, 32, 97,110,100, 32,115,101,110,100, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 98,100, 32, 61, 32,110,101,119, 98,111,117,110,100, 97,114,121, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40,109,101,115, 103,116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, 41, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116, 121,112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110, 116,101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 32, 39,109,117,108,116, 105,112, 97,114,116, 47,109,105,120,101,100, 39, 10, 32, 32, 32, 32,104,101, 97, 100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45, 116,121,112,101, 39, 93, 32, 46, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 39, 59, 32, 98,111,117,110,100, 97,114,121, 61, 34, 39, 32, 46, 46, 32, 32, 98,100, 32, 46, 46, 32, 39, 34, 39, 10, 32, 32, 32, 32,115,101,110,100, 95,104,101, 97,100, 101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 45, 45, 32, 115,101,110,100, 32,112,114,101, 97,109, 98,108,101, 10, 32, 32, 32, 32,105,102, 32,109,101,115,103,116, 46, 98,111,100,121, 46,112,114,101, 97,109, 98,108,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116, 105,110,101, 46,121,105,101,108,100, 40,109,101,115,103,116, 46, 98,111,100,121, 46,112,114,101, 97,109, 98,108,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,115,101, 110,100, 32,101, 97, 99,104, 32,112, 97,114,116, 32,115,101,112, 97,114, 97,116, 101,100, 32, 98,121, 32, 97, 32, 98,111,117,110,100, 97,114,121, 10, 32, 32, 32, 32,102,111,114, 32,105, 44, 32,109, 32,105,110, 32, 98, 97,115,101, 46,105,112, 97,105,114,115, 40,109,101,115,103,116, 46, 98,111,100,121, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105, 101,108,100, 40, 34, 92,114, 92,110, 45, 45, 34, 32, 46, 46, 32, 98,100, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101, 110,100, 95,109,101,115,115, 97,103,101, 40,109, 41, 10, 32, 32, 32, 32,101,110, 100, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,108, 97,115,116, 32, 98, 111,117,110,100, 97,114,121, 10, 32, 32, 32, 32, 99,111,114,111,117,116,105,110, 101, 46,121,105,101,108,100, 40, 34, 92,114, 92,110, 45, 45, 34, 32, 46, 46, 32, 98,100, 32, 46, 46, 32, 34, 45, 45, 92,114, 92,110, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,101,112,105,108,111,103,117,101, 10, 32, 32, 32, 32,105,102, 32,109,101,115,103,116, 46, 98,111,100,121, 46,101, 112,105,108,111,103,117,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,109,101,115, 103,116, 46, 98,111,100,121, 46,101,112,105,108,111,103,117,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108, 100, 40, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110, 100, 10, 10, 45, 45, 32,121,105,101,108,100, 32,109,101,115,115, 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32, 97, 32,115,111,117,114, 99,101, 10,108, 111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,101,110,100, 95,115, 111,117,114, 99,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 109, 97,107,101, 32,115,117,114,101, 32,119,101, 32,104, 97,118,101, 32, 97, 32, 99,111,110,116,101,110,116, 45,116,121,112,101, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,108,111,119,101,114, 95,104, 101, 97,100,101,114,115, 40,109,101,115,103,116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, 41, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 39,116,101,120,116, 47,112, 108, 97,105,110, 59, 32, 99,104, 97,114,115,101,116, 61, 34,105,115,111, 45, 56, 56, 53, 57, 45, 49, 34, 39, 10, 32, 32, 32, 32,115,101,110,100, 95,104,101, 97, 100,101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32, 98,111,100,121, 32,102,114,111,109, 32,115,111,117,114, 99,101, 10, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 32, 61, 32,109,101,115,103,116, 46, 98,111,100,121, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,110,105,108, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105, 102, 32, 99,104,117,110,107, 32,116,104,101,110, 32, 99,111,114,111,117,116,105, 110,101, 46,121,105,101,108,100, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32, 98,114,101, 97,107, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,121,105,101,108,100, 32,109,101,115,115, 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32, 97, 32,115,116,114,105,110,103, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105, 111,110, 32,115,101,110,100, 95,115,116,114,105,110,103, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,119, 101, 32,104, 97,118,101, 32, 97, 32, 99,111,110,116,101,110,116, 45,116,121,112, 101, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40,109,101,115,103, 116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, 41, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121, 112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116, 101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 39,116,101,120,116, 47,112,108, 97,105,110, 59, 32, 99,104, 97,114,115, 101,116, 61, 34,105,115,111, 45, 56, 56, 53, 57, 45, 49, 34, 39, 10, 32, 32, 32, 32,115,101,110,100, 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114, 115, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32, 98,111,100,121, 32, 102,114,111,109, 32,115,116,114,105,110,103, 10, 32, 32, 32, 32, 99,111,114,111, 117,116,105,110,101, 46,121,105,101,108,100, 40,109,101,115,103,116, 46, 98,111, 100,121, 41, 10,101,110,100, 10, 10, 45, 45, 32,109,101,115,115, 97,103,101, 32, 115,111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32, 105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,109,101,115,103,116, 46, 98, 111,100,121, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, 34, 32,116,104,101,110, 32,115,101,110,100, 95,109,117,108,116,105,112, 97,114,116, 40,109,101,115,103, 116, 41, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32, 98, 97,115,101, 46,116, 121,112,101, 40,109,101,115,103,116, 46, 98,111,100,121, 41, 32, 61, 61, 32, 34, 102,117,110, 99,116,105,111,110, 34, 32,116,104,101,110, 32,115,101,110,100, 95, 115,111,117,114, 99,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,101,108, 115,101, 32,115,101,110,100, 95,115,116,114,105,110,103, 40,109,101,115,103,116, 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,115,101,116, 32,100,101, 102, 97,117,108, 32,104,101, 97,100,101,114,115, 10,108,111, 99, 97,108, 32,102, 117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116, 95,104,101, 97,100,101, 114,115, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 108,111,119,101,114, 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114, 115, 40,109,101,115,103,116, 46,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,108,111,119,101,114, 91, 34,100, 97,116,101, 34, 93, 32, 61, 32,108,111,119, 101,114, 91, 34,100, 97,116,101, 34, 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32, 32, 32,111,115, 46,100, 97,116,101, 40, 34, 33, 37, 97, 44, 32, 37,100, 32, 37, 98, 32, 37, 89, 32, 37, 72, 58, 37, 77, 58, 37, 83, 32, 34, 41, 32, 46, 46, 32, 40,109,101,115,103,116, 46,122,111,110,101, 32,111,114, 32, 90, 79, 78, 69, 41, 10, 32, 32, 32, 32,108,111,119,101,114, 91, 34,120, 45,109, 97,105,108,101,114, 34, 93, 32, 61, 32,108,111,119,101,114, 91, 34,120, 45,109, 97,105,108,101,114, 34, 93, 32,111,114, 32,115,111, 99,107,101,116, 46, 95, 86, 69, 82, 83, 73, 79, 78, 10, 32, 32, 32, 32, 45, 45, 32,116,104,105,115, 32, 99, 97,110, 39,116, 32, 98,101, 32,111,118,101,114,114,105,100,101,110, 10, 32, 32, 32, 32,108,111,119, 101,114, 91, 34,109,105,109,101, 45,118,101,114,115,105,111,110, 34, 93, 32, 61, 32, 34, 49, 46, 48, 34, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,111, 119,101,114, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101, 115,115, 97,103,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,109,101,115, 103,116, 46,104,101, 97,100,101,114,115, 32, 61, 32, 97,100,106,117,115,116, 95, 104,101, 97,100,101,114,115, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32, 97,110,100, 32,114,101,116,117,114,110, 32, 109,101,115,115, 97,103,101, 32,115,111,117,114, 99,101, 10, 32, 32, 32, 32,108, 111, 99, 97,108, 32, 99,111, 32, 61, 32, 99,111,114,111,117,116,105,110,101, 46, 99,114,101, 97,116,101, 40,102,117,110, 99,116,105,111,110, 40, 41, 32,115,101, 110,100, 95,109,101,115,115, 97,103,101, 40,109,101,115,103,116, 41, 32,101,110, 100, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105, 111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114, 101,116, 44, 32, 97, 44, 32, 98, 32, 61, 32, 99,111,114,111,117,116,105,110,101, 46,114,101,115,117,109,101, 40, 99,111, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105,102, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 97, 44, 32, 98, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116, 117,114,110, 32,110,105,108, 44, 32, 97, 32,101,110,100, 10, 32, 32, 32, 32,101, 110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101,118,101,108, 32, 83, 77, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,115,101,110,100, 32, 61, 32,115,111, 99,107,101,116, 46,112, 114,111,116,101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,109, 97,105,108, 116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, 32, 61, 32,111,112,101, 110, 40,109, 97,105,108,116, 46,115,101,114,118,101,114, 44, 32,109, 97,105,108, 116, 46,112,111,114,116, 44, 32,109, 97,105,108,116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,101,120,116, 32, 61, 32,115, 58, 103,114,101,101,116, 40,109, 97,105,108,116, 46,100,111,109, 97,105,110, 41, 10, 32, 32, 32, 32,115, 58, 97,117,116,104, 40,109, 97,105,108,116, 46,117,115,101, 114, 44, 32,109, 97,105,108,116, 46,112, 97,115,115,119,111,114,100, 44, 32,101, 120,116, 41, 10, 32, 32, 32, 32,115, 58,115,101,110,100, 40,109, 97,105,108,116, 41, 10, 32, 32, 32, 32,115, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,114, 101,116,117,114,110, 32,115, 58, 99,108,111,115,101, 40, 41, 10,101,110,100, 41, 10, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"smtp.lua")==0) lua_call(L, 0, 0); } love-0.9.1/src/libraries/luasocket/libluasocket/mime.lua.h0000644000000000000000000002370612316602166023575 0ustar00rootroot00000000000000/* code automatically generated by bin2c -- DO NOT EDIT */ { /* #include'ing this file in a C program is equivalent to calling if (luaL_loadfile(L,"mime.lua")==0) lua_call(L, 0, 0); */ /* mime.lua */ static const unsigned char B1[]={ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 77, 73, 77, 69, 32,115,117,112,112,111,114,116, 32,102,111,114, 32,116,104, 101, 32, 76,117, 97, 32,108, 97,110,103,117, 97,103,101, 46, 10, 45, 45, 32, 65, 117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 67,111,110,102,111,114,109,105,110,103, 32,116,111, 32, 82, 70, 67,115, 32, 50, 48, 52, 53, 45, 50, 48, 52, 57, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,109,105,109,101, 46,108,117, 97, 44,118, 32, 49, 46, 50, 57, 32, 50, 48, 48, 55, 47, 48, 54, 47, 49, 49, 32, 50, 51, 58, 52, 52, 58, 53, 52, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97, 114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97, 115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,108, 111, 99, 97,108, 32,109,105,109,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109,105,109,101, 46, 99,111,114,101, 34, 41, 10,108,111, 99, 97,108, 32,105, 111, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,105,111, 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,109,111,100,117,108,101, 40, 34,109, 105,109,101, 34, 41, 10, 10, 45, 45, 32,101,110, 99,111,100,101, 44, 32,100,101, 99,111,100,101, 32, 97,110,100, 32,119,114, 97,112, 32, 97,108,103,111,114,105, 116,104,109, 32,116, 97, 98,108,101,115, 10,101,110, 99,111,100,101,116, 32, 61, 32,123,125, 10,100,101, 99,111,100,101,116, 32, 61, 32,123,125, 10,119,114, 97, 112,116, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,102,117,110, 99,116,105,111,110, 32,116,104, 97,116, 32, 99,104,111,111, 115,101,115, 32, 97, 32,102,105,108,116,101,114, 32, 98,121, 32,110, 97,109,101, 32,102,114,111,109, 32, 97, 32,103,105,118,101,110, 32,116, 97, 98,108,101, 10, 108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 99,104,111,111,115, 101, 40,116, 97, 98,108,101, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 102,117,110, 99,116,105,111,110, 40,110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 98, 97, 115,101, 46,116,121,112,101, 40,110, 97,109,101, 41, 32,126, 61, 32, 34,115,116, 114,105,110,103, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 32, 61, 32, 34,100,101,102, 97,117,108,116, 34, 44, 32,110, 97,109,101, 44, 32,111, 112,116, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,116, 97, 98,108,101, 91, 110, 97,109,101, 32,111,114, 32, 34,110,105,108, 34, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,102, 32,116,104,101,110, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 34,117,110,107,110,111,119,110, 32,107,101,121, 32, 40, 34, 32, 46, 46, 32, 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110, 97,109,101, 41, 32, 46, 46, 32, 34, 41, 34, 44, 32, 51, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101, 108,115,101, 32,114,101,116,117,114,110, 32,102, 40,111,112,116, 49, 44, 32,111, 112,116, 50, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102,105,110,101, 32,116,104,101, 32,101,110, 99,111, 100,105,110,103, 32,102,105,108,116,101,114,115, 10,101,110, 99,111,100,101,116, 91, 39, 98, 97,115,101, 54, 52, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111, 110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40, 98, 54, 52, 44, 32, 34, 34, 41, 10,101,110,100, 10, 10,101,110, 99,111,100,101,116, 91, 39,113,117,111, 116,101,100, 45,112,114,105,110,116, 97, 98,108,101, 39, 93, 32, 61, 32,102,117, 110, 99,116,105,111,110, 40,109,111,100,101, 41, 10, 32, 32, 32, 32,114,101,116, 117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99, 108,101, 40,113,112, 44, 32, 34, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 40, 109,111,100,101, 32, 61, 61, 32, 34, 98,105,110, 97,114,121, 34, 41, 32, 97,110, 100, 32, 34, 61, 48, 68, 61, 48, 65, 34, 32,111,114, 32, 34, 92,114, 92,110, 34, 41, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102,105,110,101, 32,116,104,101, 32,100,101, 99,111,100,105,110,103, 32,102,105,108,116,101,114,115, 10,100,101, 99,111,100,101,116, 91, 39, 98, 97,115,101, 54, 52, 39, 93, 32, 61, 32,102,117, 110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,117, 110, 98, 54, 52, 44, 32, 34, 34, 41, 10,101,110,100, 10, 10,100,101, 99,111,100, 101,116, 91, 39,113,117,111,116,101,100, 45,112,114,105,110,116, 97, 98,108,101, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 114,101,116,117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,117,110,113,112, 44, 32, 34, 34, 41, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,102,111,114,109, 97,116, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32,105,102, 32, 99,104,117, 110,107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99, 104,117,110,107, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32,114,101,116,117, 114,110, 32, 34, 39, 39, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,108,101,110, 40, 99, 104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 32,114, 101,116,117,114,110, 32, 34,110,105,108, 34, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102,105,110,101, 32,116,104,101, 32,108,105,110,101, 45, 119,114, 97,112, 32,102,105,108,116,101,114,115, 10,119,114, 97,112,116, 91, 39, 116,101,120,116, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,108,101, 110,103,116,104, 41, 10, 32, 32, 32, 32,108,101,110,103,116,104, 32, 61, 32,108, 101,110,103,116,104, 32,111,114, 32, 55, 54, 10, 32, 32, 32, 32,114,101,116,117, 114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108, 101, 40,119,114,112, 44, 32,108,101,110,103,116,104, 44, 32,108,101,110,103,116, 104, 41, 10,101,110,100, 10,119,114, 97,112,116, 91, 39, 98, 97,115,101, 54, 52, 39, 93, 32, 61, 32,119,114, 97,112,116, 91, 39,116,101,120,116, 39, 93, 10,119, 114, 97,112,116, 91, 39,100,101,102, 97,117,108,116, 39, 93, 32, 61, 32,119,114, 97,112,116, 91, 39,116,101,120,116, 39, 93, 10, 10,119,114, 97,112,116, 91, 39, 113,117,111,116,101,100, 45,112,114,105,110,116, 97, 98,108,101, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117, 114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108, 101, 40,113,112,119,114,112, 44, 32, 55, 54, 44, 32, 55, 54, 41, 10,101,110,100, 10, 10, 45, 45, 32,102,117,110, 99,116,105,111,110, 32,116,104, 97,116, 32, 99, 104,111,111,115,101, 32,116,104,101, 32,101,110, 99,111,100,105,110,103, 44, 32, 100,101, 99,111,100,105,110,103, 32,111,114, 32,119,114, 97,112, 32, 97,108,103, 111,114,105,116,104,109, 10,101,110, 99,111,100,101, 32, 61, 32, 99,104,111,111, 115,101, 40,101,110, 99,111,100,101,116, 41, 10,100,101, 99,111,100,101, 32, 61, 32, 99,104,111,111,115,101, 40,100,101, 99,111,100,101,116, 41, 10,119,114, 97, 112, 32, 61, 32, 99,104,111,111,115,101, 40,119,114, 97,112,116, 41, 10, 10, 45, 45, 32,100,101,102,105,110,101, 32,116,104,101, 32,101,110,100, 45,111,102, 45, 108,105,110,101, 32,110,111,114,109, 97,108,105,122, 97,116,105,111,110, 32,102, 105,108,116,101,114, 10,102,117,110, 99,116,105,111,110, 32,110,111,114,109, 97, 108,105,122,101, 40,109, 97,114,107,101,114, 41, 10, 32, 32, 32, 32,114,101,116, 117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99, 108,101, 40,101,111,108, 44, 32, 48, 44, 32,109, 97,114,107,101,114, 41, 10,101, 110,100, 10, 10, 45, 45, 32,104,105,103,104, 32,108,101,118,101,108, 32,115,116, 117,102,102,105,110,103, 32,102,105,108,116,101,114, 10,102,117,110, 99,116,105, 111,110, 32,115,116,117,102,102, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114, 110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,100,111,116, 44, 32, 50, 41, 10,101,110,100, 10, }; if (luaL_loadbuffer(L,(const char*)B1,sizeof(B1),"mime.lua")==0) lua_call(L, 0, 0); } love-0.9.1/src/libraries/luasocket/libluasocket/except.h0000644000000000000000000000266512316602166023357 0ustar00rootroot00000000000000#ifndef EXCEPT_H #define EXCEPT_H /*=========================================================================*\ * Exception control * LuaSocket toolkit (but completely independent from other modules) * * This provides support for simple exceptions in Lua. During the * development of the HTTP/FTP/SMTP support, it became aparent that * error checking was taking a substantial amount of the coding. These * function greatly simplify the task of checking errors. * * The main idea is that functions should return nil as its first return * value when it finds an error, and return an error message (or value) * following nil. In case of success, as long as the first value is not nil, * the other values don't matter. * * The idea is to nest function calls with the "try" function. This function * checks the first value, and calls "error" on the second if the first is * nil. Otherwise, it returns all values it received. * * The protect function returns a new function that behaves exactly like the * function it receives, but the new function doesn't throw exceptions: it * returns nil followed by the error message instead. * * With these two function, it's easy to write functions that throw * exceptions on error, but that don't interrupt the user script. * * RCS ID: $Id: except.h,v 1.2 2005/09/29 06:11:41 diego Exp $ \*=========================================================================*/ #include "lua.h" int except_open(lua_State *L); #endif love-0.9.1/src/libraries/ddsparse/0000755000000000000000000000000012316602463017037 5ustar00rootroot00000000000000love-0.9.1/src/libraries/ddsparse/ddsinfo.h0000644000000000000000000001617712316602166020652 0ustar00rootroot00000000000000/** * Simple DDS data parser for compressed 2D textures. * * Copyright (c) 2013 Alexander Szpakowski. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * * Enums and structs copied from Microsoft. * http://msdn.microsoft.com/en-us/library/bb943991.aspx **/ #ifndef DDS_INFO_H #define DDS_INFO_H #include namespace dds { namespace dxinfo { enum DDPF { DDPF_ALPHAPIXELS = 0x000001, DDPF_ALPHA = 0x000002, DDPF_FOURCC = 0x000004, DDPF_RGB = 0x000040, DDPF_YUV = 0x000200, DDPF_LUMINANCE = 0x020000 }; enum D3D10ResourceDimension { D3D10_RESOURCE_DIMENSION_UNKNOWN = 0, D3D10_RESOURCE_DIMENSION_BUFFER = 1, D3D10_RESOURCE_DIMENSION_TEXTURE1D = 2, D3D10_RESOURCE_DIMENSION_TEXTURE2D = 3, D3D10_RESOURCE_DIMENSION_TEXTURE3D = 4 }; enum DXGIFormat { DXGI_FORMAT_UNKNOWN = 0, DXGI_FORMAT_R32G32B32A32_TYPELESS = 1, DXGI_FORMAT_R32G32B32A32_FLOAT = 2, DXGI_FORMAT_R32G32B32A32_UINT = 3, DXGI_FORMAT_R32G32B32A32_SINT = 4, DXGI_FORMAT_R32G32B32_TYPELESS = 5, DXGI_FORMAT_R32G32B32_FLOAT = 6, DXGI_FORMAT_R32G32B32_UINT = 7, DXGI_FORMAT_R32G32B32_SINT = 8, DXGI_FORMAT_R16G16B16A16_TYPELESS = 9, DXGI_FORMAT_R16G16B16A16_FLOAT = 10, DXGI_FORMAT_R16G16B16A16_UNORM = 11, DXGI_FORMAT_R16G16B16A16_UINT = 12, DXGI_FORMAT_R16G16B16A16_SNORM = 13, DXGI_FORMAT_R16G16B16A16_SINT = 14, DXGI_FORMAT_R32G32_TYPELESS = 15, DXGI_FORMAT_R32G32_FLOAT = 16, DXGI_FORMAT_R32G32_UINT = 17, DXGI_FORMAT_R32G32_SINT = 18, DXGI_FORMAT_R32G8X24_TYPELESS = 19, DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20, DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21, DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22, DXGI_FORMAT_R10G10B10A2_TYPELESS = 23, DXGI_FORMAT_R10G10B10A2_UNORM = 24, DXGI_FORMAT_R10G10B10A2_UINT = 25, DXGI_FORMAT_R11G11B10_FLOAT = 26, DXGI_FORMAT_R8G8B8A8_TYPELESS = 27, DXGI_FORMAT_R8G8B8A8_UNORM = 28, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29, DXGI_FORMAT_R8G8B8A8_UINT = 30, DXGI_FORMAT_R8G8B8A8_SNORM = 31, DXGI_FORMAT_R8G8B8A8_SINT = 32, DXGI_FORMAT_R16G16_TYPELESS = 33, DXGI_FORMAT_R16G16_FLOAT = 34, DXGI_FORMAT_R16G16_UNORM = 35, DXGI_FORMAT_R16G16_UINT = 36, DXGI_FORMAT_R16G16_SNORM = 37, DXGI_FORMAT_R16G16_SINT = 38, DXGI_FORMAT_R32_TYPELESS = 39, DXGI_FORMAT_D32_FLOAT = 40, DXGI_FORMAT_R32_FLOAT = 41, DXGI_FORMAT_R32_UINT = 42, DXGI_FORMAT_R32_SINT = 43, DXGI_FORMAT_R24G8_TYPELESS = 44, DXGI_FORMAT_D24_UNORM_S8_UINT = 45, DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46, DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47, DXGI_FORMAT_R8G8_TYPELESS = 48, DXGI_FORMAT_R8G8_UNORM = 49, DXGI_FORMAT_R8G8_UINT = 50, DXGI_FORMAT_R8G8_SNORM = 51, DXGI_FORMAT_R8G8_SINT = 52, DXGI_FORMAT_R16_TYPELESS = 53, DXGI_FORMAT_R16_FLOAT = 54, DXGI_FORMAT_D16_UNORM = 55, DXGI_FORMAT_R16_UNORM = 56, DXGI_FORMAT_R16_UINT = 57, DXGI_FORMAT_R16_SNORM = 58, DXGI_FORMAT_R16_SINT = 59, DXGI_FORMAT_R8_TYPELESS = 60, DXGI_FORMAT_R8_UNORM = 61, DXGI_FORMAT_R8_UINT = 62, DXGI_FORMAT_R8_SNORM = 63, DXGI_FORMAT_R8_SINT = 64, DXGI_FORMAT_A8_UNORM = 65, DXGI_FORMAT_R1_UNORM = 66, DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67, DXGI_FORMAT_R8G8_B8G8_UNORM = 68, DXGI_FORMAT_G8R8_G8B8_UNORM = 69, DXGI_FORMAT_BC1_TYPELESS = 70, DXGI_FORMAT_BC1_UNORM = 71, DXGI_FORMAT_BC1_UNORM_SRGB = 72, DXGI_FORMAT_BC2_TYPELESS = 73, DXGI_FORMAT_BC2_UNORM = 74, DXGI_FORMAT_BC2_UNORM_SRGB = 75, DXGI_FORMAT_BC3_TYPELESS = 76, DXGI_FORMAT_BC3_UNORM = 77, DXGI_FORMAT_BC3_UNORM_SRGB = 78, DXGI_FORMAT_BC4_TYPELESS = 79, DXGI_FORMAT_BC4_UNORM = 80, DXGI_FORMAT_BC4_SNORM = 81, DXGI_FORMAT_BC5_TYPELESS = 82, DXGI_FORMAT_BC5_UNORM = 83, DXGI_FORMAT_BC5_SNORM = 84, DXGI_FORMAT_B5G6R5_UNORM = 85, DXGI_FORMAT_B5G5R5A1_UNORM = 86, DXGI_FORMAT_B8G8R8A8_UNORM = 87, DXGI_FORMAT_B8G8R8X8_UNORM = 88, DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89, DXGI_FORMAT_B8G8R8A8_TYPELESS = 90, DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91, DXGI_FORMAT_B8G8R8X8_TYPELESS = 92, DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93, DXGI_FORMAT_BC6H_TYPELESS = 94, DXGI_FORMAT_BC6H_UF16 = 95, DXGI_FORMAT_BC6H_SF16 = 96, DXGI_FORMAT_BC7_TYPELESS = 97, DXGI_FORMAT_BC7_UNORM = 98, DXGI_FORMAT_BC7_UNORM_SRGB = 99, DXGI_FORMAT_FORCE_UINT = 0xffffffffUL }; struct DDSPixelFormat { uint32_t size; uint32_t flags; uint32_t fourCC; uint32_t rgbBitCount; uint32_t rBitMask; uint32_t gBitMask; uint32_t bBitMask; uint32_t aBitMask; }; struct DDSHeader { uint32_t size; uint32_t flags; uint32_t height; uint32_t width; uint32_t pitchOrLinearSize; uint32_t depth; uint32_t mipMapCount; uint32_t reserved[11]; DDSPixelFormat format; uint32_t caps1; uint32_t caps2; uint32_t caps3; uint32_t caps4; uint32_t reserved2; }; struct DDSHeader10 { DXGIFormat dxgiFormat; D3D10ResourceDimension resourceDimension; uint32_t miscFlag; uint32_t arraySize; uint32_t reserved; }; } // dxinfo } // dds #endif // DDS_INFO_H love-0.9.1/src/libraries/ddsparse/ddsparse.cpp0000644000000000000000000001761112316602166021356 0ustar00rootroot00000000000000/** * Simple DDS data parser for compressed 2D textures. * * Copyright (c) 2013 Alexander Szpakowski. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. **/ #include "ddsparse.h" #include "ddsinfo.h" #include namespace dds { using namespace dds::dxinfo; // Creates a packed uint representation of a FourCC code. #define MakeFourCC(a, b, c, d) ((uint32_t) (((d)<<24) | ((c)<<16) | ((b)<<8) | (a))) // Translate the old DDS format to our own. static Format parseDDSFormat(const DDSPixelFormat &fmt) { if ((fmt.flags & DDPF_FOURCC) == 0) return FORMAT_UNKNOWN; Format f = FORMAT_UNKNOWN; switch (fmt.fourCC) { case MakeFourCC('D','X','T','1'): f = FORMAT_DXT1; break; case MakeFourCC('D','X','T','3'): f = FORMAT_DXT3; break; case MakeFourCC('D','X','T','5'): f = FORMAT_DXT5; break; case MakeFourCC('A','T','I','1'): case MakeFourCC('B','C','4','U'): f = FORMAT_BC4; break; case MakeFourCC('B','C','4','S'): f = FORMAT_BC4s; break; case MakeFourCC('A','T','I','2'): case MakeFourCC('B','C','5','U'): f = FORMAT_BC5; break; case MakeFourCC('B','C','5','S'): f = FORMAT_BC5s; break; default: break; } return f; } // Translate the new DX10 formats to our own. static Format parseDX10Format(DXGIFormat fmt) { Format f = FORMAT_UNKNOWN; switch (fmt) { case DXGI_FORMAT_BC1_TYPELESS: case DXGI_FORMAT_BC1_UNORM: case DXGI_FORMAT_BC1_UNORM_SRGB: f = FORMAT_DXT1; break; case DXGI_FORMAT_BC2_TYPELESS: case DXGI_FORMAT_BC2_UNORM: case DXGI_FORMAT_BC2_UNORM_SRGB: f = FORMAT_DXT3; break; case DXGI_FORMAT_BC3_TYPELESS: case DXGI_FORMAT_BC3_UNORM: case DXGI_FORMAT_BC3_UNORM_SRGB: f = FORMAT_DXT5; break; case DXGI_FORMAT_BC4_TYPELESS: case DXGI_FORMAT_BC4_UNORM: f = FORMAT_BC4; break; case DXGI_FORMAT_BC4_SNORM: f = FORMAT_BC4s; break; case DXGI_FORMAT_BC5_TYPELESS: case DXGI_FORMAT_BC5_UNORM: f = FORMAT_BC5; break; case DXGI_FORMAT_BC5_SNORM: f = FORMAT_BC5s; break; case DXGI_FORMAT_BC6H_TYPELESS: case DXGI_FORMAT_BC6H_UF16: f = FORMAT_BC6H; break; case DXGI_FORMAT_BC6H_SF16: f = FORAMT_BC6Hs; break; case DXGI_FORMAT_BC7_TYPELESS: case DXGI_FORMAT_BC7_UNORM: f = FORMAT_BC7; break; case DXGI_FORMAT_BC7_UNORM_SRGB: f = FORMAT_BC7srgb; break; default: break; } return f; } bool isDDS(const void *data, size_t dataSize) { const uint8_t *readData = (const uint8_t *) data; ptrdiff_t offset = 0; // Is the data large enough to hold the DDS header? if(dataSize < sizeof(uint32_t) + sizeof(DDSHeader)) return false; // All DDS files start with "DDS ". if((*(uint32_t *) readData) != MakeFourCC('D','D','S',' ')) return false; offset += sizeof(uint32_t); DDSHeader *header = (DDSHeader *) &readData[offset]; // Verify header to validate DDS data. if (header->size != sizeof(DDSHeader) || header->format.size != sizeof(DDSPixelFormat)) return false; offset += sizeof(DDSHeader); // Check for DX10 extension. if ((header->format.flags & DDPF_FOURCC) && (header->format.fourCC == MakeFourCC('D','X','1','0'))) { // Data must be big enough for both headers plus the magic value. if (dataSize < (sizeof(uint32_t) + sizeof(DDSHeader) + sizeof(DDSHeader10))) return false; } return true; } bool isCompressedDDS(const void *data, size_t dataSize) { if (!isDDS(data, dataSize)) return false; const uint8_t *readData = (const uint8_t *) data; ptrdiff_t offset = sizeof(uint32_t); DDSHeader *header = (DDSHeader *) &readData[offset]; offset += sizeof(DDSHeader); // Check for DX10 extension. if ((header->format.flags & DDPF_FOURCC) && (header->format.fourCC == MakeFourCC('D','X','1','0'))) { DDSHeader10 *header10 = (DDSHeader10 *) &readData[offset]; return parseDX10Format(header10->dxgiFormat) != FORMAT_UNKNOWN; } return parseDDSFormat(header->format) != FORMAT_UNKNOWN; } Parser::Parser(const void *data, size_t dataSize) : format(FORMAT_UNKNOWN) { parseData(data, dataSize); } Parser::Parser(const Parser &other) : texData(other.texData) , format(other.format) { } Parser::Parser() : format(FORMAT_UNKNOWN) { } Parser &Parser::operator = (const Parser &other) { texData = other.texData; format = other.format; return *this; } Parser::~Parser() { } Format Parser::getFormat() const { return format; } const Image *Parser::getImageData(size_t miplevel) const { if (miplevel >= texData.size()) return 0; return &texData[miplevel]; } size_t Parser::getMipmapCount() const { return texData.size(); } size_t Parser::parseImageSize(Format fmt, int width, int height) const { size_t numBlocksWide = 0; size_t numBlocksHigh = 0; size_t numBytesPerBlock = 0; switch (fmt) { case FORMAT_DXT1: case FORMAT_BC4: case FORMAT_BC4s: numBytesPerBlock = 8; break; case FORMAT_DXT3: case FORMAT_DXT5: case FORMAT_BC5s: case FORMAT_BC5: case FORMAT_BC6H: case FORMAT_BC7: case FORMAT_BC7srgb: numBytesPerBlock = 16; break; default: break; } if (width > 0) numBlocksWide = std::max(1, (width + 3) / 4); if (height > 0) numBlocksHigh = std::max(1, (height + 3) / 4); return numBlocksWide * numBytesPerBlock * numBlocksHigh; } bool Parser::parseTexData(const uint8_t *data, size_t dataSize, Format fmt, int w, int h, int mips) { size_t offset = 0; std::vector newTexData; for (int i = 0; i < mips; i++) { Image img; img.width = w; img.height = h; img.dataSize = parseImageSize(fmt, img.width, img.height); // Make sure the data size is valid. if (img.dataSize == 0 || (offset + img.dataSize) > dataSize) return false; // Store the memory address of the data representing this mip level. img.data = &data[offset]; newTexData.push_back(img); // Move to the next mip level. offset += img.dataSize; w = std::max(w / 2, 1); h = std::max(h / 2, 1); } texData = newTexData; return true; } bool Parser::parseData(const void *data, size_t dataSize) { if (!isDDS(data, dataSize)) return false; const uint8_t *readData = (const uint8_t *) data; ptrdiff_t offset = sizeof(uint32_t); DDSHeader *header = (DDSHeader *) &readData[offset]; offset += sizeof(DDSHeader); // Check for DX10 extension. if ((header->format.flags & DDPF_FOURCC) && (header->format.fourCC == MakeFourCC('D','X','1','0'))) { DDSHeader10 *header10 = (DDSHeader10 *) &readData[offset]; offset += sizeof(DDSHeader10); // We can't deal with 1D/3D textures. switch (header10->resourceDimension) { case D3D10_RESOURCE_DIMENSION_TEXTURE2D: case D3D10_RESOURCE_DIMENSION_UNKNOWN: break; default: return false; } // We also can't deal with texture arrays and cubemaps. if (header10->arraySize > 1) return false; format = parseDX10Format(header10->dxgiFormat); } else format = parseDDSFormat(header->format); if (format == FORMAT_UNKNOWN) return false; int w = header->width; int h = header->height; int mips = std::max((int) header->mipMapCount, 1); return parseTexData(&readData[offset], dataSize - offset, format, w, h, mips); } } // dds love-0.9.1/src/libraries/ddsparse/ddsparse.h0000644000000000000000000000702612316602166021022 0ustar00rootroot00000000000000/** * Simple DDS data parser for compressed 2D textures. * * Copyright (c) 2013 Alexander Szpakowski. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. **/ #ifndef DDS_PARSE_H #define DDS_PARSE_H #include #include #include namespace dds { // Supported DDS formats. // Formats with an 's' suffix have signed data. enum Format { FORMAT_DXT1, FORMAT_DXT3, FORMAT_DXT5, FORMAT_BC4, FORMAT_BC4s, FORMAT_BC5, FORMAT_BC5s, FORMAT_BC6H, FORAMT_BC6Hs, FORMAT_BC7, FORMAT_BC7srgb, // sRGB color space. FORMAT_UNKNOWN }; // Represents a single mipmap level of a texture. struct Image { int width; int height; size_t dataSize; const uint8_t *data; Image() : width(0), height(0), dataSize(0), data(0) {} }; /** * Determines whether the input byte data represents a valid DDS file. * Does not take into account whether the texture format is supported. * * @param data The byte data to parse. * @param dataSize The size in bytes of the data. **/ bool isDDS(const void *data, size_t dataSize); /** * Determines whether the input byte data represents a valid compressed DDS * file. Takes into account texture format, but not type (3D textures, etc.) * * @param data The byte data to parse. * @param dataSize The size in bytes of the data. **/ bool isCompressedDDS(const void *data, size_t dataSize); class Parser { public: /** * Constructor. * Attempts to parse byte data as a compressed DDS file. * * @param data The byte data to parse. * @param dataSize The size in bytes of the data. **/ Parser(const void *data, size_t dataSize); Parser(const Parser &other); Parser(); Parser &operator = (const Parser &other); ~Parser(); /** * Gets the format of this texture. **/ Format getFormat() const; /** * Gets the data of this texture at a mipmap level. Mipmap level 0 * represents the base image. * * @param miplevel The mipmap level to get the data of. * @return Pointer to the image data, or NULL if miplevel is not within the * range of [0, numMipmaps). **/ const Image *getImageData(size_t miplevel = 0) const; /** * Gets the number of mipmap levels in this texture. * Includes the base mip level. **/ size_t getMipmapCount() const; private: size_t parseImageSize(Format fmt, int width, int height) const; bool parseTexData(const uint8_t *data, size_t dataSize, Format fmt, int w, int h, int mips); bool parseData(const void *data, size_t dataSize); std::vector texData; Format format; }; // Parser } // dds #endif // DDS_PARSE_H love-0.9.1/license.txt0000644000000000000000000013002412316602166014652 0ustar00rootroot00000000000000Copyright (c) 2006-2014 LOVE Development Team This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. ------- LÖVE also uses the following LGPL libraries: - libmpg123 Website: http://www.mpg123.de/ Source download: http://sourceforge.net/projects/mpg123/files/latest/download - OpenAL Website: http://connect.creativelabs.com/openal/default.aspx Source download: http://connect.creativelabs.com/openal/Downloads/openal-soft-1.13.tbz2 - DevIL Website: http://openil.sourceforge.net/ Source download: http://downloads.sourceforge.net/openil/DevIL-1.7.8.tar.gz Following are the LGPL and GPL license texts: GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read .